/* ===== Design tokens ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --primary:#d97706;
  --primary-light:#fbbf24;
  --primary-dark:#b45309;
  --primary-soft:#fff7ed;
  --primary-glow:rgba(217,119,6,.18);
  --bg:#f4f4f5;
  --bg-elevated:#ffffff;
  --surface:#ffffff;
  --sidebar-bg:#18181b;
  --sidebar-bg-end:#27272a;
  --sidebar-text:#a1a1aa;
  --sidebar-text-active:#fafafa;
  --white:#ffffff;
  --text:#18181b;
  --text-secondary:#71717a;
  --text-muted:#a1a1aa;
  --success:#16a34a;
  --success-soft:#f0fdf4;
  --danger:#dc2626;
  --danger-soft:#fef2f2;
  --warning:#f59e0b;
  --warning-soft:#fffbeb;
  --morosidad-leve:#ca8a04;
  --morosidad-leve-soft:#fefce8;
  --morosidad-medio:#ea580c;
  --morosidad-medio-soft:#fff7ed;
  --morosidad-grave:#dc2626;
  --morosidad-grave-soft:#fef2f2;
  --info:#2563eb;
  --info-soft:#eff6ff;
  --border:#e4e4e7;
  --border-strong:#d4d4d8;
  --shadow-sm:0 1px 2px rgba(24,24,27,.05);
  --shadow:0 4px 16px rgba(24,24,27,.08);
  --shadow-lg:0 20px 40px rgba(24,24,27,.12);
  --radius-sm:8px;
  --radius:14px;
  --radius-lg:18px;
  --header-h:64px;
  --sidebar-w:260px;
  --transition:150ms cubic-bezier(.4,0,.2,1);
}

html,body{
  height:100%;
  font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  color:var(--text);
  background:var(--bg);
  font-size:14px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
a{color:var(--primary);text-decoration:none}
button{cursor:pointer;font-family:inherit;border:none;background:none;font-size:inherit}
input,select,textarea{font-family:inherit;font-size:inherit}

/* ===== Login ===== */
#loginScreen{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:100vh;
  padding:24px;
  background:
    radial-gradient(ellipse 80% 60% at 20% 10%, rgba(251,191,36,.22), transparent 55%),
    radial-gradient(ellipse 70% 50% at 90% 90%, rgba(217,119,6,.16), transparent 50%),
    linear-gradient(145deg,#18181b 0%,#3f3f46 48%,#52525b 100%);
}
.login-card{
  background:rgba(255,255,255,.98);
  border:1px solid rgba(255,255,255,.65);
  border-radius:var(--radius-lg);
  padding:44px 40px;
  width:100%;
  max-width:420px;
  box-shadow:var(--shadow-lg);
  text-align:center;
  backdrop-filter:blur(12px);
}
.login-card .logo{margin-bottom:18px}
.login-card h1{
  font-size:1.65rem;
  font-weight:800;
  letter-spacing:-.02em;
  color:var(--text);
  margin-bottom:6px;
}
.login-card p{
  color:var(--text-secondary);
  margin-bottom:28px;
  font-size:.95rem;
}
.input-group{position:relative;margin-bottom:16px}
.input-group input,
.form-input{
  width:100%;
  padding:13px 44px 13px 16px;
  border:1.5px solid var(--border);
  border-radius:var(--radius-sm);
  font-size:.95rem;
  background:var(--white);
  transition:border-color var(--transition),box-shadow var(--transition);
}
.input-group input:focus,
.form-input:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 4px var(--primary-glow);
}
.input-group .toggle-pw{
  position:absolute;
  right:8px;
  top:50%;
  transform:translateY(-50%);
  padding:6px;
  color:var(--text-secondary);
  border-radius:6px;
}
.input-group .toggle-pw:hover{background:var(--bg);color:var(--text)}
.login-btn,
.btn-primary-block{
  width:100%;
  padding:13px 18px;
  background:linear-gradient(135deg,var(--primary-dark),var(--primary));
  color:#fff;
  border-radius:var(--radius-sm);
  font-size:1rem;
  font-weight:700;
  transition:transform var(--transition),box-shadow var(--transition),filter var(--transition);
  box-shadow:0 8px 20px var(--primary-glow);
}
.login-btn:hover,
.btn-primary-block:hover{
  filter:brightness(1.05);
  transform:translateY(-1px);
}
.login-error{color:var(--danger);font-size:.9rem;font-weight:600;margin-top:10px;min-height:22px;line-height:1.35}
.login-debug-hint{font-size:.72rem;color:var(--text-secondary);margin:6px 0 0;min-height:14px}
.login-emergency-btn{
  display:block;width:100%;margin-top:10px;padding:8px 12px;
  font-size:.78rem;background:transparent;border:1px dashed var(--border);
  color:var(--text-secondary);border-radius:8px;cursor:pointer;
}
.login-emergency-btn:hover{color:var(--danger);border-color:var(--danger)}
.login-footer{margin-top:14px}
.login-link{
  background:none;
  border:none;
  color:var(--text-secondary);
  font-size:.8rem;
  cursor:pointer;
  text-decoration:underline;
  text-underline-offset:3px;
}
.login-link:hover{color:var(--primary-dark)}
.recover-form{
  display:none;
  margin-top:18px;
  text-align:left;
  padding-top:18px;
  border-top:1px solid var(--border);
}
.recover-form p{
  font-size:.82rem;
  color:var(--text-secondary);
  margin-bottom:12px;
}
.form-stack{display:flex;flex-direction:column;gap:8px}
.form-stack .form-input{padding:11px 14px}
.pw-field{position:relative;display:block;width:100%}
.pw-field .form-input,
.pw-field input[type="password"],
.pw-field input[type="text"]{padding-right:44px;width:100%;box-sizing:border-box}
.pw-toggle{
  position:absolute;right:4px;top:50%;transform:translateY(-50%);
  width:36px;height:36px;margin:0;padding:0;border:none;border-radius:8px;
  background:transparent;color:var(--text-secondary,#6b7280);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem;line-height:1
}
.pw-toggle:hover{color:var(--text,#1f2937);background:var(--surface-2,#f3f4f6)}
.pw-toggle:focus-visible{outline:2px solid var(--primary,#2563eb);outline-offset:1px}
.pw-toggle[aria-pressed="true"]{color:var(--primary,#2563eb)}
.pw-reveal-field{
  display:inline-flex;align-items:center;gap:6px;max-width:100%;position:relative
}
.pw-reveal-field code{
  display:inline-block;min-width:7.5rem;padding:4px 8px;border-radius:6px;
  background:var(--bg,#f8fafc);font-size:.9rem;letter-spacing:.04em
}
.pw-reveal-field .pw-toggle{
  position:static;transform:none;flex-shrink:0;width:32px;height:32px
}
.provision-wizard-field .pw-field{margin-top:4px}
.btn-secondary-text{
  width:100%;
  padding:8px;
  background:none;
  border:none;
  color:var(--text-secondary);
  font-size:.78rem;
  cursor:pointer;
  margin-top:6px;
}
.recover-msg{font-size:.78rem;margin-top:8px}
.recover-msg.error{color:var(--danger)}
.recover-msg.success{color:var(--success)}

/* ===== App shell ===== */
#app{display:none;min-height:100vh}
.header{
  position:sticky;
  top:0;
  z-index:100;
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border);
  padding:0 24px;
  height:var(--header-h);
  display:flex;
  align-items:center;
  justify-content:space-between;
  box-shadow:var(--shadow-sm);
}
.header-start{display:flex;align-items:center;gap:14px}
.header .brand{
  display:flex;
  align-items:center;
  gap:12px;
  font-weight:800;
  font-size:1.05rem;
  letter-spacing:-.02em;
  color:var(--text);
}
.header .brand svg{flex-shrink:0;filter:drop-shadow(0 2px 4px rgba(217,119,6,.25))}
.header-actions{display:flex;align-items:center;gap:10px}
.panel-identity{
  font-size:.72rem;
  font-weight:600;
  color:var(--text-soft, #64748b);
  white-space:nowrap;
  max-width:260px;
  overflow:hidden;
  text-overflow:ellipsis;
  opacity:.9;
}
.sidebar-product-mark{
  flex-shrink:0;
  width:22px;
  height:auto;
  opacity:.92;
  filter:brightness(1.05);
}
.sidebar-product-text{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:0;
}
.sidebar-product-name{
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.01em;
  color:rgba(250,250,250,.88);
}
.sidebar-product-powered{
  font-size:.62rem;
  font-weight:500;
  color:rgba(161,161,170,.95);
  line-height:1.25;
}
#syncIndicator{
  font-size:.75rem;
  font-weight:600;
  white-space:nowrap;
  padding:6px 10px;
  border-radius:999px;
  background:var(--bg);
  border:1px solid var(--border);
  color:var(--text-secondary);
  cursor:default;
}
#syncIndicator.sync-ind--pending{cursor:pointer;border-color:#fbbf24;background:#fffbeb}
#syncIndicator.sync-ind--protected{border-color:#fcd34d;background:#fffbeb}
.sync-btn-wrap{position:relative}
.sync-btn-badge{
  position:absolute;
  top:-4px;
  right:-4px;
  min-width:16px;
  height:16px;
  padding:0 4px;
  font-size:10px;
  font-weight:700;
  line-height:16px;
  text-align:center;
  color:#fff;
  background:#d97706;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.hamburger{
  display:none;
  padding:8px;
  color:var(--text);
  border-radius:var(--radius-sm);
}
.hamburger:hover{background:var(--bg)}
.btn-ghost,
.btn-icon{
  padding:8px 12px;
  color:var(--text-secondary);
  font-size:.78rem;
  font-weight:600;
  border:1.5px solid var(--border);
  border-radius:var(--radius-sm);
  background:var(--white);
  transition:all var(--transition);
}
.btn-ghost:hover,
.btn-icon:hover{
  border-color:var(--border-strong);
  color:var(--text);
  background:var(--bg);
}
.logout-btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:8px 14px;
  color:var(--danger);
  font-weight:600;
  font-size:.78rem;
  border:1.5px solid #fecaca;
  border-radius:var(--radius-sm);
  background:var(--danger-soft);
  transition:all var(--transition);
}
.logout-btn:hover{
  background:var(--danger);
  color:#fff;
  border-color:var(--danger);
}

.layout{display:flex;min-height:calc(100vh - var(--header-h))}
.sidebar{
  width:var(--sidebar-w);
  background:linear-gradient(180deg,var(--sidebar-bg),var(--sidebar-bg-end));
  border-right:1px solid rgba(255,255,255,.06);
  padding:16px 12px 0;
  flex-shrink:0;
  overflow-y:auto;
  display:flex;
  flex-direction:column;
  height:calc(100vh - var(--header-h));
  position:sticky;
  top:var(--header-h);
  align-self:flex-start;
}
.sidebar-product{
  margin-top:auto;
  position:sticky;
  bottom:0;
  display:flex;
  align-items:center;
  gap:10px;
  padding:14px 10px 16px;
  border-top:1px solid rgba(255,255,255,.08);
  background:linear-gradient(180deg,rgba(24,24,27,.92),var(--sidebar-bg-end));
  opacity:.9;
}
.sidebar a{
  display:flex;
  align-items:center;
  gap:12px;
  padding:11px 14px;
  margin-bottom:4px;
  color:var(--sidebar-text);
  font-size:.86rem;
  font-weight:600;
  border-radius:var(--radius-sm);
  transition:all var(--transition);
}
.sidebar a:hover{
  background:rgba(255,255,255,.07);
  color:var(--sidebar-text-active);
}
.sidebar a.active{
  background:linear-gradient(90deg,rgba(217,119,6,.22),rgba(217,119,6,.08));
  color:#fde68a;
  box-shadow:inset 3px 0 0 var(--primary);
  font-weight:700;
}
.sidebar a svg{flex-shrink:0;opacity:.9}

.main{
  flex:1;
  padding:28px 32px 40px;
  overflow-y:auto;
  max-width:calc(100vw - var(--sidebar-w));
  background:
    radial-gradient(ellipse 60% 40% at 100% 0%, rgba(251,191,36,.06), transparent 50%),
    var(--bg);
}

.sidebar-overlay{
  display:none;
  position:fixed;
  inset:0;
  background:rgba(9,9,11,.45);
  backdrop-filter:blur(2px);
  z-index:200;
}
.sidebar-overlay.open{display:block}

/* ===== Pages ===== */
.page{display:none;animation:fadeIn .25s ease}
.page.active{display:block}
@keyframes fadeIn{
  from{opacity:0;transform:translateY(4px)}
  to{opacity:1;transform:translateY(0)}
}
.section-title{
  font-size:1.45rem;
  font-weight:800;
  letter-spacing:-.03em;
  margin-bottom:6px;
  color:var(--text);
}
.section-subtitle{
  color:var(--text-secondary);
  font-size:.92rem;
  margin-bottom:24px;
  max-width:72ch;
  line-height:1.6;
}
.main h3{
  font-size:1rem;
  font-weight:700;
  margin-bottom:14px;
  color:var(--text);
  letter-spacing:-.01em;
}

/* ===== Cards & KPIs ===== */
.card{
  background:var(--surface);
  border-radius:var(--radius);
  padding:22px;
  box-shadow:var(--shadow-sm);
  border:1px solid var(--border);
  transition:box-shadow var(--transition),border-color var(--transition);
}
.card:hover{box-shadow:var(--shadow)}
.kpi-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
  gap:16px;
  margin-bottom:28px;
}
.kpi-ref-panel{
  grid-column:1/-1;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:14px 16px;
  margin-bottom:4px;
  box-shadow:var(--shadow-sm);
}
.kpi-ref-row{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px;
}
.kpi-ref-label{
  font-size:.82rem;
  font-weight:700;
  color:var(--text);
  margin-right:4px;
}
.kpi-ref-date{
  padding:8px 10px;
  border:1.5px solid var(--border);
  border-radius:8px;
  font-size:.84rem;
  font-family:inherit;
  background:var(--white);
  min-width:148px;
}
.kpi-ref-btn{
  padding:8px 14px;
  font-size:.8rem;
  font-weight:700;
  border:1.5px solid var(--border);
  border-radius:8px;
  background:var(--white);
  color:var(--text);
  cursor:pointer;
  white-space:nowrap;
}
.kpi-ref-btn--primary{
  background:var(--primary);
  border-color:var(--primary);
  color:#fff;
}
.kpi-ref-btn:hover{filter:brightness(.97)}
.kpi-ref-btn--primary:hover{filter:brightness(1.05)}
.kpi-ref-hint{
  margin:10px 0 0;
  font-size:.75rem;
  color:var(--text-secondary);
  line-height:1.4;
}
.kpi-ref-meta{
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--border);
  font-size:.78rem;
  color:var(--text-secondary);
}
.kpi-ref-meta b{color:var(--text);font-weight:700}
.kpi-ref-note{font-size:.72rem;color:var(--text-secondary);font-style:italic}
.kpi-ref-note--criterion{
  display:block;
  margin-top:10px;
  padding:10px 12px;
  background:var(--warning-soft);
  border:1px solid #fde68a;
  border-radius:var(--radius-sm);
  color:#78350f;
  font-style:normal;
  line-height:1.45;
}
.kpi-ref-count{margin-left:auto;font-size:.72rem;color:var(--text-secondary)}
@media (max-width:768px){
  .kpi-ref-row{flex-direction:column;align-items:stretch}
  .kpi-ref-date,.kpi-ref-btn{width:100%}
  .kpi-ref-count{margin-left:0;width:100%}
}
.kpi-card{
  display:flex;
  flex-direction:column;
  gap:6px;
  position:relative;
  overflow:hidden;
}
.kpi-card::before{
  content:'';
  position:absolute;
  top:0;left:0;right:0;
  height:3px;
  background:linear-gradient(90deg,var(--primary),var(--primary-light));
  opacity:.85;
}
.kpi-card .kpi-icon{
  font-size:1.35rem;
  margin-bottom:2px;
  width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;
  border-radius:12px;
  background:var(--primary-soft);
}
.kpi-card .kpi-label{
  font-size:.68rem;
  color:var(--text-secondary);
  text-transform:uppercase;
  font-weight:700;
  letter-spacing:.08em;
}
.kpi-card .kpi-value{
  font-size:1.75rem;
  font-weight:800;
  letter-spacing:-.03em;
  color:var(--text);
  line-height:1.15;
}
.kpi-card--morosidad::before{background:linear-gradient(90deg,var(--morosidad-leve),var(--morosidad-medio),var(--morosidad-grave))}
.kpi-card--morosidad .kpi-morosidad-body{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.kpi-card--morosidad .kpi-morosidad-line{
  font-size:.82rem;
  line-height:1.45;
  color:var(--text-secondary);
  padding:6px 10px;
  border-radius:8px;
  background:var(--bg);
}
.kpi-card--morosidad .kpi-morosidad-tag{
  display:inline-block;
  min-width:52px;
  font-weight:800;
  font-size:.72rem;
  text-transform:uppercase;
  letter-spacing:.03em;
  margin-right:6px;
}
.kpi-morosidad-line--leve .kpi-morosidad-tag{color:var(--morosidad-leve)}
.kpi-morosidad-line--medio .kpi-morosidad-tag{color:var(--morosidad-medio)}
.kpi-morosidad-line--grave .kpi-morosidad-tag{color:var(--morosidad-grave)}
.kpi-morosidad-line--leve{border-left:3px solid var(--morosidad-leve)}
.kpi-morosidad-line--medio{border-left:3px solid var(--morosidad-medio)}
.kpi-morosidad-line--grave{border-left:3px solid var(--morosidad-grave)}
.kpi-card .kpi-sub{
  font-size:.78rem;
  color:var(--text-secondary);
  line-height:1.4;
}

/* ===== Tables ===== */
.table-wrap{
  overflow-x:auto;
  border-radius:var(--radius);
  border:1px solid var(--border);
  background:var(--white);
  margin-bottom:20px;
  max-height:620px;
  overflow-y:auto;
  box-shadow:var(--shadow-sm);
}
table{width:100%;border-collapse:collapse;font-size:.84rem}
thead{position:sticky;top:0;z-index:5}
th{
  background:#f8fafc;
  padding:13px 16px;
  text-align:left;
  font-weight:700;
  color:#64748b;
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.06em;
  border-bottom:2px solid var(--border);
  white-space:nowrap;
}
td{
  padding:11px 16px;
  border-bottom:1px solid #f1f5f9;
  white-space:nowrap;
  color:var(--text);
  font-variant-numeric:tabular-nums;
}
tbody tr{transition:background var(--transition)}
tbody tr:hover{background:#fffbeb}
tbody tr:nth-child(even){background:#fafafa}
tbody tr:nth-child(even):hover{background:#fffbeb}
tbody tr:last-child td{border-bottom:none}

/* ===== Badges ===== */
.badge{
  display:inline-flex;
  align-items:center;
  padding:4px 10px;
  border-radius:999px;
  font-size:.68rem;
  font-weight:700;
  line-height:1.4;
  letter-spacing:.02em;
  border:1px solid transparent;
}
.badge-success{background:var(--success-soft);color:#15803d;border-color:#bbf7d0}
.badge-danger{background:var(--danger-soft);color:#b91c1c;border-color:#fecaca}
.badge-warning{background:var(--warning-soft);color:#92400e;border-color:#fde68a}
.badge-info{background:var(--info-soft);color:#1d4ed8;border-color:#bfdbfe}
.badge-gray{background:#f4f4f5;color:#52525b;border-color:#e4e4e7}

/* ===== Filters & search ===== */
.filter-bar{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-bottom:18px;
  align-items:center;
  padding:12px 14px;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
}
.filter-btn{
  padding:7px 16px;
  border-radius:999px;
  font-size:.78rem;
  font-weight:600;
  border:1.5px solid var(--border);
  color:var(--text-secondary);
  background:var(--white);
  transition:all var(--transition);
}
.filter-btn:hover{
  border-color:var(--primary);
  color:var(--primary-dark);
  background:var(--primary-soft);
}
.filter-btn.active{
  background:linear-gradient(135deg,var(--primary-dark),var(--primary));
  color:#fff;
  border-color:transparent;
  box-shadow:0 4px 12px var(--primary-glow);
}
.filter-bar select,
.toolbar-select{
  padding:7px 12px;
  border:1.5px solid var(--border);
  border-radius:999px;
  font-size:.78rem;
  font-weight:600;
  background:var(--white);
  color:var(--text-secondary);
  cursor:pointer;
  transition:border-color var(--transition);
}
.filter-bar select:focus,
.toolbar-select:focus{
  outline:none;
  border-color:var(--primary);
}
.search-box{
  position:relative;
  margin-bottom:18px;
  max-width:400px;
}
.search-box input{
  width:100%;
  padding:11px 14px 11px 40px;
  border:1.5px solid var(--border);
  border-radius:var(--radius-sm);
  font-size:.86rem;
  background:var(--white);
  box-shadow:var(--shadow-sm);
  transition:border-color var(--transition),box-shadow var(--transition);
}
.search-box input:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 4px var(--primary-glow);
}
.search-box svg{
  position:absolute;
  left:12px;
  top:50%;
  transform:translateY(-50%);
  color:var(--text-muted);
}

/* ===== Occupation table ===== */
.ocupacion-hint{
  margin:-6px 0 12px;
  font-size:.8rem;
  color:var(--text-secondary);
}
.ocupacion-version-marker{
  display:inline-flex;
  align-items:center;
  margin:0 0 12px;
  padding:7px 12px;
  border-radius:999px;
  background:#dcfce7;
  color:#166534;
  border:1px solid #86efac;
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.04em;
}
/* Fuera de UX habitual; visible solo con data-panel-dev / enableOcupacionDiagUi() */
.panel-dev-only{display:none!important}
html[data-panel-dev="1"] .ocup-diag-trigger.panel-dev-only{
  display:inline-flex!important;
  align-items:center;
}
html[data-panel-dev="1"] .ocupacion-version-marker.panel-dev-only{
  display:inline-flex!important;
}
.ocupacion-toolbar{
  display:grid;
  grid-template-columns:repeat(4, minmax(160px, 1fr));
  gap:12px;
  align-items:flex-end;
  padding:14px;
  margin-bottom:14px;
}
@media (max-width: 900px){
  .ocupacion-toolbar{grid-template-columns:repeat(2, minmax(160px, 1fr))}
}
.ocupacion-toolbar label{
  display:flex;
  flex-direction:column;
  gap:5px;
  color:var(--text-secondary);
  font-size:.72rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.ocupacion-toolbar select{
  min-width:190px;
  padding:8px 12px;
  border:1.5px solid var(--border);
  border-radius:10px;
  background:var(--white);
  color:var(--text-primary);
  font-size:.84rem;
}
.ocupacion-table-wrap,
.ocupacion-table-wrapper{
  width:100%;
  max-width:100%;
  overflow-x:auto;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  max-height:680px;
}
.ocupacion-table{
  width:auto;
  min-width:1100px;
  max-width:none;
  table-layout:fixed;
}
.ocupacion-table th,
.ocupacion-table td{
  white-space:nowrap;
  vertical-align:middle;
}
.ocupacion-table th.ocupacion-th-sortable{
  cursor:pointer;
  user-select:none;
  color:var(--text-secondary);
  transition:color .15s ease,background .15s ease;
}
.ocupacion-table th.ocupacion-th-sortable:hover{
  color:var(--primary);
  background:#f8fafc;
}
.ocupacion-table th.ocupacion-th-sort--active{
  color:var(--primary);
  background:#eff6ff;
  font-weight:800;
}
.ocupacion-table td{
  font-size:.82rem;
}
.ocupacion-table th:nth-child(1),
.ocupacion-table td:nth-child(1){width:110px}
.ocupacion-table th:nth-child(2),
.ocupacion-table td:nth-child(2){width:70px}
.ocupacion-table th:nth-child(3),
.ocupacion-table td:nth-child(3){width:100px}
.ocupacion-table th:nth-child(4),
.ocupacion-table td:nth-child(4){width:72px}
.ocupacion-table th:nth-child(5),
.ocupacion-table td:nth-child(5){width:210px}
.ocupacion-table th:nth-child(6),
.ocupacion-table td:nth-child(6){width:170px}
.ocupacion-table th:nth-child(7),
.ocupacion-table td:nth-child(7){width:115px}
.ocupacion-table th:nth-child(8),
.ocupacion-table td:nth-child(8){width:95px}
.ocupacion-table th:nth-child(9),
.ocupacion-table td:nth-child(9){width:190px}
.ocupacion-table th:nth-child(10),
.ocupacion-table td:nth-child(10){width:95px}
.ocupacion-table .ocupacion-table-msg{
  white-space:normal;
  text-align:center;
}
@media (max-width:768px){
  .ocupacion-table-wrap::after,
  .ocupacion-table-wrapper::after{
    content:'Desliza horizontalmente →';
    display:block;
    padding:6px 2px 0;
    font-size:.7rem;
    color:var(--text-secondary);
    font-weight:600;
  }
}
.ocupacion-summary{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:0 0 12px;
}
.ocupacion-summary .summary-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:7px 10px;
  border-radius:999px;
  background:var(--white);
  border:1px solid var(--border);
  color:var(--text-secondary);
  font-size:.78rem;
  font-weight:700;
}
.ocupacion-summary .summary-pill--link{
  cursor:pointer;
  color:var(--primary);
  border-color:#bfdbfe;
  background:#eff6ff;
}
.ocupacion-summary .summary-pill--link:hover{
  background:#dbeafe;
}
.ocupacion-summary .summary-pill--muted{
  font-weight:600;
  background:transparent;
  border-style:dashed;
}
.ocupacion-row--occupied td{background:#f0fdf4}
.ocupacion-row--empty td{background:#f8fafc}
.ocupacion-row--soon td{background:#fff7ed}
.ocupacion-row--unavailable td{
  background:#fef2f2;
  border-top:1px solid #fecaca;
  border-bottom:1px solid #fecaca;
}
.ocupacion-row--unavailable td:first-child{
  box-shadow:inset 3px 0 0 #f87171;
}
.ocupacion-stale-banner{
  margin:0 0 12px;
  padding:12px 14px;
  border-radius:10px;
  border:1px solid #fcd34d;
  background:#fffbeb;
  color:#92400e;
  font-size:.82rem;
  line-height:1.45;
}
.ocupacion-stale-banner__title{
  margin:0 0 6px;
  font-weight:700;
}
.ocupacion-stale-banner__detail,
.ocupacion-stale-banner__hint{
  margin:0 0 4px;
}
.ocupacion-stale-banner__hint{
  color:#b45309;
  font-size:.78rem;
}
.ocupacion-stale-more{
  color:#a16207;
  font-weight:600;
}
.ocupacion-row--stale-override td{
  background:#fffbeb !important;
  border-top:1px solid #fde68a;
  border-bottom:1px solid #fde68a;
}
.ocupacion-row--stale-override td:first-child{
  box-shadow:inset 3px 0 0 #f59e0b;
}
.ocupacion-stale-override{
  max-width:280px;
}
.ocupacion-stale-msg{
  margin:0 0 8px;
  font-size:.75rem;
  line-height:1.35;
  color:#92400e;
}
.mini-action-btn--warn{
  background:#fef3c7;
  border-color:#f59e0b;
  color:#92400e;
  font-weight:700;
}
.mini-action-btn--warn:hover{
  background:#fde68a;
}
.badge-no-disponible{
  background:#fee2e2;
  color:#b91c1c;
  border:1px solid #fecaca;
  font-weight:800;
  letter-spacing:.02em;
}
.no-disponible-motivo{
  color:#991b1b;
  font-weight:600;
}
.ocupacion-na{
  color:var(--text-secondary);
  font-size:.82rem;
}
.kpi-label--link{
  cursor:pointer;
  transition:color .15s ease;
}
.kpi-label--link:hover{
  color:var(--primary);
  text-decoration:underline;
}
.kpi-card--link{
  cursor:pointer;
  transition:transform .12s ease, box-shadow .15s ease, border-color .15s ease;
}
.kpi-card--link:hover{
  transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,0.08);
  border-color:var(--primary);
}
.kpi-card--link:focus-visible{
  outline:2px solid var(--primary);
  outline-offset:2px;
}
.kpi-cta{
  color:var(--primary);
  font-weight:700;
  white-space:nowrap;
}
.kpi-morosidad-line--link{
  cursor:pointer;
  transition:background-color .15s ease;
}
.kpi-morosidad-line--link:hover{
  background:rgba(0,0,0,0.04);
}
.kpi-morosidad-line--link:focus-visible{
  outline:2px solid var(--primary);
  outline-offset:1px;
}
.imp-severity-filters{
  align-items:center;
  gap:6px;
}
.imp-severity-filters .filter-bar-label{
  font-size:.82rem;
  color:var(--text-secondary);
  font-weight:600;
  margin-right:2px;
}

/* ===== Revisión de Precios ===== */
.rev-toolbar{ padding:14px 16px; margin-bottom:14px; }
.rev-filters{
  display:flex;
  flex-wrap:wrap;
  gap:12px 16px;
  align-items:flex-end;
}
.rev-filters label{
  display:flex;
  flex-direction:column;
  gap:4px;
  font-size:.76rem;
  font-weight:600;
  color:var(--text-secondary);
}
.rev-filters select,
.rev-filters input[type="number"],
.rev-filters input[type="search"]{
  padding:7px 10px;
  border:1px solid var(--border);
  border-radius:6px;
  font-size:.9rem;
  min-width:130px;
}
.rev-filters .rev-check-label{
  flex-direction:row;
  align-items:center;
  gap:6px;
  font-size:.85rem;
}
.rev-search-label{ flex:1 1 200px; }
.rev-search-label input{ width:100%; }
.rev-toolbar-meta{
  display:flex;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:8px;
  margin-top:12px;
  font-size:.82rem;
  color:var(--text-secondary);
}
.rev-count{ font-weight:700; color:var(--text); }

/* Atajos de teclado */
.rev-shortcuts-btn{ padding:4px 10px; font-size:.8rem; }
.rev-shortcuts-panel{
  margin-top:10px;
  border:1px solid #bae6fd;
  border-radius:10px;
  background:#f0f9ff;
  padding:8px 12px;
}
.rev-shortcuts-head{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  font-weight:700; margin-bottom:6px; font-size:.82rem; color:#075985;
}
.rev-shortcuts-hide{
  cursor:pointer; font-size:.72rem; padding:2px 8px; border-radius:6px;
  border:1px solid #7dd3fc; background:#fff; color:#0369a1; font-weight:600;
}
.rev-shortcuts-hide:hover{ background:#e0f2fe; }
.rev-shortcuts-list{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:4px 16px;
}
.rev-shortcuts-list li{ display:flex; align-items:center; gap:6px; font-size:.8rem; color:#334155; }
.rev-shortcuts-list span{ flex:1; }
.rev-shortcuts-list kbd{
  display:inline-block; min-width:16px; text-align:center;
  padding:1px 5px; font-size:.72rem; font-family:inherit;
  background:#fff; border:1px solid #bae6fd; border-bottom-width:2px;
  border-radius:5px; color:#075985;
}

/* Banner modo campaña en Comunicaciones */
.com-campaign-banner{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  background:#eff6ff; border:1px solid #bfdbfe; color:#1e3a8a;
  border-radius:10px; padding:10px 14px; margin-bottom:12px; font-size:.9rem;
}
.com-campaign-banner .btn-sm{ padding:4px 10px; font-size:.8rem; }

/* Historial de comunicación por cliente (detalle de campaña) */
.rev-com-hist{ display:flex; flex-direction:column; gap:2px; font-size:.74rem; }
.rev-com-hist--none{ color:var(--text-secondary); font-style:italic; }
.rev-com-hist-row{ display:flex; align-items:center; gap:6px; }
.rev-com-medio{
  display:inline-block; padding:1px 6px; border-radius:5px; font-weight:600;
  background:#e5e7eb; color:#374151;
}
.rev-com-medio--whatsapp{ background:#dcfce7; color:#166534; }
.rev-com-medio--email{ background:#dbeafe; color:#1e40af; }
.rev-com-medio--manual{ background:#fef3c7; color:#92400e; }
.rev-com-medio--ambos{ background:#ede9fe; color:#5b21b6; }
.rev-com-res{ color:#334155; }
.rev-com-fecha{ color:var(--text-secondary); margin-left:auto; }

/* Ciclo de vida de campañas */
.rev-camp-head-tools{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.rev-info-btn{ padding:4px 10px; font-size:.8rem; }
.rev-lifecycle-flow{
  display:flex; flex-direction:column; align-items:center; gap:4px;
  margin:6px 0 16px; text-align:center;
}
.rev-lc-step{
  display:inline-block; padding:5px 14px; border-radius:999px;
  font-weight:700; font-size:.9rem;
}
.rev-lc-arrow{ color:var(--text-secondary); font-size:1rem; line-height:1; }
.rev-lifecycle-list{ margin:0; padding-left:18px; display:flex; flex-direction:column; gap:8px; }
.rev-lifecycle-list li{ font-size:.9rem; color:var(--text); line-height:1.45; }

/* Pantalla dedicada: Comunicar campaña */
.rev-com-summary{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.rev-com-chip{
  display:inline-flex; align-items:center; gap:6px; padding:6px 12px;
  border-radius:999px; font-size:.85rem; font-weight:600; background:var(--bg-subtle,#f1f5f9); color:var(--text);
}
.rev-com-chip strong{ font-size:1rem; }
.rev-com-chip--email{ background:rgba(59,130,246,0.12); color:var(--primary); }
.rev-com-chip--wa{ background:rgba(16,185,129,0.14); color:var(--success); }
.rev-com-chip--ambos{ background:rgba(139,92,246,0.14); color:#7c3aed; }
.rev-com-chip--carta{ background:rgba(245,158,11,0.16); color:var(--warning); }
.rev-com-chip--done{ background:rgba(16,185,129,0.18); color:var(--success); }

.rev-com-tabs{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; border-bottom:1px solid var(--border,#e2e8f0); }
.rev-com-tab{
  border:none; background:transparent; padding:8px 14px; cursor:pointer;
  font-size:.9rem; font-weight:600; color:var(--text-secondary); border-bottom:3px solid transparent;
}
.rev-com-tab.is-active{ color:var(--primary); border-bottom-color:var(--primary); }

.rev-com-tpl{ margin-bottom:12px; }
.rev-com-tpl summary{ cursor:pointer; font-weight:600; font-size:.9rem; margin-bottom:6px; }
.rev-com-tpl textarea{ width:100%; box-sizing:border-box; font-family:inherit; font-size:.9rem; padding:8px; border:1px solid var(--border,#cbd5e1); border-radius:8px; }
.rev-com-tpl code{ background:var(--bg-subtle,#f1f5f9); padding:1px 5px; border-radius:4px; font-size:.8rem; }

.rev-com-bulk{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.rev-com-table td{ vertical-align:top; }
.rev-com-canal{ color:var(--text-secondary); }
.rev-com-badges{ display:flex; flex-wrap:wrap; gap:4px; margin-bottom:4px; }
.rev-com-badge{
  display:inline-block; padding:2px 8px; border-radius:999px; font-size:.72rem; font-weight:600;
  background:rgba(245,158,11,0.14); color:var(--warning);
}
.rev-com-badge.is-done{ background:rgba(16,185,129,0.16); color:var(--success); }
.rev-com-estado-ok{ color:var(--success); font-weight:600; font-size:.82rem; }
.rev-com-estado-pend{ color:var(--text-secondary); font-size:.82rem; }
.rev-com-acts{ display:flex; flex-wrap:wrap; gap:4px; }
.rev-com-act{
  border:1px solid var(--border,#cbd5e1); background:#fff; border-radius:6px;
  padding:4px 8px; font-size:.78rem; cursor:pointer; color:var(--text);
}
.rev-com-act:hover{ border-color:var(--primary); color:var(--primary); }
.rev-com-act--manual{ color:var(--text-secondary); }
.rev-com-future{ margin-top:16px; padding-top:12px; border-top:1px dashed var(--border,#e2e8f0); }
.rev-com-future-btns{ display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }

/* Modal QR del enlace */
.rev-qr-card{ max-width:340px; }
.rev-qr-body{ text-align:center; }
.rev-qr-box{ display:inline-block; padding:12px; background:#fff; border:1px solid var(--border,#e2e8f0); border-radius:12px; min-height:240px; }
.rev-qr-box img, .rev-qr-box canvas{ display:block; margin:0 auto; }
.rev-qr-caption{ font-weight:600; margin:12px 0 4px; }

/* Estado de revisión: confirmada / estimada / sin revisión */
.rev-revst{ display:inline-block; padding:1px 7px; border-radius:999px; font-size:.72rem; font-weight:600; white-space:nowrap; }
.rev-revst--ok{ background:rgba(16,185,129,0.16); color:var(--success); }
.rev-revst--exec{ background:rgba(16,185,129,0.22); color:#047857; font-weight:600; }
.rev-revst--est{ background:rgba(245,158,11,0.18); color:#b45309; }
.rev-revst--d24{ background:rgba(59,130,246,0.16); color:#1d4ed8; }
.rev-revst--d22{ background:rgba(245,158,11,0.18); color:#b45309; }
.rev-revst--none{ background:rgba(107,114,128,0.16); color:var(--text-secondary); }
.rev-revst--exc{ background:rgba(107,114,128,0.12); color:var(--text-secondary); }
.rev-estado--estimada{ background:rgba(245,158,11,0.18); color:#b45309; }
.rev-estado--ded2024{ background:rgba(59,130,246,0.14); color:#1d4ed8; }
.rev-estado--ded2022{ background:rgba(245,158,11,0.16); color:#b45309; }
.rev-com-warn{
  flex-basis:100%; margin-top:8px; padding:8px 12px; border-radius:8px;
  background:rgba(245,158,11,0.12); border:1px solid rgba(245,158,11,0.3);
  color:#92400e; font-size:.85rem; line-height:1.4;
}

.rev-sim{ padding:14px 16px; margin-bottom:14px; }
.rev-sim-rule{
  display:flex;
  flex-wrap:wrap;
  gap:12px 16px;
  align-items:flex-end;
  margin-bottom:12px;
}
.rev-sim-rule label{
  display:flex;
  flex-direction:column;
  gap:4px;
  font-size:.76rem;
  font-weight:600;
  color:var(--text-secondary);
}
.rev-sim-rule select,
.rev-sim-rule input{
  padding:7px 10px;
  border:1px solid var(--border);
  border-radius:6px;
  font-size:.9rem;
  min-width:150px;
}
.rev-manual-hint{
  font-size:.8rem;
  font-weight:500;
  color:var(--warning);
  align-self:center;
}
.rev-cap-toggle{ align-self:center; }
.rev-cap-fields{ display:flex; gap:12px; flex-wrap:wrap; align-items:flex-end; }
.rev-cap-fields label{ display:flex; flex-direction:column; gap:4px; font-size:.74rem; font-weight:600; color:var(--text-secondary); }
.rev-cap-fields input{ padding:7px 10px; border:1px solid var(--border); border-radius:6px; font-size:.9rem; min-width:110px; }
.rev-summary{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-bottom:12px;
}
.rev-sum-item{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:8px 14px;
  background:var(--bg, #f8fafc);
  border:1px solid var(--border);
  border-radius:8px;
  min-width:150px;
}
.rev-sum-item--accent{ border-color:var(--primary); background:rgba(59,130,246,0.06); }
.rev-sum-label{ font-size:.74rem; color:var(--text-secondary); font-weight:600; }
.rev-sum-value{ font-size:1.05rem; font-weight:700; }
.rev-sum-value small{ font-size:.7rem; font-weight:600; color:var(--text-secondary); }
.rev-sum-sub{ display:block; font-size:.72rem; font-weight:500; color:var(--text-secondary); margin-top:2px; }
.rev-sum-breakdown{
  flex:1 1 100%; font-size:.78rem; color:var(--text-secondary);
  padding:8px 12px; margin:0 0 4px; border-radius:6px; background:var(--bg-secondary, #f8fafc);
}
.rev-kpi-scope-note{
  margin:-6px 0 14px; font-size:.78rem; color:var(--text-secondary); line-height:1.45;
}
.rev-diag-kpi-wrap{
  margin:0 0 18px; padding:14px 16px 12px;
  border:1px dashed var(--border, #e5e7eb); border-radius:10px;
  background:rgba(248,250,252,0.7);
}
.rev-diag-kpi-title{
  margin:0 0 6px; font-size:.92rem; font-weight:600; color:var(--text-secondary);
}
.rev-diag-kpi-note{
  margin:0 0 12px; font-size:.75rem; color:var(--text-secondary); line-height:1.45;
}
.rev-diag-kpi-note code{ font-size:.72rem; }
.rev-diag-kpi-grid .kpi-card{ border-style:dashed; }
.rev-diag-kpi .kpi-value{ font-size:1.35rem; }
.rev-diag-kpi-meta{
  margin:10px 0 0; font-size:.72rem; color:var(--text-secondary);
}
.rev-diag-kpi--ledger .kpi-value{ color:#047857; }
.rev-diag-kpi--ded .kpi-value{ color:#1d4ed8; }
.rev-diag-kpi--none .kpi-value{ color:var(--text-secondary); }
.rev-selection-warn{
  margin:0 0 8px; padding:10px 12px; font-size:.8rem; line-height:1.45;
  color:var(--warning, #b45309); background:rgba(245,158,11,0.12);
  border:1px solid rgba(245,158,11,0.35); border-radius:8px;
}
.rev-sim-actions--warn{ margin:0 0 10px; padding:0; }
.rev-sim-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px;
}
.rev-policy-save-notice{
  margin:0 0 12px; padding:10px 12px; font-size:.82rem; line-height:1.45;
  background:rgba(59,130,246,0.08); border:1px solid rgba(59,130,246,0.22); border-radius:8px;
  color:var(--text-primary);
}
.rev-policy-save-notice-icon{ margin-right:4px; }
  font-size:.78rem;
  color:var(--text-secondary);
  font-style:italic;
}

.rev-table{ width:100%; }
.rev-table th, .rev-table td{ white-space:nowrap; }
.rev-check-cell{ width:36px; text-align:center; }
.rev-manual-input{
  width:90px;
  padding:4px 6px;
  border:1px solid var(--primary);
  border-radius:5px;
  font-size:.85rem;
}
.rev-muted{ color:var(--text-secondary); }
.rev-incr--up{ color:var(--success); font-weight:700; }
.rev-incr--down{ color:var(--danger); font-weight:700; }
.rev-sem{ text-align:center; font-size:1rem; }
.rev-estado{
  display:inline-block;
  padding:2px 8px;
  border-radius:20px;
  font-size:.74rem;
  font-weight:700;
}
.rev-estado--nunca{ background:rgba(239,68,68,0.12); color:var(--danger); }
.rev-estado--pendiente{ background:rgba(245,158,11,0.14); color:var(--warning); }
.rev-estado--dedhist{ background:rgba(59,130,246,0.14); color:#1d4ed8; }
.rev-historica-section{
  margin:16px 0 0; padding-top:14px; border-top:1px dashed var(--border, #e5e7eb);
}
.rev-historica-table{
  width:100%; border-collapse:collapse; font-size:.82rem; margin-bottom:10px;
}
.rev-historica-table th, .rev-historica-table td{
  padding:8px 10px; border-bottom:1px solid var(--border, #e5e7eb); text-align:left;
}
.rev-historica-table th{ font-size:.75rem; color:var(--text-secondary); }
.rev-historica-row--off td{ opacity:.55; }
.rev-historica-actions{ white-space:nowrap; }
.rev-historica-form{ padding:12px 14px; margin:10px 0; background:var(--bg-secondary, #f8fafc); }
.rev-historica-form-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:10px 14px;
}
.rev-historica-form-title{ margin:0 0 10px; font-size:.9rem; }
.rev-historica-form-actions{ display:flex; gap:8px; margin-top:10px; }
.rev-historica-add-btn{ margin-top:4px; }
.rev-historica-mode{ font-weight:600; font-size:.78rem; }
.rev-historica-tramos-block{ margin-top:12px; padding-top:10px; border-top:1px dashed var(--border, #e5e7eb); }
.rev-historica-tramos-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:8px 12px; margin:10px 0;
}
.rev-historica-copy-tramos{ margin-top:4px; }
.rev-historica-origen{ font-size:.72rem; padding:2px 6px; border-radius:4px; background:rgba(107,114,128,0.12); color:var(--text-secondary); }
.rev-historica-origen--migracion_legacy{ background:rgba(245,158,11,0.14); color:#b45309; }
.rev-historica-origen--politica_guardada{ background:rgba(59,130,246,0.12); color:#1d4ed8; }
.rev-historica-origen--campaña_aplicada,.rev-historica-origen--campana_aplicada{ background:rgba(16,185,129,0.14); color:#047857; }
.rev-policy-historica-card{ max-width:560px; width:94vw; }
.rev-policy-hist-snapshot{ font-size:.84rem; padding:8px 10px; margin:0 0 8px; background:var(--bg-secondary,#f8fafc); border-radius:6px; }
.rev-policy-hist-nombre{ display:block; margin:0 0 12px; font-size:.85rem; }
.rev-policy-hist-nombre input{ width:100%; margin-top:4px; }
.rev-policy-hist-actions{ flex-wrap:wrap; gap:8px; }
.rev-estado--ejecutada{ background:rgba(16,185,129,0.18); color:#047857; }
.rev-estado--revisado{ background:rgba(16,185,129,0.14); color:var(--success); }
.rev-estado--excepcion{ background:rgba(107,114,128,0.16); color:var(--text-secondary); }

/* Config política */
.rev-config{ padding:14px 16px; margin-bottom:14px; }
.rev-config-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.rev-config-head h3{ margin:0; font-size:1rem; }
.rev-config-grid{ display:flex; flex-wrap:wrap; gap:12px 16px; margin-top:12px; }
.rev-config-grid label{ display:flex; flex-direction:column; gap:4px; font-size:.76rem; font-weight:600; color:var(--text-secondary); }
.rev-config-grid input{ padding:7px 10px; border:1px solid var(--border); border-radius:6px; font-size:.9rem; min-width:160px; }
.rev-config-actions{ display:flex; align-items:center; gap:10px; margin-top:12px; flex-wrap:wrap; }
.rev-tramos-title{ margin:14px 0 8px; font-size:.88rem; font-weight:700; color:var(--text-primary); }
.rev-tramos-title--revision{ margin-top:18px; }
.rev-tramos-grid{ display:flex; flex-direction:column; gap:10px; margin-bottom:4px; }
.rev-tramo-row{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; padding:10px 12px; background:rgba(0,0,0,.03); border-radius:8px; }
.rev-tramo-row label{ display:inline-flex; align-items:center; gap:6px; font-size:.78rem; font-weight:600; color:var(--text-secondary); }
.rev-tramo-row input{ width:72px; padding:6px 8px; border:1px solid var(--border); border-radius:6px; font-size:.88rem; }
.rev-tramo-label{ min-width:72px; font-size:.8rem; font-weight:700; color:var(--text-primary); }
.rev-tramo-hint{ font-size:.78rem; color:var(--text-secondary); flex:1; min-width:120px; }
.rev-policy-impact-card{ max-width:520px; width:94vw; }
.rev-policy-impact-header{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:12px; }
.rev-policy-impact-header h3{ margin:0; font-size:1rem; }
.rev-policy-impact-body{ font-size:.88rem; line-height:1.5; color:var(--text-primary); }
.rev-policy-impact-body p{ margin:0 0 10px; }
.rev-impact-list{ margin:8px 0 12px 18px; padding:0; }
.rev-impact-list li{ margin-bottom:6px; }
.rev-impact-total{ margin-top:12px; padding-top:10px; border-top:1px solid var(--border); }
.rev-impact-none{ padding:10px 12px; background:rgba(34,197,94,.08); border-radius:8px; }

/* Tipo cliente */
.rev-tipo{ display:inline-block; padding:2px 8px; border-radius:20px; font-size:.72rem; font-weight:700; }
.rev-tipo--particular{ background:rgba(59,130,246,0.12); color:var(--primary); }
.rev-tipo--empresa{ background:rgba(139,92,246,0.14); color:#7c3aed; }

/* Oportunidad */
.rev-op{ display:inline-block; padding:2px 8px; border-radius:20px; font-size:.72rem; font-weight:700; }
.rev-op small{ font-weight:600; opacity:.8; }
.rev-op--high{ background:rgba(239,68,68,0.14); color:var(--danger); }
.rev-op--mid{ background:rgba(245,158,11,0.16); color:var(--warning); }
.rev-op--low{ background:rgba(16,185,129,0.14); color:var(--success); }
.rev-op--none{ color:var(--text-secondary); }
.rev-below{ color:var(--danger); font-weight:700; }
.rev-row--exc{ opacity:.7; }
.rev-hist-count{ color:var(--primary); font-weight:700; font-size:.78rem; }
.rev-edit-btn{ padding:3px 10px; font-size:.8rem; }

/* Modal revisión de precios */
.rev-modal{ position:fixed; inset:0; z-index:1200; display:flex; align-items:center; justify-content:center; }
.rev-modal-overlay{ position:absolute; inset:0; background:rgba(15,23,42,0.55); }
.rev-modal-card{ position:relative; background:var(--white,#fff); border-radius:12px; width:min(720px,94vw); max-height:90vh; overflow:auto; box-shadow:0 20px 50px rgba(0,0,0,0.3); }
.rev-modal-head{ display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--border); position:sticky; top:0; background:var(--white,#fff); }
.rev-modal-head h3{ margin:0; font-size:1rem; }
.rev-modal-close{ background:none; border:none; font-size:1.1rem; cursor:pointer; color:var(--text-secondary); }
.rev-modal-body{ padding:16px 18px; }
.rev-modal-section{ margin-bottom:20px; }
.rev-modal-section h4{ margin:0 0 10px; font-size:.92rem; }
.rev-modal-grid{ display:flex; flex-wrap:wrap; gap:12px 16px; align-items:center; }
.rev-modal-grid label{ display:flex; flex-direction:column; gap:4px; font-size:.78rem; font-weight:600; color:var(--text-secondary); }
.rev-modal-grid .rev-check-label{ flex-direction:row; align-items:center; gap:6px; }
.rev-modal-grid input[type="text"], .rev-modal-grid select{ padding:7px 10px; border:1px solid var(--border); border-radius:6px; font-size:.9rem; min-width:160px; }
.rev-modal-wide{ flex:1 1 100%; }
.rev-modal-wide input{ width:100%; }
.rev-modal-actions{ margin-top:12px; }
.rev-hist-form{ display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end; margin-top:12px; padding-top:12px; border-top:1px dashed var(--border); }
.rev-hist-form label{ display:flex; flex-direction:column; gap:4px; font-size:.74rem; font-weight:600; color:var(--text-secondary); }
.rev-hist-form input{ padding:6px 9px; border:1px solid var(--border); border-radius:6px; font-size:.88rem; }
.rev-hist-table{ width:100%; border-collapse:collapse; font-size:.85rem; }
.rev-hist-table th, .rev-hist-table td{ padding:6px 8px; border-bottom:1px solid var(--border); text-align:left; }
.rev-hist-del{ padding:2px 8px; color:var(--danger); }

/* Cabecera + pantalla completa */
.rev-page-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.rev-fullscreen-btn{ flex:0 0 auto; white-space:nowrap; }
.rev-table-wrap{ overflow-x:auto; }
.rev-table{ min-width:1180px; }

/* Vista ampliada (workspace) */
#page-revision-precios.rev-fullscreen{
  position:fixed;
  inset:0;
  z-index:1150;
  margin:0;
  padding:18px 22px 28px;
  background:var(--bg, #f1f5f9);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  display:block !important;
}
#page-revision-precios.rev-fullscreen .rev-table{ min-width:0; }
#page-revision-precios.rev-fullscreen .rev-table-wrap{ overflow-x:auto; }
body.rev-fullscreen-active{ overflow:hidden; }

/* Impacto por contrato seleccionado */
.rev-seldetail{ margin-bottom:12px; }
.rev-seldetail-title{ margin:0 0 8px; font-size:.9rem; }
.rev-seldetail-title small{ font-weight:500; color:var(--text-secondary); }
.rev-seldetail-table{ width:100%; border-collapse:collapse; font-size:.84rem; }
.rev-seldetail-table th, .rev-seldetail-table td{ padding:6px 10px; border-bottom:1px solid var(--border); text-align:right; white-space:nowrap; }
.rev-seldetail-table th:nth-child(1), .rev-seldetail-table td:nth-child(1),
.rev-seldetail-table th:nth-child(2), .rev-seldetail-table td:nth-child(2){ text-align:left; }
.rev-seldetail-table thead th{ font-size:.72rem; color:var(--text-secondary); font-weight:700; }
.rev-config-empresas{ margin-top:8px; font-size:.82rem; max-width:640px; }
.rev-config-internal{ display:none !important; }
.rev-config-advanced{ margin-top:14px; }
.rev-config-subhead{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  margin-bottom:8px;
}
.rev-config-subhead .rev-tramos-title--sub{ margin:0; font-size:.84rem; font-weight:600; color:var(--text-secondary); }
.rev-config-advanced-body label{
  display:flex; flex-direction:column; gap:4px;
  font-size:.76rem; font-weight:600; color:var(--text-secondary);
  max-width:280px;
}
.rev-config-advanced-body input[type="number"]{
  padding:7px 10px; border:1px solid var(--border); border-radius:6px; font-size:.9rem;
}
.btn-ghost--sm{ font-size:.78rem; padding:4px 10px; }
.rev-sim-advanced{ margin-top:8px; }
.rev-sim-advanced-body{ margin-top:8px; }
.rev-sim-advanced-body label{
  display:flex; flex-direction:column; gap:4px;
  font-size:.76rem; font-weight:600; color:var(--text-secondary);
  min-width:220px;
}
.rev-legacy-rule-note{
  margin:6px 0 0; font-size:.78rem; color:var(--warning); font-style:italic;
}

/* Cabeceras ordenables */
.rev-th-sort{ cursor:pointer; user-select:none; white-space:nowrap; }
.rev-th-sort:hover{ color:var(--primary); }
.rev-th-active{ color:var(--primary); }
.rev-sort-ind{ font-weight:700; }

/* Pantalla de impacto (paso 2) */
.rev-impact-obs{ width:160px; padding:5px 8px; border:1px solid var(--border); border-radius:6px; font-size:.84rem; }
.rev-impact-actions{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:14px; }
.rev-impact-namebar{ margin-bottom:8px; }
.rev-impact-namebar label{ display:flex; flex-direction:column; gap:4px; font-size:.76rem; font-weight:600; color:var(--text-secondary); max-width:420px; }
.rev-impact-namebar input{ padding:8px 10px; border:1px solid var(--border); border-radius:6px; font-size:.95rem; font-weight:600; }
.rev-impact-editbadge{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:8px 12px; margin-bottom:10px; border-radius:8px;
  background:rgba(245,158,11,0.12); color:var(--warning); font-size:.84rem; font-weight:600;
}
.rev-impact-editbadge strong{ color:var(--text); }

/* Navegación por teclado / selección en tabla principal */
.rev-table tbody tr{ cursor:pointer; }
.rev-row--sel > td{ background:rgba(59,130,246,0.07); }
.rev-row--active > td{ background:rgba(59,130,246,0.14); }
.rev-row--active{ outline:2px solid var(--primary); outline-offset:-2px; }

/* ===== Campañas de revisión ===== */
.rev-campaigns{ padding:14px 16px; margin-top:14px; }
.rev-campaigns-list{ display:flex; flex-direction:column; gap:10px; margin-top:10px; }
.rev-camp-card{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  flex-wrap:wrap;
  padding:12px 14px; border:1px solid var(--border); border-radius:10px;
  background:var(--bg, #f8fafc);
}
.rev-camp-main{ display:flex; flex-direction:column; gap:3px; min-width:240px; flex:1 1 280px; }
.rev-camp-title{ font-weight:700; font-size:.96rem; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.rev-camp-meta{ font-size:.8rem; color:var(--text-secondary); }
.rev-camp-incr{ font-size:.85rem; }
.rev-camp-incr small{ color:var(--text-secondary); }
.rev-camp-actions{ display:flex; gap:8px; flex-wrap:wrap; }
.rev-camp-del{ color:var(--danger); }
.rev-camp-estado{
  display:inline-block; padding:2px 9px; border-radius:20px; font-size:.72rem; font-weight:700;
  background:rgba(107,114,128,0.16); color:var(--text-secondary);
}
.rev-camp-estado--borrador{ background:rgba(107,114,128,0.16); color:var(--text-secondary); }
.rev-camp-estado--pendiente-comunicar{ background:rgba(245,158,11,0.16); color:var(--warning); }
.rev-camp-estado--comunicada{ background:rgba(59,130,246,0.14); color:var(--primary); }
.rev-camp-estado--aplicada{ background:rgba(16,185,129,0.16); color:var(--success); }
.rev-camp-estado--cerrada{ background:rgba(239,68,68,0.12); color:var(--danger); }

/* Modal campaña (ancho) */
.rev-modal--wide .rev-modal-card--wide{ width:min(1180px, 96vw); }
.rev-campaign-toolbar{
  display:flex; align-items:flex-end; gap:14px; flex-wrap:wrap;
  margin-bottom:8px;
}
.rev-campaign-toolbar > label{ display:flex; flex-direction:column; gap:4px; font-size:.76rem; font-weight:600; color:var(--text-secondary); }
.rev-campaign-toolbar select{ padding:7px 10px; border:1px solid var(--border); border-radius:6px; font-size:.9rem; min-width:180px; }
.rev-campaign-meta{ display:flex; gap:14px; flex-wrap:wrap; font-size:.82rem; color:var(--text-secondary); align-items:center; flex:1 1 auto; }
.rev-campaign-meta strong{ color:var(--text); }
.rev-campaign-tools{ display:flex; gap:8px; }
.rev-campaign-table{ width:100%; border-collapse:collapse; font-size:.84rem; }
.rev-campaign-table th, .rev-campaign-table td{ padding:6px 10px; border-bottom:1px solid var(--border); text-align:right; white-space:nowrap; }
.rev-campaign-table th:nth-child(1), .rev-campaign-table td:nth-child(1),
.rev-campaign-table th:nth-child(2), .rev-campaign-table td:nth-child(2),
.rev-campaign-table th:nth-child(3), .rev-campaign-table td:nth-child(3),
.rev-campaign-table th:last-child, .rev-campaign-table td:last-child{ text-align:left; }
.rev-campaign-table thead th{ font-size:.72rem; color:var(--text-secondary); font-weight:700; }
.rev-camp-cli-estado{ padding:4px 6px; border:1px solid var(--border); border-radius:6px; font-size:.82rem; }

@media (max-width: 768px){
  .rev-camp-card{ flex-direction:column; align-items:stretch; }
  .rev-campaign-toolbar{ flex-direction:column; align-items:stretch; }
}

@media (max-width: 768px){
  #page-revision-precios.rev-fullscreen{ padding:14px 12px 24px; }
  .rev-page-head{ flex-direction:column; }
  .rev-fullscreen-btn{ align-self:flex-start; }
}

.kpi-link-disponibles{
  cursor:pointer;
  color:var(--primary);
  font-weight:700;
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:border-color .15s ease,color .15s ease;
}
.kpi-link-disponibles:hover{
  color:var(--primary-dark,#1d4ed8);
  text-decoration:underline;
  border-bottom-color:currentColor;
}
.kpi-disponibles-count{
  color:var(--text-secondary);
  font-weight:600;
}
.internal-transfer-badge{
  display:inline-flex;
  align-items:center;
  padding:3px 8px;
  border-radius:999px;
  background:#dbeafe;
  color:#1d4ed8;
  border:1px solid #bfdbfe;
  font-size:.68rem;
  font-weight:800;
}
.mini-action-btn{
  margin-top:6px;
  padding:4px 8px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--white);
  color:var(--text-primary);
  font-size:.68rem;
  font-weight:700;
  cursor:pointer;
}
.mini-action-btn:hover{background:var(--bg)}

/* ===== Upload ===== */
.upload-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:18px;
  margin-bottom:24px;
}
.data-sources-help{
  margin-top:24px;
  padding:22px;
}
.data-sources-help h3{
  margin:0 0 10px;
  font-size:1.05rem;
}
.data-source-priority{
  margin:0 0 16px;
  padding:12px 14px;
  border-radius:12px;
  background:#eff6ff;
  color:#1e3a8a;
  font-size:.86rem;
  line-height:1.45;
}
.data-source-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:12px;
}
.data-source-item{
  padding:14px;
  border:1px solid var(--border);
  border-radius:12px;
  background:var(--white);
}
.data-source-item--primary{
  border-color:#86efac;
  background:linear-gradient(180deg,#f0fdf4,#fff);
}
.data-source-item h4{
  margin:0 0 8px;
  font-size:.9rem;
}
.data-source-item p{
  margin:0 0 8px;
  color:var(--text-secondary);
  font-size:.78rem;
  line-height:1.45;
}
.data-source-item p:last-child{margin-bottom:0}
.upload-zone{
  border:2px dashed var(--border-strong);
  border-radius:var(--radius);
  padding:36px 22px;
  text-align:center;
  cursor:pointer;
  transition:all var(--transition);
  background:var(--white);
}
.upload-zone:hover{
  border-color:var(--primary);
  background:var(--primary-soft);
}
.upload-zone svg{margin-bottom:10px;color:var(--primary)}
.upload-zone p{color:var(--text-secondary);font-size:.84rem}
.upload-zone .file-name{color:var(--success);font-weight:700;margin-top:8px;font-size:.82rem}
.upload-zone input[type=file]{display:none}
.upload-btn,
.btn-primary{
  padding:11px 22px;
  background:linear-gradient(135deg,var(--primary-dark),var(--primary));
  color:#fff;
  border-radius:var(--radius-sm);
  font-size:.86rem;
  font-weight:700;
  transition:filter var(--transition),transform var(--transition),box-shadow var(--transition);
  box-shadow:0 6px 16px var(--primary-glow);
  border:none;
  cursor:pointer;
}
.upload-btn:hover,
.btn-primary:hover{
  filter:brightness(1.05);
  transform:translateY(-1px);
}
.btn-secondary{
  padding:11px 22px;
  background:var(--white);
  color:var(--primary-dark);
  border:1.5px solid var(--primary);
  border-radius:var(--radius-sm);
  font-size:.86rem;
  font-weight:700;
  cursor:pointer;
  transition:background var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition),transform var(--transition);
  box-shadow:0 2px 8px rgba(217,119,6,.12);
}
.btn-secondary:hover:not(:disabled){
  background:var(--primary-soft);
  border-color:var(--primary-dark);
  color:var(--primary-dark);
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(217,119,6,.18);
}
.btn-secondary:focus-visible{
  outline:2px solid var(--primary);
  outline-offset:2px;
}
.btn-secondary:disabled{
  opacity:1;
  cursor:not-allowed;
  color:var(--text-muted);
  background:var(--bg);
  border-color:var(--border);
  box-shadow:none;
  transform:none;
}
.btn-danger-outline{
  padding:9px 20px;
  background:var(--white);
  color:var(--danger);
  border:1.5px solid #fecaca;
  border-radius:var(--radius-sm);
  font-size:.82rem;
  font-weight:600;
  cursor:pointer;
  transition:all var(--transition);
}
.btn-danger-outline:hover{
  background:var(--danger);
  color:#fff;
  border-color:var(--danger);
}
.upload-card-icon{font-size:2rem;margin-bottom:10px;line-height:1}
.upload-card-title{font-weight:700;font-size:.95rem;margin-bottom:4px}
.upload-card-count{font-size:.78rem;color:var(--text-secondary);margin-bottom:6px}
.upload-card-help{
  font-size:.72rem;
  line-height:1.35;
  color:var(--text-secondary);
  margin:0 8px 8px;
  text-align:center;
}
.upload-card-meta{
  font-size:.72rem;
  line-height:1.35;
  color:var(--text-secondary);
  margin:0 0 12px;
  min-height:2.2em;
}
.upload-card-meta--empty{font-style:italic;opacity:.85}
.upload-card-meta-abs{display:block}
.upload-card-meta-rel{display:block;opacity:.9}
.import-drop-warn-modal{align-items:center;justify-content:center;z-index:12000}
.import-drop-warn-card{max-width:440px;text-align:left}
.import-drop-warn-body p{margin:0 0 8px;font-size:.9rem;line-height:1.4;color:var(--text-secondary)}
.import-drop-warn-checks{margin:12px 0 0;font-size:.85rem}
.import-drop-warn-checks-label{margin:0 0 4px;font-weight:600;color:var(--text)}
.import-drop-warn-checks ul{margin:0;padding-left:1.2em}
.import-drop-warn-actions{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.import-drop-warn-actions .btn-primary{order:0}
.import-drop-warn-actions .btn-danger-outline{order:1}
.import-drop-warn--strong .import-drop-warn-card{border:1px solid var(--danger,#b91c1c)}
.cargar-export-flow,
.contratos-export-flow{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:10px;
  margin-top:2px;
  text-align:center;
}
.cargar-export-flow[hidden],
.contratos-export-flow[hidden]{display:none!important}
[id$="-csv-simple"][hidden]{display:none!important}
.cargar-export-heading,
.contratos-export-heading{
  margin:0;
  font-size:.82rem;
  font-weight:600;
  color:var(--text-secondary);
}
.cargar-export-open,
.contratos-export-open{
  display:block;
  text-decoration:none;
  box-sizing:border-box;
}
.cargar-export-hint,
.contratos-export-hint{
  margin:2px 0 0;
  font-size:.72rem;
  line-height:1.35;
  color:var(--text-secondary);
}

/* ===== Toast ===== */
.toast{
  position:fixed;
  bottom:24px;
  right:24px;
  padding:14px 22px;
  border-radius:var(--radius-sm);
  color:#fff;
  font-size:.86rem;
  font-weight:600;
  z-index:9999;
  pointer-events:none;
  opacity:0;
  transform:translateY(16px);
  transition:all .3s ease;
  box-shadow:var(--shadow-lg);
  max-width:min(420px,calc(100vw - 48px));
}
.toast.show{opacity:1;transform:translateY(0)}
.toast.success{background:linear-gradient(135deg,#15803d,var(--success))}
.toast.error{background:linear-gradient(135deg,#b91c1c,var(--danger))}
.toast.warning{background:linear-gradient(135deg,#d97706,var(--warning));color:#1c1917}

/* ===== Revenue ===== */
.revenue-big{
  background:linear-gradient(135deg,#b45309,#f59e0b);
  color:#fff;
  border-radius:var(--radius-lg);
  padding:36px;
  text-align:center;
  margin-bottom:28px;
  box-shadow:0 16px 40px var(--primary-glow);
  border:1px solid rgba(255,255,255,.15);
}
.revenue-big .label{font-size:.86rem;opacity:.92;margin-bottom:6px;font-weight:600}
.revenue-big .amount{font-size:2.6rem;font-weight:800;letter-spacing:-.03em}
.revenue-big .sub{font-size:.82rem;opacity:.85;margin-top:6px}
.rev-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
  gap:14px;
  margin-bottom:28px;
}
.rev-card{text-align:center;padding:18px}
.rev-card .rev-label{font-size:.68rem;color:var(--text-secondary);text-transform:uppercase;font-weight:700;letter-spacing:.06em}
.rev-card .rev-value{font-size:1.35rem;font-weight:800;color:var(--primary-dark);margin-top:6px;letter-spacing:-.02em}
.rev-card .rev-count{font-size:.75rem;color:var(--text-secondary);margin-top:4px}

/* ===== Charts (legacy bar-chart — resumen u otros) ===== */
.bar-chart-container{
  background:var(--white);
  border-radius:var(--radius);
  padding:22px;
  box-shadow:var(--shadow-sm);
  border:1px solid var(--border);
  margin-bottom:28px;
}
.bar-chart{
  display:flex;
  align-items:flex-end;
  gap:8px;
  height:220px;
  padding:0 6px;
  overflow-x:auto;
}
.bar-chart::-webkit-scrollbar{height:5px}
.bar-item{
  display:flex;
  flex-direction:column;
  align-items:center;
  flex:1;
  min-width:48px;
  max-width:80px;
}
.bar-value{
  font-size:.65rem;
  font-weight:700;
  color:var(--text-secondary);
  margin-bottom:6px;
  white-space:nowrap;
}
.bar-fill{
  width:100%;
  border-radius:6px 6px 0 0;
  transition:height .35s cubic-bezier(.4,0,.2,1);
  min-height:2px;
  position:relative;
}
.bar-fill.amber{background:linear-gradient(180deg,#fde68a 0%,#f59e0b 55%,#b45309 100%)}
.bar-fill.green{background:linear-gradient(180deg,#86efac 0%,#22c55e 55%,#15803d 100%)}
.bar-fill.red{background:linear-gradient(180deg,#fca5a5 0%,#ef4444 55%,#b91c1c 100%)}
.bar-label{
  font-size:.65rem;
  color:var(--text-secondary);
  margin-top:8px;
  text-align:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:72px;
  font-weight:600;
}

/* ===== Dashboard charts (simple) ===== */
.dashboard-chart-panel{
  background:var(--white);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:20px;
  margin-bottom:28px;
  box-shadow:var(--shadow-sm);
}
.dashboard-chart-head{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  justify-content:space-between;
  gap:8px 16px;
  margin-bottom:14px;
  padding-bottom:12px;
  border-bottom:1px solid var(--border);
}
.dashboard-chart-head-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.dashboard-chart-head h3{margin:0;font-size:1rem;font-weight:800}
.dashboard-chart-sub{font-size:.78rem;color:var(--text-secondary)}
.dashboard-chart-mount{width:100%}
#liqChartContainer{position:relative}

.liq-chart-nav{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  flex:0 0 auto;
  align-items:center;
}
.liq-chart-nav-btn{
  appearance:none;
  border:1px solid var(--border);
  background:var(--white);
  color:var(--text);
  font:inherit;
  font-size:.72rem;
  font-weight:700;
  padding:5px 10px;
  border-radius:8px;
  cursor:pointer;
  line-height:1.2;
  white-space:nowrap;
}
.liq-chart-nav-btn:hover:not(:disabled){
  border-color:#94a3b8;
  background:#f8fafc;
}
.liq-chart-nav-btn:disabled{
  opacity:.45;
  cursor:not-allowed;
}

.liq-ind-wrap{position:relative;flex:0 0 auto;margin-left:auto}
.liq-ind-btn{
  appearance:none;
  border:1px solid var(--border);
  background:var(--white);
  color:var(--text);
  font:inherit;
  font-size:.78rem;
  font-weight:700;
  padding:6px 12px;
  border-radius:8px;
  cursor:pointer;
  line-height:1.2;
}
.liq-ind-btn:hover,
.liq-ind-btn[aria-expanded="true"]{
  border-color:#94a3b8;
  background:#f8fafc;
}
.liq-ind-popover{
  position:absolute;
  right:0;
  top:calc(100% + 6px);
  z-index:40;
  min-width:248px;
  max-width:min(92vw,300px);
  padding:12px 12px 10px;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:10px;
  box-shadow:0 10px 28px rgba(15,23,42,.12);
}
.liq-ind-group-label{
  margin:10px 0 6px;
  font-size:.68rem;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:var(--text-secondary);
}
.liq-ind-group-label:first-child{margin-top:0}
.liq-ind-opt{
  display:flex;
  align-items:flex-start;
  gap:8px;
  margin:0 0 6px;
  font-size:.8rem;
  line-height:1.3;
  cursor:pointer;
  color:var(--text);
}
.liq-ind-opt input{margin-top:2px;flex:0 0 auto}
.liq-chart-tip{
  position:fixed;
  z-index:1200;
  min-width:200px;
  max-width:min(92vw,290px);
  padding:10px 12px;
  background:#0f172a;
  color:#f8fafc;
  border-radius:10px;
  box-shadow:0 12px 28px rgba(15,23,42,.28);
  font-size:.78rem;
  line-height:1.35;
  pointer-events:auto;
}
.liq-chart-tip[hidden]{display:none!important}
.liq-tip-month{font-weight:800;font-size:.82rem;margin:0 0 2px;letter-spacing:.02em}
.liq-tip-imp{font-weight:800;font-variant-numeric:tabular-nums;margin:0 0 8px}
.liq-tip-row{
  display:grid;
  grid-template-columns:1fr auto;
  gap:4px 10px;
  align-items:baseline;
  margin:0 0 3px;
}
.liq-tip-k{color:#cbd5e1}
.liq-tip-v{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}
.liq-tip-sec{
  margin:8px 0 4px;
  font-size:.66rem;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:#94a3b8;
}
.liq-tip-na{
  margin:8px 0 0;
  color:#94a3b8;
  font-size:.72rem;
  font-weight:500;
}
.liq-tip-note{color:#94a3b8;font-weight:500;font-size:.7rem}
.liq-tip-why{
  margin:8px 0 0;
  padding-top:8px;
  border-top:1px solid rgba(148,163,184,.35);
}
.liq-tip-why-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin:0 0 4px;
}
.liq-tip-why-title{
  margin:0;
  font-size:.66rem;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:#94a3b8;
}
.liq-tip-why-help-btn{
  appearance:none;
  border:0;
  background:transparent;
  color:#93c5fd;
  font:inherit;
  font-size:.78rem;
  line-height:1;
  cursor:pointer;
  padding:0 2px;
  flex:0 0 auto;
}
.liq-tip-why-help-btn:hover,
.liq-tip-why-help-btn[aria-expanded="true"]{color:#bfdbfe}
.liq-why-help{
  position:fixed;
  z-index:1250;
  width:min(340px,92vw);
  max-height:min(70vh,520px);
  overflow:auto;
  background:#fff;
  color:#0f172a;
  border-radius:12px;
  box-shadow:0 14px 32px rgba(15,23,42,.28);
  padding:0;
  font-size:.8rem;
  line-height:1.4;
}
.liq-why-help[hidden]{display:none!important}
.liq-why-help-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  padding:12px 12px 8px;
  border-bottom:1px solid #e2e8f0;
  position:sticky;
  top:0;
  background:#fff;
}
.liq-why-help-head strong{
  font-size:.86rem;
  font-weight:800;
}
.liq-why-help-close{
  appearance:none;
  border:0;
  background:transparent;
  font-size:1.25rem;
  line-height:1;
  cursor:pointer;
  color:#64748b;
  padding:0 4px;
}
.liq-why-help-body{padding:8px 12px 14px}
.liq-why-help-sec{margin:0 0 10px}
.liq-why-help-sec h4{
  margin:0 0 3px;
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:#475569;
}
.liq-why-help-sec p{
  margin:0 0 3px;
  color:#334155;
}
.liq-why-help-important{
  margin-top:8px;
  padding:10px;
  border-radius:8px;
  background:#fff7ed;
  border:1px solid #fed7aa;
  color:#9a3412;
}
.liq-why-help-important strong{
  display:block;
  margin:0 0 4px;
  font-size:.72rem;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.liq-why-help-important p{margin:0 0 3px}
.liq-why-help-important em{font-style:normal;font-weight:700}
.liq-tip-why-row{
  display:grid;
  grid-template-columns:1fr auto;
  gap:4px 10px;
  align-items:baseline;
  margin:0 0 2px;
}
.liq-tip-why-total{
  margin-top:4px;
  padding-top:4px;
  border-top:1px dashed rgba(148,163,184,.35);
  font-weight:700;
}
.liq-tip-why-phrase{
  margin:6px 0 0;
  color:#94a3b8;
  font-size:.68rem;
  font-weight:500;
  line-height:1.35;
  font-style:italic;
}
.liq-tip-why-na{
  margin:6px 0 0;
  color:#94a3b8;
  font-size:.7rem;
  font-weight:500;
}
.liq-tip-why-actions{margin:6px 0 2px;text-align:right}
.liq-tip-why-detail{
  appearance:none;
  border:0;
  background:transparent;
  color:#93c5fd;
  font:inherit;
  font-size:.72rem;
  font-weight:700;
  cursor:pointer;
  padding:0;
  text-decoration:underline;
  text-underline-offset:2px;
}
.liq-tip-why-detail:hover{color:#bfdbfe}
.liq-var-drawer{
  position:fixed;
  inset:0;
  z-index:1300;
  display:flex;
  align-items:flex-end;
  justify-content:center;
}
.liq-var-drawer[hidden]{display:none!important}
.liq-var-drawer-backdrop{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,.45);
}
.liq-var-drawer-panel{
  position:relative;
  z-index:1;
  width:min(560px,100%);
  max-height:min(82vh,720px);
  background:#fff;
  border-radius:14px 14px 0 0;
  box-shadow:0 -8px 28px rgba(15,23,42,.2);
  display:flex;
  flex-direction:column;
  color:var(--text);
}
.liq-var-drawer-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:14px 16px 10px;
  border-bottom:1px solid var(--border);
}
.liq-var-drawer-head h3{
  margin:0;
  font-size:1rem;
  font-weight:800;
}
.liq-var-drawer-close{
  appearance:none;
  border:0;
  background:transparent;
  font-size:1.4rem;
  line-height:1;
  cursor:pointer;
  color:var(--text-secondary);
  padding:4px 8px;
}
.liq-var-drawer-body{
  overflow:auto;
  padding:12px 16px 20px;
  font-size:.86rem;
}
.liq-var-meta{
  margin:0 0 12px;
  color:var(--text-secondary);
  font-size:.8rem;
}
.liq-var-sec{margin:0 0 14px}
.liq-var-sec-title{
  margin:0 0 6px;
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:var(--text-secondary);
}
.liq-var-item{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:2px 10px;
  padding:6px 0;
  border-bottom:1px solid #f1f5f9;
  align-items:start;
}
.liq-var-u{font-weight:800;font-variant-numeric:tabular-nums}
.liq-var-c{color:var(--text-secondary);font-size:.78rem;grid-column:2 / 3}
.liq-var-note{grid-column:2 / 4;color:#64748b;font-size:.75rem}
.liq-var-note--emph{
  color:#0f172a;
  font-weight:650;
  background:#f8fafc;
  border-left:3px solid #64748b;
  padding:2px 6px;
  margin-top:2px;
  border-radius:0 4px 4px 0;
}
.liq-var-plain{
  grid-column:2 / 4;
  margin-top:3px;
  padding:4px 8px;
  border-radius:0 6px 6px 0;
  border-left:3px solid #94a3b8;
  background:#f8fafc;
  color:#0f172a;
  font-size:.78rem;
  line-height:1.35;
  font-weight:550;
}
.liq-var-meta-line{
  grid-column:2 / 4;
  margin-top:2px;
  color:#64748b;
  font-size:.72rem;
  line-height:1.35;
}
.liq-var-amt{font-weight:700;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.liq-var-sec-total{
  margin-top:4px;
  text-align:right;
  font-weight:700;
  font-variant-numeric:tabular-nums;
}
.liq-var-exact{
  margin:10px 0 0;
  padding:8px 10px;
  border-radius:8px;
  background:#f0fdf4;
  color:#166534;
  font-size:.8rem;
  font-weight:600;
}
.liq-var-inexact{
  margin:10px 0 0;
  padding:8px 10px;
  border-radius:8px;
  background:#fff7ed;
  color:#9a3412;
  font-size:.8rem;
  font-weight:600;
}
@media (min-width:720px){
  .liq-var-drawer{align-items:center}
  .liq-var-drawer-panel{
    border-radius:14px;
    max-height:min(78vh,680px);
  }
}
.vbar-item--tip{cursor:pointer}
.vbar-item--tip:focus{outline:2px solid #2563eb;outline-offset:2px;border-radius:6px}
.vbar-item--tip.is-tip-open .vbar-bar{box-shadow:0 0 0 2px #0f172a}

/* Liquidaciones / Evolución */
.vbar-chart{width:100%}
.vbar-bars{
  display:flex;
  align-items:flex-end;
  gap:8px;
  overflow-x:auto;
  padding:0 2px;
  border-bottom:2px solid #94a3b8;
}
.vbar-item{
  flex:1 1 0;
  min-width:56px;
  max-width:100px;
  text-align:center;
}
.vbar-top{
  display:block;
  font-size:.68rem;
  font-weight:800;
  color:var(--text);
  margin-bottom:6px;
  min-height:2.4em;
  line-height:1.2;
  font-variant-numeric:tabular-nums;
}
.vbar-plot{
  position:relative;
  height:220px;
  width:100%;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-bottom:none;
  border-radius:6px 6px 0 0;
}
.vbar-bar{
  position:absolute;
  left:50%;
  bottom:0;
  transform:translateX(-50%);
  width:42px;
  min-height:8px;
  border-radius:6px 6px 2px 2px;
  box-sizing:border-box;
}
.vbar-bar.amber{background:#d97706}
.vbar-bar.green{background:#16a34a}
.vbar-bar.red{background:#dc2626}
.vbar-bar--zero{width:42px;height:3px!important;background:#cbd5e1}
.vbar-month{
  display:block;
  margin-top:8px;
  font-size:.72rem;
  font-weight:700;
  color:var(--text-secondary);
}
.vbar-note{margin:10px 0 0;font-size:.72rem;color:var(--text-secondary)}

/* Altas vs Bajas */
.ab-chart{width:100%}
.ab-legend{
  display:flex;
  gap:18px;
  margin-bottom:10px;
  font-size:.75rem;
  font-weight:700;
  color:var(--text-secondary);
}
.ab-leg{display:inline-flex;align-items:center;gap:6px}
.ab-leg--up::before,.ab-leg--down::before{
  content:'';
  width:12px;height:12px;border-radius:3px;
}
.ab-leg--up::before{background:#16a34a}
.ab-leg--down::before{background:#dc2626}
.ab-bars{
  display:flex;
  align-items:flex-end;
  gap:6px;
  overflow-x:auto;
  padding:0 2px;
  border-bottom:2px solid #94a3b8;
}
.ab-item{
  flex:1 1 0;
  min-width:52px;
  max-width:92px;
  text-align:center;
}
.ab-item--total{
  min-width:60px;
  margin-left:4px;
  padding-left:10px;
  border-left:2px dashed var(--border);
}
.ab-item--click{cursor:pointer}
.ab-item--click:hover .ab-bar{filter:brightness(1.1)}
.ab-n-up,.ab-n-down{
  display:block;
  font-size:.65rem;
  font-weight:800;
  line-height:1.3;
  min-height:1.3em;
}
.ab-n-up{color:#15803d}
.ab-n-down{color:#b91c1c;margin-bottom:4px}
.ab-plot{
  position:relative;
  height:200px;
  width:100%;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-bottom:none;
  border-radius:6px 6px 0 0;
}
.ab-bar{
  position:absolute;
  bottom:0;
  width:26px;
  min-height:10px;
  border-radius:5px 5px 2px 2px;
  box-sizing:border-box;
}
.ab-bar--up{left:calc(50% - 30px);background:#16a34a}
.ab-bar--down{left:calc(50% + 4px);background:#dc2626}
.ab-month{
  display:block;
  margin-top:8px;
  font-size:.72rem;
  font-weight:700;
  color:var(--text-secondary);
}
.ab-item--total .ab-month{font-weight:800;color:var(--text)}

@media (max-width:768px){
  .vbar-item{min-width:46px}
  .vbar-plot{height:180px}
  .vbar-bar,.vbar-bar--zero{width:34px}
  .ab-plot{height:160px}
  .ab-bar{width:20px;min-height:8px}
  .ab-bar--up{left:calc(50% - 24px)}
  .ab-bar--down{left:calc(50% + 4px)}
  .liq-ind-popover{
    position:fixed;
    left:12px;
    right:12px;
    top:auto;
    bottom:12px;
    max-width:none;
    min-width:0;
    z-index:80;
  }
  .liq-chart-tip{
    max-width:min(96vw,320px);
  }
}

/* ===== Floors ===== */
.floor-cards{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:18px;
  margin-bottom:28px;
}
.floor-card{
  border-radius:var(--radius);
  padding:22px;
  box-shadow:var(--shadow-sm);
  border:1px solid var(--border);
  background:var(--white);
}
.floor-card .floor-name{font-size:1.05rem;font-weight:800;margin-bottom:10px;letter-spacing:-.02em}
.floor-card .floor-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.floor-card .floor-stat{
  text-align:center;
  padding:12px;
  border-radius:var(--radius-sm);
  background:var(--bg);
  border:1px solid var(--border);
}
.floor-card .floor-stat .fs-value{font-size:1.15rem;font-weight:800}
.floor-card .floor-stat .fs-label{font-size:.65rem;color:var(--text-secondary);text-transform:uppercase;font-weight:700;letter-spacing:.05em}
.contract-end-badge,.until-date-badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:4px 8px;
  border-radius:999px;
  background:var(--bg);
  border:1px solid var(--border);
  color:var(--text-secondary);
  font-size:.72rem;
  font-weight:700;
  white-space:nowrap;
}
.contract-end-badge.contract-end--open,.until-date-badge.contract-end--open{
  background:#f0fdf4;border-color:#bbf7d0;color:#166534;
}
.contract-end-badge.contract-end--planned,.until-date-badge.contract-end--planned{
  background:var(--bg);border-color:var(--border);color:var(--text-secondary);
}
.contract-end-badge.contract-end--soon,.until-date-badge.contract-end--soon{
  background:var(--warning-soft);border-color:#fde68a;color:#92400e;
}
.contract-end-badge.contract-end--pending-close,.until-date-badge.contract-end--pending-close,
.contract-end-badge.contract-end--erp,.until-date-badge.contract-end--erp{
  background:#fff7ed;border-color:#fed7aa;color:#c2410c;
}
.contract-end-badge.contract-end--pending,.until-date-badge.contract-end--pending{
  background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8;
}
.contract-end-badge.contract-end--hist,.until-date-badge.contract-end--hist{
  opacity:.9;
}
.until-date-badge.until-expired,.contract-end-badge.contract-end--pending-close,.contract-end-badge.contract-end--erp{background:#fff7ed;border-color:#fed7aa;color:#c2410c}
.until-date-badge.until-due-7{background:#fff7ed;border-color:#fed7aa;color:#c2410c}
.until-date-badge.until-due-30,.contract-end-badge.contract-end--soon{background:var(--warning-soft);border-color:#fde68a;color:#92400e}
tr.until-expired,tr.contract-end--pending-close,tr.contract-end--erp,tr.ocupacion-row--pending-close,tr.ocupacion-row--erp-review{background:#fff7ed}
tr.until-due-7{background:#fff7ed}
tr.until-due-30,tr.contract-end--soon{background:#fffbeb}
.ocupacion-row--pending-close td,.ocupacion-row--erp-review td{border-top-color:#fed7aa}
.kpi-card--pending-close .kpi-value{color:var(--danger);}
.plantas-block-marker{
  display:block !important;
  margin:12px 0 14px;
  padding:10px 14px;
  font-weight:800;
  font-size:.88rem;
  border-radius:8px;
  letter-spacing:.02em;
  border-width:2px;
  border-style:solid;
}
.plantas-block-marker--disp{
  background:#dcfce7;
  border-color:#16a34a;
  color:#166534;
}
.plantas-block-marker--imp{
  background:#fee2e2;
  border-color:#dc2626;
  color:#991b1b;
}
.plantas-block-marker--todos{
  background:#dbeafe;
  border-color:#2563eb;
  color:#1e40af;
}
.plantas-disp-build-marker{
  display:block !important;
  margin:12px 0 16px;
  padding:10px 14px;
  background:#dcfce7;
  border:2px solid #16a34a;
  color:#166534;
  font-weight:800;
  font-size:.88rem;
  border-radius:8px;
  letter-spacing:.02em;
}
.ocupacion-precio-reco{
  margin:6px 0 2px;
  font-size:.82rem;
  color:#0f766e;
  background:#f0fdfa;
  border:1px solid #99f6e4;
  border-radius:8px;
  padding:4px 8px;
  display:inline-block;
}
.ocupacion-precio-reco strong{color:#0f766e}
.ocupacion-disp-contacto{
  margin:8px 0;
}
.ocupacion-disp-contacto .imp-reclamo-btns{
  flex-wrap:wrap;
}
.floor-disponibles-section{
  display:block !important;
  visibility:visible !important;
  opacity:1 !important;
  min-height:48px;
}
.floor-disponibles-section,.floor-impagos-section,.floor-todos-section{margin-top:28px;padding-top:8px;border-top:1px solid var(--border)}
.floor-disp-table{margin-top:0}
.floor-impagos-title{font-size:1rem;font-weight:800;margin:0 0 12px;letter-spacing:-.02em}
.floor-imp-table{margin-top:0}
.floor-imp-group td{
  background:var(--bg);
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--text-secondary);
  padding:10px 14px!important;
  border-top:2px solid var(--border);
}

/* ===== WhatsApp ===== */
.wa-btn{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:5px 11px;
  background:#25d366;
  color:#fff;
  border-radius:999px;
  font-size:.72rem;
  font-weight:700;
  cursor:pointer;
  transition:opacity var(--transition),transform var(--transition);
}
.wa-btn:hover{opacity:.9;transform:translateY(-1px)}
.wa-btn.disabled{background:#d4d4d8;cursor:default;opacity:.75}

.imp-reclamo-btns{
  display:inline-flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
  vertical-align:middle;
}
.imp-action-btn{
  display:inline-flex;
  align-items:center;
  padding:5px 10px;
  border-radius:999px;
  font-size:.7rem;
  font-weight:700;
  border:1px solid var(--border);
  background:var(--white);
  color:var(--text);
  cursor:pointer;
  text-decoration:none;
  line-height:1.2;
  font-family:inherit;
}
.imp-action-btn--copy:hover{background:var(--bg)}
.imp-action-btn--email{
  background:#eff6ff;
  border-color:#bfdbfe;
  color:#1d4ed8;
}
.imp-action-btn--email:hover{background:#dbeafe}
.imp-copy-modal{max-width:520px;width:min(92vw,520px)}
.imp-copy-hint{
  font-size:.82rem;
  color:var(--text-secondary);
  margin:0 0 10px;
}
.imp-copy-textarea{
  width:100%;
  min-height:220px;
  max-height:50vh;
  padding:12px;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  font-size:.8rem;
  line-height:1.45;
  font-family:inherit;
  resize:vertical;
  box-sizing:border-box;
}

/* ===== Alerts ===== */
.alert-list{display:flex;flex-direction:column;gap:10px;margin-bottom:28px}
.alert-item{
  display:flex;
  align-items:center;
  gap:14px;
  padding:14px 18px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:var(--white);
  box-shadow:var(--shadow-sm);
  transition:box-shadow var(--transition);
}
.alert-item:hover{box-shadow:var(--shadow)}
.alert-item .alert-icon{font-size:1.25rem;flex-shrink:0}
.alert-item .alert-content{flex:1;min-width:0}
.alert-item .alert-title{font-weight:700;font-size:.86rem}
.alert-item .alert-detail{font-size:.78rem;color:var(--text-secondary);margin-top:3px}
.alert-item.severity-high{border-left:4px solid var(--danger)}
.alert-item.severity-medium{border-left:4px solid var(--warning)}
.alert-item.severity-low{border-left:4px solid var(--primary)}

/* ===== Ranking & comparison ===== */
.rank-position{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:30px;height:30px;
  border-radius:50%;
  font-size:.78rem;
  font-weight:800;
}
.rank-1{background:#fef3c7;color:#92400e}
.rank-2{background:#e4e4e7;color:#3f3f46}
.rank-3{background:#ffedd5;color:#9a3412}
.comparison-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:18px;
  margin-bottom:28px;
}
.comparison-card{
  border-radius:var(--radius);
  padding:22px;
  box-shadow:var(--shadow-sm);
  border:1px solid var(--border);
  text-align:center;
  background:var(--white);
}
.comparison-card .cc-icon{font-size:1.75rem;margin-bottom:10px}
.comparison-card .cc-title{font-size:.88rem;font-weight:700;margin-bottom:6px}
.comparison-card .cc-value{font-size:1.5rem;font-weight:800;color:var(--primary-dark);letter-spacing:-.02em}
.comparison-card .cc-sub{font-size:.75rem;color:var(--text-secondary);margin-top:6px}

/* ===== Tabs ===== */
.tab-bar{
  display:flex;
  gap:6px;
  margin-bottom:18px;
  border-bottom:1px solid var(--border);
  padding-bottom:0;
}
.tab-btn{
  padding:10px 18px;
  font-size:.86rem;
  font-weight:600;
  color:var(--text-secondary);
  border-bottom:2px solid transparent;
  margin-bottom:-1px;
  cursor:pointer;
  transition:all var(--transition);
  background:none;
  border-top:none;
  border-left:none;
  border-right:none;
  border-radius:var(--radius-sm) var(--radius-sm) 0 0;
}
.tab-btn:hover{color:var(--text);background:var(--bg)}
.tab-btn.active{
  color:var(--primary-dark);
  border-bottom-color:var(--primary);
  background:var(--primary-soft);
}

/* ===== Modal ===== */
.modal-overlay{
  display:none;
  position:fixed;
  inset:0;
  z-index:9998;
  background:rgba(9,9,11,.5);
  backdrop-filter:blur(4px);
  align-items:center;
  justify-content:center;
  padding:20px;
}
.modal-overlay.open{display:flex}
.modal-card{
  background:var(--white);
  border-radius:var(--radius-lg);
  padding:28px;
  width:100%;
  max-width:400px;
  box-shadow:var(--shadow-lg);
  border:1px solid var(--border);
}
.modal-card h3{
  font-size:1.1rem;
  font-weight:800;
  margin-bottom:18px;
  letter-spacing:-.02em;
}
.modal-actions{display:flex;gap:10px;margin-top:4px}
.modal-actions .btn-primary-block,
.modal-actions .btn-ghost{flex:1;width:auto}

.section-title-row{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:20px;
}
.section-title-row .section-title{margin-bottom:0}
.ocup-diag-trigger{
  font-size:.8rem;
  padding:8px 14px;
  white-space:nowrap;
}
.ocup-diag-overlay{z-index:9997}
.ocup-diag-card{
  max-width:720px;
  max-height:88vh;
  display:flex;
  flex-direction:column;
  padding:0;
  overflow:hidden;
}
.ocup-diag-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:20px 22px 12px;
  border-bottom:1px solid var(--border);
}
.ocup-diag-header h3{margin-bottom:4px;font-size:1.05rem}
.ocup-diag-kicker{
  font-size:.75rem;
  color:var(--text-secondary);
  margin:0;
}
.ocup-diag-close{
  border:none;
  background:var(--bg);
  width:36px;
  height:36px;
  border-radius:var(--radius-sm);
  font-size:1.35rem;
  line-height:1;
  cursor:pointer;
  color:var(--text-secondary);
  flex-shrink:0;
}
.ocup-diag-close:hover{background:var(--border)}
.ocup-diag-body{
  padding:16px 22px;
  overflow-y:auto;
  flex:1;
  min-height:0;
}
.ocup-diag-footer{
  padding:12px 22px 20px;
  border-top:1px solid var(--border);
  margin-top:0;
}
.ocup-diag-summary{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:10px;
  margin-bottom:18px;
}
.ocup-diag-stat{
  background:var(--bg);
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  padding:12px;
}
.ocup-diag-stat-label{
  font-size:.7rem;
  color:var(--text-secondary);
  text-transform:uppercase;
  letter-spacing:.04em;
  margin-bottom:4px;
}
.ocup-diag-stat-value{
  font-size:1.35rem;
  font-weight:800;
  letter-spacing:-.02em;
}
.ocup-diag-stat-hint{
  font-size:.65rem;
  color:var(--text-secondary);
  margin-top:4px;
  line-height:1.3;
}
.ocup-diag-callout{
  background:var(--warning-soft);
  border:1px solid #fde68a;
  border-radius:var(--radius-sm);
  padding:12px 14px;
  font-size:.78rem;
  line-height:1.45;
  margin-bottom:12px;
  color:#78350f;
}
.ocup-diag-badge{
  display:inline-block;
  margin-top:10px;
  padding:6px 12px;
  border-radius:20px;
  font-size:.75rem;
  font-weight:700;
}
.ocup-diag-badge--ok{background:var(--success-soft);color:var(--success)}
.ocup-diag-badge--warn{background:var(--warning-soft);color:#92400e}
.ocup-diag-section{margin-bottom:20px}
.ocup-diag-section h4{
  font-size:.85rem;
  font-weight:800;
  margin:0 0 10px;
  letter-spacing:-.01em;
}
.ocup-diag-table-wrap{
  overflow-x:auto;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
}
.ocup-diag-table{
  width:100%;
  border-collapse:collapse;
  font-size:.78rem;
}
.ocup-diag-table th,
.ocup-diag-table td{
  padding:8px 10px;
  text-align:left;
  border-bottom:1px solid var(--border);
}
.ocup-diag-table th{
  background:var(--bg);
  font-weight:700;
  white-space:nowrap;
}
.ocup-diag-table tr:last-child td{border-bottom:none}
.ocup-diag-empty{
  padding:14px;
  text-align:center;
  color:var(--text-secondary);
  font-size:.8rem;
}
.ocup-diag-note{
  font-size:.72rem;
  color:var(--text-secondary);
  margin-top:8px;
  line-height:1.45;
}
.ocup-diag-tipo--unit{color:var(--warning);font-weight:600}
.ocup-diag-tipo--contract{color:var(--primary);font-weight:600}

/* ===== Sync preflight modal ===== */
.sync-preflight-overlay{z-index:9998}
.sync-preflight-card{
  max-width:920px;
  width:calc(100% - 32px);
  max-height:90vh;
  display:flex;
  flex-direction:column;
}
.sync-preflight-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding-bottom:12px;
  border-bottom:1px solid var(--border);
  margin-bottom:12px;
}
.sync-preflight-header h3{margin-bottom:4px;font-size:1.05rem}
.sync-preflight-kicker{font-size:.78rem;color:var(--text-secondary);line-height:1.4}
.sync-preflight-close{
  width:36px;height:36px;border-radius:var(--radius-sm);
  font-size:1.35rem;line-height:1;color:var(--text-secondary);
  background:var(--bg);flex-shrink:0;
}
.sync-preflight-close:hover{background:var(--border)}
.sync-preflight-alerts{margin-bottom:12px}
.sync-preflight-callout{
  font-size:.8rem;line-height:1.45;padding:10px 12px;border-radius:var(--radius-sm);
  margin-bottom:8px;border:1px solid var(--border);
}
.sync-preflight-callout--danger{background:var(--danger-soft);border-color:#fecaca;color:#991b1b}
.sync-preflight-callout--warn{background:var(--warning-soft);border-color:#fde68a;color:#92400e}
.sync-preflight-callout--ok{background:var(--success-soft);border-color:#bbf7d0;color:#166534}
.sync-preflight-body{
  overflow:auto;
  flex:1;
  min-height:120px;
  margin-bottom:12px;
}
.sync-preflight-table-wrap{
  overflow:auto;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
}
.sync-preflight-table{
  width:100%;
  border-collapse:collapse;
  font-size:.8rem;
}
.sync-preflight-table th,
.sync-preflight-table td{
  padding:10px 12px;
  text-align:left;
  border-bottom:1px solid var(--border);
  vertical-align:top;
}
.sync-preflight-table th{
  background:var(--bg);
  font-weight:600;
  font-size:.72rem;
  text-transform:uppercase;
  letter-spacing:.03em;
  color:var(--text-secondary);
}
.sync-preflight-table tr:last-child td{border-bottom:none}
.sync-preflight-row--block{background:#fef2f2}
.sync-preflight-row--warn{background:var(--warning-soft)}
.sync-preflight-subtitle{
  font-size:.74rem;color:var(--text-secondary);
  margin-top:2px;line-height:1.35;
}
.sync-preflight-reason{
  font-size:.72rem;color:var(--text-secondary);
  margin-top:4px;line-height:1.35;
}
.sync-preflight-tag{
  font-size:.65rem;font-weight:700;text-transform:uppercase;
  color:#92400e;background:var(--warning-soft);
  padding:1px 6px;border-radius:6px;margin-left:4px;
}
.sync-preflight-status{font-weight:600;white-space:nowrap}
.sync-preflight-force-wrap{
  margin-bottom:12px;padding:10px 12px;
  background:var(--danger-soft);border:1px solid #fecaca;border-radius:var(--radius-sm);
}
.sync-preflight-force-label{
  font-size:.78rem;line-height:1.45;color:#991b1b;
  display:flex;gap:8px;align-items:flex-start;cursor:pointer;
}
.sync-preflight-force-label input{margin-top:3px;flex-shrink:0}
.sync-preflight-footer{
  flex-wrap:wrap;gap:8px;
}
.sync-preflight-footer .btn-primary-block,
.sync-preflight-footer .btn-ghost{
  flex:1 1 auto;min-width:140px;
}
.sync-preflight-btn-force{
  color:var(--danger)!important;
  border:1px solid #fecaca!important;
  font-weight:600;
}

/* ===== Misc ===== */
#debugBar{
  background:var(--warning-soft);
  border:1px solid #fde68a;
  padding:10px 16px;
  font-size:.72rem;
  color:#92400e;
  word-break:break-all;
  border-radius:var(--radius-sm);
  margin-bottom:16px;
}
.filter-divider{color:var(--border);margin:0 4px;user-select:none}
.evo-toolbar{
  display:flex;
  gap:10px;
  margin-bottom:18px;
  flex-wrap:wrap;
  align-items:center;
  padding:12px 14px;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
}
.evo-toolbar select,
.evo-toolbar input[type=text]{
  padding:9px 12px;
  border:1.5px solid var(--border);
  border-radius:var(--radius-sm);
  font-size:.82rem;
  background:var(--white);
  transition:border-color var(--transition),box-shadow var(--transition);
}
.evo-toolbar select:focus,
.evo-toolbar input[type=text]:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 3px var(--primary-glow);
}
.evo-toolbar input[type=text]{width:160px}
.kpi-grid--single{
  grid-template-columns:minmax(260px,420px);
  margin-bottom:20px;
}
.imp-toolbar{
  display:flex;
  gap:12px;
  margin-bottom:18px;
  flex-wrap:wrap;
  align-items:center;
  padding:12px 14px;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
}
.imp-toolbar select{
  padding:9px 12px;
  border:1.5px solid var(--border);
  border-radius:var(--radius-sm);
  font-size:.82rem;
  background:var(--white);
  min-width:200px;
}
.imp-toolbar select:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 3px var(--primary-glow);
}
.imp-search{
  margin-bottom:0;
  flex:1;
  min-width:200px;
  max-width:320px;
}
.imp-toggle{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:.82rem;
  color:var(--text-secondary);
  cursor:pointer;
  user-select:none;
  margin-left:auto;
}
.imp-toggle input{
  width:16px;
  height:16px;
  cursor:pointer;
  accent-color:var(--primary);
}
.imp-table .imp-col-expand{
  width:36px;
  text-align:center;
}
.imp-expand-icon{
  display:inline-block;
  font-size:.7rem;
  color:var(--text-secondary);
}
.imp-client-row{
  cursor:pointer;
  transition:background var(--transition);
}
.imp-client-row:hover{
  background:#fffbeb;
}
.imp-client-row--open{
  background:#fef3c7;
}
.imp-detail-row td{
  padding:0 !important;
  background:#fafafa;
  border-bottom:2px solid var(--border);
}
.imp-detail-wrap{
  padding:12px 16px 16px 48px;
}
.imp-detail-table{
  width:100%;
  font-size:.8rem;
}
.imp-detail-table th{
  font-size:.72rem;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--text-secondary);
}
.imp-actions-cell{
  white-space:nowrap;
}
.imp-actions-cell .imp-detail-btn{
  padding:6px 10px;
  font-size:.75rem;
  margin-right:6px;
}
.imp-obs-cell{
  color:var(--text-secondary);
  font-size:.78rem;
  max-width:180px;
}
.ab-mode-toggle{
  display:flex;
  gap:0;
  border:1.5px solid var(--border);
  border-radius:var(--radius-sm);
  overflow:hidden;
}
.ab-mode-toggle button{
  padding:9px 14px;
  border:none;
  font-size:.82rem;
  font-weight:700;
  cursor:pointer;
}

/* ===== Comunicaciones ===== */
.com-hint{
  color:var(--text-secondary);
  font-size:.88rem;
  margin:-8px 0 18px;
  max-width:920px;
  line-height:1.5;
}
.com-layout{
  display:grid;
  grid-template-columns:minmax(0,1.4fr) minmax(280px,.9fr);
  gap:18px;
  align-items:start;
  margin-bottom:20px;
}
.com-side{
  display:flex;
  flex-direction:column;
  gap:18px;
}
.com-panel h3{
  margin:0 0 12px;
  font-size:1rem;
}
.com-toolbar{
  display:flex;
  flex-wrap:wrap;
  gap:12px 18px;
  margin-bottom:10px;
}
.com-toolbar label{
  display:flex;
  flex-direction:column;
  gap:4px;
  font-size:.78rem;
  font-weight:600;
  color:var(--text-secondary);
}
.com-toolbar select,
.com-template-toolbar select,
.com-template-toolbar input{
  min-width:160px;
}
.com-search-label{ flex:1 1 240px; }
.com-search-input{
  min-width:200px;
  width:100%;
  padding:7px 10px;
  border:1px solid var(--border, #d1d5db);
  border-radius:6px;
  font-size:.9rem;
}
.com-selection-summary{
  font-size:.82rem;
  color:var(--text-secondary);
  margin:0 0 10px;
}
.com-table-wrap{
  max-height:420px;
  overflow:auto;
}
.com-table{
  font-size:.8rem;
}
.com-table th,
.com-table td{
  vertical-align:middle;
}
.com-batch-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:14px;
}
.com-template-toolbar{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-bottom:8px;
}
.com-vars-hint{
  font-size:.78rem;
  color:var(--text-secondary);
  margin:0 0 8px;
}
.com-vars-hint code{
  background:var(--bg-muted);
  padding:2px 5px;
  border-radius:4px;
  font-size:.75rem;
}
.com-template-text{
  width:100%;
  min-height:180px;
  font-family:inherit;
  font-size:.85rem;
  line-height:1.45;
  padding:10px 12px;
  border:1.5px solid var(--border);
  border-radius:var(--radius-sm);
  resize:vertical;
  margin-bottom:10px;
}
.com-preview-box{
  white-space:pre-wrap;
  word-break:break-word;
  font-family:inherit;
  font-size:.85rem;
  line-height:1.5;
  margin:0;
  padding:12px;
  background:var(--bg-muted);
  border-radius:var(--radius-sm);
  min-height:120px;
  max-height:280px;
  overflow:auto;
}
.com-historial{margin-top:4px}
.com-hist-table{font-size:.78rem}
.com-hist-text{max-width:220px}
.com-row-btns{flex-wrap:wrap}
.com-recipient-row{cursor:pointer}
.com-recipient-row.com-row--enviado{background:rgba(34,197,94,.12)}
.com-recipient-row.com-row--enviado td:first-child{border-left:3px solid #22c55e}
.com-recipient-row.com-row--omitido{background:rgba(113,113,122,.14);color:var(--text-secondary)}
.com-recipient-row.com-row--omitido td:first-child{border-left:3px solid #a1a1aa}
.com-recipient-row.com-row--error-tel{background:rgba(239,68,68,.08)}
.com-recipient-row.com-row--current{outline:2px solid var(--primary);outline-offset:-2px}
.com-check-cell{white-space:nowrap}
.com-queue-row-badge{
  display:inline-block;
  width:8px;height:8px;border-radius:50%;
  margin-right:6px;vertical-align:middle;
}
.com-queue-row-badge--enviado{background:#22c55e}
.com-queue-row-badge--omitido{background:#a1a1aa}
.com-queue-row-badge--error_telefono{background:#ef4444}
.com-queue-row-badge--pendiente{background:transparent}
.com-queue-resume-banner{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
  padding:12px 14px;margin-bottom:14px;
  background:rgba(217,119,6,.12);
  border:1px solid rgba(217,119,6,.35);
  border-radius:var(--radius-sm);
  font-size:.85rem;
}
.com-queue-resume-banner .btn-sm{padding:6px 12px;font-size:.78rem}
#comStartWhatsappQueueBtn{background:#16a34a;border-color:#16a34a}
#comStartWhatsappQueueBtn:disabled{opacity:.5;cursor:not-allowed}
.com-queue-modal{align-items:flex-end;justify-content:flex-end;padding:16px}
.com-queue-card{
  max-width:480px;width:min(96vw,480px);
  max-height:92vh;overflow:auto;
  margin:0;
}
.com-queue-header{
  display:flex;justify-content:space-between;align-items:flex-start;
  gap:12px;margin-bottom:10px;
}
.com-queue-header h3{margin:0}
.com-queue-progress{margin:4px 0 0;font-size:1.1rem;font-weight:800;color:var(--primary)}
.com-queue-close{
  border:none;background:transparent;font-size:1.5rem;
  line-height:1;cursor:pointer;color:var(--text-secondary);
  padding:4px 8px;
}
.com-queue-stats{
  display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;
  font-size:.78rem;font-weight:600;
}
.com-queue-stat{padding:4px 8px;border-radius:6px;background:var(--bg-muted)}
.com-queue-stat--ok{background:rgba(34,197,94,.2)}
.com-queue-stat--skip{background:rgba(113,113,122,.2)}
.com-queue-stat--pending{background:rgba(217,119,6,.15)}
.com-queue-stat--err{background:rgba(239,68,68,.15)}
.com-queue-meta{
  display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;
  margin-bottom:12px;font-size:.88rem;
}
.com-queue-label{display:block;font-size:.7rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}
.com-queue-preview-title{margin:0 0 6px;font-size:.82rem}
.com-queue-preview{
  white-space:pre-wrap;word-break:break-word;
  font-family:inherit;font-size:.82rem;line-height:1.45;
  margin:0 0 12px;padding:10px;background:var(--bg-muted);
  border-radius:var(--radius-sm);max-height:200px;overflow:auto;
}
.com-queue-status-badge{
  display:inline-block;padding:3px 8px;border-radius:6px;
  font-size:.75rem;font-weight:700;text-transform:uppercase;
}
.com-queue-status-badge--pendiente{background:rgba(217,119,6,.2)}
.com-queue-status-badge--enviado{background:rgba(34,197,94,.25);color:#166534}
.com-queue-status-badge--omitido{background:rgba(113,113,122,.25)}
.com-queue-status-badge--error_telefono{background:rgba(239,68,68,.2);color:#991b1b}
.com-queue-auto-advance{
  display:flex;align-items:center;gap:8px;
  font-size:.82rem;margin-bottom:14px;cursor:pointer;
}
.com-queue-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.com-queue-actions--primary .btn-primary.imp-action-btn--wa{background:#25d366;border-color:#25d366}
.com-queue-finish{margin-left:auto}

/* ===== Alta manual cliente (modal centrado) ===== */
#createClientOverlay.client-create-overlay,
.client-create-overlay{
  position:fixed;inset:0;z-index:520;display:none;
  background:rgba(15,23,42,.55);overflow:hidden;overscroll-behavior:none;
}
#createClientOverlay.client-create-overlay.open,
.client-create-overlay.open{display:block}

#createClientModal.client-create-modal,
.client-create-modal{
  display:none;position:fixed;z-index:521;top:5vh;left:50%;
  transform:translateX(-50%);width:min(90vw,900px);max-width:900px;
  height:min(88vh,820px);max-height:88vh;margin:0;
  background:var(--surface);border-radius:var(--radius-lg);
  border:1px solid var(--border);
  box-shadow:0 24px 64px rgba(15,23,42,.28);
  flex-direction:column;overflow:hidden;contain:layout style paint;
  animation:clientFichaModalFadeIn .22s ease;
}
#createClientModal.client-create-modal.open,
.client-create-modal.open{display:flex}

.client-create-header{
  flex-shrink:0;padding:14px 20px 12px;border-bottom:1px solid var(--border);
  background:var(--surface);
}
.client-create-header-top{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
}
.client-create-kicker{
  margin:0 0 4px;font-size:.72rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);
}
.client-create-build-tag{
  margin:0 0 6px;font-size:.7rem;font-weight:700;font-family:ui-monospace,monospace;
  color:#b45309;letter-spacing:.02em;pointer-events:none;
}
.client-create-tap-probe-hint{
  display:none !important;
  margin:0;padding:0;border:0;pointer-events:none !important;
}
.client-create-form-shell{
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.client-create-footer{
  flex-shrink:0;
  padding:12px 20px 16px;
  border-top:1px solid var(--border);
  background:var(--surface);
  position:relative;
  z-index:3;
}
.client-create-tap-probe-strip{
  margin:0 0 10px;padding:10px 12px;border-radius:var(--radius-sm);
  background:#f8fafc;border:1px solid #cbd5e1;
  font-size:.74rem;line-height:1.45;color:#0f172a;
  pointer-events:none;
}
.client-create-tap-probe-strip-title{
  margin:0 0 6px;font-size:.68rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:#64748b;
}
.client-create-tap-probe-strip-line{margin:0 0 4px;word-break:break-word}
.client-create-tap-probe-strip-line:last-of-type{margin-bottom:8px}
.client-create-tap-probe-strip .client-create-tap-probe-view-btn{
  pointer-events:auto;margin:0;
}
.client-create-title{margin:0;font-size:1.25rem;line-height:1.2}
.client-create-close{
  flex-shrink:0;border:none;background:var(--bg-muted);
  width:40px;height:40px;border-radius:var(--radius-sm);
  font-size:1.45rem;line-height:1;cursor:pointer;color:var(--text-secondary);
}
.client-create-body{
  flex:1;
  min-height:0;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  padding:16px 20px 12px;background:var(--bg-muted);
}
.client-create-form{display:flex;flex-direction:column;gap:16px}
.client-create-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:16px 20px;align-items:start;
}
.client-create-col{display:flex;flex-direction:column;gap:4px;min-width:0}
.client-create-label{
  font-size:.68rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.04em;color:var(--text-secondary);margin-top:6px;
}
.client-create-label:first-child{margin-top:0}
.client-create-iban{
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.02em;
}
.client-create-notas{resize:vertical;min-height:72px}
.client-create-field-error{
  min-height:0;margin:0;font-size:.78rem;color:#991b1b;
  max-height:0;overflow:hidden;transition:max-height .15s;
}
.client-create-field-error--show{max-height:3rem;margin-top:2px}
.client-create-doc-duplicate{margin:4px 0 0;font-size:.85rem}
.client-create-doc-duplicate-btn{
  background:none;border:none;padding:0;color:var(--accent,#e67e22);
  text-decoration:underline;cursor:pointer;font:inherit;
}
.client-create-doc-duplicate-btn:hover{opacity:.85}
.client-create-dni-hint{
  margin:0 0 8px;font-size:.82rem;line-height:1.45;color:var(--text-secondary);
  flex:1 1 100%;width:100%;
}
.client-create-dni-upload{
  flex:1 1 100%;
  padding:10px;
  border:1px dashed var(--border);
  border-radius:var(--radius-sm);
  background:var(--bg-muted);
}
.client-create-dni-upload-label{
  display:block;
  margin:0 0 6px;
  font-size:.72rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--text-secondary);
}
.client-create-dni-upload-meta{
  margin:6px 0 0;
  font-size:.78rem;
  color:var(--text-secondary);
}
.client-create-dni-preview-wrap{
  margin-top:8px;
}
.client-create-dni-preview-img{
  display:block;
  width:100%;
  max-height:180px;
  object-fit:contain;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  background:#fff;
}
.client-create-actions{
  display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;
  padding-top:0;border-top:0;position:relative;z-index:4;
}

/* Diagnóstico alta cliente (móvil) */
#createClientDiagOverlay.create-client-diag-overlay,
.create-client-diag-overlay{
  position:fixed;inset:0;z-index:540;display:none;
  background:rgba(15,23,42,.65);
}
#createClientDiagOverlay.create-client-diag-overlay.open,
.create-client-diag-overlay.open{display:block}
#createClientDiagModal.create-client-diag-modal,
.create-client-diag-modal{
  display:none;position:fixed;z-index:541;left:50%;top:8vh;
  transform:translateX(-50%);width:min(94vw,480px);max-height:84vh;
  margin:0;background:var(--surface);border-radius:var(--radius-lg);
  border:1px solid var(--border);
  box-shadow:0 24px 64px rgba(15,23,42,.35);
  flex-direction:column;overflow:hidden;
}
#createClientDiagModal.create-client-diag-modal.open,
.create-client-diag-modal.open{display:flex}
.create-client-diag-header{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:14px 16px 10px;border-bottom:1px solid var(--border);
}
.create-client-diag-title{margin:0;font-size:1.05rem;line-height:1.3}
.create-client-diag-close{
  flex-shrink:0;border:none;background:var(--bg-muted);
  width:36px;height:36px;border-radius:var(--radius-sm);
  font-size:1.35rem;line-height:1;cursor:pointer;color:var(--text-secondary);
}
.create-client-diag-body{
  flex:1;min-height:0;overflow-y:auto;padding:12px 16px;
}
.create-client-diag-label{
  margin:10px 0 4px;font-size:.68rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);
}
.create-client-diag-label:first-child{margin-top:0}
.create-client-diag-stage{
  margin:0;font-size:1rem;font-weight:700;font-family:ui-monospace,monospace;
  color:#b45309;word-break:break-word;
}
.create-client-diag-error{
  margin:0;font-size:.92rem;line-height:1.45;color:#991b1b;word-break:break-word;
}
.create-client-diag-detail{
  margin:8px 0 0;font-size:.85rem;color:var(--text-secondary);line-height:1.4;
}
.create-client-diag-trace{
  margin:0;padding:10px;font-size:.72rem;line-height:1.45;
  background:#0f172a;color:#e2e8f0;border-radius:var(--radius-sm);
  white-space:pre-wrap;word-break:break-word;max-height:40vh;overflow:auto;
  -webkit-overflow-scrolling:touch;
}
.create-client-diag-actions{
  display:flex;justify-content:flex-end;gap:10px;padding:12px 16px;
  border-top:1px solid var(--border);flex-shrink:0;
}

/* TAP-PROBE informe móvil */
#createClientTapProbeOverlay.create-client-tap-probe-overlay,
.create-client-tap-probe-overlay{
  position:fixed;inset:0;z-index:542;display:none;
  background:rgba(15,23,42,.72);
}
#createClientTapProbeOverlay.create-client-tap-probe-overlay.open,
.create-client-tap-probe-overlay.open{display:block}
#createClientTapProbeModal.create-client-tap-probe-modal,
.create-client-tap-probe-modal{
  display:none;position:fixed;z-index:543;left:50%;top:4vh;
  transform:translateX(-50%);width:min(96vw,520px);max-height:92vh;
  margin:0;background:var(--surface);border-radius:var(--radius-lg);
  border:1px solid var(--border);
  box-shadow:0 24px 64px rgba(15,23,42,.4);
  flex-direction:column;overflow:hidden;
}
#createClientTapProbeModal.create-client-tap-probe-modal.open,
.create-client-tap-probe-modal.open{display:flex}
.create-client-tap-probe-header{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:14px 16px 10px;border-bottom:1px solid var(--border);flex-shrink:0;
}
.create-client-tap-probe-title{margin:0;font-size:1.05rem;line-height:1.3}
.create-client-tap-probe-close{
  flex-shrink:0;border:none;background:var(--bg-muted);
  width:36px;height:36px;border-radius:var(--radius-sm);
  font-size:1.35rem;line-height:1;cursor:pointer;color:var(--text-secondary);
}
.create-client-tap-probe-body{
  flex:1;min-height:0;overflow-y:auto;padding:12px 16px;
  -webkit-overflow-scrolling:touch;
}
.create-client-tap-probe-phase{
  margin:0 0 10px;font-size:.78rem;font-weight:700;font-family:ui-monospace,monospace;
  color:#b45309;word-break:break-word;
}
.create-client-tap-probe-summary{margin:0 0 12px}
.create-client-tap-probe-row{
  display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);
  gap:8px;padding:8px 0;border-bottom:1px solid var(--border);
  align-items:start;
}
.create-client-tap-probe-row dt{
  margin:0;font-size:.72rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.03em;color:var(--text-secondary);line-height:1.35;
}
.create-client-tap-probe-row dd{
  margin:0;font-size:.88rem;font-weight:700;font-family:ui-monospace,monospace;
  line-height:1.4;word-break:break-word;color:var(--text);
}
.create-client-tap-probe-row--highlight dd{
  font-size:1.05rem;color:#b45309;
}
.create-client-tap-probe-label{
  margin:12px 0 6px;font-size:.68rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);
}
.create-client-tap-probe-block{
  margin:0;padding:10px;font-size:.74rem;line-height:1.5;
  background:#0f172a;color:#e2e8f0;border-radius:var(--radius-sm);
  white-space:pre-wrap;word-break:break-word;max-height:22vh;overflow:auto;
  -webkit-overflow-scrolling:touch;
}
.create-client-tap-probe-textarea{
  display:block;width:100%;min-height:120px;max-height:28vh;
  margin:0;padding:10px;font-size:.74rem;line-height:1.45;font-family:ui-monospace,monospace;
  background:#f8fafc;color:#0f172a;border:1px solid var(--border);border-radius:var(--radius-sm);
  resize:vertical;-webkit-overflow-scrolling:touch;
}
.create-client-tap-probe-actions{
  display:flex;justify-content:flex-end;gap:10px;padding:12px 16px;
  border-top:1px solid var(--border);flex-shrink:0;
}
.client-create-tap-probe-view-btn{
  display:inline-block;margin-left:8px;padding:4px 8px;border-radius:var(--radius-sm);
  border:1px solid #d97706;background:#fff;color:#92400e;font-size:.72rem;font-weight:700;cursor:pointer;
}
@media(max-width:768px){
  #createClientTapProbeModal.create-client-tap-probe-modal,
  .create-client-tap-probe-modal{top:2vh;max-height:96vh;width:96vw}
  .create-client-tap-probe-row{grid-template-columns:1fr}
  .create-client-tap-probe-row dd{font-size:.92rem}
  .create-client-tap-probe-row--highlight dd{font-size:1.12rem}
}
@media(max-width:768px){
  #createClientDiagModal.create-client-diag-modal,
  .create-client-diag-modal{
    top:0;left:0;right:0;bottom:0;transform:none;width:100%;max-height:100%;
    border-radius:0;
  }
}
.ficha-notas-internas{
  margin:12px 0 0;font-size:.82rem;color:var(--text-secondary);
  padding:8px 10px;background:var(--bg-muted);border-radius:var(--radius-sm);
  line-height:1.4;
}

@media(max-width:768px){
  #createClientModal.client-create-modal,
  .client-create-modal{
    top:0;left:0;right:0;bottom:0;transform:none;
    width:100%;max-width:100%;height:100dvh;max-height:100dvh;border-radius:0;
  }
  .client-create-form-shell{
    height:100%;
    max-height:100%;
    overflow:hidden;
  }
  .client-create-body{
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding-bottom:24px;
  }
  .client-create-footer{
    padding:10px 14px calc(12px + env(safe-area-inset-bottom,0px));
    position:relative;
  }
  .client-create-grid{grid-template-columns:1fr}
}

/* ===== OCR alta cliente (Fase 1.1 mock) ===== */
#ocrScanOverlay.ocr-scan-overlay,
.ocr-scan-overlay{
  position:fixed;inset:0;z-index:530;display:none;
  background:rgba(15,23,42,.55);overflow:hidden;overscroll-behavior:none;
}
#ocrScanOverlay.ocr-scan-overlay.open,
.ocr-scan-overlay.open{display:block}

#ocrScanModal.ocr-scan-modal,
.ocr-scan-modal{
  display:none;position:fixed;z-index:531;top:5vh;left:50%;
  transform:translateX(-50%);width:min(92vw,1120px);max-width:1120px;
  height:min(88vh,860px);max-height:88vh;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  box-shadow:0 24px 64px rgba(15,23,42,.28);
  flex-direction:column;overflow:hidden;
}
#ocrScanModal.ocr-scan-modal.open,
.ocr-scan-modal.open{display:flex}

.ocr-scan-header{
  display:flex;justify-content:space-between;gap:12px;align-items:flex-start;
  padding:14px 20px 12px;border-bottom:1px solid var(--border);
}
.ocr-scan-kicker{margin:0 0 4px;font-size:.72rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}
.ocr-scan-title{margin:0;font-size:1.15rem;line-height:1.2}
.ocr-scan-close{border:none;background:var(--bg-muted);width:40px;height:40px;border-radius:var(--radius-sm);font-size:1.4rem;cursor:pointer}

.ocr-scan-body{
  flex:1;min-height:0;display:flex;flex-direction:column;padding:14px 20px 16px;
  background:var(--bg-muted);overflow:hidden;
}
.ocr-scan-toolbar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;
  padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);
  flex-shrink:0;
}
.ocr-diagnostic-toggle{display:inline-flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600;cursor:pointer;margin:0}
.ocr-diagnostic-toggle input{width:16px;height:16px;margin:0}
.ocr-scan-toolbar-note{margin:0;font-size:.76rem;color:var(--text-secondary)}
.ocr-diagnostic-only{display:none !important}
.ocr-scan-modal--diagnostic .ocr-diagnostic-only{display:block !important}
.ocr-scan-modal--diagnostic .ocr-debug-copy-actions{display:flex !important}
.ocr-scan-grid{
  display:grid;grid-template-columns:minmax(0,34%) minmax(0,1fr);gap:14px;
  flex:1;min-height:0;min-width:0;
}
.ocr-scan-modal:not(.ocr-scan-modal--diagnostic) .ocr-scan-panel--proposal{min-height:0}
.ocr-scan-modal:not(.ocr-scan-modal--diagnostic) .ocr-preview-wrap{min-height:120px;max-height:220px}
.ocr-scan-panel{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:12px;display:flex;flex-direction:column;min-height:0;min-width:0;
}
.ocr-scan-panel h4{margin:0 0 8px;font-size:.9rem}

.ocr-preview-wrap{
  margin-top:8px;border:1px dashed var(--border);border-radius:var(--radius-sm);
  background:var(--bg-muted);padding:10px;min-height:120px;overflow:auto;
  max-width:100%;
}
.ocr-preview-image{max-width:100%;width:auto;height:auto;max-height:320px;object-fit:contain;display:block;margin:0 auto}
#ocrScanFileInput{max-width:100%;box-sizing:border-box}
.ocr-preview-file{margin:0;font-size:.84rem;color:var(--text-secondary)}

.ocr-status-row{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.ocr-state-badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:.68rem;font-weight:700;text-transform:uppercase}
.ocr-state-badge--idle{background:rgba(113,113,122,.18);color:#3f3f46}
.ocr-state-badge--preparing{background:rgba(59,130,246,.15);color:#1d4ed8}
.ocr-state-badge--ocr{background:rgba(59,130,246,.2);color:#1e3a8a}
.ocr-state-badge--parsing{background:rgba(217,119,6,.18);color:#92400e}
.ocr-state-badge--ready{background:rgba(34,197,94,.18);color:#166534}
.ocr-state-badge--error{background:rgba(239,68,68,.2);color:#991b1b}
.ocr-state-badge--cancelled{background:rgba(113,113,122,.2);color:#3f3f46}
.ocr-status-text{margin:0;font-size:.8rem;color:var(--text-secondary)}

.ocr-proposal-wrap{
  flex:1;min-height:0;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:14px 16px;background:var(--bg);
}
.ocr-scan-modal:not(.ocr-scan-modal--diagnostic) .ocr-proposal-wrap{
  min-height:min(52vh,420px);padding:18px 20px;
}
.ocr-proposal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}
.ocr-proposal-row{display:flex;flex-direction:column;gap:6px}
.ocr-proposal-row--filled .ocr-proposal-label{color:var(--text-primary)}
.ocr-proposal-label{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}
.ocr-proposal-input{
  width:100%;max-width:100%;box-sizing:border-box;
  min-height:46px;padding:10px 12px;font-size:1.05rem;font-weight:600;line-height:1.25;
}
.ocr-proposal-input--filled{
  font-weight:700;color:var(--text-primary);background:var(--surface);
  border-color:rgba(34,197,94,.35);box-shadow:inset 0 0 0 1px rgba(34,197,94,.08);
}
.ocr-proposal-confidence{
  display:inline-flex;align-items:center;align-self:flex-start;
  padding:3px 8px;border-radius:999px;font-size:.76rem;font-weight:700;
}
.ocr-proposal-confidence--high{background:rgba(34,197,94,.16);color:#166534}
.ocr-proposal-confidence--medium{background:rgba(217,119,6,.16);color:#92400e}
.ocr-proposal-confidence--low{background:rgba(239,68,68,.14);color:#991b1b}
.ocr-proposal-confidence--unknown{background:rgba(113,113,122,.14);color:#52525b}
.ocr-proposal-overall{font-weight:700;padding:4px 10px;border-radius:999px}
.ocr-proposal-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px;font-size:.82rem;color:var(--text-secondary);align-items:center}
.ocr-warning-list{margin:10px 0 0 18px;font-size:.8rem;color:#92400e}
.ocr-debug-toolbar{
  display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap;
  margin:10px 0 8px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);
}
.ocr-debug-toolbar-title{margin:0;font-size:.88rem}
.ocr-debug-copy-actions{display:flex;gap:8px;flex-wrap:wrap}
.ocr-debug-copy-actions .btn-ghost{
  padding:6px 10px;font-size:.74rem;min-height:32px;
}
.ocr-empty{margin:0;font-size:.84rem;color:var(--text-secondary)}
.ocr-debug-images-heading{margin:12px 0 6px;font-size:.85rem}
.ocr-debug-images-panel{margin-top:4px;border:1px dashed var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:10px;max-height:min(52vh,520px);overflow:auto}
.ocr-debug-images-note{margin:0 0 8px;font-size:.75rem;color:var(--text-secondary)}
.ocr-debug-images-meta{margin:8px 0 0;font-size:.72rem;color:var(--text-secondary)}
.ocr-capture-quality-panel{
  margin-top:12px;padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--surface);
}
.ocr-capture-quality-panel h4{margin:0 0 8px;font-size:.88rem}
.ocr-capture-quality-audit{
  margin:0 0 10px;padding:8px 10px;border-radius:var(--radius-sm);
  background:rgba(15,23,42,.05);border:1px solid var(--border);
  font-size:.68rem;line-height:1.45;color:var(--text-secondary);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  white-space:pre-wrap;word-break:break-word;max-height:min(28vh,240px);overflow:auto;
}
.ocr-pipeline-images-panel{max-height:min(58vh,560px)}
.ocr-pipeline-compare{
  display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px;
}
@media (max-width:720px){.ocr-pipeline-compare{grid-template-columns:1fr}}
.ocr-pipeline-compare-card{
  margin:0;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--surface);
}
.ocr-pipeline-compare-card figcaption{
  margin:0 0 6px;font-size:.72rem;font-weight:700;color:var(--text-secondary);
}
.ocr-pipeline-compare-img{width:100%;height:auto;max-height:220px;object-fit:contain;background:#0f172a;border-radius:6px}
.ocr-variant-sweep-wrap{margin-top:12px}
.ocr-variant-sweep-title{margin:0 0 6px;font-size:.85rem}
.ocr-variant-sweep-note{margin:0 0 8px;font-size:.74rem;color:var(--text-secondary)}
.ocr-variant-sweep-table{font-size:.72rem}
.ocr-variant-row--chosen{background:rgba(34,197,94,.12)}
.ocr-variant-row--chosen td{font-weight:700}
.ocr-debug-wrap{margin-top:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:10px;max-height:min(42vh,420px);overflow:auto}
.ocr-verify-box{margin:8px 0;padding:8px 10px;border:1px solid #93c5fd;border-radius:8px;background:rgba(37,99,235,.06);font-size:.74rem}
.ocr-verify-title{margin:0 0 6px;font-weight:700;color:#1d4ed8}
.ocr-verify-box p{margin:4px 0;word-break:break-word}
.ocr-raw-lines{margin:4px 0 6px 18px;padding:0;max-height:120px;overflow:auto}
.ocr-raw-lines code{font-size:.7rem}
.ocr-raw-preview{margin:0;max-height:90px;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px}
.ocr-raw-preview code{font-size:.68rem;white-space:pre-wrap}
.ocr-parser-debug-wrap{margin-top:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:8px 10px;max-height:min(36vh,360px);overflow:auto}
.ocr-parser-debug-title{margin:0 0 6px;font-size:.78rem;font-weight:700}
.ocr-parser-debug-meta{margin:0 0 8px;font-size:.72rem;color:var(--text-secondary)}
.ocr-numbered-lines{margin:0;padding:0;list-style:none}
.ocr-numbered-line{display:flex;gap:8px;align-items:flex-start;padding:4px 6px;border-radius:6px;margin-bottom:2px}
.ocr-numbered-line code{font-size:.72rem;white-space:pre-wrap;word-break:break-word}
.ocr-line-no{flex:0 0 28px;font-size:.7rem;font-weight:700;color:var(--text-secondary)}
.ocr-numbered-line--label-apellidos{background:rgba(217,119,6,.12)}
.ocr-numbered-line--value-apellidos{background:rgba(34,197,94,.14)}
.ocr-numbered-line--label-nombre{background:rgba(59,130,246,.12)}
.ocr-numbered-line--label-birth{background:rgba(168,85,247,.12)}
.ocr-numbered-line--value-birth{background:rgba(34,197,94,.14)}
.ocr-numbered-line--value-nombre{background:rgba(34,197,94,.2)}
.ocr-line-raw{font-size:.65rem;color:var(--text-secondary);margin-left:6px}
.ocr-pipe-details{margin:6px 0;border:1px solid var(--border);border-radius:6px;padding:4px 8px;background:var(--surface)}
.ocr-pipe-details summary{cursor:pointer;font-size:.74rem;font-weight:600}
.ocr-pipe-pre{margin:6px 0;max-height:160px;overflow:auto;font-size:.68rem;white-space:pre-wrap;word-break:break-word}
.ocr-pipe-list{margin:6px 0 0 18px;padding:0;font-size:.72rem;max-height:120px;overflow:auto}
.ocr-debug-summary{display:flex;gap:10px;flex-wrap:wrap;font-size:.75rem;color:var(--text-secondary);margin-bottom:8px}
.ocr-debug-table-wrap{overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.ocr-debug-table{width:100%;border-collapse:collapse;font-size:.72rem}
.ocr-debug-table th,.ocr-debug-table td{padding:6px 8px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}
.ocr-debug-table th{font-size:.68rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary)}
.ocr-debug-image-card{border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--surface);margin-bottom:8px}
.ocr-debug-image-card--hero{border-color:#2563eb;background:rgba(37,99,235,.06)}
.ocr-debug-image-title{margin:0 0 6px;font-size:.72rem;font-weight:700;color:var(--text-secondary)}
.ocr-debug-image-card--hero .ocr-debug-image-title{color:#1d4ed8}
.ocr-debug-image{width:100%;max-height:160px;object-fit:contain;display:block;background:var(--bg-muted);border-radius:6px}
.ocr-debug-image--hero{max-height:min(38vh,360px);border:2px solid #2563eb}
.ocr-debug-download{display:inline-block;margin-top:6px;font-size:.72rem}

.ocr-scan-actions{
  display:flex;justify-content:flex-end;gap:10px;margin-top:12px;padding-top:10px;
  border-top:1px solid var(--border);flex-shrink:0;
}

/* ===== OCR captura guiada (Fase 2A) ===== */
.ocr-capture-step,.ocr-review-step{
  display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;
  max-width:100%;overflow-x:hidden;
}
.ocr-review-step[hidden],.ocr-capture-step[hidden]{display:none !important}
.ocr-capture-intro{margin:0 0 6px;font-size:.82rem;color:var(--text-secondary);line-height:1.35;flex-shrink:0}
.ocr-capture-orient-banner{
  margin:0 0 8px;padding:10px 12px;border-radius:var(--radius-sm);
  background:#fef3c7;border:1px solid #f59e0b;color:#92400e;
  font-size:.82rem;font-weight:700;line-height:1.35;flex-shrink:0;
}
.ocr-capture-orient-banner[hidden]{display:none !important}
.ocr-capture-orient-only{
  display:none;flex:1;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;padding:24px 20px calc(20px + env(safe-area-inset-bottom,0px));
  text-align:center;min-height:min(72vh,520px);
}
.ocr-capture-step--portrait-blocked .ocr-capture-orient-only{display:flex}
.ocr-capture-step--portrait-blocked .ocr-capture-intro,
.ocr-capture-step--portrait-blocked .ocr-capture-camera-wrap,
.ocr-capture-step--portrait-blocked .ocr-capture-feedback,
.ocr-capture-step--portrait-blocked .ocr-capture-actions--backup,
.ocr-capture-step--portrait-blocked .ocr-capture-orient-banner{display:none !important}
.ocr-capture-portrait-blocked .ocr-scan-header{flex-shrink:0}
.ocr-capture-rotate-icon{
  color:var(--primary-dark,#b45309);
  display:flex;align-items:center;justify-content:center;
}
.ocr-capture-rotate-icon svg{
  animation:ocr-capture-rotate-hint 2.2s ease-in-out infinite;
}
@keyframes ocr-capture-rotate-hint{
  0%,100%{transform:rotate(0deg)}
  45%,55%{transform:rotate(90deg)}
}
.ocr-capture-orient-title{
  margin:0;font-size:1.05rem;font-weight:800;line-height:1.35;color:var(--text-primary);
  max-width:22em;
}
.ocr-capture-orient-why{
  margin:0;font-size:.88rem;line-height:1.45;color:var(--text-secondary);max-width:24em;
}
.ocr-capture-orient-actions{
  display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px;width:100%;
  max-width:320px;
}
.ocr-capture-orient-actions .btn-primary,
.ocr-capture-orient-actions .btn-ghost{flex:1;min-width:120px}
.ocr-capture-camera-wrap{
  flex:1;min-height:0;display:flex;flex-direction:column;width:100%;
}
.ocr-capture-viewport{
  --cap-frame-x:3%;
  --cap-frame-y:8%;
  --cap-frame-w:94%;
  --cap-frame-h:42%;
  position:relative;width:100%;max-width:100%;flex:1;min-height:200px;
  background:#0f172a;border-radius:var(--radius-sm);
  overflow:hidden;border:1px solid var(--border);
  touch-action:manipulation;
  cursor:pointer;
}
.ocr-capture-float-controls{
  position:absolute;left:0;right:0;bottom:calc(10px + env(safe-area-inset-bottom,0px));
  z-index:30;display:flex;align-items:center;justify-content:center;gap:10px;
  padding:0 10px;pointer-events:none;
}
.ocr-capture-float-controls > *{pointer-events:auto}
.ocr-capture-chip{
  border:1px solid rgba(255,255,255,.55);background:rgba(15,23,42,.72);color:#fff;
  border-radius:999px;padding:8px 14px;font-size:.78rem;font-weight:700;
  touch-action:manipulation;cursor:pointer;
}
.ocr-capture-shoot-fab{
  position:relative;left:auto;bottom:auto;transform:none;
  display:inline-flex !important;visibility:visible !important;opacity:1 !important;
  align-items:center;justify-content:center;
  min-width:72px;min-height:72px;padding:0 22px;
  border:3px solid #fff;border-radius:999px;
  background:var(--primary-dark,#b45309);color:#fff;
  font-size:1rem;font-weight:800;letter-spacing:.02em;
  box-shadow:0 8px 28px rgba(0,0,0,.35), 0 2px 8px rgba(15,23,42,.35);
  touch-action:manipulation;pointer-events:auto;
  -webkit-tap-highlight-color:transparent;
  cursor:pointer;flex-shrink:0;
}
.ocr-capture-shoot-fab:active{transform:scale(.96)}
.ocr-capture-shoot-fab[aria-busy="true"]{opacity:.75}
.ocr-capture-quality--hud{
  position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:12;
  max-width:92%;text-align:center;
}
.ocr-review-capture-fab{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
  opacity:0 !important;
  position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom,0px));
  transform:translateX(-50%);z-index:520;
}
/* Revisión OCR: sin FAB flotante (retake = barra inferior) */
#ocrReviewStep:not([hidden]) .ocr-review-capture-fab,
#ocrReviewStep:not([hidden]) ~ .ocr-review-capture-fab,
.ocr-scan-modal--review-active .ocr-review-capture-fab,
.ocr-scan-modal--review-active #ocrReviewCaptureFab,
.ocr-scan-modal--review-active #ocrCaptureShootFab,
.ocr-scan-modal--review-active .ocr-capture-shoot-fab{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
  opacity:0 !important;
}
.ocr-capture-video{width:100%;height:100%;object-fit:contain;display:block;background:#0f172a}
.ocr-capture-analysis-canvas{display:none}
.ocr-capture-overlay{
  position:absolute;inset:0;pointer-events:none;z-index:5;
  background:transparent;
}
.ocr-capture-frame{
  position:absolute;
  left:var(--cap-frame-x,10%);
  top:var(--cap-frame-y,22%);
  width:var(--cap-frame-w,80%);
  height:var(--cap-frame-h,32%);
  min-width:48px;min-height:32px;
  border:3px solid #ef4444;border-radius:10px;
  box-shadow:0 0 0 9999px rgba(15,23,42,.42);
  display:flex !important;align-items:center;justify-content:center;
  visibility:visible !important;opacity:1 !important;
  transition:border-color .2s ease, box-shadow .2s ease, left .12s ease, top .12s ease, width .12s ease, height .12s ease;
  z-index:8;
}
.ocr-capture-frame-label{
  font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(255,255,255,.92);text-shadow:0 1px 4px rgba(0,0,0,.5);
  background:rgba(15,23,42,.55);padding:6px 10px;border-radius:6px;
}
.ocr-capture-frame--red{border-color:#ef4444}
.ocr-capture-frame--orange{border-color:#f97316}
.ocr-capture-frame--green{border-color:#22c55e;box-shadow:0 0 0 9999px rgba(15,23,42,.38), 0 0 12px rgba(34,197,94,.45)}
.ocr-capture-feedback{
  margin-top:6px;flex-shrink:0;max-height:22vh;overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
.ocr-capture-live-diag{
  margin:6px 0 0;padding:8px 10px;border-radius:var(--radius-sm);
  background:rgba(15,23,42,.06);border:1px solid var(--border);
  font-size:.68rem;line-height:1.4;color:var(--text-secondary);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  white-space:pre-wrap;word-break:break-word;
}
.ocr-capture-quality{
  display:inline-block;padding:5px 12px;border-radius:999px;
  font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
}
.ocr-capture-quality--red{background:rgba(239,68,68,.18);color:#991b1b}
.ocr-capture-quality--orange{background:rgba(249,115,22,.2);color:#9a3412}
.ocr-capture-quality--green{background:rgba(34,197,94,.2);color:#166534}
.ocr-capture-hint{margin:8px 0 0;font-size:.9rem;font-weight:600;color:var(--text-primary)}
.ocr-capture-messages{margin:6px 0 0;padding-left:18px;font-size:.78rem;color:var(--text-secondary);line-height:1.4}
.ocr-capture-actions{
  position:relative;z-index:5;
  display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;padding-top:10px;
  border-top:1px solid var(--border);flex-shrink:0;
  pointer-events:auto;
}
.ocr-capture-actions--backup{display:flex}
.ocr-capture-actions .btn-ghost,
.ocr-capture-actions .btn-primary{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
.ocr-capture-actions .btn-primary{flex:1;min-width:140px}
.ocr-file-input-fallback{margin-top:6px}
.ocr-scan-modal--capture-only .ocr-scan-body{overflow:hidden}

/* OCR modal — tablet */
@media(max-width:900px){
  #ocrScanModal.ocr-scan-modal,.ocr-scan-modal{width:min(98vw,1120px)}
}

/* OCR modal — móvil: una columna, sin scroll horizontal, botones táctiles al final */
@media(max-width:767px){
  #ocrScanModal.ocr-scan-modal,.ocr-scan-modal{
    top:0;left:0;right:0;bottom:0;transform:none;
    width:100%;max-width:100%;height:100%;max-height:100%;
    border-radius:0;border-left:none;border-right:none;
  }

  .ocr-scan-header{
    padding:12px 14px 10px;flex-shrink:0;
  }
  .ocr-scan-title{font-size:1.05rem}

  .ocr-scan-body{
    padding:10px 14px 0;
    overflow-x:hidden;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
  }

  .ocr-scan-toolbar{
    flex-direction:column;align-items:flex-start;gap:6px;
    margin-bottom:8px;
  }
  .ocr-scan-toolbar-note{font-size:.74rem;line-height:1.35}

  .ocr-scan-grid{
    display:flex;
    flex-direction:column;
    gap:12px;
    flex:none;
    min-height:auto;
    width:100%;
    max-width:100%;
  }

  .ocr-scan-panel{
    width:100%;max-width:100%;
    padding:12px 12px 14px;
    overflow:visible;
  }
  .ocr-scan-panel--source{order:1}
  .ocr-scan-panel--proposal{order:2}

  .ocr-scan-panel h4{font-size:.88rem;margin-bottom:10px}

  #ocrScanFileInput{
    width:100%;
    min-height:44px;
    font-size:16px;
  }

  .ocr-preview-wrap{
    min-height:100px;
    max-height:min(42vh,300px);
    overflow:auto;
    -webkit-overflow-scrolling:touch;
  }
  .ocr-preview-image{max-height:min(38vh,260px)}

  .ocr-status-row{margin-bottom:10px}

  .ocr-scan-modal:not(.ocr-scan-modal--diagnostic) .ocr-proposal-wrap,
  .ocr-proposal-wrap{
    flex:none;
    min-height:auto;
    max-height:none;
    overflow:visible;
    padding:14px 12px;
    width:100%;
    max-width:100%;
    box-sizing:border-box;
  }

  .ocr-proposal-grid{
    grid-template-columns:1fr;
    gap:14px;
    width:100%;
  }
  .ocr-proposal-row{width:100%;min-width:0}
  .ocr-proposal-input{
    min-height:48px;
    font-size:1.02rem;
  }
  .ocr-proposal-confidence{font-size:.78rem}
  .ocr-proposal-meta{
    flex-direction:column;align-items:flex-start;gap:6px;
    font-size:.78rem;
  }
  .ocr-warning-list{
    margin:12px 0 0;
    padding-left:18px;
    font-size:.82rem;
    line-height:1.4;
  }

  .ocr-debug-toolbar{flex-direction:column}
  .ocr-debug-copy-actions{
    width:100%;
    flex-direction:column;
  }
  .ocr-debug-copy-actions .btn-ghost{
    width:100%;
    min-height:44px;
    font-size:.8rem;
  }
  .ocr-debug-images-panel,
  .ocr-debug-wrap,
  .ocr-parser-debug-wrap{
    max-height:min(36vh,280px);
    max-width:100%;
    overflow:auto;
  }
  .ocr-debug-table-wrap{
    max-width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .ocr-debug-table th,.ocr-debug-table td{
    white-space:normal;
    word-break:break-word;
    font-size:.68rem;
  }
  .ocr-verify-box{font-size:.72rem;max-width:100%}
  .ocr-pipe-pre,.ocr-raw-preview{max-width:100%}

  .ocr-scan-actions{
    position:sticky;
    bottom:0;
    z-index:3;
    flex-direction:column;
    gap:10px;
    margin:14px -14px 0;
    padding:12px 14px calc(12px + env(safe-area-inset-bottom, 0px));
    background:var(--bg-muted);
    border-top:1px solid var(--border);
    box-shadow:0 -8px 24px rgba(15,23,42,.08);
  }
  .ocr-scan-actions .btn-ghost,
  .ocr-scan-actions .btn-primary{
    width:100%;
    min-height:48px;
    font-size:1rem;
    justify-content:center;
  }
  .ocr-scan-actions .btn-primary{
    order:2;
    min-height:52px;
    font-weight:700;
  }
  .ocr-scan-actions .btn-ghost{order:1}

  .ocr-scan-modal--camera-active .ocr-scan-body{
    padding:8px 10px 0;
    overflow:hidden;
    display:flex;flex-direction:column;
  }
  .ocr-capture-step{
    flex:1;min-height:0;overflow:hidden;
    padding-bottom:calc(4px + env(safe-area-inset-bottom,0px));
  }
  .ocr-capture-camera-wrap{
    flex:1;min-height:0;
  }
  .ocr-capture-viewport{
    flex:1;width:100%;min-height:0;max-height:none;
    aspect-ratio:unset;height:auto;
    border-radius:10px;
  }
  .ocr-capture-frame{
    border-width:4px;
    max-width:none;
    max-height:none;
  }
  .ocr-capture-shoot-fab{
    min-width:76px;min-height:76px;font-size:1.05rem;
  }
  .ocr-capture-feedback{
    max-height:18vh;margin-top:4px;
  }
  .ocr-capture-live-diag{font-size:.66rem;padding:6px 8px}
  .ocr-capture-actions--backup{
    display:none !important;
  }
  .ocr-capture-intro{font-size:.78rem;margin-bottom:4px}
  .ocr-capture-orient-banner{font-size:.78rem;padding:8px 10px}

  /* Landscape: cámara casi a pantalla completa */
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen{
    top:0;left:0;right:0;bottom:0;transform:none;
    width:100%;max-width:100%;height:100%;max-height:100%;
    border-radius:0;border:none;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-scan-header,
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-intro,
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-orient-banner,
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-feedback,
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-actions--backup{
    display:none !important;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-scan-body{
    padding:0;overflow:hidden;
    flex:1;min-height:0;display:flex;flex-direction:column;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-step{
    flex:1;min-height:0;padding:0;overflow:hidden;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-camera-wrap{
    flex:1;min-height:0;height:100%;width:100%;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-viewport{
    flex:1;width:100%;height:100%;min-height:100%;max-height:none;
    border:none;border-radius:0;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-video{
    width:100%;height:100%;object-fit:cover;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-float-controls{
    bottom:calc(8px + env(safe-area-inset-bottom,0px));
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-chip{
    padding:6px 12px;font-size:.72rem;
  }
  .ocr-scan-modal--camera-active.ocr-capture-landscape-fullscreen .ocr-capture-shoot-fab{
    min-width:68px;min-height:68px;
  }

  .ocr-review-capture-fab{
    bottom:calc(96px + env(safe-area-inset-bottom,0px));
  }
  .ocr-review-actions{position:sticky;bottom:0;z-index:532;margin:14px -14px 0;padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px));background:var(--bg-muted);box-shadow:0 -8px 24px rgba(15,23,42,.08)}
  .ocr-review-actions .btn-primary{position:relative;z-index:533}
  .ocr-review-actions .btn-primary,.ocr-review-actions .btn-ghost{width:100%;min-height:48px}
}

/* Desktop ancho: dos columnas explícitas */
@media(min-width:768px){
  .ocr-scan-grid{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  }
  .ocr-scan-modal:not(.ocr-scan-modal--diagnostic) .ocr-scan-grid{
    grid-template-columns:minmax(240px,34%) minmax(0,1fr);
  }
}

/* ===== Ficha Cliente 360° — modal centrado, scroll estable ===== */
/* Overlay = solo fondo (sin backdrop-filter: evita flicker al scroll) */
#clientFichaOverlay.client-ficha-overlay,
.client-ficha-overlay{
  position:fixed;
  inset:0;
  z-index:500;
  display:none;
  margin:0;
  padding:0;
  background:rgba(15,23,42,.55);
  overflow:hidden;
  overscroll-behavior:none;
  touch-action:none;
}
#clientFichaOverlay.client-ficha-overlay.open,
.client-ficha-overlay.open{
  display:block;
}

html.client-ficha-open,
body.client-ficha-open{
  overflow:hidden;
  overscroll-behavior:none;
}

/* Panel modal: capa separada del overlay, sin translateY */
#clientFichaModal.client-ficha-modal,
.client-ficha-modal{
  display:none;
  position:fixed;
  z-index:501;
  top:5vh;
  left:50%;
  right:auto;
  bottom:auto;
  transform:translateX(-50%);
  width:min(90vw,1360px);
  max-width:1360px;
  height:90vh;
  max-height:90vh;
  margin:0;
  background:var(--surface);
  border-radius:var(--radius-lg);
  box-shadow:0 24px 64px rgba(15,23,42,.28),0 8px 24px rgba(15,23,42,.12);
  border:1px solid var(--border);
  flex-direction:column;
  overflow:hidden;
  contain:layout style paint;
  animation:clientFichaModalFadeIn .22s ease;
}
#clientFichaModal.client-ficha-modal.open,
.client-ficha-modal.open{
  display:flex;
}
@keyframes clientFichaModalFadeIn{
  from{opacity:0}
  to{opacity:1}
}

/* Legacy drawer dentro de overlay antiguo */
#clientFichaOverlay .client-ficha-drawer,
.client-ficha-overlay .client-ficha-drawer{
  position:fixed !important;
  top:5vh !important;
  left:50% !important;
  transform:translateX(-50%) !important;
  width:min(90vw,1360px) !important;
  max-width:1360px !important;
  height:90vh !important;
  max-height:90vh !important;
  z-index:501 !important;
}

.client-ficha-header{
  flex-shrink:0;
  position:relative;
  z-index:2;
  background:var(--surface);
  border-bottom:1px solid var(--border);
  padding:14px 20px 12px;
}
.client-ficha-header-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.client-ficha-header-main{min-width:0;flex:1}
.client-ficha-header-actions{
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid var(--border);
}
.client-ficha-header-actions .ficha-quick-actions--header{
  margin:0;
}
.client-ficha-kicker{
  margin:0 0 4px;font-size:.72rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);
}
.client-ficha-title{
  margin:0;font-size:1.35rem;line-height:1.2;
  word-break:break-word;
}
.client-ficha-close{
  flex-shrink:0;
  border:none;background:var(--bg-muted);
  font-size:1.45rem;line-height:1;cursor:pointer;
  color:var(--text-secondary);
  width:40px;height:40px;border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s;
}
.client-ficha-close:hover{
  background:rgba(239,68,68,.1);color:#991b1b;
}
.client-ficha-body{
  flex:1;
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:16px 20px 28px;
  background:var(--bg-muted);
  -webkit-overflow-scrolling:touch;
  touch-action:pan-y;
}
.ficha-layout{
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
  align-items:start;
}
@media(min-width:900px){
  .ficha-layout{
    grid-template-columns:minmax(280px,1fr) minmax(320px,1.15fr);
  }
}
.ficha-layout-col{
  display:flex;
  flex-direction:column;
  gap:16px;
  min-width:0;
}
.ficha-section{
  padding:16px 0;border-bottom:1px solid var(--border);
}
.ficha-section--card{
  padding:16px 18px;
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  background:var(--surface);
  border-bottom:1px solid var(--border);
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.ficha-section--card:last-child{border-bottom:1px solid var(--border)}
.ficha-section:last-child{border-bottom:none}
.ficha-section-title{
  margin:0 0 12px;font-size:.95rem;font-weight:700;
}
.ficha-subtitle{
  margin:0 0 8px;font-size:.78rem;font-weight:600;color:var(--text-secondary);
}
.ficha-status-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.ficha-provisional-banner{
  margin:0 0 12px;padding:8px 12px;border-radius:var(--radius-sm);
  background:rgba(217,119,6,.1);border:1px solid rgba(217,119,6,.25);
  color:#92400e;font-size:.82rem;font-weight:600;line-height:1.4;
}
.ficha-pending-field{font-size:.84rem;color:var(--text-secondary);font-style:italic}
.ficha-status-pill{
  padding:4px 10px;border-radius:999px;font-size:.72rem;font-weight:700;
}
.ficha-status-pill--activo{background:rgba(34,197,94,.18);color:#166534}
.ficha-status-pill--impagado{background:rgba(239,68,68,.15);color:#991b1b}
.ficha-status-pill--vencimiento_proximo{background:rgba(217,119,6,.18);color:#92400e}
.ficha-status-pill--sin_contrato{background:rgba(113,113,122,.15);color:#52525b}
.ficha-status-pill--provisional{background:rgba(217,119,6,.15);color:#92400e}
.ficha-contact-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;
  font-size:.86rem;margin-bottom:12px;
}
.ficha-section--bank{
  background:var(--bg-muted);
}
.ficha-section--documentos .ficha-doc-generate-block:first-of-type{
  margin-top:0;
}
.ficha-bank-field{max-width:420px}
.ficha-bank-input{
  width:100%;margin-top:4px;padding:8px 10px;font-size:.9rem;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.02em;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--bg);
}
.ficha-bank-input:focus{
  outline:2px solid rgba(37,99,235,.35);border-color:#2563eb;
}
.ficha-bank-feedback{
  min-height:1.25rem;margin:6px 0 0;font-size:.8rem;color:var(--text-secondary);
}
.ficha-bank-feedback--ok{color:#166534;font-weight:600}
.ficha-bank-feedback--error{color:#991b1b;font-weight:600}
.ficha-bank-meta{margin:4px 0 0;font-size:.72rem;color:var(--text-secondary)}
.ficha-bank-actions{margin-top:8px}
.ficha-bank-save-btn{font-size:.82rem}
.ficha-bank-hint{
  margin:8px 0 0;font-size:.72rem;color:var(--text-secondary);line-height:1.35;
}
.ficha-label{
  display:block;font-size:.68rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);
}
.ficha-quick-actions{display:flex;flex-wrap:wrap;gap:8px}
.ficha-quick-actions--header{align-items:center}
.ficha-btn-nueva-com{margin-right:4px}
.ficha-btn-delete-client{margin-left:auto}
@media (max-width:640px){
  .ficha-quick-actions--header .ficha-btn-delete-client{margin-left:0;width:100%}
}
.ficha-empty{font-size:.84rem;color:var(--text-secondary);margin:0}
.ficha-contract-list{display:flex;flex-direction:column;gap:8px}
.ficha-contract-card{
  padding:10px 12px;border-radius:var(--radius-sm);
  border:1px solid var(--border);background:var(--bg-muted);
}
.ficha-contract-card.ficha-contract--active{border-left:3px solid #22c55e}
.ficha-contract-card.ficha-contract--open{border-left:3px solid #22c55e;background:rgba(34,197,94,.06)}
.ficha-contract-card.ficha-contract--soon{border-left:3px solid #d97706;background:rgba(217,119,6,.08)}
.ficha-contract-card.ficha-contract--erp,
.ficha-contract-card.ficha-contract--pending-close{border-left:3px solid #f59e0b;background:rgba(245,158,11,.08)}
.ficha-contract-card.ficha-contract--vencido{border-left:3px solid #f59e0b;background:rgba(245,158,11,.08)}
.ficha-contract-card.ficha-contract--hist{opacity:.85}
.ficha-contract-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.ficha-contract-badge{font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:6px;background:rgba(0,0,0,.06)}
/* B6.1c · badge VVC en lenguaje de negocio + icono de ayuda */
.ficha-contract-vvc{display:flex;align-items:center;gap:6px;margin-top:6px}
.ficha-vvc-badge{background:rgba(37,99,235,.10);color:#1e40af}
.ficha-vvc-help{font-size:.85rem;line-height:1;color:var(--text-secondary);cursor:help;user-select:none}
.ficha-vvc-help:hover,.ficha-vvc-help:focus{color:#1e40af;outline:none}
.ficha-contract-meta{
  display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.78rem;color:var(--text-secondary);margin-top:6px;
}
.ficha-contract-obs{margin:8px 0 0;font-size:.78rem;color:var(--text-secondary)}
.ficha-ocupacion-list{margin:0;padding-left:18px;font-size:.84rem}
.ficha-econ-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px;
}
.ficha-econ-card{
  padding:10px;border-radius:var(--radius-sm);background:var(--bg-muted);
}
.ficha-econ-value{font-size:1rem}
.ficha-econ-value--danger{color:var(--danger)}
.ficha-section--historial .ficha-section-title{margin-bottom:6px}
.ficha-hist-filter-label{
  margin:0 0 6px;font-size:.72rem;font-weight:500;color:var(--text-secondary);
}
.ficha-hist-filters{
  display:flex;flex-wrap:wrap;gap:4px;margin-bottom:12px;align-items:center;
}
.ficha-hist-filter-chip{
  padding:3px 8px;border:1px solid var(--border);border-radius:999px;
  background:transparent;font-size:.68rem;font-weight:500;color:var(--text-secondary);
  cursor:pointer;line-height:1.35;transition:background .15s,border-color .15s,color .15s;
}
.ficha-hist-filter-chip:hover{
  background:var(--bg-muted);color:var(--text);
  border-color:#d4d4d8;
}
.ficha-hist-filter-chip.active{
  background:var(--bg-muted);color:var(--text);
  border-color:#a1a1aa;font-weight:600;
  box-shadow:none;
}
.ficha-hist-empty{margin-top:4px}
.ficha-com-list{display:flex;flex-direction:column;gap:10px}
.ficha-com-item{
  padding:10px;border-radius:var(--radius-sm);border:1px solid var(--border);
}
.ficha-com-top{display:flex;justify-content:space-between;gap:8px;font-size:.78rem}
.ficha-com-canal{font-weight:700;color:var(--primary)}
.ficha-com-meta{font-size:.75rem;color:var(--text-secondary);margin:4px 0}
.ficha-com-text{margin:0 0 8px;font-size:.82rem;white-space:pre-wrap}
.ficha-com-actions{display:flex;flex-wrap:wrap;gap:6px}
.ficha-inc-form{margin-bottom:14px}
.ficha-inc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px}
.ficha-inc-unit-label{grid-column:1/-1}
.ficha-inc-unit-hint{margin:0 0 6px;font-size:.78rem;color:var(--text-secondary)}
.ficha-inc-unit-hint--warn{color:#92400e;background:rgba(217,119,6,.1);padding:6px 8px;border-radius:6px}
.ficha-inc-unit-select--locked{
  opacity:1;background:var(--bg-muted);cursor:default;
  border-color:rgba(34,197,94,.45);
}
.ficha-inc-list{display:flex;flex-direction:column;gap:8px}
.ficha-inc-item{
  padding:10px;border-radius:var(--radius-sm);border:1px solid var(--border);
}
.ficha-inc-item--resolved{opacity:.75;background:rgba(113,113,122,.08)}
.ficha-inc-top{display:flex;justify-content:space-between;font-size:.82rem}
.ficha-inc-meta{font-size:.75rem;color:var(--text-secondary)}
.ficha-inc-res{font-size:.78rem;color:var(--text-secondary)}
.cliente-link{
  border:none;background:none;padding:0;margin:0;
  font:inherit;font-weight:700;color:var(--primary);
  cursor:pointer;text-align:left;text-decoration:underline;
  text-decoration-color:rgba(217,119,6,.35);
}
.cliente-link:hover{color:#b45309}
.cliente-ficha-btn{
  margin-left:6px;padding:2px 8px;font-size:.68rem;font-weight:700;
  border:1px solid var(--border);border-radius:6px;background:var(--surface);
  cursor:pointer;color:var(--text-secondary);
}
.cliente-ficha-btn:hover{border-color:var(--primary);color:var(--primary)}
.btn-sm{padding:5px 10px;font-size:.75rem}

/* ===== Incidencias global ===== */
.inc-page-hint{
  color:var(--text-secondary);font-size:.88rem;margin:-6px 0 16px;max-width:720px;
}
.inc-toolbar{
  display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end;
  padding:14px 16px;margin-bottom:16px;
}
.inc-toolbar label{
  display:flex;flex-direction:column;gap:4px;font-size:.72rem;font-weight:600;
  color:var(--text-secondary);
}
.inc-toolbar .form-input{min-width:130px;font-size:.82rem}
.inc-toolbar .inc-search{flex:1;min-width:200px}
.inc-global-table-wrap{max-height:calc(100vh - 340px);overflow:auto}
.inc-global-table{font-size:.8rem}
.inc-global-table th{white-space:nowrap}
.inc-desc-cell{max-width:200px}
.inc-actions-cell{white-space:nowrap}
.inc-global-row.inc-row--highlight{
  background:rgba(217,119,6,.14);
  outline:2px solid var(--primary);outline-offset:-2px;
}
#incKpiGrid .kpi-card{min-width:140px}

@media(max-width:768px){
  .inc-toolbar{flex-direction:column;align-items:stretch}
  .inc-toolbar .form-input{min-width:0;width:100%}
  #clientFichaModal.client-ficha-modal,
  .client-ficha-modal,
  #clientFichaOverlay .client-ficha-drawer,
  .client-ficha-overlay .client-ficha-drawer{
    left:0 !important;
    top:0 !important;
    right:0 !important;
    bottom:0 !important;
    transform:none !important;
    width:100% !important;
    max-width:100% !important;
    height:100% !important;
    max-height:100% !important;
    border-radius:0 !important;
    border:none !important;
  }
  .client-ficha-header{padding:12px 14px 10px}
  .client-ficha-body{padding:12px 14px 20px}
  .ficha-layout{grid-template-columns:1fr;gap:12px}
  .client-ficha-title{font-size:1.15rem}
  .ficha-econ-grid{grid-template-columns:1fr}
  .ficha-contact-grid{grid-template-columns:1fr}
  .ficha-inc-grid{grid-template-columns:1fr}
  .ficha-doc-upload-grid{grid-template-columns:1fr}
}

/* Scrollbar */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#d4d4d8;border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:#a1a1aa}

/* ===== Responsive ===== */
@media(max-width:768px){
  .hamburger{display:block}
  .sidebar{
    position:fixed;
    left:calc(-1 * var(--sidebar-w) - 12px);
    top:var(--header-h);
    bottom:0;
    z-index:300;
    transition:left .28s ease;
    box-shadow:var(--shadow-lg);
  }
  .sidebar.open{left:0}
  .main{max-width:100vw;padding:18px 16px 32px}
  .header{padding:0 16px}
  .header-actions{gap:6px}
  #syncIndicator{display:none}
  .panel-identity{display:none}
  .logout-btn span-text{display:none}
  .kpi-grid{grid-template-columns:1fr}
  .section-title{font-size:1.25rem}
  .filter-bar{padding:10px}
  .evo-toolbar{padding:10px}
  .com-layout{grid-template-columns:1fr}
}

@media print{
  .header,.sidebar{display:none}
  .main{max-width:100%;padding:0}
}

/* ========== ACCIONES RECOMENDADAS (A1) ========== */
.rec-nav-badge{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;margin-left:6px;
  border-radius:999px;background:var(--danger);color:#fff;
  font-size:.65rem;font-weight:800;line-height:1;
}
.rec-page-lead{
  margin:-4px 0 16px;font-size:.9rem;color:var(--text-secondary);max-width:720px;line-height:1.5;
}
.rec-generated-at{font-size:.75rem;color:var(--text-secondary);font-weight:500}
.rec-toolbar{
  display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;
  padding:12px 16px;margin-bottom:16px;
}
.rec-toggle-reviewed{display:flex;align-items:center;gap:8px;font-size:.84rem;cursor:pointer}
.rec-group{margin-bottom:28px}
.rec-group-head{
  display:flex;gap:12px;align-items:flex-start;
  padding:12px 14px;margin-bottom:12px;border-radius:var(--radius-sm);
  border:1px solid var(--border);background:var(--bg-muted);
}
.rec-group-head--high{border-left:4px solid var(--danger)}
.rec-group-head--medium{border-left:4px solid var(--warning)}
.rec-group-head--low{border-left:4px solid var(--success)}
.rec-group-icon{font-size:1.4rem;line-height:1}
.rec-group-title{margin:0;font-size:1rem;font-weight:700}
.rec-group-count{font-weight:600;color:var(--text-secondary);font-size:.88rem}
.rec-group-hint{margin:4px 0 0;font-size:.78rem;color:var(--text-secondary)}
.rec-card-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:12px;
}
.rec-card{
  border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--white);padding:12px 14px;display:flex;flex-direction:column;gap:10px;
}
.rec-card--high{border-top:3px solid var(--danger)}
.rec-card--medium{border-top:3px solid var(--warning)}
.rec-card--low{border-top:3px solid #22c55e}
.rec-card-title{margin:0;font-size:.92rem;font-weight:700;line-height:1.3}
.rec-card-desc{margin:4px 0 0;font-size:.78rem;color:var(--text-secondary);line-height:1.4}
.rec-card-meta{display:flex;flex-wrap:wrap;gap:6px}
.rec-meta-pill{
  font-size:.72rem;padding:3px 8px;border-radius:999px;
  background:var(--bg-muted);border:1px solid var(--border);color:var(--text-secondary);
}
.rec-meta-label{font-weight:700;text-transform:uppercase;letter-spacing:.03em;font-size:.62rem}
.rec-card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
.rec-card-actions .btn-ghost,.rec-card-actions .imp-action-btn{
  font-size:.72rem;padding:5px 10px;
}
.rec-btn-review{opacity:.85}
.rec-empty{padding:32px 20px;text-align:center;color:var(--text-secondary)}
.rec-empty-sub{margin-top:8px;font-size:.82rem}

/* ========== REQUIERE ATENCIÓN + PULSO (Resumen F1) ========== */
.rec-summary{margin:20px 0 24px}
.rec-summary-heading{margin:0 0 10px;font-size:.95rem;font-weight:700;color:var(--text-primary)}
.resumen-pulse-heading{margin:8px 0 10px;font-size:.95rem;font-weight:700;color:var(--text-primary)}
.kpi-grid--pulse{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media (min-width:900px){
  .kpi-grid--pulse{grid-template-columns:repeat(3,minmax(0,1fr))}
}
.kpi-card--pulse .kpi-label{font-size:.78rem;line-height:1.25;min-height:2.4em}
.kpi-card--pulse .kpi-icon{
  width:36px;height:36px;font-size:1.15rem;margin-bottom:6px;border-radius:10px
}
.kpi-card--pulse .kpi-value{font-size:1.45rem;letter-spacing:-.02em}
.kpi-card--pulse[data-kpi="ocupacion"] .kpi-value,
.kpi-card--ocupacion .kpi-value{font-size:1.75rem;font-weight:800}
.kpi-card--tone-up .kpi-value{color:var(--success)}
.kpi-card--tone-down .kpi-value{color:var(--danger)}
.kpi-card--unavailable .kpi-value{font-size:1.15rem;font-weight:700;color:var(--text-secondary)}
.kpi-sub--muted{margin-top:2px;font-size:.72rem;color:var(--text-secondary);font-style:italic}
.kpi-card--prevision .kpi-sub{line-height:1.35}
.resumen-recent-link{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  width:100%;margin:16px 0 0;padding:14px 16px;text-align:left;
  border:1px solid var(--border);border-radius:var(--radius-md,10px);
  background:linear-gradient(180deg,var(--white,#fff) 0%,var(--surface-2,#f8fafc) 100%);
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  font:inherit;color:inherit;cursor:pointer;
  transition:background .15s ease,border-color .15s ease,box-shadow .15s ease
}
.resumen-recent-link:hover{
  background:var(--surface-2,#f1f5f9);
  border-color:var(--primary,#2563eb);
  box-shadow:0 2px 8px rgba(37,99,235,.08)
}
.resumen-recent-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.resumen-recent-link-main{display:flex;align-items:flex-start;gap:12px;min-width:0}
.resumen-recent-link-icon{
  flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;
  border-radius:10px;background:var(--primary-soft,#eff6ff);font-size:1.15rem
}
.resumen-recent-link-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.resumen-recent-link-title{font-size:.92rem;font-weight:700;line-height:1.25}
.resumen-recent-link-sub{font-size:.78rem;color:var(--text-secondary);line-height:1.3}
.resumen-recent-link-cta{
  flex-shrink:0;color:var(--primary,#2563eb);font-size:.9rem;font-weight:700;
  white-space:nowrap
}
.prevision-liq-body{padding:14px 16px 18px;overflow:auto;flex:1;-webkit-overflow-scrolling:touch}
.prevision-liq-summary{
  border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--surface-2,#f8fafc);padding:10px 12px;margin-bottom:14px
}
.prevision-liq-row{
  display:flex;justify-content:space-between;gap:12px;align-items:baseline;
  padding:6px 0;font-size:.88rem;border-bottom:1px dashed var(--border)
}
.prevision-liq-row:last-child{border-bottom:none}
.prevision-liq-row--total{margin-top:4px;padding-top:10px;border-top:1px solid var(--border);border-bottom:none;font-weight:700}
.prevision-liq-row .text-up{color:var(--success)}
.prevision-liq-row .text-down{color:var(--danger)}
.prevision-liq-section{margin:14px 0 8px;font-size:.82rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}
.prevision-liq-moves{margin:0;padding-left:18px;font-size:.84rem;line-height:1.45}
.prevision-liq-moves li{margin:0 0 6px}
.prevision-liq-moves--excluded{color:var(--text-secondary)}
.prevision-liq-motivo{color:var(--text-secondary);font-size:.78rem}
.prevision-liq-empty,.prevision-liq-unavailable{margin:0 0 10px;font-size:.88rem;color:var(--text-secondary)}
.prevision-liq-disclaimer{
  margin:16px 0 0;padding:10px 12px;border-radius:var(--radius-sm);
  background:#fffbeb;border:1px solid #fde68a;font-size:.78rem;line-height:1.45;color:#92400e
}
.recent-contracts-overlay{z-index:9999;align-items:stretch;justify-content:center;padding:12px}
.recent-contracts-overlay.open,
.recent-contracts-overlay[style*="flex"]{display:flex}
.recent-contracts-card{
  max-width:min(920px,100%);width:100%;max-height:min(90vh,720px);
  display:flex;flex-direction:column;padding:0;overflow:hidden
}
.prevision-liq-card{max-width:min(640px,100%)}
.recent-contracts-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0
}
.recent-contracts-head h3{margin:0;font-size:1rem;font-weight:800}
.recent-contracts-close{padding:6px 10px;min-width:40px}
.recent-contracts-table-wrap{padding:0 0 8px;overflow:auto;flex:1;-webkit-overflow-scrolling:touch}
.recent-contracts-table-wrap table{margin:0;font-size:.82rem}
@media (max-width:720px){
  .recent-contracts-card{max-height:92vh;border-radius:var(--radius-lg)}
  .kpi-card--pulse .kpi-value{font-size:1.35rem}
  .kpi-card--ocupacion .kpi-value{font-size:1.55rem}
  .resumen-recent-link{padding:12px 14px}
  .resumen-recent-link-sub{display:none}
}
.rec-summary-list{
  display:flex;flex-direction:column;gap:0;
  border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--white);overflow:hidden;
}
.rec-summary-row{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:12px 14px;border-bottom:1px solid var(--border);text-align:left;width:100%;
  background:transparent;font:inherit;color:inherit;cursor:pointer
}
.rec-summary-row:last-child{border-bottom:none}
.rec-summary-row--btn:hover{background:var(--surface-2,#f8fafc)}
.rec-summary-row--btn:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
.rec-summary-row--high{border-left:3px solid var(--danger)}
.rec-summary-row--medium{border-left:3px solid var(--warning)}
.rec-summary-row--low{border-left:3px solid var(--success)}
.rec-summary-main{display:flex;align-items:flex-start;gap:10px;min-width:0;flex:1}
.rec-summary-icon{font-size:1.1rem;line-height:1.3;flex-shrink:0}
.rec-summary-title{font-size:.9rem;font-weight:700;line-height:1.3}
.rec-summary-sub{margin:2px 0 0;font-size:.78rem;color:var(--text-secondary);line-height:1.35}
.rec-summary-cta{flex-shrink:0;font-size:.9rem;padding:0 4px;color:var(--text-secondary)}
.rec-summary-more{margin:8px 0 0;font-size:.75rem;color:var(--text-secondary);text-align:right}
.rec-summary--ok{
  border:1px solid #bbf7d0;border-radius:var(--radius-sm);background:#f0fdf4;padding:14px 12px
}
.rec-summary-ok{margin:0;font-size:.84rem;color:var(--text-secondary);text-align:center}
.liq-var-principal{
  margin:10px 0 14px;padding:12px;border-radius:var(--radius-sm);
  background:var(--danger-soft,#fef2f2);border:1px solid #fecaca
}
.liq-var-principal--up{background:#f0fdf4;border-color:#bbf7d0}
.liq-var-principal--up .liq-var-principal-title{color:#166534}
.liq-var-principal-title{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin:0 0 6px;color:#991b1b}
.liq-var-principal-row{display:flex;justify-content:space-between;gap:10px;font-weight:700}
.liq-var-principal-note{margin:6px 0 0;font-size:.78rem;color:var(--text-secondary);line-height:1.35}
.sidebar a{position:relative}

/* ========== FICHA CLIENTE — DOCUMENTOS ========== */
.ficha-section--documentos{padding-top:4px}
.ficha-doc-hint{
  margin:0 0 12px;font-size:.78rem;color:var(--text-secondary);line-height:1.4;
}
.ficha-doc-upload{
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:14px;
}
.ficha-doc-upload-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:10px;flex:1;min-width:min(100%,280px);
}
.ficha-doc-upload label{
  display:flex;flex-direction:column;gap:4px;font-size:.72rem;font-weight:600;color:var(--text-secondary);
}
.ficha-doc-upload select,.ficha-doc-file-label input[type=file]{
  font-size:.82rem;padding:7px 9px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:var(--white);color:var(--text-primary);
}
.ficha-doc-upload-btn{align-self:flex-end;white-space:nowrap}
.ficha-doc-list-wrap{min-height:40px}
.ficha-doc-list{
  list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;
}
.ficha-doc-item{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-muted);
}
.ficha-doc-item-main{min-width:0;display:flex;flex-direction:column;gap:2px}
.ficha-doc-type{
  font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);
}
.ficha-doc-name{font-size:.88rem;word-break:break-word}
.ficha-doc-meta{font-size:.74rem;color:var(--text-secondary)}
.ficha-doc-actions{display:flex;flex-wrap:wrap;gap:6px;flex-shrink:0}
.ficha-doc-delete-btn{color:var(--danger)}
.ficha-doc-error{color:var(--danger)}
.ficha-doc-signature-row{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;
}
.ficha-doc-badge{
  font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  padding:3px 8px;border-radius:999px;
}
.ficha-doc-badge--signed{background:#dcfce7;color:#166534}
.ficha-doc-badge--pending{background:#fef9c3;color:#854d0e}
.ficha-doc-badge--expired{background:#fee2e2;color:#991b1b}
.ficha-doc-signed-at{font-size:.72rem;color:var(--text-secondary)}
.ficha-doc-sign-btn{font-weight:600}
.ficha-doc-generate-block{
  margin-bottom:14px;padding-bottom:12px;border-bottom:1px dashed var(--border);
}
.ficha-doc-generate-block:last-of-type{border-bottom:none}
.ficha-doc-gen-title{
  margin:0 0 8px;font-size:.78rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.04em;color:var(--text-secondary);
}
.ficha-doc-gen-contract-label{
  display:flex;flex-direction:column;gap:4px;font-size:.8rem;font-weight:600;
  color:var(--text-secondary);margin-bottom:8px;
}
.ficha-doc-gen-contract-label select{font-weight:400;font-size:.88rem}
.ficha-doc-gen-warn{
  font-size:.78rem;color:var(--warning);margin:0 0 8px;line-height:1.35;
}
.ficha-doc-generate-row{
  display:flex;flex-wrap:wrap;gap:8px;margin-bottom:0;
}
.ficha-doc-rgpd-btn,.ficha-doc-rgpd-sign-btn,
.ficha-doc-contract-btn,.ficha-doc-contract-sign-btn{font-size:.82rem}

/* Editar metadata documento */
.ficha-doc-edit-modal{
  z-index:10050;
  align-items:center;
  justify-content:center;
  padding:16px;
}
body.ficha-doc-edit-open{overflow:hidden}
.ficha-doc-edit-card{
  max-width:440px;
  width:min(94vw,440px);
  max-height:min(90vh,640px);
  overflow-y:auto;
  position:relative;
  flex-shrink:0;
}
.ficha-doc-edit-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
}
.ficha-doc-edit-header h3{
  margin:0;
  flex:1;
  font-size:1.05rem;
  line-height:1.25;
}
.ficha-doc-edit-close{
  flex-shrink:0;
  border:none;
  background:var(--bg-secondary);
  color:var(--text-secondary);
  width:36px;
  height:36px;
  border-radius:var(--radius-sm);
  font-size:1.45rem;
  line-height:1;
  cursor:pointer;
  padding:0;
}
.ficha-doc-edit-close:hover{
  color:var(--danger);
  background:#fee2e2;
}
.ficha-doc-edit-hint{
  font-size:.78rem;color:var(--text-secondary);margin:0 0 12px;line-height:1.4
}
.ficha-doc-edit-preview-wrap{
  margin-top:14px;
  padding-top:12px;
  border-top:1px dashed var(--border);
}
.ficha-doc-edit-preview-wrap.is-collapsed #fichaDocEditPreview{
  display:none !important;
  height:0;
  min-height:0;
  margin:0;
  padding:0;
  border:none;
}
.ficha-doc-preview-toggle{
  margin-bottom:8px;
  font-size:.78rem;
}
.ficha-doc-edit-form{
  display:flex;
  flex-direction:column;
  gap:12px;
  position:relative;
  z-index:2;
}
.ficha-doc-edit-form label{
  display:flex;flex-direction:column;gap:4px;font-size:.8rem;font-weight:600;color:var(--text-secondary)
}
.ficha-doc-edit-form select,.ficha-doc-edit-form .form-input{
  font-weight:400;font-size:.88rem
}
.ficha-doc-edit-preview{
  margin-top:6px;
  border:1px solid var(--border);
  border-radius:8px;
  background:var(--bg-secondary);
  height:120px;
  max-height:120px;
  min-height:0;
  overflow:hidden;
  position:relative;
  isolation:isolate;
  contain:layout paint size;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
}
.ficha-doc-edit-preview-wrap:not(.is-collapsed) .ficha-doc-edit-preview{
  pointer-events:auto;
}
.ficha-doc-preview-frame{
  width:100%;
  height:100%;
  max-width:100%;
  max-height:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  pointer-events:none;
}
.ficha-doc-preview-loading,.ficha-doc-edit-preview .ficha-empty{
  font-size:.75rem;color:var(--text-secondary);padding:12px;text-align:center;
  pointer-events:none;
}
.ficha-doc-preview-img{
  display:block;
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
  object-fit:contain;
  object-position:center;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
}
.ficha-doc-preview-iframe{
  width:100%;
  height:100%;
  max-height:120px;
  border:0;
  background:#fff;
  pointer-events:none;
}
.ficha-doc-edit-error{
  font-size:.8rem;
  color:var(--danger);
  min-height:18px;
  margin:8px 0 0;
}
.ficha-doc-edit-btn{position:relative;z-index:1}

@media(max-width:640px){
  .ficha-doc-item{flex-direction:column;align-items:stretch}
  .ficha-doc-actions{justify-content:flex-end}
}

/* ===== Fase 7 · B7.2b · Revenue Management ===== */
.rm-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.rm-tax-note{font-size:.84rem;color:#1e3a8a;margin:0 0 14px;padding:10px 14px;background:rgba(37,99,235,.08);border-left:3px solid #2563eb;border-radius:0 8px 8px 0;line-height:1.5}
.rm-policy-ref{font-size:.82rem;color:var(--text-secondary);margin:-6px 0 14px;padding:8px 12px;background:rgba(217,119,6,.08);border-left:3px solid var(--primary);border-radius:0 8px 8px 0;line-height:1.5}
.rm-policy-ref-link{font-size:.82rem;padding:0;margin-left:6px}
.rm-section-title{margin:24px 0 8px;font-size:1rem}
.rm-hint{font-size:.82rem;color:var(--text-secondary);margin:0 0 10px;line-height:1.45}
.rm-note{font-size:.82rem;color:var(--text-secondary);margin:12px 0;padding:10px 12px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.45}
.rm-note--muted{background:rgba(37,99,235,.06);color:#1e3a8a}
.rm-empty{text-align:center;padding:20px;color:var(--text-secondary);font-size:.9rem}
.rm-priority-table th,.rm-seg-table th{font-size:.72rem;white-space:nowrap}
.rm-tag{display:inline-block;font-size:.65rem;font-weight:700;padding:1px 6px;border-radius:4px;margin-left:4px;vertical-align:middle}
.rm-tag--up{background:rgba(34,197,94,.15);color:#15803d}
#rmKpiGrid .rm-kpi-card,
#page-revenue .rm-kpi-card{overflow:visible}
#page-revenue .rm-kpi-label{overflow:visible}
.rm-kpi-label{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.rm-kpi-sub-opp{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.rm-kpi-sub-sep{opacity:.65}
.rm-th-help{white-space:nowrap;position:relative;overflow:visible}
.rm-th-help .rm-help{vertical-align:middle}
.rm-help{position:relative;display:inline-flex;align-items:center;vertical-align:middle;margin-left:2px;outline:none;z-index:1}
.rm-help.rm-help--open{z-index:10060}
.rm-help-icon{font-size:.82rem;line-height:1;color:var(--text-secondary);cursor:help;user-select:none;padding:0 2px}
.rm-help:hover .rm-help-icon,.rm-help:focus .rm-help-icon,.rm-help:focus-within .rm-help-icon,
.rm-help.rm-help--open .rm-help-icon{color:#1e40af}
.rm-help-pop{
  display:none;position:absolute;z-index:10050;top:calc(100% + 6px);left:50%;
  transform:translateX(-50%);width:min(300px,calc(100vw - 24px));
  padding:12px 14px;background:var(--white);border:1px solid var(--border);
  border-radius:10px;box-shadow:0 12px 32px rgba(15,23,42,.18);
  font-size:.8rem;font-weight:400;line-height:1.45;text-align:left;
  text-transform:none;letter-spacing:normal;color:var(--text);white-space:normal;
  pointer-events:auto;box-sizing:border-box
}
/* Visibilidad controlada por JS (posición fixed + flip viewport); evita recorte por overflow */
.rm-help.rm-help--open .rm-help-pop,
.rm-help-pop.rm-help-pop--fixed{
  display:block;
  position:fixed;
  transform:none;
  z-index:10050
}
.rm-help-title{display:block;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:8px}
.rm-help-block{display:block;margin-bottom:8px}
.rm-help-block strong{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);margin-bottom:2px}
.rm-help-block p{margin:0}
.rm-help-formula{display:block;margin-top:4px;padding-top:8px;border-top:1px solid var(--border);font-size:.68rem;color:var(--text-secondary);line-height:1.4}
.rm-help-formula strong{font-weight:600}
@media(max-width:640px){
  .rm-priority-table,.rm-seg-table{font-size:.78rem}
  .rm-help-pop{width:min(280px,calc(100vw - 20px))}
}

/* ===== F1-B · Política de precios no configurada ===== */
.pricing-policy-banner{display:flex;align-items:flex-start;gap:12px;margin:0 0 16px;padding:12px 16px;background:#fffbeb;border:1px solid #fcd34d;border-radius:10px}
.legal-identity-banner{border-color:#fca5a5;background:#fef2f2}
.pricing-policy-banner__icon{font-size:1.25rem;line-height:1}
.pricing-policy-banner__body{flex:1;min-width:0}
.pricing-policy-banner__body p{margin:4px 0 0;font-size:.875rem;color:var(--text-secondary)}
.pricing-status-bar{margin:0 0 12px;padding:10px 14px;border-radius:8px;font-size:.875rem}
.pricing-status-bar--warn{background:#fffbeb;border:1px solid #fcd34d}
.pricing-status-bar--warn p{margin:6px 0 0;color:var(--text-secondary)}
.precio-tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;font-size:.68rem;font-weight:600;vertical-align:middle;background:#f1f5f9;color:#475569}
.precio-tag--catalog{border:1px solid #cbd5e1}
.ocupacion-precio-reco--muted{font-size:.78rem;color:var(--text-secondary);margin-top:4px}
.nav-pricing-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;font-size:.62rem;font-weight:700;background:#fef3c7;color:#92400e;vertical-align:middle}
.tenant-setup{margin-bottom:16px}
.tenant-setup-intro{margin:0 0 10px;font-size:.875rem;color:var(--text-secondary)}
.tenant-setup-list{list-style:none;margin:0 0 12px;padding:0}
.tenant-setup-step{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)}
.tenant-setup-step:last-child{border-bottom:none}
.tenant-setup-step__mark{width:1.25rem;font-weight:700}
.tenant-setup-step--done .tenant-setup-step__mark{color:var(--success)}
.tenant-setup-step--pending .tenant-setup-step__mark{color:var(--warning)}
.tenant-setup-step__note{font-size:.78rem;color:var(--text-secondary)}
.kpi-nd,.rm-nd{font-size:.95rem;color:var(--text-secondary);font-weight:600}
.rm-limited-note{margin:0 0 12px;padding:10px 14px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;font-size:.875rem}
.rm-policy-ref-label--warn{color:#92400e}
.rev-empty-policy{padding:16px;color:var(--text-secondary)}
.rev-tramo-row--iva{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}

/* F2-B.1b · Consola superadmin (modo global) */
.panel-mode-global-admin .main .page:not(#page-administracion):not(#page-usuarios-sistema){display:none!important}
.admin-console-intro{margin:0 0 16px;color:var(--text-secondary);font-size:.925rem;max-width:52rem}
.admin-console-cta-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}
.admin-console-list-host{min-height:120px}
.admin-console-loading,.admin-console-empty,.admin-console-error{color:var(--text-secondary);padding:12px 0}
.admin-console-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.admin-console-table{width:100%;border-collapse:collapse;font-size:.9rem}
.admin-console-table th,.admin-console-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border)}
.admin-console-table th{background:var(--bg-secondary);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}
.admin-console-table tr:last-child td{border-bottom:none}
.admin-console-actions-cell{text-align:right;white-space:nowrap}
.admin-console-estado{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600}
.admin-console-estado--ok{background:#dcfce7;color:#166534}
.admin-console-estado--warn{background:#fef3c7;color:#92400e}
#btnStopImpersonate{margin-right:8px}

/* ===== F2-B.2b · Usuarios del sistema ===== */
.users-admin-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.users-admin-cred-password{cursor:text;user-select:all;padding:2px 6px;background:var(--bg);border-radius:4px}
.users-admin-scope-badge{display:inline-block;margin:0 0 14px;padding:4px 10px;border-radius:999px;background:var(--bg-secondary);font-size:.8rem;color:var(--text-secondary)}
.users-admin-toolbar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;margin-bottom:16px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.users-admin-toolbar label{display:flex;flex-direction:column;gap:4px;font-size:.75rem;color:var(--text-secondary)}
.users-admin-select,.users-admin-input{min-width:140px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:.875rem;background:var(--bg)}
.users-admin-input-block{width:100%;min-width:0}
.users-admin-search .users-admin-input{min-width:200px}
.users-admin-list-host{min-height:120px}
.users-admin-empty,.users-admin-count{color:var(--text-secondary);font-size:.875rem;padding:8px 0}
.users-admin-muted{color:var(--text-secondary);font-size:.8rem}
.users-admin-platform{color:var(--text-secondary);font-style:italic}
.users-admin-mcp{font-size:.85rem}
.users-admin-actions .btn-ghost{margin-left:4px}
.users-admin-overlay{z-index:12050}
.users-admin-modal-panel{width:min(480px,100%)}
.users-admin-form-body{display:flex;flex-direction:column;gap:12px;padding:16px 20px}
.users-admin-form-body label{display:flex;flex-direction:column;gap:6px;font-size:.85rem}

/* ===== F2-C · Wizard Nueva franquicia ===== */
.provision-wizard-overlay,.provision-success-overlay{
  position:fixed;inset:0;z-index:12000;background:rgba(15,23,42,.55);
  display:flex;align-items:flex-start;justify-content:center;padding:24px 16px;overflow-y:auto
}
.provision-wizard-panel,.provision-success-panel{
  width:min(720px,100%);max-height:calc(100vh - 48px);overflow:auto;margin-top:24px;padding:0
}
.provision-wizard-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}
.provision-wizard-header h2{margin:0;font-size:1.15rem}
.provision-wizard-body{padding:16px 20px 8px}
.provision-wizard-footer{display:flex;justify-content:space-between;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border)}
.provision-wizard-stepper{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0 0 20px;padding:0}
.provision-wizard-stepper__item{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--text-secondary)}
.provision-wizard-stepper__item--active{color:var(--primary);font-weight:600}
.provision-wizard-stepper__item--done{color:var(--success)}
.provision-wizard-stepper__num{
  display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;
  background:var(--bg-secondary);font-size:.75rem;font-weight:700
}
.provision-wizard-stepper__item--active .provision-wizard-stepper__num{background:var(--primary);color:#fff}
.provision-wizard-stepper__item--done .provision-wizard-stepper__num{background:#dcfce7;color:#166534}
.provision-wizard-hint{margin:0 0 14px;color:var(--text-secondary);font-size:.875rem;line-height:1.45}
.provision-wizard-note{margin:12px 0 0;padding:10px 12px;background:var(--bg-secondary);border-radius:8px;font-size:.85rem;color:var(--text-secondary)}
.provision-wizard-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.provision-wizard-grid--narrow{max-width:28rem}
@media(max-width:640px){.provision-wizard-grid{grid-template-columns:1fr}}
.provision-wizard-field{display:flex;flex-direction:column;gap:4px;font-size:.875rem}
.provision-wizard-field input{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font:inherit}
.provision-wizard-field-hint{color:var(--text-secondary);font-size:.75rem}
.provision-wizard-units-mode{display:flex;flex-wrap:wrap;gap:12px 20px;margin-bottom:14px}
.provision-wizard-radio{display:flex;align-items:center;gap:6px;font-size:.875rem;cursor:pointer}
.provision-wizard-units-table{width:100%;border-collapse:collapse;font-size:.85rem;margin-bottom:10px}
.provision-wizard-units-table th,.provision-wizard-units-table td{padding:6px 8px;border-bottom:1px solid var(--border);text-align:left}
.provision-wizard-units-table input{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:6px}
.provision-wizard-summary{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0 0 16px;font-size:.9rem}
.provision-wizard-summary dt{color:var(--text-secondary);font-weight:500}
.provision-wizard-summary dd{margin:0}
.provision-wizard-errors,.provision-wizard-errors-host ul{margin:0 0 12px;padding:10px 12px;background:#fef2f2;border-radius:8px;color:#991b1b;font-size:.85rem}
.provision-wizard-errors ul,.provision-wizard-errors-host ul{padding-left:18px}
.provision-wizard-ok{margin:0 0 12px;color:#166534;font-size:.875rem;font-weight:600}
.provision-wizard-actions-inline{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.provision-wizard--busy .provision-wizard-panel{opacity:.75;pointer-events:none}
.provision-success-panel{padding:20px}
.provision-success-panel h2{margin:0 0 8px;font-size:1.15rem}

/* Importador universal clientes */
.client-import-overlay{z-index:1200}
.client-import-panel{max-width:960px;width:min(96vw,960px);max-height:92vh;display:flex;flex-direction:column}
.client-import-body{overflow:auto;flex:1}
.client-import-subtitle{margin:16px 0 8px;font-size:.95rem;font-weight:600}
.client-import-meta{margin-bottom:12px;font-size:.85rem;color:var(--text-secondary)}
.client-import-meta strong{color:var(--text-primary)}
.client-import-tenant-badge{margin:6px 0 0;padding:8px 10px;background:#eff6ff;border-radius:8px;color:#1e40af;font-size:.82rem}
.client-import-mapping-host{overflow:auto;max-height:280px;border:1px solid var(--border);border-radius:8px}
.client-import-map-table{width:100%;border-collapse:collapse;font-size:.82rem}
.client-import-map-table th,.client-import-map-table td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}
.client-import-map-table th{background:var(--bg-secondary);position:sticky;top:0;z-index:1}
.client-import-map-select{width:100%;max-width:240px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:.82rem}
.client-import-example{font-family:ui-monospace,monospace;font-size:.78rem;color:var(--text-secondary)}
.client-import-status{font-size:.78rem}
.client-import-status--ok{color:#166534}
.client-import-status--warn{color:#854d0e}
.client-import-status--ignore{color:#6b7280}
.client-import-stats-list{margin:0;padding:0 0 0 18px;font-size:.85rem;line-height:1.6}
.client-import-hint{margin:0;color:var(--text-secondary);font-size:.85rem}
.client-import-sample-host{overflow:auto;max-height:200px}
.client-import-sample-table{width:100%;border-collapse:collapse;font-size:.82rem}
.client-import-sample-table th,.client-import-sample-table td{padding:6px 8px;border-bottom:1px solid var(--border);text-align:left}
.client-import-result{margin-top:8px}

/* ========== Contrato manual F1 ========== */
.contratos-page-head{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:12px;margin-bottom:16px;
}
.contratos-page-head .section-title{margin:0}
.contract-manual-overlay{
  position:fixed;inset:0;z-index:480;display:none;
  background:rgba(15,23,42,.55);
}
.contract-manual-overlay.open{display:block}
.contract-manual-modal{
  display:none;position:fixed;z-index:481;top:8vh;left:50%;
  transform:translateX(-50%);width:min(92vw,480px);max-height:88vh;
  overflow:auto;padding:20px 22px;background:var(--white);
  border-radius:12px;box-shadow:0 20px 50px rgba(15,23,42,.25);
  flex-direction:column;gap:12px;
}
.contract-manual-modal.open{display:flex}
.contract-manual-modal__head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
}
.contract-manual-modal__title{margin:0;font-size:1.15rem}
.contract-manual-modal__lead{margin:6px 0 0;font-size:.82rem;color:var(--text-secondary);line-height:1.45}
.contract-manual-form{display:flex;flex-direction:column;gap:8px}
.contract-manual-form__row{display:flex;gap:8px;align-items:center}
.contract-manual-form__row select{flex:1}
.contract-manual-form__actions{
  display:flex;justify-content:flex-end;gap:10px;margin-top:12px;padding-top:12px;
  border-top:1px solid var(--border);
}
.contract-manual-hint{margin:0;font-size:.78rem;color:var(--text-secondary)}
.contract-manual-badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 10px;border-radius:999px;font-size:11px;font-weight:800;
  letter-spacing:.06em;text-transform:uppercase;
  background:linear-gradient(135deg,#dbeafe 0%,#e0e7ff 100%);
  color:#1e3a8a;border:1.5px solid #6366f1;
  box-shadow:0 1px 2px rgba(99,102,241,.2);
}
.contract-manual-badge--imported{
  background:#f4f4f5;color:#52525b;border-color:#d4d4d8;font-weight:600;
  letter-spacing:.02em;text-transform:none;
}
.contract-manual-badge--temporal{
  background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);
  color:#92400e;border-color:#f59e0b;margin-left:4px;
}
#contractSourceFilters{
  margin-bottom:10px;
}
#contractSourceFilters .filter-btn.active{
  background:var(--primary, #2563eb);
  color:#fff;
  border-color:var(--primary, #2563eb);
  box-shadow:0 0 0 2px rgba(37,99,235,.25);
}
.contract-end-badge.contract-end--cancelled{
  background:#fef3c7;color:#92400e;border:1px solid #fde68a;
}
.contract-ops-override-badge{
  display:inline-block;margin-left:4px;padding:2px 8px;border-radius:999px;
  font-size:.72rem;font-weight:600;letter-spacing:.01em;
  background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;vertical-align:middle;
}
.contract-ops-override-badge--stale{
  background:#fff7ed;color:#c2410c;border-color:#fed7aa;
}
.contract-ops-override-detail{
  display:inline-block;margin-left:4px;font-size:.72rem;color:var(--text-secondary);vertical-align:middle;
}
.contract-ops-override-stale{
  margin:0 0 10px;padding:8px 10px;border-radius:8px;
  background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:.85rem;
}
.contract-manual-hint--iban{margin-top:2px}
.contract-manual-hint--error{color:var(--danger);font-weight:500}
.contract-manual-label-hint{font-weight:400;color:var(--text-secondary);font-size:.78rem}
.contract-manual-field-wrap{display:flex;flex-direction:column;gap:8px}
.contract-client-combobox{align-items:flex-start}
.contract-client-combobox__field{position:relative;flex:1;min-width:0}
.contract-client-combobox__list{
  position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);
  margin:0;padding:4px 0;list-style:none;
  max-height:260px;overflow:auto;
  background:var(--white,#fff);border:1px solid var(--border,#d1d5db);
  border-radius:8px;box-shadow:0 8px 24px rgba(15,23,42,.12);
}
.contract-client-combobox__option{
  display:flex;flex-direction:column;gap:2px;
  width:100%;text-align:left;padding:8px 12px;border:0;background:transparent;
  cursor:pointer;font:inherit;color:inherit;
}
.contract-client-combobox__option:hover,
.contract-client-combobox__option.is-active{
  background:#f1f5f9;
}
.contract-client-combobox__option-title{font-size:.9rem;font-weight:600}
.contract-client-combobox__option-meta{font-size:.75rem;color:var(--text-secondary,#64748b)}
.contract-client-combobox__empty{
  padding:10px 12px;font-size:.85rem;color:var(--text-secondary,#64748b);
}
.contract-client-combobox__create{
  display:block;width:100%;text-align:left;padding:10px 12px;border:0;
  background:#eff6ff;color:#1d4ed8;cursor:pointer;font:inherit;font-weight:600;
}
.contract-client-combobox__create:hover,
.contract-client-combobox__create.is-active{background:#dbeafe}
.contract-client-combobox__clear{
  position:absolute;right:8px;top:50%;transform:translateY(-50%);
  border:0;background:transparent;color:#64748b;cursor:pointer;font-size:1rem;line-height:1;
  padding:4px;
}
.contract-client-combobox__field.has-value #createContractClienteSearch{padding-right:2rem}
.contract-metodo-cobro{font-size:.85rem}
.contract-manual-action-btn{
  font-size:.78rem;padding:5px 10px;white-space:nowrap;margin-right:4px;
}
.btn-danger-outline{
  border:1.5px solid var(--danger);color:var(--danger);background:var(--white);
}
.btn-danger-outline:hover{background:var(--danger-soft)}
@media(max-width:640px){
  .contract-manual-modal{top:0;left:0;right:0;bottom:0;transform:none;width:100%;max-height:100%;border-radius:0}
}

/* ========== Cobros Panel D3 — estados / vencido ========== */
.cobros-periods-toolbar{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.cobros-periods-list{
  max-height:180px;overflow:auto;border:1px solid var(--border);
  border-radius:8px;background:#fafafa;margin-bottom:10px;
}
.cobros-period-row{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  width:100%;text-align:left;padding:8px 10px;border:0;border-bottom:1px solid var(--border);
  background:transparent;cursor:pointer;font:inherit;color:inherit;
}
.cobros-period-row:last-child{border-bottom:0}
.cobros-period-row:hover{background:#f1f5f9}
.cobros-period-row.is-selected{background:#e0e7ff;outline:1px solid #6366f1}
.cobros-period-row__dates{font-size:.82rem;font-weight:600;min-width:140px}
.cobros-period-row__amounts{font-size:.78rem;color:var(--text-secondary);flex:1}
.cobros-period-row__vencido{font-size:.75rem;color:#b91c1c;width:100%}
.cobros-period-summary{
  padding:10px 12px;border-radius:8px;background:#f8fafc;border:1px solid var(--border);
  font-size:.85rem;line-height:1.5;
}
.cobros-period-summary__badge{margin-right:6px;vertical-align:middle}
.cobros-period-summary__vencido{margin-top:4px;color:#b91c1c;font-weight:600}
.cobros-contract-vs-period{font-size:.78rem;color:var(--text-secondary);margin-top:4px}

/* ========== Cobros Panel D4 — ficha historial / recibí ========== */
.ficha-cobros-nut-note{font-size:.78rem;color:var(--text-secondary);margin:8px 0 0;line-height:1.4}
.ficha-cobros-lead{font-size:.82rem;color:var(--text-secondary);margin:0 0 10px;line-height:1.45}
.ficha-cobros-subtitle{margin:14px 0 8px;font-size:.92rem}
.ficha-cobros-contract-block{margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.ficha-cobros-contract-head{font-size:.82rem;margin-bottom:6px}
.ficha-cobros-period-row{
  display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;
  padding:6px 0;font-size:.8rem;
}
.ficha-cobros-period-dates{font-weight:600}
.ficha-cobros-period-amts{color:var(--text-secondary)}
.ficha-cobros-vencido{width:100%;color:#b91c1c;font-size:.75rem}
.ficha-cobros-period-pay{width:100%;font-size:.75rem;color:var(--text-secondary);padding-left:4px}
.ficha-cobros-timeline{list-style:none;margin:0;padding:0}
.ficha-cobros-ev{
  padding:10px 12px;margin-bottom:8px;border-radius:8px;
  border:1px solid var(--border);background:#fafafa;font-size:.82rem;
}
.ficha-cobros-ev--posted{border-left:3px solid #22c55e}
.ficha-cobros-ev--voided-posted{border-left:3px solid #a1a1aa;opacity:.92}
.ficha-cobros-ev--void{border-left:3px solid #ef4444;background:#fef2f2}
.ficha-cobros-ev-head{margin-bottom:4px}
.ficha-cobros-ev-meta{color:var(--text-secondary);font-size:.75rem}
.ficha-cobros-ev-comment{margin-top:4px;font-style:italic}
.ficha-section--cobros-panel code{font-size:.75rem}

/* ========== Cobros Panel — bandeja diaria ========== */
.cp-root{display:flex;flex-direction:column;gap:14px}
.cp-root.is-busy{opacity:.65;pointer-events:none}
.cp-summary{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.cp-summary-card{
  appearance:none;
  width:100%;
  text-align:left;
  font:inherit;
  cursor:pointer;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:10px 12px;
  box-shadow:var(--shadow-sm);
  display:flex;
  flex-direction:column;
  gap:2px;
  min-height:44px;
}
.cp-summary-card:hover{border-color:#93c5fd;background:#f8fbff}
.cp-summary-card--total{border-color:#93c5fd;background:#f8fbff}
.cp-summary-label{font-size:.72rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}
.cp-summary-value{font-size:1.15rem;font-weight:700;color:var(--text);line-height:1.2}
.cp-summary-value--danger{color:#b91c1c}
.cp-summary-count{font-size:.72rem;color:var(--text-secondary)}
.cp-toolbar{
  display:flex;flex-wrap:wrap;gap:12px;align-items:center;
  padding:12px 14px;background:var(--white);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow-sm);
}
.cp-nav-cluster{display:inline-flex;flex-wrap:wrap;gap:10px;align-items:center}
.cp-search{margin:0;flex:1 1 320px;min-width:220px;max-width:none}
.cp-views{display:inline-flex;flex-wrap:wrap;gap:0;align-items:center;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.cp-view{
  appearance:none;border:0;background:#fafafa;color:var(--text-secondary);
  padding:10px 14px;font-size:.85rem;font-weight:600;cursor:pointer;
  border-right:1px solid var(--border);min-height:44px;
  display:inline-flex;align-items:center;justify-content:center;gap:.35em;
}
.cp-view:last-child{border-right:0}
.cp-view.is-active{background:var(--primary);color:#fff}
.cp-tab-count{opacity:.85;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:0}
.cp-attn-host-inline{display:inline-flex}
.cp-attn-host-inline[hidden]{display:none !important}
.cp-attn-pill-wrap{display:inline-flex}
.cp-attn-pill{
  appearance:none;border:1px solid #f59e0b;background:#fffbeb;color:#92400e;
  border-radius:10px;padding:10px 12px;font-size:.82rem;font-weight:700;cursor:pointer;
  white-space:nowrap;min-height:44px;
}
.cp-attn-pill:hover{background:#fef3c7}
.cp-attn-pill.is-active{background:#f59e0b;border-color:#d97706;color:#fff}
.cp-filters{
  display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;
  padding:10px 14px;background:var(--white);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow-sm);
}
.cp-filters-toggle{
  display:none;appearance:none;width:100%;justify-content:space-between;align-items:center;
  border:1px solid var(--border);background:#fafafa;color:var(--text);
  border-radius:10px;padding:12px 14px;font-size:.9rem;font-weight:700;cursor:pointer;min-height:44px;
}
.cp-filters-toggle.has-active{border-color:#f59e0b;background:#fffbeb;color:#92400e}
.cp-filters-body{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;width:100%}
.cp-filter{display:flex;flex-direction:column;gap:4px;font-size:.72rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}
.cp-filter .form-input{min-width:8.5rem;min-height:40px;font-size:.85rem;font-weight:500;text-transform:none;letter-spacing:0;color:var(--text)}
.cp-filter-clear{min-height:40px;align-self:flex-end}
.cp-summary-card.is-active{border-color:var(--primary);box-shadow:0 0 0 2px rgba(37,99,235,.2);background:#eff6ff}
.cp-actions-sel{font-size:.8rem;font-weight:600;color:var(--text-secondary);margin-right:4px;max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-detail-extra{font-size:.82rem;color:var(--text-secondary);margin:0 0 8px}
.cp-detail-summary{
  display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin:0 0 12px;
  padding:10px 12px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;
}
.cp-detail-summary dt{font-size:.68rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);margin:0}
.cp-detail-summary dd{margin:2px 0 0;font-size:.85rem;font-weight:600;color:var(--text)}
.cp-tabs{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.cp-tab{
  border:1px solid var(--border);background:#fafafa;color:var(--text-secondary);
  border-radius:999px;padding:6px 12px;font-size:.8rem;cursor:pointer;
}
.cp-tab.is-active{background:var(--primary);border-color:var(--primary);color:#fff}
.cp-actions{
  display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;
}
.cp-actions-left,.cp-actions-right{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cp-kbd-hint{font-size:.75rem;color:var(--text-secondary)}
.cp-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:14px;align-items:start}
.cp-layout:has(#cobrosPanelDetail[hidden]){grid-template-columns:1fr}
.cp-list-host{min-width:0}
.cp-table-wrap{margin:0;overflow-x:auto}
.cp-table{width:100%;border-collapse:collapse;font-size:.85rem;table-layout:fixed}
.cp-table th,.cp-table td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}
.cp-table th{font-size:.7rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);background:#fafafa}
.cp-table th:nth-child(1),.cp-table td:nth-child(1){width:22%}
.cp-table th:nth-child(2),.cp-table td:nth-child(2){width:9%}
.cp-table th:nth-child(3),.cp-table td:nth-child(3){width:18%}
.cp-table th:nth-child(4),.cp-table td:nth-child(4){width:11%}
.cp-table th:nth-child(5),.cp-table td:nth-child(5){width:10%}
.cp-table th:nth-child(6),.cp-table td:nth-child(6){width:12%}
.cp-table th:nth-child(7),.cp-table td:nth-child(7){width:18%}
.cp-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.cp-row{cursor:pointer}
.cp-row:hover{background:#f8fafc}
.cp-row.is-selected{background:#eff6ff;outline:2px solid #93c5fd;outline-offset:-2px}
.cp-col-cliente{min-width:0}
.cp-cliente-name{font-weight:700;font-size:.92rem;color:var(--text);letter-spacing:-.01em}
.cp-col-trastero{color:var(--text-secondary);font-size:.82rem;white-space:nowrap}
.cp-col-venc{font-weight:600;white-space:nowrap}
.cp-col-actions{white-space:nowrap}
.cp-col-actions .btn-sm{min-height:36px}
.cp-empty{text-align:center;padding:28px 16px;color:var(--text-secondary)}
.cp-empty-msg{margin-bottom:10px}
.cp-empty-clear,.cp-empty .btn-sm{min-height:44px;padding:10px 14px}
.cp-cards{display:none;flex-direction:column;gap:10px}
.cp-card{
  background:var(--white);border:1px solid var(--border);border-radius:var(--radius);
  padding:14px;box-shadow:var(--shadow-sm);cursor:pointer;
}
.cp-card.is-selected{border-color:#93c5fd;box-shadow:0 0 0 2px rgba(37,99,235,.2);background:#eff6ff}
.cp-card-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px;margin-bottom:6px}
.cp-card-period{font-size:.85rem;color:var(--text-secondary);margin-bottom:8px}
.cp-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:12px;font-size:.88rem}
.cp-card-pending{font-weight:700;font-variant-numeric:tabular-nums}
.cp-card-sep{color:var(--text-secondary)}
.cp-card-actions{display:flex;flex-wrap:wrap;gap:8px}
.cp-card-actions .btn-sm,.cp-card-actions .btn-primary,.cp-card-actions .btn-ghost{
  min-height:44px;padding:10px 14px;font-size:.88rem;
}
.cp-metodo{
  display:inline-block;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:600;
  border:1px solid var(--border);background:#f4f4f5;color:#3f3f46;
}
.cp-metodo--efectivo{background:#ecfdf5;border-color:#a7f3d0;color:#047857}
.cp-metodo--transferencia{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.cp-metodo--domiciliacion{background:#f5f3ff;border-color:#ddd6fe;color:#6d28d9}
.cp-metodo--bizum{background:#fff7ed;border-color:#fed7aa;color:#c2410c}
.cp-metodo--tarjeta{background:#fdf2f8;border-color:#fbcfe8;color:#9d174d}

/* Aviso atención cobros (shell) */
.cp-attn-host{margin:0 0 14px}
.cp-attn-host[hidden]{display:none !important}
.cp-attn-card{
  display:flex;align-items:flex-start;gap:12px;
  padding:12px 14px;border-radius:var(--radius);
  border:1px solid #fdba74;background:#fff7ed;
  box-shadow:var(--shadow-sm);
}
.cp-attn-main{flex:1;min-width:0}
.cp-attn-title{font-weight:700;font-size:.95rem;margin:0 0 8px;color:var(--text)}
.cp-attn-lines{display:flex;flex-direction:column;gap:4px;margin:0 0 10px}
.cp-attn-line{font-size:.88rem;font-weight:600;line-height:1.35}
.cp-attn-line--vencido{color:#b91c1c}
.cp-attn-line--hoy{color:#c2410c}
.cp-attn-line--proximos{color:#a16207}
.cp-attn-actions{display:flex;flex-wrap:wrap;gap:8px}
.cp-attn-dismiss{
  border:none;background:transparent;color:var(--text-secondary);
  cursor:pointer;font-size:1rem;line-height:1;padding:2px 6px;border-radius:6px;
}
.cp-attn-dismiss:hover{background:rgba(0,0,0,.06);color:var(--text)}
.cp-detail{min-width:0}
.cp-detail-card{
  background:var(--white);border:1px solid var(--border);border-radius:var(--radius);
  padding:14px;box-shadow:var(--shadow-sm);position:sticky;top:12px;
}
.cp-detail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.cp-detail-head h3{margin:0;font-size:1rem}
.cp-detail-close{min-height:40px}
.cp-detail-meta{margin:0 0 8px;font-size:.85rem}
.cp-detail-hint{margin:0 0 12px;font-size:.78rem;color:var(--text-secondary);line-height:1.4}
.cp-detail-form{display:flex;flex-direction:column;gap:10px}
.cp-detail-form label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:var(--text-secondary)}
.cp-detail-form .form-input{min-height:40px}
.cp-detail-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
.cp-detail-actions .btn-primary,.cp-detail-actions .btn-ghost{min-height:44px;padding:10px 14px}

/* E2.1 — Cobros | Movimientos | Liquidaciones (+ ayudas) */
.cp-mode{
  display:inline-flex;flex-wrap:wrap;gap:0;align-items:center;
  border:1px solid var(--border);border-radius:10px;overflow:hidden;align-self:flex-start;
}
.cp-mode-btn{
  appearance:none;border:0;border-right:1px solid var(--border);background:#fff;
  padding:10px 14px;min-height:44px;font-size:.92rem;font-weight:700;cursor:pointer;color:var(--text);
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
}
.cp-mode-btn:last-child{border-right:0}
.cp-mode-btn.is-active{background:var(--primary);color:#fff}
.cp-mode-info{
  font-size:.85rem;font-weight:600;line-height:1;opacity:.72;cursor:help;
}
.cp-mode-btn.is-active .cp-mode-info{opacity:.95}
.cp-mode-help{
  margin:8px 0 0;max-width:52rem;font-size:.84rem;line-height:1.45;color:var(--text-secondary);
}
.cpl-section{display:flex;flex-direction:column;gap:12px}
.cpm-section{display:flex;flex-direction:column;gap:12px}
/* V1.3.0b — display:flex no debe anular [hidden] (Movimientos/Liquidaciones) */
.cpm-section[hidden],
.cpl-section[hidden]{
  display:none !important;
}
.cpl-placeholder{padding:20px 18px;max-width:40rem}
.cpl-title{margin:0 0 8px;font-size:1.05rem}
.cpl-lead{margin:0 0 10px;font-size:.92rem;line-height:1.45;color:var(--text)}
.cpl-note{margin:0;font-size:.82rem;line-height:1.4;color:var(--text-secondary)}
.cpm-hint{margin:0;font-size:.82rem;color:var(--text-secondary);line-height:1.4}
.cpm-toolbar{align-items:center}
.cpm-actions{display:flex;flex-wrap:wrap;gap:8px}
/* E2.1 tabla Movimientos: anchos propios (no reutilizar columnas de Cobros). */
.cpm-table th:nth-child(1),.cpm-table td:nth-child(1){width:10%;white-space:nowrap}
.cpm-table th:nth-child(2),.cpm-table td:nth-child(2){width:12%}
.cpm-table th:nth-child(3),.cpm-table td:nth-child(3){width:12%;white-space:nowrap}
.cpm-table th:nth-child(4),.cpm-table td:nth-child(4),
.cpm-table .cpm-col-ref{
  width:28%;max-width:0;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.cpm-table th:nth-child(5),.cpm-table td:nth-child(5){
  width:12%;overflow:hidden;white-space:nowrap;
}
.cpm-table th:nth-child(6),.cpm-table td:nth-child(6){width:14%}
.cpm-table th:nth-child(7),.cpm-table td:nth-child(7){width:12%;white-space:nowrap}
.cpm-table .num{overflow:hidden}
.cpm-disponible{font-weight:700;color:#b45309}
.cpm-apply-filter-label{display:flex;flex-direction:column;gap:4px}
.cpm-apply-filter-meta{margin:-4px 0 0;font-size:.75rem}
.cpm-void-actions{margin-top:12px;justify-content:stretch}
.cpm-void-actions .btn-danger-outline{width:100%}
.cpm-void-hint{margin-top:10px}
#cpmApplySubmit:disabled{opacity:.45;cursor:not-allowed}
#cpmApplyAmount:disabled{background:#f4f4f5;color:var(--text-secondary)}
.cpm-status{
  display:inline-block;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:600;
  border:1px solid var(--border);background:#f4f4f5;color:#3f3f46;
}
.cpm-status--por_asignar{background:#fff7ed;border-color:#fed7aa;color:#c2410c}
.cpm-status--parcial{background:#fef3c7;border-color:#fcd34d;color:#a16207}
.cpm-status--asignado{background:#ecfdf5;border-color:#a7f3d0;color:#047857}
.cpm-card-amount{font-size:1.25rem;font-weight:800;margin:4px 0 2px;font-variant-numeric:tabular-nums}
.cpm-card-avail{font-size:.88rem;margin-bottom:8px;color:var(--text-secondary)}
.cpm-card-avail strong{color:#b45309}
.cpm-apps-title{margin:12px 0 6px;font-size:.85rem}
.cpm-apps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.cpm-apps li{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;
  padding:10px;border:1px solid var(--border);border-radius:8px;background:#fafafa;
}
.cpm-app-main{font-size:.85rem;line-height:1.35;min-width:0;flex:1}
.cp-layout:has(#cobrosMovDetail[hidden]){grid-template-columns:1fr}

@media(max-width:1100px){
  .cp-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cp-summary-card--total{grid-column:1 / -1}
  .cp-layout{grid-template-columns:1fr}
  .cp-detail-card{position:static}
}
@media(max-width:720px){
  .cp-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .cp-summary-card{padding:10px}
  .cp-summary-value{font-size:1.05rem}
  .cp-summary-card--total{grid-column:1 / -1}
  .cp-nav-cluster,.cp-views,.cp-filters,.cp-search,.cp-mode,.cpm-toolbar{width:100%}
  .cp-mode{display:flex}
  .cp-mode-btn{flex:1;padding:10px 8px;font-size:.82rem}
  .cp-mode-help{font-size:.8rem}
  .cp-view{flex:1}
  .cp-search{max-width:none}
  .cp-filters{flex-direction:column;align-items:stretch;gap:8px}
  .cp-filters-toggle{display:flex}
  .cp-filters-body{display:none;flex-direction:column;align-items:stretch}
  .cp-filters.is-open .cp-filters-body{display:flex}
  .cp-filter,.cp-filter .form-input{width:100%;min-width:0}
  .cp-filter .form-input{min-height:44px}
  .cp-filter-clear{width:100%;min-height:44px}
  .cp-actions{display:none !important}
  .cp-table-wrap{display:none !important}
  .cp-cards{display:flex}
  .cp-kbd-hint{display:none}
  /* Sheet por encima del header sticky (z-index:100) para que Cerrar sea pulsable */
  .cp-detail:not([hidden]){
    position:fixed;inset:0;z-index:1100;
    background:rgba(15,23,42,.45);
    padding:max(12px, env(safe-area-inset-top, 0px)) 12px max(12px, env(safe-area-inset-bottom, 0px));
    overflow:auto;-webkit-overflow-scrolling:touch;
  }
  .cp-detail:not([hidden]) .cp-detail-card{
    position:relative;margin:0 auto;max-width:520px;
    min-height:min(100%, 80vh);
  }
  .cp-detail:not([hidden]) .cp-detail-head{
    position:sticky;top:0;z-index:2;
    display:flex;align-items:center;justify-content:space-between;gap:8px;
    margin:0 0 8px;padding:4px 0 10px;
    background:var(--white);
    box-shadow:0 1px 0 var(--border);
  }
  .cp-detail:not([hidden]) .cp-detail-close{
    min-height:44px;min-width:44px;padding:10px 14px;
    position:relative;z-index:3;flex-shrink:0;
  }
  .cp-detail-summary{grid-template-columns:1fr}
  body.cp-detail-open{overflow:hidden}
}
@media(max-width:640px){
  .cp-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* —— Revisión de Precios module tabs (Revisión / Análisis Revenue) —— */
.rev-module-tabs{margin-top:4px}
.rev-module-view .section-subtitle{margin:0 0 14px}
#page-revision-precios.rev-fullscreen .rev-module-tabs{display:none}
#page-revision-precios.rev-fullscreen #revViewRevenue{display:none!important}

/* —— Ingresos tabs (Situación actual / Evolución / Liquidaciones) —— */
.ingresos-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin:0 0 14px;
  border-bottom:1px solid var(--border);
  padding-bottom:8px;
}
.ingresos-tab{
  appearance:none;
  background:transparent;
  border:1px solid transparent;
  border-radius:8px;
  padding:8px 14px;
  font-size:.9rem;
  font-weight:600;
  color:var(--text-secondary);
  cursor:pointer;
}
.ingresos-tab:hover{color:var(--text);background:rgba(0,0,0,.04)}
.ingresos-tab.active{
  color:var(--text);
  background:var(--white);
  border-color:var(--border);
  box-shadow:var(--shadow-sm);
}
.ingresos-source-note{
  font-size:.82rem;
  color:var(--text-secondary);
  margin:0 0 12px;
  line-height:1.4;
}
.ingresos-evo-title{margin:4px 0 12px;font-size:1.05rem}
.ingresos-view[hidden]{display:none !important}

/* —— Buscador global de trasteros —— */
.unit-search-mount{position:relative;min-width:160px;max-width:240px}
.section-title-row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.contratos-search-row{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:stretch;
  margin-bottom:12px;
}
.contratos-search-box--client{flex:1;min-width:200px;margin-bottom:0}
.contratos-search-row .unit-search-mount{max-width:220px;margin-bottom:0}
.unit-search-box{
  display:flex;
  align-items:center;
  gap:6px;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:8px;
  padding:6px 10px;
  min-height:36px;
}
.unit-search-box svg{flex-shrink:0;opacity:.55}
.unit-search-facade{
  appearance:none;-webkit-appearance:none;
  border:0;outline:none;background:transparent;
  width:100%;min-width:0;padding:0;margin:0;
  font:inherit;font-size:.85rem;line-height:1.2;
  color:var(--text-secondary);text-align:left;cursor:text;
}
.unit-search-facade:focus{outline:2px solid rgba(15,118,110,.35);outline-offset:1px;border-radius:4px}
.unit-search-input{
  border:0;
  outline:none;
  background:transparent;
  width:100%;
  font-size:.85rem;
  color:var(--text);
  min-width:0;
}
.unit-search-clear{
  appearance:none;
  border:0;
  background:transparent;
  color:var(--text-secondary);
  cursor:pointer;
  font-size:.85rem;
  padding:0 2px;
  line-height:1;
}
.unit-search-panel{
  position:absolute;
  right:0;
  top:calc(100% + 4px);
  z-index:40;
  width:min(360px,92vw);
  max-height:360px;
  overflow:auto;
  background:var(--white);
  border:1px solid var(--border);
  border-radius:10px;
  box-shadow:var(--shadow);
  padding:6px;
}
.unit-search-item{
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:8px 10px;
  border-radius:8px;
}
.unit-search-item:hover{background:rgba(0,0,0,.03)}
.unit-search-item--orphan{border:1px dashed var(--border);margin:4px 0}
.unit-search-code{font-weight:700;font-size:.9rem}
.unit-search-status{font-size:.82rem;font-weight:600}
.unit-search-status--ocupado{color:#15803d}
.unit-search-status--reservado{color:#c2410c}
.unit-search-status--no_disponible{color:#b91c1c}
.unit-search-status--disponible{color:#334155}
.unit-search-pricing{
  font-size:.78rem;
  font-weight:600;
  color:var(--text);
  line-height:1.25;
  margin-top:1px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.unit-search-meta{font-size:.75rem;color:var(--text-secondary);line-height:1.35}
.unit-search-actions{display:flex;flex-wrap:wrap;gap:4px}
.unit-search-empty{padding:12px;font-size:.85rem;color:var(--text-secondary);text-align:center}
.unit-search-highlight-row{
  outline:2px solid var(--primary, #2563eb);
  outline-offset:-2px;
  background:rgba(37,99,235,.06) !important;
}
.unit-filter-banner{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:8px 12px;
  margin-bottom:12px;
  background:#eff6ff;
  border:1px solid #bfdbfe;
  border-radius:8px;
  font-size:.85rem;
}
.unit-filter-banner[hidden]{display:none !important}
@media(max-width:768px){
  .unit-search-mount{max-width:100%;width:100%}
  .contratos-search-row .unit-search-mount{max-width:100%}
  .section-title-row{flex-wrap:wrap}
  .unit-search-panel{left:0;right:0;width:auto}
}



/* Cobros — Liquidaciones (PDF auditor + acceso externo configurable) */
.cpl-section{padding:8px 0 16px}
.cpl-import{padding:16px 18px}
.cpl-title{margin:0 0 6px;font-size:1.05rem}
.cpl-lead{margin:0 0 12px;color:var(--text-secondary);font-size:.9rem}
.cpl-actions{margin-bottom:12px}
.cpl-export-flow{margin-top:4px;margin-bottom:8px}
.cpl-file-btn{display:inline-block;cursor:pointer}
.cpl-replace-mes-modal{align-items:center;justify-content:center;z-index:1200}
.cpl-replace-mes-card{max-width:420px;width:92%;padding:20px 22px}
.cpl-replace-mes-body{font-size:.92rem;line-height:1.45;margin:8px 0 16px;color:var(--text)}
.cpl-replace-mes-body p{margin:0 0 10px}
.cpl-replace-mes-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.cpl-replace-mes-actions .btn-primary{order:0}
.cpl-replace-mes-actions .btn-danger-outline{order:1}
.cpl-status{padding:10px 12px;border-radius:8px;margin-bottom:12px;font-size:.88rem}
.cpl-status--ok{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46}
.cpl-status--warn{background:#fffbeb;border:1px solid #fde68a;color:#92400e}
.cpl-status--error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}
.cpl-status--info{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a}
.cpl-counts,.cpl-sums{margin:8px 0;padding-left:18px;font-size:.88rem}
.cpl-muted{color:var(--text-secondary);font-size:.85rem}
.cpl-table-wrap{overflow:auto}
.cpl-table{width:100%;border-collapse:collapse;font-size:.82rem}
.cpl-table th,.cpl-table td{border-bottom:1px solid var(--border,#e5e7eb);padding:6px 8px;text-align:left;vertical-align:top}
.cpl-saved{margin-top:16px}
.cpl-saved-item{margin:4px 4px 0 0}
.cpl-mes-label{display:inline-flex;align-items:center;gap:8px;font-size:.88rem;color:var(--text-secondary)}
.cpl-mes-nav{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.cpl-mes-btn{min-width:2rem;padding:6px 8px;font-size:1rem;line-height:1}
.cpl-mes-select-wrap{display:inline-flex}
.cpl-mes-select{
  appearance:auto;border:1px solid var(--border,#e5e7eb);border-radius:8px;
  padding:6px 10px;font-size:.9rem;background:#fff;color:var(--text);min-width:6.5rem
}
.cpl-mes-select-wrap--year .cpl-mes-select{min-width:4.75rem}
.cpl-sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0
}
.cpl-auditor{padding:4px 0 8px;max-width:40rem}
.cpl-auditor-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.cpl-auditor-title{margin:0;font-size:1.2rem;font-weight:700;letter-spacing:-.01em}
.cpl-hero-receive{
  padding:18px 20px;border-radius:12px;border:1px solid var(--border,#e5e7eb);
  background:linear-gradient(180deg,#fff 0%,#fafafa 100%);margin-bottom:14px;
}
.cpl-hero-label{font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}
.cpl-hero-value{margin-top:4px;font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.15;color:var(--text)}
.cpl-reocup{
  padding:10px 14px;border-radius:10px;border:1px solid #bbf7d0;background:#f0fdf4;margin-bottom:12px;max-width:40rem;
}
.cpl-reocup-label{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#166534;margin-bottom:4px}
.cpl-reocup-value{font-size:1.02rem;font-weight:700;color:#14532d;line-height:1.35}
.cpl-reocup-line{font-size:.95rem;font-weight:650;color:#14532d;line-height:1.35}
.cpl-reocup-line--month{font-weight:700}
.cpl-reocup-line--accum{font-weight:650;margin-top:2px}
.cpl-reocup-note{margin:4px 0 0;font-size:.74rem;color:#3f6212;line-height:1.35}
.cpl-reocup-list{margin:6px 0 10px;padding-left:1.1rem;font-size:.88rem;line-height:1.45}
.cpl-reocup-accum{margin-top:4px}
.cpl-saved{margin:10px 0 4px;max-width:40rem}
.cpl-saved-details{border:1px solid var(--border,#e5e7eb);border-radius:10px;background:#fff;padding:0}
.cpl-saved-toggle{
  cursor:pointer;list-style:none;font-weight:600;font-size:.9rem;color:var(--text-secondary);
  padding:10px 12px;user-select:none;
}
.cpl-saved-toggle::-webkit-details-marker{display:none}
.cpl-saved-toggle::before{content:'▸ ';display:inline-block;transition:transform .12s ease}
.cpl-saved-details[open] > .cpl-saved-toggle::before{transform:rotate(90deg)}
.cpl-saved-body{padding:0 10px 10px;display:flex;flex-wrap:wrap;gap:6px}
.cpl-saved-item{font-size:.82rem}
.cpl-control--auditor{padding:16px 18px;border-radius:12px;border:1px solid var(--border,#e5e7eb);background:#fff;margin-bottom:12px}
.cpl-control-label{font-size:.75rem;font-weight:700;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:4px}
.cpl-control-status{font-size:1.12rem;font-weight:700;margin:4px 0 8px}
.cpl-control-status--ok{color:#065f46}
.cpl-control-status--warn{color:#92400e}
.cpl-impact{margin:0 0 12px;font-size:1rem;font-weight:600;color:#9a3412}
.cpl-exc-list{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:10px}
.cpl-exc{padding:12px 14px;border-radius:10px;border:1px solid var(--border,#e5e7eb);background:#fafafa;font-size:.9rem;line-height:1.45}
.cpl-exc--alta{border-color:#fecaca;background:#fef2f2}
.cpl-exc--media{border-color:#fde68a;background:#fffbeb}
.cpl-exc--baja{border-color:#bfdbfe;background:#eff6ff}
.cpl-exc-unit{font-size:.82rem;font-weight:600;color:var(--text-secondary);margin-bottom:2px}
.cpl-exc-primary{font-size:.95rem;font-weight:600;margin-bottom:6px}
.cpl-exc-head{display:block;font-size:1rem;margin-bottom:6px}
.cpl-exc-line{margin:0 0 4px}
.cpl-exc-follow{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:0 0 6px;font-size:.82rem}
.cpl-exc-follow-status{color:var(--text-secondary)}
.cpl-exc-follow--revisada .cpl-exc-follow-status{color:#166534;font-weight:600}
.cpl-exc-follow--pendiente .cpl-exc-follow-status{color:#92400e}
.cpl-exc-follow-toggle{font-size:.78rem;padding:2px 8px;min-height:0}
.cpl-exc-note-wrap{display:block;margin:0}
.cpl-exc-note-label{display:block;font-size:.72rem;color:var(--text-secondary);margin-bottom:2px}
.cpl-exc-note-input{width:100%;box-sizing:border-box;resize:vertical;min-height:2.4em;font:inherit;font-size:.82rem;padding:6px 8px;border:1px solid var(--border,#e5e7eb);border-radius:6px;background:#fff;color:inherit}
.cpl-exc-note{margin:8px 0 0;font-size:.8rem;color:var(--text-secondary);font-style:italic}
.cpl-details{padding:10px 14px;margin:8px 0 12px;max-width:52rem}
.cpl-details-toggle{cursor:pointer;font-weight:600;font-size:.9rem;color:var(--text-secondary)}
.cpl-details-body{margin-top:12px}
.cpl-details-block{margin-bottom:16px}
.cpl-details-block h4{margin:0 0 8px;font-size:.95rem}
.cpl-details-block h5{margin:10px 0 6px;font-size:.88rem}
@media(max-width:720px){
  .cpl-auditor-title{font-size:1.08rem}
  .cpl-hero-value{font-size:1.65rem}
  .cpl-control-status{font-size:1.02rem}
  .cpl-table{font-size:.78rem}
  .cpl-auditor-head{flex-direction:column;align-items:flex-start}
}

/* Ampliaciones (Ocupacion tab) */
.amp-mount{max-width:1280px}
.amp-page{display:flex;flex-direction:column;gap:16px}
.amp-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}
.amp-title{margin:0;font-size:1.25rem}
.amp-subtitle{margin:4px 0 0;color:var(--text-secondary);font-size:.92rem}
.amp-help{margin:0;font-size:.85rem;color:var(--text-secondary)}
.amp-help summary{cursor:pointer;font-weight:600}
.amp-help p{margin:8px 0 0;line-height:1.45;max-width:36rem}
.amp-local-banner{
  font-size:.8rem;padding:8px 12px;border-radius:8px;
  background:rgba(0,0,0,.04);border:1px dashed var(--border);color:var(--text-secondary);
}
.amp-section{margin-top:4px}
.amp-section-title{margin:0 0 8px;font-size:1rem;display:flex;align-items:center;gap:8px}
.amp-section-note{margin:0 0 10px;font-size:.82rem;color:var(--text-secondary)}
.amp-cards{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  align-items:stretch;
}
.amp-card{
  background:var(--white);border:1px solid var(--border);border-radius:12px;
  padding:14px 16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px;
  min-width:0;
}
.amp-card--selected{border-color:rgba(15,118,110,.45);box-shadow:0 0 0 1px rgba(15,118,110,.2)}
.amp-card--draft{border-style:dashed}
.amp-card--limited{border-left:3px solid #b45309}
.amp-card-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.amp-card-name{margin:0;font-size:1.02rem;flex:1 1 auto}
.amp-badge{
  display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.02em;
  padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:rgba(0,0,0,.03);
}
.amp-badge--draft{border-style:dashed;color:#6b7280}
.amp-badge--active{color:#065f46;background:rgba(16,185,129,.12);border-color:rgba(16,185,129,.35)}
.amp-badge--archived{color:#6b7280}
.amp-dl{display:grid;gap:8px;margin:0}
.amp-dl--current{margin-top:8px}
.amp-dl > div{display:grid;gap:2px}
.amp-dl dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);font-weight:600}
.amp-dl dd{margin:0;font-size:.95rem;font-weight:600}
.amp-alert{
  background:rgba(180,83,9,.08);border:1px solid rgba(180,83,9,.35);
  border-radius:10px;padding:10px 12px;font-size:.88rem;line-height:1.4;
}
.amp-alert p{margin:6px 0 0}
.amp-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}
.amp-card-selected-hint{font-size:.82rem;font-weight:600;color:#0f766e;padding:6px 0}
.amp-btn-toggle{min-height:36px}
.amp-detail-panel{
  margin-top:4px;padding:16px 18px 18px;border:1px solid var(--border);border-radius:12px;
  background:var(--white);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:16px;
  width:100%;max-width:100%;box-sizing:border-box;min-width:0;
}
.amp-detail-head-main{display:flex;flex-direction:column;gap:4px}
.amp-detail-title{margin:0;font-size:1.05rem}
.amp-detail-meta{margin:0;font-size:.9rem;color:var(--text-secondary)}
.amp-detail-block h4{margin:0 0 8px;font-size:.92rem}
.amp-detail-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.amp-hitos-summary{margin:0;font-size:.92rem;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
.amp-hitos-pace{margin:4px 0 0;font-size:.86rem;color:var(--text-secondary);overflow-wrap:anywhere}
.amp-hitos-sost{margin:6px 0 0;font-size:.88rem;font-weight:600}
.amp-tech{margin:0;font-size:.86rem;color:var(--text-secondary)}
.amp-tech summary{cursor:pointer;font-weight:600;color:var(--text);list-style:none}
.amp-tech summary::-webkit-details-marker{display:none}
.amp-tech[open] summary{margin-bottom:8px}
.amp-tech .amp-bullets{margin-top:4px}
.amp-detail-actions{display:flex;justify-content:flex-end;padding-top:4px;border-top:1px solid var(--border)}
.amp-bullets{margin:0;padding-left:1.1rem;font-size:.9rem;line-height:1.45}
.amp-muted{color:var(--text-secondary);font-size:.86rem}
.amp-metric-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.amp-metric-btn{
  appearance:none;border:0;background:transparent;padding:6px 12px;font-size:.8rem;
  font-weight:600;cursor:pointer;color:var(--text-secondary);
}
.amp-metric-btn.active{background:rgba(0,0,0,.06);color:var(--text)}
.amp-curve{width:100%;max-width:100%;height:auto;display:block;background:rgba(0,0,0,.015);border-radius:8px}
.amp-curve-grid{stroke:rgba(0,0,0,.08);stroke-width:1}
.amp-curve-line{stroke:#0f766e;stroke-width:2.2}
.amp-curve-ylab,.amp-curve-xlab{font-size:10px;fill:var(--text-secondary)}
.amp-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.amp-table{width:100%;border-collapse:collapse;font-size:.86rem}
.amp-table th,.amp-table td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
.amp-table th{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary)}
.amp-compare-cards{display:none}
.amp-empty{color:var(--text-secondary);font-size:.9rem}
.amp-chrono{margin-top:8px}
.amp-chrono-axis{
  position:relative;height:16px;margin:0 0 8px 200px;font-size:.72rem;color:var(--text-secondary);
}
.amp-chrono-year{position:absolute;transform:translateX(-50%);white-space:nowrap}
.amp-chrono-rows{display:flex;flex-direction:column;gap:18px}
.amp-chrono-row{
  display:grid;grid-template-columns:200px minmax(0,1fr);gap:14px;align-items:start;
}
.amp-chrono-label{min-width:0;padding-top:4px}
.amp-chrono-name{display:block;font-size:.9rem;font-weight:700;line-height:1.3}
.amp-chrono-body{min-width:0;display:flex;flex-direction:column;gap:8px}
.amp-chrono-track{
  position:relative;height:36px;border-radius:10px;
  background:linear-gradient(180deg,rgba(15,118,110,.05),rgba(15,118,110,.015));
  border:1px solid rgba(15,118,110,.14);
}
.amp-chrono-rail{
  position:absolute;left:10px;right:10px;top:50%;height:3px;
  background:rgba(15,118,110,.22);transform:translateY(-50%);border-radius:999px;
}
.amp-chrono-span{
  position:absolute;top:50%;height:7px;border-radius:999px;
  background:rgba(15,118,110,.38);transform:translateY(-50%);
  min-width:4px;
}
.amp-chrono-mark{
  position:absolute;top:50%;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;z-index:1;
}
.amp-chrono-dot{
  width:11px;height:11px;border-radius:50%;
  background:#0f766e;border:2px solid #fff;box-shadow:0 0 0 1px rgba(15,118,110,.4);
}
.amp-chrono-mark--inicio .amp-chrono-dot{background:#334155}
.amp-chrono-mark--50 .amp-chrono-dot{background:#0d9488}
.amp-chrono-mark--90 .amp-chrono-dot{background:#0f766e}
.amp-chrono-mark--100 .amp-chrono-dot{background:#115e59;width:12px;height:12px}
.amp-chrono-key{
  position:absolute;top:-14px;font-size:.62rem;font-weight:700;letter-spacing:.02em;
  color:var(--text-secondary);line-height:1;white-space:nowrap;pointer-events:none;
}
.amp-chrono-legend{font-size:.86rem;line-height:1.45;color:var(--text)}
.amp-chrono-legend-dates{margin:0;font-weight:600}
.amp-chrono-legend-pace{margin:2px 0 0;color:var(--text-secondary);font-size:.82rem}
.amp-chrono-legend-pace--warn{color:#b45309;font-weight:600}
.amp-chrono-row--limited .amp-chrono-track{
  background:linear-gradient(180deg,rgba(180,83,9,.07),rgba(180,83,9,.02));
  border-color:rgba(180,83,9,.22);
}
.amp-chrono-row--limited .amp-chrono-rail{background:rgba(180,83,9,.28)}
.amp-chrono-row--limited .amp-chrono-mark--inicio .amp-chrono-dot{background:#b45309}
.amp-modal-backdrop{
  position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:80;
  display:flex;align-items:flex-end;justify-content:center;padding:12px;
}
.amp-modal{
  background:var(--white);border-radius:14px 14px 0 0;width:100%;max-width:640px;
  max-height:92vh;overflow:auto;box-shadow:var(--shadow-lg,0 10px 40px rgba(0,0,0,.2));
}
.amp-modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px;border-bottom:1px solid var(--border)}
.amp-modal-head h3{margin:0;font-size:1.05rem}
.amp-modal-body{padding:14px 16px 20px}
.amp-wizard-form{display:flex;flex-direction:column;gap:12px}
.amp-wizard-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:600}
.amp-wizard-form input,.amp-wizard-form textarea,.amp-wizard-form select{
  font:inherit;font-weight:400;padding:8px 10px;border:1px solid var(--border);border-radius:8px;
}
.amp-unit-pick{border:1px solid var(--border);border-radius:10px;padding:10px;margin:0}
.amp-unit-list{max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:4px}
.amp-unit-item{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;font-weight:400;font-size:.85rem;padding:4px 2px}
.amp-wizard-stats{margin:0;font-size:.9rem}
.amp-modal-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:8px}
.amp-activate-msg{margin:12px 0 0;line-height:1.45;font-size:.92rem}
.amp-btn-new{white-space:nowrap}
@media(min-width:720px){
  .amp-modal-backdrop{align-items:center}
  .amp-modal{border-radius:14px;max-height:86vh}
}
@media(max-width:1100px){
  .amp-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
   .amp-chrono-axis{margin-left:160px}
  .amp-chrono-row{grid-template-columns:160px minmax(0,1fr)}
}
@media(max-width:720px){
  .amp-cards{grid-template-columns:1fr}
  .amp-detail-panel{padding:14px 12px 16px}
  .amp-detail-actions{justify-content:stretch}
  .amp-detail-actions .amp-btn-toggle{width:100%;min-height:44px}
  .amp-header{flex-direction:column;align-items:stretch}
  .amp-btn-new{width:100%;min-height:44px}
  .amp-compare-table-wrap{display:none}
  .amp-compare-cards{display:grid;gap:10px}
  .amp-compare-card{
    border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--white);
  }
  .amp-compare-card h4{margin:0 0 6px;font-size:.95rem}
  .amp-compare-card p{margin:4px 0;font-size:.88rem}
  .amp-modal-actions .btn-primary,.amp-modal-actions .btn-ghost{flex:1;min-height:44px}
  .amp-chrono-axis{display:none}
  .amp-chrono-row{grid-template-columns:1fr;gap:8px}
  .amp-chrono-track{height:32px}
  .amp-chrono-legend-dates,.amp-chrono-legend-pace{font-size:.8rem}
}

