:root{
  --turq:#08aebf; --turq2:#dff8fb; --gold:#d7ad45; --ink:#17212b;
  --bg:#f5f8fa; --red:#c73737; --green:#218b5a; --yellow:#a87700;
}
*{box-sizing:border-box} body{margin:0;font-family:Arial,sans-serif;background:var(--bg);color:var(--ink)}
.layout{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
aside{background:#fff;border-right:1px solid #e1e7ea;padding:24px 18px}
.brand{text-align:center;padding-bottom:22px;border-bottom:1px solid #eee}
.brand strong,.brand small{display:block}.brand strong{font-size:22px}.brand small{margin-top:5px}
.crown{font-size:38px;color:var(--gold)}.crown.big{font-size:62px}
nav{display:grid;gap:8px;margin-top:20px}nav a{padding:12px;border-radius:9px;text-decoration:none;color:var(--ink)}
nav a:hover{background:var(--turq2);color:#057784}
main{padding:28px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
h1{margin:0}.user{font-size:14px;color:#566}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.card,.panel{background:#fff;border:1px solid #e1e7ea;border-radius:14px;padding:20px;box-shadow:0 4px 16px rgba(0,0,0,.04)}
.card{border-top:4px solid var(--turq)}.card.warn{border-top-color:#d8a400}.card.danger{border-top-color:var(--red)}
.card span,.card strong{display:block}.card strong{font-size:28px;margin-top:10px}
.section-head{display:flex;justify-content:space-between;align-items:center}
.button,button{background:var(--turq);color:#fff;border:0;border-radius:9px;padding:11px 16px;text-decoration:none;cursor:pointer}
button.small{padding:7px 10px}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}
th,td{padding:12px;border-bottom:1px solid #edf0f2;text-align:left;font-size:14px}
th{background:#eef9fa}.badge{padding:5px 9px;border-radius:999px;background:#e6eaec}
.badge.approved{background:#dff4e8;color:var(--green)}.badge.review{background:#fff0c7;color:var(--yellow)}
.badge.duplicate,.badge.rejected{background:#fde2e2;color:var(--red)}
.flash{padding:13px;border-radius:9px;margin:12px 0}.flash.success{background:#dff4e8;color:var(--green)}
.flash.error{background:#fde2e2;color:var(--red)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:22px}
.form-grid .wide{grid-column:1/-1}label{display:block;font-weight:bold;margin-bottom:7px}
input,select,textarea{width:100%;padding:11px;border:1px solid #ccd5da;border-radius:8px;background:#fff}
small{color:#667}.filters{display:flex;gap:10px;margin-bottom:18px}.filters input{max-width:420px}
.detail-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;margin-bottom:20px}
.receipt-image{max-width:100%;max-height:650px;display:block;margin:auto;border-radius:10px}
.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#f8ffff,#dff8fb)}
.login-card{width:min(420px,92vw);background:#fff;padding:34px;border-radius:18px;box-shadow:0 18px 50px rgba(0,0,0,.12);border-top:5px solid var(--gold)}
.login-card h1,.login-card p{text-align:center}.login-card input{margin-bottom:14px}.login-card button{width:100%;margin:8px 0 14px}
@media(max-width:900px){.layout{grid-template-columns:1fr}aside{display:none}.cards{grid-template-columns:1fr 1fr}.detail-grid,.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}}

.button.gold{background:var(--gold)} .nav-button{width:100%;text-align:left;background:transparent;color:var(--ink);padding:12px}.nav-button:hover{background:var(--turq2);color:#057784}

.header-actions{display:flex;align-items:center;gap:12px}.install-button{background:var(--gold);padding:8px 12px}.install-button[hidden]{display:none}.brand .logo-small{max-width:120px}

.actions{display:flex;gap:8px;align-items:center}.actions form{margin:0}
.small-link{padding:7px 10px;font-size:13px}
textarea{min-height:90px;resize:vertical}


.paste-zone{
  min-height:260px;
  border:2px dashed #08aebf;
  border-radius:16px;
  background:#f7feff;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  text-align:center;
  cursor:pointer;
  transition:border-color .2s,background .2s,transform .2s;
  outline:none;
}
.paste-zone:hover,.paste-zone:focus{
  border-color:#d7ad45;
  background:#fffdf7;
}
.paste-zone.dragging{
  background:#dff8fb;
  transform:scale(1.01);
}
.paste-icon{font-size:44px;margin-bottom:10px}
.paste-zone p{margin:8px 0}
.paste-zone .muted{color:#667;font-size:14px}
kbd{
  background:#17212b;
  color:#fff;
  border-radius:5px;
  padding:3px 7px;
  font-size:13px;
  box-shadow:0 2px 0 #000;
}
.paste-preview{
  width:100%;
  display:grid;
  grid-template-columns:minmax(220px,1fr) 240px;
  gap:20px;
  align-items:center;
}
.paste-preview img{
  display:block;
  max-width:100%;
  max-height:520px;
  margin:auto;
  border-radius:12px;
  box-shadow:0 5px 20px rgba(0,0,0,.12);
  object-fit:contain;
}
.preview-info{
  display:grid;
  gap:10px;
  text-align:left;
}
.secondary-button{
  background:#56636c;
}
.hidden{display:none!important}
.paste-message{
  padding:12px 14px;
  border-radius:9px;
}
.paste-message.success{
  background:#dff4e8;
  color:#218b5a;
}
.paste-message.error{
  background:#fde2e2;
  color:#c73737;
}
.paste-message.info{
  background:#e8f5ff;
  color:#176a9a;
}
button:disabled{
  opacity:.65;
  cursor:not-allowed;
}
@media(max-width:760px){
  .paste-preview{grid-template-columns:1fr}
  .preview-info{text-align:center}
}

.small-value{font-size:16px!important;word-break:break-word}
.ocr-text{white-space:pre-wrap;background:#111;color:#f6f6f6;padding:18px;border-radius:10px;max-height:500px;overflow:auto}


/* Confirmación bancaria manual */
.bank-confirmed-badge {
  display: inline-block;
  padding: 0.3rem 0.65rem;
  border-radius: 999px;
  background: #d8f5e5;
  color: #0d6b3a;
  font-weight: 700;
  white-space: nowrap;
}

.bank-pending-badge {
  display: inline-block;
  padding: 0.3rem 0.65rem;
  border-radius: 999px;
  background: #fff1c7;
  color: #795500;
  font-weight: 700;
  white-space: nowrap;
}

.bank-confirmation-panel {
  margin-top: 1rem;
}

.bank-confirm-button {
  background: #16834f;
  border: 1px solid #16834f;
  color: #fff;
  border-radius: 10px;
  padding: 0.7rem 1rem;
  font-weight: 700;
  cursor: pointer;
}

.bank-confirmed-box {
  margin: 0.8rem 0;
  padding: 1rem;
  border: 1px solid #8bd2aa;
  border-radius: 12px;
  background: #e9f8f0;
  color: #115d37;
}

.small-muted {
  margin-top: 0.25rem;
  color: #66737a;
  font-size: 0.88rem;
}


.global-search-form {
  display: flex;
  gap: .4rem;
  align-items: center;
  min-width: min(430px, 45vw);
}
.global-search-form input { min-width: 260px; }
.global-search-form button { white-space: nowrap; }

.search-filters {
  display: grid;
  grid-template-columns: minmax(260px,2fr) repeat(4,minmax(145px,1fr));
  gap: .8rem;
  align-items: end;
}
.search-filters label {
  display: block;
  margin-bottom: .3rem;
  font-weight: 700;
}
@media (max-width:1100px) {
  .header-actions { flex-wrap: wrap; }
  .global-search-form { order:3; width:100%; min-width:0; }
  .global-search-form input { flex:1; min-width:0; }
  .search-filters { grid-template-columns:1fr 1fr; }
}
@media (max-width:650px) {
  .search-filters { grid-template-columns:1fr; }
}


/* Verificación bancaria rápida desde el panel principal */
.dashboard-table-wrap {
  overflow-x: auto;
}

.dashboard-receipts-table {
  min-width: 1120px;
}

.quick-bank-cell {
  min-width: 430px;
}

.quick-bank-form {
  display: grid;
  grid-template-columns: minmax(125px, 1fr) minmax(150px, 1.3fr) auto;
  gap: 0.45rem;
  align-items: center;
  margin: 0;
}

.quick-bank-form input {
  min-width: 0;
  padding: 0.55rem 0.65rem;
}

.quick-confirm-button {
  border: 1px solid #16834f;
  border-radius: 9px;
  padding: 0.58rem 0.8rem;
  background: #16834f;
  color: #fff;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}

.quick-confirm-button:hover {
  filter: brightness(0.94);
}

.quick-confirmed {
  line-height: 1.4;
}

@media (max-width: 900px) {
  .quick-bank-form {
    grid-template-columns: 1fr;
  }

  .quick-bank-cell {
    min-width: 250px;
  }
}


/* Referencia de la boleta no detectada */
.reference-missing {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 999px;
  background: #ffe3e3;
  color: #a21d1d;
  font-weight: 700;
  white-space: nowrap;
}


/* Importe no detectado en la boleta */
.amount-missing {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 999px;
  background: #ffe3e3;
  color: #a21d1d;
  font-weight: 700;
  white-space: nowrap;
}


/* Ventas visibles únicamente para administradores */
.sales-date-card {
  min-width: 310px;
}

.sales-date-filter {
  margin: 0 0 0.55rem;
}

.sales-date-filter label {
  display: block;
  margin-bottom: 0.45rem;
  font-weight: 700;
}

.sales-date-controls {
  display: grid;
  grid-template-columns: minmax(145px, 1fr) auto;
  gap: 0.45rem;
  align-items: center;
}

.sales-date-controls input {
  min-width: 0;
}

.sales-date-controls button {
  white-space: nowrap;
}

@media (max-width: 650px) {
  .sales-date-controls {
    grid-template-columns: 1fr;
  }
}


/* Cuenta receptora en el panel principal */
.destination-account {
  min-width: 155px;
  font-weight: 700;
  white-space: nowrap;
}

.destination-missing {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 999px;
  background: #fff1c7;
  color: #795500;
  font-weight: 700;
  white-space: nowrap;
}


/* Nombre del cliente no detectado */
.payer-missing {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 999px;
  background: #fff1c7;
  color: #795500;
  font-weight: 700;
  white-space: nowrap;
}


/* Personal y asistencia */
.payroll-period-panel,
.staff-card-header {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: end;
  flex-wrap: wrap;
}
.payroll-period-filter,
.mark-paid-form {
  display: flex;
  gap: .6rem;
  align-items: end;
}
.payroll-period-filter label,
.attendance-form label,
.staff-settings-form label {
  display: block;
  margin-bottom: .3rem;
  font-weight: 700;
}
.staff-total-box {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  min-width: 220px;
  padding: .9rem 1rem;
  border-radius: 12px;
  background: #eefbfc;
}
.staff-total-box strong { font-size: 1.75rem; }
.staff-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: .7rem;
  margin: 1rem 0;
}
.staff-summary-grid > div {
  padding: .8rem;
  border: 1px solid #dbe5e8;
  border-radius: 10px;
}
.staff-summary-grid span {
  display: block;
  color: #607078;
  font-size: .88rem;
}
.staff-admin-box {
  margin: .8rem 0;
  padding: .8rem;
  border: 1px solid #dbe5e8;
  border-radius: 10px;
}
.staff-admin-box summary { cursor: pointer; font-weight: 700; }
.attendance-form,
.staff-settings-form {
  display: grid;
  grid-template-columns: repeat(3, minmax(160px, 1fr));
  gap: .7rem;
  align-items: end;
  margin-top: .8rem;
}
.attendance-form .wide,
.staff-settings-form .wide { grid-column: span 2; }
.mark-paid-form { margin: 1rem 0; }
.mark-paid-form input { flex: 1; }
.payroll-paid-box {
  padding: .85rem;
  border-radius: 10px;
  background: #e9f8f0;
  color: #115d37;
}
.attendance-table-wrap { overflow-x: auto; }

@media (max-width: 850px) {
  .staff-summary-grid { grid-template-columns: 1fr 1fr; }
  .attendance-form,
  .staff-settings-form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .staff-summary-grid,
  .attendance-form,
  .staff-settings-form { grid-template-columns: 1fr; }
  .attendance-form .wide,
  .staff-settings-form .wide { grid-column: auto; }
  .payroll-period-filter,
  .mark-paid-form { flex-direction: column; align-items: stretch; }
}


/* Cuenta desde donde el cliente envió el pago */
.origin-account {
  min-width: 175px;
  font-weight: 700;
  white-space: nowrap;
}

.origin-missing {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 999px;
  background: #fff1c7;
  color: #795500;
  font-weight: 700;
  white-space: nowrap;
}


/* Directorio compacto y ficha individual de colaboradores */
.section-heading-row,
.staff-detail-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  flex-wrap: wrap;
}

.staff-create-form {
  display: grid;
  grid-template-columns: repeat(3, minmax(170px, 1fr));
  gap: .75rem;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid #dbe5e8;
  border-radius: 12px;
  background: #f8fbfc;
}

.staff-create-form label {
  display: block;
  margin-bottom: .3rem;
  font-weight: 700;
}

.staff-create-actions {
  display: flex;
  gap: .5rem;
  align-items: end;
}

.staff-directory {
  display: grid;
  grid-template-columns: repeat(2, minmax(300px, 1fr));
  gap: .9rem;
  margin-top: 1rem;
}

.staff-directory-card {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto;
  gap: 1rem;
  align-items: center;
  padding: 1rem;
  border: 1px solid #dbe5e8;
  border-radius: 14px;
  background: #fff;
}

.staff-directory-card h3,
.staff-directory-card p {
  margin: 0 0 .35rem;
}

.staff-directory-card .button-link {
  grid-column: 1 / -1;
  text-align: center;
}

.staff-directory-numbers {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .25rem;
}

.staff-directory-numbers strong {
  font-size: 1.45rem;
}

.staff-linked-user {
  display: inline-block;
  padding: .25rem .5rem;
  border-radius: 999px;
  background: #eefbfc;
  font-weight: 700;
  font-size: .85rem;
}

.button-link {
  display: inline-block;
  padding: .65rem .9rem;
  border-radius: 8px;
  background: #147d85;
  color: #fff;
  text-decoration: none;
  font-weight: 700;
}

.button-link.secondary {
  background: #64747b;
}

.staff-detail-toolbar {
  margin-bottom: 1rem;
}

.staff-workspace-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(280px, .7fr);
  gap: 1rem;
  margin: 1rem 0;
}

.staff-workspace-box {
  padding: 1rem;
  border: 1px solid #dbe5e8;
  border-radius: 12px;
  background: #f8fbfc;
}

.staff-workspace-box h3 {
  margin-top: 0;
}

.staff-workspace-box summary,
.attendance-history summary {
  cursor: pointer;
  font-weight: 700;
}

.attendance-form.compact,
.staff-settings-form.compact {
  grid-template-columns: repeat(2, minmax(150px, 1fr));
}

.attendance-history {
  margin-top: 1rem;
  padding: .85rem;
  border: 1px solid #dbe5e8;
  border-radius: 12px;
}

.attendance-history[open] summary {
  margin-bottom: .8rem;
}

@media (max-width: 900px) {
  .staff-directory,
  .staff-workspace-grid {
    grid-template-columns: 1fr;
  }

  .staff-create-form {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 600px) {
  .staff-directory-card,
  .staff-create-form,
  .attendance-form.compact,
  .staff-settings-form.compact {
    grid-template-columns: 1fr;
  }

  .staff-directory-numbers {
    align-items: flex-start;
  }

  .staff-create-actions {
    align-items: stretch;
    flex-direction: column;
  }
}

/* Análisis financiero */
.finance-heading{display:flex;justify-content:space-between;gap:1rem;align-items:end;flex-wrap:wrap}
.finance-period-form{display:flex;gap:.7rem;align-items:end}
.finance-period-form label,.finance-form label{display:block;margin-bottom:.3rem;font-weight:700}
.finance-kpis{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:1rem;margin:1rem 0}
.finance-kpi{display:flex;flex-direction:column;gap:.3rem;padding:1rem;border:1px solid #dbe5e8;border-radius:14px;background:#fff}
.finance-kpi strong{font-size:1.5rem}.finance-kpi.primary{background:#eefbfc}.finance-kpi.success{background:#e9f8f0}.finance-kpi.danger{background:#fff1f0}
.finance-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.finance-chart-card{min-height:390px}.finance-chart-card.wide{grid-column:1/-1}.finance-chart-card canvas{width:100%!important;height:310px!important}
.finance-actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.finance-form{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;align-items:end}.finance-form button{grid-column:1/-1}
.finance-adjustment-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:.8rem 0}.finance-adjustment-preview>div{padding:.7rem;border-radius:10px;background:#f3f7f8}.finance-adjustment-preview span{display:block;color:#607078;font-size:.85rem}.historical-note{border-left:5px solid #08aebf}
@media(max-width:1000px){.finance-kpis{grid-template-columns:1fr 1fr}.finance-chart-grid,.finance-actions-grid{grid-template-columns:1fr}.finance-chart-card.wide{grid-column:auto}}
@media(max-width:620px){.finance-kpis,.finance-form,.finance-adjustment-preview{grid-template-columns:1fr}.finance-period-form{flex-direction:column;align-items:stretch}}

/* Gráficas integradas sin librerías externas */
.finance-kpi small {
  line-height: 1.35;
  color: #5d6b72;
}

.native-chart {
  width: 100%;
  min-height: 320px;
  overflow-x: auto;
}

.native-chart.compact {
  min-height: 280px;
}

.native-chart svg {
  display: block;
  width: 100%;
  min-width: 620px;
  height: auto;
}

.chart-grid {
  stroke: #e2eaed;
  stroke-width: 1;
}

.chart-axis {
  stroke: #9aabb2;
  stroke-width: 1.2;
}

.chart-line {
  fill: none;
  stroke: #08aebf;
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.chart-point {
  fill: #08aebf;
  stroke: #ffffff;
  stroke-width: 2;
}

.chart-bar {
  fill: #08aebf;
}

.chart-axis-label {
  fill: #5c6a70;
  font-size: 12px;
}

.chart-axis-label-multiline {
  dominant-baseline: hanging;
}

.chart-value-label {
  fill: #26353b;
  font-size: 11px;
  font-weight: 700;
}

.chart-empty {
  display: grid;
  place-items: center;
  min-height: 250px;
  color: #6c7a80;
  text-align: center;
}

.category-bars {
  display: flex;
  flex-direction: column;
  gap: .85rem;
  padding: .5rem 0;
}

.category-bar-row {
  display: grid;
  gap: .35rem;
}

.category-bar-label {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
}

.category-bar-track {
  height: 15px;
  border-radius: 999px;
  background: #e8eff1;
  overflow: hidden;
}

.category-bar-fill {
  height: 100%;
  min-width: 3px;
  border-radius: inherit;
  background: #08aebf;
}

/* Comparación anual mes a mes */
.chart-line.current-year {
  stroke: #08aebf;
}

.chart-line.prior-year {
  stroke: #7d6ccf;
}

.chart-point.current-year {
  fill: #08aebf;
}

.chart-point.prior-year {
  fill: #7d6ccf;
}

.chart-legend .chart-line {
  stroke-width: 4;
}

/* Zona de eliminación segura de colaboradores */
.staff-danger-zone {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid #e4b8b8;
  border-radius: 12px;
  background: #fff5f5;
}

.staff-danger-zone h3 {
  margin: 0 0 .25rem;
  color: #8b1f1f;
}

.danger-button {
  background: #b83232;
  border-color: #b83232;
  color: #fff;
  white-space: nowrap;
}

.danger-button:hover {
  background: #922727;
}

@media (max-width: 650px) {
  .staff-danger-zone {
    flex-direction: column;
    align-items: stretch;
  }
}

/* Clientes, cuentas y portal */
.access-alert-grid,.access-two,.access-grid{display:grid;gap:1rem}.access-alert-grid{grid-template-columns:repeat(2,minmax(180px,1fr));margin-bottom:1rem}.access-alert{background:#fff3cd;border:1px solid #e8cf77;border-radius:14px;padding:1rem;text-decoration:none;color:#4c3d00}.access-alert b{font-size:1.8rem;display:block}.access-two{grid-template-columns:1fr 1fr}.access-card-list{display:grid;gap:.65rem;margin-top:1rem}.access-card{display:flex;flex-direction:column;padding:.85rem 1rem;border:1px solid #d9e5e7;border-radius:12px;text-decoration:none;color:inherit;background:#fff}.access-card:hover{border-color:#08aebf}.access-card.warning{background:#fff4df;border-color:#efad54}.stack-form,.form-grid{display:grid;gap:.7rem}.form-grid{grid-template-columns:repeat(3,minmax(150px,1fr));align-items:end}.stack-form.compact{margin-top:.8rem}.section-title{display:flex;justify-content:space-between;gap:1rem;align-items:center;flex-wrap:wrap}.button-link{display:inline-block;background:#08aebf;color:#fff;padding:.65rem .9rem;border-radius:9px;text-decoration:none}.access-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.service-card,.slot-card,.incident-card{background:#fff;border:1px solid #dce6e8;border-radius:14px;padding:1rem}.service-card.today{border-left:7px solid #e7bf20;background:#fffbed}.service-card.tomorrow{border-left:7px solid #ef8a2f;background:#fff5e8}.service-card.future{border-left:7px solid #2fa66a;background:#f0fbf5}.service-card.expired{border-left:7px solid #c53e3e;background:#fff0f0}.service-card dl{display:grid;grid-template-columns:95px 1fr;gap:.35rem}.service-card dt{color:#5f6c71}.service-card dd{margin:0;font-weight:700;overflow-wrap:anywhere}.notice{background:#e9f6ff;border-radius:9px;padding:.65rem}.credential-box{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.7rem}.credential-box>div{background:#f3f7f8;padding:.8rem;border-radius:10px}.credential-box span{display:block;color:#68777d}.slot-card.disponible{background:#edf9f2}.slot-card.afectado{background:#fff0f0}.danger-panel{border-left:5px solid #b83232}.incident-card{margin-bottom:1rem}.portal-body{background:#eef6f7;min-height:100vh;padding:1rem}.portal-login,.portal-dashboard{max-width:920px;margin:5vh auto;background:#fff;border-radius:18px;padding:1.5rem;box-shadow:0 14px 40px rgba(0,0,0,.08)}.portal-login{max-width:420px;text-align:center}.portal-login .crown{font-size:3rem;color:#08aebf}@media(max-width:800px){.access-two,.form-grid,.access-alert-grid{grid-template-columns:1fr}.portal-dashboard{margin:0}}

.pin-note{padding:.65rem;border-left:4px solid #08aebf;background:#eefbfc;border-radius:7px}

/* Edición de cuentas e inventario por perfiles */
.platform-inventory-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(190px, 1fr));
  gap: .8rem;
}

.platform-inventory-card {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  border: 1px solid #d9e5e8;
  border-radius: 12px;
  padding: 1rem;
  background: #fff;
}

.platform-inventory-card h3 {
  margin: 0;
}

.platform-inventory-card strong {
  font-size: 2rem;
  color: #078d9b;
}

.platform-inventory-card span {
  font-weight: 700;
}

.platform-inventory-card small {
  color: #65757b;
  line-height: 1.35;
}

.account-edit-form label {
  display: grid;
  gap: .3rem;
  font-weight: 700;
}

.account-edit-form .full-width {
  grid-column: 1 / -1;
}

.account-edit-form textarea {
  min-height: 90px;
}

.inventory-mini {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}

.inventory-mini span,
.status-pill {
  display: inline-flex;
  padding: .3rem .65rem;
  border-radius: 999px;
  background: #edf6f7;
  font-size: .85rem;
  font-weight: 700;
}

@media (max-width: 1000px) {
  .platform-inventory-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 620px) {
  .platform-inventory-grid {
    grid-template-columns: 1fr;
  }
}

/* Dashboard de inventario y entrega de accesos */
.dashboard-access-inventory {
  margin: 1.25rem 0;
}

.dashboard-platform-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(190px, 1fr));
  gap: .8rem;
}

.dashboard-platform-card {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: 1rem;
  border: 1px solid #d9e5e8;
  border-radius: 13px;
  background: #fff;
  color: inherit;
  text-decoration: none;
  box-shadow: 0 4px 14px rgba(0,0,0,.04);
}

.dashboard-platform-card:hover {
  border-color: #08aebf;
  transform: translateY(-1px);
}

.dashboard-platform-card > span {
  font-weight: 800;
}

.dashboard-platform-card > strong {
  font-size: 2.2rem;
  color: #078d9b;
}

.dashboard-platform-card > b {
  font-size: .9rem;
}

.dashboard-platform-card > small {
  color: #66767c;
  line-height: 1.35;
}

.portal-client-box {
  display: flex;
  flex-direction: column;
  gap: .3rem;
}

.delivery-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: .8rem;
}

.whatsapp-button {
  background: #1f9d55;
}

.hidden-access-message {
  position: absolute !important;
  left: -99999px !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

@media (max-width: 1050px) {
  .dashboard-platform-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 650px) {
  .dashboard-platform-grid {
    grid-template-columns: 1fr;
  }
}

/* Vencimientos por fecha y hora */
.dashboard-expiration-section {
  margin: 1.25rem 0;
}

.expiration-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(160px, 1fr));
  gap: .8rem;
}

.expiration-summary-card {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  padding: 1rem;
  border-radius: 13px;
  border: 1px solid transparent;
}

.expiration-summary-card strong {
  font-size: 2.2rem;
}

.expiration-summary-card.expired {
  background: #f8d7da;
  border-color: #e5aeb3;
  color: #842029;
}

.expiration-summary-card.today {
  background: #fff3cd;
  border-color: #ead58a;
  color: #664d03;
}

.expiration-summary-card.tomorrow {
  background: #ffe5c2;
  border-color: #efbe7d;
  color: #7a4600;
}

.expiration-summary-card.future {
  background: #d1e7dd;
  border-color: #9cc8b2;
  color: #0f5132;
}

.expiration-attention-list {
  margin-top: .8rem;
  display: grid;
  gap: .5rem;
}

.expiration-attention-row {
  display: grid;
  grid-template-columns: minmax(150px, .8fr) minmax(250px, 1.5fr) auto;
  gap: .8rem;
  align-items: center;
  padding: .75rem .9rem;
  border-radius: 10px;
  color: inherit;
  text-decoration: none;
  border-left: 6px solid;
  background: #fff;
}

.expiration-attention-row.expired {
  border-left-color: #b83232;
}

.expiration-attention-row.today {
  border-left-color: #d7ab00;
}

.expiration-attention-row.tomorrow {
  border-left-color: #e87916;
}

@media (max-width: 800px) {
  .expiration-summary-grid {
    grid-template-columns: 1fr 1fr;
  }

  .expiration-attention-row {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 500px) {
  .expiration-summary-grid {
    grid-template-columns: 1fr;
  }
}

/* Flujo de venta de acceso */
.dashboard-action-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.sell-button,
.sell-submit {
  background: #148c58 !important;
}

.sell-intro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}

.sell-platform-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(180px, 1fr));
  gap: .8rem;
  margin-bottom: 1rem;
}

.sell-platform-summary article {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: 1rem;
  border: 1px solid #b9dfca;
  border-radius: 12px;
  background: #eaf8f0;
}

.sell-platform-summary strong {
  font-size: 2rem;
  color: #126b45;
}

.sell-access-form label {
  display: grid;
  gap: .35rem;
  font-weight: 700;
}

.sell-access-form .full-width {
  grid-column: 1 / -1;
}

.sell-access-form textarea {
  min-height: 90px;
}

.no-inventory-panel {
  border-left: 6px solid #d39e00;
}

@media (max-width: 1000px) {
  .sell-platform-summary {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 600px) {
  .sell-platform-summary {
    grid-template-columns: 1fr;
  }
}

/* Selección manual de perfil y cálculo de días */
.selected-account-preview {
  display: grid;
  grid-template-columns: repeat(4, minmax(170px, 1fr));
  gap: .65rem;
  padding: .9rem;
  border: 1px solid #b7dfe4;
  border-radius: 12px;
  background: #eefafb;
}

.selected-account-preview[hidden] {
  display: none;
}

.selected-account-preview > div {
  display: flex;
  flex-direction: column;
  gap: .2rem;
}

.selected-account-preview span {
  font-size: .8rem;
  color: #64757c;
}

.selected-account-preview b {
  overflow-wrap: anywhere;
}

.credited-days-label input {
  max-width: 120px;
}

.sell-access-form label small {
  font-weight: 400;
  color: #65757b;
}

@media (max-width: 900px) {
  .selected-account-preview {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 550px) {
  .selected-account-preview {
    grid-template-columns: 1fr;
  }
}

/* Inventario de cuentas separado */
.inventory-header {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}

.inventory-header-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.inventory-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(145px, 1fr));
  gap: .75rem;
  margin-bottom: 1rem;
}

.inventory-summary-grid article {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: .9rem;
  border: 1px solid #d9e5e8;
  border-radius: 12px;
  background: #fff;
}

.inventory-summary-grid strong {
  font-size: 1.8rem;
  color: #078d9b;
}

.inventory-search-form {
  display: grid;
  grid-template-columns: minmax(280px, 2fr) minmax(170px, .8fr)
    minmax(170px, .8fr) auto auto;
  gap: .65rem;
  align-items: end;
}

.inventory-search-form label {
  display: grid;
  gap: .3rem;
  font-weight: 700;
}

.account-inventory-list {
  display: grid;
  gap: .75rem;
}

.account-inventory-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: .8rem;
  align-items: center;
  padding: 1rem;
  border: 1px solid #d9e5e8;
  border-radius: 13px;
  background: #fff;
}

.account-inventory-row.cancelled {
  opacity: .7;
  background: #f3f4f5;
}

.account-inventory-main {
  display: grid;
  grid-template-columns: minmax(190px, .8fr) minmax(280px, 1.5fr)
    minmax(240px, 1fr);
  gap: 1rem;
  align-items: center;
  color: inherit;
  text-decoration: none;
}

.account-inventory-title {
  display: flex;
  flex-direction: column;
  gap: .2rem;
}

.account-inventory-title h3 {
  margin: 0;
}

.account-inventory-credentials {
  display: grid;
  gap: .2rem;
  overflow-wrap: anywhere;
}

.account-inventory-counts {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}

.account-inventory-counts span {
  padding: .25rem .55rem;
  border-radius: 999px;
  background: #edf4f5;
  font-size: .82rem;
  font-weight: 700;
}

.account-inventory-counts .available {
  background: #d1e7dd;
  color: #0f5132;
}

.account-inventory-counts .affected {
  background: #f8d7da;
  color: #842029;
}

.account-inventory-counts .clients {
  background: #fff3cd;
  color: #664d03;
}

.account-inventory-actions {
  display: flex;
  flex-direction: column;
  gap: .5rem;
  min-width: 170px;
}

.account-inventory-actions form,
.account-inventory-actions button {
  width: 100%;
}

.account-delete-panel {
  border-left: 6px solid #b83232;
}

.inventory-shortcut {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.secondary-link {
  background: #64757c !important;
}

button:disabled {
  opacity: .55;
  cursor: not-allowed;
}

@media (max-width: 1100px) {
  .inventory-summary-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .inventory-search-form {
    grid-template-columns: 1fr 1fr;
  }

  .account-inventory-row {
    grid-template-columns: 1fr;
  }

  .account-inventory-main {
    grid-template-columns: 1fr 1fr;
  }

  .account-inventory-actions {
    flex-direction: row;
  }
}

@media (max-width: 700px) {
  .inventory-summary-grid {
    grid-template-columns: 1fr 1fr;
  }

  .inventory-search-form,
  .account-inventory-main {
    grid-template-columns: 1fr;
  }

  .account-inventory-actions {
    flex-direction: column;
  }
}

@media (max-width: 450px) {
  .inventory-summary-grid {
    grid-template-columns: 1fr;
  }
}

/* Estados operativos de cuentas */
.account-operational-banner {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  padding: .9rem 1rem;
  margin-bottom: 1rem;
  border-radius: 12px;
  border-left: 6px solid;
}

.account-operational-banner.working {
  background: #d1e7dd;
  border-left-color: #198754;
  color: #0f5132;
}

.account-operational-banner.stopped {
  background: #f8d7da;
  border-left-color: #b83232;
  color: #842029;
}

.account-inventory-counts .blocked {
  background: #e2e3e5;
  color: #41464b;
}

.slot-card.bloqueado {
  background: #eceff1;
  border-color: #9aa4aa;
}

.slot-card.bloqueado b {
  color: #525b60;
}

/* Importación acumulativa de Office 365 */
.office365-import-panel {
  border-left: 6px solid #087f8c;
}

.office365-upload-form {
  margin-top: .8rem;
}

.office365-import-panel .section-title {
  align-items: flex-start;
}

/* Formulario para agregar inventario desde el apartado de cuentas */
.add-inventory-panel {
  border-left: 6px solid #087f8c;
}

.inventory-account-form label {
  display: grid;
  gap: .35rem;
  font-weight: 700;
}

.inventory-account-form .full-width {
  grid-column: 1 / -1;
}

.inventory-account-form textarea {
  min-height: 90px;
}

/* Combos, venta adicional y renovación selectiva */
.renewal-panel {
  border-left: 6px solid #2878b5;
}

.renewal-selection-list {
  display: grid;
  gap: .55rem;
  margin-bottom: .8rem;
}

.renewal-checkbox {
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: .75rem;
  border: 1px solid #d9e5e8;
  border-radius: 10px;
  background: #fff;
}

.renewal-checkbox input {
  width: 20px;
  height: 20px;
}

.renewal-checkbox span {
  display: flex;
  flex-direction: column;
}

.renewal-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
}

.renew-30-button {
  background: #2878b5 !important;
}

.renew-1-button {
  background: #64757c !important;
}

.additional-sale-panel {
  border-left: 6px solid #148c58;
}

.additional-access-form label {
  display: grid;
  gap: .35rem;
  font-weight: 700;
}

.additional-access-form .full-width {
  grid-column: 1 / -1;
}

.sale-mode-options {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .7rem;
}

.sale-mode-card {
  display: flex !important;
  grid-template-columns: auto 1fr !important;
  align-items: flex-start;
  gap: .7rem !important;
  padding: .9rem;
  border: 2px solid #d9e5e8;
  border-radius: 12px;
  cursor: pointer;
}

.sale-mode-card.selected {
  border-color: #148c58;
  background: #eaf8f0;
}

.sale-mode-card input {
  margin-top: .2rem;
}

.sale-mode-card span {
  display: flex;
  flex-direction: column;
  gap: .2rem;
}

.alignment-box {
  display: grid;
  gap: .8rem;
  padding: 1rem;
  border: 1px solid #b9dfca;
  border-radius: 12px;
  background: #f4fbf7;
}

.alignment-box[hidden] {
  display: none;
}

.proportional-calculator h3 {
  margin-top: 0;
}

.proportional-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(150px, 1fr));
  gap: .65rem;
}

.proportional-grid > div {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: .75rem;
  border-radius: 10px;
  background: #fff;
  border: 1px solid #d9e5e8;
}

.proportional-grid > div span {
  font-size: .8rem;
  color: #64757c;
}

.proportional-grid > div b {
  font-size: 1.1rem;
}

@media (max-width: 1000px) {
  .proportional-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 650px) {
  .sale-mode-options,
  .proportional-grid {
    grid-template-columns: 1fr;
  }
}

/* Centro independiente de boletas y verificación */
.receipt-center-shortcut,
.receipt-center-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.receipt-center-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.receipt-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(145px, 1fr));
  gap: .7rem;
  margin: 1rem 0;
}

.receipt-summary-grid article {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: .9rem;
  border: 1px solid #d9e5e8;
  border-radius: 12px;
  background: #fff;
}

.receipt-summary-grid strong {
  font-size: 1.8rem;
}

.receipt-summary-grid .pending {
  border-left: 5px solid #d39e00;
}

.receipt-summary-grid .confirmed {
  border-left: 5px solid #198754;
}

.receipt-summary-grid .duplicate {
  border-left: 5px solid #b83232;
}

.receipt-filters {
  display: grid;
  grid-template-columns: minmax(260px, 2fr) repeat(3, minmax(155px, .8fr))
    auto auto;
  gap: .6rem;
  align-items: end;
}

.receipt-filters label,
.receipt-bank-form label {
  display: grid;
  gap: .3rem;
  font-weight: 700;
}

.receipt-results-info {
  margin: .8rem 0;
}

.receipts-verification-list {
  display: grid;
  gap: .8rem;
}

.receipt-verification-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 330px;
  gap: 1.15rem;
  align-items: start;
  padding: 1rem;
  border: 1px solid #d9e5e8;
  border-radius: 13px;
  background: #fff;
}

.receipt-verification-card.pending {
  border-left: 6px solid #d39e00;
}

.receipt-verification-card.confirmed {
  border-left: 6px solid #198754;
}

.receipt-card-title {
  display: flex;
  align-items: center;
  gap: .6rem;
  flex-wrap: wrap;
  margin-bottom: .7rem;
}

.receipt-card-main {
  min-width: 0;
  padding: .25rem .15rem;
  display: grid;
  gap: 1rem;
}

.receipt-card-preview {
  display: flex;
  align-items: flex-start;
  justify-content: center;
}

.receipt-thumb-link {
  display: flex;
  justify-content: center;
  width: 100%;
}

.receipt-thumb {
  width: 100%;
  max-width: 390px;
  height: 500px;
  object-fit: contain;
  border-radius: 12px;
  border: 1px solid #d9e5e8;
  background: #ffffff;
  box-shadow: 0 8px 20px rgba(20, 35, 44, 0.08);
}

.receipt-thumb-placeholder {
  display: grid;
  place-items: center;
  color: #6b7980;
  font-weight: 700;
  min-height: 170px;
}

.receipt-card-data {
  display: grid;
  grid-template-columns: repeat(3, minmax(170px, 1fr));
  gap: .8rem;
  padding: .9rem;
  border: 1px solid #e0e8ea;
  border-radius: 12px;
  background: #fbfcfd;
}

.receipt-card-data > div {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  overflow-wrap: anywhere;
  min-height: 58px;
  padding: .55rem .65rem;
  border-radius: 9px;
  background: #ffffff;
  border: 1px solid #edf1f2;
}

.receipt-card-data span {
  font-size: .78rem;
  color: #64757c;
}

.receipt-verification-action {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: .75rem;
  padding-left: 1.15rem;
  border-left: 1px solid #dbe5e8;
  align-self: start;
}

.receipt-preview-box {
  display: grid;
  gap: .75rem;
  padding: 1rem;
  border-radius: 12px;
  border: 1px solid #d4e4e8;
  background: #f7fbfc;
}

.receipt-preview-main {
  min-height: 535px;
  align-content: start;
}

.receipt-preview-heading {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
}

.receipt-preview-heading small {
  color: #65757c;
}

.receipt-preview-box h4 {
  margin: 0;
  font-size: .95rem;
}

.receipt-quick-edit-box {
  display: grid;
  gap: .65rem;
  padding: .85rem;
  border-radius: 12px;
  background: #f2f8fa;
  border: 1px solid #cfe1e6;
}

.receipt-quick-edit-box h4 {
  margin: 0;
  font-size: .95rem;
}

.receipt-quick-edit-form {
  display: grid;
  gap: .55rem;
}

.receipt-save-button {
  margin-top: .2rem;
}

.receipt-bank-form {
  display: grid;
  gap: .55rem;
}

.receipt-detail-link {
  text-align: center;
  font-weight: 700;
}

.secondary-action-button {
  background: #64757c !important;
  width: 100%;
  margin-top: .5rem;
}

.receipt-pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: .35rem;
  margin: 1.2rem 0;
}

.receipt-pagination a,
.receipt-pagination span {
  display: inline-flex;
  min-width: 38px;
  min-height: 38px;
  align-items: center;
  justify-content: center;
  padding: .4rem .65rem;
  border: 1px solid #d9e5e8;
  border-radius: 8px;
  background: #fff;
  text-decoration: none;
}

.receipt-pagination a.active {
  background: #087f8c;
  color: #fff;
  border-color: #087f8c;
}

@media (max-width: 1050px) {
  .receipt-summary-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .receipt-filters {
    grid-template-columns: 1fr 1fr;
  }

  .receipt-verification-card {
    grid-template-columns: 1fr;
  }

  .receipt-verification-action {
    padding-left: 0;
    padding-top: .8rem;
    border-left: 0;
    border-top: 1px solid #e0e8ea;
  }
}

@media (max-width: 700px) {
  .receipt-summary-grid,
  .receipt-card-data,
  .receipt-filters {
    grid-template-columns: 1fr;
  }
}

/* v1.0.13 - interfaz humana, cambios de servicio y liberación segura */
.customer-hero {
  display: grid;
  grid-template-columns: 1.2fr .9fr;
  gap: 1rem;
  padding: 1.2rem;
  border-radius: 18px;
  background: linear-gradient(135deg, #183a56, #087f8c);
  color: #fff;
  box-shadow: 0 12px 30px rgba(24, 58, 86, .18);
  margin-bottom: 1rem;
}

.customer-identity {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.customer-avatar {
  display: grid;
  place-items: center;
  width: 72px;
  height: 72px;
  border-radius: 20px;
  background: rgba(255,255,255,.16);
  font-size: 2.2rem;
}

.customer-hero h1 {
  margin: .15rem 0;
  font-size: 2rem;
}

.eyebrow {
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  opacity: .8;
}

.customer-mini-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: .55rem;
}

.customer-mini-stats > div {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: .75rem;
  border-radius: 12px;
  background: rgba(255,255,255,.13);
}

.customer-mini-stats span {
  font-size: .78rem;
}

.customer-quick-actions,
.customer-portal-box {
  grid-column: 1 / -1;
}

.customer-quick-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.customer-quick-actions button {
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.28);
}

.customer-portal-box {
  display: grid;
  grid-template-columns: 1fr auto minmax(260px, 1fr);
  align-items: center;
  gap: .8rem;
  padding: .8rem;
  border-radius: 13px;
  background: rgba(255,255,255,.12);
}

.customer-portal-box .small-muted {
  color: rgba(255,255,255,.8);
}

.themed-section,
.renewal-panel,
.additional-sale-panel {
  border-radius: 16px;
  overflow: hidden;
}

.current-access-section {
  border-left: 7px solid #148c58;
}

.history-section {
  border-left: 7px solid #6c63a8;
}

.access-action-menu {
  margin-top: .8rem;
  border: 1px solid #d9e5e8;
  border-radius: 12px;
  overflow: hidden;
}

.access-action-menu summary {
  cursor: pointer;
  padding: .75rem;
  font-weight: 800;
  background: #f4f8f9;
}

.access-action-block {
  padding: .85rem;
  border-top: 1px solid #e2eaec;
}

.access-action-block h4 {
  margin: 0 0 .25rem;
}

.same-platform-action {
  background: #f2f8fd;
}

.change-service-action {
  background: #f2fbf6;
}

.finish-access-action {
  background: #fff7f0;
}

.change-service-button {
  background: #148c58 !important;
}

.finish-access-button {
  background: #b65b2a !important;
}

.confirm-removed-check {
  display: flex !important;
  grid-template-columns: auto 1fr !important;
  align-items: center;
  gap: .5rem !important;
}

.confirm-removed-check input {
  width: 20px;
  height: 20px;
}

.cleanup-warning {
  margin-top: .8rem;
  padding: .9rem;
  border-radius: 12px;
  border: 1px solid #e3b34f;
  background: #fff8df;
}

.cleanup-confirm-button {
  background: #148c58 !important;
}

.dashboard-welcome {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  padding: 1.2rem;
  margin-bottom: 1rem;
  border-radius: 18px;
  background: linear-gradient(135deg, #e9f7f7, #f7f4ff);
  border: 1px solid #d9e7ea;
}

.dashboard-welcome h1 {
  margin: .2rem 0;
}

.dashboard-quick-links {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .55rem;
}

.dashboard-quick-links a {
  padding: .75rem .9rem;
  border-radius: 11px;
  background: #fff;
  border: 1px solid #d8e5e8;
  text-decoration: none;
  font-weight: 800;
  box-shadow: 0 4px 12px rgba(0,0,0,.05);
}

.cards .card,
.expiration-summary-card,
.dashboard-platform-card {
  transition: transform .18s ease, box-shadow .18s ease;
}

.cards .card:hover,
.expiration-summary-card:hover,
.dashboard-platform-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 9px 22px rgba(0,0,0,.09);
}

@media (max-width: 850px) {
  .customer-hero {
    grid-template-columns: 1fr;
  }

  .customer-mini-stats,
  .customer-portal-box {
    grid-template-columns: 1fr;
  }

  .customer-quick-actions,
  .customer-portal-box {
    grid-column: 1;
  }
}

@media (max-width: 560px) {
  .customer-identity {
    align-items: flex-start;
  }

  .customer-mini-stats,
  .dashboard-quick-links {
    grid-template-columns: 1fr;
  }
}

/* v1.0.14 - Formulario de venta organizado por colores */
.colored-sale-form {
  display: grid;
  gap: 1rem;
}

.sale-form-group {
  padding: 1rem;
  border: 1px solid #dbe5e8;
  border-left-width: 8px;
  border-radius: 16px;
  box-shadow: 0 5px 16px rgba(21, 50, 65, .06);
}

.sale-form-group-title {
  display: flex;
  align-items: center;
  gap: .8rem;
  margin-bottom: .9rem;
}

.sale-form-group-title h3 {
  margin: 0 0 .15rem;
  font-size: 1.15rem;
}

.sale-form-group-title p {
  margin: 0;
  color: #52666f;
}

.sale-form-icon {
  display: grid;
  place-items: center;
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  font-size: 1.5rem;
  background: rgba(255,255,255,.72);
  box-shadow: 0 4px 12px rgba(0,0,0,.06);
}

.customer-data-group {
  border-left-color: #2778b8;
  background: #eef7ff;
}

.access-data-group {
  border-left-color: #168658;
  background: #effaf4;
}

.validity-data-group {
  border-left-color: #d49b00;
  background: #fff9e7;
}

.payment-data-group {
  border-left-color: #7654b8;
  background: #f7f2ff;
}

.colored-sale-form label {
  display: grid;
  gap: .35rem;
  align-content: start;
  padding: .65rem;
  border-radius: 10px;
  background: rgba(255,255,255,.76);
}

.colored-sale-form label > small {
  color: #60717a;
  font-weight: 500;
  line-height: 1.25;
}

.colored-sale-form label:has(input[required]),
.colored-sale-form label:has(select[required]) {
  outline: 1px solid rgba(31, 91, 127, .18);
}

.colored-sale-form .optional-field {
  border: 1px dashed #b9c6cb;
}

.colored-sale-form .automatic-field {
  background: #f1f3f4;
}

.colored-sale-form .automatic-field input {
  background: #f8f9fa;
}

.colored-sale-form .highlighted-days-field {
  background: #fff1b8;
  border: 2px solid #e4ac15;
}

.colored-sale-form .highlighted-days-field input {
  font-size: 1.15rem;
  font-weight: 800;
}

.colored-sale-form .selected-account-preview {
  border: 1px solid #9fd0b5;
  background: #fff;
}

.colored-sale-form .sell-submit {
  min-height: 48px;
  font-size: 1rem;
  background: #148c58 !important;
  border-radius: 12px;
}

@media (max-width: 700px) {
  .sale-form-group {
    padding: .8rem;
  }

  .sale-form-group-title {
    align-items: flex-start;
  }

  .sale-form-icon {
    flex-basis: 42px;
    width: 42px;
    height: 42px;
  }
}

/* v1.0.15 - pendientes de limpieza y selección visual de plataforma */
.cleanup-page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  padding: 1.2rem;
  margin-bottom: 1rem;
  border-radius: 18px;
  background: linear-gradient(135deg, #fff6dc, #fff);
  border: 1px solid #ead39c;
}

.cleanup-page-header h1 {
  margin: .2rem 0;
}

.cleanup-total-card {
  display: flex;
  flex-direction: column;
  min-width: 130px;
  padding: .85rem;
  border-radius: 13px;
  text-align: center;
  background: #fff;
  border: 1px solid #e3c878;
}

.cleanup-total-card strong {
  font-size: 2rem;
}

.cleanup-filters {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr auto auto;
  gap: .6rem;
  align-items: end;
}

.cleanup-filters label {
  display: grid;
  gap: .3rem;
  font-weight: 700;
}

.cleanup-access-grid {
  display: grid;
  gap: .8rem;
}

.cleanup-access-card {
  padding: 1rem;
  border-radius: 15px;
  border: 1px solid #e3d2a4;
  border-left: 7px solid #d49b00;
  background: #fffdf7;
  box-shadow: 0 5px 16px rgba(70, 55, 20, .06);
}

.cleanup-card-heading,
.cleanup-card-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  flex-wrap: wrap;
}

.cleanup-card-heading h2 {
  margin: .2rem 0;
}

.cleanup-platform {
  display: inline-flex;
  padding: .2rem .55rem;
  border-radius: 999px;
  background: #fff0b8;
  font-weight: 800;
}

.cleanup-age {
  padding: .4rem .65rem;
  border-radius: 999px;
  background: #f5f0e2;
  font-weight: 700;
}

.cleanup-age.old {
  background: #ffe1dc;
  color: #9d2d21;
}

.cleanup-details {
  display: grid;
  grid-template-columns: repeat(4, minmax(145px, 1fr));
  gap: .6rem;
  margin: .85rem 0;
}

.cleanup-details > div {
  display: flex;
  flex-direction: column;
  gap: .18rem;
  padding: .65rem;
  border-radius: 10px;
  background: #fff;
  overflow-wrap: anywhere;
}

.cleanup-details span {
  font-size: .78rem;
  color: #69777c;
}

.cleanup-note {
  padding: .7rem;
  margin-bottom: .8rem;
  border-radius: 10px;
  background: #fff5d8;
}

.cleanup-card-actions form {
  margin: 0;
}

.cleanup-release-button {
  background: #148c58 !important;
}

.cleanup-empty-state {
  text-align: center;
}

.cleanup-empty-state > div {
  font-size: 2.2rem;
}

.dashboard-cleanup-alert {
  display: flex;
  align-items: center;
  gap: .8rem;
  padding: .9rem 1rem;
  margin-bottom: 1rem;
  border-radius: 14px;
  background: #fff5d4;
  border: 1px solid #e3c46c;
  color: inherit;
  text-decoration: none;
}

.dashboard-cleanup-alert div {
  display: flex;
  flex: 1;
  flex-direction: column;
}

.dashboard-cleanup-icon {
  font-size: 1.8rem;
}

.dashboard-quick-links .attention-link {
  border-color: #d49b00;
  background: #fff7dc;
}

.sell-platform-selector {
  margin: 1rem 0;
  padding: 1rem;
  border-radius: 16px;
  background: #eef8fb;
  border: 1px solid #c9e2e8;
}

.platform-selector-heading h2 {
  margin: 0 0 .25rem;
}

.platform-selector-heading p {
  margin: 0 0 .85rem;
}

.sell-platform-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(155px, 1fr));
  gap: .65rem;
}

.sell-platform-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: .45rem;
  min-height: 76px;
  padding: .75rem;
  text-align: left;
  border-radius: 13px;
  border: 2px solid transparent;
  background: #fff !important;
  color: inherit !important;
  box-shadow: 0 4px 12px rgba(18, 65, 77, .07);
}

.sell-platform-card:hover,
.sell-platform-card.selected {
  transform: translateY(-2px);
  border-color: #148c58;
  background: #eaf8f0 !important;
}

.sell-platform-card strong {
  font-size: 1.35rem;
  color: #148c58;
}

.sell-platform-card small {
  grid-column: 2 / -1;
}

.platform-choice-icon {
  grid-row: 1 / 3;
  font-size: 1.35rem;
}

@media (max-width: 900px) {
  .cleanup-filters {
    grid-template-columns: 1fr 1fr;
  }

  .cleanup-details {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 600px) {
  .cleanup-filters,
  .cleanup-details {
    grid-template-columns: 1fr;
  }

  .cleanup-card-actions > * {
    width: 100%;
  }

  .cleanup-card-actions form button,
  .cleanup-card-actions .button-link {
    width: 100%;
    text-align: center;
  }
}

/* v1.0.18 - decisiones bancarias verificar o denegar */
.receipt-summary-grid .denied {
  border-left: 5px solid #b83232;
}

.receipt-verification-card.verified {
  border-left: 6px solid #198754;
}

.receipt-verification-card.denied {
  border-left: 6px solid #b83232;
  background: #fff8f8;
}

.bank-decision-box {
  display: grid;
  gap: .8rem;
}

.verify-form {
  padding-bottom: .8rem;
  border-bottom: 1px solid #dde5e8;
}

.deny-form {
  padding: .7rem;
  border-radius: 10px;
  background: #fff1f1;
  border: 1px solid #efcaca;
}

.quick-deny-button {
  background: #b83232 !important;
}

.quick-denied {
  display: grid;
  gap: .45rem;
  padding: .8rem;
  border-radius: 11px;
  background: #fff0f0;
  border: 1px solid #e9baba;
}

.bank-denied-badge {
  display: inline-flex;
  width: fit-content;
  padding: .35rem .6rem;
  border-radius: 999px;
  background: #b83232;
  color: #fff;
  font-weight: 800;
}

/* v1.0.19 - reanálisis de boletas y banco emisor */
.reanalyze-receipt-form {
  display: grid;
  gap: .35rem;
  margin: .8rem 0;
  padding: .8rem;
  border-radius: 11px;
  background: #eef8fb;
  border: 1px solid #bddde4;
}

.reanalyze-receipt-button {
  width: fit-content;
  background: #2878b5 !important;
}

/* v1.0.20 - reemplazo completo y limpieza segura de cuentas caídas */
.replacement-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  border-left: 6px solid #7654b8;
  background: #f7f3ff;
}

.replacement-icon {
  float: left;
  margin-right: .8rem;
  font-size: 2.2rem;
}

.replacement-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .8rem;
  margin: 1rem 0;
}

.replacement-summary > div {
  display: grid;
  gap: .25rem;
  padding: .8rem;
  border-radius: 11px;
  background: #f4f7f9;
  border: 1px solid #dce4e8;
}

.replacement-summary span {
  color: #60717a;
  font-size: .82rem;
}

.replacement-map-list {
  display: grid;
  gap: 1rem;
}

.replacement-map-card {
  padding: 1rem;
  border: 1px solid #d9dfe7;
  border-radius: 13px;
  background: #fff;
  box-shadow: 0 4px 12px rgba(18, 65, 77, .06);
}

.replacement-customer {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  margin-bottom: .9rem;
}

.replacement-customer h3,
.replacement-customer p {
  margin: 0 0 .2rem;
}

.step-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: #7654b8;
  color: #fff;
  font-weight: 800;
}

.replacement-fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .8rem;
}

.replacement-confirm-box {
  margin-top: 1rem;
  padding: 1rem;
  border-radius: 12px;
  background: #fff;
  border: 1px solid #dbe3ec;
}

.replacement-create-form .full-width {
  grid-column: 1 / -1;
}

.replacement-preview-professional {
  width: 100%;
  min-width: 0;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(15, 23, 42, .06);
}

.replacement-preview-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: .9rem;
}

.replacement-preview-heading b {
  display: block;
  margin-bottom: .25rem;
  font-size: 1rem;
  color: #172033;
}

.replacement-preview-heading p {
  margin: 0;
}

.replacement-preview-count {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 82px;
  padding: .4rem .7rem;
  border-radius: 999px;
  background: #eef2ff;
  border: 1px solid #c7d2fe;
  color: #3730a3;
  font-size: .78rem;
  font-weight: 800;
}

.replacement-change-table {
  width: 100%;
  overflow: hidden;
  border: 1px solid #dbe3ec;
  border-radius: 12px;
  background: #fff;
}

.replacement-change-header,
.replacement-change-row {
  display: grid;
  grid-template-columns: minmax(150px, .72fr) minmax(0, 1.35fr) minmax(0, 1.35fr);
  align-items: stretch;
}

.replacement-change-header {
  background: #f1f5f9;
  border-bottom: 1px solid #dbe3ec;
}

.replacement-change-header span {
  padding: .68rem .8rem;
  color: #475569;
  font-size: .75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .03em;
}

.replacement-change-list {
  display: grid;
}

.replacement-change-row {
  border-bottom: 1px solid #e6ebf0;
}

.replacement-change-row:last-child {
  border-bottom: 0;
}

.replacement-change-field,
.replacement-change-value {
  min-width: 0;
  padding: .78rem .8rem;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.replacement-change-field {
  display: flex;
  align-items: center;
  background: #fbfcfe;
  color: #334155;
  font-weight: 800;
}

.replacement-change-value {
  line-height: 1.35;
}

.replacement-change-old {
  background: #fff7f7;
  color: #7f1d1d;
  border-left: 1px solid #eef2f6;
}

.replacement-change-new {
  background: #f4fbf7;
  color: #166534;
  border-left: 1px solid #eef2f6;
  font-weight: 700;
}

.replacement-preview-empty {
  padding: .9rem 1rem;
  border: 1px dashed #cbd5e1;
  border-radius: 10px;
  background: #f8fafc;
  color: #64748b;
  text-align: center;
}

@media (max-width: 760px) {
  .replacement-preview-heading {
    flex-direction: column;
  }

  .replacement-change-header {
    display: none;
  }

  .replacement-change-row {
    grid-template-columns: 1fr;
    margin: .65rem;
    border: 1px solid #dbe3ec;
    border-radius: 10px;
    overflow: hidden;
  }

  .replacement-change-field,
  .replacement-change-value {
    padding: .68rem .75rem;
  }

  .replacement-change-field::before {
    content: "Campo";
    display: block;
    margin-right: .5rem;
    color: #64748b;
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
  }

  .replacement-change-old::before,
  .replacement-change-new::before {
    display: block;
    margin-bottom: .2rem;
    color: #64748b;
    font-size: .7rem;
    font-weight: 800;
    text-transform: uppercase;
  }

  .replacement-change-old::before {
    content: "Cuenta anterior";
  }

  .replacement-change-new::before {
    content: "Cuenta nueva";
  }

  .replacement-change-old,
  .replacement-change-new {
    border-left: 0;
    border-top: 1px solid #eef2f6;
  }
}

.inline-warning {
  margin-top: .8rem;
  padding: .8rem;
  border-radius: 10px;
  background: #fff3cd;
  border: 1px solid #efd27b;
  color: #624b00;
}

.account-replacement-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .7rem;
  margin-top: .9rem;
}

@media (max-width: 800px) {
  .replacement-summary,
  .replacement-fields {
    grid-template-columns: 1fr;
  }

  .replacement-hero {
    align-items: flex-start;
    flex-direction: column;
  }
}


/* v1.0.21: archivo histórico de cuentas dadas de baja */
.archive-summary-grid { grid-template-columns: repeat(2, minmax(180px, 1fr)); }
.archive-account-row { opacity: .82; border-left: 5px solid #8b95a5; }
.archive-account-row .status-pill { background: #e7e9ee; color: #4d5562; }
.empty-state { text-align: center; padding: 2rem; }
@media (max-width: 700px) { .archive-summary-grid { grid-template-columns: 1fr; } }


/* v1.0.22: mensajes claros y copia rápida en el portal del cliente */
.portal-title-row { align-items: flex-start; }
.portal-service-card { overflow: hidden; }
.portal-profile-name {
  margin: .2rem 0 1rem;
  padding: .65rem .8rem;
  border-radius: 10px;
  background: #f1f7fa;
  border-left: 4px solid #11a9b8;
}
.portal-credential-list { display: grid; gap: .75rem; margin: 1rem 0; }
.portal-credential-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  padding: .8rem;
  border: 1px solid #dce6eb;
  border-radius: 11px;
  background: #fff;
}
.portal-credential-row > div { min-width: 0; display: grid; gap: .2rem; }
.portal-credential-row span { color: #65747d; font-size: .82rem; }
.portal-credential-row strong { overflow-wrap: anywhere; }
.portal-copy-button {
  flex: 0 0 auto;
  min-width: 94px;
  padding: .62rem .75rem;
  border: 0;
  border-radius: 9px;
  background: #0ba9b7;
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}
.portal-copy-button.copied { background: #288a55; }
.portal-access-details { margin-top: .8rem; }
.copy-toast {
  position: fixed;
  left: 50%;
  bottom: 1.2rem;
  z-index: 1000;
  transform: translate(-50%, 140%);
  padding: .7rem 1rem;
  border-radius: 999px;
  background: #17333c;
  color: #fff;
  opacity: 0;
  transition: .2s ease;
  pointer-events: none;
}
.copy-toast.visible { transform: translate(-50%, 0); opacity: 1; }
@media (max-width: 520px) {
  .portal-credential-row { align-items: stretch; flex-direction: column; }
  .portal-copy-button { width: 100%; }
}


/* v1.0.26 Catálogo administrativo de servicios */
.service-catalog-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px;margin-top:16px}.service-card{border-top:5px solid #08aebf}.service-card.service-disabled{opacity:.78;border-top-color:#8a97a3;background:#f4f6f7}.service-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.service-card-head h3{margin:0 0 6px}.service-counts{font-size:.85rem;color:#5e6c76;text-align:right}.status-pill{display:inline-block;padding:4px 9px;border-radius:999px;font-size:.78rem;font-weight:700}.status-active{background:#dff6e8;color:#157347}.status-inactive{background:#eceff1;color:#59636b}.notice-box{padding:12px 14px;border-left:5px solid #f0ad00;background:#fff7d6;border-radius:8px}.check-label{display:flex!important;align-items:center;gap:8px}.check-label input{width:auto!important}.service-edit-form{margin-bottom:10px}@media(max-width:700px){.service-catalog-grid{grid-template-columns:1fr}.service-card-head{display:block}.service-counts{text-align:left;margin-top:8px}}


/* v1.0.27 WhatsApp dinámico en el portal del cliente */
.portal-support-card{margin-top:1.25rem;padding:1.15rem;border-radius:16px;background:#eafaf0;border:1px solid #b7e4c7;display:flex;align-items:center;justify-content:space-between;gap:1rem}.portal-support-card h2{margin:0 0 .35rem}.portal-support-card p{margin:0;color:#446052}.portal-whatsapp-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.8rem 1rem;border-radius:12px;background:#1fa855;color:#fff!important;text-decoration:none;font-weight:800;box-shadow:0 4px 12px rgba(31,168,85,.22)}.portal-whatsapp-button:hover{background:#188946}.portal-settings-card{max-width:920px}.portal-settings-form small{display:block;color:#65747d;margin-top:.35rem}.portal-settings-preview{padding:1rem;border-radius:12px;background:#f1f8fb;border-left:5px solid #0ba9b7}.portal-settings-preview p{margin:.35rem 0 0}@media(max-width:700px){.portal-support-card{align-items:stretch;flex-direction:column}.portal-whatsapp-button{width:100%}}

/* v1.0.29 - Catálogo de servicios con distribución profesional */
.service-catalog-intro{margin-bottom:16px}.catalog-summary{display:flex;gap:10px;flex-wrap:wrap}.catalog-summary span{background:#eef8fa;border:1px solid #cce9ed;border-radius:999px;padding:8px 12px;color:#35555b;font-size:.9rem}.catalog-summary strong{color:#087f8c}.catalog-create-panel{margin-bottom:18px}.catalog-panel-heading h2{margin-bottom:3px}.catalog-create-form{display:grid;grid-template-columns:minmax(240px,2fr) minmax(150px,1fr) minmax(150px,1fr) minmax(110px,.7fr);gap:14px;align-items:end}.catalog-field{display:flex;flex-direction:column;gap:6px;min-width:0}.catalog-field>span,.catalog-check span{font-weight:700;color:#263b40;font-size:.9rem}.catalog-field input,.catalog-field select{width:100%;min-width:0}.catalog-check{display:flex;align-items:center;gap:9px;min-height:42px;padding:10px 12px;background:#f3f8f9;border:1px solid #dce9eb;border-radius:9px}.catalog-check input{width:auto!important;margin:0}.catalog-primary-button{min-height:42px;white-space:nowrap}.service-catalog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:18px;align-items:start}.service-admin-card{padding:0!important;overflow:hidden;border:1px solid #d5e3e6;border-top:5px solid #08aebf;box-shadow:0 5px 18px rgba(24,67,75,.07)}.service-admin-card.service-disabled{opacity:.82;border-top-color:#8a97a3;background:#f6f8f9}.service-admin-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:16px 18px 14px;background:linear-gradient(180deg,#fbfefe,#f4f9fa);border-bottom:1px solid #e1ebed}.service-admin-title{min-width:0}.service-admin-title h3{margin:0 0 8px;font-size:1.08rem;line-height:1.25;overflow-wrap:anywhere}.service-admin-badges{display:flex;gap:7px;flex-wrap:wrap}.catalog-type-pill{display:inline-block;padding:4px 9px;border-radius:999px;background:#eaf1ff;color:#345b9b;font-size:.78rem;font-weight:700}.service-counts{flex:0 0 auto;text-align:right;color:#66777c;font-size:.78rem;line-height:1.45}.service-counts strong{display:inline;font-size:1rem;color:#173b42}.service-admin-form{display:grid;grid-template-columns:1fr 1fr;gap:13px;padding:17px 18px}.catalog-field-full{grid-column:1/-1}.catalog-check-card{align-self:end}.service-admin-save{grid-column:1/-1;display:flex;justify-content:flex-end;padding-top:2px}.service-admin-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 18px;background:#f7fafb;border-top:1px solid #e1ebed}.service-admin-footer p{margin:0;color:#65767b;font-size:.78rem;line-height:1.35}.service-admin-footer form{flex:0 0 auto}.service-admin-footer button{white-space:nowrap}.catalog-empty{grid-column:1/-1;text-align:center;padding:28px}
@media(max-width:1350px){.service-catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.catalog-create-form{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-field-name{grid-column:span 2}}
@media(max-width:850px){.service-catalog-grid{grid-template-columns:1fr}.catalog-create-form{grid-template-columns:1fr 1fr}.catalog-field-name{grid-column:1/-1}}
@media(max-width:560px){.catalog-create-form,.service-admin-form{grid-template-columns:1fr}.catalog-field-full,.catalog-field-name,.service-admin-save{grid-column:1}.service-admin-head,.service-admin-footer{flex-direction:column;align-items:stretch}.service-counts{text-align:left}.service-admin-save .catalog-primary-button,.service-admin-footer button,.catalog-create-form .catalog-primary-button{width:100%}}

/* v1.0.30: cambio de nombre explícito en catálogo */
.service-rename-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;padding:16px 18px;background:#fff9e8;border-bottom:1px solid #f0dfaa}.service-rename-form .catalog-field>span{color:#705400}.catalog-rename-button{min-height:42px;white-space:nowrap;background:#f2a900;color:#2b240f;border:0;border-radius:8px;padding:10px 14px;font-weight:800;cursor:pointer}.catalog-rename-button:hover{filter:brightness(.96)}
@media(max-width:560px){.service-rename-form{grid-template-columns:1fr}.catalog-rename-button{width:100%}}

/* v1.0.31 - Protección para desactivar servicios con operaciones activas */
.service-deactivation-lock{display:flex;flex-direction:column;gap:3px;min-width:0;color:#7a3d00}.service-deactivation-lock strong{font-size:.84rem}.service-deactivation-lock span{font-size:.76rem;line-height:1.35}.service-admin-footer:has(.service-deactivation-lock){background:#fff7e6;border-top-color:#f1d29a}.service-locked-button{opacity:.65;cursor:not-allowed!important;filter:grayscale(.15)}

/* v1.0.32 - catálogo activo/desactivado y orden visual */
.catalog-section-links{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.catalog-anchor-button{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:9px;background:#08aebf;color:#fff!important;font-weight:800;text-decoration:none}.catalog-anchor-muted{background:#5e6c76}.catalog-section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:22px 0 0;border-left:6px solid #08aebf}.catalog-section-heading h2{margin:0 0 4px}.catalog-inactive-heading{border-left-color:#77838b;background:#f5f7f8}.catalog-section-count{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 12px;border-radius:999px;background:#dff6e8;color:#157347;font-size:1.05rem;font-weight:900}.catalog-section-count-muted{background:#e8ecef;color:#59636b}.service-catalog-inactive-grid{margin-bottom:24px}.catalog-order-pill{display:inline-block;padding:4px 9px;border-radius:999px;background:#f2edff;color:#6047a3;font-size:.78rem;font-weight:700}.service-order-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;background:#edf8fa;border-bottom:1px solid #d3e9ed}.service-order-toolbar>div:first-child{display:flex;flex-direction:column;gap:2px}.service-order-toolbar strong{font-size:.86rem;color:#22535c}.service-order-toolbar span{font-size:.74rem;color:#64777c}.service-order-actions{display:flex;gap:8px;flex:0 0 auto}.service-order-actions form{margin:0}.order-move-button{min-height:36px;padding:8px 11px;border:1px solid #acd7dd;border-radius:8px;background:#fff;color:#17616c;font-weight:800;cursor:pointer}.order-move-button:hover{background:#dff4f7}.catalog-field small{font-size:.72rem;color:#6b7c81}.service-disabled .service-order-toolbar{background:#eef1f3;border-bottom-color:#dfe4e7}.service-disabled .order-move-button{border-color:#cfd6da;color:#59666d}
@media(max-width:700px){.catalog-section-heading,.service-order-toolbar{align-items:stretch;flex-direction:column}.catalog-section-count{align-self:flex-start}.service-order-actions{display:grid;grid-template-columns:1fr 1fr}.order-move-button{width:100%}.catalog-section-links{display:grid;grid-template-columns:1fr}.catalog-anchor-button{width:100%}}

/* v1.0.33 - edición compacta del nombre de servicios */
.service-title-row{display:flex;align-items:flex-start;gap:8px;min-width:0}
.service-title-row h3{flex:1;min-width:0}
.service-name-edit-button{flex:0 0 auto;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #cfe1e4;border-radius:8px;background:#fff;color:#36575d;cursor:pointer;padding:0;font-size:.95rem;line-height:1}
.service-name-edit-button:hover{background:#eaf8fa;border-color:#08aebf;transform:translateY(-1px)}
.service-rename-inline{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;padding:14px 18px;background:#f7fbfc;border-bottom:1px solid #dfeaec}
.service-rename-inline[hidden]{display:none!important}
.service-rename-actions{display:flex;gap:8px;align-items:center}
.catalog-rename-save,.catalog-rename-cancel{min-height:40px;border-radius:8px;padding:9px 13px;font-weight:800;cursor:pointer;white-space:nowrap}
.catalog-rename-save{background:#08aebf;color:#fff;border:1px solid #08aebf}
.catalog-rename-cancel{background:#fff;color:#4f6267;border:1px solid #cbdadd}
@media(max-width:560px){.service-rename-inline{grid-template-columns:1fr}.service-rename-actions{justify-content:flex-end;flex-wrap:wrap}}


/* v1.0.34: datos de ingreso visibles dentro del portal del cliente */
.portal-login-data-card{margin:1rem 0 1.25rem;padding:1.1rem;border-radius:16px;background:#f4fbfd;border:1px solid #b9e4ea;box-shadow:0 5px 16px rgba(13,116,130,.07)}
.portal-login-data-heading h2{margin:0 0 .3rem;font-size:1.08rem;color:#164f59}.portal-login-data-heading p{margin:0;color:#5b7076}
.portal-login-data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;margin-top:.9rem}
.portal-login-data-row{background:#fff;border:1px solid #d5e8eb;border-radius:12px;padding:.8rem}
@media(max-width:700px){.portal-login-data-grid{grid-template-columns:1fr}}


/* v1.0.36 · recuperación segura de limpieza pendiente */
.history-entry {
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 12px 14px;
  margin: 10px 0;
  background: #fff;
}
.history-entry p { margin: 4px 0; }
.muted-text { color: #64748b; font-size: .92rem; }
.history-cleanup-form { margin-top: 9px; }
.cleanup-recovery-button {
  background: #fff7ed;
  color: #9a3412;
  border: 1px solid #fdba74;
}
.cleanup-recovery-button:hover { background: #ffedd5; }


/* v1.0.37: acciones plegables, vencidos y corrección administrativa */
.action-collapsible { padding: 0; overflow: hidden; }
.action-collapsible-summary {
  cursor: pointer; list-style: none; font-size: 1.2rem; font-weight: 800;
  padding: 18px 22px; display: flex; align-items: center; gap: 10px;
  background: #f6f9fb; border-bottom: 1px solid transparent;
}
.action-collapsible-summary::-webkit-details-marker { display: none; }
.action-collapsible-summary::before { content: "▶"; font-size: .8rem; transition: transform .18s ease; }
.action-collapsible[open] > .action-collapsible-summary::before { transform: rotate(90deg); }
.action-collapsible[open] > .action-collapsible-summary { border-bottom-color: #dbe5ea; }
.action-collapsible-body { padding: 20px 22px 24px; }
.admin-expiration-editor { margin-top: 14px; border: 1px solid #d8e1e8; border-radius: 10px; background: #f8fbfd; }
.admin-expiration-editor summary { cursor: pointer; padding: 10px 12px; font-weight: 700; }
.admin-expiration-form { padding: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.admin-expiration-form label { display: grid; gap: 5px; }
.admin-expiration-form .full-width { grid-column: 1 / -1; }
.history-agent { margin-top: 4px; color: #48606f; font-size: .9rem; }
.expired-retire-row { display: flex; align-items: center; gap: 14px; }
.expired-customer-link { flex: 1; min-width: 0; display: grid; gap: 3px; color: inherit; text-decoration: none; }
.retire-expired-button { white-space: nowrap; background: #b42318; color: white; border: 0; border-radius: 8px; padding: 10px 12px; font-weight: 700; }
@media (max-width: 760px) {
  .admin-expiration-form { grid-template-columns: 1fr; }
  .admin-expiration-form .full-width { grid-column: auto; }
  .expired-retire-row { align-items: stretch; flex-direction: column; }
  .retire-expired-button { width: 100%; }
}

/* v1.0.38 · Reactivación segura de cuentas */
.account-reactivate-panel { border-left: 5px solid #22c55e; }
.account-reactivate-panel .section-title { align-items: center; gap: 18px; }
.incident-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 10px; }
.incident-actions form { margin: 0; }
@media (max-width: 720px) {
  .account-reactivate-panel .section-title { align-items: stretch; }
  .account-reactivate-panel form button, .incident-actions form, .incident-actions form button { width: 100%; }
}


/* v1.0.39 — listados y Excel de vencimientos */
.expiration-summary-card.clickable{display:flex;flex-direction:column;text-decoration:none;color:inherit;transition:transform .18s ease,box-shadow .18s ease}
.expiration-summary-card.clickable:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(20,45,70,.14)}
.expiration-summary-card.clickable small{font-size:.75rem;opacity:.78;margin-top:.35rem}
.expiration-page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}
.expiration-page-actions{display:flex;gap:.65rem;flex-wrap:wrap}
.expiration-list-panel{background:#fff;border:1px solid #dfe8ee;border-radius:18px;padding:1rem;box-shadow:0 8px 24px rgba(25,54,75,.07)}
.expiration-list-summary{display:flex;align-items:baseline;gap:.5rem;margin-bottom:1rem}.expiration-list-summary strong{font-size:1.8rem;color:#16324f}
.expiration-table-wrap{overflow-x:auto}.expiration-detail-table{width:100%;border-collapse:separate;border-spacing:0;min-width:1050px}
.expiration-detail-table th{background:#16324f;color:#fff;text-align:left;padding:.8rem;position:sticky;top:0}
.expiration-detail-table td{padding:.8rem;border-bottom:1px solid #e5edf2;vertical-align:top}.expiration-detail-table td small{display:block;color:#6b7d88;margin-top:.2rem}
.expiration-row-expired td:first-child{border-left:5px solid #c62828}.expiration-row-today td:first-child{border-left:5px solid #f2c037}.expiration-row-tomorrow td:first-child{border-left:5px solid #ef8f3d}.expiration-row-future td:first-child{border-left:5px solid #43a047}
.expiration-actions-cell{display:flex;gap:.45rem;align-items:flex-start}.expiration-actions-cell form{margin:0}.button.small{padding:.48rem .65rem;font-size:.82rem;white-space:nowrap}.button.danger{background:#b42318;color:#fff}
@media(max-width:760px){.expiration-page-heading{flex-direction:column}.expiration-page-actions,.expiration-page-actions .button{width:100%}.expiration-actions-cell{flex-direction:column}}

/* v1.0.49 Renovaciones con proveedores */
.hero-provider{display:flex;justify-content:space-between;align-items:center;gap:16px}.renewal-stats{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:12px;margin:16px 0}.renewal-stats a,.renewal-stats>div{background:#fff;border:1px solid #dce8eb;border-radius:14px;padding:16px;text-decoration:none;color:inherit;box-shadow:0 4px 14px rgba(0,0,0,.05)}.renewal-stats strong{display:block;font-size:1.8rem}.renewal-stats span{color:#53666b}.filter-row,.bulk-toolbar,.split-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.filter-row select,.bulk-toolbar input,.split-actions input{min-height:42px}.due-badge{display:inline-block;padding:5px 9px;border-radius:999px;font-weight:700;font-size:.85rem}.due-badge.expired{background:#ffe0e0;color:#a31515}.due-badge.today{background:#fff2a8;color:#6e5900}.due-badge.tomorrow{background:#ffe2bd;color:#8a4300}.due-badge.future{background:#dff1ff;color:#075b8c}.due-badge.ok{background:#dcf8e6;color:#146b35}.due-badge.no_date{background:#eceff1;color:#455a64}.password-control-card details{margin-top:10px}.compact-form{margin-top:12px}@media(max-width:800px){.renewal-stats{grid-template-columns:repeat(2,1fr)}.hero-provider{align-items:flex-start;flex-direction:column}}


/* v1.0.50 · control diario y orden operativo */
.daily-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:16px 0}.daily-summary-grid article{display:flex;flex-direction:column;gap:6px}.daily-summary-grid strong{font-size:2rem}.section-heading-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.inline-form{display:flex;align-items:flex-end;gap:10px}.inline-form label{margin:0}.table-wrap{overflow-x:auto}.button-secondary{background:#5c7080}@media(max-width:900px){.daily-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.section-heading-row,.inline-form{align-items:stretch;flex-direction:column}}

/* v1.0.51 — Contingencia y formulario plegable de clientes */
.collapsible-customer-form { padding: 0; overflow: hidden; }
.collapsible-customer-form summary {
  cursor: pointer; list-style: none; display: flex; align-items: center;
  justify-content: space-between; gap: 16px; padding: 18px 20px; font-weight: 800;
}
.collapsible-customer-form summary::-webkit-details-marker { display: none; }
.collapsible-customer-form summary::after { content: "⌄"; font-size: 24px; transition: transform .2s ease; }
.collapsible-customer-form[open] summary::after { transform: rotate(180deg); }
.collapsible-customer-form summary small { margin-left: auto; color: #61717d; font-weight: 600; }
.collapsible-customer-body { padding: 0 20px 20px; border-top: 1px solid #e5edf1; }
.contingency-export-panel { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.contingency-export-panel .button-link { white-space: nowrap; }
@media (max-width: 760px) {
  .contingency-export-panel { align-items: stretch; flex-direction: column; }
  .contingency-export-panel .button-link { text-align: center; white-space: normal; }
  .collapsible-customer-form summary small { display: none; }
}


/* v1.0.52 — vista previa de credenciales antes de reasignar */
.reassignment-credential-preview {
  margin-top: .15rem;
  padding: .85rem;
  border: 1px solid #9bc8df;
  border-radius: 12px;
  background: #eef8fd;
}
.reassignment-preview-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .6rem;
  margin: .65rem 0;
}
.reassignment-preview-grid > div {
  min-width: 0;
  padding: .65rem;
  border-radius: 9px;
  background: #fff;
}
.reassignment-preview-grid span {
  display: block;
  color: #65747d;
  font-size: .8rem;
}
.reassignment-preview-grid strong {
  display: block;
  overflow-wrap: anywhere;
  margin: .15rem 0 .45rem;
}
.credential-preview-wide { grid-column: span 2; }
.credential-copy-button {
  width: auto !important;
  padding: .4rem .65rem !important;
  font-size: .82rem;
  background: #176b8a !important;
}
@media (max-width: 650px) {
  .reassignment-preview-grid { grid-template-columns: 1fr; }
  .credential-preview-wide { grid-column: span 1; }
  .credential-copy-button { width: 100% !important; }
}


/* v1.0.53: actualización de contraseñas desde la ficha del cliente */
.account-password-editor {
  margin-top: 14px;
  border: 1px solid #dbe4ea;
  border-radius: 12px;
  background: #f8fbfc;
  padding: 10px 12px;
}
.account-password-editor summary { cursor: pointer; font-weight: 700; }
.account-password-form { margin-top: 12px; }
.password-update-row { display: grid; grid-template-columns: minmax(180px, 1fr) auto; gap: 8px; align-items: center; }
.password-update-row input { width: 100%; }
@media (max-width: 680px) {
  .password-update-row { grid-template-columns: 1fr; }
}


/* v1.0.54 · Venta de cuenta completa */
.sale-scope-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  margin: 12px 0;
}
.sale-scope-card {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 16px;
  border: 2px solid #d9e2ec;
  border-radius: 14px;
  cursor: pointer;
  background: #fff;
}
.sale-scope-card input { width: auto; margin: 0 0 4px; }
.sale-scope-card.selected {
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}
.sale-scope-card small { color: #64748b; }
.notice-box {
  padding: 12px 14px;
  border-radius: 12px;
  background: #fff7ed;
  border: 1px solid #fed7aa;
  color: #9a3412;
}


/* v1.0.57 */
.customer-phone-editor{margin:1rem 0;padding:.8rem 1rem;border:1px solid #d7e1e8;border-radius:12px;background:#fff}.customer-phone-editor summary{cursor:pointer;font-weight:700}.customer-phone-form{margin-top:.8rem;align-items:end}.customer-phone-form label{display:grid;gap:.3rem;min-width:210px}.expiration-credentials{min-width:245px}.credential-copy-row{display:flex;align-items:center;gap:.35rem;margin-bottom:.35rem}.credential-copy-row span{overflow-wrap:anywhere}.button.tiny{padding:.22rem .45rem;font-size:.72rem}


/* v1.0.61 — cuentas completas agrupadas en la ficha del cliente */
.complete-account-card {
  grid-column: 1 / -1;
  border: 2px solid #0aa7a7;
  border-radius: 16px;
  background: linear-gradient(135deg, #eefcf8, #f5fbff);
  padding: 18px;
  box-shadow: 0 8px 24px rgba(9, 105, 120, .10);
}
.complete-account-header {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 12px;
}
.complete-account-header h3 { margin: 5px 0; font-size: 1.35rem; }
.complete-account-header p { margin: 0; }
.complete-account-badge,
.complete-account-status {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 5px 10px;
  font-weight: 700;
  font-size: .82rem;
}
.complete-account-badge { background: #d9f7f1; color: #075e61; }
.complete-account-status { background: #daf5df; color: #17662b; }
.complete-account-data {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 6px 14px;
  margin: 12px 0;
}
.complete-account-data dt { color: #50616c; }
.complete-account-data dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.complete-account-profiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 8px;
  list-style: none;
  padding: 0;
  margin: 14px 0;
}
.complete-account-profiles li {
  background: #fff;
  border: 1px solid #cfe5e5;
  border-radius: 10px;
  padding: 10px 12px;
}
.complete-account-profiles li span { display: block; color: #52636c; margin-top: 3px; font-size: .88rem; }
.complete-account-details { margin-top: 12px; }
.complete-account-details > summary {
  cursor: pointer;
  font-weight: 700;
  background: #edf4f6;
  border: 1px solid #d4e0e4;
  border-radius: 9px;
  padding: 10px 12px;
}
.complete-account-profile-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 12px;
  margin-top: 12px;
}
.complete-account-profile-cards .service-card { min-width: 0; }
@media (max-width: 700px) {
  .complete-account-header { flex-direction: column; }
  .complete-account-data { grid-template-columns: 1fr; }
  .complete-account-data dt { margin-top: 5px; }
}


/* v1.0.62 — datos internos del proveedor y cobros agrupados */
.provider-internal-details { margin-top: 4px; }
.provider-internal-details > summary { cursor: pointer; font-weight: 700; color: #075e61; }
.provider-internal-grid { display: grid; grid-template-columns: minmax(120px, .7fr) minmax(180px, 1.6fr); gap: 7px 12px; margin-top: 10px; padding: 12px; background: #f5fbfc; border: 1px solid #cfe5e9; border-radius: 10px; }
.provider-internal-grid span { color: #52636c; }
.provider-internal-grid b { overflow-wrap: anywhere; }
.provider-secret { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.provider-copy-buttons { margin-top: 8px; flex-wrap: wrap; }
.complete-account-provider { margin: 10px 0 12px; }
.grouped-renewals-panel { border-left: 5px solid #e0a500; }
.renewal-group-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); gap: 16px; }
.renewal-group-card { border: 1px solid #efd27a; background: #fffdf3; border-radius: 14px; padding: 16px; box-shadow: 0 4px 14px rgba(31, 55, 68, .07); }
.renewal-group-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.renewal-group-header h3 { margin: 7px 0 0; }
.renewal-group-badge, .renewal-group-status { display: inline-block; padding: 5px 9px; border-radius: 999px; font-size: .82rem; font-weight: 800; }
.renewal-group-badge { background: #fff0b8; color: #725100; }
.renewal-group-status { background: #ffe8b6; color: #7a5100; }
.renewal-group-status.paid { background: #d8f3df; color: #17662b; }
.renewal-group-accesses { list-style: none; padding: 0; margin: 14px 0; display: grid; gap: 7px; }
.renewal-group-accesses li { display: flex; justify-content: space-between; gap: 12px; padding: 9px 10px; background: #fff; border: 1px solid #eee1b6; border-radius: 9px; }
.renewal-group-totals { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 14px; }
.renewal-group-totals div { padding: 10px; background: #fff8dc; border-radius: 9px; }
.renewal-group-totals span, .renewal-group-totals b { display: block; }
.renewal-group-totals span { color: #6f6550; font-size: .82rem; }
.renewal-group-totals b { margin-top: 3px; }
.renewal-group-form { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.renewal-group-form label { display: grid; gap: 5px; font-weight: 700; }
.renewal-group-form .full-width { grid-column: 1 / -1; }
.renewal-group-form textarea { resize: vertical; }
@media (max-width: 720px) {
  .provider-internal-grid, .renewal-group-form, .renewal-group-totals { grid-template-columns: 1fr; }
  .renewal-group-form .full-width { grid-column: auto; }
  .renewal-group-header { flex-direction: column; }
}

/* v1.0.63 - ficha profesional y portal de solo consulta */
.customer-hero-professional {
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr);
  align-items: start;
}

.customer-profile-main,
.customer-summary-panel,
.customer-actions-panel {
  min-width: 0;
}

.customer-heading h1 {
  margin-bottom: .45rem;
}

.customer-contact-list {
  display: grid;
  gap: .28rem;
  font-size: .92rem;
}

.customer-editors {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
  margin-top: 1rem;
}

.customer-hero-professional .customer-phone-editor {
  margin: 0;
  padding: .72rem .85rem;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 12px;
  background: rgba(255,255,255,.10);
}

.customer-summary-panel,
.customer-actions-panel {
  padding: 1rem;
  border-radius: 14px;
  background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.16);
}

.customer-summary-panel h2,
.customer-actions-panel h2 {
  margin: 0 0 .7rem;
  font-size: 1rem;
}

.customer-hero-professional .customer-mini-stats {
  grid-template-columns: 1fr;
}

.customer-actions-panel {
  grid-column: 2;
}

.customer-actions-panel .customer-quick-actions {
  display: grid;
  grid-template-columns: 1fr;
}

.customer-empty-note {
  margin: .75rem 0 0;
  padding: .7rem .8rem;
  border-radius: 10px;
  background: rgba(255,255,255,.12);
  font-size: .88rem;
}

.customer-hero-professional .customer-portal-box {
  grid-template-columns: minmax(0, 1fr) auto auto;
  padding: 1rem;
}

.customer-portal-info {
  min-width: 0;
}

.customer-portal-info > b {
  display: block;
  margin: .25rem 0;
  overflow-wrap: anywhere;
}

.customer-portal-info p {
  margin: .25rem 0 0;
  font-size: .82rem;
  opacity: .86;
}

.customer-portal-code {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  min-width: 125px;
  padding: .65rem .8rem;
  border-radius: 10px;
  background: rgba(255,255,255,.13);
}

.customer-portal-code span {
  font-size: .74rem;
  opacity: .82;
}

.customer-portal-code strong {
  font-size: 1.08rem;
  letter-spacing: .04em;
}

@media (max-width: 900px) {
  .customer-hero-professional {
    grid-template-columns: 1fr;
  }
  .customer-actions-panel {
    grid-column: 1;
  }
  .customer-hero-professional .customer-portal-box {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 620px) {
  .customer-editors {
    grid-template-columns: 1fr;
  }
}

/* v1.0.64: venta de combos y vencimiento protegido */
.combo-data-group { border-left: 5px solid #7c3aed; }
.combo-access-list { display: grid; gap: 12px; width: 100%; margin-bottom: 12px; }
.combo-access-row {
  display: grid;
  grid-template-columns: minmax(280px, 2fr) minmax(170px, 1fr) minmax(100px, .65fr) minmax(120px, .7fr) auto;
  gap: 10px;
  align-items: end;
  padding: 12px;
  border: 1px solid #d8dfe6;
  border-radius: 12px;
  background: #f8fafc;
}
.combo-access-row label { margin: 0; }
.combo-remove-button {
  min-width: 42px;
  height: 42px;
  border: 0;
  border-radius: 10px;
  background: #fee2e2;
  color: #991b1b;
  font-weight: 800;
  cursor: pointer;
}
.combo-remove-button:hover { background: #fecaca; }
@media (max-width: 980px) {
  .combo-access-row { grid-template-columns: 1fr 1fr; }
  .combo-slot-field { grid-column: 1 / -1; }
}
@media (max-width: 620px) {
  .combo-access-row { grid-template-columns: 1fr; }
  .combo-slot-field { grid-column: auto; }
}


/* v1.0.65 — combos para clientes existentes y vencimientos plegables */
.additional-combo-section {
  border: 1px solid #cbd5e1;
  border-radius: 14px;
  padding: 16px;
  background: #f8fafc;
}
.additional-combo-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}
.additional-combo-heading h3 { margin: 0 0 4px; }
.additional-combo-row {
  display: grid;
  grid-template-columns: minmax(260px, 2fr) repeat(3, minmax(140px, 1fr)) auto;
  gap: 10px;
  align-items: end;
  padding: 12px;
  margin-top: 10px;
  background: #fff;
  border: 1px solid #dbe5ee;
  border-radius: 12px;
}
.combo-remove-button {
  border: 0;
  border-radius: 9px;
  padding: 11px 13px;
  background: #fee2e2;
  color: #991b1b;
  font-weight: 700;
  cursor: pointer;
}
.expiration-collapsible-groups {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}
.expiration-collapsible {
  border: 1px solid #dbe5ee;
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}
.expiration-collapsible summary {
  list-style: none;
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  align-items: center;
  gap: 10px;
  padding: 13px 15px;
  cursor: pointer;
  user-select: none;
}
.expiration-collapsible summary::-webkit-details-marker { display: none; }
.expiration-collapsible summary strong {
  min-width: 34px;
  text-align: center;
  border-radius: 999px;
  padding: 4px 9px;
  background: rgba(255,255,255,.75);
}
.expiration-collapsible summary small { color: #475569; }
.expiration-collapsible.expired summary { background: #fee2e2; }
.expiration-collapsible.today summary { background: #fef3c7; }
.expiration-collapsible.tomorrow summary { background: #ffedd5; }
.expiration-collapsible.future summary { background: #dcfce7; }
.expiration-collapse-arrow { transition: transform .18s ease; }
.expiration-collapsible[open] .expiration-collapse-arrow { transform: rotate(90deg); }
.expiration-collapsible .expiration-attention-list { margin: 0; padding: 8px; }
.expiration-empty-group { padding: 16px; color: #64748b; text-align: center; }
@media (max-width: 900px) {
  .additional-combo-row { grid-template-columns: 1fr 1fr; }
  .additional-combo-row .combo-remove-button { grid-column: 1 / -1; }
  .additional-combo-heading { align-items: flex-start; flex-direction: column; }
  .expiration-collapsible summary { grid-template-columns: auto 1fr auto; }
  .expiration-collapsible summary small { display: none; }
}

/* v1.0.66 - navegación activa, iconografía SVG y permisos de incidencias */
.side-nav{display:grid;gap:5px;margin-top:20px}
.side-nav .nav-link,.side-nav .nav-button{
  display:flex;align-items:center;gap:11px;width:100%;min-height:44px;
  padding:10px 12px;border-radius:10px;text-decoration:none;color:#34434d;
  background:transparent;border:1px solid transparent;font-weight:700;
  transition:background .16s ease,color .16s ease,border-color .16s ease,transform .16s ease;
}
.side-nav .nav-link:hover,.side-nav .nav-button:hover{
  background:#edf9fb;color:#057784;border-color:#cfecef;transform:translateX(2px);
}
.side-nav .nav-link.active{
  background:linear-gradient(135deg,#dff8fb,#eefbfd);color:#047483;
  border-color:#9edfe6;box-shadow:inset 4px 0 0 var(--turq),0 3px 10px rgba(8,174,191,.09);
}
.side-nav .nav-link.active .nav-icon{stroke-width:2.25}
.nav-icon{width:20px;height:20px;flex:0 0 20px;color:currentColor}
.side-nav form{margin:0}
.side-nav .nav-button{font-family:inherit;font-size:inherit;cursor:pointer;text-align:left}

/* v1.0.67 - iconos de navegación a color y modo independiente predeterminado */
.side-nav .nav-link,.side-nav .nav-button{
  --nav-accent:#0f766e;
  --nav-soft:#e6fffb;
}
.nav-icon-badge{
  width:30px;height:30px;flex:0 0 30px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:9px;color:var(--nav-accent);background:var(--nav-soft);
  box-shadow:inset 0 0 0 1px rgba(15,23,42,.08);
  transition:transform .16s ease,box-shadow .16s ease,background .16s ease;
}
.nav-icon-badge .nav-icon{width:18px;height:18px;flex-basis:18px;color:inherit}
.side-nav .nav-link:hover .nav-icon-badge,.side-nav .nav-button:hover .nav-icon-badge{
  transform:scale(1.06);box-shadow:inset 0 0 0 1px rgba(15,23,42,.14),0 3px 8px rgba(15,23,42,.10);
}
.side-nav .nav-link.active .nav-icon-badge{
  color:#fff;background:var(--nav-accent);box-shadow:0 4px 10px rgba(15,23,42,.16);
}
.nav-key-dashboard{--nav-accent:#0891b2!important;--nav-soft:#cffafe!important}
.nav-key-daily_applications{--nav-accent:#2563eb!important;--nav-soft:#dbeafe!important}
.nav-key-contingency{--nav-accent:#0d9488!important;--nav-soft:#ccfbf1!important}
.nav-key-customers{--nav-accent:#2563eb!important;--nav-soft:#dbeafe!important}
.nav-key-new_receipt{--nav-accent:#16a34a!important;--nav-soft:#dcfce7!important}
.nav-key-sell{--nav-accent:#ea580c!important;--nav-soft:#ffedd5!important}
.nav-key-receipts{--nav-accent:#7c3aed!important;--nav-soft:#ede9fe!important}
.nav-key-inventory{--nav-accent:#0369a1!important;--nav-soft:#e0f2fe!important}
.nav-key-incidents{--nav-accent:#dc2626!important;--nav-soft:#fee2e2!important}
.nav-key-cleanup{--nav-accent:#d97706!important;--nav-soft:#fef3c7!important}
.nav-key-alerts{--nav-accent:#e11d48!important;--nav-soft:#ffe4e6!important}
.nav-key-provider_renewals{--nav-accent:#059669!important;--nav-soft:#d1fae5!important}
.nav-key-cancelled_accounts{--nav-accent:#64748b!important;--nav-soft:#e2e8f0!important}
.nav-key-service_catalog{--nav-accent:#475569!important;--nav-soft:#e2e8f0!important}
.nav-key-portal_settings{--nav-accent:#16a34a!important;--nav-soft:#dcfce7!important}
.nav-key-batch_upload{--nav-accent:#0284c7!important;--nav-soft:#e0f2fe!important}
.nav-key-staff{--nav-accent:#9333ea!important;--nav-soft:#f3e8ff!important}
.nav-key-financial{--nav-accent:#0f766e!important;--nav-soft:#ccfbf1!important}
.nav-key-reconciliations{--nav-accent:#4f46e5!important;--nav-soft:#e0e7ff!important}
.nav-key-users{--nav-accent:#7e22ce!important;--nav-soft:#f3e8ff!important}
.nav-key-receiver_accounts{--nav-accent:#ca8a04!important;--nav-soft:#fef9c3!important}
.nav-key-audit{--nav-accent:#15803d!important;--nav-soft:#dcfce7!important}
.nav-key-backups{--nav-accent:#334155!important;--nav-soft:#e2e8f0!important}
.nav-key-server{--nav-accent:#0369a1!important;--nav-soft:#e0f2fe!important}
.nav-key-diagnostics{--nav-accent:#c2410c!important;--nav-soft:#ffedd5!important}
.nav-key-ocr{--nav-accent:#0f766e!important;--nav-soft:#ccfbf1!important}
.nav-key-create_backup{--nav-accent:#475569!important;--nav-soft:#e2e8f0!important}
.nav-key-logout{--nav-accent:#dc2626!important;--nav-soft:#fee2e2!important}

/* v1.0.69: edición administrativa de precios en cobros agrupados */
.renewal-item-price {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: 800;
  white-space: nowrap;
}
.renewal-item-price span { color: #17212b; }
.renewal-item-price input {
  width: 105px;
  min-width: 88px;
  padding: 7px 8px;
  text-align: right;
  font-weight: 800;
}
@media (max-width: 620px) {
  .renewal-group-accesses li { align-items: center; }
  .renewal-item-price input { width: 92px; }
}
.renewal-group-form > .renewal-group-accesses,
.renewal-group-form > .renewal-group-totals {
  grid-column: 1 / -1;
  width: 100%;
}


/* v1.0.70: identificación visual de accesos anteriores pendientes de limpieza */
.service-card.previous-access-card {
  border: 2px solid #dc2626;
  border-left: 8px solid #b91c1c;
  border-top-color: #dc2626;
  background: linear-gradient(180deg, #fff1f2 0%, #fff7f7 100%);
  box-shadow: 0 8px 20px rgba(185, 28, 28, .10);
}
.service-card.previous-access-card h3 { color: #991b1b; }
.previous-access-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: -2px 0 14px;
  padding: 10px 12px;
  border: 1px solid #fca5a5;
  border-radius: 10px;
  background: #fee2e2;
  color: #7f1d1d;
}
.previous-access-banner strong,
.previous-access-banner span { display: block; }
.previous-access-banner strong { font-size: 1rem; }
.previous-access-banner span { margin-top: 2px; font-size: .86rem; font-weight: 700; }
.previous-access-icon { font-size: 1.35rem; line-height: 1; }
.service-card.previous-access-card .cleanup-warning {
  border: 1px solid #f87171;
  background: #fff;
}
@media (max-width: 620px) {
  .previous-access-banner { align-items: flex-start; }
}

/* v1.0.72 — Inventario por bloques y descargas */
.inventory-platform-panel { margin-bottom: 1rem; }
.inventory-platform-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: .8rem;
  margin-top: 1rem;
}
.inventory-platform-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: .8rem;
  padding: 1rem;
  border: 1px solid #d9e5e8;
  border-radius: 14px;
  background: #fff;
}
.inventory-platform-card.selected {
  border: 2px solid #08aebf;
  background: #eefbfc;
  box-shadow: 0 6px 18px rgba(8, 174, 191, .12);
}
.inventory-platform-card-main { color: inherit; text-decoration: none; display: grid; gap: .3rem; }
.inventory-platform-card-main h3 { margin: 0; color: #16324f; }
.inventory-platform-card-main strong { color: #078d9b; font-size: 1.2rem; }
.inventory-platform-card-main span { color: #65757b; }
.inventory-platform-download { text-align: center; }
.inventory-download-all { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #dfe8ea; }
.inventory-selected-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  margin: 1rem 0 .75rem;
  padding: .85rem 1rem;
  border-left: 5px solid #08aebf;
  border-radius: 10px;
  background: #f4fbfc;
}
.inventory-selected-heading span { color: #65757b; font-size: .88rem; }
.inventory-selected-heading h2 { margin: .1rem 0 0; }
@media (max-width: 650px) {
  .inventory-download-all { flex-direction: column; }
  .inventory-download-all .button-link { text-align: center; }
}


/* v1.0.73 · Alertas de cuentas sin suscripción */
.nav-warning { position: relative; }
.nav-warning-badge {
  margin-left: auto; display: inline-flex; align-items: center; gap: .2rem;
  padding: .18rem .42rem; border-radius: 999px; background: #fff3bf;
  color: #8a5b00; border: 1px solid #f1c84b; font-size: .72rem; font-weight: 800;
}
.inventory-subscription-alert {
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 1rem;
  margin: 1rem 0; padding: 1rem 1.15rem; border: 2px solid #dc3545;
  border-radius: 16px; background: #fff1f2; box-shadow: 0 8px 24px rgba(220,53,69,.10);
}
.inventory-subscription-alert-icon {
  width: 48px; height: 48px; display: grid; place-items: center; border-radius: 14px;
  background: #ffe08a; color: #7a4d00; font-size: 1.5rem; border: 1px solid #f1c84b;
}
.inventory-subscription-alert h2 { margin: 0 0 .25rem; color: #a51d2d; }
.inventory-subscription-alert p { margin: 0; color: #6f2630; }
.danger-link { background: #c6283a !important; border-color: #c6283a !important; color: #fff !important; }
@media (max-width: 760px) {
  .inventory-subscription-alert { grid-template-columns: auto 1fr; }
  .inventory-subscription-alert .button-link { grid-column: 1 / -1; text-align: center; }
}


/* v1.0.74 · reasignaciones pendientes y nueva identidad */
.dashboard-reassignment-alert{display:flex;align-items:center;gap:1rem;margin:1rem 0;padding:1rem 1.1rem;border:1px solid #ef9a9a;border-left:7px solid #c62828;border-radius:14px;background:#fff0f0;color:#6b1515;text-decoration:none;box-shadow:0 6px 18px rgba(160,20,20,.08)}
.dashboard-reassignment-alert:hover{background:#ffe7e7;transform:translateY(-1px)}
.dashboard-reassignment-alert div{display:flex;flex-direction:column;gap:.2rem;flex:1}.dashboard-reassignment-alert small{color:#7d3535}.dashboard-reassignment-icon{font-size:1.8rem}.dashboard-reassignment-alert>strong{white-space:nowrap}
.reassignment-panel{border-top:5px solid #d32f2f}.reassignment-total{padding:.45rem .75rem;border-radius:999px;background:#ffe1e1;color:#9d2020}.reassignment-list{display:grid;gap:1rem;margin-top:1rem}.reassignment-customer-card{border:1px solid #efb4b4;border-left:7px solid #d32f2f;border-radius:14px;background:#fff7f7;padding:1rem}.reassignment-card-main{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.reassignment-card-main h3{margin:.35rem 0 .2rem}.reassignment-card-main p{margin:0;color:#6c5555}.reassignment-status-badge{display:inline-flex;padding:.25rem .55rem;border-radius:999px;background:#d32f2f;color:#fff;font-size:.78rem;font-weight:800}.reassignment-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.65rem;margin:1rem 0 0}.reassignment-details div{background:#fff;border:1px solid #f1d1d1;border-radius:10px;padding:.65rem}.reassignment-details dt{font-size:.78rem;color:#876565}.reassignment-details dd{margin:.2rem 0 0;font-weight:700;overflow-wrap:anywhere}.reassignment-empty{padding:1rem;border-radius:12px;background:#edf9f2;color:#216b42}
@media(max-width:720px){.dashboard-reassignment-alert,.reassignment-card-main{align-items:flex-start;flex-direction:column}.dashboard-reassignment-alert>strong{white-space:normal}}


/* v1.0.74 corregida: versión visible y reasignaciones siempre accesibles */
.brand-version { display:block; margin-top:4px; font-size:.72rem; opacity:.78; }
.login-version { display:block; margin:-6px 0 14px; font-size:.78rem; color:#64748b; }
.dashboard-quick-links a.danger-link { background:#fee2e2; border-color:#ef4444; color:#991b1b; }
.dashboard-reassignment-alert.is-empty { background:#fff7ed; border-color:#f59e0b; color:#7c2d12; }


/* v1.0.75 · estado operativo y motivo de incidencia visibles por separado */
.account-status-stack{display:flex;flex-direction:column;align-items:flex-start;gap:5px;margin-top:5px}
.account-status-stack-detail{align-items:flex-end;margin-top:0}
.account-state-pill{background:#e8f2f4;color:#24434a}
.account-reason-pill{background:#fff3cd;color:#8a5a00;border:1px solid #f0c36a;white-space:normal;line-height:1.2}
.account-inventory-row .account-reason-pill{max-width:260px}
@media(max-width:700px){.account-status-stack-detail{align-items:flex-start}}


/* v1.0.76 · alerta de cuentas con error de contraseña */
.inventory-password-alert{border-color:#b91c1c;background:#fff5f5}
.inventory-password-alert .inventory-subscription-alert-icon{background:#fee2e2;color:#991b1b;border-color:#fecaca}
.inventory-password-alert h2{color:#991b1b}
.inventory-password-alert p{color:#7f1d1d}


/* v1.0.80 - PIN y datos completos de cada perfil en inventario */
.slot-card-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.slot-card-heading h3 {
  margin: 0;
}

.slot-detail-list {
  display: grid;
  gap: 9px;
  margin: 0;
}

.slot-detail-list > div {
  display: grid;
  grid-template-columns: minmax(105px, 0.8fr) minmax(0, 1.2fr);
  gap: 10px;
  align-items: start;
  padding-top: 8px;
  border-top: 1px solid rgba(148, 163, 184, 0.22);
}

.slot-detail-list dt {
  color: var(--muted, #64748b);
  font-size: 0.78rem;
  font-weight: 700;
}

.slot-detail-list dd {
  margin: 0;
  overflow-wrap: anywhere;
  font-weight: 650;
}

.slot-pin-value {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  letter-spacing: 0.08em;
}

.slot-availability-note {
  margin: 12px 0 0;
}

@media (max-width: 560px) {
  .slot-detail-list > div {
    grid-template-columns: 1fr;
    gap: 3px;
  }
}

/* v1.0.81 - Detalle completo de cuentas y clientes en inventario */
.account-complete-detail {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.account-complete-detail .full-width,
.slot-complete-detail .full-width {
  grid-column: 1 / -1;
}
.slot-complete-detail {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
  gap: 10px;
}
.slot-complete-detail > div {
  min-width: 0;
}
.slot-complete-detail dd,
.account-complete-detail b {
  overflow-wrap: anywhere;
}

/* v1.0.82: edición de cuenta contraída por defecto */
.account-edit-collapsible {
  padding: 0;
  overflow: hidden;
}

.account-edit-details {
  width: 100%;
}

.account-edit-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.1rem 1.25rem;
  cursor: pointer;
  list-style: none;
  user-select: none;
}

.account-edit-summary::-webkit-details-marker {
  display: none;
}

.account-edit-summary::after {
  content: "▾";
  font-size: 1.35rem;
  line-height: 1;
  transition: transform .2s ease;
}

.account-edit-details[open] > .account-edit-summary::after {
  transform: rotate(180deg);
}

.account-edit-summary-title {
  font-size: 1.1rem;
  font-weight: 700;
}

.account-edit-summary-help {
  color: var(--muted, #667085);
  font-size: .9rem;
  text-align: right;
}

.account-edit-content {
  padding: 0 1.25rem 1.25rem;
  border-top: 1px solid rgba(148, 163, 184, .25);
}

@media (max-width: 720px) {
  .account-edit-summary {
    align-items: flex-start;
  }

  .account-edit-summary-help {
    display: none;
  }
}



/* v1.0.83 — Copia de credenciales y nota de proveedor */
.account-inventory-row:has(.account-provider-tools) {
  grid-template-columns: minmax(0, 1fr) minmax(280px, .65fr) auto;
}
.account-provider-tools {
  display: grid;
  gap: .55rem;
  min-width: 280px;
  padding: .7rem;
  border: 1px solid #d7e4e8;
  border-radius: 10px;
  background: #f8fbfc;
}
.copy-account-button { width: 100%; }
.account-provider-note-form { display: grid; gap: .35rem; }
.account-provider-note-form label { font-size: .82rem; font-weight: 800; }
.account-provider-note-form textarea {
  width: 100%;
  min-height: 58px;
  resize: vertical;
  border: 1px solid #b9cdd2;
  border-radius: 8px;
  padding: .55rem;
  font: inherit;
}
.account-provider-note-form button { width: 100%; }
.account-provider-note-readonly {
  padding: .55rem;
  border-radius: 8px;
  background: #fff7d6;
  overflow-wrap: anywhere;
}
@media (max-width: 1100px) {
  .account-inventory-row:has(.account-provider-tools) { grid-template-columns: 1fr; }
  .account-provider-tools { min-width: 0; }
}


/* v1.0.85 - Renovación directa desde cada acceso del cliente */
.access-renew-editor {
  margin-top: 14px;
  border: 1px solid rgba(59, 130, 246, .28);
  border-radius: 12px;
  background: rgba(59, 130, 246, .06);
  overflow: hidden;
}
.access-renew-editor > summary {
  cursor: pointer;
  padding: 12px 14px;
  font-weight: 800;
  list-style: none;
}
.access-renew-editor > summary::-webkit-details-marker { display: none; }
.access-renew-editor > summary::after {
  content: '▾';
  float: right;
  transition: transform .2s ease;
}
.access-renew-editor[open] > summary::after { transform: rotate(180deg); }
.access-renew-form {
  display: grid;
  gap: 12px;
  padding: 0 14px 14px;
}
.access-renew-summary {
  display: grid;
  gap: 5px;
  padding: 10px;
  border-radius: 10px;
  background: var(--surface, #fff);
}
.access-renew-form label, .renewal-custom-days label {
  display: grid;
  gap: 6px;
  font-weight: 700;
}
.access-renew-form input[type='number'], .renewal-custom-days input[type='number'] {
  width: 100%;
  max-width: 180px;
}
.renewal-custom-days {
  align-items: end;
  flex-wrap: wrap;
}


/* v1.0.86 - Renovación masiva y selectiva en accesos agrupados */
.group-renew-editor {
  margin-top: 14px;
  border: 1px solid rgba(16, 185, 129, .3);
  border-radius: 12px;
  background: rgba(16, 185, 129, .07);
  overflow: hidden;
}
.group-renew-editor > summary {
  cursor: pointer;
  padding: 12px 14px;
  font-weight: 800;
  list-style: none;
}
.group-renew-editor > summary::-webkit-details-marker { display: none; }
.group-renew-editor > summary::after {
  content: '▾';
  float: right;
  transition: transform .2s ease;
}
.group-renew-editor[open] > summary::after { transform: rotate(180deg); }
.group-renew-form {
  display: grid;
  gap: 12px;
  padding: 0 14px 14px;
}
.group-renew-toolbar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.group-renew-toolbar button { width: auto; }
.group-renew-options {
  display: grid;
  gap: 8px;
}
.group-renew-option {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 10px;
  border: 1px solid rgba(15, 23, 42, .12);
  border-radius: 10px;
  background: var(--surface, #fff);
  cursor: pointer;
}
.group-renew-option input { margin-top: 4px; }
.group-renew-option span { display: grid; gap: 3px; }
.group-renew-option small { color: var(--muted, #64748b); }
.group-renew-days {
  display: grid;
  gap: 6px;
  font-weight: 700;
}
.group-renew-days input { max-width: 180px; }
.renew-all-group-button {
  background: #047857;
}
@media (max-width: 640px) {
  .group-renew-toolbar { display: grid; grid-template-columns: 1fr 1fr; }
  .group-renew-toolbar button { width: 100%; }
}


/* v1.0.87 - Buscador interno dentro de la ficha del cliente */
.customer-record-search {
  position: sticky;
  top: 10px;
  z-index: 25;
  display: grid;
  gap: 12px;
  border: 1px solid rgba(37, 99, 235, .25);
  background: var(--surface, #fff);
  box-shadow: 0 10px 30px rgba(15, 23, 42, .08);
}
.customer-record-search-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}
.customer-record-search-heading h2 { margin: 2px 0 4px; }
.customer-record-search-controls {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) auto auto auto;
  gap: 8px;
}
.customer-record-search-controls input[type='search'] { width: 100%; min-height: 44px; }
.customer-record-search-status {
  margin: 0;
  min-height: 1.2em;
  font-weight: 700;
  color: var(--muted, #64748b);
}
.customer-record-search-mark {
  padding: 1px 3px;
  border-radius: 4px;
  background: #fde68a;
  color: #422006;
  box-shadow: 0 0 0 1px rgba(180, 83, 9, .18);
}
.customer-record-search-mark.is-current {
  background: #fb923c;
  color: #1f1300;
  box-shadow: 0 0 0 3px rgba(249, 115, 22, .28);
}
@media (max-width: 780px) {
  .customer-record-search { position: static; }
  .customer-record-search-heading { display: grid; }
  .customer-record-search-controls { grid-template-columns: 1fr 1fr; }
  .customer-record-search-controls input[type='search'] { grid-column: 1 / -1; }
  #customer-record-search-button { grid-column: 1 / -1; }
}


/* v1.0.88 - Edición de nombre del acceso y PIN por administradores y asesores */
.access-profile-editor {
  margin-top: 14px;
  border: 1px solid #cfdce6;
  border-radius: 10px;
  background: #f7fbfe;
}
.access-profile-editor summary {
  cursor: pointer;
  padding: 10px 12px;
  font-weight: 700;
}
.access-profile-edit-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(180px, .55fr);
  gap: 12px;
  padding: 0 12px 12px;
}
.access-profile-edit-form .small-muted,
.access-profile-edit-form button {
  grid-column: 1 / -1;
}
.access-profile-edit-form label {
  display: grid;
  gap: 6px;
  font-weight: 700;
}
.access-profile-edit-form input {
  width: 100%;
}
@media (max-width: 720px) {
  .access-profile-edit-form {
    grid-template-columns: 1fr;
  }
}


/* v1.0.90 - Accesos horizontales en la ficha del cliente */
.horizontal-access-grid {
  grid-template-columns: minmax(0, 1fr);
  align-items: stretch;
}
.horizontal-access-card {
  width: 100%;
  min-width: 0;
}
.horizontal-access-card > h3,
.horizontal-access-card > p,
.horizontal-access-card > .previous-access-banner,
.horizontal-access-card > .notice,
.horizontal-access-card > details,
.horizontal-access-card > .delivery-buttons,
.horizontal-access-card > .access-actions,
.horizontal-access-card > form {
  width: 100%;
}
.horizontal-access-card dl {
  grid-template-columns: minmax(105px, max-content) minmax(220px, 1fr) minmax(105px, max-content) minmax(220px, 1fr);
  column-gap: 16px;
  row-gap: 8px;
  align-items: start;
}
.horizontal-access-card dt {
  font-weight: 700;
}
.horizontal-access-card dd {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.horizontal-access-card details,
.horizontal-access-card form,
.horizontal-access-card input,
.horizontal-access-card select,
.horizontal-access-card textarea {
  min-width: 0;
}
@media (max-width: 980px) {
  .horizontal-access-card dl {
    grid-template-columns: minmax(100px, max-content) minmax(0, 1fr);
  }
}
@media (max-width: 640px) {
  .horizontal-access-card dl {
    grid-template-columns: 1fr;
    gap: 3px;
  }
  .horizontal-access-card dt {
    margin-top: 8px;
  }
}

/* v1.0.91 - Vista compacta de accesos en la ficha del cliente */
.current-access-section {
  padding: .8rem;
}
.current-access-section > h2 {
  margin: 0 0 .55rem;
}
.horizontal-access-grid {
  gap: .5rem;
  margin-top: .45rem;
}
.horizontal-access-card {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .3rem .45rem;
  padding: .58rem .7rem;
  border-radius: 11px;
}
.horizontal-access-card > h3 {
  grid-column: 1 / -1;
  margin: 0;
  font-size: 1rem;
  line-height: 1.2;
}
.horizontal-access-card > p {
  grid-column: 1 / -1;
  margin: 0 0 .1rem;
  font-size: .82rem;
  line-height: 1.2;
}
.horizontal-access-card > .previous-access-banner,
.horizontal-access-card > .notice,
.horizontal-access-card > .cleanup-warning,
.horizontal-access-card > form,
.horizontal-access-card > textarea {
  grid-column: 1 / -1;
}
.horizontal-access-card dl {
  grid-column: 1 / -1;
  grid-template-columns:
    max-content minmax(120px, 1fr)
    max-content minmax(120px, 1fr)
    max-content minmax(120px, 1fr);
  column-gap: .45rem;
  row-gap: .16rem;
  margin: .18rem 0 .28rem;
  font-size: .79rem;
  line-height: 1.25;
}
.horizontal-access-card dt {
  font-size: .76rem;
  white-space: nowrap;
}
.horizontal-access-card dd {
  font-size: .79rem;
}
.horizontal-access-card > details {
  grid-column: auto;
  width: auto;
  margin: 0;
  border-radius: 7px;
}
.horizontal-access-card > details[open] {
  grid-column: 1 / -1;
}
.horizontal-access-card > details > summary {
  min-height: 30px;
  padding: .34rem .5rem;
  font-size: .78rem;
  line-height: 1.15;
  display: flex;
  align-items: center;
}
.horizontal-access-card > details[open] > summary {
  margin-bottom: .4rem;
}
.horizontal-access-card .access-profile-edit-form,
.horizontal-access-card .account-password-form,
.horizontal-access-card .access-renew-form,
.horizontal-access-card .admin-expiration-form {
  padding: .5rem;
  gap: .45rem;
}
.horizontal-access-card > .delivery-buttons {
  grid-column: 1 / 2;
  width: auto;
  margin: 0;
  gap: .35rem;
  align-items: center;
}
.horizontal-access-card > .delivery-buttons button {
  padding: .38rem .55rem;
  font-size: .75rem;
  min-height: 30px;
}
.horizontal-access-card > .access-action-menu {
  grid-column: 2 / 3;
}
.horizontal-access-card > .access-action-menu[open] {
  grid-column: 1 / -1;
}
.horizontal-access-card .provider-internal-details > summary {
  padding: 0;
  min-height: auto;
  font-size: .76rem;
}
.horizontal-access-card .provider-internal-grid {
  margin-top: .35rem;
}
@media (max-width: 1180px) {
  .horizontal-access-card dl {
    grid-template-columns:
      max-content minmax(0, 1fr)
      max-content minmax(0, 1fr);
  }
}
@media (max-width: 760px) {
  .horizontal-access-card {
    grid-template-columns: 1fr;
    padding: .55rem;
  }
  .horizontal-access-card dl {
    grid-template-columns: max-content minmax(0, 1fr);
  }
  .horizontal-access-card > details,
  .horizontal-access-card > .delivery-buttons,
  .horizontal-access-card > .access-action-menu {
    grid-column: 1 / -1;
  }
}


/* v1.0.92 - Ficha del cliente simplificada */
.customer-hero-professional {
  gap: .55rem;
  padding: .65rem;
}
.customer-hero-professional .customer-profile-main,
.customer-hero-professional .customer-summary-panel,
.customer-hero-professional .customer-actions-panel,
.customer-hero-professional .customer-portal-box {
  padding: .6rem .75rem;
  border-radius: 10px;
}
.customer-profile-main { gap: .5rem; }
.customer-identity { gap: .55rem; }
.customer-avatar { width: 38px; height: 38px; font-size: 1.15rem; }
.customer-heading h1 { margin: 0; font-size: 1.2rem; line-height: 1.1; }
.customer-name-line { display:flex; align-items:center; gap:.35rem; }
.customer-contact-list { display:flex; flex-wrap:wrap; gap:.25rem .8rem; font-size:.78rem; }
.customer-summary-panel h2, .customer-actions-panel h2 { margin:0 0 .3rem; font-size:.88rem; }
.customer-hero-professional .customer-mini-stats { gap:.35rem; }
.customer-hero-professional .customer-mini-stats > div { padding:.38rem .5rem; }
.customer-quick-actions { gap:.35rem; }
.customer-quick-actions button { padding:.38rem .55rem; min-height:30px; font-size:.76rem; }
.customer-portal-box { min-height:auto; }
.customer-portal-info p { margin:.15rem 0 0; font-size:.72rem; }
.customer-portal-info b { font-size:.75rem; overflow-wrap:anywhere; }
.customer-portal-code { padding:.35rem .5rem; }
.customer-portal-box .delivery-buttons button { padding:.36rem .5rem; font-size:.73rem; min-height:30px; }
.icon-edit-button {
  border:0; background:transparent; color:inherit; padding:.1rem .18rem; min-height:0;
  line-height:1; cursor:pointer; border-radius:5px; font-size:.82rem; box-shadow:none;
}
.icon-edit-button:hover, .icon-edit-button:focus-visible { background:rgba(8,174,191,.14); transform:none; }
.customer-name-edit-trigger { font-size:.9rem; }
.compact-icon-editor > summary, .compact-access-editor > summary {
  width:30px; min-height:28px; padding:.25rem; justify-content:center; font-size:.82rem;
  list-style:none; border-radius:7px;
}
.compact-icon-editor > summary::-webkit-details-marker,
.compact-access-editor > summary::-webkit-details-marker { display:none; }
.customer-name-editor.compact-icon-editor { position:absolute; right:.55rem; top:.55rem; margin:0; }
.customer-name-editor.compact-icon-editor:not([open]) { opacity:0; pointer-events:none; width:1px; height:1px; overflow:hidden; }
.customer-name-editor.compact-icon-editor[open] { position:relative; right:auto; top:auto; width:100%; opacity:1; pointer-events:auto; }
.customer-record-search-compact {
  position:sticky; top:10px; z-index:25; width:max-content; padding:.25rem; margin:.45rem 0;
  border-radius:999px; box-shadow:0 6px 18px rgba(15,23,42,.12);
}
.customer-record-search-compact[open] { width:auto; border-radius:12px; padding:.55rem; }
.customer-search-icon {
  display:flex; align-items:center; justify-content:center; width:34px; height:34px; cursor:pointer;
  list-style:none; border-radius:50%; font-size:1rem; background:#08aebf; color:#fff;
}
.customer-search-icon::-webkit-details-marker { display:none; }
.customer-record-search-compact[open] > .customer-search-icon { margin-bottom:.45rem; }
.customer-record-search-body { display:grid; gap:.45rem; min-width:min(720px, calc(100vw - 220px)); }
.customer-record-search-heading h2 { margin:0; font-size:.95rem; }
.customer-record-search-heading p { margin:.1rem 0 0; font-size:.72rem; }
.customer-record-search-controls input[type=search] { min-height:34px; }
.customer-record-search-controls button { min-height:34px; padding:.35rem .5rem; }
.customer-record-search-status { font-size:.72rem; min-height:1em; }
.editable-access-value { display:flex; align-items:center; gap:.25rem; min-width:0; }
.editable-access-value > span { min-width:0; overflow-wrap:anywhere; }
.horizontal-access-card > .compact-access-editor:not([open]) {
  position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; pointer-events:none;
}
.horizontal-access-card > .compact-access-editor[open] { grid-column:1 / -1; position:relative; width:auto; height:auto; opacity:1; pointer-events:auto; }
.visually-hidden { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
@media(max-width:760px){
  .customer-record-search-body { min-width:calc(100vw - 2rem); }
  .customer-hero-professional { padding:.45rem; }
  .customer-avatar { display:none; }
}

/* v1.0.93 — Información de contacto en accesos vencidos */
.expired-client-contact { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.expired-client-contact b { font-size: 1rem; }
.expired-client-phone { font-weight: 800; color: #17324d; }
.expired-client-contact small { width: 100%; color: #5b6b78; }
.expired-contact-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.expired-contact-actions form { margin: 0; }
.expired-whatsapp-button { white-space: nowrap; background: #157347; color: #fff; border-radius: 8px; padding: 10px 12px; font-weight: 700; text-decoration: none; }
.expired-whatsapp-button:hover { filter: brightness(.95); color: #fff; }
@media (max-width: 760px) {
  .expired-contact-actions { width: 100%; align-items: stretch; flex-direction: column; }
  .expired-whatsapp-button { text-align: center; }
}


/* v1.0.94 — Copiar teléfono en accesos vencidos */
.expired-copy-phone-button {
  white-space: nowrap;
  border: 1px solid #9eb6cc;
  background: #eef5fb;
  color: #17324d;
  border-radius: 8px;
  padding: 9px 11px;
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}
.expired-copy-phone-button:hover { background: #dfeef9; }
.expired-copy-phone-button.copied {
  border-color: #198754;
  background: #e7f7ee;
  color: #12663f;
}
@media (max-width: 760px) {
  .expired-copy-phone-button { width: 100%; text-align: center; }
}


/* v1.0.97 - Cuentas por proveedor y detalle visible para asesores */
.provider-account-groups { display: grid; gap: 1rem; }
.provider-group-panel { padding: 1rem; }
.provider-account-table { display: grid; gap: .75rem; }
.provider-account-row { border: 1px solid var(--border, #dbe3ee); border-radius: 12px; padding: .85rem; background: var(--panel, #fff); display: grid; gap: .75rem; }
.provider-account-summary { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .65rem; }
.provider-account-summary > div { background: rgba(20, 72, 120, .05); border-radius: 9px; padding: .55rem .65rem; min-width: 0; }
.provider-account-summary span { display: block; font-size: .76rem; color: var(--muted, #65758b); margin-bottom: .15rem; }
.provider-account-summary b { display: block; font-size: .9rem; }
.break-text { overflow-wrap: anywhere; word-break: break-word; }
.provider-account-actions { display: flex; gap: .75rem; align-items: end; justify-content: flex-end; flex-wrap: wrap; }
.provider-expiration-form { display: flex; gap: .55rem; align-items: end; flex-wrap: wrap; }
.provider-expiration-form label { margin: 0; min-width: 190px; }
@media (max-width: 1100px) { .provider-account-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 700px) { .provider-account-summary { grid-template-columns: 1fr; } .provider-account-actions, .provider-expiration-form { align-items: stretch; flex-direction: column; } .provider-expiration-form label { min-width: 0; } }


/* v1.0.100 - Edición puntual en Renovaciones y proveedores */
.inline-pencil-editor { position: relative; display: inline-block; }
.inline-pencil-editor > summary { cursor: pointer; list-style: none; font-size: 1.05rem; padding: .25rem .4rem; border-radius: .45rem; }
.inline-pencil-editor > summary::-webkit-details-marker { display: none; }
.inline-pencil-editor > summary:hover { background: rgba(59, 130, 246, .12); }
.inline-edit-form { position: absolute; right: 0; z-index: 30; width: min(320px, 80vw); padding: .85rem; background: var(--panel, #fff); border: 1px solid var(--border, #dbe3ef); border-radius: .75rem; box-shadow: 0 12px 30px rgba(15, 23, 42, .18); display: grid; gap: .65rem; text-align: left; }
.inline-edit-form label { display: grid; gap: .25rem; font-size: .85rem; font-weight: 600; }
.inline-edit-form input { width: 100%; }
@media (max-width: 720px) { .inline-edit-form { position: fixed; left: 5vw; right: 5vw; top: 20vh; width: 90vw; } }

/* v1.0.101 — venta automática, credenciales y acciones por iconos */
.action-icon-button{
  width:2.25rem;height:2.25rem;min-width:2.25rem;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:9px;font-weight:800;line-height:1;cursor:pointer;
}
.whatsapp-icon-button{background:#1fa855!important;color:#fff!important;border-color:#1fa855!important}
.whatsapp-glyph{font-size:1.05rem;line-height:1}
.credential-with-action{position:relative;padding-right:2.75rem!important}
.credential-with-action .action-icon-button{position:absolute;right:.45rem;top:50%;transform:translateY(-50%)}
.additional-sale-credentials{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.65rem}
.additional-sale-credentials>div{min-height:72px}
.copy-action{background:#edf7f8;color:#087985;border:1px solid #b9dde1}
@media(max-width:700px){
  .additional-sale-credentials{grid-template-columns:1fr}
  .action-icon-button{width:2.5rem;height:2.5rem}
}


/* v1.0.102 - Acciones compactas con iconos */
.action-icon-only {
  width: 2.25rem !important;
  min-width: 2.25rem !important;
  height: 2.25rem !important;
  min-height: 2.25rem !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 0 !important;
  border-radius: .55rem;
  line-height: 1;
}
.action-icon-only svg { width: 1.15rem; height: 1.15rem; fill: currentColor; }
.compact-inline-icon {
  display: inline-flex;
  width: 1.75rem !important;
  min-width: 1.75rem !important;
  height: 1.75rem !important;
  min-height: 1.75rem !important;
  margin-left: .3rem;
  padding: 0 !important;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  border-radius: .45rem;
}
.expired-client-phone { display: inline-flex; align-items: center; gap: .15rem; }
.expired-contact-actions { gap: .45rem; }
.expired-whatsapp-button.whatsapp-action-icon { color: #fff; background: #16864a; }
.copy-action-icon, .expired-copy-phone-button.compact-inline-icon { color: #17324d; }
.edit-action-icon { color: #17324d; }
.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
@media (max-width: 720px) {
  .expired-copy-phone-button.compact-inline-icon { width: 1.75rem !important; min-width: 1.75rem !important; }
}
/* v1.0.103: información del bot plegable en Vender otro acceso */
.additional-bot-details{
  grid-column:1/-1;
  border:1px solid #cbdde5;
  border-radius:10px;
  background:#f8fbfc;
  overflow:hidden;
}
.additional-bot-details>summary{
  cursor:pointer;
  font-weight:700;
  padding:.7rem .85rem;
  list-style:none;
}
.additional-bot-details>summary::-webkit-details-marker{display:none}
.additional-bot-details>summary::after{content:'▾';float:right;transition:transform .18s ease}
.additional-bot-details[open]>summary::after{transform:rotate(180deg)}
.additional-bot-details-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:.65rem;
  padding:0 .75rem .75rem;
}
.additional-bot-details-grid>div{
  min-height:68px;
  padding:.65rem .75rem;
  border:1px solid #dce8ed;
  border-radius:8px;
  background:#fff;
}
@media (max-width:700px){.additional-bot-details-grid{grid-template-columns:1fr}}



/* v1.0.104: contadores sin triángulo y filtros plegables de accesos */
.nav-count-badge{
  margin-left:auto;
  min-width:1.65rem;
  height:1.65rem;
  padding:0 .42rem;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#e6f4f7;
  color:#116476;
  font-size:.78rem;
  font-weight:800;
  line-height:1;
}
.customer-access-browser{border:0}
.customer-access-browser>summary{list-style:none}
.customer-access-browser>summary::-webkit-details-marker{display:none}
.customer-access-browser-summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  cursor:pointer;
  font-size:1.35rem;
  font-weight:800;
  padding:.15rem 0 .55rem;
}
.customer-access-browser-summary::after{content:'▾';margin-left:.35rem;transition:transform .18s ease}
.customer-access-browser[open]>.customer-access-browser-summary::after{transform:rotate(180deg)}
.customer-access-total{
  margin-left:auto;
  min-width:2rem;
  height:2rem;
  padding:0 .55rem;
  border-radius:999px;
  background:#e7f6f8;
  color:#106779;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:.85rem;
}
.customer-access-filter-panel{
  margin:.25rem 0 .75rem;
  border:1px solid #d7e5e9;
  border-radius:10px;
  background:#f8fbfc;
}
.customer-access-filter-panel>summary{
  cursor:pointer;
  list-style:none;
  padding:.65rem .8rem;
  font-weight:750;
}
.customer-access-filter-panel>summary::-webkit-details-marker{display:none}
.customer-access-filter-panel>summary::after{content:'▾';float:right;transition:transform .18s ease}
.customer-access-filter-panel[open]>summary::after{transform:rotate(180deg)}
.customer-access-filter-grid{
  padding:0 .8rem .75rem;
  display:grid;
  grid-template-columns:repeat(2,minmax(180px,1fr)) auto auto;
  align-items:end;
  gap:.65rem;
}
.customer-access-filter-grid label{display:grid;gap:.25rem;font-size:.82rem;font-weight:700}
.customer-access-filter-grid select{min-height:2.35rem}
.customer-access-group-toggle{display:flex!important;align-items:center;gap:.4rem;padding-bottom:.55rem;white-space:nowrap}
.customer-access-filter-status{margin:0;padding:0 .8rem .7rem;color:#60737a;font-size:.82rem}
.customer-access-date-heading{
  grid-column:1/-1;
  margin:.35rem 0 0;
  padding:.45rem .65rem;
  border-radius:8px;
  background:#eaf5f7;
  color:#155e6e;
  font-size:.95rem;
}
@media(max-width:900px){.customer-access-filter-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.customer-access-filter-grid{grid-template-columns:1fr}.customer-access-group-toggle{padding-bottom:0}}

/* v1.0.106 - Acciones explícitas para filtros de accesos */
.customer-access-filter-actions{
  display:flex;
  align-items:end;
  gap:.55rem;
  flex-wrap:wrap;
}
.customer-access-filter-actions button{min-height:2.35rem}
@media(max-width:620px){
  .customer-access-filter-actions{display:grid;grid-template-columns:1fr 1fr}
  .customer-access-filter-actions button{width:100%}
}


/* v1.0.108 · Credenciales completas en Pendientes de limpieza */
.cleanup-bot-details {
  margin-top: .75rem;
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 12px;
  background: rgba(248, 250, 252, .7);
}
.cleanup-bot-details > summary {
  cursor: pointer;
  padding: .7rem .85rem;
  font-weight: 700;
}
.cleanup-bot-details[open] > summary {
  border-bottom: 1px solid rgba(148, 163, 184, .25);
}
.cleanup-bot-details .cleanup-details {
  padding: .75rem;
}
.cleanup-details .credential-with-action {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .35rem .5rem;
}
.cleanup-details .credential-with-action > span {
  grid-column: 1 / -1;
}
.cleanup-details .credential-with-action > b {
  min-width: 0;
  overflow-wrap: anywhere;
}


/* v1.0.111 - Menú principal de cuentas sin suscripción (solo administradores) */
.dashboard-no-subscription-alert{display:flex;align-items:center;gap:1rem;margin:1rem 0;padding:1rem 1.1rem;border:1px solid #ef9a9a;border-left:7px solid #b91c1c;border-radius:14px;background:#fff1f2;color:#7f1d1d;text-decoration:none;box-shadow:0 6px 18px rgba(160,20,20,.08)}
.dashboard-no-subscription-alert:hover{background:#ffe4e6;transform:translateY(-1px)}
.dashboard-no-subscription-alert div{display:flex;flex-direction:column;gap:.2rem;flex:1}
.dashboard-no-subscription-alert small{color:#8f3b46}
.dashboard-no-subscription-icon{font-size:1.8rem}
.dashboard-no-subscription-alert>strong{white-space:nowrap}
.dashboard-no-subscription-alert.is-empty{background:#f8fafc;border-color:#cbd5e1;border-left-color:#94a3b8;color:#475569}
.dashboard-no-subscription-alert.is-empty small{color:#64748b}
@media(max-width:720px){.dashboard-no-subscription-alert{align-items:flex-start;flex-direction:column}.dashboard-no-subscription-alert>strong{white-space:normal}}


/* v1.0.112 - Panel administrativo de incidencias de cuentas */
.dashboard-account-incident-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:1rem 0}
.dashboard-account-incident-card{display:flex;align-items:center;gap:.9rem;padding:1rem;border:1px solid #d8b4fe;border-left:6px solid #7e22ce;border-radius:14px;background:#faf5ff;color:#581c87;text-decoration:none;box-shadow:0 6px 18px rgba(88,28,135,.07)}
.dashboard-account-incident-card:hover{transform:translateY(-1px);background:#f3e8ff}
.dashboard-account-incident-card div{display:flex;flex:1;flex-direction:column;gap:.2rem;min-width:0}
.dashboard-account-incident-card small{color:#6b3a86}.dashboard-account-incident-card>strong{white-space:nowrap}
.dashboard-account-incident-icon{font-size:1.65rem}
.dashboard-account-incident-card.bot{border-color:#93c5fd;border-left-color:#2563eb;background:#eff6ff;color:#1e3a8a}
.dashboard-account-incident-card.bot small{color:#365a91}.dashboard-account-incident-card.bot:hover{background:#dbeafe}
.dashboard-account-incident-card.region{border-color:#86efac;border-left-color:#16a34a;background:#f0fdf4;color:#166534}
.dashboard-account-incident-card.region small{color:#34734a}.dashboard-account-incident-card.region:hover{background:#dcfce7}
.dashboard-account-incident-card.is-empty{background:#f8fafc;border-color:#cbd5e1;border-left-color:#94a3b8;color:#475569;box-shadow:none}
.dashboard-account-incident-card.is-empty small{color:#64748b}
@media(max-width:1050px){.dashboard-account-incident-grid{grid-template-columns:1fr}}
@media(max-width:720px){.dashboard-account-incident-card{align-items:flex-start;flex-direction:column}.dashboard-account-incident-card>strong{white-space:normal}}


/* v1.0.113 - Reportes de incidencias desde inventario para asesores */
.account-incident-report-box {
  min-width: 250px;
}
.account-incident-report-box > summary {
  cursor: pointer;
  font-weight: 700;
}
.account-incident-inline-form {
  display: grid;
  gap: .65rem;
  margin-top: .75rem;
  min-width: min(360px, 100%);
}
.account-incident-inline-form label {
  display: grid;
  gap: .3rem;
  font-size: .9rem;
}
.account-incident-inline-form select,
.account-incident-inline-form textarea {
  width: 100%;
}


/* v1.0.115 - menú agrupado Reportes de cuentas */
.nav-report-group{margin:0;border:0}
.nav-report-group>summary{list-style:none}
.nav-report-group>summary::-webkit-details-marker{display:none}
.nav-report-summary{
  display:flex;align-items:center;gap:11px;width:100%;min-height:44px;padding:10px 12px;
  border-radius:10px;color:#34434d;background:transparent;border:1px solid transparent;
  font-weight:700;cursor:pointer;transition:background .16s ease,color .16s ease,border-color .16s ease;
}
.nav-report-summary:hover,.nav-report-summary.active{background:#fff1f2;color:#be123c;border-color:#fecdd3}
.nav-report-summary>span:nth-child(2){flex:1}
.nav-report-arrow{margin-left:auto;font-size:17px;transition:transform .16s ease}
.nav-report-group[open] .nav-report-arrow{transform:rotate(180deg)}
.nav-report-submenu{display:grid;gap:3px;margin:4px 0 2px 22px;padding-left:14px;border-left:2px solid #fecdd3}
.nav-sub-link{display:flex;align-items:center;gap:8px;min-height:36px;padding:7px 9px;border-radius:8px;color:#475569;text-decoration:none;font-size:.92rem;font-weight:650}
.nav-sub-link>span:first-child{flex:1}
.nav-sub-link:hover,.nav-sub-link.active{background:#fff1f2;color:#be123c}
.nav-report-summary .nav-count-badge,.nav-sub-link .nav-count-badge{margin-left:auto}


/* v1.0.472 - Datos del bot visibles en accesos vencidos */
.expired-bot-meta-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-top:10px;
  padding:10px;
  border:1px solid #dbe3ec;
  border-radius:12px;
  background:#f8fafc;
}
.expired-bot-meta-item{
  min-width:0;
  padding:9px 10px;
  border:1px solid #e2e8f0;
  border-radius:10px;
  background:#fff;
}
.expired-bot-meta-item>span{
  display:block;
  margin-bottom:5px;
  color:#64748b;
  font-size:.72rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.02em;
}
.expired-bot-meta-value{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
}
.expired-bot-meta-value code{
  flex:1;
  min-width:0;
  overflow-wrap:anywhere;
  word-break:break-word;
  font-family:inherit;
  font-weight:700;
  color:#172033;
  background:transparent;
}
@media(max-width:900px){
  .expired-bot-meta-grid{grid-template-columns:1fr;}
}

/* v1.0.116 - Datos del bot en clientes vencidos */
.expiration-bot-details{margin-top:.55rem;border-top:1px dashed #cbd8e2;padding-top:.45rem}
.expiration-bot-details summary{cursor:pointer;font-weight:700;color:#16324f;list-style:none}
.expiration-bot-details summary::-webkit-details-marker{display:none}
.expiration-bot-details summary::before{content:'▸';display:inline-block;margin-right:.35rem;transition:transform .15s ease}
.expiration-bot-details[open] summary::before{transform:rotate(90deg)}
.expiration-bot-content{margin-top:.45rem;padding:.45rem .5rem;background:#f4f8fb;border-radius:8px}
.expiration-bot-content .credential-copy-row:last-child{margin-bottom:0}


/* v1.0.117 - Carga masiva limpia */
.batch-account-form{display:grid;gap:18px}.batch-general-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.batch-general-grid label,.batch-account-form>section>label{display:grid;gap:6px;font-weight:700}.batch-account-form input,.batch-account-form select,.batch-account-form textarea{width:100%}.batch-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.batch-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:12px 0 18px}.batch-summary-grid>div{display:grid;gap:3px;padding:14px;border:1px solid var(--border,#dfe4ea);border-radius:12px;background:var(--surface-soft,#f7f9fb)}.batch-summary-grid b{font-size:1.55rem}.batch-summary-grid span{font-size:.88rem;color:var(--muted,#667085)}.batch-error-box{padding:14px;border:1px solid #ef9a9a;border-radius:10px;background:#fff3f3;margin-bottom:16px}.batch-error-box ul{margin-bottom:0}.batch-review-panel h3{margin-top:20px}.batch-clean-header p{margin-bottom:0}

/* v1.0.118 - Renovación con boleta */
.receipt-renewal-upload-form{margin-top:1rem}.receipt-renewal-panel input[type=file]{padding:.8rem;background:var(--panel-bg,#fff);border:1px solid var(--border,#d8dee8);border-radius:10px}.customer-receipt-link-panel .table-wrap{margin:1rem 0}.manual-reference-panel{border-left:4px solid #d97706}.receipt-renewal-panel{border-left:4px solid #2563eb}


/* v1.0.119 */
.incident-account-overview{width:100%}.incident-account-heading{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.incident-account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.7rem;margin:.9rem 0}.incident-account-grid>div,.incident-bot-box{background:var(--surface-soft,#f7f8fb);border:1px solid var(--border,#dde2ea);border-radius:12px;padding:.75rem}.incident-account-grid dt{font-size:.78rem;color:var(--muted,#667085);margin-bottom:.25rem}.incident-account-grid dd{margin:0;font-weight:700;overflow-wrap:anywhere}.incident-bot-box{margin-top:.8rem}.incident-bot-box h4{margin:0 0 .5rem}.inherited-account-data{margin:1rem 0}.quick-replacement-panel input[readonly],input[readonly]{background:#f3f4f6;cursor:not-allowed}.payment-data-group input[readonly]{font-weight:700}


.receipt-sale-group{border-left:5px solid #7c3aed}
.receipt-paste-container{min-width:0}
.receipt-paste-container .paste-zone{width:100%;box-sizing:border-box}
.receipt-paste-container .paste-message{margin-top:10px}

/* v1.0.121: boleta obligatoria antes de aplicar saldo */
.receipt-first-step { order: -10; border: 2px solid rgba(45, 122, 255, .28); }
.admin-no-receipt-box { padding: 14px; border: 1px dashed var(--border, #c8d0da); border-radius: 12px; background: rgba(255, 193, 7, .08); }
.admin-no-receipt-toggle { display: flex; gap: 10px; align-items: center; font-weight: 700; }
.receipt-paste-container.is-disabled { opacity: .45; pointer-events: none; }

/* v1.0.122: operaciones unificadas y datos completos en ventas múltiples */
.operation-actions{display:flex;flex-wrap:wrap;gap:.45rem;align-items:flex-start}.operation-actions details{position:relative}.operation-actions summary{cursor:pointer;list-style:none}.operation-detail-card{min-width:340px;max-width:520px;padding:1rem;margin-top:.5rem;border:1px solid var(--border-color,#dbe3ea);border-radius:12px;background:var(--card-bg,#fff);box-shadow:0 12px 30px rgba(0,0,0,.12);position:absolute;right:0;z-index:20}.receipt-modal{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:9999;padding:2rem;display:flex;align-items:center;justify-content:center}.receipt-modal[hidden]{display:none}.receipt-modal-content{position:relative;max-width:92vw;max-height:92vh}.receipt-modal-content img{max-width:92vw;max-height:88vh;border-radius:12px;background:#fff}.receipt-modal-close{position:absolute;right:-12px;top:-12px;border-radius:50%;z-index:2}.combo-account-information{margin-top:.4rem;padding:1rem;border:1px solid #cbd5e1;border-radius:12px;background:#f8fafc}.combo-account-information h4{margin:0 0 .75rem}.combo-account-information-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.65rem}.combo-account-information-grid div{display:flex;flex-direction:column;gap:.2rem}.combo-account-information-grid span{font-size:.8rem;color:#64748b}.combo-account-information-grid b{word-break:break-word}@media(max-width:700px){.operation-detail-card{position:fixed;inset:10% 5%;min-width:0;overflow:auto}.operation-actions{flex-direction:column}}

/* v1.0.124 - selección de plataforma y perfil por pasos */
.combo-platform-field,
.combo-slot-field {
  min-width: 0;
}
.combo-platform-select,
.combo-profile-select {
  width: 100%;
}
.combo-profile-select:disabled {
  opacity: .65;
  cursor: not-allowed;
}

/* v1.0.125 · Flujo guiado de ventas y renovaciones */
.operation-stepper{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 18px}.operation-stepper span{padding:11px 10px;border:1px solid var(--border,#d7deea);border-radius:10px;text-align:center;font-weight:700;background:#f6f8fb;color:#667085}.operation-stepper span.active{background:#e9f2ff;border-color:#6aa6ff;color:#174ea6}.operation-stepper span.done{background:#eaf8ef;border-color:#6fc48b;color:#176b38}.guided-step[hidden]{display:none!important}.guided-step>.receipt-sale-group,.guided-step>.receipt-first-step{margin-top:0}.wizard-actions{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:18px}.guided-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:14px 0}.guided-summary>div{padding:14px;border:1px solid var(--border,#d7deea);border-radius:12px;background:#f8fafc}.guided-summary span{display:block;font-size:.82rem;color:#667085;margin-bottom:5px}.guided-summary b{display:block;overflow-wrap:anywhere}.guided-next{margin-top:16px}.compact-stepper{margin-bottom:14px}@media(max-width:720px){.operation-stepper{grid-template-columns:1fr}.wizard-actions{flex-direction:column-reverse}.wizard-actions button{width:100%}}

.customer-section-collapsible{padding:0;overflow:hidden}.customer-section-summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:18px 20px;font-weight:800;font-size:1.05rem;list-style:none}.customer-section-summary::-webkit-details-marker{display:none}.customer-section-summary:after{content:"⌄";transition:transform .2s}.customer-section-collapsible[open]>.customer-section-summary:after{transform:rotate(180deg)}.customer-section-collapsible[open]>.customer-section-summary{border-bottom:1px solid var(--border-color,#dbe3ea)}.customer-section-collapsible>.section-title,.customer-section-collapsible>.renewal-group-grid{margin-left:18px;margin-right:18px}.promotion-code-group{border-left:4px solid #8b5cf6}.customer-access-browser:not([open])>.customer-access-browser-summary{margin-bottom:0}

/* v1.0.129 - autorización por boleta o código promocional */
.sale-payment-methods-title { margin: 0 0 .65rem; }
.sale-payment-method-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: .75rem;
}
.sale-payment-method-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .25rem .6rem;
  align-items: start;
  padding: .85rem;
  border: 1px solid var(--border-color, #d9dee8);
  border-radius: 12px;
  cursor: pointer;
  background: var(--surface, #fff);
}
.sale-payment-method-card input { margin-top: .2rem; }
.sale-payment-method-card b,
.sale-payment-method-card small { grid-column: 2; }
.sale-payment-method-card.selected {
  border-color: var(--primary, #3767d6);
  box-shadow: 0 0 0 2px rgba(55, 103, 214, .12);
}
.promotion-code-sale-box {
  padding: .85rem;
  border: 1px dashed var(--primary, #3767d6);
  border-radius: 12px;
  background: rgba(55, 103, 214, .05);
}
.expiration-account-summary small { display: block; margin-top: .2rem; }

/* v1.0.134: acciones administrativas de descarga */
.dashboard-admin-download-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
}
.dashboard-admin-download-actions .button-link.secondary {
  background: #586772;
}
@media (max-width: 760px) {
  .dashboard-admin-download-actions {
    width: 100%;
    justify-content: stretch;
  }
  .dashboard-admin-download-actions .button-link {
    flex: 1 1 100%;
    text-align: center;
  }
}

/* v1.0.138: cambio de contraseña desde Clientes vencidos */
.expired-password-change{margin-top:8px;min-width:220px}
.expired-password-change>summary{list-style:none;cursor:pointer;text-align:center}
.expired-password-change>summary::-webkit-details-marker{display:none}
.expired-password-form{display:grid;gap:8px;margin-top:8px;padding:10px;background:#f5f9fa;border:1px solid #d5e4e7;border-radius:10px}
.expired-password-form input{width:100%;min-height:38px;padding:8px 10px;border:1px solid #bccdd1;border-radius:8px}
.expired-password-form small{display:block;color:#52666c;line-height:1.35}


/* v1.0.140 — agrupar iconos de acciones en clientes vencidos */
.expiration-actions-cell{align-items:center;flex-wrap:nowrap}
.expiration-icon-actions{display:inline-flex;align-items:center;gap:.22rem;flex-wrap:nowrap;margin:0;padding:0}
.expiration-icon-actions>form,.expiration-icon-actions>details{margin:0;flex:0 0 auto}
.expiration-icon-actions .action-icon-only{width:2rem;min-width:2rem;height:2rem;min-height:2rem;padding:0;display:inline-flex;align-items:center;justify-content:center}
.expiration-icon-actions details>summary{list-style:none}
.expiration-icon-actions details>summary::-webkit-details-marker{display:none}
@media(max-width:760px){.expiration-actions-cell{flex-direction:row;flex-wrap:wrap}.expiration-icon-actions{display:inline-flex;flex-wrap:wrap}}


/* v1.0.141 - Optimización visual y accesos pendientes destacados */
.customer-hero-professional {
  grid-template-columns: minmax(0, 1.7fr) minmax(285px, .55fr);
  grid-auto-flow: row;
  align-items: stretch;
}
.customer-hero-professional .customer-profile-main {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  min-height: 0;
}
.customer-hero-professional .customer-summary-panel,
.customer-hero-professional .customer-actions-panel { align-self: stretch; }
.customer-actions-panel .customer-quick-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.customer-actions-panel .whatsapp-icon-button { grid-column: 1 / -1; justify-self: start; }
.customer-hero-professional .customer-portal-box { grid-column: 1 / -1; margin-top: 0; }
.customer-contact-list { font-size: .86rem; }
.customer-mini-stats span { font-size: .82rem; }
.customer-mini-stats b { font-size: 1rem; }
.customer-portal-info > b { font-size: .84rem; }
.customer-portal-info p { font-size: .78rem; }
.horizontal-access-card { padding: .72rem .85rem; gap: .42rem .58rem; }
.horizontal-access-card > h3 { font-size: 1.08rem; }
.horizontal-access-card > p { font-size: .88rem; }
.horizontal-access-card dl { font-size: .86rem; row-gap: .26rem; column-gap: .58rem; }
.horizontal-access-card dt { font-size: .82rem; }
.horizontal-access-card dd { font-size: .87rem; line-height: 1.3; }
.horizontal-access-card > details > summary { font-size: .82rem; min-height: 32px; }
.service-card.horizontal-access-card.pending-reassignment-card {
  background: #fff6c9;
  border-color: #e2b91f;
  border-left: 7px solid #e2b91f;
  box-shadow: 0 4px 14px rgba(142, 107, 0, .12);
}
.service-card.horizontal-access-card.pending-reassignment-card h3,
.service-card.horizontal-access-card.pending-reassignment-card dt { color: #6b5200; }
.service-card.horizontal-access-card.pending-reassignment-card .status-pill,
.service-card.horizontal-access-card.pending-reassignment-card .notice {
  background: #ffe88a;
  color: #5b4500;
  border-color: #d6aa00;
}
.panel { padding: .9rem; }
table th, table td { padding-top: .62rem; padding-bottom: .62rem; }
@media (max-width: 900px) {
  .customer-hero-professional { grid-template-columns: 1fr; }
  .customer-actions-panel .customer-quick-actions { grid-template-columns: 1fr; }
  .customer-actions-panel .whatsapp-icon-button { grid-column: auto; }
  .customer-hero-professional .customer-portal-box { grid-column: 1; }
}


/* v1.0.142 - acciones vencidas distribuidas en dos filas */
.expiration-actions-cell{align-items:flex-start}
.expiration-actions-stack{display:flex;flex-direction:column;align-items:flex-start;gap:.28rem;min-width:max-content}
.expiration-actions-primary{display:flex;align-items:center;gap:.28rem;flex-wrap:nowrap}
.expiration-actions-primary .expired-password-change{margin:0;min-width:0}
.expiration-actions-stack .expiration-icon-actions{padding-left:0}
@media(max-width:760px){.expiration-actions-stack{min-width:0}.expiration-actions-primary{flex-wrap:wrap}}

/* v1.0.143 - Clientes vencidos agrupados por cuenta */
.expired-account-groups{display:grid;gap:18px;margin-top:16px}
.expired-account-group{border:1px solid var(--border,#d8dee8);border-radius:14px;background:var(--surface,#fff);overflow:visible}
.expired-account-group-header{padding:16px 18px;border-bottom:1px solid var(--border,#d8dee8);background:linear-gradient(180deg,rgba(255,248,220,.72),rgba(255,255,255,.92))}
.expired-account-main{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.expired-account-main h2{margin:3px 0 4px;font-size:1.15rem}
.expired-account-main p{margin:0}
.expired-count-badge{display:inline-flex;align-items:center;white-space:nowrap;padding:6px 10px;border-radius:999px;background:#fff2b8;color:#725400;font-weight:700}
.expired-account-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:10px;font-size:.92rem}
.expired-account-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.expiration-grouped-table{min-width:920px}
.expired-account-toolbar .expired-password-change{position:relative}
.expired-account-toolbar .expired-password-form{z-index:20}
@media (max-width:800px){.expired-account-main{flex-direction:column}.expired-account-meta{display:grid;grid-template-columns:1fr}.expired-account-toolbar{align-items:stretch}.expired-account-toolbar form>.button{width:100%}}

/* v1.0.144: mostrar u ocultar nueva contraseña en Clientes vencidos */
.expired-password-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.expired-password-input-row .expired-password-toggle{min-width:42px;padding:8px 10px;line-height:1}


/* v1.0.146 - Datos de cuenta y bot en clientes vencidos */
.expired-account-credentials-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}.expired-account-info-card{background:rgba(255,255,255,.72);border:1px solid rgba(15,169,184,.22);border-radius:12px;padding:12px}.expired-account-info-card h3{margin:0 0 10px;font-size:1rem}.expired-account-data-row{display:grid;gap:4px;margin-top:8px}.expired-data-label{font-size:.78rem;font-weight:700;color:var(--muted,#607080);text-transform:uppercase;letter-spacing:.03em}.expired-data-value-row{display:flex;align-items:center;gap:7px;min-width:0}.expired-data-value-row code{font-family:inherit;font-size:.95rem;font-weight:650;white-space:normal;overflow-wrap:anywhere}.expired-data-value-row .action-icon-only{flex:0 0 auto}.expired-sensitive-value{letter-spacing:.01em}@media(max-width:850px){.expired-account-credentials-grid{grid-template-columns:1fr}}


/* v1.0.147 · Datos desplegables y copiado silencioso */
.expired-account-collapsible{padding:0;overflow:hidden}
.expired-account-collapsible>summary{list-style:none;cursor:pointer;font-size:1rem;font-weight:800;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(255,255,255,.82)}
.expired-account-collapsible>summary::-webkit-details-marker{display:none}
.expired-account-collapsible>summary::after{content:'▾';font-size:.9rem;transition:transform .18s ease}
.expired-account-collapsible[open]>summary::after{transform:rotate(180deg)}
.expired-account-info-content{padding:4px 14px 14px;border-top:1px solid rgba(15,169,184,.16)}
.expired-account-collapsible .expired-account-data-row{grid-template-columns:minmax(135px,.8fr) minmax(0,1.7fr);align-items:center;gap:10px;padding:8px 0;margin:0;border-bottom:1px dashed rgba(90,110,125,.18)}
.expired-account-collapsible .expired-account-data-row:last-child{border-bottom:0}
.expired-account-collapsible .expired-data-value-row{justify-content:space-between}
@media(max-width:700px){.expired-account-collapsible .expired-account-data-row{grid-template-columns:1fr}}


/* v1.0.149: confirmación de limpieza desde el detalle de la cuenta */
.slot-cleanup-confirm-form {
  margin-top: 0.8rem;
}
.slot-cleanup-confirm-form .cleanup-confirm-button {
  width: 100%;
  justify-content: center;
}


/* v1.0.151 - PIN visible en clientes pendientes de reasignación */
.reassignment-pin-value {
  display: flex;
  align-items: center;
  gap: 8px;
}
.reassignment-copy-pin {
  width: 32px;
  height: 32px;
  min-width: 32px;
  padding: 0;
}

/* v1.0.154 - corrección masiva de precios */
.bulk-price-toolbar{display:flex;align-items:end;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.bulk-price-toolbar label{min-width:220px}.filter-actions{display:flex;align-items:end}

/* v1.0.167 - Separación visual y menús cerrados por defecto */
.expired-account-group{
  border:4px solid #111827 !important;
  border-radius:16px;
  box-shadow:none;
  background:#fffdf2;
}
.expired-account-group + .expired-account-group{
  margin-top:4px;
}
.expired-account-group-header{
  border-bottom:1px solid #cdd5df;
}
.expiration-list-panel,
.panel,
.table-wrap,
.expiration-collapsible,
.horizontal-access-card,
.themed-section,
.customer-section-collapsible,
.customer-access-browser,
.customer-access-filter-panel,
.account-incident-report-box,
.cleanup-bot-details,
.provider-account-detail-card,
.provider-account-panel,
.staff-workspace-box,
.attendance-history,
.account-edit-details,
.inline-pencil-editor,
.expired-account-info-card,
.expired-note-details,
.expired-password-change,
.group-renew-editor,
.access-profile-editor,
.account-password-editor,
.admin-expiration-editor,
.access-renew-editor,
.access-action-menu,
.complete-account-details,
.complete-account-provider,
.additional-bot-details,
.customer-phone-editor,
.customer-record-search,
.action-collapsible{
  border-radius:14px;
}
.expiration-list-panel,
.panel,
.table-wrap,
.horizontal-access-card,
.themed-section,
.customer-section-collapsible,
.customer-access-browser,
.customer-access-filter-panel,
.account-incident-report-box,
.provider-account-detail-card,
.provider-account-panel,
.staff-workspace-box,
.attendance-history,
.group-renew-editor,
.access-profile-editor,
.account-password-editor,
.admin-expiration-editor,
.access-renew-editor,
.access-action-menu,
.complete-account-details,
.complete-account-provider,
.customer-record-search,
.action-collapsible{
  border:2px solid rgba(17,24,39,.78);
  box-shadow:none;
}
.expiration-collapsible{
  border:2px solid rgba(17,24,39,.78);
  border-radius:14px;
  overflow:hidden;
}
.expired-account-collapsible,
.expired-note-details,
.expired-password-change,
.additional-bot-details,
.cleanup-bot-details,
.inline-pencil-editor,
.account-edit-details,
.nav-report-group,
.customer-section-collapsible,
.customer-access-browser,
.customer-access-filter-panel,
.customer-phone-editor,
.access-profile-editor,
.account-password-editor,
.admin-expiration-editor,
.access-renew-editor,
.access-action-menu,
.group-renew-editor,
.complete-account-details,
.complete-account-provider,
.attendance-history,
.staff-workspace-box,
.action-collapsible{
  overflow:hidden;
}
.expired-account-collapsible > summary,
.expired-note-details > summary,
.expired-password-change > summary,
.additional-bot-details > summary,
.cleanup-bot-details > summary,
.account-edit-details > summary,
.inline-pencil-editor > summary,
.nav-report-group > summary,
.customer-section-collapsible > summary,
.customer-access-browser > summary,
.customer-access-filter-panel > summary,
.customer-phone-editor > summary,
.access-profile-editor > summary,
.account-password-editor > summary,
.admin-expiration-editor > summary,
.access-renew-editor > summary,
.access-action-menu > summary,
.group-renew-editor > summary,
.complete-account-details > summary,
.complete-account-provider > summary,
.attendance-history > summary,
.staff-workspace-box > summary,
.action-collapsible > summary{
  background:#f8fafc;
}
.expired-account-group h2,
.expiration-detail-table td b,
.horizontal-access-card b,
.customer-access-browser .section-title,
.customer-section-summary,
.customer-page-grid .portal-code,
.access-core-header,
.access-core-grid,
.customer-summary-card,
.portal-card{
  font-size:1.03em;
}
.expired-account-group p,
.expiration-detail-table td,
.horizontal-access-card,
.access-core-grid,
.customer-page-grid,
.portal-card,
.customer-page-grid small,
.expiration-detail-table small{
  font-size:1.01em;
}

/* v1.0.169 - Orden y alineación de acciones en Clientes vencidos */
.expiration-grouped-table th:last-child,
.expiration-grouped-table td.expiration-actions-cell{
  width:190px;
  min-width:190px;
  text-align:center;
  vertical-align:middle;
}
.expiration-actions-cell{
  display:table-cell !important;
  padding:12px 14px !important;
}
.expiration-actions-stack{
  width:100%;
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:7px;
}
.expiration-actions-primary{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  margin:0;
}
.expiration-actions-primary .button{
  min-width:92px;
  justify-content:center;
}
.expiration-icon-actions{
  width:100%;
  display:flex !important;
  flex-direction:row;
  align-items:center;
  justify-content:center;
  flex-wrap:nowrap !important;
  gap:7px !important;
  margin:0 !important;
  padding:0 !important;
}
.expiration-icon-actions > form,
.expiration-icon-actions > details{
  display:block;
  flex:0 0 34px;
  width:34px;
  height:34px;
  margin:0 !important;
  padding:0 !important;
  position:relative;
}
.expiration-icon-actions .action-icon-only,
.expiration-icon-actions details > summary.action-icon-only{
  box-sizing:border-box;
  width:34px !important;
  min-width:34px !important;
  height:34px !important;
  min-height:34px !important;
  padding:0 !important;
  margin:0 !important;
  display:flex !important;
  align-items:center;
  justify-content:center;
  border-radius:9px;
  line-height:1;
  cursor:pointer;
}
.expiration-icon-actions .expired-note-details[open] .expired-note-form{
  position:absolute;
  z-index:30;
  top:40px;
  right:0;
  width:260px;
  padding:12px;
  border:1px solid #cbd5e1;
  border-radius:12px;
  background:#fff;
  box-shadow:0 12px 30px rgba(15,23,42,.18);
}
@media(max-width:760px){
  .expiration-grouped-table th:last-child,
  .expiration-grouped-table td.expiration-actions-cell{
    width:160px;
    min-width:160px;
  }
  .expiration-actions-cell{
    display:table-cell !important;
  }
  .expiration-icon-actions{
    flex-wrap:nowrap !important;
  }
}

/* v1.0.171 - Respaldos por correo */
.backup-email-settings-form{max-width:980px}.backup-email-settings-form .checkbox-line{display:flex;align-items:center;gap:10px;font-weight:800}.backup-email-settings-form .checkbox-line input{width:auto}.warning-card{padding:14px;border:2px solid #f59e0b;border-radius:12px;background:#fffbeb;margin-bottom:14px}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.muted{color:#64748b}

/* v1.0.173 - Microsoft Graph para respaldos */
.graph-connection-card{margin:18px 0;padding:18px;border:2px solid #2563eb;border-radius:16px;background:#f8fbff}
.graph-connection-card .section-title{align-items:flex-start}
.graph-device-code{margin-top:14px}
.graph-user-code{display:inline-block;margin:8px 0;padding:12px 18px;border:2px dashed #1d4ed8;border-radius:10px;background:#fff;font-size:1.7rem;font-weight:900;letter-spacing:.18em;user-select:all}
.microsoft-setup-guide>summary{cursor:pointer;padding:4px 0}
.microsoft-setup-guide ol{line-height:1.65}
button:disabled{opacity:.55;cursor:not-allowed}


/* v1.0.182 - Agenda privada de pagos */
.reminder-layout{display:grid;grid-template-columns:minmax(280px,380px) 1fr;gap:20px;align-items:start}.reminder-form label{display:grid;gap:6px;margin-bottom:14px;font-weight:700}.reminder-form input,.reminder-form select,.reminder-form textarea,.inline-note-form input,.inline-snooze-form input{width:100%;box-sizing:border-box}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-actions,.reminder-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.reminder-cards{display:grid;gap:14px}.reminder-card{border:1px solid #dce7eb;border-left:5px solid #08aebf;border-radius:14px;padding:16px;background:#fff}.reminder-card.alert,.reminder-card.today{border-left-color:#f0a500;background:#fffaf0}.reminder-card.overdue{border-left-color:#dc3545;background:#fff5f6}.reminder-card.completed{border-left-color:#36a269;background:#f5fff9;opacity:.85}.reminder-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.reminder-card-head h3{margin:0 0 5px}.status-pill{display:inline-block;padding:3px 9px;border-radius:999px;background:#e9f7f9;font-size:.78rem;font-weight:800}.reminder-meta{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0;color:#40545b}.installment-progress{padding:10px 12px;border-radius:10px;background:#f1f6f8;margin:10px 0}.installment-progress>div{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.installment-progress progress{width:100%;margin-top:7px}.inline-note-form{display:flex;gap:7px;flex:1 1 330px}.inline-snooze-form{display:flex;gap:7px}.payment-dashboard-alerts{margin:18px 0;padding:18px;border:1px solid #f0c36a;border-radius:14px;background:#fffaf0}.payment-alert-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.payment-alert-card{display:grid;gap:4px;padding:13px;border-radius:10px;background:#fff;border:1px solid #ecd69c;text-decoration:none;color:inherit}.payment-alert-card.overdue{border-color:#e798a1;background:#fff4f5}.empty-state{text-align:center;padding:28px;color:#64757b}@media(max-width:900px){.reminder-layout{grid-template-columns:1fr}.form-grid-2{grid-template-columns:1fr}.inline-note-form,.inline-snooze-form{flex:1 1 100%}}

/* v1.0.186: cada acción del acceso permanece cerrada hasta que el usuario la abre. */
.access-action-option {
  border-top: 1px solid #e2eaec;
}
.access-action-option > summary {
  cursor: pointer;
  padding: .8rem .9rem;
  font-weight: 800;
  list-style: none;
}
.access-action-option > summary::-webkit-details-marker { display: none; }
.access-action-option > summary::after {
  content: "▾";
  float: right;
  transition: transform .18s ease;
}
.access-action-option[open] > summary::after { transform: rotate(180deg); }
.access-action-option-body { padding: .1rem .85rem .9rem; }
.access-action-option.renewal-access-action { background: #fff9e9; }

/* v1.0.194 */
.complete-account-customer-banner{display:flex;flex-wrap:wrap;gap:.4rem .8rem;align-items:center;margin:0 0 .65rem;padding:.65rem .8rem;border:1px solid #0bb3c1;border-radius:10px;background:#eefcfd}.complete-account-customer-banner strong{font-size:1rem}.complete-account-customer-banner span{font-size:.9rem}.complete-account-action-note{margin:.45rem 0;padding:.55rem .7rem;border-left:4px solid #0bb3c1;background:#eefcfd}

/* v1.0.195 - Venta de accesos a ancho completo */
.additional-sale-panel .action-collapsible-body{max-width:none;width:100%;}
.additional-access-form{display:grid;grid-template-columns:1fr;gap:1rem;width:100%;max-width:none;}
.additional-access-form>label,.additional-access-form>section,.additional-access-form>div{width:100%;max-width:none;}
.additional-combo-row{display:grid;grid-template-columns:1fr;gap:.8rem;width:100%;padding:1rem;border:1px solid var(--border-color,#ccd5df);border-radius:12px;}
.extra-account-preview,.sale-total-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;}
.extra-account-preview>div,.sale-total-grid>div,.sale-total-grid>label{padding:.8rem;border:1px solid var(--border-color,#ccd5df);border-radius:10px;background:var(--surface-soft,#f8fafc);}
.extra-account-preview span,.sale-total-grid span{display:block;font-size:.85rem;opacity:.75;margin-bottom:.25rem;}
.sale-total-summary{padding:1rem;border:1px solid #08aebe;border-radius:12px;background:#f4fdfe;}
.sale-total-summary h3{margin-top:0;}
@media (min-width:900px){.additional-access-form{grid-template-columns:1fr;}.additional-sale-panel{width:100%;max-width:none;}.additional-sale-panel .section-title{align-items:flex-start;}}


/* v1.0.196: credenciales internas desplegables y textos largos contenidos */
.extra-bot-details {
  grid-column: 1 / -1;
  border: 1px solid var(--border-color, #ccd5df);
  border-radius: 10px;
  background: var(--surface-soft, #f8fafc);
  overflow: hidden;
}
.extra-bot-details > summary {
  cursor: pointer;
  padding: .85rem 1rem;
  font-weight: 700;
  list-style-position: inside;
}
.extra-bot-details[open] > summary {
  border-bottom: 1px solid var(--border-color, #ccd5df);
}
.extra-bot-details-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: .75rem;
  padding: .85rem;
}
.extra-bot-details-grid > div {
  min-width: 0;
  padding: .8rem;
  border: 1px solid var(--border-color, #ccd5df);
  border-radius: 10px;
  background: var(--surface, #fff);
}
.extra-bot-details-grid span {
  display: block;
  font-size: .85rem;
  opacity: .75;
  margin-bottom: .25rem;
}
.long-credential,
.extra-account-preview b,
.combo-account-information-grid b,
.additional-bot-details-grid b {
  display: block;
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
  white-space: normal;
}
@media (min-width: 900px) {
  .extra-bot-details-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}


/* v1.0.197: buscador del portal y edición estable de renovaciones */
.portal-search-card {
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid var(--border, #d5dde5);
  border-radius: 14px;
  background: #fff;
}
.portal-search-card label { display:block; font-weight:700; margin-bottom:.5rem; }
.portal-search-card input { width:100%; box-sizing:border-box; padding:.8rem 1rem; border:1px solid #b9c5d1; border-radius:10px; font-size:1rem; }
.portal-search-status { margin:.55rem 0 0; color:#52606d; }
.portal-search-match { outline:2px solid #0ea5a8; outline-offset:2px; }
.inline-edit-form input[type="date"] { min-width: 10.5rem; }

/* v1.0.198 - Canales del portal y lupa compacta */
.portal-channels-form{display:grid;gap:1rem}.portal-channel-panel{border:1px solid #c8d4dd;border-radius:14px;padding:1rem;margin:0;min-width:0}.portal-channel-panel legend{font-weight:800;padding:0 .45rem}.portal-channel-panel .check-label{margin-bottom:.8rem}.portal-channel-preview-buttons,.portal-support-actions{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center;margin-top:.75rem}.portal-whatsapp-alt-button{background:#087f8c!important}.portal-webchat-preview,.portal-webchat-launch{display:inline-flex;align-items:center;justify-content:center;padding:.8rem 1rem;border-radius:12px;background:#2467a6;color:#fff;border:0;font-weight:800;text-decoration:none;cursor:pointer}.portal-search-control{display:flex;justify-content:flex-end;align-items:flex-start;gap:.6rem;margin:.75rem 0}.portal-search-icon-button{width:46px;height:46px;border-radius:50%;border:0;background:#0ba9b7;color:#fff;font-size:1.25rem;cursor:pointer;flex:0 0 auto}.portal-search-card[hidden]{display:none!important}.portal-search-card{flex:1;margin:0;max-width:760px}.portal-support-card{align-items:flex-start}.portal-support-actions{justify-content:flex-end;margin-top:0}@media(max-width:700px){.portal-search-control{flex-wrap:wrap}.portal-search-card{order:2;flex-basis:100%;max-width:none}.portal-support-actions{justify-content:stretch}.portal-support-actions>*{width:100%}}


/* v1.0.199 - Portal del cliente simplificado */
.portal-compact-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.35rem}
.portal-compact-header h1{margin:.1rem 0 0;font-size:clamp(1.65rem,5vw,2.25rem);line-height:1.05;overflow-wrap:anywhere}
.portal-welcome-label{margin:0;color:#0b8794;font-weight:800;font-size:.9rem;text-transform:uppercase;letter-spacing:.05em}
.portal-logout-link{display:inline-flex;padding:.55rem .8rem;border-radius:10px;background:#f1f5f6;color:#28444a;text-decoration:none;font-weight:750}
.portal-dashboard>.access-grid{margin-top:.55rem}
.portal-login-data-collapsible{margin-top:1.15rem;padding:.85rem 1rem;background:#f8fbfc;box-shadow:none}
.portal-login-data-collapsible summary{cursor:pointer;font-weight:800;color:#164f59;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:.75rem}
.portal-login-data-collapsible summary::-webkit-details-marker{display:none}
.portal-login-data-collapsible summary::after{content:'⌄';font-size:1.2rem;transition:transform .18s ease}
.portal-login-data-collapsible[open] summary::after{transform:rotate(180deg)}
.portal-login-data-help{margin:.55rem 0 0;color:#5b7076}
.portal-service-card .portal-access-details{margin-bottom:0}
@media(max-width:700px){
  .portal-body{padding:0}
  .portal-dashboard{border-radius:0;box-shadow:none;padding:1rem;min-height:100vh}
  .portal-search-control{margin:.45rem 0 .7rem}
  .portal-login-data-collapsible{margin-top:.9rem}
}


/* v1.0.200 - Cabecera compacta de la ficha del cliente */
.customer-hero-professional {
  display: grid;
  grid-template-columns: minmax(360px, 1.35fr) repeat(2, minmax(210px, .55fr));
  grid-template-areas:
    "profile summary actions"
    "portal portal portal";
  gap: .65rem;
  padding: .75rem;
  align-items: stretch;
}
.customer-hero-professional .customer-profile-main {
  grid-area: profile;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: .65rem .8rem;
  min-height: 0;
}
.customer-hero-professional .customer-summary-panel {
  grid-area: summary;
  padding: .6rem;
}
.customer-hero-professional .customer-actions-panel {
  grid-area: actions;
  padding: .6rem;
}
.customer-hero-professional .customer-portal-box {
  grid-area: portal;
  display: grid;
  grid-template-columns: minmax(320px, 1.5fr) minmax(135px, .35fr) auto;
  align-items: center;
  gap: .75rem;
  padding: .55rem .75rem;
  margin: 0;
}
.customer-identity { align-items: center; }
.customer-heading h1 { font-size: 1.22rem; }
.customer-contact-list {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem .85rem;
  margin-top: .2rem;
}
.customer-editors {
  display: flex;
  align-items: center;
  gap: .4rem;
  margin-top: .35rem;
}
.customer-hero-professional .customer-phone-editor {
  width: auto;
  padding: 0;
  border: 0;
  background: transparent;
}
.customer-hero-professional .customer-phone-editor > summary {
  display: inline-flex;
  width: auto;
  min-height: 28px;
  padding: .28rem .48rem;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 8px;
  background: rgba(255,255,255,.08);
  font-size: .78rem;
}
.customer-summary-panel h2,
.customer-actions-panel h2 { display: none; }
.customer-hero-professional .customer-mini-stats {
  display: grid;
  grid-template-columns: 1fr;
  gap: .4rem;
  height: 100%;
}
.customer-hero-professional .customer-mini-stats > div {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: .45rem;
  padding: .42rem .55rem;
  border-radius: 9px;
  background: rgba(255,255,255,.12);
}
.customer-hero-professional .customer-mini-stats span { font-size: .76rem; }
.customer-hero-professional .customer-mini-stats b { font-size: .95rem; }
.customer-actions-panel .customer-quick-actions {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  align-content: center;
  gap: .4rem;
  height: 100%;
}
.customer-actions-panel .customer-quick-actions button {
  min-height: 36px;
  padding: .42rem .55rem;
}
.customer-actions-panel .whatsapp-icon-button {
  grid-column: auto;
  justify-self: stretch;
  min-width: 42px;
}
.customer-empty-note { grid-column: 1 / -1; margin: .35rem 0 0; }
.customer-portal-info { min-width: 0; }
.customer-portal-info > b {
  margin: .15rem 0 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.customer-portal-info p { margin: .12rem 0 0; }
.customer-portal-code {
  min-width: 125px;
  padding: .38rem .55rem;
}
.customer-portal-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .4rem;
  flex-wrap: nowrap;
}
.customer-portal-actions .button,
.customer-portal-actions button {
  min-height: 34px;
  padding: .4rem .58rem;
  white-space: nowrap;
  font-size: .76rem;
}
.customer-open-portal { text-decoration: none; }
.customer-record-search-compact { margin-top: .55rem; margin-bottom: .55rem; }
.current-access-section { margin-top: .55rem; }

@media (max-width: 1180px) {
  .customer-hero-professional {
    grid-template-columns: minmax(320px, 1.25fr) minmax(250px, .75fr);
    grid-template-areas:
      "profile summary"
      "actions actions"
      "portal portal";
  }
  .customer-actions-panel .customer-quick-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
  .customer-hero-professional {
    grid-template-columns: 1fr;
    grid-template-areas: "profile" "summary" "actions" "portal";
  }
  .customer-hero-professional .customer-portal-box { grid-template-columns: 1fr; }
  .customer-portal-actions { justify-content: flex-start; flex-wrap: wrap; }
}
@media (max-width: 520px) {
  .customer-actions-panel .customer-quick-actions { grid-template-columns: 1fr 1fr auto; }
  .customer-contact-list { display: grid; gap: .18rem; }
  .customer-portal-actions .secondary,
  .customer-portal-actions .button { flex: 1 1 auto; }
}


/* v1.0.201: renovación agrupada de cuentas completas */
.complete-account-renewal {
  border: 2px solid rgba(11, 174, 190, .35);
  background: rgba(11, 174, 190, .07);
}
.complete-account-renewal b::before { content: "🏠 "; }
.complete-account-renewal small { display:block; margin-top:.2rem; overflow-wrap:anywhere; }
.alignment-workflow{max-width:none}.alignment-form{display:grid;gap:1rem}.alignment-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.65rem}.alignment-item{display:flex;gap:.65rem;align-items:flex-start;border:1px solid var(--border,#cbd5e1);border-radius:12px;padding:.8rem;background:#fff}.alignment-item input{margin-top:.25rem}.alignment-result{display:grid;gap:1rem}.alignment-result table{width:100%;border-collapse:collapse}.alignment-result th,.alignment-result td{padding:.7rem;border-bottom:1px solid #dbe4ea;text-align:left}.sale-total-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.operation-stepper{display:flex;gap:.4rem;flex-wrap:wrap}.operation-stepper span{padding:.5rem .8rem;border-radius:999px;background:#e8eef2}.operation-stepper .active{background:#d9f6f7;color:#075b65}

/* v1.0.204: flujo combinado de renovación, alineación y venta */
.combined-operation-list{display:grid;gap:.8rem}
.combined-operation-card,.new-access-option{border:1px solid #cbd5e1;border-radius:14px;background:#fff;overflow:hidden}
.combined-operation-card .renewal-checkbox,.new-access-option .renewal-checkbox{border:0;border-radius:0;margin:0}
.operation-config{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;padding:.85rem;border-top:1px solid #dbe4ea;background:#f8fbfc}
.operation-calculation{grid-column:1/-1;padding:.65rem .8rem;border-radius:10px;background:#eaf7fa;color:#164e63;font-size:.9rem}
.add-access-inside-renewal{border:1px solid #b8dce1;border-radius:14px;padding:.85rem;background:#f7fcfd}
.add-access-inside-renewal>summary{cursor:pointer;font-weight:700}
.new-access-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:.75rem;margin-top:.8rem}
.combined-price-summary{border:1px solid #cbd5e1;border-radius:14px;padding:1rem;background:#fff}
@media(max-width:680px){.operation-config,.new-access-grid{grid-template-columns:1fr}}


/* v1.0.205: selector progresivo de accesos dentro de renovación */
.renewal-new-access-picker {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 14px;
}
.renewal-new-access-picker > button,
.renewal-new-access-picker > .selected-new-access-details { grid-column: 1 / -1; }
.selected-new-access-details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--border-color, #cbd5e1);
  border-radius: 12px;
  background: rgba(15, 118, 110, .05);
}
.selected-new-access-details > div,
.bot-data-vertical > div { min-width: 0; }
.selected-new-access-details span,
.bot-data-vertical span { display: block; font-size: .82rem; opacity: .75; }
.selected-new-access-details b,
.bot-data-vertical b { display: block; overflow-wrap: anywhere; word-break: break-word; }
.selected-new-access-details details { grid-column: 1 / -1; }
.bot-data-vertical { display: grid; gap: 10px; padding-top: 10px; }
.selected-new-accesses { display: grid; gap: 12px; margin-top: 16px; }
.selected-new-access-card header { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.selected-new-access-card .danger-link { width: auto; padding: 6px 10px; }
@media (max-width: 720px) { .renewal-new-access-picker { grid-template-columns: 1fr; } }

/* v1.0.209: cálculos de renovación y alineación */
.operation-calculation{margin-top:.55rem;padding:.7rem .85rem;border-radius:.65rem;background:#eaf8fb;border:1px solid #b8e3ea;overflow-wrap:anywhere}
.combined-price-summary .form-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}

/* v1.0.212 Programa de referidos */
.portal-referral-card{margin-top:18px}.portal-referral-link-text{max-width:520px;word-break:break-all}.referral-public-card{max-width:620px;margin:40px auto}.referral-form{display:grid;gap:14px;width:100%}.referral-form label{display:grid;gap:6px;font-weight:700}.referral-form input{padding:12px;border:1px solid #ccd7de;border-radius:10px}.referral-form button{padding:12px;border:0;border-radius:10px;background:#08aebf;color:#fff;font-weight:700}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:16px 0}.stat-card{background:#fff;border-radius:12px;padding:16px;box-shadow:0 3px 12px rgba(0,0,0,.08);display:grid}.stat-card b{font-size:1.4rem}.stat-card span{color:#52616b}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.form-grid label{display:grid;gap:5px}.form-grid input,.form-grid select{padding:9px}.table-wrap{overflow:auto}

/* v1.0.214 - Portal visual y notificaciones */
.portal-body{background:linear-gradient(145deg,#eefcff 0%,#f8f5ff 48%,#fff8ec 100%);min-height:100vh}.portal-dashboard{max-width:1180px}.portal-compact-header{background:linear-gradient(135deg,#08a9b9,#6c5ce7);color:#fff;border-radius:24px;padding:24px;box-shadow:0 18px 45px rgba(40,70,120,.18)}.portal-compact-header h1,.portal-compact-header p{color:#fff}.portal-logout-link{background:rgba(255,255,255,.18);color:#fff;border:1px solid rgba(255,255,255,.45);padding:10px 16px;border-radius:999px}.portal-service-card{border:0;border-radius:22px;background:rgba(255,255,255,.94);box-shadow:0 12px 30px rgba(40,60,100,.11);transition:transform .2s ease,box-shadow .2s ease}.portal-service-card:hover{transform:translateY(-3px);box-shadow:0 18px 38px rgba(40,60,100,.16)}.portal-benefits{background:linear-gradient(135deg,#fff3c9,#ffe0f1 50%,#e2f7ff);padding:22px;border-radius:24px}.benefit-card{border:2px solid rgba(255,255,255,.8);background:rgba(255,255,255,.88);box-shadow:0 14px 32px rgba(160,90,120,.15)}.portal-notification-card{display:flex;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(135deg,#dffbff,#eee8ff);border:1px solid #b9eaf1;border-radius:22px;padding:18px 20px;margin:18px 0;box-shadow:0 10px 25px rgba(50,90,130,.1);flex-wrap:wrap}.portal-notification-card>div{display:flex;gap:14px;align-items:center}.portal-notification-card h2{margin:0 0 4px}.portal-notification-card p{margin:0}.portal-notification-emoji{font-size:2.2rem}.portal-notification-button{border:0;border-radius:999px;background:#6c5ce7;color:#fff;padding:12px 20px;font-weight:800;cursor:pointer}.portal-notification-button.active{background:#12a36d}.portal-notification-button:disabled{opacity:.55;cursor:not-allowed}@media(max-width:680px){.portal-compact-header{border-radius:0 0 24px 24px;margin:-16px -16px 16px}.portal-notification-card{align-items:flex-start}.portal-notification-button{width:100%}}

/* v1.0.215: accesos que siguen perteneciendo al cliente aunque exista una incidencia */
.pending-reassignment-banner,
.account-incident-banner {
  margin-bottom: 12px;
  border-radius: 12px;
}
.pending-reassignment-banner {
  border-left: 5px solid #f59e0b;
}
.account-incident-banner {
  border-left: 5px solid #ef4444;
}


/* v1.0.234 - venta adicional a ancho completo y boleta al final */
.receipt-first-step{order:initial!important;}
.additional-sale-panel,.additional-sale-panel .action-collapsible-body{width:100%!important;max-width:none!important;}
.additional-access-form{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1rem!important;width:100%!important;max-width:none!important;}
.additional-access-form>.full-width,.additional-access-form>section,.additional-access-form>.sale-mode-options,.additional-access-form>.alignment-box,.additional-access-form>.selected-account-preview,.additional-access-form>.additional-combo-section,.additional-access-form>.receipt-sale-group,.additional-access-form>.sell-submit{grid-column:1/-1!important;}
.batch-template-verification-form{display:grid;grid-template-columns:minmax(240px,1fr) minmax(280px,2fr) auto;gap:.75rem;align-items:end;flex:1;}
.batch-template-verification-form label{display:grid;gap:.35rem;}
@media(max-width:850px){.additional-access-form,.batch-template-verification-form{grid-template-columns:1fr!important;}.additional-access-form>*{grid-column:1!important;}}

/* v1.0.277 — Control de vencimientos con proveedores dentro del inventario */
.provider-due-control { margin-bottom: 1rem; }
.provider-due-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: .75rem;
  margin: 1rem 0;
}
.provider-due-summary-grid article {
  border: 1px solid #dce7ea;
  border-radius: 14px;
  padding: .85rem 1rem;
  background: #fff;
  display: grid;
  gap: .15rem;
}
.provider-due-summary-grid article strong { font-size: 1.65rem; }
.provider-due-summary-grid article small { color: #5b6b72; }
.provider-due-summary-grid .expired { border-left: 5px solid #b42318; }
.provider-due-summary-grid .today { border-left: 5px solid #f79009; }
.provider-due-summary-grid .tomorrow { border-left: 5px solid #eab308; }
.provider-due-summary-grid .future { border-left: 5px solid #12b76a; }
.provider-due-buckets { display: grid; gap: .7rem; }
.provider-due-bucket {
  border: 1px solid #dce7ea;
  border-radius: 14px;
  background: #f8fbfc;
  overflow: hidden;
}
.provider-due-bucket > summary {
  cursor: pointer;
  list-style: none;
  padding: .9rem 1rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  background: #fff;
}
.provider-due-bucket > summary::-webkit-details-marker { display: none; }
.provider-due-bucket > summary span { display: grid; gap: .12rem; }
.provider-due-bucket > summary small { color: #68777d; font-weight: 400; }
.provider-due-groups { display: grid; gap: .75rem; padding: .75rem; }
.provider-due-group-card {
  border: 1px solid #dbe6e9;
  border-radius: 12px;
  padding: .85rem;
  background: #fff;
}
.provider-due-group-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .8rem;
  margin-bottom: .7rem;
}
.provider-due-group-head h3 { margin: .1rem 0; }
.provider-label { font-size: .8rem; font-weight: 800; color: #087f8c; text-transform: uppercase; letter-spacing: .04em; }
.provider-due-account-list { display: grid; gap: .35rem; }
.provider-due-account-row {
  display: grid;
  grid-template-columns: auto minmax(220px, 1fr) auto;
  gap: .65rem;
  align-items: center;
  padding: .55rem .65rem;
  border: 1px solid #edf2f4;
  border-radius: 10px;
  background: #fbfdfe;
  cursor: pointer;
}
.provider-due-account-row > span:nth-child(2) { display: grid; gap: .08rem; }
.provider-due-account-row small { color: #68777d; }
.provider-due-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  align-items: center;
  margin-top: .7rem;
  padding-top: .7rem;
  border-top: 1px solid #e8eff1;
}
.provider-due-actions input[type="date"] { max-width: 180px; }
.provider-due-empty { padding: .5rem; margin: 0; }
@media (max-width: 900px) {
  .provider-due-summary-grid { grid-template-columns: repeat(2, minmax(140px, 1fr)); }
  .provider-due-account-row { grid-template-columns: auto 1fr; }
  .provider-due-account-row .due-badge { grid-column: 2; justify-self: start; }
}
@media (max-width: 560px) {
  .provider-due-summary-grid { grid-template-columns: 1fr 1fr; }
  .provider-due-group-head { align-items: flex-start; flex-direction: column; }
}

/* v1.0.278 — exportación Excel por bloque de vencimientos con proveedores */
.provider-due-summary-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.provider-due-export{font-size:.88rem;padding:7px 11px;white-space:nowrap}
@media(max-width:760px){.provider-due-summary-actions{justify-content:flex-start}.provider-due-export{width:100%;text-align:center}}

/* v1.0.283 - vendedor referido legible y sin superposición */
.customer-hero-professional {
  grid-template-columns: minmax(340px,1.2fr) minmax(210px,.55fr) minmax(260px,.7fr) minmax(270px,.72fr);
  grid-template-areas: "profile summary referral actions" "portal portal portal portal";
}
.customer-hero-professional .customer-referral-panel {
  grid-area: referral; min-width:0; padding:.65rem .75rem; border-radius:12px;
  background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.24); color:#fff; overflow:hidden;
}
.customer-referral-panel h2{margin:0 0 .35rem;font-size:.88rem;color:#fff}
.customer-referral-panel p{margin:.22rem 0;color:#fff;line-height:1.3}
.customer-referral-panel .small-muted{color:rgba(255,255,255,.88)!important}
.customer-referral-panel b{color:#fff;overflow-wrap:anywhere}
@media(max-width:1350px){.customer-hero-professional{grid-template-columns:minmax(320px,1.25fr) minmax(220px,.75fr) minmax(260px,.8fr);grid-template-areas:"profile summary actions" "profile referral actions" "portal portal portal"}}
@media(max-width:950px){.customer-hero-professional{grid-template-columns:1fr 1fr;grid-template-areas:"profile profile" "summary referral" "actions actions" "portal portal"}}
@media(max-width:700px){.customer-hero-professional{grid-template-columns:1fr;grid-template-areas:"profile" "summary" "referral" "actions" "portal"}}

/* v1.0.284 · Calculadora flotante de productos */
.quote-calculator-fab{position:fixed;right:18px;bottom:82px;z-index:1100;border:0;border-radius:50%;width:48px;height:48px;padding:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#6d28d9,#0891b2);color:#fff;font-weight:800;box-shadow:0 14px 35px rgba(0,0,0,.28);cursor:pointer}.quote-calculator-fab span{margin-left:6px}.quote-calculator-backdrop{position:fixed;inset:0;background:rgba(4,10,22,.68);z-index:1200;padding:18px;overflow:auto}.quote-calculator-modal{max-width:760px;margin:3vh auto;background:var(--surface,#fff);color:var(--text,#162033);border-radius:22px;padding:22px;box-shadow:0 24px 70px rgba(0,0,0,.35)}.quote-calculator-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.quote-calculator-head h2{margin:0}.quote-calculator-head p{margin:.35rem 0 0;color:var(--muted,#667085)}.quote-calculator-close{border:0;background:transparent;font-size:1.25rem;cursor:pointer;color:inherit}.quote-mode-tabs{display:flex;gap:8px;margin:18px 0}.quote-mode{flex:1;padding:11px;border-radius:12px;border:1px solid var(--border,#d7dce5);background:transparent;color:inherit;font-weight:700}.quote-mode.active{background:#172554;color:#fff;border-color:#172554}.quote-calculator-modal label{display:block;margin:10px 0}.quote-calculator-modal select,.quote-calculator-modal input{width:100%;margin-top:6px}.quote-extra-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.quote-upgrades{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.quote-upgrades label{display:flex;gap:8px;align-items:center;padding:10px;border:1px solid var(--border,#ddd);border-radius:12px}.quote-upgrades input{width:auto;margin:0}.quote-combo-info{padding:10px 12px;border-radius:10px;background:rgba(8,145,178,.1);margin:8px 0;font-size:.92rem}.quote-lines{margin-top:16px;border-top:1px solid var(--border,#ddd);padding-top:10px}.quote-line{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--border,#ddd)}.quote-total{display:flex;justify-content:space-between;align-items:center;padding:16px 0;font-size:1.1rem}.quote-total strong{font-size:1.7rem}.quote-actions{display:flex;gap:10px;flex-wrap:wrap}.quote-sale-form{margin-top:14px;padding-top:14px;border-top:1px solid var(--border,#ddd);display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.quote-sale-form small{grid-column:1/-1}.quote-draft-banner{border-left:5px solid #0891b2}.quote-draft-lines{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.quote-draft-lines span{padding:7px 10px;border-radius:999px;background:rgba(8,145,178,.12);font-size:.9rem}.quote-modal-open{overflow:hidden}@media(max-width:700px){.quote-calculator-fab span{display:none}.quote-calculator-fab{width:52px;height:52px;padding:0}.quote-upgrades{grid-template-columns:1fr}.quote-sale-form{grid-template-columns:1fr}.quote-extra-row{grid-template-columns:1fr}.quote-calculator-modal{padding:16px;margin:0 auto}.quote-calculator-backdrop{padding:8px}}
.quote-remove{border:0;background:transparent;color:#b42318;font-weight:900;cursor:pointer;padding:2px 5px;margin-left:5px}


/* v1.0.295 credentials in combined new-access cards */
.selected-access-account-credentials {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 8px 0 12px;
  padding: 10px 12px;
  border: 1px solid #d7e4ea;
  border-radius: 8px;
  background: #f7fbfc;
}
.selected-access-account-credentials div {
  min-width: 0;
}
.selected-access-account-credentials span {
  display: block;
  font-size: 0.76rem;
  color: #5a6870;
  margin-bottom: 2px;
}
.selected-access-account-credentials b {
  display: block;
  overflow-wrap: anywhere;
  word-break: break-word;
}
@media (max-width: 720px) {
  .selected-access-account-credentials { grid-template-columns: 1fr; }
}

/* v1.0.297 — secciones de venta con contraste reforzado */
.colored-sale-form .sale-form-group {
  overflow: hidden;
  border-left-width: 7px;
  background: #fff;
}
.colored-sale-form .sale-form-group-title {
  margin: -1rem -1rem .95rem;
  padding: .85rem 1rem;
  color: #fff;
}
.colored-sale-form .sale-form-group-title h3,
.colored-sale-form .sale-form-group-title p { color: inherit; }
.colored-sale-form .customer-data-group { border-color:#1f6fb2; background:#e8f3fc; }
.colored-sale-form .customer-data-group .sale-form-group-title { background:#1f6fb2; }
.colored-sale-form .sale-scope-group { border-color:#596780; background:#eef1f6; }
.colored-sale-form .sale-scope-group .sale-form-group-title { background:#596780; }
.colored-sale-form .access-data-group { border-color:#168658; background:#e6f6ed; }
.colored-sale-form .access-data-group .sale-form-group-title { background:#168658; }
.colored-sale-form .combo-data-group { border-color:#7045bf; background:#f0eafd; }
.colored-sale-form .combo-data-group .sale-form-group-title { background:#7045bf; }
.colored-sale-form .validity-data-group { border-color:#c88b00; background:#fff3c9; }
.colored-sale-form .validity-data-group .sale-form-group-title { background:#b97f00; }
.colored-sale-form .payment-data-group { border-color:#6d48aa; background:#eee6fa; }
.colored-sale-form .payment-data-group .sale-form-group-title { background:#6d48aa; }
.colored-sale-form .receipt-sale-group { border-color:#b64f35; background:#fcebe6; }
.colored-sale-form .receipt-sale-group .sale-form-group-title { background:#a74731; }
.colored-sale-form .sale-form-icon { color:#16232b; }

/* Fechas cerradas por defecto para reducir el largo del formulario. */
.sale-collapsible-group > summary { cursor:pointer; list-style:none; }
.sale-collapsible-group > summary::-webkit-details-marker { display:none; }
.sale-collapsible-group .sale-collapse-indicator { margin-left:auto; font-size:1.2rem; transition:transform .18s ease; }
.sale-collapsible-group[open] .sale-collapse-indicator { transform:rotate(180deg); }
.sale-collapsible-group:not([open]) > summary { margin-bottom:-1rem; }
.sale-collapsible-group[open] > .sale-collapsible-content { animation:sale-section-in .15s ease-out; }
@keyframes sale-section-in { from{opacity:.45; transform:translateY(-3px)} to{opacity:1; transform:none} }

/* v1.0.297 — clientes por servicio */
.service-customers-hero {
  display:flex; justify-content:space-between; gap:1rem; align-items:center;
  padding:1.15rem 1.25rem; margin-bottom:1rem; border-radius:16px;
  color:#fff; background:linear-gradient(135deg,#16324f,#087f8c);
}
.service-customers-hero h1 { margin:.15rem 0; color:#fff; }
.service-customers-hero p { margin:.2rem 0; color:#eaf7f8; }
.service-customers-kicker { font-weight:800; text-transform:uppercase; letter-spacing:.04em; font-size:.82rem; }
.service-customers-actions { display:flex; flex-wrap:wrap; gap:.55rem; }
.service-customers-actions .button { text-decoration:none; }
.service-status-tabs { display:flex; gap:.6rem; flex-wrap:wrap; margin-bottom:1rem; }
.service-status-tabs a {
  display:inline-flex; align-items:center; gap:.45rem; padding:.65rem .9rem;
  border-radius:999px; background:#e9f0f2; color:#243940; text-decoration:none; font-weight:750;
}
.service-status-tabs a.active { background:#087f8c; color:#fff; }
.service-status-tabs b { background:rgba(255,255,255,.22); padding:.12rem .42rem; border-radius:999px; }
.table-scroll { overflow-x:auto; }
.service-customer-table { width:100%; border-collapse:collapse; min-width:900px; }
.service-customer-table th { background:#173c51; color:#fff; text-align:left; padding:.7rem; }
.service-customer-table td { border-bottom:1px solid #dce7ea; padding:.72rem; vertical-align:top; }
.service-customer-table td small { display:block; color:#65757b; margin-top:.15rem; }
.service-state-pill { display:inline-flex; padding:.28rem .55rem; border-radius:999px; font-weight:800; font-size:.82rem; }
.service-state-pill.active { background:#d9f4e5; color:#17683c; }
.service-state-pill.expired { background:#ffe0e0; color:#9f2727; }
.empty-service-results { text-align:center; padding:1.4rem !important; color:#62747b; }
.dashboard-platform-card { transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.dashboard-platform-card:hover { box-shadow:0 8px 20px rgba(8,127,140,.12); }
@media (max-width:760px){
  .service-customers-hero{align-items:flex-start; flex-direction:column;}
}

/* v1.0.298 - Panel ejecutivo distribuidores + flujo de venta/renovación más amplio */
.distributor-executive-card{border-left:6px solid #1769aa;background:#f7fbff}
.distributor-executive-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}
.distributor-period-form{display:flex;gap:.65rem;align-items:end;flex-wrap:wrap}
.distributor-period-form label{min-width:170px}
.executive-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.8rem;margin:1rem 0}
.executive-metric{border:1px solid #d7e1ea;border-radius:14px;padding:1rem;background:#fff;box-shadow:0 2px 8px rgba(15,45,75,.05)}
.executive-metric span{display:block;font-weight:700;font-size:.9rem;margin-bottom:.35rem;color:#334155}
.executive-metric b{display:block;font-size:1.45rem;line-height:1.1;color:#0f172a}
.executive-metric small{display:block;margin-top:.4rem;color:#64748b}
.metric-sales{border-top:4px solid #057a8c}.metric-new-sales{border-top:4px solid #7c3aed}.metric-customers{border-top:4px solid #2563eb}.metric-active{border-top:4px solid #168658}.metric-commission{border-top:4px solid #b7791f}.metric-pending{border-top:4px solid #dc6b19}.metric-paid{border-top:4px solid #15803d}.metric-ticket{border-top:4px solid #0891b2}.metric-conversion{border-top:4px solid #9333ea}.metric-prizes{border-top:4px solid #d97706}
.comparison-strip{display:flex;gap:.85rem;flex-wrap:wrap;padding:.75rem 1rem;border-radius:10px;background:#eaf2f8;margin-bottom:1rem}
.distributor-performance-table th{white-space:nowrap}
.distributor-settings-panel>.action-collapsible-summary{background:#334155;color:#fff;border-radius:10px;padding:.85rem 1rem}

/* Vender otro acceso: usar el espacio disponible en escritorio */
.additional-sale-panel .action-collapsible-body{padding:1rem 1.25rem}
.additional-access-form>.operation-stepper{grid-column:1/-1;width:100%}
.additional-access-form>.guided-step{grid-column:1/-1;width:100%}
.additional-access-form .guided-step[data-step="1"]>.receipt-sale-group{width:100%;max-width:none;display:grid;grid-template-columns:minmax(280px,.9fr) minmax(420px,1.6fr);gap:1rem;align-items:start}
.additional-access-form .guided-step[data-step="1"]>.receipt-sale-group>.sale-form-group-title,
.additional-access-form .guided-step[data-step="1"]>.receipt-sale-group>.sale-payment-methods,
.additional-access-form .guided-step[data-step="1"]>.receipt-sale-group>.promotion-code-sale-box,
.additional-access-form .guided-step[data-step="1"]>.receipt-sale-group>.admin-no-receipt-box{grid-column:1}
.additional-access-form .guided-step[data-step="1"]>.receipt-sale-group>.receipt-paste-container{grid-column:2;grid-row:1 / span 5;min-height:300px}
.additional-access-form .guided-step[data-step="1"]>.receipt-sale-group>.receipt-paste-container .paste-zone{min-height:260px}
.additional-access-form .guided-step[data-step="1"]>.guided-next{width:min(420px,100%);justify-self:end}
.additional-access-form .guided-step[data-step="2"]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.additional-access-form .guided-step[data-step="2"]>.full-width,
.additional-access-form .guided-step[data-step="2"]>section,
.additional-access-form .guided-step[data-step="2"]>.sale-mode-options,
.additional-access-form .guided-step[data-step="2"]>.alignment-box,
.additional-access-form .guided-step[data-step="2"]>.selected-account-preview,
.additional-access-form .guided-step[data-step="2"]>.additional-combo-section,
.additional-access-form .guided-step[data-step="2"]>.wizard-actions{grid-column:1/-1}
.additional-access-form .guided-step[data-step="3"]{width:100%;max-width:none}
.additional-access-form .guided-summary{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));width:100%}

/* Renovar + vender: separación visual fuerte y controles amplios */
.receipt-renewal-panel>.action-collapsible-summary{background:#1f6fb2;color:#fff;border-radius:10px;padding:.9rem 1rem}
#combined-renewal-form{display:grid;grid-template-columns:1fr;gap:1rem;width:100%;max-width:none}
#combined-renewal-form>.wide{width:100%;max-width:none}
.combined-operation-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:.85rem}
.combined-operation-card{border:2px solid #9cc4df;border-left:6px solid #1f6fb2;background:#eef7fd;border-radius:14px;padding:.85rem}
.add-access-inside-renewal{border:2px solid #8e6bd8;border-left:6px solid #7045bf;background:#f4efff;border-radius:14px;padding:1rem}
.combined-price-summary{border:2px solid #d49a18;border-left:6px solid #b97f00;background:#fff5d8;border-radius:14px;padding:1rem}
.final-payment-step{border:2px solid #ca725e;border-left:6px solid #a74731;background:#fff0ec;border-radius:14px;padding:1rem}
.selected-new-access-card{border:2px solid #64b783;background:#edf9f1;border-radius:12px;padding:.85rem;margin-top:.7rem}
.selected-access-account-credentials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:.6rem 0}
.selected-access-account-credentials>div{background:#fff;border:1px solid #b8dec5;border-radius:9px;padding:.65rem;overflow-wrap:anywhere}

@media(max-width:900px){
  .additional-access-form .guided-step[data-step="1"]>.receipt-sale-group{grid-template-columns:1fr}
  .additional-access-form .guided-step[data-step="1"]>.receipt-sale-group>*{grid-column:1!important;grid-row:auto!important}
  .additional-access-form .guided-step[data-step="2"]{grid-template-columns:1fr}
  .additional-access-form .guided-step[data-step="2"]>*{grid-column:1!important}
  .selected-access-account-credentials{grid-template-columns:1fr}
  .combined-operation-list{grid-template-columns:1fr}
}


/* v1.0.299 - flujo guiado a ancho completo y auditoría */
.additional-sale-panel{display:block!important;width:100%!important;max-width:none!important;}
.additional-sale-panel>.action-collapsible-body{display:block!important;width:100%!important;max-width:none!important;box-sizing:border-box!important;}
.additional-access-form[data-guided-sale-wizard]{display:block!important;width:100%!important;max-width:none!important;margin:0!important;}
.additional-access-form[data-guided-sale-wizard]>.operation-stepper,
.additional-access-form[data-guided-sale-wizard]>.guided-step{width:100%!important;max-width:none!important;box-sizing:border-box!important;margin-left:0!important;margin-right:0!important;}
.additional-access-form[data-guided-sale-wizard]>.operation-stepper{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;margin-bottom:1rem!important;}
.additional-access-form[data-guided-sale-wizard]>.guided-step{display:block!important;}
.additional-access-form[data-guided-sale-wizard]>.guided-step[hidden]{display:none!important;}
.additional-access-form[data-guided-sale-wizard]>.guided-step[data-step="1"]>.receipt-sale-group{width:100%!important;max-width:none!important;}
.additional-access-form[data-guided-sale-wizard]>.guided-step[data-step="2"]{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1rem!important;}
.additional-access-form[data-guided-sale-wizard]>.guided-step[data-step="2"]>section,
.additional-access-form[data-guided-sale-wizard]>.guided-step[data-step="2"]>.full-width,
.additional-access-form[data-guided-sale-wizard]>.guided-step[data-step="2"]>.wizard-actions{grid-column:1/-1!important;}
.service-relations-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.false-positive-receipt-panel{border-left:5px solid #168658;background:#e8f7ef;}
@media(max-width:850px){
  .additional-access-form[data-guided-sale-wizard]>.operation-stepper{grid-template-columns:1fr!important;}
  .additional-access-form[data-guided-sale-wizard]>.guided-step[data-step="2"]{grid-template-columns:1fr!important;}
  .additional-access-form[data-guided-sale-wizard]>.guided-step[data-step="2"]>*{grid-column:1!important;}
}

/* v1.0.302 - trazabilidad Whaticket */
.whaticket-count-link{display:inline-flex;min-width:28px;justify-content:center;align-items:center;padding:3px 9px;border-radius:999px;font-weight:800;text-decoration:none}.whaticket-count-link.error{background:#fee2e2;color:#b91c1c}.whaticket-count-link.skipped{background:#fef3c7;color:#92400e}.whaticket-count-link:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.14)}

/* v1.0.303 - inventario interno por servicio */
.service-view-block{background:#fff;border:1px solid #cbd5e1;border-radius:16px;padding:1rem;margin:1rem 0;box-shadow:0 2px 8px rgba(15,23,42,.04)}
.service-view-block-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.service-view-block-head>div{display:flex;gap:.75rem;align-items:center}.service-view-block-head h2{margin:0}.service-view-block-head p{margin:.15rem 0 0;color:#64748b}.service-block-number{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;font-weight:900;background:#0f7490;color:#fff}.service-inventory-block{border-top:5px solid #176b87}.service-clients-block{border-top:5px solid #5b3fb5}
.service-inventory-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:.75rem;margin:.8rem 0 1rem}.inventory-metric{display:block;text-decoration:none;color:#0f172a;background:#f8fafc;border:2px solid #dbe4ec;border-radius:13px;padding:.8rem 1rem}.inventory-metric span{display:block;font-weight:700;font-size:.86rem;color:#475569}.inventory-metric b{display:block;font-size:1.55rem;margin-top:.15rem}.inventory-metric.selected{box-shadow:0 0 0 3px rgba(14,165,183,.15)}.inventory-metric.available{border-color:#7ac99a;background:#edf9f1}.inventory-metric.occupied{border-color:#7ba7e8;background:#eff6ff}.inventory-metric.attention{border-color:#e6ac58;background:#fff7e8}.inventory-metric.m3u{border-color:#a98ae8;background:#f7f2ff}
.service-inventory-search{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:.65rem;align-items:center;margin-bottom:1rem}.service-inventory-search input{width:100%;min-height:42px;border:1px solid #b9c7d5;border-radius:10px;padding:.65rem .8rem}
.service-inventory-table{width:100%;border-collapse:collapse}.service-inventory-table th{background:#173f56;color:#fff;text-align:left;padding:.65rem;white-space:nowrap}.service-inventory-table td{padding:.65rem;border-bottom:1px solid #e2e8f0;vertical-align:top}.service-inventory-table small{display:block;color:#64748b;margin-top:.15rem}.inventory-state{display:inline-flex;align-items:center;border-radius:999px;padding:.25rem .6rem;font-size:.78rem;font-weight:800;background:#e2e8f0;color:#334155;white-space:nowrap}.inventory-state.disponible{background:#dcfce7;color:#166534}.inventory-state.ocupada,.inventory-state.ocupado{background:#dbeafe;color:#1d4ed8}.inventory-state.por-vencer{background:#fef3c7;color:#92400e}.inventory-state.vencida,.inventory-state.sin-suscripción,.inventory-state.bloqueada,.inventory-state.baja{background:#fee2e2;color:#b91c1c}.inventory-state.en-revisión,.inventory-state.sin-perfiles{background:#f3e8ff;color:#7e22ce}
.secret-value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;overflow-wrap:anywhere}.secret-actions{display:flex;gap:.35rem;margin-top:.35rem}.secret-btn{border:1px solid #9fb2c4;background:#f8fafc;border-radius:7px;padding:.24rem .45rem;font-size:.75rem;cursor:pointer}.secret-btn:hover{background:#eaf4f8}.inventory-profile-details{margin-top:.4rem}.inventory-profile-details summary{cursor:pointer;color:#0f7490;font-weight:700}.inventory-profile-line{display:grid;grid-template-columns:minmax(150px,1fr) auto minmax(180px,1fr);gap:.5rem;padding:.38rem .45rem;background:#f8fafc;border-radius:7px;margin-top:.3rem}.mini-state{font-size:.75rem;font-weight:800;color:#475569}.assigned-customer{padding:.35rem .45rem;border:1px solid #d9e4ec;border-radius:8px;margin-bottom:.3rem}.assigned-customer a{display:inline-block;margin-top:.25rem;font-size:.78rem;font-weight:800;color:#087b93}.inventory-free-label{color:#166534;font-weight:800}.inventory-security-note{margin-top:.9rem;padding:.65rem .8rem;background:#f8fafc;border-radius:9px}.ibo-service-grid{display:grid;grid-template-columns:1fr 1.35fr;gap:1rem}.inventory-subpanel{border:1px solid #d9e4ec;border-radius:12px;padding:.75rem}.inventory-subpanel h3{margin:.1rem 0 .7rem}
@media(max-width:950px){.service-inventory-search{grid-template-columns:1fr}.ibo-service-grid{grid-template-columns:1fr}.inventory-profile-line{grid-template-columns:1fr}.service-inventory-table{min-width:900px}}

/* v1.0.304 — cambio de contraseña desde inventario interno */
.inventory-password-change{margin-top:.45rem;min-width:155px}
.inventory-password-change summary{cursor:pointer;font-size:.82rem;font-weight:800;color:#0b7180;list-style:none}
.inventory-password-change summary::-webkit-details-marker{display:none}
.inventory-password-change form{display:grid;grid-template-columns:minmax(135px,1fr) auto;gap:.35rem;margin-top:.45rem;align-items:center}
.inventory-password-change input{min-width:0;padding:.42rem .5rem;border:1px solid #b7c9d3;border-radius:7px;background:#fff}
.inventory-password-change small{display:block;margin-top:.3rem;color:#60727c;font-size:.72rem}
@media(max-width:900px){.inventory-password-change form{grid-template-columns:1fr}.inventory-password-change .button{width:100%}}

/* v1.0.306 — cuentas completas agrupadas en vencimientos */
.complete-account-expiration-profiles {
  margin-top: .35rem;
  padding: .35rem .5rem;
  border: 1px solid rgba(15, 169, 184, .28);
  border-radius: 8px;
  background: rgba(15, 169, 184, .06);
}
.complete-account-expiration-profiles summary {
  cursor: pointer;
  font-weight: 700;
  color: #087f8c;
}
.complete-account-expiration-profiles small {
  display: block;
  margin-top: .25rem;
}
.complete-account-action-hint {
  display: block;
  max-width: 220px;
  color: #5d6b73;
  line-height: 1.3;
}


@media (max-width: 1080px) {
  .receipt-verification-card {
    grid-template-columns: 1fr;
  }

  .receipt-verification-action {
    padding-left: 0;
    border-left: 0;
    border-top: 1px solid #e0e8ea;
    padding-top: 1rem;
  }
}

@media (max-width: 760px) {
  .receipt-card-preview {
    justify-content: center;
  }

  .receipt-thumb {
    max-width: 320px;
    height: auto;
  }

  .receipt-preview-main {
    min-height: 0;
  }

  .receipt-card-data {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 560px) {
  .receipt-card-data {
    grid-template-columns: 1fr;
  }
}


/* v1.0.310 - Boleta grande a la derecha y acciones compactas a la izquierda */
.receipt-verification-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 430px);
  grid-template-areas:
    "title preview"
    "data preview"
    "actions preview";
  column-gap: 1.2rem;
  row-gap: .85rem;
  align-items: start;
}

.receipt-card-main {
  display: contents;
}

.receipt-card-title {
  grid-area: title;
  margin: 0;
  padding: .15rem .15rem 0;
}

.receipt-card-data {
  grid-area: data;
}

.receipt-preview-main {
  grid-area: preview;
  min-height: 0;
  position: sticky;
  top: 12px;
  align-self: start;
  padding: .9rem;
}

.receipt-preview-main .receipt-preview-heading {
  margin-bottom: .25rem;
}

.receipt-preview-main .receipt-card-preview {
  min-height: 560px;
  align-items: center;
}

.receipt-preview-main .receipt-thumb {
  max-width: 405px;
  height: 570px;
  object-fit: contain;
  background: #fff;
}

.receipt-verification-action {
  grid-area: actions;
  display: grid;
  grid-template-columns: minmax(260px, .95fr) minmax(320px, 1.25fr);
  gap: .8rem 1rem;
  align-items: start;
  padding: .9rem 0 0;
  border-left: 0;
  border-top: 1px solid #dbe5e8;
}

.receipt-verification-action > .receipt-quick-edit-box {
  grid-column: 1;
  grid-row: 1 / span 3;
}

.receipt-verification-action > .bank-decision-box,
.receipt-verification-action > .quick-confirmed,
.receipt-verification-action > .quick-denied,
.receipt-verification-action > .bank-pending-badge {
  grid-column: 2;
}

.receipt-verification-action > .receipt-detail-link {
  grid-column: 2;
  justify-self: start;
}

.receipt-quick-edit-box,
.bank-decision-box,
.quick-denied,
.quick-confirmed {
  margin: 0;
}

.receipt-quick-edit-form {
  grid-template-columns: 1fr 1fr;
  gap: .55rem;
}

.receipt-quick-edit-form label:nth-of-type(3),
.receipt-quick-edit-form .receipt-save-button {
  grid-column: 1 / -1;
}

.receipt-bank-form.verify-form {
  grid-template-columns: 1fr 1fr;
  gap: .55rem .7rem;
}

.receipt-bank-form.verify-form button {
  grid-column: 1 / -1;
}

@media (max-width: 1250px) {
  .receipt-verification-card {
    grid-template-columns: minmax(0, 1fr) minmax(320px, 380px);
  }

  .receipt-verification-action {
    grid-template-columns: 1fr;
  }

  .receipt-verification-action > .receipt-quick-edit-box,
  .receipt-verification-action > .bank-decision-box,
  .receipt-verification-action > .quick-confirmed,
  .receipt-verification-action > .quick-denied,
  .receipt-verification-action > .bank-pending-badge,
  .receipt-verification-action > .receipt-detail-link {
    grid-column: 1;
    grid-row: auto;
  }
}

@media (max-width: 980px) {
  .receipt-verification-card {
    grid-template-columns: 1fr;
    grid-template-areas:
      "title"
      "data"
      "preview"
      "actions";
  }

  .receipt-preview-main {
    position: static;
  }

  .receipt-preview-main .receipt-card-preview {
    min-height: 0;
  }

  .receipt-preview-main .receipt-thumb {
    max-width: 360px;
    height: auto;
    max-height: 520px;
  }
}

@media (max-width: 650px) {
  .receipt-card-data,
  .receipt-quick-edit-form,
  .receipt-bank-form.verify-form {
    grid-template-columns: 1fr;
  }

  .receipt-quick-edit-form label:nth-of-type(3),
  .receipt-quick-edit-form .receipt-save-button,
  .receipt-bank-form.verify-form button {
    grid-column: 1;
  }
}

/* v1.0.477 - filtros de vencimiento en ficha grande */
.large-expiry-filter-bar .large-expiry-filter{
  text-decoration:none;
  cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease, outline-color .15s ease;
}
.large-expiry-filter-bar .large-expiry-filter:hover{
  transform:translateY(-1px);
  box-shadow:0 3px 8px rgba(15,23,42,.08);
}
.large-expiry-filter-bar .large-expiry-filter.active{
  outline:2px solid currentColor;
  outline-offset:2px;
  font-weight:800;
}

/* v1.0.481 - edición rápida compacta debajo de la cuenta */
.account-quick-edit-v481{
  grid-column:1 / -1;
  margin-top:.15rem!important;
  border:1px solid #d9e3ef!important;
  border-left:4px solid #8b5cf6!important;
  border-radius:10px!important;
  background:#fff!important;
  overflow:hidden;
  box-shadow:none!important;
}
.account-quick-edit-v481>summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:.48rem .7rem!important;
  min-height:34px;
  cursor:pointer;
  background:#f8f7ff!important;
  border-radius:0!important;
  font-weight:800;
  list-style:none;
}
.account-quick-edit-v481>summary::-webkit-details-marker{display:none}
.account-quick-edit-v481>summary small{
  color:#64748b;
  font-size:.75rem;
  font-weight:600;
}
.account-quick-edit-grid-v481{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:.55rem .7rem;
  padding:.75rem;
  border-top:1px solid #e5e7eb;
  background:#fff;
}
.account-quick-edit-grid-v481 label{
  display:grid;
  gap:.28rem;
  min-width:0;
  font-size:.78rem;
  font-weight:800;
  color:#334155;
}
.account-quick-edit-grid-v481 input{
  width:100%;
  min-width:0;
  padding:.48rem .55rem;
}
.account-quick-edit-actions-v481{
  grid-column:1 / -1;
  display:flex;
  justify-content:flex-end;
  margin-top:.05rem;
}
.account-quick-edit-actions-v481 button{
  width:auto!important;
  min-width:150px;
  padding:.5rem .8rem;
}
@media(max-width:1100px){
  .account-quick-edit-grid-v481{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .account-quick-edit-grid-v481{grid-template-columns:1fr}
  .account-quick-edit-v481>summary small{display:none}
  .account-quick-edit-actions-v481 button{width:100%!important}
}
