:root {
  --primary: #1e88e5;
  --primary-dark: #1565c0;
  --bg: #f4f6f9;
  --surface: #ffffff;
  --text: #263238;
  --muted: #78909c;
  --ok: #43a047;
  --err: #e53935;
  --shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: "Segoe UI", Roboto, Arial, sans-serif;
  background: var(--bg);
  color: var(--text);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.app-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 20px;
  background: var(--primary);
  color: #fff;
  box-shadow: var(--shadow);
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 1.25rem;
  font-weight: 600;
}

.brand-logo {
  font-size: 1.5rem;
}

.company-logo {
  width: 68px;
  height: 44px;
  padding: 4px;
  border-radius: 9px;
  object-fit: contain;
  background: #fff;
}

.app-status {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.85rem;
}

.status-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--muted);
  display: inline-block;
}

.status-dot.ok {
  background: var(--ok);
}

.status-dot.err {
  background: var(--err);
}

.control-panel {
  flex: 1;
  padding: 24px;
  max-width: 1100px;
  width: 100%;
  margin: 0 auto;
}

.panel-title {
  font-size: 1.5rem;
  font-weight: 600;
  margin: 8px 0 24px;
}

.modules-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 18px;
}

.module-tile {
  background: var(--surface);
  border: none;
  border-radius: 14px;
  padding: 28px 16px;
  cursor: pointer;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  color: var(--text);
  text-decoration: none;
}

.module-tile:hover {
  transform: translateY(-4px);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.14);
}

.module-tile:active {
  transform: translateY(0);
}

.module-icon {
  font-size: 2.6rem;
  line-height: 1;
}

.module-name {
  font-size: 1.05rem;
  font-weight: 600;
}

.home-company-name {
  margin-top: 24px;
  padding: 15px 20px;
  text-align: center;
  color: #34566b;
  font-size: 1rem;
  font-weight: 700;
  overflow-wrap: anywhere;
}

@media (max-width: 480px) {
  .app-header { align-items: flex-start; gap: 10px; padding: 10px 12px; }
  .app-status { justify-content: flex-end; flex-wrap: wrap; }
  #db-status-text { display: none; }
  .company-logo { width: 52px; height: 38px; }
  #header-company-name { max-width: 115px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .install-app-btn { padding: 6px 9px; }
  .modules-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .login-card { margin: 18px; padding: 26px 22px; }
}

/* --- Ventas page --- */
.back-link {
  color: #fff;
  text-decoration: none;
  font-size: 1.4rem;
  margin-right: 6px;
}

.source-badge {
  font-size: 0.75rem;
  padding: 4px 10px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.25);
  color: #fff;
}

.source-badge.ok {
  background: var(--ok);
}

.source-badge.warn {
  background: #fb8c00;
}

.toolbar {
  display: flex;
  gap: 10px;
  margin-bottom: 16px;
}

.search-input {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
}

.search-input:focus {
  outline: none;
  border-color: var(--primary);
}

.btn {
  padding: 10px 16px;
  border: none;
  border-radius: 8px;
  background: var(--primary);
  color: #fff;
  font-weight: 600;
  cursor: pointer;
}

.btn:hover:not(:disabled) {
  background: var(--primary-dark);
}

.btn:disabled {
  background: #b0bec5;
  cursor: not-allowed;
}

.table-wrapper {
  background: var(--surface);
  border-radius: 12px;
  box-shadow: var(--shadow);
  overflow-x: auto;
}

.data-grid {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
}

.data-grid th,
.data-grid td {
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid #eceff1;
  white-space: nowrap;
}

.data-grid th {
  background: #eef4fb;
  color: var(--primary-dark);
  font-weight: 600;
}

.data-grid tbody tr:hover {
  background: #f5f9fe;
}

.data-grid .num {
  text-align: right;
}

.data-grid .empty {
  text-align: center;
  color: var(--muted);
  padding: 28px;
}

.badge {
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 0.78rem;
  font-weight: 600;
  color: #fff;
  background: var(--muted);
}

.badge.ok {
  background: var(--ok);
}

.badge.err {
  background: var(--err);
}

.badge.warn {
  background: #fb8c00;
}

.pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 18px;
}

.page-info {
  color: var(--muted);
  font-size: 0.85rem;
}

/* --- Login page --- */
.login-body {
  align-items: center;
  justify-content: center;
  background: #fff;
}

.login-card {
  background: var(--surface);
  width: 100%;
  max-width: 390px;
  margin: auto;
  padding: 32px 28px;
  border-radius: 16px;
  border: 1px solid #e1e7ec;
  box-shadow: 0 12px 36px rgba(31, 55, 72, 0.12);
}

.login-brand {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 8px;
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--primary);
}

.login-logo {
  width: 156px;
  height: 136px;
  object-fit: contain;
}

.login-brand .brand-name {
  color: #344956;
  font-size: 1.5rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.login-title {
  text-align: center;
  font-size: 1.15rem;
  font-weight: 600;
  margin: 8px 0 22px;
}

.login-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--muted);
}

.field input {
  padding: 10px 12px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
}

.field input:focus {
  outline: none;
  border-color: var(--primary);
}

.login-btn {
  margin-top: 6px;
  width: 100%;
  padding: 12px;
  font-size: 1rem;
}

.login-error {
  color: var(--err);
  font-size: 0.85rem;
  margin: 0;
  text-align: center;
}

.logout-btn {
  background: rgba(255, 255, 255, 0.2);
  border: none;
  color: #fff;
  padding: 6px 12px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.8rem;
}

.logout-btn:hover {
  background: rgba(255, 255, 255, 0.35);
}

.user-name {
  font-size: 0.85rem;
  color: #fff;
  font-weight: 600;
}

.login-language { margin: 0 0 18px; }
.login-language select { width: 100%; min-height: 42px; padding: 9px 12px; border: 1px solid #b9cfdd; border-radius: 8px; background: #fff; color: #263238; font: inherit; }

.install-app-btn,
.login-install-btn {
  border: 1px solid #ffffff88;
  border-radius: 8px;
  padding: 7px 12px;
  background: #ffffff22;
  color: #fff;
  cursor: pointer;
  font-weight: 700;
}

.install-app-btn:hover { background: #ffffff38; }
.login-install-btn { width: 100%; margin-top: 16px; border-color: #b9cfdd; background: #f4f9fc; color: #075f9d; padding: 10px; }
.login-install-btn:hover { background: #e7f3fa; }
.install-app-btn[hidden],
.login-install-btn[hidden] { display: none; }

/* Cuenta, buzón y acceso a la instalación desde el panel principal. */
.account-menu-wrap { position: relative; }
.account-toggle { display: flex; align-items: center; gap: 8px; min-height: 43px; padding: 4px 10px 4px 5px; color: #fff; background: #ffffff21; border: 1px solid #ffffff5c; border-radius: 999px; cursor: pointer; }
.account-toggle:hover, .account-toggle[aria-expanded="true"] { background: #ffffff35; }
.account-toggle:focus-visible, .account-menu button:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.account-avatar { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: #fff; font-size: 19px; }
.account-chevron { font-size: 18px; line-height: 1; }
.account-unread, .menu-unread { display: inline-grid; place-items: center; min-width: 19px; height: 19px; padding: 0 4px; border-radius: 999px; background: #ef4444; color: #fff; font-size: 11px; font-weight: 700; }
.account-unread[hidden], .menu-unread[hidden], .account-menu[hidden], .account-view[hidden], .account-form[hidden], .mailbox-list[hidden], .install-banner[hidden] { display: none !important; }
.account-menu { position: absolute; z-index: 50; right: 0; top: calc(100% + 9px); width: 245px; padding: 6px; background: #fff; color: #1d3444; border: 1px solid #d7e3eb; border-radius: 13px; box-shadow: 0 18px 45px #102b4660; }
.account-menu button { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 43px; padding: 8px 10px; border: 0; border-radius: 8px; text-align: left; background: transparent; color: inherit; cursor: pointer; font: inherit; }
.account-menu button:hover { background: #edf5fa; }
.account-menu button span:nth-child(1) { flex: 1; }
.account-menu .account-logout { border-top: 1px solid #e3eaf0; border-radius: 0 0 8px 8px; color: #b42318; }
.account-menu .account-submenu { padding-left: 24px; color: #42647b; }
.account-dialog { width: min(720px, calc(100vw - 24px)); max-height: min(85vh, 760px); padding: 0; border: 0; border-radius: 18px; color: #213547; background: #fff; box-shadow: 0 20px 75px #09213c70; overflow: auto; }
.account-dialog::backdrop { background: #0823399c; }
.account-dialog-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding: 22px 25px 16px; border-bottom: 1px solid #e3ecf3; }
.account-dialog-head p { margin: 0 0 4px; color: #2879ad; font-size: 11px; font-weight: 800; letter-spacing: .13em; }
.account-dialog-head h2 { margin: 0; font-size: 22px; }
.account-dialog-head button { border: 0; background: #eef4f8; border-radius: 50%; width: 34px; height: 34px; cursor: pointer; font-size: 24px; line-height: 1; }
.account-view { padding: 22px 25px 27px; }
.account-dialog-message { margin: 14px 25px 0; padding: 10px 12px; color: #176333; background: #e7f7ed; border-radius: 9px; }
.account-dialog-message.error { color: #9e241e; background: #ffeded; }
.profile-avatar { display: grid; place-items: center; width: 70px; height: 70px; margin-bottom: 18px; border-radius: 18px; background: #e5f3fc; font-size: 38px; }
.profile-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0 0 20px; }
.profile-fields div { padding: 11px 13px; background: #f5f9fc; border: 1px solid #e1eaf0; border-radius: 10px; overflow-wrap: anywhere; }
.profile-fields dt { color: #61778a; font-size: 12px; font-weight: 700; }
.profile-fields dd { margin: 4px 0 0; font-weight: 600; }
.account-primary { border: 0; border-radius: 9px; padding: 11px 16px; color: #fff; background: #0874bd; font: inherit; font-weight: 700; cursor: pointer; }
.account-primary:hover { background: #055e99; }
.account-primary:disabled { opacity: .6; cursor: wait; }
.account-form { display: grid; gap: 15px; }
.account-form label { display: grid; gap: 6px; color: #334b5d; font-size: 13px; font-weight: 700; }
.account-form input, .account-form select, .account-form textarea { width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid #bdced9; border-radius: 8px; background: #fff; color: #1d3444; font: inherit; }
.account-form textarea { resize: vertical; }
.account-form > .account-primary { justify-self: start; }
.mailbox-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 15px; }
.mailbox-toolbar button:not(.account-primary), .mailbox-compose-actions button:not(.account-primary) { border: 1px solid #c9d9e3; background: #fff; color: #31536a; border-radius: 8px; padding: 9px 12px; cursor: pointer; font: inherit; }
.mailbox-toolbar button.active { color: #075f9d; background: #e9f5fc; border-color: #90c9e9; font-weight: 700; }
.mailbox-toolbar .account-primary { margin-left: auto; }
.mailbox-compose-actions { display: flex; justify-content: flex-end; gap: 8px; }
.mailbox-list { display: grid; gap: 9px; max-height: 430px; overflow-y: auto; }
.mailbox-item { display: grid; gap: 5px; width: 100%; padding: 13px 14px; border: 1px solid #dce7ee; border-radius: 10px; background: #fff; color: #263e50; text-align: left; cursor: pointer; font: inherit; }
.mailbox-item:hover { border-color: #6fb4dc; background: #f8fcff; }
.mailbox-item.unread { border-left: 4px solid #0874bd; background: #eff8fd; }
.mailbox-item-top { display: flex; justify-content: space-between; gap: 10px; color: #395b71; font-size: 12px; }
.mailbox-item-top time { color: #78909c; }
.mailbox-item-body { white-space: pre-wrap; overflow: hidden; text-overflow: ellipsis; max-height: 1.5em; color: #536b7a; }
.mailbox-item.expanded .mailbox-item-body { max-height: none; }
.mailbox-empty { padding: 24px; margin: 0; text-align: center; color: #647d8e; background: #f5f9fc; border-radius: 10px; }
.install-banner { position: fixed; z-index: 40; left: 50%; bottom: 15px; transform: translateX(-50%); display: flex; align-items: center; gap: 14px; width: min(740px, calc(100% - 28px)); padding: 13px 14px; color: #fff; background: linear-gradient(115deg, #083b60, #075f9d); border: 1px solid #ffffff33; border-radius: 16px; box-shadow: 0 15px 40px #08273c57; }
.has-install-banner { padding-bottom: 95px; }
.install-banner-icon { display: grid; place-items: center; flex: 0 0 48px; width: 48px; height: 48px; background: #fff; border-radius: 12px; }
.install-banner-icon img { width: 39px; height: 39px; object-fit: contain; }
.install-banner-copy { display: grid; gap: 3px; flex: 1; min-width: 0; }
.install-banner-copy strong { font-size: 15px; }
.install-banner-copy span { color: #d7eafa; font-size: 12px; }
.install-banner-action { white-space: nowrap; padding: 10px 14px; border: 0; border-radius: 9px; color: #064b78; background: #fff; font-weight: 800; cursor: pointer; }
.install-banner-action:hover { background: #e7f5ff; }
.install-banner-dismiss { align-self: flex-start; width: 27px; height: 27px; border: 0; border-radius: 50%; background: #ffffff25; color: #fff; cursor: pointer; font-size: 21px; line-height: 1; }
@media (max-width: 600px) {
  .app-header { flex-wrap: wrap; }
  .app-status { margin-left: auto; }
  .account-toggle .user-name { max-width: 100px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .account-dialog { max-height: 92vh; }
  .account-view { padding: 18px; }
  .profile-fields { grid-template-columns: 1fr; }
  .install-banner { gap: 9px; padding: 10px; }
  .install-banner-icon { flex-basis: 38px; width: 38px; height: 38px; }
  .install-banner-icon img { width: 30px; height: 30px; }
  .install-banner-copy span { display: none; }
  .install-banner-action { padding: 9px; font-size: 12px; }
}

/* --- Ventas Touch (Salón / Mesas) --- */
.mesa-hora {
  font-size: 0.9rem;
  color: #fff;
  font-weight: 700;
  letter-spacing: 0.5px;
}

.mesa-btn {
  border: none;
  border-radius: 8px;
  padding: 8px 14px;
  font-weight: 600;
  cursor: pointer;
  color: #fff;
}

.mesa-btn-drive {
  background: #ff7043;
}

.mesa-btn-drive:hover {
  background: #f4511e;
}

.mesa-tabs {
  display: flex;
  gap: 8px;
  padding: 12px 20px 0;
  flex-wrap: wrap;
  background: var(--surface);
}

.mesa-tab {
  border: 1px solid var(--border, #dce3ec);
  border-bottom: none;
  background: #eef2f7;
  color: #33475b;
  padding: 10px 22px;
  border-radius: 10px 10px 0 0;
  font-weight: 600;
  font-size: 1rem;
  cursor: pointer;
}

.mesa-tab.active {
  background: #ffd54f;
  color: #4e342e;
}

.mesa-salon {
  width: 100%;
  padding: 20px;
  min-height: 55vh;
  background: #f5f5f5;
  overflow: auto;
}

.mesa-grid {
  position: relative;
  width: 100%;
  min-height: 680px;
  background-color: #f8fafb;
  background-image: linear-gradient(#e3ebf0 1px, transparent 1px), linear-gradient(90deg, #e3ebf0 1px, transparent 1px);
  background-size: 15px 15px;
  border: 1px solid #dae5eb;
  border-radius: 0 0 14px 14px;
}

.mesa-tile {
  --table-color: #0c9f67;
  position: absolute;
  z-index: 1;
  width: 120px;
  height: 105px;
  padding: 7px;
  border: 2px solid var(--table-color);
  border-radius: 16px;
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  cursor: pointer;
  color: #263f51;
  font-weight: 600;
  box-shadow: 0 5px 15px rgba(25, 54, 71, .12);
  transition: box-shadow .12s ease;
}

.mesa-tile:hover {
  box-shadow: 0 7px 22px rgba(25, 54, 71, .2);
}

.mesa-tile.selected, .mesa-tile:focus-visible {
  outline: 3px solid #087bc4;
  outline-offset: 3px;
  z-index: 3;
}

.mesa-table-symbol {
  display: block;
  position: relative;
  flex: none;
  width: 52px;
  height: 24px;
  margin: 2px 0 9px;
  border: 2px solid var(--table-color);
  border-radius: 12px;
  background: color-mix(in srgb, var(--table-color) 24%, white);
}

.mesa-table-symbol::before, .mesa-table-symbol::after {
  content: '';
  position: absolute;
  left: 17px;
  width: 12px;
  height: 6px;
  border: 2px solid var(--table-color);
  border-radius: 3px;
}

.mesa-table-symbol::before { top: -7px; }
.mesa-table-symbol::after { bottom: -7px; }

.mesa-tile .mesa-nombre, .mesa-tile .mesa-total, .mesa-tile .mesa-personas {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mesa-nombre {
  font-size: 13px;
}

.mesa-total {
  font-size: 13px;
  font-weight: 700;
}

.mesa-personas {
  font-size: 11px;
  color: #607789;
}

/* Mismos estados y colores del plano del restaurante. */
.mesa-tile.estado-A { --table-color: #d84545; }
.mesa-tile.estado-P { --table-color: #d59a1e; }
.mesa-tile.estado-R { --table-color: #3984c9; }
.mesa-tile.estado-X { --table-color: #91a5b3; }

.mesa-legend {
  display: flex;
  gap: 11px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  padding: 15px 18px;
  border: 1px solid #dae5eb;
  border-bottom: 0;
  border-radius: 14px 14px 0 0;
  background: #fff;
  color: #65798b;
  font-size: 12px;
}

.mesa-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}

.mesa-legend i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.mesa-legend .free { background: #0c9f67; }
.mesa-legend .busy { background: #d84545; }
.mesa-legend .pending { background: #d59a1e; }
.mesa-legend .reserved { background: #3984c9; }

/* En teléfonos el salón se lee como una lista; el plano queda intacto en escritorio. */
@media (max-width: 700px) {
  .mesa-salon { padding: 10px; overflow-x: hidden; }
  .mesa-legend { justify-content: flex-start; padding: 12px; }
  .mesa-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: 10px;
    padding: 12px;
    min-width: 0 !important;
    min-height: 0;
    height: auto !important;
    background-image: none;
  }
  .mesa-grid[hidden] { display: none !important; }
  .mesa-grid .mesa-tile {
    position: static;
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr) auto;
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: 12px;
    row-gap: 3px;
    width: 100%;
    height: auto;
    min-height: 80px;
    padding: 10px 12px;
    text-align: left;
  }
  .mesa-grid .mesa-table-symbol { grid-column: 1; grid-row: 1 / 3; justify-self: center; margin: 0; }
  .mesa-grid .mesa-nombre { grid-column: 2; grid-row: 1; font-size: 15px; }
  .mesa-grid .mesa-personas { grid-column: 2; grid-row: 2; font-size: 12px; }
  .mesa-grid .mesa-total { grid-column: 3; grid-row: 1 / 3; font-size: 15px; text-align: right; }
}

/* --- Mesa Orden (facturaci\u00F3n touch) --- */
.mesa-btn-cuenta { background: #26a69a; position: relative; }
.mesa-btn-cuenta:hover { background: #00897b; }
.mesa-btn-guardar { background: var(--ok); }
.mesa-btn-guardar:hover { background: #2e7d32; }

.badge-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  border-radius: 10px;
  background: #e53935;
  color: #fff;
  font-size: 0.72rem;
  font-weight: 700;
  margin-left: 4px;
}

.orden-view,
.cuenta-view {
  display: none;
  flex: 1;
  padding: 16px 20px;
}
.orden-view.active,
.cuenta-view.active { display: block; }

.orden-cliente input,
.orden-search input {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
}
.orden-cliente { margin-bottom: 12px; }

.orden-search {
  position: relative;
  margin-bottom: 14px;
}
.orden-search .btn-clear {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  border: none;
  background: transparent;
  font-size: 1rem;
  color: var(--muted);
  cursor: pointer;
}
.hidden { display: none !important; }

.categorias-list {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 8px;
  margin-bottom: 14px;
}
.categoria-tab {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #dce3ec;
  background: #eef2f7;
  color: #33475b;
  padding: 8px 18px;
  border-radius: 20px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}
.categoria-tab.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.categoria-img {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  object-fit: cover;
}
.cat-empty, .empty { color: var(--muted); padding: 20px; text-align: center; }

.productos-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
}
.producto-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  background: var(--surface);
  border-radius: 12px;
  padding: 14px;
  box-shadow: var(--shadow);
  cursor: pointer;
  transition: transform 0.12s ease;
}
.producto-card:hover { transform: translateY(-2px); }
.producto-thumb {
  position: relative;
  flex: 0 0 auto;
  width: 52px;
  height: 52px;
  border-radius: 10px;
  overflow: hidden;
  background: #eef2f7;
  display: flex;
  align-items: center;
  justify-content: center;
}
.producto-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.producto-thumb-ph {
  position: absolute;
  font-size: 1.4rem;
  opacity: 0;
}
.producto-thumb.no-img .producto-thumb-ph,
.producto-thumb:not(:has(img)) .producto-thumb-ph { opacity: 1; }
.producto-info { flex: 1; }
.producto-info h4 { margin: 0 0 4px; font-size: 0.98rem; }
.producto-precio { margin: 0; color: var(--ok); font-weight: 700; }
.btn-agregar {
  border: none;
  border-radius: 50%;
  width: 34px;
  height: 34px;
  background: var(--primary);
  color: #fff;
  font-size: 1.3rem;
  cursor: pointer;
}

/* Cuenta */
.cuenta-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}
.cuenta-toolbar .mesa-btn { background: var(--muted); }
.cuenta-title { font-weight: 700; font-size: 1.1rem; }
.cuenta-card {
  background: var(--surface);
  border-radius: 12px;
  box-shadow: var(--shadow);
  margin-bottom: 14px;
  overflow: hidden;
}
.cuenta-header {
  display: flex;
  justify-content: space-between;
  padding: 10px 14px;
  background: #eef4fb;
  color: var(--primary-dark);
  font-weight: 600;
}
.cuenta-header.nuevos { background: #e8f5e9; color: #2e7d32; }

.producto-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-bottom: 1px solid #eceff1;
}
.producto-qty-badge {
  flex: 0 0 auto;
  min-width: 26px;
  height: 26px;
  border-radius: 6px;
  background: var(--primary);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 0.82rem;
}
.producto-item-info { flex: 1; }
.producto-item-info h4 { margin: 0; font-size: 0.92rem; }
.producto-item-info small { color: var(--muted); }
.producto-item-price { font-weight: 700; color: var(--ok); }
.btn-remove-producto {
  border: none;
  background: transparent;
  color: var(--err);
  font-size: 1rem;
  cursor: pointer;
}
.cuenta-actions { margin-top: 8px; text-align: right; }
.cuenta-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
  align-items: center;
}
.mesa-btn-accion { background: #455a64; }
.mesa-btn:disabled,
.mesa-btn[disabled] { opacity: 0.45; cursor: not-allowed; }

/* Modal */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  padding: 16px;
}
.modal-card {
  background: var(--surface);
  border-radius: 16px;
  width: 100%;
  max-width: 420px;
  padding: 22px;
  position: relative;
  max-height: 90vh;
  overflow-y: auto;
}
.modal-close {
  position: absolute;
  top: 12px;
  right: 12px;
  border: none;
  background: transparent;
  font-size: 1.1rem;
  cursor: pointer;
  color: var(--muted);
}
.modal-img {
  display: block;
  width: 100%;
  max-height: 180px;
  object-fit: cover;
  border-radius: 12px;
  margin-bottom: 12px;
}
.modal-title { margin: 0 0 4px; }
.modal-price { margin: 0 0 14px; color: var(--ok); font-weight: 700; }
.modal-steps {
  display: flex;
  gap: 6px;
  justify-content: center;
  margin-bottom: 14px;
}
.step-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #cfd8dc;
}
.step-dot.active { background: var(--primary); }
.modal-step h4 { margin: 0 0 10px; }
.option-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 12px;
}
.option-item {
  display: flex;
  justify-content: space-between;
  padding: 10px 14px;
  border: 1px solid #dce3ec;
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  font-size: 0.92rem;
}
.option-item.selected { border-color: var(--primary); background: #e3f2fd; }
.selection-summary {
  background: #f1f8e9;
  border-radius: 8px;
  padding: 8px 12px;
  margin-bottom: 12px;
  font-size: 0.85rem;
}
.qty-control {
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: center;
  margin-bottom: 12px;
}
.qty-control button {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid #cfd8dc;
  background: #fff;
  font-size: 1.3rem;
  cursor: pointer;
}
.qty-control input {
  width: 60px;
  text-align: center;
  font-size: 1.1rem;
  padding: 8px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
}
#producto-nota {
  width: 100%;
  min-height: 60px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  padding: 10px;
  font-family: inherit;
  resize: vertical;
}
.modal-actions {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-top: 16px;
}
.modal-actions .mesa-btn { flex: 1; }
.modal-actions .mesa-btn:first-child { background: var(--muted); }

/* Loader + toast */
.loader {
  position: fixed;
  inset: 0;
  background: rgba(255, 255, 255, 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 200;
}
.spinner {
  width: 44px;
  height: 44px;
  border: 4px solid #cfd8dc;
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.toast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  background: #323232;
  color: #fff;
  padding: 12px 22px;
  border-radius: 10px;
  z-index: 300;
  font-weight: 600;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
}
.toast.success { background: var(--ok); }
.toast.error { background: var(--err); }

/* Abrir Caja */
.caja-main {
  max-width: 520px;
  margin: 0 auto;
  padding: 20px 16px;
}
.caja-card {
  background: var(--surface);
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 22px;
}
.caja-title { margin: 0 0 18px; font-size: 1.15rem; }
.caja-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 14px;
}
.caja-field label { font-size: 0.85rem; color: var(--muted); font-weight: 600; }
.caja-field input,
.caja-field select {
  padding: 12px 14px;
  border: 1px solid #cfd8dc;
  border-radius: 10px;
  font-size: 1.05rem;
  font-family: inherit;
  color: #263238;
}
.caja-estado {
  padding: 10px 14px;
  border-radius: 10px;
  margin-bottom: 16px;
  font-size: 0.9rem;
  font-weight: 600;
}
.caja-estado.disponible { background: #e8f5e9; color: #2e7d32; }
.caja-estado.abierta { background: #fdecea; color: #c62828; }
.caja-actions { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 10px; }
.caja-actions .mesa-btn,
.caja-actions .reporte-action { flex: 1 1 240px; padding: 14px; font-size: 1.05rem; }

/* Cierre de Caja / Arqueo */
.caja-main-wide { max-width: 720px; }
.caja-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.arq-resumen {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 18px;
}
.arq-item {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 6px 0;
  border-bottom: 1px dashed #eceff1;
  font-size: 0.92rem;
}
.arq-item span { color: var(--muted); }
.arq-item b { font-variant-numeric: tabular-nums; }
.arq-monedas {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}
.arq-monedas th,
.arq-monedas td {
  padding: 8px 10px;
  border-bottom: 1px solid #eceff1;
  text-align: left;
}
.arq-monedas .ta-right,
.ta-right { text-align: right; }
.arq-monedas input.arq-cant {
  width: 90px;
  padding: 6px 8px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
  text-align: right;
}
.arq-monedas tfoot td { border-top: 2px solid #cfd8dc; font-size: 1rem; }
.arq-hint { color: var(--muted); font-size: 0.85rem; }
.arq-diferencia {
  padding: 12px 14px;
  border-radius: 10px;
  font-size: 1.1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  background: #eceff1;
}
.arq-diferencia.ok { background: #e8f5e9; color: #2e7d32; }
.arq-diferencia.faltante { background: #fdecea; color: #c62828; }
.arq-diferencia.sobrante { background: #fff8e1; color: #ef6c00; }
@media (max-width: 560px) {
  .caja-grid, .arq-resumen { grid-template-columns: 1fr; }
}

/* Campos de modal (NCF / separar) */
.modal-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 12px;
  font-size: 0.85rem;
  color: var(--muted);
}
.modal-field input,
.modal-field select {
  padding: 10px 12px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 1rem;
  font-family: inherit;
  color: #263238;
}
.modal-hint { margin: 0 0 12px; font-size: 0.82rem; color: var(--primary); }

/* Separar cuenta */
.separar-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 8px 0 4px;
  max-height: 40vh;
  overflow-y: auto;
}
.separar-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #dce3ec;
  border-radius: 8px;
  padding: 10px 12px;
}
.separar-item-info h4 { margin: 0; font-size: 0.92rem; }
.separar-item-info small { color: var(--muted); }
.separar-qty {
  width: 64px;
  text-align: center;
  padding: 8px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 1rem;
}

/* Ticket 80MM imprimible */
.ticket80 { display: none; }
.ticket80 .ticket-inner {
  width: 80mm;
  font-family: 'Courier New', monospace;
  font-size: 12px;
  color: #000;
  padding: 4px;
}
.ticket80 .t-center { text-align: center; }
.ticket80 .t-bold { font-weight: 700; }
.ticket80 .t-sep {
  border-top: 1px dashed #000;
  margin: 6px 0;
}
.ticket80 .t-table { width: 100%; border-collapse: collapse; }
.ticket80 .t-table th,
.ticket80 .t-table td { text-align: left; padding: 1px 2px; vertical-align: top; }
.ticket80 .t-cant { width: 32px; text-align: center; }
.ticket80 .t-imp { text-align: right; white-space: nowrap; }
.ticket80 .t-row {
  display: flex;
  justify-content: space-between;
}

@media print {
  body * { visibility: hidden; }
  #ticket80, #ticket80 * { visibility: visible; }
  .ticket80 {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 80mm;
  }
}

/* ---- Facturación / Cotización (FrmInvoice) ---- */
.factura-main {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow-x: hidden;
}
.factura-card {
  background: #fff;
  border-radius: 12px;
  padding: 14px 16px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.factura-head-grid,
.factura-prod-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px 14px;
}
.factura-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.factura-field-wide { grid-column: span 2; }
.factura-field label { font-size: 0.78rem; color: var(--muted); font-weight: 600; }
.factura-field input,
.factura-field select {
  width: 100%;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
}
.factura-inline {
  display: flex;
  gap: 6px;
  align-items: center;
  width: 100%;
  min-width: 0;
}
.factura-inline input {
  flex: 1 1 auto;
  min-width: 0;
}
.factura-inline .mesa-btn {
  flex: 0 0 auto;
  white-space: nowrap;
  padding-inline: 10px;
}
.factura-autocomplete { position: relative; }
.factura-suggest {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 30;
  background: #fff;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15);
  max-height: 260px;
  overflow-y: auto;
  margin-top: 2px;
}
.factura-suggest.hidden { display: none; }
.factura-suggest-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 10px;
  cursor: pointer;
  border-bottom: 1px solid #eceff1;
}
.factura-suggest-item:last-child { border-bottom: none; }
.factura-suggest-item:hover,
.factura-suggest-item.active { background: #e3f2fd; }
.factura-suggest-item .fs-desc { font-weight: 600; font-size: 0.9rem; }
.factura-suggest-item .fs-meta { font-size: 0.78rem; color: var(--muted); }
.factura-existencia { color: var(--muted); font-size: 0.85rem; }
.factura-tabla { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.factura-tabla th,
.factura-tabla td { padding: 8px 10px; border-bottom: 1px solid #eceff1; text-align: left; }
.factura-tabla th.num,
.factura-tabla td.num { text-align: right; font-variant-numeric: tabular-nums; }
.factura-vacio { color: var(--muted); text-align: center; padding: 16px; }
.factura-footer {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 16px;
  align-items: start;
}
.factura-pago {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px 14px;
}
.factura-totales {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.factura-total-row {
  display: flex;
  justify-content: space-between;
  padding: 4px 8px;
  font-variant-numeric: tabular-nums;
}
.factura-total-grand {
  font-size: 1.15rem;
  font-weight: 700;
  border-top: 2px solid #cfd8dc;
  padding-top: 8px;
}
.factura-actions {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: flex-end;
}
.factura-actions .mesa-btn {
  min-width: 150px;
}
.cotizacion-formato-field { min-width: 160px; }
.cotizacion-formato-field select { min-height: 40px; }
.factura-actions .cotizacion-btn-imprimir { background: #1768af; color: #fff; }
.factura-actions .cotizacion-btn-imprimir:hover:not(:disabled) { background: #0f4e86; }
.factura-actions .cotizacion-btn-compartir { background: #168266; color: #fff; }
.factura-actions .cotizacion-btn-compartir:hover:not(:disabled) { background: #0e644e; }
.factura-del { padding: 2px 8px; }

.cliente-modal-card { max-width: 920px; }
.modal-hint {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 0.9rem;
}
.modal-field { margin-bottom: 10px; }
.modal-field input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
}
.cliente-grid-wrap {
  border: 1px solid #eceff1;
  border-radius: 8px;
  overflow: auto;
  max-height: 52vh;
}
.cliente-grid tbody tr { cursor: pointer; }
.cliente-grid tbody tr:hover { background: #e3f2fd; }
.cliente-grid .empty { text-align: center; color: var(--muted); }

.fp-resumen {
  margin-top: 6px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #f5f9fe;
  color: #35546b;
  font-size: 0.86rem;
  line-height: 1.35;
  min-height: 34px;
}

.forma-pago-card { max-width: 980px; }
.fp-quick-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.fp-quick-actions .mesa-btn {
  flex: 1 1 140px;
}
.fp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 10px 12px;
}
.fp-grid label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 0.82rem;
  color: var(--muted);
  font-weight: 600;
}
.fp-grid input {
  width: 100%;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
  color: var(--text);
}
.fp-grid .fp-wide { grid-column: span 2; }
.fp-totales {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 8px;
  background: #f7fbff;
  border: 1px solid #dfe9f5;
  display: grid;
  gap: 6px;
  font-size: 0.92rem;
}
.fp-totales b {
  font-variant-numeric: tabular-nums;
}

@media (max-width: 900px) {
  .factura-head-grid,
  .factura-prod-grid {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  }

  .factura-actions {
    justify-content: stretch;
  }

  .factura-actions .mesa-btn {
    flex: 1 1 220px;
  }
}

.reporte-actions-card {
  max-width: 900px;
  margin: 0 auto;
}

.reporte-params-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.reporte-param-field {
  display: grid;
  gap: 6px;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--muted);
}

.reporte-param-field input {
  padding: 8px 10px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
  background: #fff;
}

.reporte-param-check {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
}

.reporte-format-group {
  display: grid;
  gap: 6px;
  margin-bottom: 14px;
}

.reporte-format-group label {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--muted);
}

.reporte-format-group select {
  max-width: 260px;
  padding: 8px 10px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  font-size: 0.95rem;
}

.reporte-actions-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
}

.reporte-datasource-meta {
  margin-top: 14px;
  color: var(--muted);
  font-size: 0.9rem;
}

.reporte-datasource-preview {
  margin-top: 10px;
}

.al-left { text-align: left; }
.al-center { text-align: center; }
.al-right { text-align: right; }

.reporte-group-box {
  margin-bottom: 8px;
  padding: 8px 10px;
  border: 1px solid #cfd8dc;
  border-radius: 8px;
  background: #f7fbff;
  font-size: 0.9rem;
}

.reporte-group-count {
  color: var(--muted);
}

.reporte-total-box {
  margin-top: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 0.9rem;
  color: #263238;
}

@media (max-width: 720px) {
  .factura-footer { grid-template-columns: 1fr; }
  .factura-field-wide { grid-column: span 1; }
  .fp-grid .fp-wide { grid-column: span 1; }

  .factura-main {
    padding: 12px;
  }

  .factura-card {
    padding: 12px;
  }

  .factura-inline .mesa-btn {
    min-width: 40px;
    padding-inline: 8px;
  }

  .factura-tabla {
    font-size: 0.82rem;
  }
}
.cronologico-page {
  display: block;
  width: 100%;
  min-width: 760px;
  background: white;
  margin: 12px auto 24px;
  box-shadow: 0 2px 8px #0003;
  font-family: Arial, sans-serif;
}
.reporte-datasource-preview { overflow-x: auto; }
.reporte-param-field select { padding: 10px; border: 1px solid #ccd5dd; border-radius: 6px; background: white; }
.reporte-share-dialog { max-width: 520px; width: calc(100% - 48px); border: 0; border-radius: 12px; padding: 24px; color: #172f40; }
.reporte-share-dialog::backdrop { background: #0008; }
.reporte-share-dialog p { line-height: 1.5; }

/* Retiros de Caja */
.retiro-main { max-width: 980px; margin: 0 auto; padding: 28px 18px 56px; }
.retiro-card { background: var(--surface, #fff); border-radius: 18px; box-shadow: 0 12px 36px #17384f1c; padding: 28px; border: 1px solid #dce7ef; }
.retiro-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-bottom: 18px; margin-bottom: 22px; border-bottom: 1px solid #e3ebf1; }
.retiro-heading h1 { margin: 2px 0 0; font-size: clamp(1.65rem, 4vw, 2.25rem); color: #19384c; }
.retiro-eyebrow { margin: 0; color: #1874a8; text-transform: uppercase; letter-spacing: .11em; font-weight: 800; font-size: .75rem; }
.retiro-badge { background: #eaf3f8; color: #24556f; border-radius: 999px; padding: 8px 14px; font-weight: 800; }
.retiro-badge-saved { color: #12623d; background: #dff5e9; }
.retiro-badge-cancelled { color: #8a2731; background: #fde8ea; }
.retiro-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 17px; }
.retiro-grid-top { grid-template-columns: 1.25fr .8fr .8fr; margin-bottom: 17px; }
.retiro-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.retiro-field > span:first-child { color: #365668; font-size: .83rem; font-weight: 800; }
.retiro-field input, .retiro-field select, .retiro-field textarea, .retiro-search input { width: 100%; border: 1px solid #bcced9; border-radius: 9px; background: #fff; color: #17384b; padding: 11px 12px; font: inherit; }
.retiro-field textarea { resize: vertical; min-height: 84px; }
.retiro-field input:focus, .retiro-field select:focus, .retiro-field textarea:focus, .retiro-search input:focus { outline: 3px solid #2196f329; border-color: #1e88e5; }
.retiro-field input[readonly] { background: #f3f7f9; color: #466474; }
.retiro-field small { align-self: flex-end; color: #6c8290; }
.retiro-span-2 { grid-column: span 2; }
.retiro-span-3 { grid-column: 1 / -1; }
.retiro-input-action { display: flex; align-items: stretch; }
.retiro-input-action input { border-radius: 9px 0 0 9px; }
.retiro-input-action button { min-width: 48px; border: 0; border-radius: 0 9px 9px 0; background: #1678ad; color: #fff; font-size: 1.2rem; cursor: pointer; }
.retiro-input-action button:hover { background: #0d628e; }
.retiro-origin { margin-top: 18px; padding: 12px 14px; border-left: 4px solid #1685bd; background: #ecf7fc; color: #245269; border-radius: 6px; }
.retiro-amount-row { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin: 22px 0; padding: 20px; background: #f5f9fb; border-radius: 12px; }
.retiro-amount { max-width: 300px; }
.money-input { display: flex; align-items: center; border: 2px solid #2a8d5d; border-radius: 10px; overflow: hidden; background: #fff; }
.money-input b { padding: 12px; color: #196a45; }
.money-input input { border: 0; border-radius: 0; text-align: right; color: #155e3d; font-size: 1.35rem; font-weight: 800; }
.retiro-print-option { display: flex; align-items: center; gap: 8px; color: #456273; font-weight: 700; padding-bottom: 11px; }
.retiro-print-option input { width: 18px; height: 18px; }
.retiro-quick-actions, .retiro-primary-actions, .retiro-dialog-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.retiro-quick-actions { padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid #e0e9ef; }
.retiro-primary-actions { justify-content: flex-end; }
.action-btn { border: 0; border-radius: 9px; min-height: 46px; padding: 10px 16px; color: #fff; font: 700 .92rem inherit; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; box-shadow: 0 3px 8px #17384f1a; transition: transform .15s, filter .15s; }
.action-btn:hover:not(:disabled) { transform: translateY(-1px); filter: brightness(.92); }
.action-btn:disabled, .retiro-input-action button:disabled { opacity: .42; cursor: not-allowed; box-shadow: none; }
.action-green { background: #23864f; }.action-blue { background: #1977ad; }.action-violet { background: #7551a6; }.action-brown { background: #986236; }.action-slate { background: #607784; }.action-red { background: #bd3c4a; }
.retiro-dialog { border: 0; padding: 0; background: transparent; width: min(900px, calc(100% - 24px)); max-width: none; }
.retiro-dialog:not([open]) { display: none; }
.retiro-dialog::backdrop { background: #102b3a99; backdrop-filter: blur(2px); }
.retiro-dialog-card { background: #fff; border-radius: 15px; padding: 22px; box-shadow: 0 18px 60px #0005; max-height: 88vh; overflow: auto; }
.retiro-dialog-card > header { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-bottom: 18px; }
.retiro-dialog-card h2 { margin: 0; color: #19384c; }
.retiro-dialog-card > header button { border: 0; background: transparent; font-size: 1.8rem; color: #607784; cursor: pointer; }
.retiro-search { display: flex; gap: 8px; margin-bottom: 14px; }
.retiro-search button { border: 0; border-radius: 8px; padding: 0 20px; background: #1977ad; color: #fff; font-weight: 800; }
.retiro-table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.retiro-table th { background: #254f61; color: #fff; text-align: left; }
.retiro-table th, .retiro-table td { padding: 10px 9px; border-bottom: 1px solid #dbe5eb; }
.retiro-table tbody tr { cursor: pointer; }.retiro-table tbody tr:hover, .retiro-table tbody tr:focus { background: #eaf5fa; outline: none; }
.retiro-count-dialog { width: min(620px, calc(100% - 24px)); }
.retiro-table input[type=number] { width: 90px; padding: 7px; border: 1px solid #b9ccd7; border-radius: 6px; text-align: right; }
.retiro-count-total { display: flex; justify-content: space-between; align-items: center; margin: 16px 0; padding: 15px; background: #e9f5ee; color: #175b3b; border-radius: 9px; font-size: 1.15rem; }
.retiro-count-total strong { font-size: 1.35rem; }
.retiro-dialog-actions { justify-content: flex-end; margin-top: 20px; }
.retiro-auth-dialog { width: min(480px, calc(100% - 24px)); }
.retiro-auth-dialog .retiro-field { margin-top: 15px; }

@media (max-width: 720px) {
  .retiro-card { padding: 20px 16px; }
  .retiro-grid, .retiro-grid-top { grid-template-columns: 1fr; }
  .retiro-span-2, .retiro-span-3 { grid-column: auto; }
  .retiro-amount-row { align-items: stretch; flex-direction: column; }
  .retiro-amount { max-width: none; }
  .retiro-primary-actions .action-btn, .retiro-quick-actions .action-btn { flex: 1 1 145px; }
  .retiro-dialog-card { padding: 17px 13px; }
}
.share-pdf-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 20px; }
.share-pdf-actions button { padding: 10px 16px; border: 1px solid #bcc8d0; border-radius: 6px; cursor: pointer; }
.share-pdf-actions .share-pdf-send { background: #15743e; color: white; }
.share-pdf-actions button:disabled { opacity: .5; cursor: not-allowed; }
.reporte-action {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  padding: 12px 16px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: var(--action-color, #185abd);
  color: #fff;
  font: 600 14px/1.3 "Segoe UI", sans-serif;
  cursor: pointer;
  box-shadow: 0 2px 4px #18324b26;
  transition: filter .15s, box-shadow .15s;
}
.reporte-action svg { width: 22px; height: 22px; flex: 0 0 22px; }
.reporte-action--print { --action-color: #185abd; }
.reporte-action--email { --action-color: #6941b0; }
.reporte-action--whatsapp { --action-color: #147a41; }
.reporte-action--download { --action-color: #b33d17; }
.reporte-action--preview { --action-color: #006b80; }
.reporte-action:hover:not(:disabled) { filter: brightness(.9); box-shadow: 0 3px 7px #18324b40; }
.reporte-action:active:not(:disabled) { box-shadow: inset 0 2px 4px #0003; }
.reporte-action:focus-visible { outline: 3px solid #172f40; outline-offset: 3px; }
.reporte-action:disabled { opacity: .45; cursor: not-allowed; box-shadow: none; }

/* Devoluciones de facturas */
.devolucion-main { max-width: 1180px; margin: 0 auto; padding: 28px 18px 56px; }
.devolucion-card { background: #fff; border: 1px solid #dce7ef; border-radius: 18px; padding: 26px; box-shadow: 0 12px 36px #17384f1c; }
.devolucion-heading { display: flex; justify-content: space-between; align-items: center; gap: 18px; border-bottom: 1px solid #e1e9ee; padding-bottom: 16px; }
.devolucion-heading h1 { margin: 2px 0 0; color: #19384c; font-size: clamp(1.55rem,4vw,2.2rem); }
.devolucion-toolbar,.devolucion-line-actions,.devolucion-primary-actions { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; margin-top: 18px; }
.devolucion-format { display: grid; gap: 5px; color: #365668; font-size: .83rem; font-weight: 800; margin-left: auto; }
.devolucion-format select { min-width: 160px; border: 1px solid #bcced9; border-radius: 8px; padding: 10px; background: #fff; }
.devolucion-empty { margin-top: 20px; padding: 44px 20px; border: 2px dashed #c8d6df; border-radius: 12px; text-align: center; color: #607985; background: #f8fbfc; }
.devolucion-factura-grid { margin-top: 20px; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }
.devolucion-factura-grid > div { min-width: 0; padding: 12px; border: 1px solid #dce6ec; border-radius: 9px; background: #f6fafc; }
.devolucion-factura-grid span { display: block; color: #637b88; font-size: .75rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.devolucion-factura-grid b { display: block; margin-top: 4px; color: #183b4e; overflow-wrap: anywhere; }
.devolucion-table-wrap { overflow: auto; margin-top: 14px; border: 1px solid #d6e1e8; border-radius: 10px; }
.devolucion-table { width: 100%; border-collapse: collapse; min-width: 900px; font-size: .84rem; }
.devolucion-table th { position: sticky; top: 0; z-index: 1; background: #294f5a; color: #fff; text-align: left; white-space: nowrap; }
.devolucion-table th,.devolucion-table td { padding: 9px 8px; border-bottom: 1px solid #dce5ea; }
.devolucion-table tbody tr:hover,.devolucion-table tbody tr:focus { background: #eaf5fa; outline: none; }
.devolucion-table .r { text-align: right; font-variant-numeric: tabular-nums; }
.devolucion-table .is-unavailable { opacity: .52; cursor: not-allowed; }
.devolucion-qty { width: 92px; padding: 7px; text-align: right; border: 1px solid #9eb6c4; border-radius: 7px; font: inherit; }
.devolucion-concepto { margin-top: 18px; }
.devolucion-totales { margin: 18px 0 0 auto; width: min(100%,430px); display: grid; gap: 3px; }
.devolucion-totales > div { display: flex; justify-content: space-between; padding: 7px 12px; background: #f4f8fa; }
.devolucion-totales .grand { background: #dff2e7; color: #155e3d; font-size: 1.15rem; border-top: 2px solid #228451; }
.devolucion-primary-actions { justify-content: flex-end; }
.devolucion-primary-actions > button { min-width: 210px; }
.devolucion-search-dialog { width: min(1260px,calc(100% - 24px)); }
.devolucion-search-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 10px; }
.search-results { max-height: 58vh; }
.search-results tbody tr:not(.is-unavailable) { cursor: pointer; }
@media(max-width:850px){.devolucion-factura-grid{grid-template-columns:1fr 1fr}.devolucion-search-grid{grid-template-columns:1fr 1fr}.devolucion-format{margin-left:0}.devolucion-card{padding:20px 14px}}
@media(max-width:520px){.devolucion-factura-grid,.devolucion-search-grid{grid-template-columns:1fr}.devolucion-heading{align-items:flex-start;flex-direction:column}.devolucion-toolbar>*{flex:1 1 100%}.devolucion-primary-actions>button{width:100%}}
.inventory-dialog{border:0;border-radius:14px;padding:24px;max-width:760px;width:calc(100% - 32px);box-shadow:0 18px 60px #102a4333}.inventory-dialog::backdrop{background:#102a4366}.inventory-dialog h2{margin-top:0;color:#17324d}.product-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.product-form-grid label{display:flex;flex-direction:column;gap:5px;color:#40566b;font-weight:600}.product-form-grid input{border:1px solid #b9c7d4;border-radius:7px;padding:9px;font:inherit}.product-form-grid .check{flex-direction:row;align-items:center}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}@media(max-width:600px){.product-form-grid{grid-template-columns:1fr}}
.product-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid #d9e2ec;margin-bottom:16px}.product-tabs .tab{border:0;background:#eef3f7;color:#38536b;padding:9px 12px;border-radius:7px 7px 0 0;cursor:pointer;font-weight:600}.product-tabs .tab.active{background:#1976d2;color:#fff}.product-panel{display:none}.product-panel.active{display:block}.product-form-grid textarea{border:1px solid #b9c7d4;border-radius:7px;padding:9px;font:inherit;resize:vertical}.field-help{color:#617282}.fraccion-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:8px;margin-bottom:8px}.fraccion-row input{border:1px solid #b9c7d4;border-radius:7px;padding:8px}@media(max-width:600px){.fraccion-row{grid-template-columns:1fr 1fr}}
.inventory-table tbody tr.selected{background:#dbeeff;outline:2px solid #1976d2}.product-detail{max-height:55vh;overflow:auto;background:#f5f8fb;padding:14px;border-radius:8px;white-space:pre-wrap}.ingredient-row{margin-top:8px}
.product-image-editor{display:grid;grid-template-columns:minmax(220px,360px) 1fr;gap:22px;align-items:center}.product-image-preview{width:100%;height:260px;border:1px solid #cbd5df;border-radius:12px;background-color:#f6f8fa;background-position:center;background-size:contain;background-repeat:no-repeat}.product-image-preview.empty{background:#f6f8fa url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='120'%3E%3Crect width='100%25' height='100%25' fill='%23eef2f6'/%3E%3Ctext x='50%25' y='52%25' text-anchor='middle' fill='%23718191' font-family='sans-serif' font-size='15'%3ESin imagen%3C/text%3E%3C/svg%3E") center/60% no-repeat}.product-image-editor>div{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.product-image-editor>.product-image-preview{display:block}.product-image-pick{display:inline-block}@media(max-width:650px){.product-image-editor{grid-template-columns:1fr}}

/* Productos: distribución inspirada en XtraForm1 */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.inventory-dialog.product-dialog{width:min(1120px,calc(100% - 24px));max-width:none;padding:0;border-radius:9px;overflow:hidden;background:#f7f9fb}
.product-dialog form{min-height:min(720px,calc(100vh - 32px));padding:14px}
.legacy-product-shell{display:grid;grid-template-columns:minmax(0,1fr) 142px;gap:16px;min-height:680px}
.legacy-product-main{min-width:0;display:flex;flex-direction:column}
.legacy-product-identity{display:grid;grid-template-columns:minmax(210px,.55fr) minmax(320px,1.45fr);gap:24px;align-items:end;padding:4px 6px 10px}
.legacy-product-identity label{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;color:#172b3d;font-size:.9rem;font-weight:700}
.legacy-product-identity input{min-width:0;border:1px solid #9facb8;border-radius:2px;padding:8px 10px;background:#fff;font:inherit}
.legacy-product-identity label:first-child input{background:#fff6b3}
.product-dialog .product-tabs{gap:0;margin:0;border:1px solid #cbd5df;border-bottom:0;background:#edf1f4}
.product-dialog .product-tabs .tab{border:0;border-right:1px solid #cbd5df;border-radius:0;padding:8px 14px;background:#eef1f4;color:#203244;font-size:.85rem;font-weight:600}
.product-dialog .product-tabs .tab.active{background:#fff;color:#0a69ae;box-shadow:inset 0 3px #087dcc}
.product-dialog .product-panel{flex:1;padding:18px;border:1px solid #cbd5df;background:#fff;overflow:auto}
.product-dialog .product-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px 18px}
.product-dialog .product-form-grid label{font-size:.86rem;font-weight:600;color:#536575}
.product-dialog .product-form-grid input,.product-dialog .product-form-grid select,.product-dialog .product-form-grid textarea{width:100%;box-sizing:border-box;border:1px solid #b5c0ca;border-radius:3px;padding:8px;background:#fff;color:#142c40;font:inherit}
.product-dialog .product-form-grid input[type=number]{text-align:right;background:#fffbe2}
.product-dialog .product-form-grid .check{min-height:34px;padding:0 5px;border:1px solid #d9e0e6;background:#f7f9fb;color:#263f54}
.product-dialog .product-form-grid .check input{width:auto;accent-color:#087dcc}
.legacy-product-actions{display:flex;flex-direction:column;gap:6px;padding-top:90px}
.legacy-product-action{display:grid;grid-template-columns:42px 1fr;align-items:center;gap:7px;min-height:62px;width:100%;border:0;border-radius:3px;padding:7px 10px;background:#087dcc;color:#fff;cursor:pointer;text-align:left;box-shadow:0 2px 4px #12324b2b;transition:transform .12s ease,filter .12s ease}
.legacy-product-action span{display:grid;place-items:center;width:38px;height:38px;border:2px solid currentColor;border-radius:50%;font-size:1.25rem;background:#fff2;color:#fff}
.legacy-product-action b{font-size:.9rem;font-weight:700}
.legacy-product-action:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}
.legacy-product-action:focus-visible{outline:3px solid #ffd54f;outline-offset:2px}
.legacy-product-action:disabled{cursor:not-allowed;opacity:.5;filter:grayscale(.35)}
.legacy-product-action:last-child{margin-top:auto;background:#169c62}
.product-dialog .product-image-editor{grid-template-columns:minmax(280px,440px) 1fr;min-height:420px}
.product-dialog .product-image-preview{height:390px;border-radius:4px;background-color:#f4f6f8}
.product-dialog .product-image-pick{cursor:pointer}
@media(max-width:900px){.legacy-product-shell{grid-template-columns:1fr}.legacy-product-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding-top:0}.legacy-product-action{min-height:54px;grid-template-columns:32px 1fr;padding:6px}.legacy-product-action span{width:29px;height:29px;font-size:1rem}.legacy-product-action:last-child{margin-top:0}.product-dialog .product-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.product-dialog form{padding:8px}.legacy-product-identity{grid-template-columns:1fr;gap:8px}.legacy-product-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.product-dialog .product-tabs{overflow-x:auto;flex-wrap:nowrap}.product-dialog .product-tabs .tab{white-space:nowrap}.product-dialog .product-form-grid{grid-template-columns:1fr}.product-dialog .product-image-editor{grid-template-columns:1fr;min-height:0}.product-dialog .product-image-preview{height:270px}}
.inventory-table tbody tr.selected{background:#dceeff;box-shadow:inset 4px 0 #1976d2}
.inventory-dialog.category-dialog{width:min(940px,calc(100% - 24px));max-width:none;padding:0;border-radius:5px;overflow:visible;background:#f7f7f7}
.category-form{display:flex;flex-direction:column;height:min(680px,calc(100vh - 28px));min-height:0;color:#26394b}
.category-titlebar{display:flex;align-items:center;gap:8px;padding:10px 13px;background:#fff;border-bottom:1px solid #d5dce2;color:#0783d3}
.category-titlebar h2{flex:1;margin:0;font-size:1.08rem;font-weight:500;color:#0783d3}
.category-titlebar>button{border:0;background:transparent;font-size:1.7rem;line-height:1;color:#66737e;cursor:pointer}
.category-window-icon{font-size:1.15rem;color:#f5a623}
.category-tabs{display:flex;padding:0 13px;background:#fff;border-bottom:1px solid #bfc7ce}
.category-tabs button{border:1px solid transparent;border-bottom:0;background:#f4f5f6;padding:9px 15px;color:#4b5d6c;cursor:pointer}
.category-tabs button.active{margin-bottom:-1px;background:#fff;border-color:#bfc7ce;color:#087dcc}
.category-panel{display:none;flex:1;min-height:0;padding:22px 28px;background:#fff;overflow:auto}
.category-panel.active{display:block}
.category-top-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:28px;align-items:start}
.category-fields{display:grid;grid-template-columns:minmax(180px,.55fr) minmax(210px,.45fr);gap:13px 22px;padding-top:12px}
.category-fields label,.category-data-fields label,.category-account-field{display:grid;grid-template-columns:105px minmax(0,1fr);align-items:center;gap:10px;font-size:.88rem;color:#52687a}
.category-fields .category-name{grid-column:1/-1}
.category-form input,.category-form select{box-sizing:border-box;width:100%;border:1px solid #9fb0bf;border-radius:2px;padding:8px;background:#fff;color:#182d3f;font:inherit}
.category-fields input[readonly]{background:#fff8bd;color:#5a4c00}
.category-image-editor{display:flex;flex-direction:column;gap:8px}
.category-image-preview{display:grid;place-items:center;height:155px;border:1px solid #aeb9c3;background:#071017 center/contain no-repeat;color:#fff;overflow:hidden}
.category-image-preview span{font-size:6rem;line-height:1}
.category-image-preview.has-image span{display:none}
.category-image-actions{display:flex;gap:8px}
.category-image-actions label,.category-image-actions button,.category-subcategory-entry button{border:0;border-radius:4px;padding:8px 12px;background:#087dcc;color:#fff;font-weight:700;cursor:pointer}
.category-image-actions button{background:#607d8b}
.category-form fieldset{margin:18px 0 0;padding:17px 18px;border:1px solid #bfc8d0}
.category-form legend{padding:0 8px;color:#667786;font-weight:700;font-size:.88rem}
.category-subcategory-entry{display:flex;justify-content:center;align-items:end;gap:10px}
.category-subcategory-entry label{display:flex;flex-direction:column;gap:5px;color:#52687a;font-size:.84rem}
.category-subcategory-mini{max-width:420px;max-height:120px;margin:12px auto;overflow:auto}
.category-subcategory-mini table,.category-subcategory-large table{width:100%;border-collapse:collapse}
.category-subcategory-mini th,.category-subcategory-mini td,.category-subcategory-large th,.category-subcategory-large td{border:1px solid #d1d9df;padding:7px 9px;text-align:left;font-size:.84rem}
.category-subcategory-mini th,.category-subcategory-large th{background:#f0f3f5;color:#243b4d}
.category-subcategory-mini button,.category-subcategory-large button{border:0;border-radius:3px;background:#cf3f4b;color:#fff;padding:4px 8px;cursor:pointer}
.category-data-fields{display:grid;gap:8px;max-width:470px;margin-top:12px}
.category-accounts{display:grid;grid-template-columns:1fr 1fr minmax(210px,.8fr);gap:22px;align-items:start}
.category-accounts>div{display:grid;gap:10px}
.category-account-field{position:relative;grid-template-columns:86px minmax(0,1fr)}
.category-account-box{display:grid;min-width:0;gap:5px}
.category-account-control{display:flex}
.category-account-control input{border-right:0}
.category-account-control button{width:40px;border:1px solid #087dcc;border-radius:0 3px 3px 0;background:#087dcc;color:#fff;cursor:pointer;font-size:1.05rem;font-weight:800}
.category-account-selected{display:none;grid-template-columns:18px max-content minmax(0,1fr) 24px;align-items:center;gap:6px;min-width:0;border:1px solid #9bd2b4;border-radius:5px;padding:5px 6px;background:#edf9f2;color:#17673c}
.category-account-selected.visible{display:grid}
.category-account-selected>b{font-size:.76rem;font-variant-numeric:tabular-nums}
.category-account-selected>small{min-width:0;overflow:hidden;color:#315d48;font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}
.category-account-selected>button{display:grid;place-items:center;width:22px;height:22px;border:0;border-radius:50%;background:#d8efe2;color:#17673c;cursor:pointer;font-weight:800}
.category-account-selected>button:hover{background:#bfe3cf}
.category-account-results{position:absolute;z-index:15;left:86px;right:0;top:37px;display:none;max-height:220px;overflow:auto;border:1px solid #9eb0bf;background:#fff;box-shadow:0 8px 20px #152b3c33}
.category-account-results.open{display:block}
.category-account-results button{display:grid;grid-template-columns:90px 1fr;gap:8px;width:100%;border:0;border-bottom:1px solid #e3e8ec;padding:8px;background:#fff;text-align:left;cursor:pointer}
.category-account-results button:hover{background:#e8f3fb}
.category-account-results em{display:block;padding:10px;color:#637684}
.category-checkbox{display:flex;align-items:center;gap:8px;padding-top:8px;font-size:.88rem}
.category-checkbox input{width:auto;accent-color:#087dcc}
.category-subcategory-large{min-height:430px;overflow:auto}
.category-actions{display:grid;grid-template-columns:repeat(3,minmax(130px,1fr));gap:3px;margin:0 28px 18px;padding:0;background:#6d7073}
.category-actions button{display:grid;grid-template-columns:55px 1fr;align-items:center;min-height:58px;border:0;background:#6d7073;color:#fff;cursor:pointer}
.category-actions button:hover:not(:disabled){background:#087dcc}
.category-actions button:disabled{opacity:.45;cursor:not-allowed}
.category-actions span{display:grid;place-items:center;font-size:1.45rem}
.category-actions b{font-size:.87rem}
@media(max-width:760px){.category-top-grid{grid-template-columns:1fr}.category-fields{grid-template-columns:1fr}.category-fields .category-name{grid-column:auto}.category-image-editor{order:-1}.category-image-preview{height:130px}.category-accounts{grid-template-columns:1fr}.category-actions{margin:0 12px 12px}.category-panel{padding:14px}.category-fields label,.category-data-fields label{grid-template-columns:92px 1fr}}
@media(max-width:480px){.category-actions{grid-template-columns:1fr}.category-actions button{min-height:48px}.category-subcategory-entry{align-items:stretch;flex-direction:column}.category-fields label,.category-data-fields label,.category-account-field{grid-template-columns:1fr}.category-account-results{left:0;top:62px}.category-account-selected{grid-template-columns:18px minmax(56px,max-content) minmax(0,1fr) 24px}}

/* Registro de proveedores, basado en FrmRegistroProveedores */
.provider-dialog{width:min(980px,96vw);max-width:980px;padding:0;border:0;border-radius:10px;overflow:visible;background:#f5f7f9;box-shadow:0 22px 65px #09223866}
.provider-dialog::backdrop{background:#10283d99;backdrop-filter:blur(2px)}
.provider-form{min-width:0}
.provider-title{display:flex;align-items:center;gap:14px;padding:16px 20px;background:linear-gradient(135deg,#087dcc,#075f9d);color:#fff;border-radius:10px 10px 0 0}
.provider-title>span{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#ffffff22;font-size:1.8rem}.provider-title h2{margin:0;font-size:1.3rem}.provider-title p{margin:3px 0 0;color:#dceffc;font-size:.84rem}
.provider-tabs{display:flex;padding:10px 18px 0;background:#e8edf1;border-bottom:1px solid #b7c3cc}.provider-tabs button{padding:10px 18px;border:1px solid transparent;border-bottom:0;background:transparent;color:#465d6f;cursor:pointer;font-weight:700}.provider-tabs button.active{border-color:#b7c3cc;border-radius:6px 6px 0 0;background:#fff;color:#087dcc}
.provider-panel{display:none;min-height:385px;padding:22px;background:#fff}.provider-panel.active{display:block}.provider-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px}.provider-grid label{display:grid;gap:5px;color:#465d6f;font-size:.82rem;font-weight:650}.provider-grid input,.provider-grid select,.provider-grid textarea{width:100%;min-width:0;border:1px solid #aebbc5;border-radius:5px;padding:9px;background:#fff;color:#172b3a;font:inherit;box-sizing:border-box}.provider-grid input:focus,.provider-grid select:focus,.provider-grid textarea:focus{outline:2px solid #79bce8;border-color:#087dcc}.provider-grid input[readonly]{background:#edf2f5;color:#49606f}.provider-name{grid-column:span 2}.provider-address{grid-column:span 2}.provider-check{align-self:end;display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;padding:9px 0}.provider-check input{width:auto}
.provider-rnc-control,.provider-account-control{display:flex}.provider-rnc-control input,.provider-account-control input{border-radius:5px 0 0 5px;border-right:0}.provider-rnc-control button,.provider-account-control button{flex:0 0 auto;border:1px solid #087dcc;border-radius:0 5px 5px 0;padding:0 11px;background:#087dcc;color:#fff;cursor:pointer;font-weight:750}.provider-rnc small{min-height:17px;color:#607583;font-weight:500}.provider-rnc small.loading{color:#956c00}.provider-rnc small.success{color:#167142}.provider-rnc small.error{color:#b3261e}
.provider-dgii-card{margin-top:18px;border:1px solid #b7dac8;border-left:5px solid #28a464;border-radius:6px;padding:12px 15px;background:#f0faf5}.provider-dgii-card dl{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;margin:10px 0 0;font-size:.83rem}.provider-dgii-card dt{color:#5c7167}.provider-dgii-card dd{margin:0;color:#173d2a;font-weight:650}
.provider-account{position:relative;grid-column:span 2}.provider-account-selected{display:none;grid-template-columns:20px max-content 1fr;align-items:center;gap:7px;margin-top:2px;border:1px solid #9bd2b4;border-radius:5px;padding:6px 8px;background:#edf9f2;color:#17673c}.provider-account-selected.visible{display:grid}.provider-account-selected small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#315d48}.provider-account-results{position:absolute;z-index:30;top:67px;left:0;right:0;display:none;max-height:240px;overflow:auto;border:1px solid #9eb0bf;background:#fff;box-shadow:0 10px 24px #152b3c33}.provider-account-results.open{display:block}.provider-account-results button{display:grid;grid-template-columns:100px 1fr auto;gap:8px;width:100%;border:0;border-bottom:1px solid #e1e7eb;padding:9px;background:#fff;text-align:left;cursor:pointer}.provider-account-results button:hover{background:#e8f3fb}.provider-account-results em{color:#a44630;font-size:.72rem}.provider-account-results p{margin:0;padding:10px;color:#607583}.provider-observations{grid-column:span 3}.provider-balances{display:flex;justify-content:flex-end;gap:28px;margin-top:22px;border-top:1px solid #dae1e6;padding-top:14px;color:#536876}.provider-balances b{display:block;color:#142c3c;font-size:1rem;text-align:right}
.provider-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px 18px 18px;background:#e8edf1;border-radius:0 0 10px 10px}.provider-actions button{display:flex;align-items:center;justify-content:center;gap:9px;min-height:52px;border:0;border-radius:6px;background:#087dcc;color:#fff;cursor:pointer}.provider-actions button:nth-child(2){background:#bb3d35}.provider-actions button:nth-child(3){background:#267e55}.provider-actions button:nth-child(4){background:#566c7b}.provider-actions button:disabled{opacity:.45;cursor:not-allowed}.provider-actions span{font-size:1.35rem}
@media(max-width:760px){.provider-dialog{width:97vw}.provider-panel{padding:15px}.provider-grid{grid-template-columns:1fr 1fr}.provider-name,.provider-address,.provider-account,.provider-observations{grid-column:span 2}.provider-actions{grid-template-columns:1fr 1fr}.provider-dgii-card dl{grid-template-columns:1fr}.provider-balances{justify-content:space-between;gap:8px}}
@media(max-width:480px){.provider-grid{grid-template-columns:1fr}.provider-name,.provider-address,.provider-account,.provider-observations{grid-column:auto}.provider-actions{grid-template-columns:1fr}.provider-panel{min-height:0}.provider-title p{display:none}}
.inventory-intro{max-width:900px;margin:-8px auto 18px;color:#5d6b7a;text-align:center}.inventory-tile small{display:block;margin-top:8px;color:#617282;font-size:.78rem}.inventory-workspace{max-width:1400px;margin:0 auto;padding:24px}.inventory-card{background:#fff;border-radius:16px;box-shadow:0 8px 28px #19324b1c;padding:24px}.inventory-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid #e4ebf2;padding-bottom:16px}.inventory-toolbar h1{margin:0;color:#17324d}.inventory-toolbar p{margin:6px 0 0;color:#617282}.inventory-actions{display:flex;gap:10px}.action-btn{border:0;border-radius:9px;padding:11px 16px;font-weight:700;cursor:pointer;color:#fff}.action-primary{background:#1976d2}.action-secondary{background:#546e7a}.action-btn:disabled{opacity:.45;cursor:not-allowed}.inventory-filters{display:flex;align-items:end;gap:18px;margin:18px 0}.inventory-filters label{display:flex;flex-direction:column;gap:6px;color:#40566b;font-weight:600}.inventory-filters input{min-width:300px;border:1px solid #b9c7d4;border-radius:8px;padding:10px 12px;font:inherit}.permission-note{color:#607d8b;font-size:.85rem}.inventory-table-wrap{overflow:auto}.inventory-table{width:100%;border-collapse:collapse;min-width:720px}.inventory-table th{background:#264f52;color:#fff;text-align:left;padding:10px;font-size:.84rem}.inventory-table td{border-bottom:1px solid #e6edf2;padding:9px;color:#243b53;font-size:.9rem}.inventory-table tbody tr:hover{background:#f1f7fb}@media(max-width:700px){.inventory-workspace{padding:12px}.inventory-toolbar,.inventory-filters{align-items:stretch;flex-direction:column}.inventory-filters input{min-width:0;width:100%}.inventory-actions{width:100%}.inventory-actions .action-btn{flex:1}}

/* Entrada y salida de mercancía, adaptada de FrmEntradaSalida */
.movement-dialog{width:min(1220px,calc(100% - 18px));max-width:none;height:min(900px,calc(100vh - 18px));max-height:none;border:1px solid #087dcc;border-radius:9px;padding:0;background:#f7f9fb;box-shadow:0 18px 65px #061b2b66}
.movement-dialog::backdrop,.movement-consult-dialog::backdrop{background:#0c263a99;backdrop-filter:blur(2px)}
.movement-form{height:100%;display:flex;flex-direction:column;overflow:hidden;color:#273b4a;font:14px/1.3 "Segoe UI",sans-serif}
.movement-title{height:56px;display:flex;align-items:center;gap:10px;padding:0 14px;background:#087dcc;color:#fff}
.movement-title>span{font-size:1.35rem}.movement-title h2{margin:0;font-size:1.04rem;letter-spacing:.02em;flex:1}.movement-title label{display:flex;align-items:center;gap:9px;font-weight:700}.movement-title input{width:145px;border:1px solid #85afd0;border-radius:3px;padding:7px 9px;background:#fff;color:#304556;font:inherit}
.movement-layout{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:8px;padding:8px;flex:1}
.movement-content{min-width:0;min-height:0;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.55fr);grid-auto-rows:max-content;gap:8px;overflow:auto}
.movement-content fieldset{min-width:0;margin:0;border:1px solid #cad4dc;border-radius:3px;padding:10px;background:#fff}.movement-content legend{padding:0 5px;font-size:.82rem;color:#29475a;font-weight:700}
.movement-head-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 10px}.movement-head-grid .wide{grid-column:span 2}
.movement-detail-grid{display:grid;grid-template-columns:1fr;gap:8px}.movement-config-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 10px}.movement-config-grid .wide{grid-column:span 2}
.movement-form label{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:.78rem;font-weight:700;color:#536879}.movement-form input,.movement-form select,.movement-form textarea{box-sizing:border-box;width:100%;min-width:0;border:1px solid #aebdca;border-radius:3px;padding:7px 8px;background:#fff;color:#173043;font:inherit}.movement-form input[readonly]{background:#eef2f5;color:#526979}.movement-form input:focus,.movement-form select:focus,.movement-form textarea:focus{outline:2px solid #3b9de640;border-color:#087dcc}
.movement-check{flex-direction:row!important;align-items:center;padding-top:4px}.movement-check input{width:auto}
.inline-picker{display:flex}.inline-picker input{border-radius:3px 0 0 3px}.inline-picker button{width:38px;border:0;border-radius:0 3px 3px 0;background:#087dcc;color:#fff;font-size:1.05rem;cursor:pointer}
.movement-provider-field{position:relative}.movement-provider-picker{position:relative}.movement-provider-results{top:100%;left:0;width:100%;margin-top:4px}.movement-provider-results button{grid-template-columns:80px minmax(150px,1fr) auto}
.movement-products{grid-column:1/-1;min-height:290px}.movement-product-entry{display:grid;grid-template-columns:32px 100px minmax(190px,1.7fr) 82px 112px 105px 90px 80px 75px;gap:6px;align-items:end}.movement-add{height:33px;border:0;border-radius:3px;background:#16aa51;color:#fff;font-size:1.15rem;cursor:pointer}
.movement-results{position:absolute;z-index:10;width:min(620px,calc(100% - 90px));max-height:260px;overflow:auto;margin-top:4px;padding:4px;border:1px solid #91a8b8;border-radius:5px;background:#fff;box-shadow:0 10px 30px #102a4344}.movement-results button{width:100%;display:grid;grid-template-columns:100px 1fr auto;gap:8px;border:0;border-bottom:1px solid #e1e8ed;padding:9px;background:#fff;text-align:left;color:#29475a;cursor:pointer}.movement-results button:hover{background:#eaf5fc}.movement-results small{color:#617887}
.movement-grid-wrap{height:245px;margin-top:9px;overflow:auto;border:1px solid #b8c7d2}.movement-grid{width:100%;min-width:930px;border-collapse:collapse;font-size:.79rem}.movement-grid th{position:sticky;top:0;z-index:1;padding:7px 6px;background:#087dcc;color:#fff;text-align:left}.movement-grid td{padding:4px 5px;border-bottom:1px solid #dce4ea}.movement-grid tbody tr:nth-child(even){background:#f4f8fb}.movement-grid input,.movement-grid select{padding:5px 4px;font-size:.78rem}.movement-grid [data-remove]{border:0;background:#c9404d;color:#fff;border-radius:3px;cursor:pointer}.movement-grid [data-cell=impuesto]{display:block;color:#667b89;font-size:.69rem;text-align:right}
.movement-totals{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding:4px 6px}.movement-totals label{width:132px;text-align:center;font-size:.88rem}.movement-totals output{display:block;padding:7px 9px;border:1px solid #9fadb8;background:#fff;text-align:right;color:#173043;font-size:1rem;font-weight:800;font-variant-numeric:tabular-nums}.movement-totals label:last-child output{background:#e5f3ff;border-color:#087dcc;color:#075e9d}
.movement-actions{display:flex;flex-direction:column;gap:5px}.movement-actions button{display:grid;grid-template-columns:42px 1fr;align-items:center;gap:6px;min-height:65px;border:0;border-radius:3px;padding:7px;background:#087dcc;color:#fff;font:700 .86rem inherit;cursor:pointer;text-align:left}.movement-actions span{display:grid;place-items:center;width:38px;height:38px;border:2px solid #fff8;border-radius:50%;font-size:1.25rem}.movement-actions button:hover:not(:disabled){filter:brightness(1.12)}.movement-actions button:disabled{opacity:.42;cursor:not-allowed}.movement-actions button[data-action=close]{margin-top:auto;background:#4f6574}.movement-actions button[data-action=labels]{background:#12985e}
.movement-message{min-height:22px;margin:0;padding:2px 14px 7px;font-weight:700}.movement-message.error{color:#a61e2b}.movement-message.success{color:#14783d}
.movement-consult-dialog{width:min(950px,calc(100% - 24px));border:0;border-radius:10px;padding:0;box-shadow:0 18px 65px #061b2b66}.movement-consult-dialog>section{padding:18px}.movement-consult-dialog header{display:flex;align-items:center;justify-content:space-between}.movement-consult-dialog h3{margin:0;color:#183b51}.movement-consult-dialog header button{border:0;background:transparent;font-size:1.8rem;cursor:pointer}.movement-consult-dialog label{display:grid;gap:5px;margin:14px 0;color:#536879;font-weight:700}.movement-consult-dialog input{border:1px solid #aebdca;border-radius:5px;padding:10px;font:inherit}.movement-consult-list{max-height:60vh;overflow:auto;border:1px solid #d2dde4}.movement-consult-list button{width:100%;display:grid;grid-template-columns:130px 1fr auto;gap:10px;border:0;border-bottom:1px solid #dce5eb;padding:11px;background:#fff;color:#29475a;text-align:left;cursor:pointer}.movement-consult-list button:hover{background:#eaf5fc}
.movement-auth-overlay{position:absolute;inset:0;z-index:50;display:grid;place-items:center;padding:18px;background:#102a43aa}.movement-auth-overlay[hidden]{display:none}.movement-auth-overlay section{width:min(430px,100%);box-sizing:border-box;border-radius:10px;padding:22px;background:#fff;box-shadow:0 18px 60px #061b2b99}.movement-auth-overlay h3{margin:0 0 8px;color:#173b52}.movement-auth-overlay p{color:#526979}.movement-auth-overlay label{margin-top:12px}.movement-auth-overlay section>div{display:flex;justify-content:flex-end;gap:9px;margin-top:15px}.movement-auth-overlay button{border:0;border-radius:6px;padding:10px 17px;background:#607d8b;color:#fff;font-weight:700;cursor:pointer}.movement-auth-overlay [data-auth-confirm]{background:#087dcc}.movement-auth-message{min-height:20px;margin:8px 0 0!important;color:#a61e2b!important;font-weight:700}
@media(max-width:980px){.movement-dialog{height:calc(100vh - 10px);width:calc(100% - 10px)}.movement-layout{grid-template-columns:1fr}.movement-actions{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));order:-1}.movement-actions button{min-height:48px;grid-template-columns:26px 1fr;padding:5px}.movement-actions span{width:24px;height:24px;font-size:.85rem}.movement-actions button[data-action=close]{margin-top:0}.movement-product-entry{grid-template-columns:32px repeat(4,minmax(90px,1fr))}.movement-product-entry .product-description{grid-column:span 2}.movement-content{grid-template-columns:1fr}.movement-products,.movement-totals{grid-column:auto}}
@media(max-width:620px){.movement-title{height:auto;min-height:58px;flex-wrap:wrap;padding:8px}.movement-title h2{font-size:.9rem}.movement-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.movement-actions button{font-size:.7rem}.movement-head-grid,.movement-config-grid{grid-template-columns:1fr 1fr}.movement-head-grid .wide,.movement-config-grid .wide{grid-column:span 2}.movement-product-entry{grid-template-columns:32px 1fr 1fr}.movement-product-entry .product-description{grid-column:span 2}.movement-totals{display:grid;grid-template-columns:1fr 1fr}.movement-totals label{width:auto}.movement-consult-list button{grid-template-columns:1fr}.movement-results{width:calc(100% - 40px)}}

/* Transferencias de almacenes */
.transfer-dialog{width:min(1100px,calc(100% - 18px));max-width:none;border:0;border-radius:12px;padding:0;background:#f5f8fa;box-shadow:0 20px 64px #06223870}.transfer-dialog::backdrop,.transfer-output::backdrop{background:#102a43a0;backdrop-filter:blur(2px)}.transfer-form{color:#263d4e;font:14px/1.35 "Segoe UI",sans-serif}.transfer-form>header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;background:#087dcc;color:#fff}.transfer-form>header b{display:block;font-size:1.1rem}.transfer-form>header small{display:block;color:#def0fc;margin-top:2px}.transfer-form>header label{display:flex;align-items:center;gap:8px;font-weight:700}.transfer-form>header input{width:140px;border:0;border-radius:4px;padding:8px;background:#fff;color:#22465a}.transfer-form main{padding:16px}.transfer-head{display:grid;grid-template-columns:150px 1fr 1fr;gap:12px;padding:13px;border:1px solid #cad7df;background:#fff}.transfer-form label{display:flex;flex-direction:column;gap:5px;min-width:0;color:#486273;font-size:.8rem;font-weight:750}.transfer-form input,.transfer-form select{box-sizing:border-box;width:100%;min-width:0;border:1px solid #aebfcc;border-radius:4px;padding:9px;background:#fff;font:inherit;color:#19364a}.transfer-form input:focus,.transfer-form select:focus{outline:2px solid #3c9fe944;border-color:#087dcc}.transfer-head .wide{grid-column:1/-1}.transfer-product{position:relative;margin-top:14px;border:1px solid #cad7df;background:#fff;padding:13px}.transfer-product h3{margin:0 0 10px;color:#244b60}.transfer-entry{display:grid;grid-template-columns:125px minmax(210px,1fr) 100px 105px 42px;gap:8px;align-items:end}.transfer-entry button{height:38px;border:0;border-radius:4px;background:#168d4a;color:#fff;font-size:1.25rem;cursor:pointer}.transfer-stock{min-height:20px;margin:9px 0;color:#2b6879;font-size:.82rem;font-weight:700}.transfer-results{position:absolute;z-index:20;top:115px;left:140px;right:190px;max-height:250px;overflow:auto;border:1px solid #91a8b8;border-radius:5px;background:#fff;box-shadow:0 10px 25px #102a4344}.transfer-results button{display:grid;grid-template-columns:110px 1fr auto;gap:9px;width:100%;border:0;border-bottom:1px solid #e0e7ec;padding:9px;background:#fff;text-align:left;color:#263d4e;cursor:pointer}.transfer-results button:hover{background:#e9f5fb}.transfer-table-wrap{max-height:290px;overflow:auto;border:1px solid #c4d2db}.transfer-table-wrap table{width:100%;min-width:700px;border-collapse:collapse}.transfer-table-wrap th{position:sticky;top:0;background:#285660;color:#fff;text-align:left}.transfer-table-wrap th,.transfer-table-wrap td{padding:8px;border-bottom:1px solid #e0e8ed}.transfer-table-wrap td:last-child button{border:0;border-radius:3px;background:#c8404c;color:#fff;cursor:pointer}.transfer-product output{display:block;margin-top:10px;text-align:right;color:#08679e;font-size:1.15rem;font-weight:800}.transfer-form footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 16px;background:#e8eef2}.transfer-form footer span{margin-right:auto;font-weight:700}.transfer-error{color:#ae2634}.transfer-success{color:#187545}.transfer-output{width:min(450px,calc(100% - 24px));border:0;border-radius:12px;padding:0;box-shadow:0 20px 64px #06223870}.transfer-output section{padding:22px}.transfer-output h3{margin:0;color:#173f56}.transfer-output label{display:grid;gap:6px;margin:16px 0;color:#425f70;font-weight:700}.transfer-output select{padding:9px;border:1px solid #abc0cd;border-radius:5px;background:#fff}.transfer-output section>div{display:flex;flex-wrap:wrap;gap:8px}.transfer-output button{border:0;border-radius:6px;padding:10px 13px;background:#087dcc;color:#fff;font-weight:700;cursor:pointer}.transfer-output [data-share]{background:#167a43}.transfer-output [data-download]{background:#a05227}.transfer-output [data-close]{background:#5b6c76}.transfer-output small{display:block;margin-top:12px;color:#476573}
@media(max-width:680px){.transfer-dialog{width:calc(100% - 8px);max-height:calc(100vh - 8px);overflow:auto}.transfer-form>header{align-items:flex-start;flex-direction:column}.transfer-head,.transfer-entry{grid-template-columns:1fr 1fr}.transfer-head .wide{grid-column:1/-1}.transfer-entry .description{grid-column:1/-1}.transfer-entry button{grid-column:span 2}.transfer-results{left:12px;right:12px;top:195px}.transfer-form footer{position:sticky;bottom:0;flex-wrap:wrap}.transfer-form footer span{flex-basis:100%}.transfer-form footer button{flex:1}.transfer-table-wrap{max-height:230px}}
.transfer-availability-alert{display:grid;grid-template-columns:26px minmax(0,1fr) 28px;gap:9px;align-items:start;margin:0 0 12px;padding:11px 13px;border:1px solid #f3c778;border-radius:5px;background:#fff3cd;color:#664d03;box-shadow:0 2px 5px #664d0314}.transfer-availability-alert>span{font-size:1.25rem;line-height:1}.transfer-availability-alert b{display:block;font-size:.9rem}.transfer-availability-alert p{margin:2px 0 0;font-size:.85rem}.transfer-availability-alert strong{font-variant-numeric:tabular-nums}.transfer-availability-alert button{border:0;background:transparent;color:#664d03;font-size:1.3rem;line-height:1;cursor:pointer}
.transfer-list-actions{display:flex;gap:6px;white-space:nowrap}.transfer-list-actions button{border:0;border-radius:6px;padding:6px 9px;background:#1678ad;color:#fff;font-weight:700;cursor:pointer}.transfer-list-actions [data-print]{background:#506f7d}.transfer-list-actions button:hover{filter:brightness(.9)}
.recipe-dialog{width:min(1100px,96vw);border:0;border-radius:12px;padding:0;background:#f5f8fa}.recipe-dialog header{display:flex;justify-content:space-between;padding:15px 18px;background:#087dcc;color:#fff}.recipe-dialog header button{border:0;background:transparent;color:#fff;font-size:1.5rem}.recipe-dialog main{display:grid;grid-template-columns:300px 1fr;gap:14px;padding:16px}.recipe-dialog label{display:flex;flex-direction:column;gap:4px;font-weight:700;color:#486273}.recipe-dialog input,.recipe-dialog select{padding:8px;border:1px solid #aec1cc;border-radius:5px}.recipe-products{max-height:480px;overflow:auto}.recipe-products button,.recipe-results button{display:block;width:100%;padding:9px;border:0;border-bottom:1px solid #dae4e9;background:#fff;text-align:left}.recipe-products button.selected{background:#dceff9;color:#075f9d}.recipe-entry{display:grid;grid-template-columns:2fr repeat(4,1fr) auto;gap:8px;align-items:end}.recipe-entry button{height:36px;background:#198b4d;color:#fff;border:0;border-radius:5px}.recipe-dialog table{width:100%;margin-top:12px;border-collapse:collapse}.recipe-dialog th{background:#285660;color:#fff}.recipe-dialog td,.recipe-dialog th{padding:8px;border-bottom:1px solid #dce6eb}.recipe-dialog main footer{display:flex;justify-content:space-between;margin-top:12px}.recipe-dialog>form>footer{display:flex;justify-content:flex-end;gap:12px;padding:12px 16px;background:#e7edf1}.recipe-dialog>form>footer span{margin-right:auto}.recipe-dialog>form>footer button{border:0;border-radius:6px;padding:10px 16px;background:#087dcc;color:#fff;font-weight:700}@media(max-width:720px){.recipe-dialog main{grid-template-columns:1fr}.recipe-products{max-height:180px}.recipe-entry{grid-template-columns:1fr 1fr}.recipe-entry label:first-child{grid-column:1/-1}}

/* Recetas: catálogo y composición de productos */
.recipe-dialog{width:min(1560px,98vw);height:min(860px,96vh);max-width:none;border:0;border-radius:12px;padding:0;background:#f5f7f9;box-shadow:0 24px 70px #132f4380}.recipe-dialog::backdrop{background:#10263580}.recipe-dialog form{height:100%;display:flex;flex-direction:column;overflow:hidden;color:#132839}.recipe-title{flex:none!important;display:flex!important;align-items:center;justify-content:space-between;padding:14px 22px!important;background:#2b2c30!important;color:#fff!important}.recipe-title div{display:flex;align-items:center;gap:10px;font-size:1.22rem}.recipe-title div span{font-size:1.35rem}.recipe-title button{border:0;background:transparent;color:#fff;font-size:1.8rem;line-height:1;cursor:pointer}.recipe-shell{flex:1;min-height:0;display:grid;grid-template-columns:minmax(350px,.86fr) minmax(0,1.14fr);overflow:hidden}.recipe-catalog{min-height:0;padding:17px;background:#f6f7f8;border-right:1px solid #d9e0e5;display:flex;flex-direction:column;gap:8px}.recipe-catalog h3,.recipe-card h3{margin:0;color:#142c3e;font-size:1.08rem}.recipe-catalog label{font-size:.82rem;font-weight:700}.recipe-catalog input{width:100%;box-sizing:border-box;margin-top:4px;padding:9px 10px;border:1px solid #b5c2ca;border-radius:5px;background:#fff}.recipe-catalog small{color:#61727e;font-size:.76rem}.recipe-head,.recipe-products button{display:grid;grid-template-columns:96px minmax(0,1fr) 75px 56px;gap:8px;align-items:center}.recipe-head{padding:8px 9px;background:#e3e9ed;border:1px solid #b9c5cc;border-bottom:0;color:#38515f;font-weight:700;font-size:.76rem}.recipe-products{flex:1;min-height:110px;overflow:auto;background:#fff;border:1px solid #b9c5cc}.recipe-products button{width:100%;padding:7px 9px;border:0;border-bottom:1px solid #e1e6e9;background:#fff;text-align:left;color:#1d3442;cursor:pointer;font-size:.8rem}.recipe-products button:hover{background:#eaf5fb}.recipe-products button.selected{background:#087dcc;color:#fff}.recipe-products button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-products button small{text-align:right;font-size:.76rem}.recipe-builder{min-height:0;overflow:auto;padding:18px 20px;background:#fff;display:flex;flex-direction:column;gap:12px}.recipe-card{border:1px solid #d5dfe5;border-radius:7px;padding:13px;background:#fff}.recipe-card h3{margin-bottom:11px}.recipe-summary{display:grid;grid-template-columns:minmax(190px,2fr) 115px 115px 135px;gap:11px}.recipe-entry{display:grid;grid-template-columns:minmax(175px,2fr) 88px 105px 102px 125px 124px;gap:9px;align-items:end}.recipe-dialog label{display:flex;flex-direction:column;gap:4px;color:#4c6270;font-size:.78rem;font-weight:700}.recipe-dialog input,.recipe-dialog select{min-width:0;box-sizing:border-box;width:100%;height:36px;padding:7px 8px;border:1px solid #afbdc6;border-radius:4px;background:#fff;color:#1a303d}.recipe-dialog input[readonly]{background:#eef2f4;color:#435965}.recipe-entry button{height:36px;border:0;border-radius:5px;background:#159447;color:#fff;font-weight:700;cursor:pointer}.recipe-entry button:hover,.recipe-actions button[type=submit]:hover{filter:brightness(.92)}.recipe-results{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.recipe-results:empty{display:none}.recipe-results button{border:1px solid #b7cad4;border-radius:4px;background:#f3f8fb;padding:5px 8px;color:#155b85;cursor:pointer;font-size:.78rem}.recipe-lines{flex:1;min-height:175px;display:flex;flex-direction:column}.recipe-table-wrap{overflow:auto;border:1px solid #c9d4da}.recipe-dialog table{width:100%;border-collapse:collapse;font-size:.8rem}.recipe-dialog th{padding:8px;background:#285660;color:#fff;text-align:left;white-space:nowrap}.recipe-dialog td{padding:7px;border-bottom:1px solid #dfe7eb}.recipe-dialog td:first-child b{display:block}.recipe-dialog td:first-child span{font-size:.77rem}.recipe-dialog td:not(:first-child){white-space:nowrap}.recipe-dialog td:last-child button{border:0;border-radius:4px;background:#dc3545;color:#fff;padding:4px 7px;cursor:pointer}.recipe-totals{display:flex;justify-content:flex-end;gap:24px;padding:10px 2px 0;font-size:.95rem}.recipe-totals b{display:block;font-size:1.05rem;color:#0d4866}.recipe-actions{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:13px 20px;background:#e7edf1;border-top:1px solid #d1dce2}.recipe-actions span{margin-right:auto;color:#176b40;font-weight:700;font-size:.85rem}.recipe-actions button{border:0;border-radius:6px;padding:10px 17px;background:#6a7880;color:#fff;font-weight:700;cursor:pointer}.recipe-actions button[type=submit]{background:#087dcc;color:#fff}@media(max-width:850px){.recipe-dialog{width:100vw;height:100dvh;border-radius:0}.recipe-shell{display:block;overflow:auto}.recipe-catalog{min-height:265px;max-height:42vh;border-right:0;border-bottom:1px solid #d9e0e5}.recipe-builder{overflow:visible;padding:13px}.recipe-summary,.recipe-entry{grid-template-columns:1fr 1fr}.recipe-summary label:first-child,.recipe-entry label:first-child{grid-column:1/-1}.recipe-entry button{grid-column:1/-1}.recipe-lines{min-height:160px}.recipe-table-wrap{overflow-x:auto}.recipe-totals{justify-content:space-between;gap:10px}.recipe-actions{position:sticky;bottom:0;flex-wrap:wrap;padding:10px 13px}.recipe-actions span{flex-basis:100%;margin:0}.recipe-actions button{flex:1}}

/* La tabla de ingredientes ocupa el área principal; los totales quedan debajo. */
.recipe-builder{display:grid;grid-template-rows:auto auto minmax(300px,1fr) auto;align-content:stretch}.recipe-lines{min-width:0;min-height:300px;margin:0;padding:13px;overflow:hidden}.recipe-lines .recipe-table-wrap{flex:1;min-width:0;overflow:auto}.recipe-lines table{min-width:850px}.recipe-totals{width:100%;box-sizing:border-box;margin:0;padding:12px 14px;border:1px solid #cfdbe1;border-radius:7px;background:#f3f7f9}.recipe-totals span{min-width:155px}.recipe-totals b{text-align:right}@media(max-width:850px){.recipe-builder{display:flex}.recipe-lines{min-height:220px}.recipe-lines table{min-width:760px}.recipe-totals{margin-top:0}}

/* Totales como sección inferior de Ingredientes, alineados al inicio. */
.recipe-totals{grid-row:4;justify-content:flex-start;align-items:center}.recipe-totals span{padding-right:24px;border-right:1px solid #cbd7dd}.recipe-totals span:last-child{border-right:0}@media(max-width:850px){.recipe-totals{justify-content:flex-start}.recipe-totals span{padding-right:12px}}

/* Anula la cuadrícula anterior del panel derecho y conserva secciones a ancho completo. */
.recipe-dialog .recipe-builder{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(260px,1fr) auto;gap:12px;padding:18px 20px}.recipe-dialog .recipe-builder>.recipe-card,.recipe-dialog .recipe-builder>.recipe-lines,.recipe-dialog .recipe-builder>.recipe-totals{grid-column:1/-1;width:100%;box-sizing:border-box}.recipe-dialog .recipe-builder>.recipe-lines{grid-row:3;min-height:260px}.recipe-dialog .recipe-builder>.recipe-totals{grid-row:4;min-height:74px;margin:0;align-self:start;justify-content:flex-start}@media(max-width:850px){.recipe-dialog .recipe-builder{display:flex;padding:13px}.recipe-dialog .recipe-builder>.recipe-lines{min-height:220px}.recipe-dialog .recipe-builder>.recipe-totals{min-height:0}}

/* Menú y visor de reportes de inventario */
.inventory-reports-card{max-width:1500px}.inventory-report-menu{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;padding-top:18px}.inventory-report-tile{min-height:104px;display:flex;align-items:center;gap:14px;padding:15px;border:0;border-left:7px solid color-mix(in srgb,var(--tile-color),#000 12%);border-radius:8px;background:var(--tile-color);color:#fff;text-align:left;box-shadow:0 4px 12px #17324520;cursor:pointer;transition:transform .15s ease,filter .15s ease}.inventory-report-tile:hover{transform:translateY(-2px);filter:brightness(.96)}.inventory-report-tile:focus-visible{outline:3px solid #0b69a3;outline-offset:3px}.inventory-report-tile:disabled{filter:grayscale(.7);opacity:.62;cursor:not-allowed;transform:none}.report-tile-icon{width:48px;height:48px;display:grid;place-items:center;flex:none;border-radius:50%;background:#ffffff2b;font-size:1.65rem}.inventory-report-tile b{display:block;font-size:.98rem}.inventory-report-tile small{display:block;margin-top:5px;color:inherit;opacity:.88}.inventory-report-dialog{width:min(1500px,97vw);height:min(880px,96vh);max-width:none;border:0;border-radius:12px;padding:0;box-shadow:0 24px 70px #132f4380}.inventory-report-dialog::backdrop{background:#10263580}.inventory-report-dialog form{height:100%;display:flex;flex-direction:column;overflow:hidden;background:#f6f8fa}.inventory-report-dialog header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:#29303a;color:#fff}.inventory-report-dialog header>div{display:flex;align-items:center;gap:12px}.inventory-report-dialog header span{font-size:1.5rem}.inventory-report-dialog h2{margin:0;font-size:1.2rem}.inventory-report-dialog header p{margin:3px 0 0;color:#d8e2e8;font-size:.8rem}.inventory-report-dialog header button{border:0;background:transparent;color:#fff;font-size:1.8rem;cursor:pointer}.inventory-report-filters{display:grid;grid-template-columns:repeat(6,minmax(125px,1fr));gap:9px;padding:12px 16px;background:#fff;border-bottom:1px solid #d3dee4}.inventory-report-filters label{display:flex;flex-direction:column;gap:4px;color:#3e5665;font-size:.76rem;font-weight:700}.inventory-report-filters input,.inventory-report-filters select{width:100%;height:36px;box-sizing:border-box;border:1px solid #afbec7;border-radius:5px;padding:6px 8px;background:#fff}.inventory-report-filters .report-search{grid-column:span 2}.inventory-report-filters>button{align-self:end;height:36px;border:0;border-radius:5px;background:#087dcc;color:#fff;font-weight:700;cursor:pointer}.inventory-report-preview{flex:1;min-height:0;overflow:auto;margin:13px 16px;background:#fff;border:1px solid #c8d4db}.inventory-report-preview table{width:100%;border-collapse:collapse;font-size:.78rem}.inventory-report-preview th{position:sticky;top:0;z-index:1;padding:9px;background:#285660;color:#fff;text-align:left;white-space:nowrap}.inventory-report-preview td{padding:7px 9px;border-bottom:1px solid #e1e7ea;white-space:nowrap}.inventory-report-preview tbody tr:nth-child(even){background:#f5f8fa}.report-empty{display:grid;place-items:center;min-height:250px;color:#657985}.inventory-report-dialog footer{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:12px 16px;background:#e5edf2;border-top:1px solid #ccd9e0}.inventory-report-dialog footer span{margin-right:auto;color:#365365;font-weight:700}.inventory-report-dialog footer button{border:0;border-radius:6px;padding:10px 14px;background:#087dcc;color:#fff;font-weight:700;cursor:pointer}.inventory-report-dialog footer button[data-close]{background:#647680}@media(max-width:1050px){.inventory-report-menu{grid-template-columns:repeat(3,minmax(200px,1fr))}.inventory-report-filters{grid-template-columns:repeat(3,minmax(130px,1fr))}}@media(max-width:720px){.inventory-report-menu{grid-template-columns:1fr}.inventory-report-tile{min-height:82px}.inventory-report-dialog{width:100vw;height:100dvh;border-radius:0}.inventory-report-filters{grid-template-columns:1fr 1fr;overflow:auto;max-height:44vh}.inventory-report-filters .report-search{grid-column:1/-1}.inventory-report-filters>button{grid-column:1/-1}.inventory-report-dialog footer{flex-wrap:wrap}.inventory-report-dialog footer span{flex-basis:100%;margin:0}.inventory-report-dialog footer button{flex:1;min-width:120px}}
/* Administración: menú y mantenimientos basados en FrmMenuConfiguracion. */
.admin-menu-page{max-width:1420px}.admin-modules-grid{display:grid;grid-template-columns:repeat(3,minmax(260px,1fr));gap:16px;margin-top:24px}.admin-module-card{--admin-color:#087bc4;display:flex;align-items:center;gap:16px;min-height:112px;padding:18px;border:1px solid #d7e0e7;border-left:7px solid var(--admin-color);border-radius:14px;background:#fff;color:#17324d;text-align:left;box-shadow:0 4px 15px rgba(24,50,75,.08);cursor:pointer;transition:transform .16s ease,box-shadow .16s ease}.admin-module-card:hover,.admin-module-card:focus-visible{transform:translateY(-2px);box-shadow:0 10px 24px rgba(24,50,75,.15);outline:3px solid color-mix(in srgb,var(--admin-color) 26%,transparent)}.admin-module-icon{display:grid;place-items:center;flex:0 0 58px;width:58px;height:58px;border-radius:14px;background:color-mix(in srgb,var(--admin-color) 14%,white);font-size:30px}.admin-module-copy{display:grid;gap:5px;min-width:0}.admin-module-copy strong{font-size:18px}.admin-module-copy small{color:#607283;line-height:1.35}.admin-module-arrow{margin-left:auto;color:var(--admin-color);font-size:34px;font-weight:700}
.admin-maintenance{max-width:1500px;margin:0 auto;padding:24px}.admin-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;margin-bottom:14px}.admin-toolbar h1{margin:0;color:#17324d}.admin-toolbar p{margin:6px 0 0;color:#607283}.admin-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.admin-search{display:flex;align-items:center;gap:8px;min-width:280px;padding:0 12px;border:1px solid #b9c7d3;border-radius:9px;background:#fff}.admin-search input{width:100%;min-height:44px;border:0;outline:0;font-size:16px}.admin-status{min-height:24px;margin:4px 0 10px;color:#476176}.admin-status.success{color:#176c39}.admin-status.error{color:#b42318;font-weight:700}.admin-list-card{overflow:hidden;border:1px solid #d5dfe7;border-radius:12px;background:#fff;box-shadow:0 4px 16px rgba(23,50,77,.07)}.admin-table-wrap{max-height:calc(100vh - 250px);overflow:auto}.admin-table{width:100%;border-collapse:collapse;white-space:nowrap}.admin-table th{position:sticky;top:0;z-index:1;padding:13px 12px;background:#244f59;color:#fff;text-align:left}.admin-table td{padding:11px 12px;border-bottom:1px solid #e2e8ee;color:#263d50}.admin-table tbody tr{cursor:pointer}.admin-table tbody tr:hover,.admin-table tbody tr:focus{background:#edf7fb;outline:0}.table-action{min-height:34px;padding:6px 13px;border:0;border-radius:7px;background:#087bc4;color:#fff;font-weight:700;cursor:pointer}
.admin-dialog[hidden]{display:none}.admin-dialog{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:18px}.admin-dialog-backdrop{position:absolute;inset:0;background:rgba(9,28,45,.68);backdrop-filter:blur(2px)}.admin-dialog-panel{position:relative;display:flex;flex-direction:column;width:min(1020px,100%);max-height:calc(100vh - 36px);overflow:hidden;border-radius:16px;background:#fff;box-shadow:0 24px 70px rgba(0,0,0,.34)}.admin-dialog-panel>header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;background:#263238;color:#fff}.admin-dialog-panel h2{margin:2px 0 0}.admin-dialog-panel header small{color:#c6d5df}.admin-dialog-close{width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:30px;cursor:pointer}.admin-dialog-panel form{display:flex;min-height:0;flex:1;flex-direction:column}.admin-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:22px;overflow:auto}.admin-form-field{display:grid;align-content:start;gap:6px;color:#334e62;font-weight:700}.admin-form-field.wide{grid-column:1/-1}.admin-form-field input,.admin-form-field select,.admin-form-field textarea{width:100%;min-height:43px;padding:9px 11px;border:1px solid #b6c5d1;border-radius:8px;background:#fff;color:#183247;font:inherit;font-weight:400}.admin-form-field input:focus,.admin-form-field select:focus,.admin-form-field textarea:focus{border-color:#087bc4;outline:3px solid rgba(8,123,196,.15)}.admin-form-field input:disabled,.admin-form-field select:disabled,.admin-form-field textarea:disabled{background:#edf1f4;color:#5e6f7c}.admin-form-field.checkbox{display:flex;align-items:center;gap:10px;min-height:68px;padding-top:23px}.admin-form-field.checkbox span{order:2}.admin-form-field.checkbox input{width:24px;min-height:24px;accent-color:#087bc4}.admin-dialog-panel footer{display:flex;gap:10px;padding:15px 22px;border-top:1px solid #dce4ea;background:#eef3f6}.admin-footer-spacer{flex:1}.dialog-open{overflow:hidden}
@media(max-width:1000px){.admin-modules-grid{grid-template-columns:repeat(2,minmax(240px,1fr))}.admin-toolbar{align-items:stretch;flex-direction:column}.admin-toolbar-actions{justify-content:flex-start}.admin-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.admin-modules-grid{grid-template-columns:1fr}.admin-maintenance{padding:14px}.admin-toolbar-actions>*{flex:1 1 145px}.admin-search{min-width:100%;flex-basis:100%}.admin-table{white-space:normal}.admin-table thead{display:none}.admin-table,.admin-table tbody,.admin-table tr,.admin-table td{display:block;width:100%}.admin-table tr{padding:10px;border-bottom:1px solid #dce4ea}.admin-table td{display:grid;grid-template-columns:minmax(115px,38%) 1fr;gap:10px;padding:6px 8px;border:0}.admin-table td:before{content:attr(data-label);font-weight:800;color:#345064}.admin-form-grid{grid-template-columns:1fr;padding:16px}.admin-form-field.wide{grid-column:auto}.admin-dialog{padding:0}.admin-dialog-panel{width:100%;height:100%;max-height:none;border-radius:0}.admin-dialog-panel footer{position:sticky;bottom:0;padding:12px;flex-wrap:wrap}.admin-footer-spacer{display:none}.admin-dialog-panel footer button{flex:1}.admin-dialog-panel footer .danger-btn{flex-basis:100%}}

/* Preferencias: pestañas del formulario legado */
.admin-dialog-panel{width:min(1280px,100%)}
.admin-form-grid.has-tabs{display:block;padding:0;overflow:auto}
.admin-form-tabs{position:sticky;top:0;z-index:4;display:flex;gap:4px;padding:12px 18px 0;overflow-x:auto;border-bottom:1px solid #cbd7e0;background:#f4f7f9;scrollbar-width:thin}
.admin-tab-button{flex:0 0 auto;min-height:44px;padding:10px 16px;border:1px solid transparent;border-bottom:0;border-radius:9px 9px 0 0;background:transparent;color:#3c5568;font-weight:800;cursor:pointer}
.admin-tab-button:hover{background:#e4eef4;color:#075f9d}.admin-tab-button.active{border-color:#b9c9d5;background:#fff;color:#075f9d;box-shadow:inset 0 3px #087bc4}
.admin-tab-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:20px 22px 26px}.admin-tab-panel[hidden]{display:none}
.admin-field-group{grid-column:1/-1;margin:8px 0 -2px;padding:8px 10px;border-bottom:2px solid #dbe6ed;color:#1f526b;font-size:16px}.admin-field-group:first-child{margin-top:0}
@media(max-width:1000px){.admin-tab-panel{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.admin-form-tabs{padding-left:10px;padding-right:10px}.admin-tab-button{padding:9px 12px}.admin-tab-panel{grid-template-columns:1fr;padding:16px}.admin-field-group{grid-column:auto}.admin-form-grid.has-tabs{padding:0}}

/* Configuración de permisos por perfil */
.profile-permissions-page{max-width:1580px;margin:0 auto;padding:22px}.profile-permissions-page .primary-btn,.profile-permissions-page .secondary-btn{min-height:44px;padding:9px 16px;border:0;border-radius:8px;color:#fff;font:inherit;font-weight:800;cursor:pointer;box-shadow:0 3px 9px rgba(15,66,99,.2)}.profile-permissions-page .primary-btn{background:#087dcc}.profile-permissions-page .secondary-btn{background:#607d8b}.profile-permissions-page .primary-btn:hover,.profile-permissions-page .secondary-btn:hover{filter:brightness(.94)}.profile-permissions-page .primary-btn:focus-visible,.profile-permissions-page .secondary-btn:focus-visible{outline:3px solid rgba(8,123,196,.28);outline-offset:2px}.profile-permissions-page .primary-btn:disabled{opacity:.55;cursor:wait}.profile-permissions-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:18px}.profile-permissions-heading h1{margin:2px 0 4px;color:#17324d;font-size:clamp(1.6rem,3vw,2.25rem)}.profile-permissions-heading p{margin:0;color:#607283}.profile-permissions-kicker{font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#7b1fa2!important}.profile-save-button{min-height:48px!important;padding-inline:22px!important;white-space:nowrap}.profile-filter-card{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(240px,1.2fr) minmax(270px,1.5fr) minmax(190px,.8fr) auto auto;gap:12px;align-items:end;padding:16px;border:1px solid #d4dfe7;border-radius:14px;background:#fff;box-shadow:0 4px 18px rgba(23,50,77,.07)}.profile-filter-card label:not(.profile-enabled-filter){display:grid;gap:6px;color:#385468;font-weight:750}.profile-filter-card input[type="search"],.profile-filter-card select{width:100%;min-height:44px;padding:9px 11px;border:1px solid #afc0cc;border-radius:8px;background:#fff;color:#17324d;font:inherit}.profile-filter-card input:focus,.profile-filter-card select:focus{border-color:#087bc4;outline:3px solid rgba(8,123,196,.15)}.profile-enabled-filter{display:flex;align-items:center;gap:8px;min-height:44px;color:#385468;font-weight:750;white-space:nowrap}.profile-enabled-filter input{width:21px;height:21px;accent-color:#087bc4}.profile-summary{display:grid;grid-template-columns:repeat(3,minmax(120px,170px)) minmax(230px,1fr);gap:10px;margin:14px 0}.profile-summary article{display:flex;align-items:baseline;gap:8px;padding:12px 14px;border:1px solid #d7e1e8;border-radius:10px;background:#f8fbfc;color:#607283}.profile-summary strong{color:#164c59;font-size:1.35rem}.profile-summary-role{justify-content:flex-end}.profile-summary-role strong{font-size:1rem}.profile-matrix-card{overflow:hidden;border:1px solid #cad7df;border-radius:13px;background:#fff;box-shadow:0 5px 20px rgba(23,50,77,.08)}.profile-matrix-help{display:flex;justify-content:space-between;gap:15px;padding:11px 15px;border-bottom:1px solid #d6e0e7;background:#eef5f7;color:#456173;font-size:.86rem}.profile-matrix-help span:last-child{font-weight:800;color:#164c59}.profile-matrix-wrap{max-height:calc(100vh - 410px);min-height:350px;overflow:auto}.profile-matrix{width:100%;border-collapse:collapse}.profile-matrix th,.profile-matrix td{border-bottom:1px solid #dce4e9}.profile-matrix thead th{position:sticky;top:0;z-index:3;min-width:108px;padding:10px 8px;background:#244f59;color:#fff;text-align:center}.profile-matrix thead th:first-child{min-width:260px;text-align:left}.profile-matrix thead th:nth-child(2){min-width:190px;text-align:left}.profile-matrix thead th>span{display:block}.profile-matrix thead label{display:inline-flex;align-items:center;gap:5px;margin-top:5px;font-size:.76rem;font-weight:500;cursor:pointer}.profile-matrix input[type="checkbox"]{accent-color:#0783cf}.profile-module-row th,.profile-module-row td{padding:9px 8px;background:#e5ebef;color:#29495b}.profile-module-row th{text-align:left}.profile-module-row th button{width:100%;border:0;background:transparent;color:#29495b;text-align:left;font:inherit;font-weight:850;cursor:pointer}.profile-module-row th small{margin-left:8px;color:#607b8c;font-weight:600}.profile-module-row td{text-align:center}.profile-option-row:hover{background:#f1f8fb}.profile-option-row td{height:53px;padding:8px 11px;color:#263d50}.profile-option-row td:first-child strong{display:inline-block}.profile-option-row code{color:#496272;font-size:.78rem}.profile-option-row td:nth-child(n+3){text-align:center}.profile-report-badge{display:inline-block;margin-left:8px;padding:2px 6px;border-radius:10px;background:#e9dcf2;color:#6a1b9a;font-size:.68rem;font-weight:800}.profile-mobile-module{display:none}.profile-permission-check{display:inline-grid;place-items:center;cursor:pointer}.profile-permission-check input{position:absolute;opacity:0;pointer-events:none}.profile-permission-check span{position:relative;display:grid;place-items:center;width:25px;height:25px;border:2px solid #91a6b4;border-radius:6px;background:#fff;transition:.12s}.profile-permission-check span:after{content:'✓';color:#fff;font-size:17px;font-weight:900;line-height:1;opacity:0}.profile-permission-check input:checked+span{border-color:#087bc4;background:#087bc4}.profile-permission-check input:checked+span:after{opacity:1}.profile-permission-check input:focus-visible+span{outline:3px solid rgba(8,123,196,.25);outline-offset:2px}.profile-permission-check input:disabled+span{opacity:.45;cursor:not-allowed}.profile-permission-check input:indeterminate+span{border-color:#7b1fa2;background:#7b1fa2}.profile-permission-check input:indeterminate+span:after{content:'−';opacity:1}.profile-permission-check.module span{width:22px;height:22px}.profile-permissions-footer{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px;padding:12px 15px;border:1px solid #cbd8e0;border-radius:12px;background:rgba(245,249,251,.96);box-shadow:0 -4px 18px rgba(23,50,77,.08);backdrop-filter:blur(5px)}.profile-permissions-footer>span{margin-right:auto;color:#607283;font-weight:700}.profile-permissions-footer>span.pending{color:#a45700}.profile-permissions-footer button{min-height:44px}.profile-permissions-footer button[hidden]{display:none}.profile-matrix tbody.readonly .profile-permission-check{cursor:not-allowed}
@media(max-width:1350px){.profile-filter-card{grid-template-columns:repeat(3,minmax(0,1fr))}.profile-option-search{grid-column:span 2}.profile-summary{grid-template-columns:repeat(3,1fr)}.profile-summary-role{grid-column:1/-1;justify-content:flex-start}.profile-matrix-wrap{max-height:calc(100vh - 500px)}}
@media(max-width:720px){.profile-permissions-page{padding:13px}.profile-permissions-heading{align-items:stretch;flex-direction:column;gap:12px}.profile-save-button{width:100%}.profile-filter-card{grid-template-columns:1fr 1fr;padding:13px}.profile-filter-card label,.profile-option-search{grid-column:1/-1}.profile-filter-card .profile-enabled-filter{grid-column:auto}.profile-summary{grid-template-columns:repeat(3,1fr);gap:6px}.profile-summary article{display:grid;gap:2px;padding:9px;text-align:center}.profile-summary article span{font-size:.72rem}.profile-summary-role{grid-column:1/-1;display:flex!important;text-align:left!important}.profile-matrix-help{align-items:flex-start;flex-direction:column;gap:4px}.profile-matrix-wrap{max-height:none;min-height:0;overflow:visible}.profile-matrix,.profile-matrix tbody{display:block}.profile-matrix thead{display:none}.profile-module-row{display:grid;grid-template-columns:repeat(5,1fr);margin-top:12px;border:1px solid #ccd8df;border-radius:10px 10px 0 0;overflow:hidden}.profile-module-row th{grid-column:1/-1;display:block}.profile-module-row td{display:grid;place-items:center;padding:8px}.profile-module-row td:before{content:attr(data-label);font-size:.68rem}.profile-option-row{display:grid;grid-template-columns:repeat(5,1fr);padding:11px;border:1px solid #dce4e9;border-top:0}.profile-option-row td{display:grid;height:auto;padding:7px;border:0;text-align:center!important}.profile-option-row td:first-child,.profile-option-row td:nth-child(2){grid-column:1/-1;text-align:left!important}.profile-option-row td:first-child{display:block}.profile-option-row td:before{content:attr(data-label);margin-bottom:5px;color:#607283;font-size:.68rem;font-weight:800;text-transform:uppercase}.profile-option-row td:first-child:before,.profile-option-row td:nth-child(2):before{display:none}.profile-mobile-module{display:block;margin-top:3px;color:#607283}.profile-permissions-footer{flex-wrap:wrap}.profile-permissions-footer>span{flex:1 0 100%;text-align:center}.profile-permissions-footer button{flex:1}.profile-module-row .profile-permission-check:before{content:''}.profile-module-row td:nth-of-type(1):before{content:'Accesar'}.profile-module-row td:nth-of-type(2):before{content:'Adicionar'}.profile-module-row td:nth-of-type(3):before{content:'Modificar'}.profile-module-row td:nth-of-type(4):before{content:'Eliminar'}.profile-module-row td:nth-of-type(5):before{content:'Consultar'}}

/* Proveedores y cuentas por pagar */
.provider-module{max-width:1500px;margin:auto;padding:22px}.provider-module-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.provider-module-heading h1{margin:0;color:#17324d}.provider-module-heading p{margin:5px 0;color:#607283}.provider-card{margin-bottom:18px;padding:20px;border:1px solid #d2dee6;border-radius:13px;background:#fff;box-shadow:0 4px 15px rgba(23,50,77,.07)}.provider-card h2,.provider-card h3{margin-top:0;color:#17435c}.provider-split{display:grid;grid-template-columns:minmax(300px,420px) 1fr;gap:18px}.provider-entry{display:grid;align-content:start;gap:13px}.provider-entry label,.provider-fields label,.provider-report-filter label{display:grid;gap:5px;color:#385468;font-weight:700}.provider-entry input,.provider-entry select,.provider-fields input,.provider-fields select,.provider-fields textarea,.provider-report-filter input,.provider-report-filter select,.account-entry input,.account-entry select,.provider-table-wrap input{width:100%;min-height:42px;padding:8px 10px;border:1px solid #b8c8d3;border-radius:7px;background:#fff;color:#17324d;font:inherit}.provider-entry fieldset{display:flex;gap:22px;border:1px solid #d2dee6;border-radius:8px}.provider-entry fieldset label{display:flex;align-items:center;gap:7px}.provider-entry fieldset input{width:auto;min-height:auto}.provider-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}.provider-fields .wide{grid-column:1/-1}.provider-form-title{display:flex;justify-content:space-between;align-items:center}.provider-form-title strong{padding:9px 14px;border-radius:8px;background:#e4f3f8;color:#075f9d}.provider-accounting{padding:15px;margin:10px 0 18px;border:1px solid #d8e3e9;border-radius:10px;background:#f7fafb}.account-entry,.account-line{display:grid;grid-template-columns:minmax(220px,1fr) 150px 150px 44px;gap:8px;align-items:center}.account-line{padding:8px;border-bottom:1px solid #dce5ea}.account-line button,.account-entry button{min-height:40px;border:0;border-radius:7px;background:#087bc4;color:#fff;font-weight:800}.account-line button{background:#c62828}.account-balance{text-align:right;font-size:17px}.provider-table-wrap{max-width:100%;overflow:auto}.provider-table-wrap .admin-table input{min-width:95px}.payment-total{margin:14px 0;padding:13px;text-align:right;background:#e7f3f5;color:#164c59;font-size:20px}.provider-report-filter{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-bottom:20px}.provider-report-filter label{flex:1 1 190px}.report-heading{padding:14px;border-bottom:3px solid #244f59;text-align:center}.report-heading h2{margin:0}.report-heading p{margin:5px 0}
@media(max-width:950px){.provider-split{grid-template-columns:1fr}.provider-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.account-entry,.account-line{grid-template-columns:1fr 110px 110px 42px}}
@media(max-width:620px){.provider-module{padding:12px}.provider-card{padding:14px}.provider-fields{grid-template-columns:1fr}.provider-fields .wide{grid-column:auto}.account-entry{grid-template-columns:1fr 1fr}.account-entry select{grid-column:1/-1}.account-line{grid-template-columns:1fr 70px 70px 36px;font-size:13px}.provider-form-title{align-items:flex-start;flex-direction:column;gap:8px}}
@media print{.app-header,.provider-module-heading>button,.provider-report-filter,.admin-status{display:none!important}.provider-module,.provider-card{max-width:none;padding:0;border:0;box-shadow:none}.provider-table-wrap{overflow:visible}.admin-table{font-size:10px}}

.bank-module .eyebrow{margin:0 0 4px;color:#0b7897;text-transform:uppercase;letter-spacing:.12em;font-size:.76rem;font-weight:850}.bank-module .primary-btn,.bank-module .secondary-btn,.bank-module .danger-btn,.bank-back{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:43px;padding:9px 15px;border:0;border-radius:8px;color:#fff!important;text-decoration:none;font:inherit;font-weight:800;cursor:pointer;box-shadow:0 3px 9px rgba(15,66,99,.18)}.bank-module .primary-btn{background:#087dcc}.bank-module .secondary-btn,.bank-back{background:#607d8b}.bank-module .danger-btn{background:#c73d3d}.bank-module button:hover,.bank-back:hover{filter:brightness(.94)}.bank-module button:disabled{opacity:.55;cursor:not-allowed}.bank-actions{display:flex;flex-wrap:wrap;gap:9px;margin:12px 0 16px}.bank-search{display:grid;gap:6px;margin-bottom:12px;color:#385468;font-weight:750}.bank-search input{min-height:42px;padding:8px 10px;border:1px solid #b8c8d3;border-radius:7px;background:#fff;color:#17324d;font:inherit}.bank-accounting h3{margin:0 0 10px;color:#17435c}.bank-account-lines{margin-top:9px}.bank-account-lines .account-line span{display:grid;gap:2px;min-width:0}.bank-account-lines .account-line small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#607283}.danger-mini{background:#b93333!important}.bank-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px;margin:12px 0}.bank-summary-grid span{padding:12px;border:1px solid #d5e0e7;border-radius:10px;background:#f4f9fb;color:#536b7a}.bank-summary-grid b{display:block;margin-top:4px;color:#164c59;font-size:1.08rem}.bank-module .admin-table input[type=checkbox]{width:20px;height:20px;accent-color:#087dcc}.bank-module .provider-fields textarea{min-height:76px}
@media(max-width:760px){.bank-module{padding:12px}.bank-summary-grid{grid-template-columns:1fr 1fr}.bank-actions{display:grid;grid-template-columns:1fr}.bank-module .provider-report-filter button{width:100%}}

@media(min-width:1101px) and (max-width:1350px){.profile-filter-card{grid-template-columns:minmax(150px,.8fr) minmax(210px,1.1fr) minmax(250px,1.4fr) minmax(160px,.8fr) minmax(185px,auto) minmax(125px,auto)}.profile-option-search{grid-column:auto}.profile-summary{grid-template-columns:repeat(3,minmax(120px,170px)) minmax(230px,1fr)}.profile-summary-role{grid-column:auto;justify-content:flex-end}.profile-matrix-wrap{max-height:calc(100vh - 410px)}}
.client-registration{max-width:1440px;margin:0 auto;padding:24px clamp(14px,3vw,38px) 44px;color:#173044}
.client-registration-head{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:18px}
.client-registration-head h1{margin:4px 0 6px;font-size:clamp(24px,3vw,34px)}
.client-registration-head p{margin:0;color:#5a6f7d}
.client-registration-head .eyebrow{font-size:12px;font-weight:800;letter-spacing:.12em;color:#0d6da6}
.client-registration-actions{display:flex;flex-wrap:wrap;gap:8px}
.client-registration-actions button{min-height:42px}
.client-form-tabs{display:flex;gap:6px;overflow-x:auto;border-bottom:2px solid #d8e5ee;margin-bottom:18px}
.client-tab{border:0;background:transparent;color:#526c7d;padding:12px 18px;white-space:nowrap;font:inherit;font-weight:700;cursor:pointer;border-bottom:3px solid transparent}
.client-tab.active{color:#066cac;border-color:#087ac0}
.client-panel{display:grid;gap:16px}
.client-group{min-width:0;border:1px solid #d6e2eb;border-radius:12px;background:#fff;padding:15px 17px 18px}
.client-group legend{padding:0 8px;font-size:16px;font-weight:800;color:#173d57}
.client-field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:12px 16px}
.client-field{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:700;color:#35536a}
.client-field input,.client-field select,.client-search-content input{width:100%;min-height:40px;border:1px solid #b8ccd9;border-radius:7px;padding:8px 10px;background:#fff;color:#173044;font:inherit}
.client-field input:focus,.client-field select:focus,.client-search-content input:focus{outline:2px solid #83c7f2;outline-offset:1px}
.client-field input[readonly]{background:#edf3f6}
.client-check{flex-direction:row;align-items:center;gap:10px;background:#f5f9fc;border:1px solid #d8e5ee;border-radius:8px;padding:8px 12px;min-height:42px}
.client-check input{width:19px;height:19px;min-height:0;margin:0;accent-color:#087ac0}
.client-search-dialog{max-width:900px;width:min(94vw,900px)}
.client-search-content{padding:18px;display:grid;gap:15px}
.client-search-content label{font-weight:700;display:grid;gap:6px}
.client-search-content tr[tabindex]{cursor:pointer}
.client-search-content tr[tabindex]:hover,.client-search-content tr[tabindex]:focus{background:#eaf5fd;outline:0}
.client-dgii-field{grid-column:span 2}.client-dgii-field>label{font-weight:700}.client-rnc-control{display:flex;gap:8px}.client-rnc-control input{min-width:0;flex:1}.client-rnc-control button{min-width:98px;border:0;border-radius:7px;background:#087bc4;color:#fff;font:inherit;font-weight:800;cursor:pointer}.client-rnc-control button:disabled{opacity:.65;cursor:wait}.client-dgii-field small{min-height:19px;color:#587287;font-weight:500}.client-dgii-field small.success{color:#15713c;font-weight:700}.client-dgii-field small.error{color:#b42318;font-weight:700}.client-dgii-result{padding:10px 12px;border:1px solid #c8ddea;border-radius:8px;background:#f3f9fd;color:#26475e}.client-dgii-result strong{display:block;margin-bottom:6px;color:#075f9d}.client-dgii-result dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:0;font-size:12px}.client-dgii-result dt{font-weight:800}.client-dgii-result dd{margin:0;overflow-wrap:anywhere}
@media(max-width:680px){.client-registration-head{align-items:stretch}.client-registration-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.client-registration-actions button{width:100%}.client-field-grid{grid-template-columns:1fr}.client-dgii-field{grid-column:auto}.client-search-dialog{width:100vw;max-height:100vh}}
.client-catalog-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(290px,1fr);gap:18px;align-items:start}
.client-catalog-layout .client-group{display:grid;gap:14px}
.client-catalog-layout h2{margin:0;font-size:19px}
.client-catalog-layout .admin-table-wrap{max-height:60vh;overflow:auto}
.client-catalog-layout tbody tr{cursor:pointer}
.client-catalog-layout tbody tr:hover,.client-catalog-layout tbody tr:focus{background:#eaf5fd;outline:0}
@media(max-width:760px){.client-catalog-layout{grid-template-columns:1fr}}
.client-report-filters{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:16px}.client-report-filters .client-field{min-width:180px;flex:1}.client-report-paper{background:#fff;border:1px solid #d6e0e8;border-radius:12px;padding:24px;box-shadow:0 4px 18px #1036530e}.client-report-paper header{border-bottom:2px solid #344f5d;margin-bottom:16px}.client-report-paper header h2{font-size:1.45rem;margin:0 0 5px}.client-report-paper header p{margin:0 0 10px;color:#536675}.client-report-paper .admin-table{min-width:960px}.client-report-paper td:last-child,.client-report-paper th:last-child{text-align:right}.client-report-paper tfoot{font-weight:700;background:#eef4f7}
@media print{.app-header,.client-registration-head,.client-report-filters,.admin-status{display:none!important}.client-registration{max-width:none;padding:0}.client-report-paper{display:block!important;border:0;box-shadow:none;padding:0}.client-report-paper .admin-table-wrap{overflow:visible}.client-report-paper .admin-table{min-width:0;font-size:9pt}@page{size:landscape;margin:12mm}}
.admin-module-card:disabled{opacity:.58;cursor:not-allowed;box-shadow:none}.admin-module-card:disabled .admin-module-arrow{display:none}
.client-mail-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(270px,1fr);gap:18px}.client-mail-layout .client-group{display:grid;gap:14px}.client-mail-layout h2{margin:0}.client-mail-layout form{display:grid;gap:14px}.client-mail-layout textarea{width:100%;resize:vertical}.client-mail-summary{display:flex;gap:10px;align-items:baseline;padding:14px;border-radius:10px;background:#eaf5fd}.client-mail-summary strong{font-size:1.8rem;color:#075f9d}@media(max-width:760px){.client-mail-layout{grid-template-columns:1fr}}

/* Nómina */
.payroll-module .payroll-tabs{display:flex;gap:6px;margin:12px 0 16px;overflow-x:auto;border-bottom:1px solid #cbd7e0}.payroll-module .payroll-tabs button{min-height:42px;padding:9px 14px;border:1px solid transparent;border-bottom:0;border-radius:9px 9px 0 0;background:#edf4f8;color:#315269;font-weight:800;cursor:pointer;white-space:nowrap}.payroll-module .payroll-tabs button.active{background:#087dcc;color:#fff}.payroll-module .payroll-pane{display:none}.payroll-module .payroll-pane.active{display:grid}.payroll-module section.payroll-pane.active{display:grid}.payroll-module .payroll-lines{margin-bottom:14px}.payroll-module .payroll-entry{grid-template-columns:minmax(220px,1fr) 130px 150px 44px}.payroll-module .check-inline{display:flex!important;align-items:center;gap:8px;min-height:42px}.payroll-module .check-inline input{width:20px;min-height:20px;accent-color:#087dcc}.payroll-wide-form{grid-template-columns:minmax(310px,460px) minmax(0,1fr)}
@media(max-width:900px){.payroll-wide-form{grid-template-columns:1fr}.payroll-module .payroll-entry{grid-template-columns:1fr 1fr}.payroll-module .payroll-entry select{grid-column:1/-1}}

/* Reportes XtraReport adaptados */
.legacy-report-paper { background:#fff; color:#142437; max-width:1180px; margin:1rem auto; padding:1.5rem; box-shadow:0 2px 12px #0d294020; border:1px solid #d5e1e9; }
.legacy-report-paper header { border-bottom:2px solid #275c65; margin-bottom:1rem; display:grid; grid-template-columns:1fr auto; gap:.25rem 1rem; }
.legacy-report-paper header strong { font-size:1.1rem; }.legacy-report-paper header span { font-size:.8rem; text-align:right; }
.legacy-report-paper header h2 { grid-column:1/-1; margin:.7rem 0 0; font-size:1.45rem; }.legacy-report-paper header p { grid-column:1/-1; margin:.25rem 0 .7rem; font-weight:600; }
.legacy-report-table th { background:#285d66; color:#fff; white-space:nowrap; }.legacy-report-table tfoot th { background:#e4e9ec; color:#122b3a; border-top:2px solid #285d66; }
.legacy-report-chart { display:grid; gap:.55rem; margin:0 0 1rem; padding:1rem; background:#f6f9fb; }.legacy-report-chart div { display:grid; grid-template-columns:minmax(110px,180px) 1fr 52px; align-items:center; gap:.6rem; }.legacy-report-chart i { display:block; min-height:1rem; border-radius:2px; background:linear-gradient(90deg,#188fc7,#235a64); }.legacy-report-chart b { text-align:right; }
@media (max-width:700px){ .legacy-report-paper{padding:.8rem;margin:.5rem 0}.legacy-report-paper header h2{font-size:1.1rem}.legacy-report-chart div{grid-template-columns:90px 1fr 42px;font-size:.78rem}.legacy-report-table{font-size:.72rem} }
