/* Almacen fisico — same chrome as bitacora / solicitudes */

/* =============================================
   PAGE BASE
   ============================================= */

.page-almacen-fisico {
  min-height: 100%;
  margin: 0;
  background: var(--bg);
  color: var(--text);

  /* Semantic tones for this page (readable in dark and light) */
  --ti-ok-fg: var(--ok-fg);
  --ti-ok-bg: var(--ok-bg);
  --ti-ok-bd: var(--ok-bd);
  --ti-err-fg: var(--err-fg);
  --ti-err-bg: var(--err-bg);
  --ti-err-bd: var(--err-bd);
  --ti-warn-fg: color-mix(in srgb, #d97706 88%, white);
  --ti-warn-bg: color-mix(in srgb, #d97706 12%, var(--panel));
  --ti-warn-bd: color-mix(in srgb, #d97706 40%, var(--line));
  /* Informational tone is neutral: no blue chips */
  --ti-info-fg: var(--text);
  --ti-info-bg: color-mix(in srgb, var(--text) 6%, var(--panel));
  --ti-info-bd: color-mix(in srgb, var(--text) 24%, var(--line));
  --ti-row-err: color-mix(in srgb, #dc2626 7%, transparent);
  --ti-row-warn: color-mix(in srgb, #d97706 7%, transparent);

  /* Neutral interaction tones (same as reportes / servicio) */
  --ti-hover-bg: rgba(255, 255, 255, 0.05);
  --ti-hover-bd: color-mix(in srgb, var(--text) 22%, var(--line));
  --ti-selected-bg: rgba(255, 255, 255, 0.08);
  --ti-selected-bd: color-mix(in srgb, var(--text) 40%, var(--line));
  --ti-row-hover: #1a2230;
  --ti-tint-bg: rgba(255, 255, 255, 0.04);
}

[data-theme="light"] .page-almacen-fisico {
  --ti-ok-fg: #15803d;
  --ti-ok-bg: #f0fdf4;
  --ti-ok-bd: #bbf7d0;
  --ti-err-fg: #b91c1c;
  --ti-err-bg: #fef2f2;
  --ti-err-bd: #fecaca;
  --ti-warn-fg: #b45309;
  --ti-warn-bg: #fffbeb;
  --ti-warn-bd: #fde68a;
  --ti-info-fg: #374151;
  --ti-info-bg: #f3f4f6;
  --ti-info-bd: #d1d5db;
  --ti-row-err: #fef2f2;
  --ti-row-warn: #fffbeb;
  --ti-hover-bg: rgba(15, 23, 42, 0.04);
  --ti-hover-bd: color-mix(in srgb, var(--text) 22%, var(--line));
  --ti-selected-bg: #eef2f8;
  --ti-selected-bd: color-mix(in srgb, var(--text) 35%, var(--line));
  --ti-row-hover: #eef2f8;
  --ti-tint-bg: #f5f7fb;
}

.page-almacen-fisico header.hdr-controls > .page-title {
  display: none !important;
}

.page-almacen-fisico .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;
}

.page-almacen-fisico .ti-hdr-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.page-almacen-fisico header.hdr-controls .controls {
  flex-wrap: wrap;
  justify-content: flex-end;
  row-gap: 8px;
}

.page-almacen-fisico header.app-header.hdr-controls .controls > .btn.sm,
.page-almacen-fisico .ti-toolbar .btn.sm {
  font-family: "Montserrat", "Roboto", sans-serif;
  font-size: 14px;
  font-weight: 600;
}

.page-almacen-fisico .ti-count-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  background: var(--accent);
  color: #1b1b00;
}

.page-almacen-fisico .ti-hdr-btn[hidden],
.page-almacen-fisico .ti-count-badge[hidden] {
  display: none;
}

/* =============================================
   HEADER CONTROLS
   ============================================= */

.page-almacen-fisico .ti-hdr-search {
  width: min(280px, 40vw);
  min-width: 140px;
  height: 34px;
  padding: 0 10px 0 34px;
  border: 1px solid var(--hc-border, var(--line));
  border-radius: 8px;
  background: var(--hc-bg, var(--panel));
  color: inherit;
  font: inherit;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239fb1c7' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: 10px center;
  background-size: 14px;
  transition: border-color .15s ease, box-shadow .15s ease;
}

.page-almacen-fisico .ti-hdr-search:focus {
  outline: none;
  border-color: var(--ti-selected-bd);
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-hdr-select {
  height: 34px;
  min-width: 110px;
  max-width: 190px;
  border-radius: 8px;
}

.page-almacen-fisico .ti-hdr-select:disabled {
  opacity: .55;
}

/* Warehouse picker: a single assigned warehouse reads as a fixed label, not a faded control. */
.page-almacen-fisico .ti-wh-select {
  padding: 0 10px;
  border: 1px solid var(--hc-border, var(--line));
  background-color: var(--hc-bg, var(--panel));
  color: var(--hc-fg, inherit);
  font: inherit;
  font-size: 13px;
  font-weight: 700;
}

.page-almacen-fisico .ti-wh-select:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-wh-select:disabled {
  opacity: 1;
  cursor: default;
}

.page-almacen-fisico .ti-wh-select[hidden],
.page-almacen-fisico.ti-no-wh .ti-hdr-btn:not(#whAdminBtn):not(#moreBtn) {
  display: none;
}

.page-almacen-fisico .ti-more {
  position: relative;
}

.page-almacen-fisico .ti-more[hidden] {
  display: none;
}

.page-almacen-fisico .ti-more-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 40;
  min-width: 220px;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
}

.page-almacen-fisico .ti-more-menu[hidden] {
  display: none;
}

.page-almacen-fisico .ti-more-sep {
  height: 1px;
  margin: 4px 8px;
  background: var(--line);
}

.page-almacen-fisico .ti-more-sep[hidden] {
  display: none;
}

.page-almacen-fisico .ti-more-menu .ti-more-item {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  width: 100%;
  height: auto;
  min-height: 36px;
  padding: 6px 10px;
  border: 1px solid transparent !important;
  border-radius: 8px;
  background: transparent !important;
  color: var(--text) !important;
  box-shadow: none;
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  white-space: nowrap;
}

.page-almacen-fisico .ti-more-menu .ti-more-item:hover {
  background: var(--ti-hover-bg) !important;
  border-color: var(--ti-hover-bd) !important;
  box-shadow: none;
}

.page-almacen-fisico .ti-more-item:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-more-item[hidden] {
  display: none;
}

/* Warehouse assignment modal: toolbar, sticky column header, access table (one column per warehouse). */
#tiModal[data-dialog="warehouses"] .vj-modal {
  width: min(760px, calc(100vw - 32px));
  height: min(84dvh, 720px);
}

#tiModal[data-dialog="warehouses"] .vj-modal-body {
  padding: 0;
  gap: 0;
  overflow: hidden;
}

#tiModal .ti-wh-admin {
  --wh-col: 96px;
  --wh-undo: 28px;
  --wh-pad: 20px;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

#tiModal .ti-wh-toolbar {
  position: static;
  padding: 12px var(--wh-pad);
  border-top: 0;
}

#tiModal .ti-wh-toolbar .ti-search-field {
  flex: 1 1 100%;
  max-width: none;
}

#tiModal .ti-wh-admin .ti-fchip[hidden] {
  display: none;
}

#tiModal .ti-fchip.is-wh-changed .pill,
#tiModal .ti-fchip.is-wh-none .pill {
  background: var(--ti-warn-fg);
}

#tiModal .ti-fchip.is-wh-none.is-empty .pill {
  display: none;
}

/* Header and rows share one grid so each warehouse switch sits over its column. */
#tiModal .ti-wh-thead,
#tiModal .ti-wh-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) repeat(var(--wh-cols, 2), var(--wh-col)) var(--wh-undo);
  align-items: center;
  column-gap: 8px;
  padding: 0 var(--wh-pad);
}

#tiModal .ti-wh-thead {
  flex-shrink: 0;
  min-height: 44px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--panel) 60%, var(--bg));
}

#tiModal .ti-wh-th-user {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

#tiModal .ti-wh-th {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  min-width: 0;
  padding: 6px 4px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text);
  font: inherit;
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease;
}

#tiModal .ti-wh-th:hover:not(:disabled) {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

#tiModal .ti-wh-th:disabled {
  opacity: .45;
  cursor: default;
}

#tiModal .ti-wh-th:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

#tiModal .ti-wh-th-name {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  font-weight: 800;
}

#tiModal .ti-wh-bulk-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
}

#tiModal .ti-wh-th[aria-pressed="true"] .ti-wh-bulk-label {
  color: var(--ti-ok-fg);
}

#tiModal .ti-wh-th[aria-pressed="mixed"] .ti-wh-bulk-label {
  color: var(--ti-warn-fg);
}

#tiModal .ti-wh-list {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 8px;
}

#tiModal .ti-wh-row {
  min-height: 52px;
  border-bottom: 1px solid var(--line);
  padding-left: var(--wh-pad);
  transition: background .12s ease, border-color .12s ease;
}

#tiModal .ti-wh-row:hover {
  background: var(--ti-hover-bg);
}

#tiModal .ti-wh-row.is-changed {
  background: var(--ti-warn-bg);
}

#tiModal .ti-wh-user {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

#tiModal .ti-wh-avatar {
  width: 30px;
  height: 30px;
  flex-shrink: 0;
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-selected-bg);
  color: var(--text);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
}

#tiModal .ti-wh-who {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

#tiModal .ti-wh-name {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

#tiModal .ti-wh-name strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13.5px;
}

#tiModal .ti-wh-role {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  color: var(--muted);
}

#tiModal .ti-wh-role:empty {
  display: none;
}

/* Role without any tool_inventory permission: the assignment is stored but has no effect yet. */
#tiModal .ti-wh-flag {
  flex-shrink: 0;
  padding: 1px 6px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--ti-selected-bg);
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 700;
  white-space: nowrap;
  cursor: help;
}

#tiModal .ti-wh-row.is-noperm:not(.is-changed) .ti-wh-avatar,
#tiModal .ti-wh-row.is-noperm:not(.is-changed) .ti-wh-name strong,
#tiModal .ti-wh-row.is-admin .ti-wh-avatar,
#tiModal .ti-wh-row.is-admin .ti-wh-name strong {
  color: var(--muted);
}

#tiModal .ti-wh-row.is-admin .ti-wh-avatar {
  background: transparent;
}

/* Access switch: square check box centered in its column. */
#tiModal .ti-wh-cell {
  justify-self: center;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--panel);
  color: transparent;
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease, color .12s ease;
}

#tiModal button.ti-wh-cell:hover {
  border-color: var(--ti-ok-bd);
  color: var(--ti-ok-bd);
}

#tiModal .ti-wh-cell[aria-pressed="true"],
#tiModal .ti-wh-th[aria-pressed="true"] .ti-wh-cell {
  border-color: var(--ti-ok-bd);
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

#tiModal .ti-wh-th[aria-pressed="mixed"] .ti-wh-cell {
  border-color: var(--ti-hover-bd);
  background: var(--ti-selected-bg);
  color: var(--text);
}

#tiModal .ti-wh-cell:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

#tiModal .ti-wh-cell.is-locked {
  border-style: dashed;
  background: transparent;
  color: var(--muted);
  cursor: default;
}

/* Per-row undo keeps its slot so columns stay aligned; only visible on changed rows. */
#tiModal .ti-wh-undo,
#tiModal .ti-wh-undo-slot {
  width: var(--wh-undo);
  height: var(--wh-undo);
}

#tiModal .ti-wh-undo {
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--ti-warn-fg);
  cursor: pointer;
  visibility: hidden;
  transition: background .12s ease, border-color .12s ease;
}

#tiModal .ti-wh-row.is-changed .ti-wh-undo {
  visibility: visible;
}

#tiModal .ti-wh-undo:hover {
  border-color: var(--ti-warn-bd);
  background: var(--panel);
}

#tiModal .ti-wh-undo:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

#tiModal .ti-wh-list > .ti-modal-empty {
  margin: 24px var(--wh-pad);
}

@media (max-width: 640px) {
  #tiModal[data-dialog="warehouses"] .vj-modal {
    width: 100vw;
    height: var(--vj-vvh, 100dvh);
    border: 0;
    border-radius: 0;
  }

  #tiModal .ti-wh-admin {
    --wh-col: 64px;
    --wh-pad: 12px;
  }

  #tiModal .ti-wh-toolbar .ti-fchips {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
  }

  #tiModal .ti-wh-avatar {
    display: none;
  }

  #tiModal .ti-wh-cell {
    width: 30px;
    height: 30px;
  }
}

/* =============================================
   TOOLBAR
   ============================================= */

.page-almacen-fisico .ti-toolbar {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--panel) 60%, var(--bg));
}

.page-almacen-fisico .ti-toolbar-title {
  font-size: 13px;
  font-weight: 800;
  color: var(--text);
}

.page-almacen-fisico .ti-toolbar-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}

.page-almacen-fisico .ti-toolbar-filters {
  justify-content: flex-start;
  flex-wrap: wrap;
}

.page-almacen-fisico .ti-toolbar-sep {
  width: 1px;
  height: 20px;
  background: var(--line);
  flex-shrink: 0;
}

.page-almacen-fisico .ti-toolbar-selects {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
  margin-left: auto;
  min-width: 0;
}

.page-almacen-fisico .ti-toolbar .ti-hdr-search,
.page-almacen-fisico .ti-toolbar .ti-hdr-select {
  height: 32px;
  border: 1px solid var(--hc-border);
  border-radius: 8px;
  background-color: var(--hc-bg);
  color: var(--hc-fg);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  transition: background-color .15s ease, border-color .15s ease;
}

.page-almacen-fisico .ti-toolbar .ti-hdr-search {
  width: min(320px, 36vw);
}

.page-almacen-fisico .ti-toolbar .ti-hdr-select {
  padding: 0 10px;
}

.page-almacen-fisico .ti-toolbar .ti-hdr-search:hover,
.page-almacen-fisico .ti-toolbar .ti-hdr-select:not(:disabled):hover {
  background-color: var(--hc-hover);
  border-color: var(--ti-hover-bd);
}

.page-almacen-fisico .ti-toolbar .ti-hdr-select:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-toolbar .btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.page-almacen-fisico .ti-toolbar .btn[hidden] {
  display: none;
}

.page-almacen-fisico .ti-result-count {
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

/* =============================================
   KPI CARDS (dashboard .kpi-row look, clickable filters)
   ============================================= */

.page-almacen-fisico {
  --grid: var(--line);
  --row-bg: color-mix(in srgb, var(--panel) 70%, var(--bg));
}

:root[data-theme="light"] .page-almacen-fisico {
  --grid: #d7dee8;
  --row-bg: #f5f7fb;
}

.ti-picon {
  display: inline-block;
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  background-color: currentColor;
  -webkit-mask: var(--ico) center / contain no-repeat;
  mask: var(--ico) center / contain no-repeat;
}

.page-almacen-fisico .ti-kpi-row {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin: 0 0 12px;
}

.page-almacen-fisico .ti-kpi-row[hidden] {
  display: none;
}

.page-almacen-fisico .ti-kpi-row > .kpi.ti-kpi {
  width: 100%;
  min-width: 0;
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: default;
  animation: none;
  transform: none;
  box-shadow: none;
  transition: background-color .15s ease, border-color .15s ease;
}

.page-almacen-fisico .ti-kpi-row > div.kpi.ti-kpi:hover {
  transform: none;
  box-shadow: none;
}

.page-almacen-fisico .ti-kpi-row > button.kpi.ti-kpi:not(:disabled) {
  cursor: pointer;
}

.page-almacen-fisico .ti-kpi-row > button.kpi.ti-kpi:not(:disabled):hover {
  transform: none;
  box-shadow: none;
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

:root[data-theme="light"] .page-almacen-fisico .ti-kpi-row > button.kpi.ti-kpi:not(:disabled):hover {
  box-shadow: none;
  background: #f8fafc;
}

.page-almacen-fisico .ti-kpi-row > .kpi.ti-kpi:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-kpi .kpi-ico {
  color: var(--text);
  opacity: .92;
}

.page-almacen-fisico .ti-kpi .kpi-body {
  display: flex;
  flex-direction: column;
}

.page-almacen-fisico .ti-kpi .kpi-label,
.page-almacen-fisico .ti-kpi .kpi-sub {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.page-almacen-fisico .ti-kpi .kpi-value {
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-kpi .kpi-value .ti-sk {
  height: 16px;
  margin: 2px 0 1px;
}

.page-almacen-fisico .ti-kpi .kpi-sub .ti-sk {
  height: 10px;
  margin-top: 3px;
}

.page-almacen-fisico .ti-kpi-row--4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
@media (max-width: 1100px) {
  .page-almacen-fisico .ti-kpi-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .page-almacen-fisico .ti-kpi-row--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
  .page-almacen-fisico .ti-kpi-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* =============================================
   MAIN TABLE
   ============================================= */

.page-almacen-fisico .ti-table-wrap {
  width: 100%;
  overflow: auto;
}

.page-almacen-fisico .ti-table {
  width: 100%;
  border-collapse: collapse;
}

.page-almacen-fisico .ti-table--main {
  min-width: 1220px;
}

/* Money (unit price / inventory value): amount in the view currency, original underneath when converted */
.page-almacen-fisico .ti-money {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.page-almacen-fisico .ti-money-orig {
  color: var(--muted);
  font-size: 11px;
  font-weight: 500;
}

.page-almacen-fisico .ti-price-cell,
.page-almacen-fisico .ti-card-price {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  max-width: 100%;
}

.page-almacen-fisico .ti-price-trend {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 6px;
  border: 1px solid var(--ti-info-bd);
  border-radius: 8px;
  background: var(--ti-info-bg);
  color: var(--ti-info-fg);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.page-almacen-fisico button.ti-price-trend {
  cursor: pointer;
}

.page-almacen-fisico button.ti-price-trend:hover {
  border-color: currentColor;
}

.page-almacen-fisico .ti-price-trend:focus-visible {
  outline: 2px solid var(--ti-selected-bd);
  outline-offset: 2px;
}

.page-almacen-fisico .ti-price-trend.is-up {
  border-color: var(--ti-err-bd);
  background: var(--ti-err-bg);
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-price-trend.is-down {
  border-color: var(--ti-ok-bd);
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-price-trend svg {
  display: block;
  flex: 0 0 auto;
}

#tiModal .ti-price-last {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
}

/* Exchange rate chip in the toolbar (click refreshes) */
.page-almacen-fisico .ti-toolbar-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  min-width: 0;
  margin-left: auto;
}

.page-almacen-fisico .ti-toolbar-actions > * {
  flex-shrink: 0;
  white-space: nowrap;
}

/* Currency view + exchange rate: one control with a shared border */
.page-almacen-fisico .ti-money-ctl {
  display: inline-flex;
  align-items: stretch;
  height: 32px;
  border: 1px solid var(--hc-border);
  border-radius: 8px;
  background: var(--hc-bg);
  overflow: hidden;
}

.page-almacen-fisico .ti-cur-toggle button,
.page-almacen-fisico .ti-fx-btn {
  border: 0;
  background: transparent;
  color: var(--hc-fg);
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease;
}

.page-almacen-fisico .ti-cur-toggle {
  display: inline-flex;
  gap: 2px;
  padding: 2px;
}

.page-almacen-fisico .ti-cur-toggle button {
  padding: 0 10px;
  border: 1px solid transparent;
  border-radius: 6px;
  color: var(--muted);
}

.page-almacen-fisico .ti-cur-toggle button[aria-pressed="true"] {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
  color: var(--text);
}

.page-almacen-fisico .ti-fx-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 10px;
  border-left: 1px solid var(--line);
  color: var(--muted);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.page-almacen-fisico .ti-fx-btn .ti-picon {
  width: 12px;
  height: 12px;
  opacity: .8;
}

.page-almacen-fisico .ti-cur-toggle button[aria-pressed="false"]:hover,
.page-almacen-fisico .ti-fx-btn:not(:disabled):hover {
  background: var(--hc-hover);
}

.page-almacen-fisico .ti-cur-toggle button:focus-visible,
.page-almacen-fisico .ti-fx-btn:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-fx-btn.is-warn {
  background: var(--ti-warn-bg);
  color: var(--ti-warn-fg);
}

@media (max-width: 680px) {
  .page-almacen-fisico .ti-fx-btn [data-fx-label] {
    display: none;
  }
}

.page-almacen-fisico .ti-fx-btn.is-busy .ti-picon {
  animation: ti-fx-spin .8s linear infinite;
}

@keyframes ti-fx-spin {
  to { transform: rotate(360deg); }
}

.page-almacen-fisico .ti-card-value {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin-top: 4px;
  color: var(--muted);
  font-size: 11.5px;
}

.page-almacen-fisico .ti-card-value .ti-money {
  color: var(--text);
  font-weight: 600;
}

#tiModal .ti-value-preview {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 8px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}

#tiModal .ti-vp-main,
#tiModal .ti-vp-detail {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 4px 12px;
  flex-wrap: wrap;
}

#tiModal .ti-vp-label {
  color: var(--muted);
  font-weight: 600;
}

#tiModal .ti-vp-amount {
  color: var(--text);
  font-size: 15px;
  font-weight: 700;
}

#tiModal .ti-vp-detail {
  color: var(--muted);
  font-size: 11.5px;
}

#tiModal .ti-value-preview:empty {
  display: none;
}

.page-almacen-fisico .ti-table th.ti-num,
.page-almacen-fisico .ti-table td.ti-num {
  text-align: right;
}

.page-almacen-fisico .ti-table--main .ti-desc {
  white-space: normal;
  min-width: 190px;
  max-width: 420px;
  line-height: 1.35;
}

.page-almacen-fisico .ti-table--main tr.is-inactive td {
  color: var(--muted);
}

.page-almacen-fisico .ti-table--main tr.is-inactive .ti-la {
  color: var(--muted);
  text-decoration: line-through;
  text-decoration-color: color-mix(in srgb, var(--muted) 60%, transparent);
}

/* Sortable headers */
.page-almacen-fisico .ti-sort {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  cursor: pointer;
}

.page-almacen-fisico .ti-sort::after {
  content: "";
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid currentColor;
  opacity: 0;
  transition: opacity .12s ease, transform .12s ease;
}

.page-almacen-fisico .ti-sort:hover::after {
  opacity: .4;
}

.page-almacen-fisico th.is-sorted .ti-sort {
  color: var(--text);
}

.page-almacen-fisico th.is-sorted .ti-sort::after {
  opacity: .9;
  transform: rotate(180deg);
}

.page-almacen-fisico th.is-sorted.is-desc .ti-sort::after {
  transform: none;
}

.page-almacen-fisico .ti-sort:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
  border-radius: 4px;
}

/* Stock with level meter */
.page-almacen-fisico .ti-stock {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  min-width: 56px;
}

.page-almacen-fisico .ti-meter {
  display: block;
  width: 56px;
  height: 4px;
  border-radius: 2px;
  background: color-mix(in srgb, var(--line) 80%, transparent);
  overflow: hidden;
}

.page-almacen-fisico .ti-meter > span {
  display: block;
  height: 100%;
  border-radius: 2px;
  background: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-meter.is-low > span { background: var(--ti-warn-fg); }
.page-almacen-fisico .ti-meter.is-out > span { background: var(--ti-err-fg); }
.page-almacen-fisico .ti-meter.is-off > span { background: var(--muted); }

.page-almacen-fisico .ti-order {
  color: var(--ti-warn-fg);
}

/* Skeleton rows */
.page-almacen-fisico .ti-sk {
  display: block;
  height: 12px;
  max-width: 100%;
  border-radius: 6px;
  background: linear-gradient(90deg, var(--sk-base, var(--line)) 0%, var(--sk-hi, var(--panel)) 50%, var(--sk-base, var(--line)) 100%);
  background-size: 200% 100%;
  animation: ti-sk-shimmer 1.3s ease-in-out infinite;
}

.page-almacen-fisico .ti-table tbody tr.ti-sk-row:hover {
  background: transparent;
}

@keyframes ti-sk-shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}

@media (prefers-reduced-motion: reduce) {
  .page-almacen-fisico .ti-sk,
  .page-almacen-fisico .ti-spinner {
    animation: none;
  }
}

/* Row/card of the material just saved: starts in the success tone and fades back to its normal background. */
@keyframes ti-saved-flash {
  from {
    background-color: var(--ti-ok-bg);
    border-color: var(--ti-ok-bd);
  }
}

.page-almacen-fisico .ti-table--main tbody tr.is-saved-flash td,
.page-almacen-fisico .ti-card.is-saved-flash {
  animation: ti-saved-flash 2.4s ease-in 0.15s both;
}

@media (prefers-reduced-motion: reduce) {
  .page-almacen-fisico .ti-table--main tbody tr.is-saved-flash td,
  .page-almacen-fisico .ti-card.is-saved-flash {
    animation-timing-function: steps(1, end);
  }
}

.page-almacen-fisico .ti-table th,
.page-almacen-fisico .ti-table td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  white-space: nowrap;
  font-size: 13px;
}

.page-almacen-fisico .ti-table th {
  position: sticky;
  top: 0;
  z-index: 2;
  font-size: 10.5px;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: color-mix(in srgb, var(--panel) 85%, var(--bg));
  backdrop-filter: blur(4px);
  border-bottom: 1px solid var(--line);
}

.page-almacen-fisico .ti-table tbody tr {
  transition: background .1s ease;
}

.page-almacen-fisico .ti-table tbody tr:hover {
  background: var(--ti-row-hover);
}

.page-almacen-fisico .ti-table tbody tr:last-child td {
  border-bottom: 0;
}

.page-almacen-fisico .ti-table td strong {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-la {
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  color: var(--text);
  letter-spacing: 0.01em;
}

.page-almacen-fisico .ti-loc {
  display: inline-block;
  font: 700 11px ui-monospace, Consolas, monospace;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--ti-tint-bg);
  color: var(--muted);
  letter-spacing: 0.02em;
}

/* Grid tables (main table, requisitions list): same look as the solicitudes grid (.vj-grid-host) */
.page-almacen-fisico .ti-table-wrap.vj-grid-host {
  background: var(--vj-wrap-bg);
}

.page-almacen-fisico .vj-grid-host .ti-table--grid {
  background: var(--vj-wrap-bg);
  color: var(--text);
}

.page-almacen-fisico .vj-grid-host .ti-table--grid th,
.page-almacen-fisico .vj-grid-host .ti-table--grid td {
  border-color: var(--vj-border);
  border-style: solid;
  border-width: 0 1px 1px 0;
  padding: 8px 10px;
  font-size: 13px;
  vertical-align: middle;
}

.page-almacen-fisico .vj-grid-host .ti-table--grid th:last-child,
.page-almacen-fisico .vj-grid-host .ti-table--grid td:last-child {
  border-right-width: 0;
}

.page-almacen-fisico .vj-grid-host .ti-table--grid th {
  z-index: 6;
  background: var(--vj-th-bg);
  color: var(--vj-th-fg);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .10em;
  line-height: 1.15;
  text-align: center;
  text-transform: uppercase;
  backdrop-filter: none;
  user-select: none;
}

.page-almacen-fisico .vj-grid-host .ti-table--grid th:has(.ti-sort):hover {
  background: color-mix(in srgb, var(--vj-th-bg) 86%, var(--text) 8%);
}

.page-almacen-fisico .vj-grid-host .ti-table--grid th .ti-sort {
  justify-content: center;
}

.page-almacen-fisico .vj-grid-host .ti-table--grid th.is-sorted .ti-sort {
  color: var(--vj-th-fg);
}

.page-almacen-fisico .vj-grid-host .ti-table--grid tbody td {
  background: var(--vj-row-odd);
}

.page-almacen-fisico .vj-grid-host .ti-table--grid tbody tr:nth-child(even) td {
  background: var(--vj-row-even);
}

.page-almacen-fisico .vj-grid-host .ti-table--grid tbody tr:hover {
  background: transparent;
}

.page-almacen-fisico .vj-grid-host .ti-table--grid tbody tr:not(.ti-sk-row):hover td {
  background: var(--vj-row-hover);
}

.page-almacen-fisico .vj-grid-host .ti-table--grid tbody tr:last-child td {
  border-bottom-width: 0;
}

.page-almacen-fisico .vj-grid-host .ti-table--grid td.ti-actions {
  display: table-cell;
  text-align: center;
  white-space: nowrap;
}

.page-almacen-fisico .vj-grid-host .ti-table--grid td.ti-actions .ti-icon-btn + .ti-icon-btn {
  margin-left: 4px;
}

/* =============================================
   STATE BADGE
   ============================================= */

.page-almacen-fisico .ti-state {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: 8px;
  border: 1px solid var(--line);
  padding: 3px 9px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
  white-space: nowrap;
  background: color-mix(in srgb, var(--panel) 70%, var(--bg));
}

.page-almacen-fisico .ti-state .pill {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}

.page-almacen-fisico .ti-state.suficiente,
.page-almacen-fisico .ti-state.ok {
  background: var(--ti-ok-bg);
  border-color: var(--ti-ok-bd);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-state.requiere_reposicion,
.page-almacen-fisico .ti-req-pending {
  background: var(--ti-warn-bg);
  border-color: var(--ti-warn-bd);
  color: var(--ti-warn-fg);
}

.page-almacen-fisico .ti-state.sin_existencia {
  background: var(--ti-err-bg);
  border-color: var(--ti-err-bd);
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-state.inactiva {
  color: var(--muted);
}

/* =============================================
   ROW ACTIONS (icon buttons)
   ============================================= */

.page-almacen-fisico .ti-actions {
  display: flex;
  gap: 4px;
  justify-content: flex-end;
}

.page-almacen-fisico .ti-actions-head {
  width: 1%;
}

.page-almacen-fisico .ti-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease, color .12s ease;
}

.page-almacen-fisico .ti-icon-btn:hover {
  color: var(--text);
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-icon-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-icon-btn.danger:hover {
  color: var(--ti-err-fg);
  border-color: var(--ti-err-bd);
  background: var(--ti-err-bg);
}

/* =============================================
   PANEL STATES (empty / no results / error)
   ============================================= */

.page-almacen-fisico .ti-panel-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 56px 20px 64px;
  text-align: center;
  font-size: 13.5px;
}

.page-almacen-fisico .ti-panel-state[hidden],
.page-almacen-fisico .ti-table-wrap[hidden] {
  display: none;
}

.page-almacen-fisico .ti-state-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  margin-bottom: 4px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--ti-tint-bg);
  color: var(--muted);
}

.page-almacen-fisico .ti-state-icon.is-err {
  border-color: var(--ti-err-bd);
  background: var(--ti-err-bg);
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-state-title {
  margin: 0;
  font-size: 15px;
  font-weight: 800;
  color: var(--text);
}

.page-almacen-fisico .ti-state-text {
  margin: 0;
  max-width: 460px;
  color: var(--muted);
  line-height: 1.5;
}

.page-almacen-fisico .ti-state-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: 8px;
}

/* =============================================
   MODAL SHELL
   ============================================= */

#tiModal {
  --ti-modal-body-bg: color-mix(in srgb, var(--panel) 72%, var(--bg));
  --ti-input-bg: color-mix(in srgb, var(--bg) 70%, var(--panel));
}

[data-theme="light"] #tiModal {
  --ti-modal-body-bg: color-mix(in srgb, var(--panel) 55%, var(--bg-2));
  --ti-input-bg: #ffffff;
}

#tiModal.vj-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(6, 8, 12, 0.58);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  z-index: 119990;
  box-sizing: border-box;
}

#tiModal.vj-modal-backdrop[hidden] {
  display: none !important;
}

#tiModal .vj-modal {
  width: min(720px, calc(100vw - 32px));
  height: auto;
  min-height: 0;
  max-height: min(92dvh, 900px);
  display: flex;
  flex-direction: column;
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: none;
  overflow: hidden;
  box-sizing: border-box;
}

/* Sizes per dialog: forms grow with content, tables get a fixed frame */
#tiModal[data-dialog="item"] .vj-modal {
  width: min(820px, calc(100vw - 32px));
}

#tiModal[data-dialog="movement"] .vj-modal,
#tiModal[data-dialog="request"] .vj-modal {
  width: min(760px, calc(100vw - 32px));
}

#tiModal[data-dialog="classes"] .vj-modal {
  width: min(520px, calc(100vw - 32px));
}

#tiModal[data-dialog="history"] .vj-modal,
#tiModal[data-dialog="requests"] .vj-modal {
  width: min(1100px, calc(100vw - 32px));
  height: min(86dvh, 820px);
}

/* Racks is a master-detail workspace: use nearly the whole iframe viewport */
#tiModal[data-dialog="racks"].vj-modal-backdrop {
  padding: 16px;
}

#tiModal[data-dialog="racks"] .vj-modal {
  width: min(1360px, calc(100vw - 32px));
  height: min(calc(var(--vj-vvh, 100dvh) - 32px), 980px);
  max-height: none;
}

@media (max-width: 1024px) {
  #tiModal[data-dialog="racks"].vj-modal-backdrop {
    padding: 0;
    align-items: stretch;
  }

  #tiModal[data-dialog="racks"] .vj-modal {
    width: 100vw;
    height: var(--vj-vvh, 100dvh);
    border: 0;
    border-radius: 0;
  }
}

#tiModal[data-dialog="racks"] .vj-modal-body {
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

#tiModal[data-dialog="history"] .vj-modal-body,
#tiModal[data-dialog="requests"] .vj-modal-body {
  padding: 16px 20px;
}

/* Header */
#tiModal .vj-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 60px;
  padding: 12px 14px 12px 20px;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
}

#tiModal .ti-modal-head-left {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  flex: 1;
}

#tiModal .ti-modal-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--ti-tint-bg);
  color: var(--text);
}

#tiModal .ti-modal-titles {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

#tiModal .ti-modal-title,
#tiModal #tiModalTitle {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--text);
  letter-spacing: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#tiModal .ti-modal-sub {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.35;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#tiModal .ti-modal-sub[hidden] {
  display: none;
}

#tiModal .vj-modal-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 8px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  padding: 0;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
  flex-shrink: 0;
}

#tiModal .vj-modal-close:hover {
  background: color-mix(in srgb, var(--text) 7%, transparent);
  border-color: var(--line);
  color: var(--text);
}

#tiModal .vj-modal-close:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* Body */
#tiModal .vj-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: var(--ti-modal-body-bg);
}

#tiModal .ti-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 0;
}

/* Section cards */
#tiModal .section.ti-modal-section {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 16px 18px;
  box-shadow: none;
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 0;
}

#tiModal .ti-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding-bottom: 10px;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}

#tiModal .ti-section-title {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

#tiModal .ti-section-hint {
  font-size: 12px;
  color: var(--muted);
}

/* Table card fills the modal */
#tiModal .section.ti-table-card {
  flex: 1 1 auto;
  min-height: 0;
  padding: 0;
  gap: 0;
  overflow: hidden;
}

#tiModal .section.ti-table-card .ti-modal-table {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  border: none;
  border-radius: 0;
  margin: 0;
}

#tiModal .section.ti-table-card .ti-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
}

/* Footer */
#tiModal .vj-modal-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  padding: 12px 20px;
  background: var(--panel);
  border-top: 1px solid var(--line);
  flex-shrink: 0;
}

#tiModal .vj-modal-actions .btn {
  min-height: 38px;
  padding: 8px 16px;
  font-size: 13.5px;
  font-weight: 600;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
}

#tiModal .vj-modal-actions .btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* Busy state for submit buttons */
.page-almacen-fisico .btn.is-busy {
  position: relative;
  cursor: progress;
}

.page-almacen-fisico .btn.is-busy > svg {
  visibility: hidden;
}

.page-almacen-fisico .btn.is-busy::before {
  content: "";
  position: absolute;
  left: 16px;
  top: 50%;
  width: 14px;
  height: 14px;
  margin-top: -7px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: ti-spin .7s linear infinite;
}

.page-almacen-fisico .btn.sm.is-busy::before {
  left: 10px;
  width: 11px;
  height: 11px;
  margin-top: -5.5px;
}

/* Fields */
.page-almacen-fisico .vj-modal .grid-2,
.page-almacen-fisico .vj-modal .grid-3 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 16px;
}

.page-almacen-fisico .vj-modal .grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.page-almacen-fisico .vj-modal .fld {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
  min-width: 0;
}

.page-almacen-fisico .vj-modal .fld .k {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
}

.page-almacen-fisico .ti-req {
  margin-left: 3px;
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-hint {
  font-size: 11.5px;
  line-height: 1.4;
  color: var(--muted);
}

.page-almacen-fisico .ti-hint:empty {
  display: none;
}

.page-almacen-fisico .ti-field-err {
  font-size: 12px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-field-err[hidden] {
  display: none;
}

.page-almacen-fisico .vj-modal .fld input,
.page-almacen-fisico .vj-modal .fld select,
.page-almacen-fisico .vj-modal .fld textarea,
.page-almacen-fisico .vj-modal .ti-drawers-input {
  min-height: 40px;
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-input-bg);
  color: var(--text);
  font: inherit;
  font-size: 13.5px;
  box-sizing: border-box;
  transition: border-color .15s ease, box-shadow .15s ease;
}

.page-almacen-fisico .vj-modal .fld textarea {
  min-height: 68px;
  resize: vertical;
  line-height: 1.45;
}

.page-almacen-fisico .vj-modal .fld input::placeholder,
.page-almacen-fisico .vj-modal .fld textarea::placeholder {
  color: color-mix(in srgb, var(--muted) 75%, transparent);
}

.page-almacen-fisico .vj-modal .fld input:hover:not(:disabled):not(:focus),
.page-almacen-fisico .vj-modal .fld select:hover:not(:disabled):not(:focus),
.page-almacen-fisico .vj-modal .fld textarea:hover:not(:disabled):not(:focus) {
  border-color: color-mix(in srgb, var(--text) 28%, var(--line));
}

.page-almacen-fisico .vj-modal .fld input:focus,
.page-almacen-fisico .vj-modal .fld select:focus,
.page-almacen-fisico .vj-modal .fld textarea:focus {
  outline: none;
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .vj-modal .fld input:focus-visible,
.page-almacen-fisico .vj-modal .fld select:focus-visible,
.page-almacen-fisico .vj-modal .fld textarea:focus-visible {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .vj-modal .fld [aria-invalid="true"] {
  border-color: var(--ti-err-fg);
}

.page-almacen-fisico .vj-modal .fld input:disabled,
.page-almacen-fisico .vj-modal .fld select:disabled,
.page-almacen-fisico .vj-modal .fld textarea:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.page-almacen-fisico .vj-modal .ti-mono {
  font-family: ui-monospace, Consolas, monospace !important;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.page-almacen-fisico .ti-form-gap {
  margin-top: 0;
}

.page-almacen-fisico .ti-empty-line {
  margin: 28px 0;
  text-align: center;
  color: var(--muted);
  font-size: 13.5px;
}

.page-almacen-fisico .ti-error {
  color: var(--ti-err-fg);
  background: var(--ti-err-bg);
  border: 1px solid var(--ti-err-bd);
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 13px;
  line-height: 1.5;
}

/* Empty block inside modals */
.page-almacen-fisico .ti-modal-empty {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 48px 20px;
  text-align: center;
}

/* Shared search field (modal toolbars, racks sidebar) */
.page-almacen-fisico .ti-search-field {
  position: relative;
  display: flex;
  align-items: center;
  flex: 0 1 300px;
  min-width: 0;
  color: var(--muted);
}

.page-almacen-fisico .ti-search-field > svg {
  position: absolute;
  left: 10px;
  pointer-events: none;
}

.page-almacen-fisico .ti-search-field input {
  width: 100%;
  min-height: 34px;
  padding: 6px 10px 6px 31px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-input-bg);
  color: var(--text);
  font: inherit;
  font-size: 12.5px;
  box-sizing: border-box;
}

.page-almacen-fisico .ti-search-field input:focus {
  outline: none;
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .ti-search-field input:focus-visible {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* =============================================
   RACKS MASTER-DETAIL WORKSPACE
   ============================================= */

.page-almacen-fisico .ti-racks-workspace {
  display: flex;
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  overflow: hidden;
  background: var(--panel);
}

/* Sidebar (Master List) */
.page-almacen-fisico .ti-racks-sidebar {
  width: 300px;
  min-width: 270px;
  max-width: 340px;
  border-right: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  background: var(--panel);
  flex-shrink: 0;
}

.page-almacen-fisico .ti-racks-sidebar-head {
  padding: 14px 16px 12px;
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex-shrink: 0;
  background: var(--panel);
}

.page-almacen-fisico .ti-racks-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.page-almacen-fisico .ti-racks-count-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
}

.page-almacen-fisico .ti-racks-count-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 7px;
  border-radius: 6px;
  font: 800 11px ui-monospace, Consolas, monospace;
  background: var(--ti-tint-bg);
  color: var(--text);
  border: 1px solid var(--line);
}

.page-almacen-fisico .ti-racks-sidebar-heading {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--text);
}

.page-almacen-fisico .ti-add-rack-nav-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  padding: 5px 10px;
  border-radius: 6px;
  border: 1px dashed var(--ti-hover-bd);
  background: var(--ti-tint-bg);
  color: var(--text);
  cursor: pointer;
  transition: all .15s ease;
}

.page-almacen-fisico .ti-add-rack-nav-btn:hover {
  background: var(--ti-hover-bg);
  border-color: var(--ti-hover-bd);
}

.page-almacen-fisico .ti-racks-sidebar .ti-search-field {
  flex: none;
  width: 100%;
}

.page-almacen-fisico .ti-racks-nav {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.page-almacen-fisico .ti-nav-empty {
  padding: 24px 12px;
  text-align: center;
  font-size: 12.5px;
}

.page-almacen-fisico .ti-rack-nav-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  padding: 9px 12px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: color-mix(in srgb, var(--panel) 85%, var(--bg));
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease;
  user-select: none;
}

.page-almacen-fisico .ti-rack-nav-item:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-rack-nav-item.is-invalid {
  border-color: var(--ti-err-bd);
}

.page-almacen-fisico .ti-rack-nav-item:hover {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-rack-nav-item.is-active {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-nav-item-info {
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
}

.page-almacen-fisico .ti-nav-item-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.page-almacen-fisico .ti-nav-item-sub {
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.page-almacen-fisico .ti-nav-item-badge {
  font: 700 11px ui-monospace, Consolas, monospace;
  color: var(--muted);
  padding: 2px 7px;
  border-radius: 6px;
  background: color-mix(in srgb, var(--panel) 50%, var(--bg));
  border: 1px solid var(--line);
  flex-shrink: 0;
}

/* Detail Area */
.page-almacen-fisico .ti-racks-detail {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--ti-modal-body-bg);
}

.page-almacen-fisico .ti-rack-detail-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 20px 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.page-almacen-fisico .ti-racks-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  gap: 14px;
  text-align: center;
}

/* Detail Hero */
.page-almacen-fisico .ti-detail-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding-bottom: 2px;
}

.page-almacen-fisico .ti-detail-hero-left {
  display: flex;
  align-items: center;
  gap: 14px;
}

.page-almacen-fisico .ti-detail-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 52px;
  height: 44px;
  padding: 0 12px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--ti-tint-bg);
  font: 800 17px ui-monospace, Consolas, monospace;
  color: var(--text);
  letter-spacing: 0.04em;
}

.page-almacen-fisico .ti-detail-titles {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.page-almacen-fisico .ti-detail-title {
  margin: 0;
  font-size: 16px;
  font-weight: 800;
  color: var(--text);
}

.page-almacen-fisico .ti-detail-meta {
  font-size: 12px;
  color: var(--muted);
}

.page-almacen-fisico .ti-detail-hero-left {
  min-width: 0;
}

.page-almacen-fisico .ti-detail-titles {
  min-width: 0;
  gap: 6px;
}

.page-almacen-fisico .ti-rack-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.page-almacen-fisico .ti-rchip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
}

.page-almacen-fisico .ti-rchip .ti-nav-occ-bar {
  flex: none;
  width: 36px;
}

/* Detail header: rack identity + folder tabs, fixed above the scrolling content */
.page-almacen-fisico .ti-rack-detail-head {
  flex: none;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px 24px 0;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
}

.page-almacen-fisico .ti-rack-detail-head .ti-detail-hero {
  flex-wrap: nowrap;
  padding: 0;
}

.page-almacen-fisico .ti-rack-detail-head .ti-detail-hero-left {
  flex: 1 1 auto;
  min-width: 0;
}

.page-almacen-fisico .ti-rack-detail-head .ti-detail-badge {
  flex: none;
  max-width: 180px;
  overflow: hidden;
}

.page-almacen-fisico .ti-rack-detail-head .ti-detail-badge-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rack-detail-head .ti-detail-titles {
  flex: 1 1 auto;
  gap: 6px;
}

.page-almacen-fisico .ti-rack-detail-head .ti-detail-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.25;
}

/* Folder tabs: the active tab opens into the content area below */
.page-almacen-fisico .ti-rtabs {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  margin-bottom: -1px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}

.page-almacen-fisico .ti-rtabs::-webkit-scrollbar {
  display: none;
}

.page-almacen-fisico .ti-rtab {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 38px;
  padding: 9px 16px;
  border: 1px solid transparent;
  border-bottom: 0;
  border-radius: 8px 8px 0 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
  transition: color .12s ease, border-color .12s ease, background .12s ease;
}

.page-almacen-fisico .ti-rtab:hover:not([aria-selected="true"]) {
  color: var(--text);
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-rtab[aria-selected="true"] {
  z-index: 1;
  color: var(--text);
  background: var(--ti-modal-body-bg);
  border-color: var(--line);
  border-bottom: 1px solid var(--ti-modal-body-bg);
}

.page-almacen-fisico .ti-rtab:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-rack-card[hidden] {
  display: none;
}

/* Configuration tab: settings rows (same pattern as the item form) */
.page-almacen-fisico .ti-rack-cfg {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.page-almacen-fisico .ti-rack-cfg[hidden] {
  display: none;
}

.page-almacen-fisico .ti-rack-cfg .ti-set-label {
  padding: 9px 14px;
}

.page-almacen-fisico .ti-rack-cfg .ti-set-fields {
  gap: 10px;
  padding: 12px 14px;
}

.page-almacen-fisico .ti-rack-detail-scroll {
  container: rackdetail / inline-size;
}

@container rackdetail (min-width: 700px) {
  .page-almacen-fisico .ti-rack-cfg {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
  }

  .page-almacen-fisico .ti-rack-cfg > .ti-set-row:nth-child(n + 3),
  .page-almacen-fisico .ti-rack-cfg > .ti-cfg-danger {
    grid-column: 1 / -1;
  }
}

.page-almacen-fisico .ti-cfg-preview {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  font: 600 12px ui-monospace, Consolas, monospace;
  color: var(--muted);
  overflow-wrap: anywhere;
}

.page-almacen-fisico .ti-cfg-preview > svg {
  flex-shrink: 0;
}

.page-almacen-fisico .ti-cfg-inline {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 10px 16px;
}

.page-almacen-fisico .ti-cfg-total {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  font-size: 13px;
  font-weight: 700;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-cfg-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 12px;
}

.page-almacen-fisico .ti-cfg-sort {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.page-almacen-fisico .ti-cfg-sort:disabled {
  opacity: .45;
  cursor: default;
}

.page-almacen-fisico .ti-preset-btn[aria-pressed="true"] {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-preset-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-cfg-danger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 16px;
  padding: 10px 14px;
  border: 1px solid var(--ti-err-bd);
  border-radius: 12px;
  background: var(--panel);
}

.page-almacen-fisico .ti-cfg-danger .ti-set-copy {
  flex: 1 1 240px;
}

.page-almacen-fisico .ti-cfg-danger .ti-set-title {
  color: var(--err-fg);
}

.page-almacen-fisico .ti-detail-hero-right {
  display: flex;
  align-items: center;
  gap: 10px;
}

/* Config Grid */
.page-almacen-fisico .ti-input-prefix-wrap {
  position: relative;
  display: flex;
  align-items: center;
}

.page-almacen-fisico .ti-input-prefix {
  position: absolute;
  left: 12px;
  font: 800 13px ui-monospace, Consolas, monospace;
  color: var(--muted);
  pointer-events: none;
}

.page-almacen-fisico .ti-input-prefix-wrap input {
  padding-left: 28px !important;
  font-weight: 700;
  font-family: ui-monospace, Consolas, monospace;
}

/* Floor Stepper */
.page-almacen-fisico .ti-stepper {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  background: var(--ti-input-bg);
  height: 40px;
  width: fit-content;
}

.page-almacen-fisico .ti-stepper:focus-within {
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .ti-stepper-btn:focus-visible {
  outline: 2px solid var(--hc-focus);
  outline-offset: -2px;
}

.page-almacen-fisico .ti-stepper-btn {
  width: 36px;
  height: 100%;
  border: none;
  background: color-mix(in srgb, var(--panel) 70%, var(--bg));
  color: var(--text);
  font-size: 16px;
  font-weight: 800;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .12s ease;
  user-select: none;
}

.page-almacen-fisico .ti-stepper-btn:hover {
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-stepper-input {
  width: 60px !important;
  min-height: 0 !important;
  height: 100% !important;
  border: none !important;
  border-radius: 0 !important;
  text-align: center;
  font-weight: 800;
  padding: 0 !important;
  -moz-appearance: textfield;
}

.page-almacen-fisico .ti-stepper-input::-webkit-outer-spin-button,
.page-almacen-fisico .ti-stepper-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Drawers Presets */
.page-almacen-fisico .ti-drawer-presets {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
}

.page-almacen-fisico .ti-preset-label {
  font-size: 10.5px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-right: 2px;
}

.page-almacen-fisico .ti-preset-btn {
  font: 700 11px ui-monospace, Consolas, monospace;
  padding: 2px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  cursor: pointer;
  transition: all .12s ease;
}

.page-almacen-fisico .ti-preset-btn:hover {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
  color: var(--text);
}

/* =============================================
   RESPONSIVE
   ============================================= */

/* =============================================
   RESPONSIVE
   ============================================= */

@media (max-width: 900px) {
  .page-almacen-fisico header.hdr-controls .controls {
    flex-wrap: wrap;
  }

  .page-almacen-fisico .ti-toolbar .ti-hdr-search {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    max-width: none;
  }

  .page-almacen-fisico .ti-toolbar .ti-hdr-select {
    flex: 1 1 calc(33% - 8px);
    max-width: none;
  }
}

@media (max-width: 640px) {
  .page-almacen-fisico .vj-modal .grid-2,
  .page-almacen-fisico .vj-modal .grid-3 {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  .page-almacen-fisico .ti-toolbar-sep {
    display: none;
  }

  .page-almacen-fisico .ti-toolbar-filters .ti-result-count {
    margin-left: auto;
  }

  .page-almacen-fisico .ti-toolbar-selects {
    flex: 1 1 100%;
    justify-content: stretch;
    margin-left: 0;
  }
}

/* =============================================
   READY FLAG
   ============================================= */

.page-almacen-fisico:not(.is-ready) .vj-main {
  opacity: 0;
  pointer-events: none;
}

.page-almacen-fisico.is-ready .vj-main {
  opacity: 1;
  transition: opacity .25s ease;
}

/* =============================================
   TOGGLE (is_active)
   ============================================= */

.page-almacen-fisico .ti-toggle-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.page-almacen-fisico .ti-toggle-wrap input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--accent);
  cursor: pointer;
}

/* =============================================
   MODAL — FORM SECTIONS
   ============================================= */

.page-almacen-fisico .ti-form-section {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 16px 0 10px;
}

.page-almacen-fisico .ti-form-section:first-child {
  margin-top: 0;
}

.page-almacen-fisico .ti-form-section-label {
  font-size: 10.5px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  white-space: nowrap;
}

.page-almacen-fisico .ti-form-section::before,
.page-almacen-fisico .ti-form-section::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--line);
}

/* grid-4 para cantidades */
.page-almacen-fisico .vj-modal .grid-4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

/* Descripcion a ancho completo */
.page-almacen-fisico .vj-modal .ti-desc-row {
  grid-template-columns: 1fr;
  margin-top: 0;
}

.page-almacen-fisico .vj-modal .fld--span2 {
  grid-column: 1 / -1;
}

/* =============================================
   MODAL — SPLIT LAYOUT (item rail + form)
   ============================================= */

.page-almacen-fisico .ti-mv {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* Item summary: identity line + neutral KPIs (+ gauge) */
.page-almacen-fisico .ti-sum {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

.page-almacen-fisico .ti-sum-id {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.page-almacen-fisico .ti-sum-line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}

.page-almacen-fisico .ti-side-la {
  font: 800 16px ui-monospace, Consolas, monospace;
  letter-spacing: 0.01em;
  color: var(--text);
}

.page-almacen-fisico .ti-side-tags {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-left: auto;
}

.page-almacen-fisico .ti-sum-desc {
  margin: 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted);
  overflow-wrap: anywhere;
}

.page-almacen-fisico .ti-ctx-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  background: var(--panel);
}

.page-almacen-fisico .ti-ctx-loc {
  font-family: ui-monospace, Consolas, monospace;
}

.page-almacen-fisico .ti-ctx-loc.is-empty {
  font-family: inherit;
  font-weight: 600;
}

/* Neutral KPI cards inside modals (dashboard .kpi markup) */
#tiModal .ti-mkpis {
  margin: 0;
  gap: 8px;
}

#tiModal .ti-mkpis--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

#tiModal .ti-mkpis > .kpi {
  min-width: 0;
  padding: 9px 11px;
  background: var(--panel);
  animation: none;
  transition: none;
  transform: none;
  box-shadow: none;
}

#tiModal .ti-mkpis > .kpi:hover {
  transform: none;
  box-shadow: none;
}

#tiModal .ti-mkpis .kpi-ico {
  color: var(--text);
  opacity: .92;
}

#tiModal .ti-mkpis .kpi-label,
#tiModal .ti-mkpis .kpi-sub,
#tiModal .ti-mkpis .kpi-value {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#tiModal .ti-mkpis .kpi-value {
  font-size: 17px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

#tiModal .ti-mkpis .kpi-value.ti-kpi-mono {
  margin-top: 6px;
  font: 800 14px ui-monospace, Consolas, monospace;
}

/* Stock gauge */
.page-almacen-fisico .ti-gauge {
  display: flex;
  flex-direction: column;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}

.page-almacen-fisico .ti-gauge-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.page-almacen-fisico .ti-gauge-label {
  font-size: 10.5px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
}

.page-almacen-fisico .ti-gauge-values {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-gauge-from {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
}

.page-almacen-fisico .ti-gauge-arrow {
  font-size: 12px;
  color: var(--muted);
}

.page-almacen-fisico .ti-gauge-from[hidden],
.page-almacen-fisico .ti-gauge-arrow[hidden],
.page-almacen-fisico .ti-gauge-delta[hidden],
.page-almacen-fisico .ti-gauge-note[hidden] {
  display: none;
}

.page-almacen-fisico .ti-gauge-now {
  font-size: 20px;
  font-weight: 800;
  line-height: 1.1;
  color: var(--text);
}


.page-almacen-fisico .ti-gauge-track {
  position: relative;
  height: 8px;
  margin: 12px 0 6px;
  border-radius: 4px;
  background: color-mix(in srgb, var(--line) 75%, transparent);
}

.page-almacen-fisico .ti-gauge-fill,
.page-almacen-fisico .ti-gauge-delta {
  position: absolute;
  top: 0;
  bottom: 0;
  border-radius: 4px;
  transition: width .2s ease, left .2s ease;
}

.page-almacen-fisico .ti-gauge-fill {
  left: 0;
  background: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-gauge-fill[data-level="low"] { background: var(--ti-warn-fg); }
.page-almacen-fisico .ti-gauge-fill[data-level="out"] { background: var(--ti-err-fg); }

.page-almacen-fisico .ti-gauge-delta.is-pos {
  background: color-mix(in srgb, var(--ti-ok-fg) 40%, transparent);
}

.page-almacen-fisico .ti-gauge-delta.is-neg {
  background: repeating-linear-gradient(
    -45deg,
    color-mix(in srgb, var(--ti-err-fg) 55%, transparent) 0 3px,
    color-mix(in srgb, var(--ti-err-fg) 20%, transparent) 3px 6px
  );
}

.page-almacen-fisico .ti-gauge-min {
  position: absolute;
  top: -4px;
  bottom: -4px;
  width: 2px;
  margin-left: -1px;
  border-radius: 1px;
  background: color-mix(in srgb, var(--text) 55%, transparent);
}

.page-almacen-fisico .ti-gauge-scale {
  position: relative;
  display: flex;
  justify-content: space-between;
  gap: 6px;
  font-size: 10.5px;
  font-weight: 600;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-gauge-min-label {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  white-space: nowrap;
}

.page-almacen-fisico .ti-gauge-note {
  margin-top: 10px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--muted);
}

.page-almacen-fisico .ti-gauge-note.is-warn { color: var(--ti-warn-fg); }
.page-almacen-fisico .ti-gauge-note.is-err { color: var(--ti-err-fg); }

/* Form card below the summary */
#tiModal .ti-mv-form {
  gap: 18px;
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}

.page-almacen-fisico .ti-mv-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px 20px;
  align-items: start;
}

.page-almacen-fisico .ti-mv-grid > .ti-banner {
  margin: 0;
}

.page-almacen-fisico .ti-mv-grid .ti-qty-field {
  flex-direction: column;
  align-items: stretch;
}

.page-almacen-fisico .ti-mv-grid .ti-qty {
  width: 100%;
}

.page-almacen-fisico .ti-mv-grid .ti-qty input {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
}

.page-almacen-fisico .ti-step {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  margin: 0;
}

.page-almacen-fisico .ti-step[hidden] {
  display: none;
}

.page-almacen-fisico .ti-step-head {
  display: flex;
  align-items: center;
  gap: 8px;
}

.page-almacen-fisico .ti-step-title {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
}

.page-almacen-fisico .ti-step-head {
  gap: 0;
}

.page-almacen-fisico .ti-step-head .ti-req {
  margin-left: 3px;
}

.page-almacen-fisico .ti-opt-tag {
  margin-left: auto;
  padding: 1px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
}

/* Movement type selector */
.page-almacen-fisico .ti-seg {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.page-almacen-fisico .ti-seg-opt {
  --tone-fg: var(--text);
  --tone-bg: var(--ti-tint-bg);
  --tone-bd: var(--line);
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  min-height: 46px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease;
}

.page-almacen-fisico .ti-seg-opt.is-entrada { --tone-fg: var(--ti-ok-fg); --tone-bg: var(--ti-ok-bg); --tone-bd: var(--ti-ok-bd); }
.page-almacen-fisico .ti-seg-opt.is-salida { --tone-fg: var(--ti-info-fg); --tone-bg: var(--ti-info-bg); --tone-bd: var(--ti-info-bd); }
.page-almacen-fisico .ti-seg-opt.is-ajuste { --tone-fg: var(--ti-warn-fg); --tone-bg: var(--ti-warn-bg); --tone-bd: var(--ti-warn-bd); }
.page-almacen-fisico .ti-seg-opt.is-baja { --tone-fg: var(--ti-err-fg); --tone-bg: var(--ti-err-bg); --tone-bd: var(--ti-err-bd); }

.page-almacen-fisico .ti-seg-opt input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.page-almacen-fisico .ti-seg-opt:hover {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-seg-opt:has(input:checked) {
  border-color: var(--tone-fg);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-seg-opt:has(input:focus-visible) {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-seg-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  color: var(--muted);
}

.page-almacen-fisico .ti-seg-opt:has(input:checked) .ti-seg-ico {
  border-color: var(--tone-bd);
  background: var(--tone-bg);
  color: var(--tone-fg);
}

.page-almacen-fisico .ti-seg-label {
  min-width: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.page-almacen-fisico .ti-seg-opt:has(input:checked) .ti-seg-label {
  color: var(--tone-fg);
}

/* Quantity stepper + quick chips */
.page-almacen-fisico .ti-qty-field {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 12px;
}

.page-almacen-fisico .ti-qty {
  display: inline-flex;
  align-items: stretch;
  height: 44px;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
  background: var(--ti-input-bg);
  transition: border-color .15s ease;
}

.page-almacen-fisico .ti-qty:focus-within {
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .ti-qty:has(input:focus-visible) {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-qty:has([aria-invalid="true"]) {
  border-color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-qty-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  padding: 0;
  border: 0;
  background: var(--ti-tint-bg);
  color: var(--text);
  cursor: pointer;
  transition: background .12s ease;
}

.page-almacen-fisico .ti-qty-btn:hover:not(:disabled) {
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-qty-btn:focus-visible {
  outline: 2px solid var(--hc-focus);
  outline-offset: -2px;
}

.page-almacen-fisico .ti-qty-btn:disabled {
  opacity: .45;
  cursor: not-allowed;
}

.page-almacen-fisico .ti-qty input {
  width: 120px;
  padding: 0 8px;
  border: 0;
  border-left: 1px solid var(--line);
  border-right: 1px solid var(--line);
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 18px;
  font-weight: 700;
  text-align: center;
  font-variant-numeric: tabular-nums;
  -moz-appearance: textfield;
}

.page-almacen-fisico .ti-qty input::-webkit-outer-spin-button,
.page-almacen-fisico .ti-qty input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.page-almacen-fisico .ti-qty input:focus {
  outline: none;
}

.page-almacen-fisico .ti-qty input:disabled {
  cursor: not-allowed;
  opacity: .6;
}

.page-almacen-fisico .ti-quick,
.page-almacen-fisico .ti-reason-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.page-almacen-fisico .ti-quick[hidden],
.page-almacen-fisico .ti-reason-chips:empty {
  display: none;
}

.page-almacen-fisico .ti-quick-chip,
.page-almacen-fisico .ti-reason-chip {
  padding: 5px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease;
}

.page-almacen-fisico .ti-quick-chip:hover,
.page-almacen-fisico .ti-reason-chip:hover {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-reason-chip[aria-pressed="true"] {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-quick-chip:focus-visible,
.page-almacen-fisico .ti-reason-chip:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* Free text area (reason) */
.page-almacen-fisico .ti-textarea {
  width: 100%;
  min-height: 76px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-input-bg);
  color: var(--text);
  font: inherit;
  font-size: 13.5px;
  line-height: 1.45;
  resize: vertical;
  box-sizing: border-box;
  transition: border-color .15s ease;
}

.page-almacen-fisico .ti-textarea::placeholder {
  color: color-mix(in srgb, var(--muted) 75%, transparent);
}

.page-almacen-fisico .ti-textarea:hover:not(:disabled):not(:focus) {
  border-color: color-mix(in srgb, var(--text) 28%, var(--line));
}

.page-almacen-fisico .ti-textarea:focus {
  outline: none;
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .ti-textarea:focus-visible {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-textarea[aria-invalid="true"] {
  border-color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-textarea:disabled {
  opacity: .6;
  cursor: not-allowed;
}

.page-almacen-fisico .ti-link-btn {
  padding: 0;
  border: 0;
  background: none;
  color: var(--text);
  font: inherit;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.page-almacen-fisico .ti-link-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
  border-radius: 3px;
}

.page-almacen-fisico .ti-class-pick,
.page-almacen-fisico .ti-class-create,
.page-almacen-fisico .ti-class-add,
.page-almacen-fisico .ti-class-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.page-almacen-fisico .ti-class-create {
  margin-top: 8px;
}

.page-almacen-fisico .ti-class-create[hidden] {
  display: none;
}

.page-almacen-fisico .ti-class-hint {
  margin: 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--muted);
}

.page-almacen-fisico .ti-class-add {
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}

.page-almacen-fisico .ti-class-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.page-almacen-fisico .ti-class-row {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  background: var(--panel);
}

.page-almacen-fisico .ti-class-row.is-editing {
  padding: 8px;
}

.page-almacen-fisico .ti-class-main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}

.page-almacen-fisico .ti-class-name {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 14px;
  font-weight: 650;
}

.page-almacen-fisico .ti-class-pick select,
.page-almacen-fisico .ti-class-create input,
.page-almacen-fisico .ti-class-add input,
.page-almacen-fisico .ti-class-row input {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
}

.page-almacen-fisico .ti-class-add input,
.page-almacen-fisico .ti-class-row input {
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-input-bg);
  color: var(--text);
  font: inherit;
  font-size: 13.5px;
}

.page-almacen-fisico .ti-class-add input:hover,
.page-almacen-fisico .ti-class-row input:hover {
  border-color: color-mix(in srgb, var(--text) 28%, var(--line));
}

.page-almacen-fisico .ti-class-add input:focus,
.page-almacen-fisico .ti-class-row input:focus {
  outline: none;
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .ti-class-add input:focus-visible,
.page-almacen-fisico .ti-class-row input:focus-visible {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-class-count {
  flex: 0 0 auto;
  padding: 2px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
}

.page-almacen-fisico .ti-class-row .btn,
.page-almacen-fisico .ti-class-add .btn,
.page-almacen-fisico .ti-class-create .btn {
  flex: 0 0 auto;
}

/* Live summary on the left of the footer */
#tiModal .ti-foot-note {
  margin-right: auto;
  min-width: 0;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#tiModal .ti-foot-note[hidden],
.page-almacen-fisico .ti-banner[hidden] {
  display: none;
}

@media (max-width: 640px) {
  .page-almacen-fisico .ti-mv-grid {
    grid-template-columns: 1fr;
  }

  #tiModal .ti-mv-form {
    padding: 14px;
  }

  .page-almacen-fisico .ti-sum-line .ti-side-tags {
    flex-basis: 100%;
    margin-left: 0;
  }
}

@media (max-width: 560px) {
  .page-almacen-fisico .ti-seg {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #tiModal .ti-mkpis--3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #tiModal .ti-mkpis--3 > .kpi:last-child {
    grid-column: 1 / -1;
  }
}

/* =============================================
   MODAL — ITEM FORM EXTRAS
   ============================================= */

.page-almacen-fisico .ti-level-preview {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 12.5px;
  font-weight: 600;
}

.page-almacen-fisico .ti-level-preview[hidden] {
  display: none;
}

.page-almacen-fisico .ti-level-preview.is-ok {
  border-color: var(--ti-ok-bd);
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-level-preview.is-low {
  border-color: var(--ti-warn-bd);
  background: var(--ti-warn-bg);
  color: var(--ti-warn-fg);
}

.page-almacen-fisico .ti-level-preview > svg {
  flex-shrink: 0;
}

.page-almacen-fisico .ti-loc-preview {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: var(--ti-modal-body-bg);
}

.page-almacen-fisico .ti-loc-preview-label {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
}

.page-almacen-fisico .ti-loc-code {
  font: 800 13px ui-monospace, Consolas, monospace;
  color: var(--text);
}

.page-almacen-fisico .ti-loc-code.is-empty {
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--muted);
}

/* Switch row */
.page-almacen-fisico .ti-switch-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  cursor: pointer;
}

.page-almacen-fisico .ti-switch-copy {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.page-almacen-fisico .ti-switch-copy strong {
  font-size: 13.5px;
  font-weight: 700;
}

.page-almacen-fisico .ti-switch {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  flex-shrink: 0;
  width: 40px;
  height: 22px;
  margin: 0;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--ti-input-bg);
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}

.page-almacen-fisico .ti-switch::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--muted);
  transition: transform .15s ease, background .15s ease;
}

.page-almacen-fisico .ti-switch:checked {
  border-color: var(--accent);
  background: var(--accent);
}

.page-almacen-fisico .ti-switch:checked::after {
  transform: translateX(18px);
  background: #1b1b00;
}

.page-almacen-fisico .ti-switch:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* =============================================
   MODAL — TABLE TOOLBAR, TABS, CELLS
   ============================================= */

.page-almacen-fisico .ti-modal-toolbar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
}

.page-almacen-fisico .ti-toolbar-select {
  min-height: 34px;
  padding: 5px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-input-bg);
  color: var(--text);
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
}

.page-almacen-fisico .ti-toolbar-select:focus-visible {
  outline: none;
  border-color: var(--ti-selected-bd);
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-toolbar-count {
  margin-left: auto;
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-tabs {
  display: inline-flex;
  gap: 4px;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-modal-body-bg);
  margin-right: auto;
}

.page-almacen-fisico .ti-tab {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 28px;
  padding: 4px 10px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 12.5px;
  font-weight: 700;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}

.page-almacen-fisico .ti-tab:hover {
  color: var(--text);
}

.page-almacen-fisico .ti-tab[aria-selected="true"] {
  border-color: var(--line);
  background: var(--panel);
  color: var(--text);
}

.page-almacen-fisico .ti-tab:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* Folder tabs: the toolbar is the tab strip and the active tab opens into the table below. */
#tiModal .ti-modal-toolbar:has(> .ti-tabs) {
  align-items: flex-end;
  padding: 10px 12px 0;
  background: var(--ti-modal-body-bg);
}

#tiModal .ti-modal-toolbar > .ti-tabs {
  align-self: flex-end;
  gap: 2px;
  margin-bottom: -1px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

#tiModal .ti-modal-toolbar > .ti-tabs .ti-tab {
  position: relative;
  min-height: 38px;
  padding: 9px 16px;
  border: 1px solid transparent;
  border-bottom: 0;
  border-radius: 8px 8px 0 0;
  background: transparent;
  font-size: 13px;
  line-height: 1.2;
  white-space: nowrap;
}

#tiModal .ti-modal-toolbar > .ti-tabs .ti-tab:hover:not([aria-selected="true"]) {
  background: var(--ti-hover-bg);
  color: var(--text);
}

#tiModal .ti-modal-toolbar > .ti-tabs .ti-tab[aria-selected="true"] {
  z-index: 1;
  border-color: var(--line);
  border-bottom: 1px solid var(--panel);
  background: var(--panel);
  color: var(--text);
}

#tiModal .ti-modal-toolbar > .ti-tabs .ti-tab:focus-visible {
  z-index: 2;
  box-shadow: inset 0 0 0 2px var(--hc-focus);
}

#tiModal .ti-modal-toolbar:has(> .ti-tabs) > .ti-search-field {
  margin-bottom: 8px;
}

.page-almacen-fisico .ti-tab-count {
  min-width: 18px;
  padding: 0 5px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  line-height: 16px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-tab[aria-selected="true"] .ti-tab-count {
  border-color: var(--ti-selected-bd);
  background: var(--panel);
}

.page-almacen-fisico .ti-table--modal td {
  vertical-align: middle;
}

.page-almacen-fisico .ti-mat {
  min-width: 200px;
  max-width: 340px;
  white-space: normal !important;
}

.page-almacen-fisico .ti-mat .ti-la {
  display: block;
}

.page-almacen-fisico .ti-mat-desc {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  line-height: 1.35;
  color: var(--muted);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.page-almacen-fisico .ti-muted-num {
  color: var(--muted);
  font-size: 12px;
}

.page-almacen-fisico .ti-avail {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
}

.page-almacen-fisico .ti-avail.is-short {
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-qty-muted {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-stock-flow {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  font-size: 12.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.page-almacen-fisico .ti-stock-flow strong {
  color: var(--text);
  font-weight: 700;
}

.page-almacen-fisico .ti-fulfill-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}

.page-almacen-fisico .ti-fulfill-btn:disabled {
  opacity: .5;
  cursor: not-allowed;
}

/* =============================================
   MODAL — HISTORY BADGES
   ============================================= */

.page-almacen-fisico .ti-mov-badge {
  display: inline-flex;
  align-items: center;
  border-radius: 6px;
  border: 1px solid var(--line);
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}

.page-almacen-fisico .ti-mov-entrada {
  background: var(--ok-bg);
  border-color: var(--ok-bd);
  color: var(--ok-fg);
}

.page-almacen-fisico .ti-mov-salida {
  background: var(--ti-info-bg);
  border-color: var(--ti-info-bd);
  color: var(--ti-info-fg);
}

.page-almacen-fisico .ti-mov-ajuste {
  background: color-mix(in srgb, #d97706 10%, var(--panel));
  border-color: color-mix(in srgb, #d97706 38%, var(--line));
  color: color-mix(in srgb, #d97706 90%, white);
}

.page-almacen-fisico .ti-mov-baja {
  background: var(--err-bg);
  border-color: var(--err-bd);
  color: var(--err-fg);
}

.page-almacen-fisico .ti-mov-repo {
  background: var(--ti-info-bg);
  border-color: var(--ti-info-bd);
  color: var(--ti-info-fg);
}

/* Stock delta */
.page-almacen-fisico .ti-stock-delta {
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

.page-almacen-fisico .ti-arrow {
  color: var(--muted);
  margin: 0 2px;
}

.page-almacen-fisico .ti-delta-pos { color: var(--ok-fg); }
.page-almacen-fisico .ti-delta-neg { color: var(--err-fg); }
.page-almacen-fisico .ti-delta-zero { color: var(--muted); }

/* Columnas de tabla de historial */
.page-almacen-fisico .ti-date { color: var(--muted); font-size: 12px; white-space: nowrap; }
.page-almacen-fisico .ti-num  { font-variant-numeric: tabular-nums; text-align: right; }
.page-almacen-fisico .ti-reason { max-width: 200px; white-space: normal; font-size: 12px; color: var(--muted); }
.page-almacen-fisico .ti-user  { font-size: 12px; color: var(--muted); }

/* =============================================
   MODAL — REQUEST STATUS BADGES
   ============================================= */

.page-almacen-fisico .ti-req-fulfilled {
  background: var(--ok-bg);
  border-color: var(--ok-bd);
  color: var(--ok-fg);
}

.page-almacen-fisico .ti-req-cancelled {
  background: var(--err-bg);
  border-color: var(--err-bd);
  color: var(--err-fg);
}

/* =============================================
   MODAL — RACKS HINT + ADD BUTTON
   ============================================= */

.page-almacen-fisico .ti-racks-hint {
  font-size: 12px;
  margin: 0 0 10px;
}

.page-almacen-fisico .ti-add-rack-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
}

/* =============================================
   MODAL — ITEM FORM (settings layout)
   ============================================= */

#tiModal .ti-settings {
  gap: 14px;
}

.page-almacen-fisico .ti-set-row {
  display: flex;
  flex-direction: column;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}

.page-almacen-fisico .ti-set-label {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 11px 16px;
  border-bottom: 1px solid var(--line);
}

.page-almacen-fisico .ti-set-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  color: var(--text);
}

.page-almacen-fisico .ti-set-copy {
  min-width: 0;
}

.page-almacen-fisico .ti-set-title {
  margin: 0;
  font-size: 13.5px;
  font-weight: 700;
  line-height: 1.3;
  color: var(--text);
}

.page-almacen-fisico .ti-set-desc {
  margin: 2px 0 0;
  font-size: 12px;
  line-height: 1.4;
  color: var(--muted);
}

.page-almacen-fisico .ti-set-fields {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
  padding: 16px;
}

@media (max-width: 600px) {
  .page-almacen-fisico .ti-set-label {
    padding: 10px 14px;
  }

  .page-almacen-fisico .ti-set-fields {
    padding: 14px;
  }
}

/* =============================================
   MODAL — HISTORY TIMELINE
   ============================================= */

#tiModal[data-dialog="history"] .vj-modal-body {
  padding: 0;
  gap: 0;
  overflow: hidden;
}

#tiModal[data-dialog="history"] .vj-modal-body > .ti-table-card {
  margin: 16px 20px;
}

.page-almacen-fisico .ti-hist {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

#tiModal .ti-hist-stats {
  flex-shrink: 0;
  padding: 12px 20px 10px;
}

#tiModal .ti-hist-stats > .kpi {
  padding: 7px 10px;
  gap: 10px;
}

#tiModal .ti-hist-stats .kpi-ico {
  width: 30px;
  height: 30px;
}

#tiModal .ti-hist-stats .kpi-value {
  font-size: 15px;
  line-height: 1.2;
}

#tiModal .ti-hist-stats .kpi-label,
#tiModal .ti-hist-stats .kpi-sub {
  font-size: 11px;
  line-height: 1.3;
}

.page-almacen-fisico .ti-hist-toolbar {
  position: sticky;
  top: 0;
  z-index: 3;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  padding: 10px 20px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  flex-shrink: 0;
}

.page-almacen-fisico .ti-hist-toolbar .ti-search-field {
  flex: 1 1 320px;
  max-width: 440px;
}

.page-almacen-fisico .ti-hist-toolbar .ti-toolbar-count {
  margin-left: auto;
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.page-almacen-fisico .ti-fchips {
  flex-basis: 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.page-almacen-fisico .ti-fchip {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  gap: 6px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  color: var(--muted);
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease, color .12s ease;
}

.page-almacen-fisico .ti-fchip:hover {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
  color: var(--text);
}

.page-almacen-fisico .ti-fchip[aria-pressed="true"] {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
  color: var(--text);
}

.page-almacen-fisico .ti-fchip:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-fchip .pill {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--muted);
}

.page-almacen-fisico .ti-fchip.is-entrada .pill { background: var(--ti-ok-fg); }
.page-almacen-fisico .ti-fchip.is-salida .pill { background: var(--ti-info-fg); }
.page-almacen-fisico .ti-fchip.is-ajuste .pill { background: var(--ti-warn-fg); }
.page-almacen-fisico .ti-fchip.is-baja .pill { background: var(--ti-err-fg); }
.page-almacen-fisico .ti-fchip.is-reposicion_automatica .pill { background: var(--ti-info-fg); }

.page-almacen-fisico .ti-fchip-n {
  min-width: 18px;
  padding: 0 5px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  line-height: 16px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-tl {
  flex: 1 0 auto;
  padding: 0 20px 20px;
}

.page-almacen-fisico .ti-tl > .ti-modal-empty {
  min-height: 240px;
}

.page-almacen-fisico .ti-tl-group {
  display: flex;
  flex-direction: column;
}

/* Day label stays pinned under the sticky toolbar while its rows scroll */
.page-almacen-fisico .ti-tl-day {
  position: sticky;
  top: var(--ti-hist-toolbar-h, 0px);
  z-index: 2;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 2px 6px;
  background: var(--ti-modal-body-bg);
  box-shadow: none;
}

.page-almacen-fisico .ti-tl-group:first-child > .ti-tl-day {
  padding-top: 10px;
}

.page-almacen-fisico .ti-tl-day-label {
  display: inline-block;
  font-size: 12.5px;
  font-weight: 800;
  color: var(--text);
}

.page-almacen-fisico .ti-tl-day-label::first-letter {
  text-transform: uppercase;
}

.page-almacen-fisico .ti-tl-day-n {
  font-size: 11.5px;
  color: var(--muted);
}

.page-almacen-fisico .ti-tl-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  background: var(--panel);
  transition: background .12s ease;
}

.page-almacen-fisico .ti-tl-row:hover {
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-tl-row + .ti-tl-row {
  border-top: 0;
}

.page-almacen-fisico .ti-tl-day + .ti-tl-row {
  border-radius: 10px 10px 0 0;
}

.page-almacen-fisico .ti-tl-row:last-child {
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
}

.page-almacen-fisico .ti-tl-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  color: var(--text);
}

.page-almacen-fisico .ti-tl-row.is-entrada .ti-tl-ico {
  color: var(--ti-ok-fg);
  background: var(--ti-ok-bg);
  border-color: var(--ti-ok-bd);
}

.page-almacen-fisico .ti-tl-row.is-ajuste .ti-tl-ico {
  color: var(--ti-warn-fg);
  background: var(--ti-warn-bg);
  border-color: var(--ti-warn-bd);
}

.page-almacen-fisico .ti-tl-row.is-baja .ti-tl-ico,
.page-almacen-fisico .ti-tl-row.is-up .ti-tl-ico {
  color: var(--ti-err-fg);
  background: var(--ti-err-bg);
  border-color: var(--ti-err-bd);
}

.page-almacen-fisico .ti-tl-row.is-down .ti-tl-ico {
  color: var(--ti-ok-fg);
  background: var(--ti-ok-bg);
  border-color: var(--ti-ok-bd);
}

.page-almacen-fisico .ti-tl-main {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.page-almacen-fisico .ti-tl-top {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px 8px;
  min-width: 0;
}

.page-almacen-fisico .ti-tl-top .ti-mov-badge {
  padding: 1px 7px;
  font-size: 11px;
  line-height: 1.5;
}

.page-almacen-fisico .ti-tl-desc {
  flex: 1 1 160px;
  min-width: 0;
  font-size: 12.5px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.page-almacen-fisico .ti-tl-reason {
  min-width: 0;
  max-width: 60%;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.page-almacen-fisico .ti-tl-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 2px 6px;
  min-width: 0;
  font-size: 11.5px;
  line-height: 1.35;
  color: var(--muted);
}

.page-almacen-fisico .ti-tl-meta > svg {
  flex-shrink: 0;
}

.page-almacen-fisico .ti-tl-qty {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
  text-align: right;
}

.page-almacen-fisico .ti-tl-qty .ti-stock-delta,
.page-almacen-fisico .ti-tl-qty .ti-qty-muted {
  font-size: 14px;
  font-weight: 800;
}

.page-almacen-fisico .ti-tl-more {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin: 16px 0 0;
  font-size: 12px;
  color: var(--muted);
}

.page-almacen-fisico .ti-hist-toolbar .ti-hist-export {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: none;
}

@media (max-width: 760px) {
  #tiModal .ti-hist-stats {
    padding: 12px 14px;
  }

  .page-almacen-fisico .ti-hist-toolbar {
    padding: 10px 14px;
  }

  .page-almacen-fisico .ti-hist-toolbar .ti-search-field {
    flex: 1 1 0;
    min-width: 0;
    max-width: none;
  }

  .page-almacen-fisico .ti-hist-toolbar .ti-toolbar-count {
    font-size: 11.5px;
  }

  .page-almacen-fisico .ti-hist-export-label {
    display: none;
  }

  #tiModal .ti-hist-stats > .kpi {
    padding: 8px 10px;
  }

  #tiModal .ti-hist-stats .kpi-value {
    font-size: 15px;
  }

  .page-almacen-fisico .ti-tl-desc {
    flex-basis: 100%;
  }

  .page-almacen-fisico .ti-tl-day {
    padding: 10px 2px 6px;
  }

  .page-almacen-fisico .ti-tl-reason {
    max-width: 100%;
  }

  .page-almacen-fisico .ti-fchips {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    margin: 0 -14px;
    padding: 0 14px 2px;
  }

  .page-almacen-fisico .ti-fchips::-webkit-scrollbar {
    display: none;
  }

  .page-almacen-fisico .ti-tl {
    padding: 0 14px 14px;
  }

  .page-almacen-fisico .ti-tl-row {
    grid-template-columns: 26px minmax(0, 1fr);
    align-items: start;
    gap: 8px;
    padding: 8px 10px;
  }

  .page-almacen-fisico .ti-tl-ico {
    width: 26px;
    height: 26px;
  }

  .page-almacen-fisico .ti-tl-qty {
    grid-column: 2;
    flex-direction: row;
    align-items: baseline;
    gap: 10px;
  }
}

@media (max-width: 420px) {
  #tiModal .ti-hist-stats .kpi-ico {
    display: none;
  }

  .page-almacen-fisico .ti-tl-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .page-almacen-fisico .ti-tl-ico {
    display: none;
  }

  .page-almacen-fisico .ti-tl-qty {
    grid-column: 1;
  }
}

/* =============================================
   MODAL — RACKS (stats, tokens, occupancy)
   ============================================= */

.page-almacen-fisico .ti-rack-nav-item {
  justify-content: flex-start;
  align-items: flex-start;
}

.page-almacen-fisico .ti-rack-nav-item .ti-nav-item-info {
  flex: 1 1 auto;
  gap: 2px;
}

.page-almacen-fisico .ti-nav-item-row {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.page-almacen-fisico .ti-nav-new {
  flex-shrink: 0;
  padding: 0 6px;
  border: 1px solid var(--rack-used-bd);
  border-radius: 6px;
  background: var(--rack-used-bg);
  color: var(--rack-used-fg);
  font-size: 10.5px;
  font-weight: 700;
  line-height: 16px;
}

.page-almacen-fisico .ti-nav-warn {
  display: inline-flex;
  flex-shrink: 0;
  color: var(--ti-warn-fg);
}

.page-almacen-fisico .ti-nav-occ {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 5px;
}

.page-almacen-fisico .ti-nav-occ-bar {
  flex: 1 1 auto;
  height: 4px;
  border-radius: 2px;
  background: color-mix(in srgb, var(--line) 80%, transparent);
  overflow: hidden;
}

.page-almacen-fisico .ti-nav-occ-bar > span {
  display: block;
  height: 100%;
  border-radius: 2px;
  background: var(--rack-post);
}

.page-almacen-fisico .ti-nav-occ-text {
  font: 700 10.5px ui-monospace, Consolas, monospace;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-rack-card {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}

.page-almacen-fisico .ti-rack-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}

.page-almacen-fisico .ti-stepper-btn:disabled {
  opacity: .4;
  cursor: default;
  pointer-events: none;
}

.page-almacen-fisico .ti-cfg-count {
  margin-right: auto;
}

.page-almacen-fisico .ti-stepper-btn:disabled {
  opacity: .4;
  cursor: default;
  pointer-events: none;
}

.page-almacen-fisico .ti-cfg-count {
  margin-right: auto;
}

.page-almacen-fisico .ti-stepper-btn:disabled {
  opacity: .4;
  cursor: default;
  pointer-events: none;
}

.page-almacen-fisico .ti-cfg-count {
  margin-right: auto;
}

.page-almacen-fisico .ti-stepper-btn svg {
  display: block;
}

/* Drawers per floor: one shelf of the rack, each drawer editable in place */
.page-almacen-fisico .ti-dshelf {
  padding: 12px 12px 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--rack-stage-bg);
  box-sizing: border-box;
}

.page-almacen-fisico .ti-dshelf-bins {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(62px, 1fr));
  gap: 8px;
  max-height: 232px;
  overflow-y: auto;
  padding: 7px 5px 8px 0;
}

.page-almacen-fisico .ti-dshelf-beam {
  display: block;
  height: 6px;
  margin: 0 -12px;
  border-radius: 0 0 7px 7px;
  background: var(--rack-beam);
}

.page-almacen-fisico .ti-dtile {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 60px;
  padding: 6px 4px;
  border: 1px solid var(--line);
  border-radius: 6px 6px 4px 4px;
  background: var(--rack-bin-bg);
  box-sizing: border-box;
  transition: border-color .12s ease, background-color .12s ease;
}

.page-almacen-fisico .ti-dtile:hover,
.page-almacen-fisico .ti-dtile:focus-within {
  border-color: var(--ti-hover-bd);
}

.page-almacen-fisico .ti-dtile-code {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font: 800 13px/1.1 ui-monospace, Consolas, monospace;
  color: var(--text);
}

.page-almacen-fisico .ti-dtile-handle {
  width: 26px;
  height: 4px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--text) 28%, transparent);
}

.page-almacen-fisico .ti-dtile.is-used {
  border-color: var(--rack-used-bd);
  background: var(--rack-used-bg);
}

.page-almacen-fisico .ti-dtile.is-used .ti-dtile-code {
  color: var(--rack-used-fg);
}

.page-almacen-fisico .ti-dtile.is-used .ti-dtile-handle {
  background: color-mix(in srgb, var(--rack-used-fg) 55%, transparent);
}

.page-almacen-fisico .ti-dtile-x {
  position: absolute;
  top: -7px;
  right: -6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--muted);
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, color .12s ease, border-color .12s ease;
}

.page-almacen-fisico .ti-dtile:hover .ti-dtile-x,
.page-almacen-fisico .ti-dtile:focus-within .ti-dtile-x {
  opacity: 1;
}

.page-almacen-fisico .ti-dtile-x:hover:not(:disabled) {
  border-color: var(--ti-err-bd);
  color: var(--err-fg);
}

.page-almacen-fisico .ti-dtile-x:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-dtile-x:disabled {
  display: none;
}

@media (hover: none) {
  .page-almacen-fisico .ti-dtile-x {
    opacity: 1;
  }
}

.page-almacen-fisico .ti-dadd {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  margin-top: 10px;
  padding: 0 10px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: var(--ti-input-bg);
  cursor: text;
  box-sizing: border-box;
  transition: border-color .15s ease;
}

.page-almacen-fisico .ti-dadd:focus-within {
  border-style: solid;
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .ti-dadd:has(.ti-dadd-input:focus-visible) {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-dadd-ico {
  display: inline-flex;
  color: var(--muted);
}

.page-almacen-fisico .ti-dadd-input {
  flex: 1 1 auto;
  min-width: 0;
  padding: 8px 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 13px;
}

.page-almacen-fisico .ti-dadd-input::placeholder {
  color: color-mix(in srgb, var(--muted) 75%, transparent);
}

.page-almacen-fisico .ti-shelf-legend {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}

.page-almacen-fisico .ti-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
}

.page-almacen-fisico .ti-legend-sw {
  width: 12px;
  height: 12px;
  border: 1px solid var(--line);
  border-radius: 3px;
  background: var(--bg);
}

.page-almacen-fisico .ti-legend-sw.is-used {
  border-color: var(--rack-used-bd);
  background: var(--rack-used-bg);
}

/* Rack front view: brand-yellow uprights, graphite beams, occupied bins tinted yellow */
.page-almacen-fisico {
  --rack-post: var(--accent);
  --rack-post-hole: rgba(24, 18, 0, 0.45);
  --rack-beam: #4b5059;
  --rack-bin-bg: color-mix(in srgb, var(--panel) 88%, var(--text) 5%);
  --rack-stage-bg: color-mix(in srgb, var(--bg) 80%, var(--panel));
  --rack-used-fg: var(--accent);
  --rack-used-bg: color-mix(in srgb, var(--accent) 13%, var(--panel));
  --rack-used-bd: color-mix(in srgb, var(--accent) 45%, var(--line));
}

[data-theme="light"] .page-almacen-fisico {
  --rack-post-hole: rgba(70, 50, 0, 0.35);
  --rack-beam: #5b616b;
  --rack-bin-bg: #ffffff;
  --rack-stage-bg: #f6f6f3;
  --rack-used-fg: #8a6400;
  --rack-used-bg: #fff7d6;
  --rack-used-bd: #ecd27a;
}

.page-almacen-fisico .ti-rack-card-titles {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.page-almacen-fisico .ti-rack-stage {
  max-height: min(70vh, 760px);
  overflow: auto;
  overscroll-behavior: contain;
  padding: 18px 24px 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--rack-stage-bg);
}

.page-almacen-fisico .ti-empty-shelf {
  margin: 0;
  padding: 30px 10px;
  text-align: center;
  font-size: 13px;
}

/* Fluid rack: drawers stretch between --bin-min and --bin-max to fill the stage.
   Wide racks step down to data-density="compact" / "dense" (set by JS from the *-base
   metrics, which densities never override); past dense the stage scrolls sideways. */
.page-almacen-fisico .ti-rack-stage {
  --bin-base: 72px;
  --bin-compact: 52px;
  --bin-gap-base: 10px;
  --shelf-pad-base: 12px;
  --bin-min: var(--bin-base);
  --bin-max: 140px;
  --bin-h: 76px;
  --bin-gap: var(--bin-gap-base);
  --shelf-pad: var(--shelf-pad-base);
  --post-l: 52px;
  --post-r: 16px;
}

.page-almacen-fisico .ti-rack-stage[data-density="compact"] {
  --bin-min: var(--bin-compact);
  --bin-h: 58px;
  --bin-gap: 6px;
  --shelf-pad: 8px;
}

.page-almacen-fisico .ti-rack-stage[data-density="dense"] {
  --bin-min: 40px;
  --bin-h: 48px;
  --bin-gap: 4px;
  --shelf-pad: 6px;
}

.page-almacen-fisico .ti-rack-stage[data-density="compact"] .ti-bin {
  gap: 6px;
  padding: 0 3px;
}

.page-almacen-fisico .ti-rack-stage[data-density="compact"] .ti-bin-label {
  min-width: 0;
  padding: 1px 5px;
  font-size: 11px;
}

.page-almacen-fisico .ti-rack-stage[data-density="dense"] .ti-bin {
  gap: 5px;
  padding: 0 2px;
  border-radius: 4px 4px 3px 3px;
}

.page-almacen-fisico .ti-rack-stage[data-density="dense"] .ti-bin-label {
  min-width: 0;
  padding: 1px 3px;
  font-size: 10px;
}

.page-almacen-fisico .ti-rack-stage[data-density="dense"] .ti-bin-handle {
  width: 18px;
  height: 4px;
}
.page-almacen-fisico .ti-rack-front {
  --rack-inner: calc((var(--rack-cols) - 1) * var(--bin-gap) + 2 * var(--shelf-pad) + var(--post-l) + var(--post-r));
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: calc(var(--rack-cols) * var(--bin-min) + var(--rack-inner));
  max-width: calc(var(--rack-cols) * var(--bin-max) + var(--rack-inner));
  margin: 0 auto;
}

.page-almacen-fisico .ti-rack-row {
  position: relative;
  display: grid;
  grid-template-columns: var(--post-l) minmax(0, 1fr) var(--post-r);
}

.page-almacen-fisico .ti-rack-post {
  position: relative;
}

.page-almacen-fisico .ti-rack-post::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  width: var(--post-r);
  background-color: var(--rack-post);
  background-image: radial-gradient(circle, var(--rack-post-hole) 0 1.8px, transparent 2.2px);
  background-size: var(--post-r) 12px;
  background-position: center top;
}

.page-almacen-fisico .ti-rack-post.is-right::after {
  right: auto;
  left: 0;
}

.page-almacen-fisico .ti-rack-row--cap .ti-rack-post::after {
  border-radius: 3px 3px 0 0;
}

.page-almacen-fisico .ti-rack-cap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.page-almacen-fisico .ti-rack-plate {
  padding: 3px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  font: 800 14px ui-monospace, Consolas, monospace;
  letter-spacing: 0.04em;
  color: var(--text);
}

.page-almacen-fisico .ti-rack-beam {
  display: block;
  align-self: stretch;
  height: 8px;
  box-sizing: border-box;
  background: var(--rack-beam);
  border-top: 1px solid color-mix(in srgb, #fff 18%, var(--rack-beam));
  border-bottom: 1px solid color-mix(in srgb, #000 28%, var(--rack-beam));
}

.page-almacen-fisico .ti-level-plate {
  position: absolute;
  top: 50%;
  left: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  min-width: 36px;
  padding: 4px 5px;
  transform: translateY(-50%);
  border: 1px solid var(--line);
  border-radius: 5px;
  background-color: var(--panel);
  font-family: ui-monospace, Consolas, monospace;
  text-align: center;
  color: var(--text);
  box-sizing: border-box;
  transition: border-color .12s ease;
}

.page-almacen-fisico .ti-level-n {
  font-size: 12.5px;
  font-weight: 800;
  line-height: 1.1;
}
/* Row crosshair: the floor plate follows the hovered / focused / selected drawer */
.page-almacen-fisico .ti-rack-row:has(.ti-bin:hover, .ti-bin:focus-visible, .ti-bin.is-selected) .ti-level-plate {
  border-color: var(--ti-selected-bd);
  background-image: linear-gradient(var(--ti-selected-bg), var(--ti-selected-bg));
}

/* Keep floor plates visible while scrolling wide racks sideways */
.page-almacen-fisico .ti-rack-post.is-left {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--rack-stage-bg);
}

.page-almacen-fisico .ti-rack-shelf {
  display: flex;
  flex-direction: column;
}

.page-almacen-fisico .ti-rack-bins {
  display: grid;
  grid-template-columns: repeat(var(--rack-cols), minmax(0, 1fr));
  gap: var(--bin-gap);
  padding: 12px var(--shelf-pad) 5px;
}

.page-almacen-fisico .ti-bin {
  position: relative;
  height: var(--bin-h);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 0;
  padding: 0 6px;
  border: 1px solid var(--line);
  border-radius: 6px 6px 4px 4px;
  background: var(--rack-bin-bg);
  color: var(--text);
  font: inherit;
  cursor: pointer;
  transition: border-color .12s ease, background-color .12s ease;
}

.page-almacen-fisico .ti-bin:hover {
  border-color: var(--ti-hover-bd);
  background-image: linear-gradient(var(--ti-hover-bg), var(--ti-hover-bg));
}

.page-almacen-fisico .ti-bin:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-bin-label {
  min-width: 32px;
  padding: 2px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--panel);
  font: 700 12.5px ui-monospace, Consolas, monospace;
  color: var(--text);
  box-sizing: border-box;
}

[data-theme="light"] .page-almacen-fisico .ti-bin-label {
  background: #f8fafc;
}

.page-almacen-fisico .ti-bin-handle {
  width: 32px;
  height: 5px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--text) 30%, transparent);
}

/* In-rack search: matches stand out, the rest fades */
.page-almacen-fisico .ti-rack-front.is-finding .ti-bin:not(.is-match):not(.is-selected) {
  opacity: .35;
}

.page-almacen-fisico .ti-rack-front .ti-bin.is-match {
  background-color: var(--ti-ok-bg);
}

.page-almacen-fisico .ti-rack-front .ti-bin.is-match:not(.is-selected) {
  border-color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-rack-front .ti-bin.is-match .ti-bin-label {
  border-color: var(--ti-ok-bd);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-bin.is-used {
  border-color: var(--rack-used-bd);
  background-color: var(--rack-used-bg);
}

.page-almacen-fisico .ti-bin.is-used .ti-bin-label {
  border-color: var(--rack-used-bd);
  color: var(--rack-used-fg);
}

.page-almacen-fisico .ti-bin.is-used .ti-bin-handle {
  background: color-mix(in srgb, var(--rack-used-fg) 55%, transparent);
}

.page-almacen-fisico .ti-bin.is-selected {
  border-color: var(--text);
  background-image: linear-gradient(var(--ti-selected-bg), var(--ti-selected-bg));
}

.page-almacen-fisico .ti-bin.is-selected .ti-bin-label {
  border-color: var(--text);
}

.page-almacen-fisico .ti-rack-row--base {
  height: 14px;
}

.page-almacen-fisico .ti-rack-row--base .ti-rack-post::after {
  bottom: 4px;
}

.page-almacen-fisico .ti-rack-row--base::after {
  content: "";
  position: absolute;
  left: 18px;
  right: -12px;
  bottom: 0;
  height: 2px;
  background: color-mix(in srgb, var(--text) 22%, var(--line));
}

.page-almacen-fisico .ti-rack-foot {
  position: absolute;
  bottom: 2px;
  z-index: 1;
  width: 24px;
  height: 4px;
  border-radius: 1px;
  background: color-mix(in srgb, var(--rack-post) 70%, #000);
}

.page-almacen-fisico .ti-rack-post.is-left .ti-rack-foot {
  right: -5px;
}

.page-almacen-fisico .ti-rack-post.is-right .ti-rack-foot {
  left: -5px;
}

.page-almacen-fisico .ti-legend-sw {
  background: var(--rack-bin-bg);
}

.page-almacen-fisico .ti-legend-sw.is-selected {
  border-color: var(--text);
  background: var(--ti-selected-bg);
}

/* Front view layout: find bar, stage and bin detail (side by side when the card is wide) */
.page-almacen-fisico .ti-rack-card--visual {
  container-type: inline-size;
}

.page-almacen-fisico .ti-rack-find {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
}

.page-almacen-fisico .ti-rack-find .ti-search-field {
  flex: 1 1 260px;
  max-width: 420px;
}

.page-almacen-fisico .ti-rack-find-count {
  font-size: 12px;
  font-weight: 600;
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-rack-find-count.is-none {
  color: var(--muted);
}

.page-almacen-fisico .ti-rack-find .ti-shelf-legend {
  margin-left: auto;
  flex-wrap: wrap;
  gap: 6px 12px;
}

.page-almacen-fisico .ti-rack-visual-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

.page-almacen-fisico .ti-rack-stage-col {
  min-width: 0;
}

@container (min-width: 620px) {
  .page-almacen-fisico .ti-rack-visual-body:not(.is-wide) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(240px, 300px);
    align-items: start;
    gap: 14px;
  }

  .page-almacen-fisico .ti-rack-visual-body:not(.is-wide) .ti-bin-detail {
    max-height: min(70vh, 760px);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
}

/* Contents of the selected bin */
.page-almacen-fisico .ti-bin-detail {
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-modal-body-bg);
  box-sizing: border-box;
}

.page-almacen-fisico .ti-bin-list > li.is-match .ti-la {
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-bin-hint {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: 12.5px;
  color: var(--muted);
}

.page-almacen-fisico .ti-bin-hint > svg {
  flex-shrink: 0;
}

.page-almacen-fisico .ti-bin-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.page-almacen-fisico .ti-bin-code {
  font: 800 13px ui-monospace, Consolas, monospace;
  color: var(--text);
}

.page-almacen-fisico .ti-bin-badge {
  padding: 2px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
}

.page-almacen-fisico .ti-bin-badge.is-used {
  border-color: var(--rack-used-bd);
  background: var(--rack-used-bg);
  color: var(--rack-used-fg);
}

.page-almacen-fisico .ti-bin-list {
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
}

.page-almacen-fisico .ti-bin-list > li {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 2px 10px;
  padding: 8px 0;
  font-size: 12.5px;
}

.page-almacen-fisico .ti-bin-list > li + li {
  border-top: 1px solid var(--line);
}

.page-almacen-fisico .ti-bin-list > li > .ti-thumb {
  grid-row: 1 / span 2;
  align-self: center;
}

.page-almacen-fisico .ti-bin-desc {
  grid-column: 2 / -1;
  grid-row: 2;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.page-almacen-fisico .ti-bin-stock {
  font-size: 12px;
  color: var(--muted);
  white-space: nowrap;
}

.page-almacen-fisico .ti-bin-stock strong {
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* Rack thumbnail in the sidebar list */
.page-almacen-fisico .ti-nav-thumb {
  display: flex;
  flex-shrink: 0;
  width: 44px;
  height: 40px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--rack-stage-bg);
  box-sizing: border-box;
}

.page-almacen-fisico .ti-nav-thumb-grid {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: repeat(var(--tc), minmax(0, 1fr));
  grid-template-rows: repeat(var(--tr), minmax(0, 1fr));
  gap: 2px 1px;
  padding: 0 2px;
  border-left: 3px solid var(--rack-post);
  border-right: 3px solid var(--rack-post);
}

.page-almacen-fisico .ti-nav-thumb-grid > i {
  display: block;
  border-bottom: 1px solid var(--rack-beam);
  border-radius: 1px 1px 0 0;
  background: color-mix(in srgb, var(--text) 16%, transparent);
}

.page-almacen-fisico .ti-nav-thumb-grid > i.is-used {
  background: var(--rack-used-fg);
}

.page-almacen-fisico .ti-rack-nav-item.is-invalid .ti-nav-thumb {
  border-color: var(--ti-err-bd);
}

.page-almacen-fisico .ti-mono-inline {
  font-family: ui-monospace, Consolas, monospace;
  font-size: 12px;
  font-weight: 700;
}

.page-almacen-fisico .ti-rack-detail-scroll {
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Racks responsive: tablet narrows the list, phone stacks with a horizontal rack carousel */
@media (max-width: 1100px) {
  .page-almacen-fisico .ti-racks-sidebar {
    width: 260px;
    min-width: 240px;
  }

  .page-almacen-fisico .ti-rack-detail-scroll {
    padding: 16px 18px;
  }

  .page-almacen-fisico .ti-rack-detail-head {
    padding: 14px 18px 0;
  }
}

@media (max-width: 700px) {
  .page-almacen-fisico .ti-rtab {
    flex: 1 1 0;
  }

  .page-almacen-fisico .ti-rack-find .ti-shelf-legend {
    margin-left: 0;
  }
}

@media (max-width: 850px) {
  .page-almacen-fisico .ti-racks-workspace {
    flex-direction: column;
  }

  .page-almacen-fisico .ti-racks-sidebar {
    flex: none;
    width: 100%;
    min-width: 0;
    max-width: none;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .page-almacen-fisico .ti-racks-sidebar-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    padding: 10px 14px 0;
    border-bottom: 0;
  }

  .page-almacen-fisico .ti-racks-head-row {
    display: contents;
  }

  .page-almacen-fisico .ti-racks-count-wrap {
    display: none;
  }

  .page-almacen-fisico .ti-racks-sidebar .ti-search-field {
    grid-column: 1;
    grid-row: 1;
  }

  .page-almacen-fisico .ti-add-rack-nav-btn {
    grid-column: 2;
    grid-row: 1;
    min-height: 34px;
  }

  .page-almacen-fisico .ti-racks-nav {
    flex: none;
    flex-direction: row;
    gap: 8px;
    padding: 10px 14px 12px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    scroll-snap-type: x proximity;
    scroll-padding-inline: 14px;
    scrollbar-width: thin;
  }

  .page-almacen-fisico .ti-rack-nav-item {
    flex: 0 0 auto;
    width: 200px;
    align-items: center;
    padding: 8px 10px;
    scroll-snap-align: start;
  }

  .page-almacen-fisico .ti-nav-thumb {
    width: 38px;
    height: 36px;
  }

  .page-almacen-fisico .ti-nav-empty {
    flex: 1 1 auto;
    padding: 10px;
  }

  .page-almacen-fisico .ti-rack-stage {
    max-height: none;
  }
}

@media (max-width: 760px) {
  .page-almacen-fisico .ti-rack-stage {
    --bin-base: 64px;
    --bin-h: 68px;
    --bin-gap-base: 8px;
  }
}

@media (max-width: 600px) {
  #tiModal[data-dialog="racks"] .vj-modal-body {
    padding: 0;
  }

  .page-almacen-fisico .ti-rack-detail-scroll {
    padding: 12px 12px 16px;
    gap: 12px;
  }

  .page-almacen-fisico .ti-rack-detail-head {
    gap: 10px;
    padding: 12px 12px 0;
  }

  .page-almacen-fisico .ti-detail-hero {
    gap: 10px;
  }

  .page-almacen-fisico .ti-detail-hero-left {
    flex: 1 1 auto;
    min-width: 0;
    gap: 10px;
  }

  .page-almacen-fisico .ti-detail-badge {
    min-width: 44px;
    height: 40px;
    padding: 0 10px;
    font-size: 15px;
  }

  .page-almacen-fisico .ti-detail-title {
    font-size: 15px;
  }

  .page-almacen-fisico .ti-rack-detail-head .ti-detail-badge {
    max-width: 104px;
  }

  .page-almacen-fisico .ti-rack-detail-head .ti-rack-chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    margin-right: -12px;
    padding-right: 12px;
  }

  .page-almacen-fisico .ti-rack-detail-head .ti-rack-chips::-webkit-scrollbar {
    display: none;
  }

  .page-almacen-fisico .ti-rtab {
    padding: 9px 10px;
  }

  .page-almacen-fisico .ti-rack-card {
    gap: 12px;
    padding: 12px;
    border-radius: 10px;
  }

  .page-almacen-fisico .ti-rack-card-head {
    padding-bottom: 8px;
  }

  .page-almacen-fisico .ti-shelf-legend {
    flex-wrap: wrap;
    gap: 6px 10px;
  }

  .page-almacen-fisico .ti-rack-stage {
    padding: 12px 8px 10px;
    margin: 0 -4px;
  }

  .page-almacen-fisico .ti-rack-stage {
    --bin-base: 58px;
    --bin-compact: 46px;
    --bin-h: 60px;
    --bin-gap-base: 6px;
    --shelf-pad-base: 6px;
    --post-l: 44px;
    --post-r: 12px;
  }

  .page-almacen-fisico .ti-bin {
    gap: 6px;
    padding: 0 3px;
  }

  .page-almacen-fisico .ti-bin-label {
    font-size: 11.5px;
    padding: 1px 6px;
  }
  .page-almacen-fisico .ti-rack-find .ti-search-field {
    flex-basis: 100%;
    max-width: none;
  }

  .page-almacen-fisico .ti-rack-find .ti-search-field input {
    font-size: 16px;
  }

  .page-almacen-fisico .ti-cfg-danger .ti-remove-rack {
    flex: 1 1 100%;
    justify-content: center;
  }

  .page-almacen-fisico .ti-preset-btn {
    padding: 5px 9px;
    font-size: 12px;
  }

  .page-almacen-fisico .ti-stepper {
    height: 42px;
  }

  .page-almacen-fisico .ti-stepper-btn {
    width: 44px;
  }

  .page-almacen-fisico .ti-dtile-x {
    width: 24px;
    height: 24px;
  }

  .page-almacen-fisico .ti-dshelf-bins {
    grid-template-columns: repeat(auto-fill, minmax(54px, 1fr));
    gap: 7px;
  }

  .page-almacen-fisico .ti-dadd {
    min-height: 44px;
  }

  /* 16px keeps iOS Safari from zooming the iframe on focus */
  .page-almacen-fisico .ti-racks-sidebar .ti-search-field input,
  .page-almacen-fisico .ti-dadd-input,
  .page-almacen-fisico .ti-input-prefix-wrap input,
  .page-almacen-fisico .ti-stepper-input {
    font-size: 16px;
  }
}

@media (max-width: 420px) {
  .page-almacen-fisico .ti-add-rack-nav-btn > span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
  }

  .page-almacen-fisico .ti-add-rack-nav-btn {
    width: 34px;
    justify-content: center;
    padding: 0;
  }

  .page-almacen-fisico .ti-rack-nav-item {
    width: 176px;
  }
}

/* =============================================
   IMPORT WIZARD
   ============================================= */

#tiModal[data-dialog="import"] .vj-modal {
  width: min(1180px, calc(100vw - 32px));
  height: min(92dvh, 880px);
}

#tiModal[data-dialog="import"] .vj-modal-actions {
  flex-wrap: wrap;
}

.page-almacen-fisico .ti-footer-summary {
  order: -1;
  margin-right: auto;
  font-size: 12.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .vj-modal-actions .btn:disabled {
  opacity: .5;
  cursor: not-allowed;
}

/* Stepper */
.page-almacen-fisico .ti-steps {
  flex: none;
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 7px 12px;
  list-style: none;
  counter-reset: none;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-tint-bg);
}

.page-almacen-fisico .ti-steps .ti-step {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  min-width: 0;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--muted);
  white-space: nowrap;
}

.page-almacen-fisico .ti-steps .ti-step + .ti-step {
  flex: 1 1 0;
}

.page-almacen-fisico .ti-steps .ti-step + .ti-step::before {
  content: "";
  flex: 1 1 auto;
  min-width: 16px;
  height: 2px;
  margin-right: 2px;
  border-radius: 2px;
  background: var(--line);
}

.page-almacen-fisico .ti-steps .ti-step.is-done + .ti-step::before {
  background: var(--ti-ok-bd);
}

.page-almacen-fisico .ti-steps .ti-step-num {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--panel);
  font-size: 11.5px;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-steps .ti-step.is-done {
  color: var(--text);
}

.page-almacen-fisico .ti-steps .ti-step.is-current {
  color: var(--text);
}

.page-almacen-fisico .ti-steps .ti-step.is-current .ti-step-num {
  border-color: var(--accent);
  background: var(--accent);
  color: #1b1b00;
}

.page-almacen-fisico .ti-steps .ti-step.is-done .ti-step-num {
  border-color: var(--ti-ok-bd);
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

/* File step: modal hugs its content instead of the tall review height */
#tiModal[data-dialog="import"]:has(.ti-drop) .vj-modal {
  width: min(900px, calc(100vw - 32px));
  height: auto;
  max-height: min(92dvh, 880px);
}

#tiModal[data-dialog="import"]:has(.ti-drop) .vj-modal-body {
  gap: 12px;
}

/* Drop zone: single horizontal strip */
.page-almacen-fisico .ti-drop {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  border: 1.5px dashed var(--ti-hover-bd);
  border-radius: 12px;
  background: var(--ti-tint-bg);
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}

.page-almacen-fisico .ti-drop-text {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.page-almacen-fisico .ti-drop:hover,
.page-almacen-fisico .ti-drop.is-drag {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-drop:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-drop-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 44px;
  height: 44px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
  color: var(--muted);
  transition: color .15s ease, border-color .15s ease;
}

.page-almacen-fisico .ti-drop:hover .ti-drop-icon,
.page-almacen-fisico .ti-drop.is-drag .ti-drop-icon {
  border-color: var(--ti-selected-bd);
  color: var(--text);
}

.page-almacen-fisico .ti-drop-title {
  font-size: 14px;
  font-weight: 800;
}

.page-almacen-fisico .ti-drop-sub {
  font-size: 12.5px;
  color: var(--muted);
}

.page-almacen-fisico .ti-drop-btn {
  flex: none;
  pointer-events: none;
}

@media (max-width: 600px) {
  .page-almacen-fisico .ti-drop {
    flex-direction: column;
    text-align: center;
    padding: 18px 14px;
  }

  .page-almacen-fisico .ti-drop-btn {
    align-self: stretch;
    justify-content: center;
  }
}

/* Format guide */
.page-almacen-fisico .ti-help {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--muted);
}

.page-almacen-fisico .ti-table--compact th,
.page-almacen-fisico .ti-table--compact td {
  padding: 8px 12px;
}

.page-almacen-fisico .ti-table--compact th {
  position: static;
}

/* Template card: mini spreadsheet preview + download */
#tiModal .section.ti-modal-section.ti-tpl {
  gap: 10px;
  padding: 14px 16px;
}

.page-almacen-fisico .ti-tpl-head {
  display: flex;
  align-items: center;
  gap: 12px;
}

.page-almacen-fisico .ti-tpl-icon {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 1px solid var(--ti-ok-bd);
  border-radius: 8px;
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-tpl-titles {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.page-almacen-fisico .ti-tpl-title {
  font-size: 14px;
  font-weight: 800;
  color: var(--text);
}

.page-almacen-fisico .ti-tpl-sub {
  font-size: 12.5px;
  line-height: 1.4;
  color: var(--muted);
}

.page-almacen-fisico .ti-tpl-btn {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.page-almacen-fisico .ti-tpl-sheet {
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
}

.page-almacen-fisico .ti-tpl-grid {
  width: 100%;
  min-width: 560px;
  border-collapse: collapse;
  table-layout: auto;
  font: 600 12px ui-monospace, Consolas, monospace;
}

.page-almacen-fisico .ti-tpl-grid th,
.page-almacen-fisico .ti-tpl-grid td {
  padding: 5px 8px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
}

.page-almacen-fisico .ti-tpl-grid th {
  background: var(--ti-tint-bg);
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  text-align: center;
}

.page-almacen-fisico .ti-tpl-grid td:not(.is-head) {
  max-width: 18ch;
}

.page-almacen-fisico .ti-tpl-grid td.is-head {
  white-space: normal;
  vertical-align: bottom;
}

.page-almacen-fisico .ti-tpl-grid .ti-tpl-corner,
.page-almacen-fisico .ti-tpl-grid tbody th {
  width: 34px;
}

.page-almacen-fisico .ti-tpl-grid tr > :last-child {
  border-right: 0;
}

.page-almacen-fisico .ti-tpl-grid tbody tr:last-child > * {
  border-bottom: 0;
}

.page-almacen-fisico .ti-tpl-grid td.is-head {
  font-weight: 800;
  color: var(--text);
}

.page-almacen-fisico .ti-tpl-grid td.is-req::after,
.page-almacen-fisico .ti-tpl-req {
  color: var(--ti-err-fg);
  font-weight: 800;
}

.page-almacen-fisico .ti-tpl-grid td.is-req::after {
  content: "\00a0*";
}

.page-almacen-fisico .ti-tpl-grid tbody tr:last-child td {
  color: var(--muted);
}

.page-almacen-fisico .ti-tpl-note {
  margin: 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}

@media (max-width: 600px) {
  .page-almacen-fisico .ti-tpl-head {
    flex-wrap: wrap;
  }

  .page-almacen-fisico .ti-tpl-btn {
    flex: 1 1 100%;
    justify-content: center;
    min-height: 38px;
  }
}

/* Banners (info / warn / error / ok) */
.page-almacen-fisico .ti-decisions {
  display: grid;
  gap: 10px;
}

.page-almacen-fisico .ti-banner {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg-2, var(--panel));
}

.page-almacen-fisico .ti-banner.is-error {
  background: var(--ti-err-bg);
  border-color: var(--ti-err-bd);
}

.page-almacen-fisico .ti-banner.is-warn {
  background: var(--ti-warn-bg);
  border-color: var(--ti-warn-bd);
}

.page-almacen-fisico .ti-banner.is-info {
  background: var(--ti-info-bg);
  border-color: var(--ti-info-bd);
}

.page-almacen-fisico .ti-banner.is-ok {
  background: var(--ti-ok-bg);
  border-color: var(--ti-ok-bd);
}

.page-almacen-fisico .ti-banner-icon {
  display: inline-flex;
  flex-shrink: 0;
  margin-top: 1px;
}

.page-almacen-fisico .ti-banner.is-error .ti-banner-icon { color: var(--ti-err-fg); }
.page-almacen-fisico .ti-banner.is-warn .ti-banner-icon { color: var(--ti-warn-fg); }
.page-almacen-fisico .ti-banner.is-info .ti-banner-icon { color: var(--ti-info-fg); }
.page-almacen-fisico .ti-banner.is-ok .ti-banner-icon { color: var(--ti-ok-fg); }

.page-almacen-fisico .ti-banner-body {
  display: grid;
  gap: 6px;
  min-width: 0;
  flex: 1;
}

.page-almacen-fisico .ti-banner-title {
  font-size: 13.5px;
  font-weight: 800;
  color: var(--text);
}

.page-almacen-fisico .ti-banner-text {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--text);
}

.page-almacen-fisico .ti-banner-text.muted {
  color: var(--muted);
}

.page-almacen-fisico .ti-banner-btn,
.page-almacen-fisico .ti-imp-table-tools .btn,
.page-almacen-fisico .ti-result-report .btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  justify-self: start;
}

.page-almacen-fisico .ti-format-cols {
  display: grid;
  gap: 10px;
  margin-top: 4px;
}

.page-almacen-fisico .ti-format-cols .k {
  display: block;
  margin-bottom: 4px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted);
}

.page-almacen-fisico .ti-colchips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.page-almacen-fisico .ti-colchip {
  display: inline-flex;
  align-items: center;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  font: 700 11.5px ui-monospace, Consolas, monospace;
}

.page-almacen-fisico .ti-colchip.is-ok {
  border-color: var(--ti-ok-bd);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-colchip.is-ignored {
  color: var(--muted);
  text-decoration: line-through;
}

.page-almacen-fisico .ti-colchip.is-missing {
  border-style: dashed;
  border-color: var(--ti-err-bd);
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-inline-field {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
}

.page-almacen-fisico .ti-inline-field select {
  min-height: 32px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-weight: 600;
}

/* Busy */
.page-almacen-fisico .ti-busy {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex: 1;
  min-height: 260px;
  text-align: center;
}

.page-almacen-fisico .ti-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid color-mix(in srgb, var(--accent) 22%, transparent);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: ti-spin .8s linear infinite;
}

@keyframes ti-spin {
  to { transform: rotate(360deg); }
}

/* File bar */
.page-almacen-fisico .ti-file-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg-2, var(--panel));
}

.page-almacen-fisico .ti-file-icon {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: 1px solid var(--ti-ok-bd);
  border-radius: 8px;
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-file-info {
  display: grid;
  gap: 2px;
  min-width: 0;
  flex: 1;
}

.page-almacen-fisico .ti-file-name {
  font-size: 13.5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-file-meta {
  font-size: 12px;
  color: var(--muted);
}

/* Count cards (filters in review, stats in result) */
.page-almacen-fisico .ti-imp-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));
  gap: 8px;
}

.page-almacen-fisico .ti-imp-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg-2, var(--panel));
  color: var(--text);
  font: inherit;
  text-align: left;
}

.page-almacen-fisico button.ti-imp-card {
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}

.page-almacen-fisico button.ti-imp-card:hover:not(:disabled) {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

.page-almacen-fisico button.ti-imp-card:disabled {
  cursor: default;
  opacity: .55;
}

.page-almacen-fisico button.ti-imp-card:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico button.ti-imp-card[aria-pressed="true"] {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-imp-card-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--muted);
}

.page-almacen-fisico .ti-imp-card-label::before {
  content: "";
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--muted);
}

.page-almacen-fisico .ti-imp-card.is-all .ti-imp-card-label::before { display: none; }
.page-almacen-fisico .ti-imp-card:is(.is-new, .is-ok) .ti-imp-card-label::before { background: var(--ti-ok-fg); }
.page-almacen-fisico .ti-imp-card:is(.is-existing, .is-info) .ti-imp-card-label::before { background: var(--ti-info-fg); }
.page-almacen-fisico .ti-imp-card:is(.is-duplicate, .is-warning, .is-warn) .ti-imp-card-label::before { background: var(--ti-warn-fg); }
.page-almacen-fisico .ti-imp-card:is(.is-error, .is-err) .ti-imp-card-label::before { background: var(--ti-err-fg); }

.page-almacen-fisico .ti-imp-card-value {
  font-size: 20px;
  font-weight: 800;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-imp-card.is-new .ti-imp-card-value,
.page-almacen-fisico .ti-imp-card.is-ok .ti-imp-card-value { color: var(--ti-ok-fg); }
.page-almacen-fisico .ti-imp-card.is-existing .ti-imp-card-value,
.page-almacen-fisico .ti-imp-card.is-info .ti-imp-card-value { color: var(--ti-info-fg); }
.page-almacen-fisico .ti-imp-card.is-duplicate .ti-imp-card-value,
.page-almacen-fisico .ti-imp-card.is-warning .ti-imp-card-value,
.page-almacen-fisico .ti-imp-card.is-warn .ti-imp-card-value { color: var(--ti-warn-fg); }
.page-almacen-fisico .ti-imp-card.is-error .ti-imp-card-value,
.page-almacen-fisico .ti-imp-card.is-err .ti-imp-card-value { color: var(--ti-err-fg); }
.page-almacen-fisico .ti-imp-card.is-muted .ti-imp-card-value { color: var(--muted); }

/* Existing policy (segmented radios) */
.page-almacen-fisico .ti-imp-seg {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
}

.page-almacen-fisico .ti-imp-seg-opt {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
}

.page-almacen-fisico .ti-imp-seg-opt:has(input:checked) {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-imp-seg-opt input {
  accent-color: var(--accent);
  margin: 0;
}

/* Review table */
#tiModal .section.ti-imp-table-card {
  flex: 0 0 auto;
  height: min(62dvh, 580px);
  min-height: 320px;
}

.page-almacen-fisico .ti-imp-table-tools {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
}

.page-almacen-fisico .ti-imp-table-tools .ti-imp-search {
  flex: 0 1 320px;
  min-width: 0;
}

.page-almacen-fisico .ti-imp-shown {
  margin-right: auto;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-imp-table {
  min-width: 1060px;
}

.page-almacen-fisico .ti-imp-table td {
  vertical-align: top;
  padding: 9px 12px;
}

.page-almacen-fisico .ti-imp-table tr.is-error td {
  background: var(--ti-row-err);
}

.page-almacen-fisico .ti-imp-table tr.is-duplicate td {
  background: var(--ti-row-warn);
}

.page-almacen-fisico .ti-imp-table tr.is-skipped td:not(.ti-imp-action):not(.ti-imp-detail) {
  opacity: .62;
}

.page-almacen-fisico .ti-line {
  color: var(--muted);
  font-size: 12px;
}

.page-almacen-fisico .ti-imp-desc {
  white-space: normal !important;
  min-width: 200px;
  max-width: 300px;
  line-height: 1.35;
}

.page-almacen-fisico .ti-badges {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}

.page-almacen-fisico .ti-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}

.page-almacen-fisico .ti-badge.is-ok { background: var(--ti-ok-bg); border-color: var(--ti-ok-bd); color: var(--ti-ok-fg); }
.page-almacen-fisico .ti-badge.is-info { background: var(--ti-info-bg); border-color: var(--ti-info-bd); color: var(--ti-info-fg); }
.page-almacen-fisico .ti-badge.is-warn { background: var(--ti-warn-bg); border-color: var(--ti-warn-bd); color: var(--ti-warn-fg); }
.page-almacen-fisico .ti-badge.is-err { background: var(--ti-err-bg); border-color: var(--ti-err-bd); color: var(--ti-err-fg); }

.page-almacen-fisico .ti-imp-detail {
  white-space: normal !important;
  min-width: 220px;
  max-width: 320px;
}

.page-almacen-fisico .ti-msgs {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 3px;
  font-size: 12px;
  line-height: 1.4;
}

.page-almacen-fisico .ti-msgs li {
  position: relative;
  padding-left: 13px;
}

.page-almacen-fisico .ti-msgs li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .5em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--muted);
}

.page-almacen-fisico .ti-msgs li.is-err { color: var(--ti-err-fg); }
.page-almacen-fisico .ti-msgs li.is-err::before { background: var(--ti-err-fg); }
.page-almacen-fisico .ti-msgs li.is-warn { color: var(--ti-warn-fg); }
.page-almacen-fisico .ti-msgs li.is-warn::before { background: var(--ti-warn-fg); }
.page-almacen-fisico .ti-msgs li.is-info { color: var(--text); }
.page-almacen-fisico .ti-msgs li.is-info::before { background: var(--ti-info-fg); }

.page-almacen-fisico .ti-msg-ok {
  font-size: 12px;
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-act-select {
  min-height: 30px;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: 12.5px;
  font-weight: 700;
}

.page-almacen-fisico .ti-act-select.is-create { border-color: var(--ti-ok-bd); color: var(--ti-ok-fg); }
.page-almacen-fisico .ti-act-select.is-update { border-color: var(--ti-info-bd); color: var(--ti-info-fg); }
.page-almacen-fisico .ti-act-select.is-skip { color: var(--muted); }

.page-almacen-fisico .ti-act-note {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}

.page-almacen-fisico .ti-act-note.is-err {
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-use-btn {
  white-space: nowrap;
}

/* Result */
.page-almacen-fisico .ti-result {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 18px 12px 6px;
  text-align: center;
}

.page-almacen-fisico .ti-result-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 60px;
  height: 60px;
  border-radius: 14px;
  border: 1px solid var(--line);
  color: var(--muted);
}

.page-almacen-fisico .ti-result.is-ok .ti-result-icon {
  border-color: var(--ti-ok-bd);
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-result-title {
  margin: 4px 0 0;
  font-size: 17px;
  font-weight: 800;
}

.page-almacen-fisico .ti-result p {
  margin: 0;
  font-size: 13px;
}

.page-almacen-fisico .ti-result-report {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}

.page-almacen-fisico .ti-result-report .ti-help {
  flex: 1 1 240px;
}

.page-almacen-fisico .ti-result-report-icon {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  color: var(--muted);
}

.page-almacen-fisico .ti-imp-cards--static {
  max-width: 760px;
  width: 100%;
  margin: 0 auto;
}

.page-almacen-fisico .ti-imp-cards--static .ti-imp-card {
  align-items: center;
  text-align: center;
}

@media (max-width: 700px) {
  .page-almacen-fisico .ti-steps {
    padding: 8px 10px;
  }

  .page-almacen-fisico .ti-steps .ti-step:not(.is-current) .ti-step-label {
    display: none;
  }

  .page-almacen-fisico .ti-imp-table-tools {
    flex-wrap: wrap;
  }

  .page-almacen-fisico .ti-imp-table-tools .ti-imp-search {
    flex: 1 1 100%;
  }

  .page-almacen-fisico .ti-imp-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .page-almacen-fisico .ti-imp-card {
    padding: 8px 10px;
  }

  .page-almacen-fisico .ti-imp-card-value {
    font-size: 17px;
  }

  .page-almacen-fisico .ti-file-bar .btn {
    flex: 1 1 auto;
  }

  .page-almacen-fisico .ti-result-report .btn {
    flex: 1 1 100%;
    justify-content: center;
  }

  .page-almacen-fisico .ti-footer-summary {
    flex-basis: 100%;
  }
}

@media (max-width: 420px) {
  .page-almacen-fisico .ti-imp-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* =============================================
   RESPONSIVE — MODAL GRIDS
   ============================================= */

@media (max-width: 640px) {
  .page-almacen-fisico .vj-modal .grid-4,
  .page-almacen-fisico .ti-type-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .page-almacen-fisico .ti-move-grid {
    grid-template-columns: 1fr;
  }

  .page-almacen-fisico .ti-item-ctx {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }

  .page-almacen-fisico .ti-ctx-stats > div {
    align-items: flex-start;
  }

  .page-almacen-fisico .ti-ctx-stats > div:first-child {
    padding-left: 0;
    border-left: 0;
  }

  .page-almacen-fisico .ti-search-field {
    flex: 1 1 100%;
  }

  .page-almacen-fisico .ti-toolbar-count {
    margin-left: 0;
  }
}

/* Small screens: modal becomes a full-height sheet */
@media (max-width: 600px) {
  #tiModal.vj-modal-backdrop,
  #tiModal.vj-modal-backdrop:has(.vj-modal) {
    padding: 0;
    align-items: stretch;
  }

  #tiModal .vj-modal,
  #tiModal[data-dialog] .vj-modal {
    width: 100vw;
    height: var(--vj-vvh, 100dvh);
    max-height: none;
    border: 0;
    border-radius: 0;
  }

  #tiModal .vj-modal-body {
    padding: 14px;
  }

  #tiModal .section.ti-modal-section {
    padding: 14px;
  }

  #tiModal .vj-modal-actions {
    flex-wrap: wrap;
    padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
  }

  #tiModal .vj-modal-actions .btn {
    flex: 1 1 0;
  }

  #tiModal .ti-foot-note {
    flex-basis: 100%;
    margin-right: 0;
    white-space: normal;
  }

  #tiModal .vj-modal-head {
    padding: 12px 10px 12px 14px;
  }
}

@media (max-width: 420px) {
  .page-almacen-fisico .vj-modal .grid-4,
  .page-almacen-fisico .ti-type-grid {
    grid-template-columns: 1fr;
  }
}

/* =============================================
   REQUISICIONES DE COMPRA
   ============================================= */

#tiModal[data-dialog="requisitions"] .vj-modal,
#tiModal[data-dialog="requisition"] .vj-modal {
  width: min(1100px, calc(100vw - 32px));
  height: min(86dvh, 820px);
}

#tiModal[data-dialog="requisition-form"] .vj-modal {
  width: min(980px, calc(100vw - 32px));
  height: min(90dvh, 860px);
}

#tiModal[data-dialog="requisitions"] .vj-modal-body {
  padding: 16px 20px;
}

#tiModal .btn.ghost.danger {
  color: var(--ti-err-fg);
  border-color: var(--ti-err-bd);
}

#tiModal .btn.ghost.danger:hover {
  background: var(--ti-err-bg);
}

.page-almacen-fisico .ti-rq-st--pending_manager,
.page-almacen-fisico .ti-rq-st--pending_controller {
  background: var(--ti-warn-bg);
  border-color: var(--ti-warn-bd);
  color: var(--ti-warn-fg);
}

.page-almacen-fisico .ti-rq-st--approved {
  background: var(--ti-info-bg);
  border-color: var(--ti-info-bd);
  color: var(--ti-info-fg);
}

.page-almacen-fisico .ti-rq-st--received {
  background: var(--ti-ok-bg);
  border-color: var(--ti-ok-bd);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-rq-st--rejected {
  background: var(--ti-err-bg);
  border-color: var(--ti-err-bd);
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-rq-st--cancelled {
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-row {
  cursor: pointer;
}

.page-almacen-fisico .ti-rq-row:hover {
  background: var(--ti-row-hover);
}

.page-almacen-fisico .ti-rq-row:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}

/* ---- list table */

.page-almacen-fisico .ti-rq-table {
  width: 100%;
  min-width: 980px;
  table-layout: fixed;
}

.page-almacen-fisico .ti-rq-table th,
.page-almacen-fisico .ti-rq-table td {
  padding: 10px 12px;
}

.page-almacen-fisico .ti-rq-table td {
  border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}

.page-almacen-fisico .ti-rq-table tbody tr:last-child td {
  border-bottom: 0;
}

.page-almacen-fisico .ti-rq-table .ti-rq-c-folio { width: 144px; }
.page-almacen-fisico .ti-rq-table .ti-rq-c-req { width: 170px; }
.page-almacen-fisico .ti-rq-table .ti-rq-c-date { width: 112px; }
.page-almacen-fisico .ti-rq-table .ti-rq-c-total { width: 150px; }
.page-almacen-fisico .ti-rq-table .ti-rq-c-state { width: 150px; }
.page-almacen-fisico .ti-rq-table .ti-actions-head { width: 104px; }
.page-almacen-fisico .ti-rq-table.can-delete .ti-actions-head { width: 144px; }

.page-almacen-fisico .ti-rq-table td.ti-rq-c-mat,
.page-almacen-fisico .ti-rq-table td.ti-rq-c-req {
  overflow: hidden;
}

.page-almacen-fisico .ti-rq-table td.ti-rq-c-mat .ti-la {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-table .ti-rq-folio-date {
  display: none;
}

@media (max-width: 1100px) {
  .page-almacen-fisico .ti-rq-table {
    min-width: 760px;
  }

  .page-almacen-fisico .ti-rq-table .ti-rq-c-date {
    display: none;
  }

  .page-almacen-fisico .ti-rq-table .ti-rq-c-folio { width: 136px; }
  .page-almacen-fisico .ti-rq-table .ti-rq-c-req { width: 150px; }
  .page-almacen-fisico .ti-rq-table .ti-rq-c-total { width: 132px; }
  .page-almacen-fisico .ti-rq-table .ti-rq-c-state { width: 140px; }
  .page-almacen-fisico .ti-rq-table .ti-actions-head { width: 96px; }
  .page-almacen-fisico .ti-rq-table.can-delete .ti-actions-head { width: 136px; }

  .page-almacen-fisico .ti-rq-table .ti-rq-folio-date {
    display: block;
    margin-top: 2px;
    font-size: 12px;
    color: var(--muted);
  }

  .page-almacen-fisico .ti-rq-table .ti-rq-folio-date .ti-rq-date,
  .page-almacen-fisico .ti-rq-table .ti-rq-folio-date .ti-rq-time {
    display: block;
    font-size: inherit;
    color: inherit;
    white-space: nowrap;
  }

  .page-almacen-fisico .ti-rq-table thead th {
    white-space: normal;
    overflow-wrap: anywhere;
    vertical-align: bottom;
  }

}

.page-almacen-fisico .ti-rq-table td.ti-actions {
  display: table-cell;
  text-align: right;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-table .ti-mat {
  min-width: 0;
  max-width: none;
}

.page-almacen-fisico .ti-rq-table .ti-mat-desc {
  -webkit-line-clamp: 1;
}

#tiModal .section.ti-table-card .vj-grid-host {
  background: var(--vj-wrap-bg);
}

#tiModal .section.ti-table-card .vj-grid-host .ti-table--grid thead th {
  z-index: 6;
  background: var(--vj-th-bg);
  border-bottom-color: var(--vj-border);
}

#tiModal .vj-grid-host .ti-rq-table td.ti-actions {
  text-align: center;
}

#tiModal .vj-grid-host .ti-rq-table td.ti-actions .ti-icon-btn {
  margin-left: 4px;
  vertical-align: middle;
}

.page-almacen-fisico .ti-rq-folio {
  font-size: 13px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-mat-name,
.page-almacen-fisico .ti-rq-who {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-more {
  display: inline-block;
  margin-top: 4px;
  padding: 0 6px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 10.5px;
  font-weight: 700;
  line-height: 16px;
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-sub,
.page-almacen-fisico .ti-rq-time {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-c-req .ti-rq-origin {
  display: inline-block;
}

.page-almacen-fisico .ti-rq-date {
  display: block;
  font-size: 13px;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-c-total .ti-money {
  display: block;
  font-weight: 700;
  white-space: normal;
}

.page-almacen-fisico .ti-rq-c-total .ti-money-orig {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-review {
  border: 1px solid var(--ti-warn-bd);
  background: var(--ti-warn-bg);
  color: var(--ti-warn-fg);
  font-weight: 700;
}

.page-almacen-fisico .ti-rq-review:hover {
  border-color: var(--ti-warn-fg);
}

/* ---- form */

.page-almacen-fisico .ti-rq-head-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.page-almacen-fisico .ti-rq-lines {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* Approval route shown on top of the form */
.page-almacen-fisico .ti-rq-route {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 8px;
  margin: 0;
  padding: 10px 12px;
  list-style: none;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-tint-bg);
}

.page-almacen-fisico .ti-rq-route-step {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-route-n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  font-size: 11px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-rq-route-step.is-current {
  color: var(--text);
  font-weight: 700;
}

.page-almacen-fisico .ti-rq-route-step.is-current .ti-rq-route-n {
  border-color: var(--ti-warn-bd);
  background: var(--ti-warn-bg);
  color: var(--ti-warn-fg);
}

.page-almacen-fisico .ti-rq-route-arrow {
  color: var(--muted);
  opacity: .7;
}

/* Material card: header (number, inventory link, amount, remove) + field grid */
.page-almacen-fisico .ti-rq-line {
  margin: 0;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
  min-width: 0;
}

.page-almacen-fisico .ti-rq-line.is-linked {
  border-color: var(--ti-info-bd);
}

.page-almacen-fisico .ti-rq-line-head {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 42px;
  padding: 6px 8px 6px 12px;
  border-bottom: 1px solid var(--line);
  border-radius: 10px 10px 0 0;
  background: var(--ti-tint-bg);
}

.page-almacen-fisico .ti-rq-line-no {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
  background: var(--panel);
}

.page-almacen-fisico .ti-rq-line-meta {
  display: flex;
  align-items: center;
  min-width: 0;
  margin-right: auto;
}

.page-almacen-fisico .ti-rq-line-amount {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-line-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 10px 12px;
  padding: 12px;
}

.page-almacen-fisico .ti-rq-f-part { grid-column: span 3; }
.page-almacen-fisico .ti-rq-f-desc { grid-column: span 5; }
.page-almacen-fisico .ti-rq-f-qty { grid-column: span 2; }
.page-almacen-fisico .ti-rq-f-uom { grid-column: span 2; }
.page-almacen-fisico .ti-rq-f-price { grid-column: span 2; }
.page-almacen-fisico .ti-rq-f-cur { grid-column: span 2; }
.page-almacen-fisico .ti-rq-f-sup { grid-column: span 3; }
.page-almacen-fisico .ti-rq-f-com { grid-column: span 5; }

.page-almacen-fisico .ti-rq-amount-label {
  font-size: 11px;
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-line-amount .ti-money {
  font-size: 14px;
}

.page-almacen-fisico .ti-rq-catalog {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  font-weight: 600;
  color: var(--ti-warn-fg);
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-total {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: flex-end;
  gap: 4px 10px;
  padding: 10px 12px;
  border-top: 1px solid var(--line);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-rq-total .k {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-total .ti-money {
  font-size: 15px;
}

.page-almacen-fisico .ti-rq-total .ti-money-orig,
.page-almacen-fisico .ti-rq-total-cell .ti-money-orig {
  font-size: 11px;
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-line-x {
  flex-shrink: 0;
}

.page-almacen-fisico .ti-rq-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 8px;
  border: 1px solid var(--ti-info-bd);
  border-radius: 8px;
  background: var(--ti-info-bg);
  color: var(--ti-info-fg);
  font-size: 11px;
  font-weight: 700;
}

.page-almacen-fisico .ti-rq-free {
  display: block;
  font-size: 11px;
  color: var(--muted);
}

.page-almacen-fisico .ti-rq-f-part {
  position: relative;
}

.page-almacen-fisico .ti-rq-sugg {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 30;
  width: min(520px, calc(100vw - 48px));
  border: 1px solid var(--ti-selected-bd);
  border-radius: 10px;
  background: var(--panel);
  overflow: hidden;
}

.page-almacen-fisico .ti-rq-sugg-head,
.page-almacen-fisico .ti-rq-sugg-more {
  padding: 7px 12px;
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.02em;
}

.page-almacen-fisico .ti-rq-sugg-head {
  border-bottom: 1px solid var(--line);
  text-transform: uppercase;
}

.page-almacen-fisico .ti-rq-sugg-more {
  border-top: 1px solid var(--line);
  font-weight: 600;
}

.page-almacen-fisico .ti-rq-sugg-list {
  list-style: none;
  margin: 0;
  padding: 4px;
  max-height: 300px;
  overflow-y: auto;
}

.page-almacen-fisico .ti-rq-sugg-opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 8px;
  cursor: pointer;
}

.page-almacen-fisico .ti-rq-sugg-opt:hover {
  background: var(--ti-hover-bg);
  border-color: var(--ti-hover-bd);
}

.page-almacen-fisico .ti-rq-sugg-opt[aria-selected="true"] {
  background: var(--ti-selected-bg);
  border-color: var(--ti-selected-bd);
}

.page-almacen-fisico .ti-rq-sugg-main {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.page-almacen-fisico .ti-rq-sugg-main .ti-la {
  font-size: 13px;
}

.page-almacen-fisico .ti-rq-sugg-desc {
  font-size: 12px;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-sugg mark {
  padding: 0 1px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--accent) 45%, transparent);
  color: inherit;
}

.page-almacen-fisico .ti-rq-sugg-side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}

.page-almacen-fisico .ti-rq-sugg-loc,
.page-almacen-fisico .ti-rq-sugg-tag {
  font-size: 11px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-rq-sugg-tag {
  color: var(--ti-info-fg);
  font-weight: 700;
}

.page-almacen-fisico .ti-rq-sugg-empty {
  padding: 14px 12px;
  font-size: 12px;
  color: var(--muted);
}

@media (max-width: 720px) {
  .page-almacen-fisico .ti-rq-sugg {
    width: 100%;
  }
}

.page-almacen-fisico .ti-rq-lines-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
}

.page-almacen-fisico .ti-rq-add-line {
  flex: 1 1 240px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 40px;
  padding: 8px 14px;
  border: 1px dashed var(--line);
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}

.page-almacen-fisico .ti-rq-add-line:hover:not(:disabled) {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
  color: var(--text);
}

.page-almacen-fisico .ti-rq-add-line:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-rq-add-line:disabled {
  opacity: .5;
  cursor: not-allowed;
}

.page-almacen-fisico .ti-rq-lines-actions .btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

/* ---- detail */

.page-almacen-fisico .ti-rq-detail {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.page-almacen-fisico .ti-rq-banner {
  align-items: center;
}

.page-almacen-fisico .ti-rq-banner > .ti-state {
  flex-shrink: 0;
  align-self: flex-start;
}

.page-almacen-fisico .ti-rq-banner.is-yours {
  border-color: var(--ti-warn-bd);
}

/* Two columns: materials | authorization */
.page-almacen-fisico .ti-rq-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 14px;
  align-items: start;
}

/* Keep the authorization column in view while the materials table scrolls */
#tiModal .ti-rq-detail-grid > .section.ti-rq-auth {
  position: sticky;
  top: 0;
  z-index: 1;
  max-height: calc(min(86dvh, 820px) - 150px);
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* Vertical authorization timeline */
.page-almacen-fisico .ti-rq-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.page-almacen-fisico .ti-rq-step {
  position: relative;
  display: flex;
  gap: 10px;
  padding-bottom: 16px;
}

.page-almacen-fisico .ti-rq-step:last-child {
  padding-bottom: 0;
}

.page-almacen-fisico .ti-rq-step:not(:last-child)::before {
  content: "";
  position: absolute;
  left: 11px;
  top: 28px;
  bottom: 4px;
  width: 2px;
  border-radius: 2px;
  background: var(--line);
}

.page-almacen-fisico .ti-rq-step.is-done:not(:last-child)::before {
  background: var(--ti-ok-bd);
}

.page-almacen-fisico .ti-rq-step-dot {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--line);
  border-radius: 50%;
  background: var(--panel);
}

.page-almacen-fisico .ti-rq-step.is-done .ti-rq-step-dot {
  border-color: var(--ti-ok-bd);
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-rq-step.is-current .ti-rq-step-dot {
  border-color: var(--ti-warn-fg);
  background: var(--ti-warn-bg);
}

.page-almacen-fisico .ti-rq-step.is-rejected .ti-rq-step-dot {
  border-color: var(--ti-err-bd);
  background: var(--ti-err-bg);
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-rq-step-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  padding-top: 2px;
  font-size: 13px;
}

.page-almacen-fisico .ti-rq-step.is-idle .ti-rq-step-body strong {
  color: var(--muted);
  font-weight: 600;
}

.page-almacen-fisico .ti-rq-step-meta {
  font-size: 12px;
  color: var(--muted);
  overflow-wrap: anywhere;
}

.page-almacen-fisico .ti-rq-step.is-current .ti-rq-step-meta {
  color: var(--ti-warn-fg);
  font-weight: 700;
}

.page-almacen-fisico .ti-rq-step-comment {
  margin-top: 6px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  font-size: 12.5px;
  line-height: 1.45;
  white-space: pre-line;
  overflow-wrap: anywhere;
}

.page-almacen-fisico .ti-rq-step.is-rejected .ti-rq-step-comment {
  border-color: var(--ti-err-bd);
  background: var(--ti-err-bg);
}

.page-almacen-fisico .ti-rq-decision {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

/* Meta strip */
.page-almacen-fisico .ti-rq-meta {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-tint-bg);
}

.page-almacen-fisico .ti-rq-meta > div {
  min-width: 0;
  padding: 10px 14px;
}

.page-almacen-fisico .ti-rq-meta > div + div {
  border-left: 1px solid var(--line);
}

.page-almacen-fisico .ti-rq-meta dt {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.page-almacen-fisico .ti-rq-meta dd {
  margin: 3px 0 0;
  font-size: 13.5px;
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Lines table */
#tiModal[data-dialog="requisition"] .vj-modal {
  width: min(1180px, calc(100vw - 32px));
}

#tiModal .section.ti-rq-mat {
  flex: 0 1 auto;
}

#tiModal .ti-rq-mat .ti-section-head {
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  margin: 0;
  padding: 14px 16px 12px;
}

#tiModal .ti-rq-mat .ti-modal-table {
  overflow-x: auto;
}

.page-almacen-fisico .ti-rq-lines-table {
  width: 100%;
  min-width: 700px;
}

.page-almacen-fisico .ti-rq-lines-table th {
  white-space: normal;
  line-height: 1.25;
  vertical-align: bottom;
}

.page-almacen-fisico .ti-rq-lines-table th,
.page-almacen-fisico .ti-rq-lines-table td {
  padding: 10px 12px;
}

.page-almacen-fisico .ti-rq-lines-table td {
  vertical-align: top;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}

.page-almacen-fisico .ti-rq-lines-table tbody tr:last-child td {
  border-bottom: 0;
}

.page-almacen-fisico .ti-rq-lines-table tbody tr:hover td {
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-rq-lines-table .ti-rq-col-no {
  width: 36px;
  padding-right: 4px;
}

.page-almacen-fisico .ti-rq-lines-table td.ti-rq-col-no {
  padding-top: 12px;
}

.page-almacen-fisico .ti-rq-lines-table .ti-mat {
  min-width: 0;
  max-width: none;
  width: auto;
}

.page-almacen-fisico .ti-rq-lines-table td.ti-num {
  padding-top: 12px;
  white-space: nowrap;
}

.page-almacen-fisico .ti-rq-lines-table .ti-rq-col-recv {
  width: 104px;
}

.page-almacen-fisico .ti-rq-lines-table td.ti-rq-col-recv,
.page-almacen-fisico .ti-rq-lines-table td:has(> .ti-rq-recv) {
  padding-top: 6px;
}

.page-almacen-fisico .ti-rq-part {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.page-almacen-fisico .ti-rq-desc {
  display: block;
  margin-top: 2px;
  font-size: 13px;
  line-height: 1.35;
}

.page-almacen-fisico .ti-rq-extra {
  display: block;
  margin-top: 3px;
  font-size: 12px;
  color: var(--muted);
  overflow-wrap: anywhere;
}

.page-almacen-fisico .ti-rq-free-chip,
.page-almacen-fisico .ti-rq-origin {
  padding: 1px 6px;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 10.5px;
  font-weight: 700;
  color: var(--muted);
  background: transparent;
}

.page-almacen-fisico .ti-rq-qty strong {
  font-size: 14px;
}

.page-almacen-fisico .ti-rq-qty .ti-muted-num {
  margin-left: 4px;
  font-size: 11px;
}

.page-almacen-fisico .ti-rq-short {
  color: var(--ti-warn-fg);
  font-weight: 700;
}

#tiModal .ti-rq-recv {
  width: 84px;
  height: 34px;
  padding: 0 10px;
  text-align: right;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  color: var(--text);
}

#tiModal .ti-rq-recv:hover {
  border-color: var(--ti-hover-bd);
}

#tiModal .ti-rq-recv:focus-visible {
  outline: none;
  border-color: var(--ti-selected-bd);
  box-shadow: 0 0 0 2px var(--hc-focus);
}

#tiModal .ti-rq-recv.is-short {
  border-color: var(--ti-warn-bd);
  background: var(--ti-warn-bg);
  color: var(--ti-warn-fg);
}

#tiModal .ti-rq-recv[aria-invalid]:not([aria-invalid="false"]) {
  border-color: var(--ti-err-fg);
}

#tiModal .ti-rq-mat .ti-rq-note {
  margin: 12px 16px 16px;
}

/* Notes */
.page-almacen-fisico .ti-rq-note {
  margin-top: 12px;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-tint-bg);
}

.page-almacen-fisico .ti-rq-note .k {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.page-almacen-fisico .ti-rq-note p {
  margin: 4px 0 0;
  font-size: 13px;
  line-height: 1.5;
  white-space: pre-line;
  overflow-wrap: anywhere;
}

.page-almacen-fisico .ti-rq-comment {
  margin: 0;
}

@media (max-width: 1100px) {
  .page-almacen-fisico .ti-rq-detail-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  #tiModal .ti-rq-detail-grid > .section.ti-rq-auth {
    position: static;
    max-height: none;
    overflow: visible;
  }
}

@media (max-width: 860px) {
  .page-almacen-fisico .ti-rq-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .page-almacen-fisico .ti-rq-meta > div:nth-child(3) {
    border-left: 0;
  }

  .page-almacen-fisico .ti-rq-meta > div:nth-child(n + 3) {
    border-top: 1px solid var(--line);
  }
}

@media (max-width: 560px) {
  .page-almacen-fisico .ti-rq-banner {
    flex-wrap: wrap;
  }
}

/* The form adapts to the modal width, not the window: the modal can be wide in a narrow iframe. */
.page-almacen-fisico .ti-rq-form {
  container: rqform / inline-size;
}

@container rqform (max-width: 780px) {
  .page-almacen-fisico .ti-rq-f-part { grid-column: span 4; }
  .page-almacen-fisico .ti-rq-f-desc { grid-column: span 8; }
  .page-almacen-fisico .ti-rq-f-qty,
  .page-almacen-fisico .ti-rq-f-uom,
  .page-almacen-fisico .ti-rq-f-price,
  .page-almacen-fisico .ti-rq-f-cur { grid-column: span 3; }
  .page-almacen-fisico .ti-rq-f-sup { grid-column: span 5; }
  .page-almacen-fisico .ti-rq-f-com { grid-column: span 7; }
}

@container rqform (max-width: 540px) {
  .page-almacen-fisico .ti-rq-head-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .page-almacen-fisico .ti-rq-head-grid > .fld:first-child {
    grid-column: 1 / -1;
  }

  .page-almacen-fisico .ti-rq-line-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .page-almacen-fisico .ti-rq-f-qty,
  .page-almacen-fisico .ti-rq-f-uom,
  .page-almacen-fisico .ti-rq-f-price,
  .page-almacen-fisico .ti-rq-f-cur {
    grid-column: span 1;
  }

  .page-almacen-fisico .ti-rq-f-part,
  .page-almacen-fisico .ti-rq-f-desc,
  .page-almacen-fisico .ti-rq-f-sup,
  .page-almacen-fisico .ti-rq-f-com {
    grid-column: 1 / -1;
  }

  .page-almacen-fisico .ti-rq-line-head {
    flex-wrap: wrap;
  }

  .page-almacen-fisico .ti-rq-route-step {
    font-size: 12px;
  }
}

@container rqform (max-width: 400px) {
  .page-almacen-fisico .ti-rq-head-grid,
  .page-almacen-fisico .ti-rq-line-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .page-almacen-fisico .ti-rq-f-qty,
  .page-almacen-fisico .ti-rq-f-uom,
  .page-almacen-fisico .ti-rq-f-price,
  .page-almacen-fisico .ti-rq-f-cur {
    grid-column: 1 / -1;
  }

  .page-almacen-fisico .ti-rq-route-arrow {
    display: none;
  }
}

@media (max-width: 720px) {
  #tiModal[data-dialog="requisitions"] .vj-modal-body {
    padding: 12px;
  }
}

/* =============================================
   REQUISICION - FORMATO IMPRESO
   ============================================= */

.rq-print {
  position: absolute;
  left: -10000px;
  top: 0;
  width: 277mm;
}

@media print {
  @page {
    size: A4 landscape;
    margin: 10mm;
  }

  body.is-printing-rq {
    background: #fff !important;
    color: #000 !important;
    min-height: 0;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.is-printing-rq > *:not(#rqPrintSheet) {
    display: none !important;
  }

  body.is-printing-rq .rq-print {
    position: static;
    width: auto;
  }
}

.rq-print-page {
  font-family: Arial, "Helvetica Neue", sans-serif;
  font-size: 10pt;
  color: #000;
  background: #fff;
}

.rq-print-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 8px;
}

.rq-print-folio {
  font-size: 8pt;
  color: #444;
}

.rq-print-company {
  font-size: 12pt;
  font-weight: 700;
}

.rq-print-title {
  margin: 4px 0 6px;
  font-size: 14pt;
  font-weight: 700;
}

.rq-print-date {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
}

.rq-print-date-box {
  min-width: 110px;
  padding: 2px 10px;
  border: 1px solid #000;
  font-weight: 400;
}

.rq-print-logo {
  height: 48px;
  width: auto;
}

.rq-print table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}

.rq-print th,
.rq-print td {
  border: 1px solid #000;
  padding: 4px 6px;
  vertical-align: top;
  overflow-wrap: anywhere;
}

.rq-print-band th {
  background: #ffc000;
  font-weight: 700;
  text-align: left;
}

.rq-print-band td {
  height: 22px;
}

.rq-print-conf {
  margin: 6px 0;
  font-size: 8pt;
  color: #555;
  text-align: right;
}

.rq-print-lines th {
  background: #1f2937;
  color: #fff;
  font-size: 8.5pt;
  text-align: center;
}

.rq-print-lines td {
  height: 20px;
  font-size: 9pt;
}

.rq-print-lines td.n {
  text-align: right;
}

.rq-print-lines td.c {
  text-align: center;
}

.rq-print-lines tr.total td {
  font-weight: 700;
  background: #f3f4f6;
}

.rq-print-lines tr {
  break-inside: avoid;
}

.rq-print-notes {
  margin-top: 8px;
  font-size: 9pt;
}

.rq-print-signs {
  display: flex;
  justify-content: space-around;
  gap: 40px;
  margin-top: 36px;
  break-inside: avoid;
}

.rq-print-sign {
  flex: 0 1 260px;
  text-align: center;
  font-size: 9.5pt;
  font-weight: 700;
}

.rq-print-sign-name {
  min-height: 16px;
  font-size: 8.5pt;
  font-weight: 400;
}

.rq-print-sign-line {
  margin: 4px 0;
  border-top: 1px solid #000;
}

.rq-print-sign-role {
  font-weight: 400;
}

.rq-print-footer {
  margin-top: 16px;
  font-size: 8pt;
  color: #555;
  text-align: right;
}

/* =============================================
   MATERIAL PHOTOS (thumbnails, photo dialog, viewer)
   ============================================= */

.page-almacen-fisico .ti-thumb {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 36px;
  height: 36px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  color: var(--muted);
  font: inherit;
}

.page-almacen-fisico .ti-thumb--sm {
  width: 28px;
  height: 28px;
  border-radius: 6px;
}

.page-almacen-fisico .ti-thumb.is-empty {
  border-style: dashed;
}

.page-almacen-fisico .ti-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.page-almacen-fisico .ti-thumb-ico {
  width: 52%;
  height: 52%;
  background-color: currentColor;
  opacity: .6;
  -webkit-mask: url("/assets/icons/icon-camara.png") center / contain no-repeat;
  mask: url("/assets/icons/icon-camara.png") center / contain no-repeat;
}

.page-almacen-fisico .ti-thumb-btn {
  display: inline-flex;
  flex: none;
  padding: 0;
  border: 0;
  border-radius: 8px;
  background: none;
  cursor: pointer;
}

.page-almacen-fisico button.ti-thumb {
  cursor: zoom-in;
}

.page-almacen-fisico .ti-thumb-btn:hover .ti-thumb,
.page-almacen-fisico button.ti-thumb:hover {
  border-color: var(--ti-hover-bd);
}

.page-almacen-fisico .ti-thumb-btn:hover .ti-thumb.is-empty {
  color: var(--text);
  background: var(--ti-hover-bg);
}

.page-almacen-fisico .ti-thumb-btn:focus-visible,
.page-almacen-fisico button.ti-thumb:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-la-cell {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.page-almacen-fisico .ti-rq-sugg-opt > .ti-thumb {
  flex: none;
}

.page-almacen-fisico .ti-rq-sugg-opt > .ti-rq-sugg-main {
  flex: 1 1 auto;
  min-width: 0;
}

/* Photo dialog */
#tiModal[data-dialog="photo"] .vj-modal {
  width: min(620px, calc(100vw - 32px));
}

.page-almacen-fisico .ti-photo {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.page-almacen-fisico .ti-photo-stage {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 4 / 3;
  max-height: 52dvh;
  width: 100%;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-tint-bg);
  transition: border-color .12s ease, background .12s ease;
}

.page-almacen-fisico .ti-photo-stage.is-drop:has(.ti-photo-empty) {
  border-style: dashed;
}

.page-almacen-fisico .ti-photo-stage.is-over {
  border-color: var(--ti-selected-bd);
  background: var(--ti-selected-bg);
}

.page-almacen-fisico .ti-photo-stage.is-busy {
  opacity: .55;
  pointer-events: none;
}

.page-almacen-fisico .ti-photo-img {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
}

.page-almacen-fisico .ti-photo-img img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.page-almacen-fisico .ti-photo-img:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-photo-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  max-width: 320px;
  padding: 20px;
  text-align: center;
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--muted);
}

.page-almacen-fisico .ti-photo-empty strong {
  font-size: 14px;
  color: var(--text);
}

.page-almacen-fisico .ti-photo-empty-ico {
  width: 44px;
  height: 44px;
  margin-bottom: 4px;
  background-color: currentColor;
  opacity: .7;
  -webkit-mask: url("/assets/icons/icon-camara.png") center / 26px no-repeat;
  mask: url("/assets/icons/icon-camara.png") center / 26px no-repeat;
}

.page-almacen-fisico .ti-photo-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 10px;
  min-width: 0;
}

.page-almacen-fisico .ti-photo-desc {
  flex: 1 1 200px;
  min-width: 0;
  font-size: 13px;
  color: var(--muted);
  overflow-wrap: anywhere;
}

.page-almacen-fisico .ti-photo-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.page-almacen-fisico .ti-photo-actions .btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
}

.page-almacen-fisico .ti-photo-pick:focus-within {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-photo-del {
  margin-left: auto;
  color: var(--ti-err-fg);
}

@media (max-width: 520px) {
  .page-almacen-fisico .ti-photo-actions .btn {
    flex: 1 1 100%;
    justify-content: center;
  }

  .page-almacen-fisico .ti-photo-del {
    margin-left: 0;
  }
}

/* Full-screen viewer above #tiModal */
.page-almacen-fisico .ti-pv {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(8, 11, 16, .88);
  cursor: zoom-out;
}

.page-almacen-fisico .ti-pv-fig {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  max-width: 100%;
  max-height: 100%;
  margin: 0;
}

.page-almacen-fisico .ti-pv-fig img {
  display: block;
  max-width: min(1100px, 92vw);
  max-height: 80dvh;
  object-fit: contain;
  border-radius: 8px;
  background: #fff;
  cursor: default;
}

.page-almacen-fisico .ti-pv-cap {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 4px 10px;
  max-width: min(900px, 92vw);
  font-size: 13px;
  color: rgba(255, 255, 255, .78);
  text-align: center;
}

.page-almacen-fisico .ti-pv-cap .ti-la {
  color: #fff;
}

.page-almacen-fisico .ti-pv-close {
  position: absolute;
  top: 14px;
  right: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .24);
  border-radius: 10px;
  background: rgba(255, 255, 255, .08);
  color: #fff;
  cursor: pointer;
}

.page-almacen-fisico .ti-pv-close:hover {
  background: rgba(255, 255, 255, .16);
  border-color: rgba(255, 255, 255, .4);
}

.page-almacen-fisico .ti-pv-close:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* Import review: compact layout so the table gets the height */
#tiModal[data-dialog="import"]:has(.ti-imp-table-card) .vj-modal-body {
  gap: 10px;
}

#tiModal[data-dialog="import"] .ti-file-bar {
  gap: 10px;
  padding: 7px 10px;
}

#tiModal[data-dialog="import"] .ti-file-bar .ti-file-icon {
  width: 30px;
  height: 30px;
}

#tiModal[data-dialog="import"] .ti-file-bar .ti-file-icon svg {
  width: 16px;
  height: 16px;
}

.page-almacen-fisico .ti-decisions {
  gap: 8px;
}

.page-almacen-fisico .ti-decisions .ti-banner {
  gap: 10px;
  padding: 9px 12px;
}

.page-almacen-fisico .ti-decisions .ti-banner-text {
  font-size: 12.5px;
}

.page-almacen-fisico .ti-imp-table-tools {
  flex-wrap: wrap;
  gap: 8px 10px;
  padding: 8px 12px;
}

.page-almacen-fisico .ti-imp-fchips {
  flex: 1 1 auto;
  flex-basis: auto;
  min-width: 0;
}

.page-almacen-fisico .ti-imp-table-tools .ti-imp-search {
  flex: 0 1 260px;
}

.page-almacen-fisico .ti-imp-shown[hidden] {
  display: none;
}

.page-almacen-fisico .ti-fchip.is-imp-new .pill { background: var(--ti-ok-fg); }
.page-almacen-fisico .ti-fchip.is-imp-existing .pill { background: var(--text); }
.page-almacen-fisico .ti-fchip.is-imp-duplicate .pill,
.page-almacen-fisico .ti-fchip.is-imp-warning .pill { background: var(--ti-warn-fg); }
.page-almacen-fisico .ti-fchip.is-imp-error .pill { background: var(--ti-err-fg); }

.page-almacen-fisico .ti-imp-table th,
.page-almacen-fisico .ti-imp-table td {
  padding: 7px 10px;
}

.page-almacen-fisico .ti-imp-table .ti-msgs {
  gap: 2px;
  line-height: 1.35;
}

@media (max-width: 700px) {
  .page-almacen-fisico .ti-imp-fchips {
    flex: 1 1 100%;
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .page-almacen-fisico .ti-imp-table-tools .ti-imp-search {
    flex: 1 1 auto;
  }
}

/* Informative import outcome shown inline in the file bar */
.page-almacen-fisico .ti-file-note {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  max-width: 100%;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  color: var(--text);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
}

.page-almacen-fisico .ti-file-note svg {
  flex: none;
  width: 14px;
  height: 14px;
  color: var(--muted);
}

.page-almacen-fisico .ti-file-note.is-ok {
  border-color: var(--ti-ok-bd);
  background: var(--ti-ok-bg);
  color: var(--ti-ok-fg);
}

.page-almacen-fisico .ti-file-note.is-ok svg {
  color: currentColor;
}

@media (max-width: 700px) {
  .page-almacen-fisico .ti-file-note {
    order: 3;
    flex: 1 1 100%;
  }
}

/* Import steps as folder tabs: the strip continues the modal header and the
   active step opens into the body, so the wizard reads as one surface. */
#tiModal[data-dialog="import"] .ti-steps {
  gap: 2px;
  align-items: flex-end;
  margin: -18px -20px 0;
  padding: 8px 20px 0;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: var(--panel);
}

#tiModal[data-dialog="import"] .ti-steps .ti-step,
#tiModal[data-dialog="import"] .ti-steps .ti-step + .ti-step {
  position: relative;
  flex: none;
  min-height: 38px;
  margin-bottom: -1px;
  padding: 7px 16px;
  border: 1px solid transparent;
  border-bottom: 0;
  border-radius: 8px 8px 0 0;
}

#tiModal[data-dialog="import"] .ti-steps .ti-step + .ti-step::before {
  content: none;
}

#tiModal[data-dialog="import"] .ti-steps .ti-step.is-current {
  z-index: 1;
  border-color: var(--line);
  border-bottom: 1px solid var(--ti-modal-body-bg);
  background: var(--ti-modal-body-bg);
}

@media (max-width: 600px) {
  #tiModal[data-dialog="import"] .ti-steps {
    margin: -14px -14px 0;
    padding: 6px 14px 0;
  }

  #tiModal[data-dialog="import"] .ti-steps .ti-step,
  #tiModal[data-dialog="import"] .ti-steps .ti-step + .ti-step {
    padding: 7px 12px;
  }
}

/* Review table: same look as the main inventory grid */
#tiModal[data-dialog="import"] .section.ti-imp-table-card {
  flex: 1 1 auto;
  height: auto;
  min-height: 280px;
  border-color: var(--vj-border);
  background: var(--vj-wrap-bg);
}

#tiModal[data-dialog="import"] .ti-imp-table-tools {
  border-bottom-color: var(--vj-border);
  background: var(--panel);
}

#tiModal[data-dialog="import"] .ti-imp-table {
  background: var(--vj-wrap-bg);
  color: var(--text);
}

#tiModal[data-dialog="import"] .ti-imp-table th,
#tiModal[data-dialog="import"] .ti-imp-table td {
  border-color: var(--vj-border);
  border-style: solid;
  border-width: 0 1px 1px 0;
  padding: 8px 10px;
  font-size: 13px;
}

#tiModal[data-dialog="import"] .ti-imp-table td {
  vertical-align: middle;
}

#tiModal[data-dialog="import"] .ti-imp-table th:last-child,
#tiModal[data-dialog="import"] .ti-imp-table td:last-child {
  border-right-width: 0;
}

#tiModal[data-dialog="import"] .section.ti-table-card .ti-imp-table thead th {
  z-index: 6;
  border-bottom: 1px solid var(--vj-border);
  background: var(--vj-th-bg);
  color: var(--vj-th-fg);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .10em;
  line-height: 1.15;
  text-align: center;
  text-transform: uppercase;
  backdrop-filter: none;
}

#tiModal[data-dialog="import"] .ti-imp-table tbody td {
  background: var(--vj-row-odd);
}

#tiModal[data-dialog="import"] .ti-imp-table tbody tr:nth-child(even) td {
  background: var(--vj-row-even);
}

#tiModal[data-dialog="import"] .ti-imp-table tbody tr:hover {
  background: transparent;
}

#tiModal[data-dialog="import"] .ti-imp-table tbody tr:hover td {
  background: var(--vj-row-hover);
}

#tiModal[data-dialog="import"] .ti-imp-table tbody tr.is-error td {
  background: var(--ti-row-err);
}

#tiModal[data-dialog="import"] .ti-imp-table tbody tr.is-duplicate td {
  background: var(--ti-row-warn);
}

#tiModal[data-dialog="import"] .ti-imp-table tbody tr:last-child td {
  border-bottom-width: 0;
}

/* Review table fits the modal width: fixed layout, wrapping cells, no horizontal scroll */
#tiModal[data-dialog="import"] .ti-modal-table:has(.ti-imp-table) {
  overflow-x: hidden;
}

#tiModal[data-dialog="import"] .ti-imp-table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
}

#tiModal[data-dialog="import"] .ti-imp-table th,
#tiModal[data-dialog="import"] .ti-imp-table td {
  white-space: normal;
  overflow-wrap: break-word;
}

#tiModal[data-dialog="import"] .section.ti-table-card .ti-imp-table thead th {
  letter-spacing: .06em;
  hyphens: none;
}

#tiModal[data-dialog="import"] .ti-imp-table .ti-imp-desc,
#tiModal[data-dialog="import"] .ti-imp-table .ti-imp-detail {
  min-width: 0;
  max-width: none;
}

/* Short columns get fixed widths; description and detail share the rest */
#tiModal[data-dialog="import"] .ti-imp-table th:nth-child(1) { width: 56px; }
#tiModal[data-dialog="import"] .ti-imp-table th:nth-child(2) { width: 96px; }
#tiModal[data-dialog="import"] .ti-imp-table th:nth-child(3) { width: 118px; }
#tiModal[data-dialog="import"] .ti-imp-table th:nth-child(5) { width: 128px; }
#tiModal[data-dialog="import"] .ti-imp-table th:nth-child(6) { width: 116px; }
#tiModal[data-dialog="import"] .ti-imp-table th:nth-child(7) { width: 74px; }
#tiModal[data-dialog="import"] .ti-imp-table th:nth-child(9) { width: 116px; }

#tiModal[data-dialog="import"] .ti-imp-table .ti-loc {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: break-word;
}

#tiModal[data-dialog="import"] .ti-imp-table .ti-stock-delta {
  white-space: normal;
}

#tiModal[data-dialog="import"] .ti-imp-table .ti-act-select,
#tiModal[data-dialog="import"] .ti-imp-table .ti-use-btn {
  width: 100%;
  max-width: 100%;
}

@media (max-width: 1220px) {
  #tiModal[data-dialog="import"] .ti-imp-table tr > :nth-child(6) { display: none; }
}

@media (max-width: 820px) {
  #tiModal[data-dialog="import"] .ti-imp-table tr > :nth-child(1),
  #tiModal[data-dialog="import"] .ti-imp-table tr > :nth-child(5) { display: none; }
  #tiModal[data-dialog="import"] .ti-imp-table th:nth-child(2) { width: 88px; }
  #tiModal[data-dialog="import"] .ti-imp-table th:nth-child(3) { width: 104px; }
  #tiModal[data-dialog="import"] .ti-imp-table th:nth-child(7) { width: 64px; }
  #tiModal[data-dialog="import"] .ti-imp-table th:nth-child(9) { width: 104px; }
}
/* Item form: photo tile next to the identification fields, tighter sections */
#tiModal[data-dialog="item"] .ti-settings {
  gap: 10px;
}

#tiModal[data-dialog="item"] .ti-set-label {
  gap: 8px;
  padding: 10px 14px 0;
  border-bottom: 0;
}

#tiModal[data-dialog="item"] .ti-set-ico {
  width: 22px;
  height: 22px;
}

#tiModal[data-dialog="item"] .ti-set-title {
  font-size: 13px;
}

#tiModal[data-dialog="item"] .ti-set-fields {
  gap: 8px;
  padding: 8px 14px 12px;
}

#tiModal[data-dialog="item"] .ti-set-fields .grid-2,
#tiModal[data-dialog="item"] .ti-set-fields .grid-3 {
  gap: 8px 12px;
}

#tiModal[data-dialog="item"] .fld {
  gap: 4px;
}

.page-almacen-fisico #tiModal[data-dialog="item"] .vj-modal .fld input,
.page-almacen-fisico #tiModal[data-dialog="item"] .vj-modal .fld select {
  min-height: 36px;
  padding-top: 6px;
  padding-bottom: 6px;
}

#tiModal[data-dialog="item"] .ti-level-preview {
  padding: 6px 10px;
}

/* Current stock is read-only while editing: value + shortcut to register a movement */
#tiModal[data-dialog="item"] .ti-stock-ro-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 36px;
  padding: 3px 4px 3px 12px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  font-variant-numeric: tabular-nums;
}

#tiModal[data-dialog="item"] .ti-stock-ro-box strong {
  font-size: 15px;
}

#tiModal[data-dialog="item"] .ti-stock-ro-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--text);
  font: inherit;
  font-size: 11.5px;
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
}

#tiModal[data-dialog="item"] .ti-stock-ro-btn:hover {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
}

#tiModal[data-dialog="item"] .ti-stock-ro-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* Price: "$" prefix + USD/MXN toggle instead of a select */
#tiModal[data-dialog="item"] .ti-price-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 8px 12px;
}

#tiModal .ti-price-input {
  position: relative;
  display: block;
}

#tiModal .ti-price-sign {
  position: absolute;
  top: 50%;
  left: 12px;
  transform: translateY(-50%);
  color: var(--muted);
  font-weight: 700;
  pointer-events: none;
}

.page-almacen-fisico #tiModal .vj-modal .ti-price-input input {
  padding-left: 26px;
  font-variant-numeric: tabular-nums;
}

#tiModal[data-dialog="item"] .ti-cur-toggle--form {
  display: flex;
  height: 36px;
  padding: 2px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-input-bg);
}

#tiModal[data-dialog="item"] .ti-cur-toggle--form button {
  min-width: 56px;
  font-size: 12.5px;
  font-weight: 700;
  cursor: pointer;
}

#tiModal[data-dialog="item"] .ti-item-loc {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 1.2fr);
  gap: 8px 12px;
}

#tiModal[data-dialog="item"] .ti-item-loc > [data-loc-cascade] {
  grid-column: 1;
  grid-row: 1;
}

#tiModal[data-dialog="item"] .ti-item-loc > .fld {
  grid-column: 2;
  grid-row: 1;
}

#tiModal[data-dialog="item"] .ti-item-loc > .ti-loc-preview {
  grid-column: 1 / -1;
  grid-row: 2;
  padding: 0;
  border: 0;
  background: none;
  gap: 8px;
}

@media (max-width: 640px) {
  #tiModal[data-dialog="item"] .ti-item-loc {
    grid-template-columns: minmax(0, 1fr);
  }

  #tiModal[data-dialog="item"] .ti-item-loc > .fld {
    grid-column: 1;
    grid-row: 3;
  }
}

.page-almacen-fisico .ti-item-ident {
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr);
  align-items: start;
  gap: 14px;
}

.page-almacen-fisico .ti-item-ident.no-photo {
  grid-template-columns: minmax(0, 1fr);
}

.page-almacen-fisico .ti-item-photo {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  min-width: 0;
}

.page-almacen-fisico .ti-item-photo-pick {
  display: block;
  width: 100%;
  cursor: pointer;
  border-radius: 10px;
}

.page-almacen-fisico .ti-item-photo-pick.is-readonly {
  cursor: default;
}

.page-almacen-fisico .ti-item-photo-pick:focus-within {
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-item-photo-media {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  aspect-ratio: 1;
  width: 100%;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--ti-tint-bg);
  color: var(--muted);
  transition: border-color .12s ease, background .12s ease, color .12s ease;
}

.page-almacen-fisico .ti-item-photo-media.is-empty {
  border-style: dashed;
}

.page-almacen-fisico .ti-item-photo-pick:not(.is-readonly):hover .ti-item-photo-media {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
  color: var(--text);
}

.page-almacen-fisico .ti-item-photo-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.page-almacen-fisico .ti-item-photo-media .ti-thumb-ico {
  width: 26px;
  height: 26px;
}

.page-almacen-fisico .ti-item-photo-cta {
  padding: 0 6px;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
}

.page-almacen-fisico .ti-item-photo-actions:empty {
  display: none;
}

.page-almacen-fisico .ti-item-photo-actions .ti-link-btn {
  font-size: 12px;
  color: var(--ti-err-fg);
}

@media (max-width: 520px) {
  .page-almacen-fisico .ti-item-ident {
    grid-template-columns: 84px minmax(0, 1fr);
    gap: 10px;
  }

  .page-almacen-fisico .ti-item-ident .grid-2 {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Inventory view switch (table / gallery) */
.page-almacen-fisico .ti-toolbar-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  min-width: 0;
}

.page-almacen-fisico .ti-view-switch {
  display: inline-flex;
  gap: 2px;
  padding: 2px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
}

.page-almacen-fisico .ti-view-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 30px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease, color .12s ease;
}

.page-almacen-fisico .ti-view-btn .ti-picon {
  width: 18px;
  height: 18px;
}

.page-almacen-fisico .ti-view-btn:hover {
  color: var(--text);
}

.page-almacen-fisico .ti-view-btn[aria-pressed="true"] {
  border-color: var(--line);
  background: var(--panel);
  color: var(--text);
  cursor: default;
}

.page-almacen-fisico .ti-view-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

/* Inventory gallery (compact horizontal tiles) */
.page-almacen-fisico .ti-gallery {
  display: grid;
  flex: 0 1 auto;
  align-content: start;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
  grid-auto-rows: max-content;
  gap: 10px;
  padding: 14px 16px 16px;
}

.page-almacen-fisico .ti-gallery[hidden] {
  display: none;
}

.page-almacen-fisico .ti-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
  transition: border-color .12s ease, background .12s ease;
}

.page-almacen-fisico .ti-card:hover {
  border-color: var(--ti-hover-bd);
}

.page-almacen-fisico .ti-card.is-inactive {
  opacity: .6;
}

.page-almacen-fisico .ti-card-main {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  min-width: 0;
}

.page-almacen-fisico .ti-card-media {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 96px;
  height: 96px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--ti-tint-bg);
  color: color-mix(in srgb, var(--muted) 70%, transparent);
  font: inherit;
}

.page-almacen-fisico .ti-card-media.is-empty {
  border-style: dashed;
}

.page-almacen-fisico button.ti-card-media {
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease, color .12s ease;
}

.page-almacen-fisico button.ti-card-media:hover {
  border-color: var(--ti-hover-bd);
  background: var(--ti-hover-bg);
  color: var(--text);
}

.page-almacen-fisico button.ti-card-media:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--hc-focus);
}

.page-almacen-fisico .ti-card-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.page-almacen-fisico .ti-card-media .ti-thumb-ico {
  width: 26px;
  height: 26px;
}

.page-almacen-fisico .ti-card-info {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.page-almacen-fisico .ti-card-top {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.page-almacen-fisico .ti-card-la {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-card-top .chip {
  flex: 0 0 auto;
  padding: 2px 7px;
  font-size: 10.5px;
  white-space: nowrap;
}

.page-almacen-fisico .ti-card-desc {
  display: -webkit-box;
  min-height: 2.7em;
  margin: 0;
  overflow: hidden;
  color: color-mix(in srgb, var(--text) 82%, transparent);
  font-size: 12px;
  line-height: 1.35;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}

.page-almacen-fisico .ti-card-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  min-height: 20px;
}

.page-almacen-fisico .ti-card-meta .ti-loc {
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  padding: 1px 6px;
  font-size: 10.5px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-card-class {
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-size: 11.5px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.page-almacen-fisico .ti-card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}

.page-almacen-fisico .ti-card-stock {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.page-almacen-fisico .ti-card-qty {
  display: inline-flex;
  align-items: baseline;
  gap: 3px;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.page-almacen-fisico .ti-card-qty strong {
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
}

.page-almacen-fisico .ti-card-qty span {
  color: var(--muted);
  font-size: 11.5px;
}

.page-almacen-fisico .ti-card-qty.is-low strong {
  color: var(--ti-warn-fg);
}

.page-almacen-fisico .ti-card-qty.is-out strong {
  color: var(--ti-err-fg);
}

.page-almacen-fisico .ti-card-stock .ti-meter {
  flex: 0 0 auto;
  width: 44px;
}

.page-almacen-fisico .ti-card-order {
  color: var(--muted);
  font-size: 11.5px;
  white-space: nowrap;
}

.page-almacen-fisico .ti-card-order strong {
  color: var(--ti-warn-fg);
}

.page-almacen-fisico .ti-card-actions {
  display: flex;
  flex: 0 0 auto;
  gap: 4px;
}

.page-almacen-fisico .ti-card-actions:empty {
  display: none;
}

.page-almacen-fisico .ti-card-actions .ti-icon-btn {
  width: 28px;
  height: 28px;
}

.page-almacen-fisico .ti-card--sk .ti-card-media {
  border: 0;
}

.page-almacen-fisico .ti-card--sk .ti-card-info {
  gap: 10px;
  padding-top: 4px;
}

@media (max-width: 520px) {
  .page-almacen-fisico .ti-gallery {
    grid-template-columns: minmax(0, 1fr);
    padding: 10px;
  }
}

.page-almacen-fisico .ti-toolbar-row > .btn {
  flex-shrink: 0;
  white-space: nowrap;
}

/* =============================================
   MOBILE (<= 700px): page scroll, one-row header, compact toolbar
   ============================================= */
@media (max-width: 700px) {
  html:has(> body.page-almacen-fisico),
  body.page-almacen-fisico {
    height: auto;
    min-height: 100%;
  }

  body.page-almacen-fisico > main.vj-main {
    flex: 0 0 auto !important;
    padding: 10px 10px 18px;
  }

  body.page-almacen-fisico > main.vj-main > .vj-panel.ti-panel {
    flex: 0 0 auto !important;
  }

  .page-almacen-fisico .ti-table-wrap,
  .page-almacen-fisico .ti-gallery {
    flex: 0 0 auto;
    max-height: none;
    overflow: visible;
  }

  .page-almacen-fisico .ti-table-wrap {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
  }

  .page-almacen-fisico .ti-table--main th:first-child,
  .page-almacen-fisico .ti-table--main td:first-child {
    position: sticky;
    left: 0;
    z-index: 2;
  }

  .page-almacen-fisico .ti-table--main th:first-child {
    z-index: 7;
  }

  .page-almacen-fisico header.app-header.hdr-controls {
    padding: 8px 10px;
  }

  .page-almacen-fisico header.hdr-controls .controls {
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: 6px;
  }

  .page-almacen-fisico header.hdr-controls .controls > .spacer {
    flex: 1 1 auto;
  }

  .page-almacen-fisico header.hdr-controls .controls > .ti-hdr-btn {
    position: relative;
    flex: 0 0 auto;
    height: 36px;
    min-height: 36px;
  }

  .page-almacen-fisico header.hdr-controls .controls > .ti-hdr-btn:not(#newItem) {
    justify-content: center;
    width: 36px;
    min-width: 36px;
    padding: 0;
  }

  .page-almacen-fisico header.hdr-controls .ti-hdr-btn:not(#newItem) > span[data-i18n],
  .page-almacen-fisico .ti-toolbar #exportBtn > span[data-i18n] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .page-almacen-fisico header.hdr-controls .ti-hdr-btn .ti-picon {
    width: 17px;
    height: 17px;
  }

  .page-almacen-fisico header.hdr-controls .ti-hdr-btn .ti-count-badge {
    position: absolute;
    top: -6px;
    right: -6px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    font-size: 10px;
  }

  .page-almacen-fisico header.hdr-controls #newItem {
    padding: 0 12px;
  }

  .page-almacen-fisico .ti-kpi-row {
    gap: 8px;
    margin-bottom: 10px;
  }

  .page-almacen-fisico .ti-toolbar {
    gap: 8px;
    padding: 10px 12px;
  }

  .page-almacen-fisico .ti-toolbar-head {
    flex: 1 1 auto;
    flex-wrap: nowrap;
    justify-content: space-between;
    gap: 8px;
  }

  .page-almacen-fisico .ti-toolbar-title {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .page-almacen-fisico .ti-toolbar #exportBtn {
    justify-content: center;
    width: 36px;
    min-width: 36px;
    height: 36px;
    padding: 0;
  }

  .page-almacen-fisico .ti-toolbar #exportBtn .ti-picon {
    width: 16px;
    height: 16px;
  }

  .page-almacen-fisico .ti-toolbar-filters {
    display: grid;
    grid-template-columns: minmax(0, .72fr) minmax(0, 1.05fr) minmax(0, 1.23fr);
    gap: 8px 6px;
  }

  .page-almacen-fisico .ti-toolbar .ti-hdr-search {
    grid-column: 1 / -1;
    width: 100%;
    height: 38px;
    font-size: 14px;
  }

  .page-almacen-fisico .ti-toolbar-selects {
    display: contents;
  }

  .page-almacen-fisico .ti-toolbar .ti-hdr-select {
    width: 100%;
    min-width: 0;
    max-width: none;
    height: 36px;
    padding: 0 2px 0 6px;
    font-size: 11.5px;
    text-overflow: ellipsis;
  }

  .page-almacen-fisico .ti-toolbar #clearFilters {
    grid-column: 1 / -1;
    justify-content: center;
  }

  .page-almacen-fisico .ti-toolbar-filters .ti-result-count {
    grid-column: 1 / -1;
    order: 10;
    margin: 0;
    font-size: 11.5px;
    text-align: right;
  }

  .page-almacen-fisico .ti-gallery {
    padding: 10px;
  }
}

@media (max-width: 360px) {
  .page-almacen-fisico header.hdr-controls #newItem > span[data-i18n] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .page-almacen-fisico header.hdr-controls #newItem {
    width: 36px;
    padding: 0;
    justify-content: center;
  }
}

@media (max-width: 600px) {
  #tiModal .ti-mkpis {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px;
  }

  #tiModal .ti-mkpis--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #tiModal .ti-mkpis--3 > .kpi:last-child {
    grid-column: auto;
  }

  #tiModal .ti-mkpis > .kpi {
    gap: 0;
    padding: 7px 8px;
  }

  #tiModal .ti-mkpis .kpi-ico,
  #tiModal .ti-mkpis .kpi-sub {
    display: none;
  }

  #tiModal .ti-mkpis .kpi-label {
    font-size: 10.5px;
  }

  #tiModal .ti-mkpis .kpi-value {
    font-size: 15px;
  }
}

@media (min-width: 340px) and (max-width: 640px) {
  #tiModal[data-dialog="item"] .ti-set-fields > .grid-3,
  #tiModal[data-dialog="item"] .grid-3[data-loc-cascade] {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }
}

/* Mobile modals: every dialog is a full-height sheet, whatever its desktop size */
@media (max-width: 600px) {
  #tiModal.vj-modal-backdrop[data-dialog] .vj-modal,
  #tiModal.vj-modal-backdrop[data-dialog]:has(.ti-drop) .vj-modal {
    width: 100vw;
    max-width: 100vw;
    height: var(--vj-vvh, 100dvh);
    max-height: none;
    border: 0;
    border-radius: 0;
  }

  #tiModal .ti-modal-toolbar {
    gap: 8px;
    padding: 10px;
  }

  #tiModal .ti-modal-toolbar .ti-tabs {
    display: flex;
    max-width: 100%;
    margin-right: 0;
    overflow-x: auto;
    scrollbar-width: none;
  }

  #tiModal .ti-modal-toolbar .ti-tabs::-webkit-scrollbar {
    display: none;
  }

  #tiModal .ti-tabs .ti-tab {
    flex: 0 0 auto;
    white-space: nowrap;
  }

  #tiModal .ti-modal-toolbar .ti-search-field {
    flex: 1 1 100%;
  }

  #tiModal .ti-table-card .ti-modal-toolbar:has(> .ti-tabs) {
    padding: 10px 10px 0;
  }

  #tiModal .ti-modal-toolbar:has(> .ti-tabs) > .ti-search-field {
    order: -1;
    margin-bottom: 0;
  }

  #tiModal .ti-rq-table {
    display: block;
    width: 100%;
    min-width: 0;
  }

  #tiModal .ti-rq-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
  }

  #tiModal .ti-rq-table tbody {
    display: block;
  }

  #tiModal .ti-rq-table tr {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "folio state"
      "mat   total"
      "req   date";
    align-items: center;
    gap: 4px 10px;
    padding: 12px;
    border-bottom: 1px solid var(--line);
  }

  #tiModal .ti-rq-table td {
    display: block;
    min-width: 0;
    padding: 0;
    border: 0;
    white-space: normal;
    text-align: left;
  }

  /* Card layout: the grid stripes go on the whole card, not behind each cell. */
  #tiModal .vj-grid-host .ti-rq-table tbody tr {
    background: var(--vj-row-odd);
    border-bottom-color: var(--vj-border);
  }

  #tiModal .vj-grid-host .ti-rq-table tbody tr:nth-child(even) {
    background: var(--vj-row-even);
  }

  #tiModal .vj-grid-host .ti-rq-table tbody tr:hover {
    background: var(--vj-row-hover);
  }

  #tiModal .vj-grid-host .ti-rq-table tbody tr td,
  #tiModal .vj-grid-host .ti-rq-table tbody tr:nth-child(even) td,
  #tiModal .vj-grid-host .ti-rq-table tbody tr:hover td {
    background: transparent;
  }

  #tiModal .ti-rq-table td.ti-rq-c-folio { grid-area: folio; }
  #tiModal .ti-rq-table td.ti-rq-c-mat { grid-area: mat; }
  #tiModal .ti-rq-table td.ti-rq-c-req { grid-area: req; }
  #tiModal .ti-rq-table td.ti-rq-c-date { grid-area: date; justify-self: end; text-align: right; }
  #tiModal .ti-rq-table td.ti-rq-c-total { grid-area: total; justify-self: end; text-align: right; }
  #tiModal .ti-rq-table td.ti-rq-c-state { grid-area: state; justify-self: end; }
  #tiModal .ti-rq-table td.ti-actions { display: none; }

  #tiModal .ti-rq-table .ti-rq-date,
  #tiModal .ti-rq-table .ti-rq-time {
    display: inline;
    font-size: 12px;
    color: var(--muted);
  }

  #tiModal .ti-rq-table .ti-rq-time::before {
    content: " - ";
  }

  #tiModal .ti-rq-table .ti-rq-folio-date {
    display: none;
  }

  #tiModal .ti-rq-table .ti-mat {
    display: flex;
    flex-direction: column;
    gap: 2px;
  }
}

@media (max-width: 600px) {
  #tiModal .ti-modal-section.ti-table-card {
    padding: 0;
  }

  #tiModal .ti-table-card .ti-modal-toolbar {
    padding: 10px;
  }

  #tiModal .ti-rq-table tbody tr {
    padding-left: 12px;
    padding-right: 12px;
  }

  #tiModal .vj-modal-actions {
    gap: 8px;
  }

  #tiModal .vj-modal-actions > .btn {
    flex: 1 1 auto;
    min-width: 0;
    padding-left: 12px;
    padding-right: 12px;
    white-space: nowrap;
  }

  #tiModal .vj-modal-actions > .btn.ti-primary {
    flex-grow: 2;
  }
}

/* Requisition lines (mobile): material row + labeled qty / stock / received row */
@media (max-width: 600px) {
  .page-almacen-fisico .ti-rq-lines-table {
    min-width: 0;
  }

  .page-almacen-fisico .ti-rq-lines-table thead {
    display: none;
  }

  .page-almacen-fisico .ti-rq-lines-table,
  .page-almacen-fisico .ti-rq-lines-table tbody {
    display: block;
  }

  .page-almacen-fisico .ti-rq-lines-table tbody tr {
    display: grid;
    grid-template-columns: 22px repeat(3, minmax(0, 1fr));
    grid-template-areas:
      "no mat mat mat"
      "no qty price amount"
      "no stock recv recv";
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
  }

  .page-almacen-fisico .ti-rq-lines-table tbody tr:last-child {
    border-bottom: 0;
  }

  .page-almacen-fisico .ti-rq-lines-table tbody tr:hover {
    background: var(--ti-hover-bg);
  }

  .page-almacen-fisico .ti-rq-lines-table tbody tr > td,
  .page-almacen-fisico .ti-rq-lines-table tbody tr > td.ti-num,
  .page-almacen-fisico .ti-rq-lines-table tbody tr > td:has(> .ti-rq-recv),
  .page-almacen-fisico .ti-rq-lines-table tbody tr:hover > td {
    width: auto;
    min-width: 0;
    padding: 0;
    border: 0;
    background: none;
  }

  .page-almacen-fisico .ti-rq-lines-table tbody tr > td.ti-rq-col-no {
    grid-area: no;
    padding-top: 1px;
    text-align: left;
  }

  .page-almacen-fisico .ti-rq-lines-table td.ti-mat { grid-area: mat; }
  .page-almacen-fisico .ti-rq-lines-table td.ti-rq-qty { grid-area: qty; }
  .page-almacen-fisico .ti-rq-lines-table td.ti-rq-stock { grid-area: stock; }
  .page-almacen-fisico .ti-rq-lines-table td.ti-rq-price { grid-area: price; }
  .page-almacen-fisico .ti-rq-lines-table td.ti-rq-amount { grid-area: amount; }
  .page-almacen-fisico .ti-rq-lines-table td.ti-rq-col-recv { grid-area: recv; }

  .page-almacen-fisico .ti-rq-lines-table td[data-label] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    text-align: left;
    white-space: normal;
  }

  .page-almacen-fisico .ti-rq-lines-table td[data-label]::before {
    content: attr(data-label);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--muted);
    line-height: 1.2;
  }

  .page-almacen-fisico .ti-rq-lines-table td.ti-rq-qty {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 4px;
  }

  .page-almacen-fisico .ti-rq-lines-table td.ti-rq-qty::before {
    flex-basis: 100%;
  }

  .page-almacen-fisico .ti-rq-lines-table .ti-rq-recv {
    width: 100%;
    min-height: 34px;
  }
}

.page-almacen-fisico .ti-stock-hint {
  margin: 6px 0 0;
}
