/* inicio-roles.css - estilos del panel de inicio configurable por rol.
   Aislado del resto para no tocar modulos.css. Hereda la paleta de estilos.css. */

/* ============================================================
   PANEL DE INICIO CONFIGURABLE POR ROL
   - vista de inicio: la grilla usa las mismas celdas .cards.mini
   - editor dentro de "Roles y permisos": grilla fija 4x3 (12 slots)
     con drag&drop a slot exacto, huecos reales y banco de ocultas.
   ============================================================ */

/* la grilla de la vista de inicio reutiliza .cards.mini (3 col) */
.cards.mini.inicio-grid{margin-bottom:10px}

/* ---- Editor: contenedor de la grilla de slots ---- */
.inicio-editor{border:1px solid var(--line);border-radius:6px;background:var(--surf);padding:12px}
.inicio-grid-edit{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}

/* cada SLOT de la grilla (posicion fija). Puede tener una celda o estar vacio. */
.islot{min-height:86px;border-radius:8px;display:flex}
.islot.over{outline:2px dashed var(--red);outline-offset:2px;border-radius:8px}
/* slot vacio: recuadro punteado con el numero de posicion */
.islot-vacio{flex:1;border:1px dashed var(--line2);border-radius:8px;background:transparent;
  display:flex;align-items:center;justify-content:center;
  font-family:"Days One";font-size:15px;color:var(--mut2);min-height:86px}

/* ---- Banco: celdas sin ubicar u ocultas ---- */
.inicio-banco-lbl{font-family:"IBM Plex Mono";font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--mut2);margin:14px 0 6px}
.inicio-banco{border:1px dashed var(--line2);border-radius:6px;background:var(--surf);
  padding:10px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;min-height:70px}
.inicio-banco.over{outline:2px dashed var(--red);outline-offset:2px}
.inicio-banco-vacio{grid-column:1 / -1;text-align:center;color:var(--mut2);
  font-size:13px;padding:14px 0}

/* cada tile (celda arrastrable) */
.itile{flex:1;background:var(--paper);border:1px solid var(--line2);border-radius:8px;
  padding:11px 12px;min-height:86px;display:flex;flex-direction:column;
  cursor:grab;user-select:none;transition:box-shadow .12s,border-color .12s,opacity .12s}
.itile:hover{border-color:var(--mut2);box-shadow:0 1px 3px rgba(17,17,19,.08)}
.itile:active{cursor:grabbing}
.itile.dragging{opacity:.4;border-style:dashed}
/* apagada: gris atenuada (en el banco) */
.itile.off{background:var(--surf2);border-color:var(--line);opacity:.7}
.itile.off .itile-h{color:var(--mut2)}

.itile-h{font-family:"IBM Plex Mono";font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink);line-height:1.35;flex:1}
.itile-f{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
/* numero de posicion */
.itile-n{font-family:"Days One";font-size:12px;color:var(--mut2);
  min-width:22px;height:22px;border-radius:5px;background:var(--surf2);
  display:inline-flex;align-items:center;justify-content:center}
.itile-n.banco{background:transparent;color:var(--line2)}

/* toggle Ver / No ver (abajo a la derecha de cada tile) */
.itsw{display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  font-family:"IBM Plex Mono";font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--mut);position:relative}
.itsw input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.itsw .sw-track{width:34px;height:19px;border-radius:999px;background:var(--line2);
  position:relative;transition:.15s;flex:none}
.itsw .sw-track:after{content:"";position:absolute;left:2px;top:2px;width:15px;height:15px;
  border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:.15s}
.itsw input:checked + .sw-track{background:var(--red)}
.itsw input:checked + .sw-track:after{transform:translateX(15px)}
.itsw .itsw-lbl{min-width:38px}
.itsw input:checked ~ .itsw-lbl{color:var(--red);font-weight:600}
.itsw.locked{opacity:.55;cursor:not-allowed}

@media(max-width:820px){
  .inicio-grid-edit{grid-template-columns:1fr 1fr}
  .inicio-banco{grid-template-columns:1fr 1fr}
}

/* ============================================================
   MATRIZ DE PERMISOS POR MENU (grupos + submenus)
   ============================================================ */
/* fila de grupo: nombre en negrita, fondo tenue, solo columna Ver activa */
.matriz.menuperm tr.menugrupo td{background:var(--surf2);font-weight:700;color:var(--ink);
  border-top:1px solid var(--line2)}
.matriz.menuperm tr.menugrupo td:first-child{text-transform:uppercase;font-family:"IBM Plex Mono";
  font-size:11px;letter-spacing:.06em}
/* filas de submenu: nombre indentado */
.matriz.menuperm tr.menuitem td.menuitem-nom{padding-left:26px;text-align:left;position:relative}
.matriz.menuperm tr.menuitem td.menuitem-nom:before{content:"\21B3";position:absolute;left:10px;color:var(--mut2)}
/* submenu deshabilitado (grupo sin Ver): atenuado */
.matriz.menuperm tr.menuitem.disabled td{opacity:.4}
.matriz.menuperm tr.menuitem.disabled td.menuitem-nom:before{opacity:.4}
/* item suelto (Inicio) */
.matriz.menuperm tr.menuitem-solo td:first-child{font-weight:600}

/* ============================================================
   CARD NEGRA DE STOCK sin la mitad "Valor del stock" (rol no admin)
   Cuando la card queda con una sola mitad, se saca el borde divisor
   y la mitad ocupa el alto centrada.
   ============================================================ */
.card.big.stbig.solotop .half.top{border-bottom:0}

/* ============================================================
   CELDA DE SALDO CON DOS VALORES (real + proyectado)
   ============================================================ */
.card .saldo2{display:flex;flex-direction:column;gap:6px;margin:2px 0}
.card .saldo2-item{display:flex;flex-direction:column;line-height:1.1}
.card .saldo2-lbl{font-family:"IBM Plex Mono";font-size:9px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--mut2);margin-bottom:1px}
.card .saldo2 .vproy{opacity:.85}
