:root {
  --salovix-web-sidebar-width: 320px;
  --salovix-web-page-max: 1680px;
  --salovix-web-surface: #ffffff;
  --salovix-web-border: #dbe3ec;
  --salovix-web-muted: #64748b;
  --salovix-web-ink: #172033;
  --salovix-web-blue: #159fc6;
  --salovix-web-blue-dark: #087fa6;
}

html.salovix-web-mode-root body > header,
html.salovix-web-mode-root body #section-cliente {
  display: none !important;
}

html.salovix-web-mode-root body:not(.salovix-web-mode)::before {
  content: "Cargando administración…";
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  color: #334155;
  background: #f4f7fb;
  font: 800 17px/1.4 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

body.salovix-web-mode {
  min-height: 100vh;
  background: #f3f6fa;
  display: block !important;
  color: var(--salovix-web-ink);
}

body.salovix-web-mode > header { display: none !important; }

body.salovix-web-mode > main {
  width: calc(100% - var(--salovix-web-sidebar-width));
  max-width: none !important;
  margin: 0 0 0 var(--salovix-web-sidebar-width) !important;
  padding: 22px 28px 52px !important;
  min-height: 100vh;
}

#salovix-web-sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--salovix-web-sidebar-width);
  z-index: 950;
  display: flex;
  flex-direction: column;
  color: #f8fafc;
  background: linear-gradient(180deg, #091221 0%, #111c2e 54%, #0b1525 100%);
  border-right: 1px solid rgba(148, 163, 184, .18);
  box-shadow: 16px 0 42px rgba(15, 23, 42, .16);
  overflow: hidden;
}

.salovix-web-sidebar-head {
  padding: 22px 20px 16px;
  border-bottom: 1px solid rgba(148, 163, 184, .14);
}

.salovix-web-brand {
  display: grid;
  grid-template-columns: 50px 1fr;
  gap: 13px;
  align-items: center;
}

.salovix-web-brand img {
  width: 50px;
  height: 50px;
  border-radius: 0;
  object-fit: contain;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.salovix-web-brand strong {
  display: block;
  font-family: Georgia, 'Times New Roman', serif;
  font-size:21px;
  letter-spacing: .12em;
  line-height: 1.1;
}

.salovix-web-brand span {
  display: block;
  margin-top: 4px;
  color: #7dd3fc;
  font-size:12px;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.salovix-web-status { margin-top: 14px; min-height: 28px; }
.salovix-web-status #cloud-sync-indicator {
  width: 100%;
  min-height: 30px;
  justify-content: center;
  color: #d1fae5 !important;
  background: rgba(16, 185, 129, .12) !important;
  border-color: rgba(52, 211, 153, .25) !important;
  white-space: normal !important;
  text-align: center;
  line-height: 1.25;
}

.salovix-web-sidebar-scroll {
  flex: 1;
  overflow-y: auto;
  padding: 17px 14px 24px;
  scrollbar-width: thin;
  scrollbar-color: rgba(148,163,184,.35) transparent;
}

.salovix-web-group + .salovix-web-group { margin-top: 19px; }
.salovix-web-group-title {
  margin: 0 9px 8px;
  color: rgba(226, 232, 240, .52);
  font-size:11px;
  font-weight: 900;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.salovix-web-side-btn {
  width: 100%;
  min-height: 54px;
  display: grid;
  grid-template-columns: 38px 1fr 16px;
  gap: 11px;
  align-items: center;
  padding: 9px 11px;
  margin: 4px 0;
  border: 1px solid transparent;
  border-radius: 14px;
  background: transparent;
  color: #e5e7eb;
  text-align: left;
  cursor: pointer;
  transition: background .14s ease, border-color .14s ease, transform .14s ease;
}

.salovix-web-side-btn:hover,
.salovix-web-side-btn:focus-visible,
.salovix-web-side-btn.is-active {
  outline: none;
  background: rgba(255,255,255,.082);
  border-color: rgba(125, 211, 252, .2);
}
.salovix-web-side-btn.is-active { box-shadow: inset 3px 0 0 #38bdf8; }
.salovix-web-side-btn:active { transform: translateY(1px); }

.salovix-web-side-btn .salovix-web-icon {
  width: 38px;
  height: 38px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #7dd3fc;
  background: rgba(56, 189, 248, .1);
  border: 1px solid rgba(56, 189, 248, .13);
}
.salovix-web-side-btn strong { display:block; font-size:14px; font-weight:850; color:#f8fafc; }
.salovix-web-side-btn small { display:block; margin-top:2px; color:rgba(226,232,240,.55); font-size:11px; line-height:1.3; }
.salovix-web-side-btn > i:last-child { color:rgba(226,232,240,.35); font-size:12px; transition:transform .18s ease; }
.salovix-web-side-btn.is-expanded > i:last-child { transform:rotate(90deg); }

.salovix-web-side-btn.is-primary {
  color:#fff;
  background:linear-gradient(135deg,#0284c7,#0ea5e9);
  border-color:rgba(186,230,253,.3);
  box-shadow:0 10px 24px rgba(2,132,199,.2);
}
.salovix-web-side-btn.is-primary .salovix-web-icon { color:#fff; background:rgba(255,255,255,.17); border-color:rgba(255,255,255,.2); }
.salovix-web-side-btn.is-primary small,
.salovix-web-side-btn.is-primary > i:last-child { color:rgba(255,255,255,.72); }

.salovix-web-submenu {
  display:none;
  margin:3px 0 8px 47px;
  padding:4px 0 4px 10px;
  border-left:1px solid rgba(125,211,252,.2);
}
.salovix-web-submenu.is-open { display:block; }
.salovix-web-sub-btn {
  width:100%;
  display:flex;
  align-items:center;
  gap:9px;
  min-height:38px;
  padding:7px 9px;
  margin:2px 0;
  border:1px solid transparent;
  border-radius:10px;
  background:transparent;
  color:#cbd5e1;
  text-align:left;
  font-size:12px;
  font-weight:750;
  cursor:pointer;
}
.salovix-web-sub-btn i { width:15px; color:#7dd3fc; text-align:center; }
.salovix-web-sub-btn:hover,
.salovix-web-sub-btn.is-active { background:rgba(255,255,255,.07); border-color:rgba(125,211,252,.15); color:#fff; }

.salovix-web-sidebar-foot { padding:12px 14px 16px; border-top:1px solid rgba(148,163,184,.14); }
.salovix-web-readonly-note {
  display:flex;
  gap:8px;
  align-items:flex-start;
  padding:10px 12px;
  border-radius:13px;
  color:#bae6fd;
  background:rgba(14,165,233,.08);
  border:1px solid rgba(56,189,248,.13);
  font-size:11px;
  line-height:1.35;
}

#salovix-web-page-head {
  max-width:var(--salovix-web-page-max);
  margin:0 auto 18px;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  padding:2px 2px 0;
}
#salovix-web-page-head h1 { margin:0; color:#18233a; font:800 28px/1.15 Georgia,'Times New Roman',serif; }
#salovix-web-page-head p { margin:5px 0 0; color:#64748b; font-size:13px; font-weight:650; }
.salovix-web-page-badge {
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:8px 11px;
  border:1px solid #bbf7d0;
  border-radius:999px;
  color:#087443;
  background:#ecfdf5;
  font-size:12px;
  font-weight:800;
}

#salovix-web-custom-view,
body.salovix-web-mode #section-admin {
  max-width:var(--salovix-web-page-max);
  margin:0 auto;
}
#salovix-web-custom-view.hidden,
body.salovix-web-mode #section-admin.hidden { display:none !important; }

.salovix-web-view-card {
  background:#fff;
  border:1px solid var(--salovix-web-border);
  border-radius:20px;
  box-shadow:0 8px 28px rgba(15,23,42,.055);
  overflow:hidden;
}
.salovix-web-view-card + .salovix-web-view-card { margin-top:16px; }
.salovix-web-view-card-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:20px 22px;
  border-bottom:1px solid #e7edf3;
}
.salovix-web-view-card-head h2 { margin:0; font-size:19px; font-weight:850; color:#18233a; }
.salovix-web-view-card-head p { margin:4px 0 0; color:#64748b; font-size:12px; }
.salovix-web-view-card-body { padding:22px; }

.salovix-web-grid-2 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.salovix-web-grid-3 { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.salovix-web-stat-card {
  padding:17px;
  border:1px solid #e2e8f0;
  border-radius:16px;
  background:#f8fafc;
}
.salovix-web-stat-card strong { display:block; color:#0f172a; font-size:26px; }
.salovix-web-stat-card span { display:block; margin-top:3px; color:#64748b; font-size:12px; font-weight:750; }

.salovix-web-list-toolbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.salovix-web-input,
.salovix-web-select {
  min-height:42px;
  border:1px solid #d7e0ea;
  border-radius:12px;
  background:#f8fafc;
  color:#172033;
  padding:9px 12px;
  font-size:13px;
  font-weight:650;
  outline:none;
}
.salovix-web-input:focus,
.salovix-web-select:focus { border-color:#38bdf8; box-shadow:0 0 0 3px rgba(56,189,248,.12); }
.salovix-web-input.is-search { flex:1 1 300px; }
.salovix-web-action-btn {
  min-height:42px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:9px 14px;
  border:1px solid #d7e0ea;
  border-radius:12px;
  background:#fff;
  color:#25324a;
  font-size:12px;
  font-weight:800;
  cursor:pointer;
}
.salovix-web-action-btn:hover { border-color:#7dd3fc; background:#f0f9ff; }
.salovix-web-action-btn.is-primary { color:#fff; background:var(--salovix-web-blue); border-color:var(--salovix-web-blue); }
.salovix-web-action-btn.is-danger { color:#b91c1c; background:#fff7f7; border-color:#fecaca; }
.salovix-web-action-btn[disabled] { opacity:.6; cursor:not-allowed; }

.salovix-web-crm-layout { display:grid; grid-template-columns:minmax(340px,.85fr) minmax(420px,1.15fr); min-height:620px; }
.salovix-web-crm-list { border-right:1px solid #e7edf3; padding:16px; max-height:700px; overflow:auto; }
.salovix-web-crm-detail { padding:24px; background:#fbfdff; }
.salovix-web-client-row {
  width:100%;
  display:grid;
  grid-template-columns:42px 1fr auto;
  gap:12px;
  align-items:center;
  padding:12px;
  margin:5px 0;
  border:1px solid #e2e8f0;
  border-radius:14px;
  background:#fff;
  text-align:left;
  cursor:pointer;
}
.salovix-web-client-row:hover,
.salovix-web-client-row.is-active { border-color:#7dd3fc; background:#f0f9ff; }
.salovix-web-client-avatar {
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:50%;
  color:#075985;
  background:#e0f2fe;
  font-size:15px;
  font-weight:900;
}
.salovix-web-client-row strong { display:block; font-size:13px; color:#172033; }
.salovix-web-client-row small { display:block; margin-top:3px; color:#64748b; font-size:11px; line-height:1.35; }
.salovix-web-client-count { min-width:26px; height:26px; display:grid; place-items:center; border-radius:999px; background:#f1f5f9; color:#334155; font-size:11px; font-weight:850; }
.salovix-web-empty { min-height:220px; display:grid; place-items:center; text-align:center; color:#64748b; font-size:13px; }
.salovix-web-detail-title { display:flex; align-items:center; gap:13px; }
.salovix-web-detail-title .salovix-web-client-avatar { width:54px; height:54px; font-size:20px; }
.salovix-web-detail-title h3 { margin:0; font-size:22px; color:#172033; }
.salovix-web-detail-title p { margin:4px 0 0; color:#64748b; font-size:12px; }
.salovix-web-reservation-list { margin-top:20px; display:grid; gap:9px; }
.salovix-web-reservation-row { display:grid; grid-template-columns:90px 1fr auto; gap:12px; align-items:center; padding:12px 13px; border:1px solid #e2e8f0; border-radius:13px; background:#fff; }
.salovix-web-reservation-row time { font-size:12px; font-weight:850; color:#075985; }
.salovix-web-reservation-row strong { font-size:12px; color:#172033; }
.salovix-web-reservation-row small { display:block; color:#64748b; font-size:11px; margin-top:2px; }
.salovix-web-state { padding:5px 8px; border-radius:999px; background:#f1f5f9; color:#475569; font-size:9px; font-weight:850; }

.salovix-web-data-list { display:grid; gap:10px; }
.salovix-web-data-row {
  display:grid;
  grid-template-columns:44px 1fr auto;
  align-items:center;
  gap:12px;
  padding:13px 14px;
  border:1px solid #e2e8f0;
  border-radius:14px;
  background:#fbfdff;
}
.salovix-web-data-row-icon { width:42px; height:42px; display:grid; place-items:center; border-radius:12px; background:#e0f2fe; color:#0369a1; }
.salovix-web-data-row strong { display:block; color:#172033; font-size:13px; }
.salovix-web-data-row small { display:block; margin-top:3px; color:#64748b; font-size:11px; }
.salovix-web-tag { display:inline-flex; align-items:center; gap:5px; padding:5px 8px; border-radius:999px; border:1px solid #dbeafe; background:#eff6ff; color:#1d4ed8; font-size:9px; font-weight:850; }
.salovix-web-tag.is-off { border-color:#e2e8f0; background:#f8fafc; color:#64748b; }
.salovix-web-schedule-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.salovix-web-time-wrap { display:flex; flex-wrap:wrap; gap:8px; }
.salovix-web-time { padding:8px 10px; border:1px solid #dbeafe; border-radius:10px; color:#075985; background:#eff6ff; font-size:12px; font-weight:850; }

.salovix-web-security-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.salovix-web-danger-card { padding:20px; border:1px solid #fecaca; border-radius:17px; background:linear-gradient(180deg,#fff,#fff7f7); }
.salovix-web-danger-card i { font-size:24px; color:#dc2626; }
.salovix-web-danger-card h3 { margin:13px 0 6px; color:#7f1d1d; font-size:15px; }
.salovix-web-danger-card p { min-height:48px; margin:0 0 15px; color:#7f1d1d; opacity:.78; font-size:11px; line-height:1.5; }
.salovix-web-security-note { margin-top:16px; padding:14px 16px; border:1px solid #bae6fd; border-radius:14px; background:#f0f9ff; color:#075985; font-size:12px; line-height:1.5; }

/* La administración web ocupa una pestaña completa; se ocultan cabeceras antiguas. */
body.salovix-web-mode #section-admin > div:first-child { display:none !important; }
body.salovix-web-mode #section-admin { max-width:var(--salovix-web-page-max); }
body.salovix-web-mode #section-admin #sala-canvas-container { height:570px !important; min-height:570px !important; }

body.salovix-web-mode.salovix-web-plan-focus #section-admin > * { display:none !important; }
body.salovix-web-mode.salovix-web-plan-focus #section-admin > .grid.grid-cols-1.lg\:grid-cols-12 { display:grid !important; grid-template-columns:1fr !important; }
body.salovix-web-mode.salovix-web-plan-focus #section-admin > .grid.grid-cols-1.lg\:grid-cols-12 > .lg\:col-span-8 { grid-column:1 / -1 !important; }
body.salovix-web-mode.salovix-web-plan-focus #section-admin > .grid.grid-cols-1.lg\:grid-cols-12 > .lg\:col-span-4 { display:none !important; }
body.salovix-web-mode.salovix-web-plan-focus #section-admin #sala-canvas-container { height:720px !important; min-height:720px !important; }
body.salovix-web-mode.salovix-web-plan-focus #section-admin .bg-white.border.border-borderDark.rounded-2xl.p-6.shadow-sm { min-height:820px; }

#salovix-web-table-tools {
  display:none;
  max-width:var(--salovix-web-page-max);
  margin:0 auto 14px;
  padding:13px;
  border:1px solid #bae6fd;
  border-radius:16px;
  background:#f0f9ff;
  box-shadow:0 6px 22px rgba(14,165,233,.08);
}
body.salovix-web-mode.salovix-web-table-tool-active #salovix-web-table-tools { display:flex; align-items:center; justify-content:space-between; gap:14px; }
.salovix-web-tool-copy strong { display:block; color:#075985; font-size:13px; }
.salovix-web-tool-copy span { display:block; margin-top:3px; color:#0c4a6e; font-size:11px; }
.salovix-web-tool-actions { display:flex; gap:8px; flex-wrap:wrap; }
.salovix-web-tool-btn { min-height:38px; display:inline-flex; align-items:center; gap:7px; padding:8px 11px; border:1px solid #bae6fd; border-radius:11px; background:#fff; color:#075985; font-size:11px; font-weight:850; cursor:pointer; }
.salovix-web-tool-btn.is-active { color:#fff; background:#0284c7; border-color:#0284c7; }

#salovix-web-object-toolbar {
  display:none;
  max-width:var(--salovix-web-page-max);
  margin:0 auto 14px;
  border:1px solid #dbeafe;
  border-radius:18px;
  background:#fff;
  box-shadow:0 7px 25px rgba(15,23,42,.06);
  overflow:hidden;
}
body.salovix-web-mode.salovix-web-object-mode #salovix-web-object-toolbar { display:block; }
.salovix-web-object-toolbar-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 17px; border-bottom:1px solid #e7edf3; }
.salovix-web-object-toolbar-head strong { display:block; font-size:13px; color:#172033; }
.salovix-web-object-toolbar-head span { display:block; margin-top:2px; color:#64748b; font-size:11px; }
.salovix-web-object-draft-badge { padding:6px 9px; border-radius:999px; border:1px solid #fed7aa; color:#9a3412; background:#fff7ed; font-size:9px; font-weight:900; }
.salovix-web-object-catalog { display:flex; gap:8px; padding:12px 14px; overflow-x:auto; }
.salovix-web-object-catalog button { flex:0 0 auto; min-width:95px; display:grid; place-items:center; gap:5px; min-height:67px; padding:8px; border:1px solid #e2e8f0; border-radius:13px; background:#f8fafc; color:#334155; font-size:9px; font-weight:850; cursor:pointer; }
.salovix-web-object-catalog button:hover { border-color:#7dd3fc; background:#f0f9ff; }
.salovix-web-object-catalog button i { font-size:21px; color:var(--object-color,#0284c7); }

#salovix-web-object-layer { position:absolute; inset:0; z-index:7; pointer-events:none; overflow:hidden; }
.salovix-web-plan-object {
  position:absolute;
  display:flex;
  align-items:center;
  justify-content:center;
  transform-origin:center center;
  user-select:none;
  touch-action:none;
  pointer-events:none;
  border:1px solid transparent;
  border-radius:8px;
  box-sizing:border-box;
}
body.salovix-web-object-mode .salovix-web-plan-object { pointer-events:auto; cursor:grab; }
body.salovix-web-object-mode .salovix-web-plan-object:active { cursor:grabbing; }
body.salovix-web-object-mode .salovix-web-plan-object.is-selected { border-color:#0ea5e9; box-shadow:0 0 0 3px rgba(14,165,233,.18); }
.salovix-web-plan-object .salovix-web-object-icon { width:100%; height:100%; display:flex; align-items:center; justify-content:center; overflow:hidden; border-radius:inherit; }
.salovix-web-plan-object .salovix-web-object-icon i { font-size:clamp(18px,45%,42px); }
.salovix-web-plan-object.is-wall .salovix-web-object-icon { background:repeating-linear-gradient(45deg,#94a3b8 0 8px,#cbd5e1 8px 16px); border:2px solid #64748b; }
.salovix-web-plan-object.is-bar .salovix-web-object-icon { background:linear-gradient(180deg,#b7791f,#7c4a15); border:3px solid #5b3411; color:#fff7ed; }
.salovix-web-plan-object.is-tv .salovix-web-object-icon { background:#111827; border:4px solid #334155; color:#e0f2fe; }
.salovix-web-plan-object.is-plant .salovix-web-object-icon { background:rgba(220,252,231,.82); color:#15803d; }
.salovix-web-plan-object.is-umbrella .salovix-web-object-icon { color:#ea580c; background:rgba(255,237,213,.75); }
.salovix-web-plan-object.is-palm .salovix-web-object-icon { color:#15803d; background:rgba(220,252,231,.7); }
.salovix-web-plan-object.is-sofa .salovix-web-object-icon { color:#1d4ed8; background:#dbeafe; border:2px solid #60a5fa; }
.salovix-web-plan-object.is-heater .salovix-web-object-icon { color:#dc2626; background:#fee2e2; }
.salovix-web-plan-object.is-lamp .salovix-web-object-icon { color:#ca8a04; background:#fef9c3; }
.salovix-web-object-handle {
  display:none;
  position:absolute;
  width:22px;
  height:22px;
  align-items:center;
  justify-content:center;
  border:2px solid #fff;
  border-radius:50%;
  color:#fff;
  background:#0284c7;
  box-shadow:0 2px 8px rgba(15,23,42,.28);
  font-size:9px;
  cursor:pointer;
  z-index:5;
}
body.salovix-web-object-mode .salovix-web-plan-object.is-selected .salovix-web-object-handle { display:flex; }
.salovix-web-object-resize { right:-11px; bottom:-11px; cursor:nwse-resize; }
.salovix-web-object-rotate { right:-11px; top:-11px; cursor:grab; background:#7c3aed; }
.salovix-web-object-delete { left:-11px; top:-11px; background:#dc2626; }

/* Apariencia integrada en la página, sin ventana emergente. */
#salovix-web-appearance-host { min-height:620px; }
#salovix-web-appearance-host .matilde-v63-appearance-card {
  width:100% !important;
  max-width:none !important;
  max-height:none !important;
  margin:0 !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
}
#salovix-web-appearance-host .matilde-v63-close,
#salovix-web-appearance-host #matilde-v63-cancel-appearance { display:none !important; }
#matilde-v63-appearance-modal.salovix-web-appearance-empty { display:none !important; }

/* Formulario de reserva integrado, no como drawer. */
#salovix-web-reservation-host #drawer-reserva-local {
  position:static !important;
  inset:auto !important;
  width:100% !important;
  max-width:none !important;
  min-height:650px;
  transform:none !important;
  transition:none !important;
  box-shadow:none !important;
  border:0 !important;
  display:flex !important;
  z-index:auto !important;
}
#salovix-web-reservation-host #drawer-reserva-local > div:first-child { padding:4px 2px 22px !important; }
#salovix-web-reservation-host #drawer-reserva-local > div:first-child > div:first-child button { display:none !important; }
#salovix-web-reservation-host #drawer-reserva-local > div:last-child { padding:18px 2px 2px !important; }

body.salovix-web-mode #salovix-firestore-readonly-banner {
  left:calc(var(--salovix-web-sidebar-width) + 18px) !important;
  right:18px !important;
  width:auto !important;
  bottom:14px !important;
  top:auto !important;
  max-width:520px;
  margin-left:auto;
  opacity:.94;
}

body.salovix-web-mode .fixed.inset-0.salovix-web-suppress-legacy-modal { display:none !important; }

@media (max-width: 1280px) {
  :root { --salovix-web-sidebar-width: 292px; }
  body.salovix-web-mode > main { padding:20px 20px 44px !important; }
  .salovix-web-crm-layout { grid-template-columns:1fr; }
  .salovix-web-crm-list { border-right:0; border-bottom:1px solid #e7edf3; max-height:390px; }
  .salovix-web-security-grid { grid-template-columns:1fr; }
}

@media (max-width: 980px) {
  :root { --salovix-web-sidebar-width: 260px; }
  .salovix-web-grid-3,.salovix-web-grid-2,.salovix-web-schedule-grid { grid-template-columns:1fr; }
  body.salovix-web-mode #section-admin #sala-canvas-container { height:520px !important; min-height:520px !important; }
}


/* Salovix WEB v14: gestión ordenada de salas, personal y turnos. */
.salovix-web-data-row.is-manageable { grid-template-columns:44px minmax(220px,1fr) auto; }
.salovix-web-row-actions { display:flex; align-items:center; justify-content:flex-end; gap:9px; flex-wrap:wrap; }
.salovix-web-order-control { display:inline-grid; grid-template-columns:32px 48px 32px; align-items:center; border:1px solid #d7e0ea; border-radius:11px; overflow:hidden; background:#fff; }
.salovix-web-order-control button,
.salovix-web-icon-btn { min-width:32px; min-height:34px; display:inline-grid; place-items:center; border:0; background:#fff; color:#334155; cursor:pointer; }
.salovix-web-order-control button:hover,
.salovix-web-icon-btn:hover { background:#e0f2fe; color:#0369a1; }
.salovix-web-order-control button[disabled],
.salovix-web-icon-btn[disabled] { opacity:.34; cursor:not-allowed; }
.salovix-web-order-control input { width:48px; height:34px; border:0; border-left:1px solid #e2e8f0; border-right:1px solid #e2e8f0; background:#f8fafc; color:#172033; text-align:center; font-size:12px; font-weight:900; outline:none; -moz-appearance:textfield; }
.salovix-web-order-control input::-webkit-inner-spin-button { display:none; }
.salovix-web-icon-btn { border:1px solid #d7e0ea; border-radius:10px; }
.salovix-web-icon-btn.is-danger { color:#b91c1c; border-color:#fecaca; background:#fff7f7; }
.salovix-web-icon-btn.is-danger:hover { color:#fff; background:#dc2626; border-color:#dc2626; }
.salovix-web-save-row { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-top:18px; padding:14px 16px; border:1px solid #bae6fd; border-radius:14px; background:#f0f9ff; color:#075985; font-size:11px; font-weight:700; }
.salovix-web-draft-hint { display:none; margin-bottom:12px; padding:9px 12px; border:1px solid #fed7aa; border-radius:11px; background:#fff7ed; color:#9a3412; font-size:11px; font-weight:800; }
.salovix-web-draft-hint.is-visible { display:block; }
.salovix-web-reservation-row.is-clickable { width:100%; grid-template-columns:90px 1fr auto 14px; text-align:left; cursor:pointer; transition:border-color .14s ease, background .14s ease, transform .14s ease; }
.salovix-web-reservation-row.is-clickable:hover { border-color:#7dd3fc; background:#f0f9ff; transform:translateY(-1px); }
.salovix-web-reservation-row.is-clickable[disabled] { cursor:not-allowed; opacity:.72; }
.salovix-web-row-chevron { color:#94a3b8; font-size:11px; }
.salovix-web-shift-grid { display:grid; gap:16px; }
.salovix-web-shift-card { padding:18px; border:1px solid #dbe3ec; border-radius:17px; background:#fbfdff; box-shadow:0 4px 16px rgba(15,23,42,.035); }
.salovix-web-shift-head { display:grid; grid-template-columns:minmax(220px,1fr) auto auto; align-items:end; gap:14px; padding-bottom:15px; border-bottom:1px solid #e7edf3; }
.salovix-web-shift-name > span,
.salovix-web-shift-range label { display:block; margin-bottom:5px; color:#64748b; font-size:9px; font-weight:900; text-transform:uppercase; letter-spacing:.08em; }
.salovix-web-shift-name .salovix-web-input { width:100%; }
.salovix-web-shift-range { display:flex; gap:8px; }
.salovix-web-shift-range .salovix-web-input { width:118px; }
.salovix-web-shift-actions { display:flex; gap:6px; padding-bottom:1px; }
.salovix-web-shift-tools { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:15px 0 12px; }
.salovix-web-shift-tools strong { display:block; color:#172033; font-size:12px; }
.salovix-web-shift-tools span { display:block; margin-top:3px; color:#64748b; font-size:9px; }
.salovix-web-time-editor { display:flex; flex-wrap:wrap; gap:8px; min-height:38px; }
.salovix-web-time.is-editable { display:inline-flex; align-items:center; gap:7px; padding-right:5px; }
.salovix-web-time.is-editable button { width:22px; height:22px; display:grid; place-items:center; border:0; border-radius:7px; background:#dbeafe; color:#1d4ed8; cursor:pointer; }
.salovix-web-time.is-editable button:hover { color:#fff; background:#dc2626; }
.salovix-web-empty.is-inline { min-height:38px; width:100%; border:1px dashed #cbd5e1; border-radius:11px; }

/* Los mensajes y fichas deben poder cerrarse siempre en /web. */
body.salovix-web-mode #salovix-firestore-notice,
body.salovix-web-mode .fixed.inset-0 { pointer-events:auto !important; }
body.salovix-web-mode #salovix-firestore-notice button,
body.salovix-web-mode .fixed.inset-0 button { pointer-events:auto !important; }

@media (max-width: 1180px) {
  .salovix-web-shift-head { grid-template-columns:1fr; align-items:stretch; }
  .salovix-web-shift-range { justify-content:flex-start; }
  .salovix-web-shift-tools { align-items:flex-start; flex-direction:column; }
  .salovix-web-save-row { align-items:flex-start; flex-direction:column; }
}


/* Salovix WEB v17: iconos visibles, orden directo y objetos sin cajas. */
.salovix-web-icon .salovix-web-inline-svg,
.salovix-web-sub-btn .salovix-web-inline-svg,
.salovix-web-data-row-icon .salovix-web-inline-svg {
  width:20px;
  height:20px;
  display:block;
  color:inherit !important;
  stroke:currentColor !important;
  opacity:1 !important;
  visibility:visible !important;
  filter:none !important;
}
.salovix-web-sub-btn .salovix-web-inline-svg { width:15px; height:15px; flex:0 0 auto; }
.salovix-web-side-btn .salovix-web-icon { color:#7dd3fc !important; }
.salovix-web-side-btn.is-active .salovix-web-icon,
.salovix-web-side-btn:hover .salovix-web-icon { color:#bae6fd !important; }

.salovix-web-object-catalog { align-items:flex-start; gap:14px; }
.salovix-web-object-catalog button {
  min-width:86px;
  min-height:86px;
  padding:5px 4px;
  border:0 !important;
  border-radius:12px;
  background:transparent !important;
  box-shadow:none !important;
}
.salovix-web-object-catalog button:hover,
.salovix-web-object-catalog button:focus-visible { outline:0; background:transparent !important; transform:translateY(-2px) scale(1.03); }
.salovix-web-object-catalog button:focus-visible .salovix-web-object-preview { filter:drop-shadow(0 5px 7px rgba(14,165,233,.28)); }
.salovix-web-object-preview { width:58px; height:58px; display:grid; place-items:center; filter:drop-shadow(0 3px 4px rgba(15,23,42,.16)); }
.salovix-web-object-preview .salovix-web-object-svg { width:100%; height:100%; display:block; overflow:visible; }

.salovix-web-object-editor {
  display:grid;
  grid-template-columns:minmax(220px,1fr) auto auto;
  gap:14px;
  align-items:center;
  padding:12px 16px 15px;
  border-top:1px solid #e7edf3;
  background:#f8fafc;
}
.salovix-web-object-editor strong { display:block; color:#172033; font-size:12px; }
.salovix-web-object-editor > div > span { display:block; margin-top:3px; color:#64748b; font-size:9px; }
.salovix-web-color-control { display:flex; align-items:center; gap:9px; padding:7px 10px; border:1px solid #d7e0ea; border-radius:11px; background:#fff; }
.salovix-web-color-control input[type="color"] { width:42px; height:32px; padding:2px; border:0; border-radius:8px; background:transparent; cursor:pointer; }
.salovix-web-color-control input[disabled] { opacity:.38; cursor:not-allowed; }
.salovix-web-color-control span { min-width:145px; color:#334155; font-size:11px; font-weight:850; }

.salovix-web-plan-object {
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:var(--object-color,currentColor);
}
body.salovix-web-object-mode .salovix-web-plan-object.is-selected {
  border:0 !important;
  box-shadow:none !important;
  outline:0 !important;
}
body.salovix-web-object-mode .salovix-web-plan-object.is-selected .salovix-web-object-svg { filter:drop-shadow(0 5px 7px rgba(14,165,233,.34)); }
.salovix-web-plan-object .salovix-web-object-icon {
  width:100%;
  height:100%;
  display:block;
  overflow:visible;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  color:inherit !important;
}
.salovix-web-plan-object .salovix-web-object-svg { width:100%; height:100%; display:block; overflow:visible; filter:drop-shadow(0 4px 5px rgba(15,23,42,.16)); }
.salovix-web-plan-object.is-wall .salovix-web-object-icon,
.salovix-web-plan-object.is-bar .salovix-web-object-icon,
.salovix-web-plan-object.is-tv .salovix-web-object-icon,
.salovix-web-plan-object.is-plant .salovix-web-object-icon,
.salovix-web-plan-object.is-umbrella .salovix-web-object-icon,
.salovix-web-plan-object.is-palm .salovix-web-object-icon,
.salovix-web-plan-object.is-sofa .salovix-web-object-icon,
.salovix-web-plan-object.is-heater .salovix-web-object-icon,
.salovix-web-plan-object.is-lamp .salovix-web-object-icon { border:0 !important; background:transparent !important; color:inherit !important; }
.salovix-web-object-handle span { font:900 13px/1 system-ui,sans-serif; }

.salovix-web-data-row.is-manageable.is-reorderable {
  grid-template-columns:28px minmax(260px,1fr) auto;
  cursor:default;
  transition:border-color .14s ease, background .14s ease, transform .14s ease;
}
.salovix-web-data-row.is-manageable.is-reorderable.is-selected { border-color:#38bdf8; background:#f0f9ff; box-shadow:0 0 0 2px rgba(56,189,248,.12); }
.salovix-web-data-row.is-manageable.is-reorderable.is-dragging { opacity:.5; }
.salovix-web-data-row.is-manageable.is-reorderable.is-drag-over { border-color:#0284c7; transform:translateY(2px); }
.salovix-web-drag-handle { display:grid; place-items:center; width:24px; height:40px; color:#64748b; font-size:21px; font-weight:900; cursor:grab; user-select:none; }
.salovix-web-drag-handle:active { cursor:grabbing; }
.salovix-web-row-main { min-width:0; display:grid; grid-template-columns:44px minmax(0,1fr); align-items:center; gap:12px; padding:0; border:0; background:transparent; text-align:left; cursor:pointer; }
.salovix-web-row-main:focus-visible { outline:2px solid #38bdf8; outline-offset:4px; border-radius:10px; }
.salovix-web-position-select { display:grid; gap:3px; }
.salovix-web-position-select > span { color:#64748b; font-size:9px; font-weight:900; text-transform:uppercase; letter-spacing:.08em; }
.salovix-web-position-select select { min-width:108px; height:34px; padding:0 28px 0 9px; border:1px solid #cbd5e1; border-radius:9px; background:#fff; color:#172033; font-size:11px; font-weight:850; cursor:pointer; }
.salovix-web-order-text-btn { min-height:34px; padding:0 10px; border:1px solid #cbd5e1; border-radius:9px; background:#fff; color:#334155; font-size:9px; font-weight:850; cursor:pointer; }
.salovix-web-order-text-btn:hover { border-color:#7dd3fc; background:#e0f2fe; color:#0369a1; }
.salovix-web-order-text-btn[disabled] { opacity:.35; cursor:not-allowed; }

@media (max-width: 1180px) {
  .salovix-web-object-editor { grid-template-columns:1fr; align-items:stretch; }
  .salovix-web-data-row.is-manageable.is-reorderable { grid-template-columns:24px 1fr; }
  .salovix-web-data-row.is-manageable.is-reorderable .salovix-web-row-actions { grid-column:1 / -1; justify-content:flex-start; padding-left:36px; }
}


/* Salovix WEB v17: menú exclusivo de edición, salida sin guardar y tipografía PC. */
.salovix-web-table-sidebar-head {
  display:grid;
  gap:16px;
  margin:0 4px 20px;
  padding:2px 4px 18px;
  border-bottom:1px solid rgba(148,163,184,.18);
}
.salovix-web-table-back {
  width:100%;
  min-height:46px;
  display:flex;
  align-items:center;
  gap:11px;
  padding:10px 13px;
  border:1px solid rgba(125,211,252,.24);
  border-radius:13px;
  background:rgba(56,189,248,.1);
  color:#e0f2fe;
  font-size:13px;
  font-weight:900;
  cursor:pointer;
}
.salovix-web-table-back:hover,
.salovix-web-table-back:focus-visible { outline:none; background:rgba(56,189,248,.18); border-color:rgba(125,211,252,.42); }
.salovix-web-table-back .salovix-web-inline-svg { width:20px; height:20px; }
.salovix-web-table-sidebar-head > div > span { display:block; color:#7dd3fc; font-size:10px; font-weight:950; letter-spacing:.16em; }
.salovix-web-table-sidebar-head > div > strong { display:block; margin-top:5px; color:#fff; font-size:19px; font-weight:900; }
.salovix-web-table-sidebar-head > div > p { margin:7px 0 0; color:rgba(226,232,240,.68); font-size:12px; line-height:1.45; }
.salovix-web-table-save-reminder {
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin:22px 7px 4px;
  padding:13px;
  border:1px solid rgba(251,191,36,.24);
  border-radius:13px;
  background:rgba(245,158,11,.1);
  color:#fde68a;
  font-size:11px;
  line-height:1.45;
}
.salovix-web-table-save-reminder .salovix-web-inline-svg { width:19px; height:19px; flex:0 0 auto; }
.salovix-web-table-save-reminder strong { color:#fff7d6; }

body.salovix-web-mode.salovix-web-table-tool-active #salovix-web-table-tools {
  position:sticky;
  top:12px;
  z-index:720;
  box-shadow:0 10px 28px rgba(14,165,233,.16);
}
.salovix-web-tool-btn[data-web-table-finish] {
  color:#fff;
  background:#059669;
  border-color:#047857;
  box-shadow:0 7px 17px rgba(5,150,105,.22);
}
.salovix-web-tool-btn[data-web-table-finish]:hover { background:#047857; }

#salovix-web-toast {
  position:fixed;
  right:24px;
  bottom:24px;
  z-index:1000000;
  width:min(430px,calc(100vw - 48px));
  display:grid;
  grid-template-columns:1fr auto;
  gap:5px 14px;
  padding:17px 48px 17px 18px;
  border:1px solid #fed7aa;
  border-radius:16px;
  background:#fff7ed;
  color:#7c2d12;
  box-shadow:0 18px 50px rgba(15,23,42,.24);
  opacity:0;
  transform:translateY(18px);
  pointer-events:none;
  transition:opacity .18s ease,transform .18s ease;
}
#salovix-web-toast.is-visible { opacity:1; transform:translateY(0); pointer-events:auto; }
#salovix-web-toast strong { grid-column:1; font-size:15px; font-weight:950; }
#salovix-web-toast span { grid-column:1; font-size:12px; line-height:1.45; }
#salovix-web-toast button { position:absolute; top:9px; right:10px; width:30px; height:30px; border:0; border-radius:9px; background:transparent; color:#9a3412; font-size:22px; font-weight:900; cursor:pointer; }
#salovix-web-toast button:hover { background:#ffedd5; }

/* Refuerzo de legibilidad para toda la administración web de escritorio. */
body.salovix-web-mode button,
body.salovix-web-mode input,
body.salovix-web-mode select,
body.salovix-web-mode textarea { font-size:max(12px,1em); }
body.salovix-web-mode #section-admin { font-size:15px; }
body.salovix-web-mode #section-admin .text-\[8px\],
body.salovix-web-mode #section-admin .text-\[9px\] { font-size:11px !important; }
body.salovix-web-mode #section-admin .text-\[10px\],
body.salovix-web-mode #section-admin .text-\[11px\] { font-size:12px !important; }
body.salovix-web-mode #section-admin .text-xs { font-size:13px !important; }


/* v19 WEB: selector de forma exclusivo de /web. No se reutiliza el selector
   compartido de tablet/móvil para mantener esas dos vistas congeladas. */
#salovix-web-shape-modal {
  display:none;
  position:fixed;
  inset:0;
  z-index:1000010;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(3,10,18,.68);
  backdrop-filter:blur(4px);
}
#salovix-web-shape-modal.is-open { display:flex; }
body[data-salovix-web-table-tool="salovix-web-redimensionar"] #sala-canvas-container .cursor-se-resize {
  display:block!important;
}

/* v19: redimensionado libre de objetos, sin conservar proporciones. */
.salovix-web-object-resize-handle {
  display:none;
  position:absolute;
  width:12px;
  height:12px;
  padding:0;
  border:2px solid #fff;
  border-radius:50%;
  background:#0284c7;
  box-shadow:0 2px 7px rgba(15,23,42,.32);
  z-index:7;
  touch-action:none;
}
body.salovix-web-object-mode .salovix-web-plan-object.is-selected .salovix-web-object-resize-handle { display:block; }
.salovix-web-object-resize-handle.is-n { left:50%; top:-7px; transform:translateX(-50%); cursor:ns-resize; }
.salovix-web-object-resize-handle.is-s { left:50%; bottom:-7px; transform:translateX(-50%); cursor:ns-resize; }
.salovix-web-object-resize-handle.is-e { right:-7px; top:50%; transform:translateY(-50%); cursor:ew-resize; }
.salovix-web-object-resize-handle.is-w { left:-7px; top:50%; transform:translateY(-50%); cursor:ew-resize; }
.salovix-web-object-resize-handle.is-ne { right:-7px; top:-7px; cursor:nesw-resize; }
.salovix-web-object-resize-handle.is-nw { left:-7px; top:-7px; cursor:nwse-resize; }
.salovix-web-object-resize-handle.is-se { right:-7px; bottom:-7px; cursor:nwse-resize; }
.salovix-web-object-resize-handle.is-sw { left:-7px; bottom:-7px; cursor:nesw-resize; }

/* En visualización, la decoración queda detrás de las mesas. Durante la
   edición sube temporalmente para que sus tiradores sean accesibles. */
#salovix-web-object-layer { z-index:2; }
body.salovix-web-object-mode #salovix-web-object-layer { z-index:8; }
#sala-canvas-container > [data-mesa-id] { z-index:3; }


/* v20: el botón flotante antiguo de crear mesa se elimina de /web. La única
   entrada válida es «Nueva mesa» dentro del menú lateral de Modificar mesas. */
body.salovix-web-mode button[onclick*="abrirModalNuevaMesaRapida"],
body.salovix-web-mode button[title="Crear nueva mesa"] { display:none !important; visibility:hidden !important; animation:none !important; }

.salovix-web-theme-card {
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  margin:0 0 22px; padding:18px 20px; border:1px solid #dbe5ef; border-radius:16px;
  background:linear-gradient(135deg,#f8fbff,#eef7fc);
}
.salovix-web-theme-card > div { display:flex; align-items:center; gap:14px; min-width:0; }
.salovix-web-theme-icon { width:44px; height:44px; flex:0 0 44px; display:grid; place-items:center; border-radius:13px; color:#0369a1; background:#dff4ff; }
.salovix-web-theme-icon svg { width:23px; height:23px; }
.salovix-web-theme-card strong { display:block; font-size:16px; color:#172033; }
.salovix-web-theme-card small { display:block; margin-top:4px; color:#64748b; font-size:13px; line-height:1.45; }
.salovix-web-theme-toggle { min-width:144px; height:44px; display:flex; align-items:center; justify-content:center; gap:9px; padding:0 14px; border:1px solid #cbd5e1; border-radius:999px; background:#fff; color:#475569; font-weight:850; cursor:pointer; }
.salovix-web-theme-toggle span { position:relative; width:42px; height:23px; border-radius:999px; background:#cbd5e1; transition:.18s ease; }
.salovix-web-theme-toggle span::after { content:""; position:absolute; width:17px; height:17px; left:3px; top:3px; border-radius:50%; background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.25); transition:.18s ease; }
.salovix-web-theme-toggle.is-active { border-color:#38bdf8; color:#075985; background:#ecfeff; }
.salovix-web-theme-toggle.is-active span { background:#0ea5e9; }
.salovix-web-theme-toggle.is-active span::after { transform:translateX(19px); }

/* Modo oscuro exclusivo de /web. */
html.salovix-web-dark-root { color-scheme:dark; background:#07101d; }
body.salovix-web-mode.salovix-web-dark-mode {
  --mat-surface:#111827; --mat-card:#0f172a; --mat-border:#334155;
  --mat-readable-text:#e5edf7; --mat-readable-muted:#94a3b8;
  background:#07101d !important; color:#e5edf7 !important;
}
body.salovix-web-mode.salovix-web-dark-mode > main,
body.salovix-web-mode.salovix-web-dark-mode #section-admin,
body.salovix-web-mode.salovix-web-dark-mode #salovix-web-custom-view { background:#07101d !important; color:#e5edf7 !important; }
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-workspace-head,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-view-card,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-view-card-head,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-view-card-body,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-data-row,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-crm-list,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-crm-detail,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-danger-card,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-order-row,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-schedule-card,
body.salovix-web-mode.salovix-web-dark-mode #sala-canvas-container,
body.salovix-web-mode.salovix-web-dark-mode .bg-white,
body.salovix-web-mode.salovix-web-dark-mode .bg-slate-50,
body.salovix-web-mode.salovix-web-dark-mode .bg-gray-50 {
  background:#0f172a !important; color:#e5edf7 !important; border-color:#2b3a50 !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-view-card-head,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-crm-list,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-data-row,
body.salovix-web-mode.salovix-web-dark-mode .border,
body.salovix-web-mode.salovix-web-dark-mode [class*="border-slate"],
body.salovix-web-mode.salovix-web-dark-mode [class*="border-gray"] { border-color:#2b3a50 !important; }
body.salovix-web-mode.salovix-web-dark-mode h1,
body.salovix-web-mode.salovix-web-dark-mode h2,
body.salovix-web-mode.salovix-web-dark-mode h3,
body.salovix-web-mode.salovix-web-dark-mode h4,
body.salovix-web-mode.salovix-web-dark-mode strong,
body.salovix-web-mode.salovix-web-dark-mode .text-gray-900,
body.salovix-web-mode.salovix-web-dark-mode .text-slate-900 { color:#f8fafc !important; }
body.salovix-web-mode.salovix-web-dark-mode p,
body.salovix-web-mode.salovix-web-dark-mode small,
body.salovix-web-mode.salovix-web-dark-mode .text-gray-500,
body.salovix-web-mode.salovix-web-dark-mode .text-slate-500,
body.salovix-web-mode.salovix-web-dark-mode .text-gray-600,
body.salovix-web-mode.salovix-web-dark-mode .text-slate-600 { color:#9fb0c5 !important; }
body.salovix-web-mode.salovix-web-dark-mode input,
body.salovix-web-mode.salovix-web-dark-mode select,
body.salovix-web-mode.salovix-web-dark-mode textarea,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-input,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-order-control,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-order-control input {
  background:#101b2c !important; color:#edf4fc !important; border-color:#34445d !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-action-btn:not(.is-primary):not(.is-danger),
body.salovix-web-mode.salovix-web-dark-mode button.bg-white { background:#172338 !important; color:#e5edf7 !important; border-color:#34445d !important; }
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-theme-card { background:linear-gradient(135deg,#111c2e,#0b1525); border-color:#34445d; }
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-theme-card strong { color:#f8fafc; }
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-theme-card small { color:#9fb0c5; }
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-theme-icon { color:#7dd3fc; background:rgba(56,189,248,.12); }
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-theme-toggle { background:#172338; color:#d8e7f6; border-color:#3d506a; }
body.salovix-web-mode.salovix-web-dark-mode .matilde-v63-appearance-card { background:#0f172a !important; color:#e5edf7 !important; border-color:#34445d !important; }


/* v21: un único tirador inferior para objetos, sin tapar eliminar ni girar. */
.salovix-web-object-resize-handle { display:none!important; }
body.salovix-web-object-mode .salovix-web-plan-object.is-selected .salovix-web-object-resize-handle.is-se {
  display:block!important;
  right:-9px;
  bottom:-9px;
  width:17px;
  height:17px;
  border-radius:5px;
  cursor:nwse-resize;
}


/* SALOVIX V339 — CRM WEB virtualizado: altura estable + pocos nodos por frame. */
.salovix-web-crm-list { contain:layout paint; scroll-behavior:auto; overscroll-behavior:contain; }
.salovix-web-client-row { height:68px; box-sizing:border-box; contain:layout; color:#172033; -webkit-text-fill-color:currentColor; }
.salovix-web-client-main { min-width:0; overflow:hidden; }
.salovix-web-client-main strong,
.salovix-web-client-main small { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.salovix-web-crm-virtual-spacer { width:1px; min-width:1px; pointer-events:none; }
.salovix-web-reservation-row { content-visibility:auto; contain-intrinsic-size:auto 68px; contain:layout paint style; }


/* SALOVIX V340 — CRM oscuro estable durante scroll virtualizado.
 * Las filas nuevas reciben su color definitivo desde el propio botón; no
 * dependen de un repintado posterior del selector global de <strong>. */
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row {
  background:#0f172a !important;
  border-color:#2b3a50 !important;
  color:#f8fafc !important;
  -webkit-text-fill-color:#f8fafc !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row:hover,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row.is-active {
  background:#172338 !important;
  border-color:#38bdf8 !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row strong {
  color:#f8fafc !important;
  -webkit-text-fill-color:#f8fafc !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row small {
  color:#9fb0c5 !important;
  -webkit-text-fill-color:#9fb0c5 !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-count {
  background:#172338 !important;
  color:#d8e7f6 !important;
  -webkit-text-fill-color:#d8e7f6 !important;
}

/* SALOVIX V341 — CRM Web: en modo oscuro la LISTA de clientes conserva
 * tarjetas blancas con texto oscuro, igual que las tarjetas de detalle.
 * No altera virtualizacion, scroll ni el panel derecho del CRM. */
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row {
  background:#ffffff !important;
  border-color:#e2e8f0 !important;
  color:#172033 !important;
  -webkit-text-fill-color:#172033 !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row:hover,
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row.is-active {
  background:#f0f9ff !important;
  border-color:#7dd3fc !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row strong {
  color:#172033 !important;
  -webkit-text-fill-color:#172033 !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-row small {
  color:#64748b !important;
  -webkit-text-fill-color:#64748b !important;
}
body.salovix-web-mode.salovix-web-dark-mode .salovix-web-client-count {
  background:#f1f5f9 !important;
  color:#334155 !important;
  -webkit-text-fill-color:#334155 !important;
}
