/**
 * MENU-DENSO-20261003
 * Carga al final. Gana a sandbox-ui.css (sidebar 252px / min-height 38px / padding 1.5rem).
 */
body.has-sidebar {
  --sidebar-w: 204px;
  --header-h: 46px;
}
body.has-sidebar .sidebar,
body.layout-sandbox-ui .sidebar {
  width: 204px;
  padding: 0.28rem 0.32rem 0.8rem;
}
body.has-sidebar .sidebar-brand,
body.layout-sandbox-ui .sidebar-brand {
  padding: 0.45rem 0.65rem 0.4rem;
}
body.layout-sandbox-ui .sidebar-brand::after {
  margin: 0.35rem -0.65rem -0.4rem;
}
body.has-sidebar .sidebar-section,
body.layout-sandbox-ui .sidebar-section {
  padding: 0.28rem 0.2rem 0.1rem;
}
body.has-sidebar .sidebar-heading,
body.layout-sandbox-ui .sidebar-heading {
  font-size: 0.6rem;
  padding: 0.2rem 0.4rem 0.05rem;
  margin: 0;
}
body.has-sidebar .sidebar-nav a,
body.layout-sandbox-ui .sidebar-nav a {
  min-height: 0;
  gap: 0.4rem;
  font-size: 0.78rem;
  padding: 0.22rem 0.42rem;
  border-radius: 7px;
  line-height: 1.25;
}
body.has-sidebar .sidebar-group > summary,
body.layout-sandbox-ui .sidebar-group > summary {
  min-height: 0;
  font-size: 0.78rem;
  padding: 0.26rem 0.42rem;
  gap: 0.4rem;
  line-height: 1.25;
}
body.has-sidebar .sidebar-nav a.nav-sub,
body.layout-sandbox-ui .sidebar-nav a.nav-sub {
  padding-left: 1.55rem;
  font-size: 0.74rem;
}
body.has-sidebar .nav-icon svg,
body.layout-sandbox-ui .nav-icon svg {
  width: 15px;
  height: 15px;
}
.sidebar-mini {
  margin: 0.35rem 0.45rem 0.05rem;
  padding: 0;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted, #6b7280);
}
body.has-sidebar .site-header .header-inner {
  min-height: 46px;
  padding-top: 0.2rem;
  padding-bottom: 0.2rem;
}
body.has-sidebar .logo-img { height: 26px; }
body.has-sidebar .user-chip-role { display: none; }
/* v2.32.0: partner/distribuidor — el nombre del usuario y rol van bajo la organización */
@media (min-width: 761px) { body.has-sidebar .user-chip-role.user-chip-sub { display: block; max-width: 220px; } }
body.has-sidebar .nav-logout-label { display: none; }
body.has-sidebar .app-main,
body.layout-sandbox-ui .app-main {
  padding: 0.7rem 0.95rem 1.1rem;
}
body.has-sidebar .page-head,
body.layout-sandbox-ui .page-head {
  margin-bottom: 0.45rem;
  gap: 0.4rem 0.75rem;
}
body.has-sidebar .page-head h1,
body.layout-sandbox-ui .page-head h1,
body.has-sidebar .page-head h2 {
  font-size: 1.12rem;
  margin: 0;
  line-height: 1.2;
}
body.has-sidebar .page-head .muted,
body.layout-sandbox-ui .page-head .muted {
  margin: 0.1rem 0 0;
  font-size: 0.78rem;
}
body.has-sidebar .card,
body.layout-sandbox-ui .card {
  padding: 0.65rem 0.75rem;
}
body.has-sidebar .kpi-mini,
body.layout-sandbox-ui .kpi-mini {
  gap: 0.45rem;
  margin-bottom: 0.55rem;
}
body.has-sidebar .kpi-mini .card,
body.layout-sandbox-ui .kpi-mini .card {
  padding: 0.45rem 0.6rem;
}
body.has-sidebar .kpi-mini .stat,
body.layout-sandbox-ui .kpi-mini .stat {
  font-size: 1.15rem;
  margin: 0.05rem 0;
}
body.has-sidebar .kpi-mini .muted,
body.layout-sandbox-ui .kpi-mini .muted,
body.has-sidebar .partner-kpi .muted {
  display: none;
}
body.has-sidebar .table,
body.layout-sandbox-ui .table {
  font-size: 0.8rem;
}
body.has-sidebar .table th,
body.has-sidebar .table td,
body.layout-sandbox-ui .table th,
body.layout-sandbox-ui .table td {
  padding: 0.26rem 0.42rem;
}
body.has-sidebar .hoy-stack {
  display: grid;
  gap: 0.5rem;
}
body.has-sidebar .app-footer,
body.has-sidebar .app-footer p {
  margin: 0;
  padding: 0.25rem 0.8rem;
  font-size: 0.72rem;
}
body.has-sidebar .ui-breadcrumb {
  margin-bottom: 0.2rem;
  font-size: 0.75rem;
}

/* Hub comercial: oportunidades + alta + cotizaciones */
.com-hub { margin-top: 0.65rem; }
.com-hub .crm-section-title { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.com-hub-filters { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0.2rem 0 0.45rem; }
.com-hub-filters input[type="search"] { min-width: 14rem; flex: 1; }
.com-nueva { border-left: 3px solid #C41E3A; }
.com-nueva > summary { cursor: pointer; font-weight: 700; color: #C41E3A; }
.com-nueva-form { margin-top: 0.65rem; }
.com-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 0.45rem 0.7rem; }
.com-form-grid label { display: flex; flex-direction: column; gap: 0.15rem; font-size: 0.75rem; }
.com-form-grid input, .com-form-grid select, .com-form-grid textarea { width: 100%; }
.com-form-grid .com-span-2 { grid-column: span 2; }
.com-check { display: flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; }
.com-more { margin-top: 0.45rem; }
@media (max-width: 640px) {
  .com-form-grid .com-span-2 { grid-column: auto; }
}

/* —— Idle session countdown (seguridad) —— */
.portal-idle-overlay {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(17, 17, 17, 0.55);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
}
.portal-idle-overlay[hidden] {
  display: none !important;
}
body.portal-idle-locked {
  overflow: hidden;
}
.portal-idle-dialog {
  position: relative;
  width: min(22rem, 100%);
  padding: 1.15rem 1.2rem 1.05rem;
  border-radius: 12px;
  background: var(--surface, #fff);
  border: 1px solid rgba(232, 234, 237, 0.95);
  box-shadow: 0 18px 48px rgba(17, 17, 17, 0.22);
  overflow: hidden;
}
.portal-idle-accent {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, #C41E3A 0%, rgba(196, 30, 58, 0.45) 70%, transparent 100%);
}
.portal-idle-title {
  margin: 0.15rem 0 0.35rem;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text, #111);
}
.portal-idle-desc {
  margin: 0 0 0.55rem;
  font-size: 0.86rem;
  line-height: 1.4;
  color: #4b5563;
}
.portal-idle-count {
  margin: 0 0 0.9rem;
  font-size: 0.9rem;
  color: var(--text, #111);
}
.portal-idle-count strong {
  font-variant-numeric: tabular-nums;
  color: #C41E3A;
  font-size: 1.15rem;
  letter-spacing: 0.02em;
}
.portal-idle-actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
}
.portal-idle-actions .btn-primary {
  background: #C41E3A;
  border-color: #C41E3A;
}
.portal-idle-actions .btn-primary:hover,
.portal-idle-actions .btn-primary:focus {
  filter: brightness(0.95);
}

/* ===== F3 navegación (2.1.0): badges, «+», migas, favoritos, aviso, Mis pendientes ===== */
.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;margin-left:auto;border-radius:999px;background:#C41E3A;color:#fff;font-size:.68rem;font-weight:700;line-height:1}
.nav-badge.is-zero{background:var(--surface-3,#e5e7eb);color: var(--text-muted, #6b7280)}
.sidebar-nav a{display:flex;align-items:center}
.sidebar-nav a.nav-recent .nav-label{opacity:.85}
.nav-quick{position:relative;display:inline-block}
.nav-quick>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:8px;background:#C41E3A;color:#fff;font-size:1.25rem;font-weight:700;line-height:1;user-select:none}
.nav-quick>summary::-webkit-details-marker{display:none}
.nav-quick[open]>summary{background:#9A1830}
.nav-quick-menu{position:absolute;right:0;top:calc(100% + .35rem);z-index:60;min-width:14rem;background: var(--surface, #fff);border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);padding:.35rem}
.nav-quick-menu a{display:block;padding:.45rem .6rem;border-radius:6px;color: var(--text, #111);text-decoration:none;font-size:.88rem}
.nav-quick-menu a:hover,.nav-quick-menu a:focus{background:#fdf2f4;color:#C41E3A}
.nav-quick-title{margin:.2rem .6rem .35rem;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color: var(--text-muted, #6b7280)}
.nav-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;margin:0 0 .6rem;font-size:.8rem;color: var(--text-muted, #6b7280)}
.nav-crumbs a{color:#C41E3A;text-decoration:none;font-weight:600}
.nav-fav-form{display:inline;margin:0 0 0 .35rem}
.nav-fav-btn{border:0;background:none;cursor:pointer;color:var(--brand,#C41E3A);font-size:1rem;line-height:1;padding:0 .15rem}
.nav-notice{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:0 0 .9rem;padding:.7rem .9rem;border:1px solid var(--border);border-left:4px solid var(--brand, #C41E3A);border-radius:8px;background:var(--info-bg, #fdf2f4);font-size:.88rem;color: var(--text, #111)}
html[data-theme="dark"] .nav-notice{background:var(--surface-2);color:var(--text)}
.nav-notice-form{margin:0 0 0 auto}
.pend-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:1rem}
.pend-card.has-items{border-left:4px solid #C41E3A}
.pend-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.pend-head h2{font-size:1rem;margin:0}
.pend-list{margin:.5rem 0;padding-left:1rem}
.pend-list li{margin:.25rem 0}

/* v2.16.1: inputs sin type (o search/url/tel) con el mismo estilo que el resto de .form */
.form input:not([type]),.form input[type="search"],.form input[type="url"],.form input[type="tel"]{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;background:var(--surface,#fff);color:var(--ink)}
.lic-voucher-input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem}
.lic-voucher-status.is-warn{color:var(--badge-warn-text)}
.lic-voucher{display:flex;gap:.3rem;align-items:center;margin-bottom:.2rem;white-space:nowrap}

/* v2.28.1 Badge Proxmox Silver Partner (cuadrado, una variante) — portal distribuidor */
.pxc-logo-wrap{display:inline-flex;align-items:center;line-height:0;flex:0 0 auto}
.pxc-logo-wrap picture{display:block;line-height:0}
.pxc-logo{display:block;width:48px;height:48px;aspect-ratio:1/1;object-fit:contain;border-radius:13.6%}
.pxc-logo-sm{width:28px;height:28px}
.pxc-logo-lg{width:72px;height:72px}
[data-theme="dark"] .pxc-logo{box-shadow:0 0 0 1px var(--border)}
.nav-pxc-brand{padding:.3rem .75rem .35rem 1.6rem}
@media (max-width:640px){.pxc-logo-lg{width:56px;height:56px}}
/* v2.30.1: resumen en el popup «Eliminar licencia» */
.lic-del-summary{display:grid;grid-template-columns:max-content 1fr;gap:.3rem .9rem;margin:0 0 .8rem;padding:.7rem .85rem;border:1px solid var(--border);border-left:3px solid var(--danger,var(--rtfm-crimson));border-radius:8px;background:var(--surface-2,var(--surface))}
.lic-del-summary dt{color:var(--text-muted);font-weight:600;font-size:.85rem}
.lic-del-summary dd{margin:0;min-width:0;overflow-wrap:anywhere}
.lic-del-summary code{word-break:break-all}
@media (max-width:480px){.lic-del-summary{grid-template-columns:1fr}.lic-del-summary dd{margin-bottom:.35rem}}
/* v2.30.2: aviso de voucher en conflicto al restaurar */
.alert.alert-warning{background:var(--warn-bg);color:var(--badge-warn-text);border:1px solid var(--warn);border-radius:8px;padding:.6rem .8rem;margin:0 0 .8rem;overflow-wrap:anywhere}
.alert.alert-warning code{word-break:break-all}
/* v2.31.0: popup Editar licencia — toggle Auto renovación + panel del proceso */
.lic-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
@media (max-width:560px){.lic-edit-grid{grid-template-columns:1fr}}
.lic-switch{display:flex;align-items:center;gap:.6rem;cursor:pointer;font-weight:600;margin:.4rem 0}
.lic-switch input{appearance:none;-webkit-appearance:none;position:relative;width:2.6rem;height:1.45rem;margin:0;border-radius:999px;background:var(--border);border:1px solid var(--border);cursor:pointer;flex:0 0 auto;transition:background .15s}
.lic-switch input::after{content:"";position:absolute;top:2px;left:2px;width:1.1rem;height:1.1rem;border-radius:50%;background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.lic-switch input:checked{background:var(--ok);border-color:var(--ok)}
.lic-switch input:checked::after{transform:translateX(1.12rem)}
.lic-switch input:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}
.lic-renew{border:1px solid var(--border);border-left:3px solid var(--ok);border-radius:8px;padding:.65rem .85rem;margin:.2rem 0 .9rem;background:var(--surface-2,var(--surface))}
.lic-renew dl{display:grid;grid-template-columns:max-content 1fr;gap:.25rem .9rem;margin:.4rem 0}
.lic-renew dt{color:var(--text-muted);font-weight:600;font-size:.85rem}
.lic-renew dd{margin:0;min-width:0;overflow-wrap:anywhere}
.lic-renew .lic-renew-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.4rem}
@media (max-width:480px){.lic-renew dl{grid-template-columns:1fr}}
.lic-quote-link{display:inline-flex;flex-wrap:wrap;gap:.25rem;align-items:center;font-size:.82rem}
.pxr-home li{margin:.25rem 0}
#lic-edit form+form{margin-top:1rem}
.lic-endcust{margin-top:.15rem;overflow-wrap:anywhere}

/* v2.80.2 — insignia urgente secundaria del menú (p. ej. Compra Ágil que cierra en < 24 h): más pequeña, roja de alerta, con anillo */
.nav-badge.nav-badge-urgent{min-width:1rem;height:1rem;padding:0 .28rem;margin-left:.25rem;font-size:.6rem;background:var(--danger,#dc2626);box-shadow:0 0 0 2px var(--surface,#fff)}
.nav-badge:not(.nav-badge-urgent)+.nav-badge-urgent{margin-left:.25rem}
