/* ============================================================
   Wellnesshotel Portal v2.3 — Bootstrap 5.3.3 UI layer
   Source tokens: assets/scss/_variables.scss
   ============================================================ */

:root,
[data-bs-theme="light"] {
  --wh-primary: #137f73;
  --wh-primary-rgb: 19,127,115;
  --wh-primary-dark: #0d655d;
  --wh-primary-soft: #e8f6f3;
  --wh-accent: #d7a65b;
  --wh-bg: #f5f7fa;
  --wh-surface: #ffffff;
  --wh-surface-muted: #f8fafc;
  --wh-border: #e5e9ef;
  --wh-text: #1f2937;
  --wh-muted: #6b7280;
  --wh-sidebar-bg: #101827;
  --wh-sidebar-text: #c9d3e2;
  --wh-radius-sm: .5rem;
  --wh-radius: .75rem;
  --wh-radius-lg: 1rem;
  --wh-radius-xl: 1.25rem;
  --wh-shadow-sm: 0 1px 2px rgba(15,23,42,.06);
  --wh-shadow: 0 8px 28px rgba(15,23,42,.08);
  --wh-shadow-lg: 0 18px 50px rgba(15,23,42,.13);
  --bs-primary: #137f73;
  --bs-primary-rgb: 19,127,115;
  --bs-link-color: #137f73;
  --bs-link-hover-color: #0d655d;
  --bs-body-bg: #f5f7fa;
  --bs-body-color: #1f2937;
  --bs-border-color: #e5e9ef;
}

[data-bs-theme="dark"] {
  --wh-primary: #46b8aa;
  --wh-primary-rgb: 70,184,170;
  --wh-primary-dark: #66cabc;
  --wh-primary-soft: #183a39;
  --wh-bg: #0b111b;
  --wh-surface: #111a28;
  --wh-surface-muted: #172235;
  --wh-border: #263348;
  --wh-text: #e8edf5;
  --wh-muted: #9aa8bc;
  --wh-sidebar-bg: #0a1019;
  --wh-sidebar-text: #bac7d8;
  --wh-shadow-sm: 0 1px 2px rgba(0,0,0,.22);
  --wh-shadow: 0 12px 30px rgba(0,0,0,.23);
  --wh-shadow-lg: 0 20px 60px rgba(0,0,0,.32);
  --bs-primary: #46b8aa;
  --bs-primary-rgb: 70,184,170;
  --bs-link-color: #66cabc;
  --bs-link-hover-color: #86d7cb;
  --bs-body-bg: #0b111b;
  --bs-body-color: #e8edf5;
  --bs-border-color: #263348;
}

html { min-height: 100%; }
body {
  min-height: 100vh;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--wh-text);
  background: var(--wh-bg);
  line-height: 1.55;
}

h1,h2,h3,h4,h5,h6 {
  font-family: inherit;
  color: var(--wh-text);
  letter-spacing: -.02em;
  font-weight: 700;
}

h1 { font-size: clamp(1.75rem, 1.25rem + 1.5vw, 2.45rem); }
h2 { font-size: clamp(1.25rem, 1.1rem + .65vw, 1.65rem); }
h3 { font-size: 1.05rem; }

p, .muted { color: var(--wh-muted); }
a { text-underline-offset: .18em; }

.container { max-width: 1360px; }
.section { padding-block: 2rem; }
.page-head { padding-top: 2rem; }
.narrow { max-width: 820px; }

/* ---------- Bootstrap component refinements ---------- */
.btn {
  border-radius: .7rem;
  font-weight: 650;
  letter-spacing: -.01em;
  padding: .66rem 1rem;
  box-shadow: none;
  transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease, border-color .15s ease;
}
.btn:hover { transform: translateY(-1px); text-decoration: none; }
.btn-primary {
  --bs-btn-bg: var(--wh-primary);
  --bs-btn-border-color: var(--wh-primary);
  --bs-btn-hover-bg: var(--wh-primary-dark);
  --bs-btn-hover-border-color: var(--wh-primary-dark);
  --bs-btn-active-bg: var(--wh-primary-dark);
  --bs-btn-active-border-color: var(--wh-primary-dark);
  color: #fff;
  background: var(--wh-primary);
  border-color: var(--wh-primary);
}
.btn-primary:hover { color: #fff; background: var(--wh-primary-dark); border-color: var(--wh-primary-dark); }
.btn-secondary,
.btn-light {
  color: var(--wh-text);
  background: var(--wh-surface);
  border-color: var(--wh-border);
}
.btn-secondary:hover,
.btn-light:hover { background: var(--wh-surface-muted); color: var(--wh-text); border-color: color-mix(in srgb, var(--wh-border) 75%, var(--wh-text)); }
.btn-ghost { color: var(--wh-muted); background: transparent; border-color: transparent; }
.btn-ghost:hover { color: var(--wh-text); background: var(--wh-surface-muted); }
.btn-sm { border-radius: .55rem; padding: .4rem .7rem; font-size: .825rem; }

.card,
.ui-card,
.panel,
.filters,
.service-block,
.empty-state {
  background: var(--wh-surface);
  color: var(--wh-text);
  border: 1px solid var(--wh-border);
  border-radius: var(--wh-radius-lg);
  box-shadow: var(--wh-shadow-sm);
}
.card { overflow: hidden; }
.card.pad, .ui-card { padding: 1.25rem; }
.ui-card-header {
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding-bottom:1rem; margin-bottom:1rem; border-bottom:1px solid var(--wh-border);
}
.ui-card-header h2, .ui-card-header h3 { margin:0; }

.alert {
  border-radius: .85rem;
  border-width: 1px;
  padding: .85rem 1rem;
  box-shadow: var(--wh-shadow-sm);
}

.badge, .status, .chip {
  border-radius: 999px;
  font-weight: 650;
  letter-spacing: .01em;
}
.status { padding: .34rem .66rem; font-size: .76rem; }
.status-new { background: color-mix(in srgb, #4f7cff 14%, var(--wh-surface)); color: #4f7cff; }
.status-read, .status-viewed { background: color-mix(in srgb, #667085 14%, var(--wh-surface)); color: var(--wh-muted); }
.status-offered, .status-quoted { background: color-mix(in srgb, #f0a43a 16%, var(--wh-surface)); color: #b36b09; }
.status-accepted, .status-published, .status-confirmed { background: color-mix(in srgb, #198754 15%, var(--wh-surface)); color: #198754; }
.status-declined, .status-spam, .status-cancelled { background: color-mix(in srgb, #dc4c64 15%, var(--wh-surface)); color: #c73550; }

/* ---------- Public utility + navigation ---------- */
.portal-utility {
  background: var(--wh-surface);
  border-bottom: 1px solid var(--wh-border);
  color: var(--wh-muted);
  font-size: .78rem;
}
.portal-utility .container { min-height: 34px; }
.portal-navbar {
  background: color-mix(in srgb, var(--wh-surface) 94%, transparent);
  border-bottom: 1px solid var(--wh-border);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  box-shadow: 0 4px 20px rgba(15,23,42,.035);
}
.portal-navbar .navbar-brand { color: var(--wh-text); font-weight: 800; letter-spacing: -.025em; }
.portal-navbar .navbar-brand:hover { color: var(--wh-text); }
.portal-navbar .nav-link {
  color: var(--wh-muted);
  font-weight: 600;
  border-radius: .6rem;
  padding-inline: .75rem !important;
}
.portal-navbar .nav-link:hover,
.portal-navbar .nav-link.active { color: var(--wh-primary); background: var(--wh-primary-soft); }
.brand-mark-modern {
  width: 38px; height: 38px; display:inline-grid; place-items:center;
  border-radius: 12px; color:#fff; font-weight:800;
  background: linear-gradient(135deg, var(--wh-primary), #37a697);
  box-shadow: 0 8px 20px rgba(var(--wh-primary-rgb), .25);
}
.brand-subtitle { color: var(--wh-muted); font-size: .7rem; font-weight: 500; line-height:1; }
.theme-toggle {
  width: 38px; height: 38px; border-radius: .65rem; display:inline-grid; place-items:center;
  color:var(--wh-muted); background:var(--wh-surface); border:1px solid var(--wh-border);
}
.theme-toggle:hover { color:var(--wh-primary); background:var(--wh-primary-soft); }
.lang-pills { display:flex; gap:.25rem; }
.lang-pills a { color:var(--wh-muted); font-weight:700; font-size:.72rem; padding:.2rem .42rem; border-radius:.45rem; }
.lang-pills a:hover, .lang-pills a.is-active { color:var(--wh-primary); background:var(--wh-primary-soft); text-decoration:none; }

/* ---------- Hero / public content ---------- */
.hero {
  position:relative; overflow:hidden;
  background:
    radial-gradient(circle at 15% 15%, rgba(255,255,255,.16), transparent 28%),
    radial-gradient(circle at 85% 20%, rgba(215,166,91,.18), transparent 24%),
    linear-gradient(135deg, #0c5d56 0%, #137f73 55%, #1f9b8c 100%);
}
.hero::after {
  content:""; position:absolute; width:420px; height:420px; border:1px solid rgba(255,255,255,.12);
  border-radius:50%; right:-180px; bottom:-260px;
}
.hero h1 { color:#fff; font-weight:800; letter-spacing:-.04em; }
.hero-text { color:rgba(255,255,255,.8); }
.hero-search {
  border:1px solid rgba(255,255,255,.45);
  box-shadow:0 22px 50px rgba(3,43,39,.22);
  border-radius:1rem;
}
.category-tile, .card { transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.category-tile:hover, .card:hover { transform: translateY(-3px); box-shadow:var(--wh-shadow); border-color:color-mix(in srgb, var(--wh-primary) 28%, var(--wh-border)); }
.card-media { background: var(--wh-surface-muted); }
.card-title, .card-title a { color: var(--wh-text); }
.card-text, .card-meta, .card-eyebrow { color: var(--wh-muted); }
.chip { background:var(--wh-surface-muted); color:var(--wh-muted); border:1px solid var(--wh-border); }

/* ---------- Backend shell ---------- */
body.backend { background: var(--wh-bg); }
.app-bar {
  position:sticky; top:0; z-index:1040; min-height:64px;
  background:color-mix(in srgb, var(--wh-surface) 94%, transparent);
  border-bottom:1px solid var(--wh-border);
  color:var(--wh-text);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  box-shadow:0 4px 18px rgba(15,23,42,.035);
}
.app-bar-inner {
  max-width:1440px; min-height:64px; margin-inline:auto; padding:.55rem 1rem;
  display:flex; align-items:center; gap:.75rem;
}
@media (min-width:992px){ .app-bar-inner { padding-inline:1.5rem; } }
.app-brand-modern { display:flex; align-items:center; gap:.65rem; min-width:0; color:var(--wh-text); font-weight:800; }
.app-brand-modern:hover { color:var(--wh-text); text-decoration:none; }
.app-brand-modern small { display:block; color:var(--wh-muted); font-size:.68rem; font-weight:500; }
.app-bar-actions { margin-left:auto; display:flex; align-items:center; gap:.45rem; }
.app-bar .dropdown-menu { min-width:220px; border-color:var(--wh-border); box-shadow:var(--wh-shadow); border-radius:.85rem; padding:.45rem; }
.app-bar .dropdown-item { border-radius:.55rem; padding:.55rem .7rem; }
.app-bar .dropdown-item:hover { background:var(--wh-primary-soft); color:var(--wh-primary); }
.app-user-button { display:flex; align-items:center; gap:.5rem; border:0; background:transparent; color:var(--wh-text); padding:.28rem .35rem; border-radius:.7rem; }
.app-user-button:hover { background:var(--wh-surface-muted); }
.user-avatar {
  width:34px; height:34px; display:grid; place-items:center; border-radius:10px;
  color:#fff; background:linear-gradient(135deg,var(--wh-primary),#37a697); font-size:.8rem; font-weight:800;
}

body.backend .dash {
  display:grid; grid-template-columns:minmax(0,1fr); gap:1.25rem;
  max-width:1440px; margin-inline:auto;
}
@media (min-width:992px){
  body.backend .dash { grid-template-columns:270px minmax(0,1fr); gap:1.5rem; }
}

.dashboard-sidebar {
  --bs-offcanvas-width: 286px;
  background:var(--wh-sidebar-bg) !important;
  color:var(--wh-sidebar-text);
  border:0 !important;
  border-radius:0;
}
@media (min-width:992px){
  .dashboard-sidebar { position:sticky !important; top:82px !important; align-self:start; height:calc(100vh - 100px); border-radius:1rem !important; overflow:hidden; box-shadow:var(--wh-shadow); }
}
.dashboard-sidebar .offcanvas-header { border-bottom:1px solid rgba(255,255,255,.08); }
.dashboard-sidebar .offcanvas-title { color:#fff; font-size:.95rem; }
.dashboard-sidebar .btn-close { filter:invert(1) grayscale(1); opacity:.75; }
.dashboard-sidebar .offcanvas-body { padding:.75rem; display:block; overflow-y:auto; }
.dashboard-sidebar .sidebar-kicker {
  color:#738199; text-transform:uppercase; font-size:.65rem; font-weight:800; letter-spacing:.12em;
  margin:1rem .7rem .45rem;
}
.dashboard-sidebar .nav-link {
  display:flex; align-items:center; justify-content:space-between; gap:.6rem;
  color:var(--wh-sidebar-text); border-radius:.65rem; padding:.62rem .7rem; font-size:.875rem; font-weight:600;
}
.dashboard-sidebar .nav-link .nav-label { display:flex; align-items:center; gap:.7rem; min-width:0; }
.dashboard-sidebar .nav-link i { width:20px; text-align:center; font-size:1rem; opacity:.88; }
.dashboard-sidebar .nav-link:hover { color:#fff; background:rgba(255,255,255,.07); text-decoration:none; }
.dashboard-sidebar .nav-link.active { color:#fff; background:linear-gradient(135deg, rgba(19,127,115,.96), rgba(48,160,145,.92)); box-shadow:0 8px 20px rgba(0,0,0,.16); }
.dashboard-sidebar .nav-badge { min-width:22px; height:22px; display:grid; place-items:center; border-radius:999px; padding:0 .35rem; background:rgba(255,255,255,.12); color:#fff; font-size:.68rem; }
.dashboard-sidebar .nav-link.active .nav-badge { background:rgba(255,255,255,.2); }
.dashboard-sidebar .context-banner { background:rgba(215,166,91,.12); border:1px solid rgba(215,166,91,.2); color:#f0d6a8; border-radius:.75rem; padding:.75rem; margin:.5rem 0 .75rem; }
.dashboard-sidebar .context-banner p { color:#bda982; }
.dashboard-sidebar .context-banner strong { color:#fff; }
.dashboard-sidebar .context-banner a { color:#f0d6a8; }

.backend-main { min-width:0; }
.dashboard-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-bottom:1.35rem; }
.dashboard-heading h1 { margin:0 0 .25rem; }
.dashboard-heading p { margin:0; }
.dashboard-heading-actions { display:flex; gap:.5rem; flex-wrap:wrap; }
.eyebrow {
  color:var(--wh-primary); text-transform:uppercase; font-size:.7rem; font-weight:800; letter-spacing:.12em; margin-bottom:.45rem;
}

/* ---------- KPI widgets ---------- */
.stat-grid, .kpi-grid {
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.85rem; margin-bottom:1.35rem;
}
@media(min-width:768px){ .stat-grid,.kpi-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(min-width:1200px){ .stat-grid,.kpi-grid { grid-template-columns:repeat(5,minmax(0,1fr)); } }
.stat, .kpi-card {
  position:relative; min-width:0; overflow:hidden;
  background:var(--wh-surface); border:1px solid var(--wh-border); border-radius:var(--wh-radius-lg); box-shadow:var(--wh-shadow-sm); padding:1rem;
}
.stat::after, .kpi-card::after {
  content:""; position:absolute; width:70px; height:70px; border-radius:50%; right:-30px; top:-30px;
  background:rgba(var(--wh-primary-rgb),.08);
}
.stat strong, .kpi-value { display:block; color:var(--wh-text); font-size:1.75rem; line-height:1.1; font-weight:800; font-family:inherit; letter-spacing:-.04em; }
.stat span, .kpi-label { display:block; margin-top:.35rem; color:var(--wh-muted); font-size:.76rem; font-weight:600; }
.kpi-head { display:flex; align-items:center; justify-content:space-between; gap:.75rem; margin-bottom:.85rem; }
.kpi-icon { width:38px; height:38px; display:grid; place-items:center; border-radius:.7rem; color:var(--wh-primary); background:var(--wh-primary-soft); font-size:1rem; }
.kpi-trend { font-size:.7rem; color:#198754; font-weight:700; }

/* ---------- Charts ---------- */
.chart-card { min-height:360px; }
.chart-wrap { position:relative; height:270px; }
.chart-legend-list { display:grid; gap:.65rem; }
.chart-legend-item { display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding:.6rem 0; border-bottom:1px solid var(--wh-border); }
.chart-legend-item:last-child { border-bottom:0; }
.legend-dot { width:9px; height:9px; border-radius:50%; background:var(--wh-primary); flex:0 0 auto; }

/* ---------- Tables ---------- */
.table-wrap {
  overflow-x:auto; background:var(--wh-surface); border:1px solid var(--wh-border); border-radius:var(--wh-radius-lg); box-shadow:var(--wh-shadow-sm);
}
table.data { width:100%; margin:0; border-collapse:separate; border-spacing:0; color:var(--wh-text); font-size:.86rem; }
table.data thead th {
  color:var(--wh-muted); background:var(--wh-surface-muted); font-size:.69rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  border-bottom:1px solid var(--wh-border); padding:.78rem .9rem; white-space:nowrap;
}
table.data tbody td { color:var(--wh-text); border-bottom:1px solid var(--wh-border); padding:.78rem .9rem; vertical-align:middle; background:var(--wh-surface); }
table.data tbody tr:last-child td { border-bottom:0; }
table.data tbody tr:hover td { background:color-mix(in srgb,var(--wh-primary) 4%,var(--wh-surface)); }
table.data td.actions { text-align:right; white-space:nowrap; }
body.backend table.data td.actions { display:table-cell; }
body.backend table.data td.actions .btn { margin-left:.25rem; }

.section-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:1.5rem 0 .8rem; }
.section-head h2 { margin:0; }
.list-head { background:var(--wh-surface); border:1px solid var(--wh-border); border-radius:.85rem; padding:.7rem; }

/* ---------- Forms ---------- */
.field { margin-bottom:1rem; }
.field > label, .field > legend, .field > .label, .field > summary {
  color:var(--wh-text); font-size:.79rem; font-weight:700; margin-bottom:.4rem;
}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=search],
input[type=number],input[type=date],input[type=url],select,textarea,
.form-control,.form-select {
  min-height:43px; width:100%; padding:.58rem .75rem; color:var(--wh-text); background:var(--wh-surface); border:1px solid var(--wh-border); border-radius:.7rem; font:inherit; font-size:.9rem;
  transition:border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
textarea { min-height:110px; }
input:focus,select:focus,textarea:focus,.form-control:focus,.form-select:focus {
  color:var(--wh-text); background:var(--wh-surface); border-color:color-mix(in srgb,var(--wh-primary) 65%,#fff); box-shadow:0 0 0 .2rem rgba(var(--wh-primary-rgb),.13); outline:0;
}
.form-text { color:var(--wh-muted); }
.form-row { display:grid; grid-template-columns:1fr; gap:0 .9rem; }
@media(min-width:700px){ .form-row { grid-template-columns:repeat(2,minmax(0,1fr)); } .form-row-3{grid-template-columns:repeat(3,minmax(0,1fr));} }
.check { color:var(--wh-text); gap:.55rem; }
.check input { accent-color:var(--wh-primary); }
.form-check-input:checked { background-color:var(--wh-primary); border-color:var(--wh-primary); }
.form-switch .form-check-input:focus { box-shadow:0 0 0 .2rem rgba(var(--wh-primary-rgb),.13); }

.panel { overflow:hidden; margin-bottom:1rem; }
.panel > summary { background:var(--wh-surface); padding:.9rem 1rem; color:var(--wh-text); }
.panel[open] > summary { border-bottom:1px solid var(--wh-border); }
.panel .form { padding:1rem; }
.editor { background:var(--wh-surface); border-color:var(--wh-border); }
.editor-bar { background:var(--wh-surface-muted); border-color:var(--wh-border); }
.editor-btn { color:var(--wh-muted); }
.editor-btn:hover { background:var(--wh-primary-soft); color:var(--wh-primary); }
.datepicker { background:var(--wh-surface); border-color:var(--wh-border); color:var(--wh-text); }

/* ---------- Wizard ---------- */
.wizard-card { padding:0; overflow:hidden; }
.wizard-steps { display:grid; grid-template-columns:repeat(3,1fr); background:var(--wh-surface-muted); border-bottom:1px solid var(--wh-border); }
.wizard-step {
  position:relative; border:0; background:transparent; padding:1rem .6rem; color:var(--wh-muted); font-size:.76rem; font-weight:750; text-align:center;
}
.wizard-step .step-no {
  width:28px; height:28px; display:inline-grid; place-items:center; margin-right:.35rem; border-radius:50%; background:var(--wh-surface); border:1px solid var(--wh-border); color:var(--wh-muted);
}
.wizard-step.is-active { color:var(--wh-primary); }
.wizard-step.is-active .step-no { background:var(--wh-primary); border-color:var(--wh-primary); color:#fff; box-shadow:0 5px 14px rgba(var(--wh-primary-rgb),.22); }
.wizard-step.is-complete { color:#198754; }
.wizard-step.is-complete .step-no { background:#198754; border-color:#198754; color:#fff; }
.wizard-pane { display:none; padding:1.35rem; }
.wizard-pane.is-active { display:block; }
.wizard-actions { display:flex; align-items:center; justify-content:space-between; gap:.75rem; margin-top:1.25rem; padding-top:1rem; border-top:1px solid var(--wh-border); }
.wizard-review { display:grid; gap:.75rem; }
.wizard-review-item { display:flex; justify-content:space-between; gap:1rem; padding:.75rem; background:var(--wh-surface-muted); border:1px solid var(--wh-border); border-radius:.75rem; }
@media(max-width:575.98px){ .wizard-step .step-text{display:none;} .wizard-step .step-no{margin:0;} }

/* ---------- Quote marketplace ---------- */
.quote-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:1rem; }
@media(min-width:1000px){ .quote-layout { grid-template-columns:minmax(0,1fr) 340px; align-items:start; } .quote-summary{position:sticky;top:92px;} }
.quote-summary-row { padding:.75rem 0; border-bottom:1px solid var(--wh-border); }
.quote-summary-row strong { display:block; color:var(--wh-text); }
.quote-summary-row span { display:block; color:var(--wh-muted); font-size:.8rem; margin-top:.15rem; }

/* ---------- Images / galleries ---------- */
.image-tile,.thumb img,.mini-gallery a { border-radius:.75rem; }
.image-tile { background:var(--wh-surface-muted); border-color:var(--wh-border); }
.image-tile.is-cover { border-color:var(--wh-primary); box-shadow:0 0 0 2px rgba(var(--wh-primary-rgb),.12); }
.cover-flag { background:var(--wh-primary); }

/* ---------- Footer ---------- */
.site-footer { margin-top:3rem; background:var(--wh-surface); border-top:1px solid var(--wh-border); }
.site-footer h3 { color:var(--wh-text); }
.site-footer a { color:var(--wh-muted); }
.site-footer a:hover { color:var(--wh-primary); }
.footer-bottom { border-color:var(--wh-border); }
.app-foot { margin-top:2rem; border-top:1px solid var(--wh-border); padding:1rem 0; background:var(--wh-surface); }

/* ---------- Empty state / misc ---------- */
.empty-state { padding:2.5rem 1.25rem; }
.context-banner { background:var(--wh-primary-soft); border-color:color-mix(in srgb,var(--wh-primary) 25%,var(--wh-border)); }
.pagination .page { background:var(--wh-surface); color:var(--wh-muted); border:1px solid var(--wh-border); box-shadow:none; }
.pagination .page.is-active { background:var(--wh-primary); color:#fff; border-color:var(--wh-primary); }

/* ---------- Dark mode fixes for legacy components ---------- */
[data-bs-theme="dark"] .card,
[data-bs-theme="dark"] .filters,
[data-bs-theme="dark"] .panel,
[data-bs-theme="dark"] .table-wrap,
[data-bs-theme="dark"] .stat,
[data-bs-theme="dark"] .service-block,
[data-bs-theme="dark"] .empty-state,
[data-bs-theme="dark"] .category-tile { background:var(--wh-surface); color:var(--wh-text); }
[data-bs-theme="dark"] .hero-search { background:var(--wh-surface); }
[data-bs-theme="dark"] .hero-search input,
[data-bs-theme="dark"] .hero-search select { color:var(--wh-text); }
[data-bs-theme="dark"] .btn-close { filter:invert(1) grayscale(1); }
[data-bs-theme="dark"] .dropdown-menu { --bs-dropdown-bg:var(--wh-surface); --bs-dropdown-color:var(--wh-text); --bs-dropdown-link-color:var(--wh-text); --bs-dropdown-border-color:var(--wh-border); }

/* ---------- Responsive ---------- */
@media(max-width:991.98px){
  body.backend .section { padding-top:1rem; }
  .dashboard-heading { margin-top:.25rem; }
  .app-brand-modern small { display:none; }
}
@media(max-width:767.98px){
  .stat-grid,.kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stat strong,.kpi-value { font-size:1.45rem; }
  .card.pad,.ui-card { padding:1rem; }
  .section { padding-block:1.4rem; }
  .portal-utility .tagline-utility { display:none; }
}
@media(max-width:520px){
  .stat-grid,.kpi-grid { grid-template-columns:1fr 1fr; gap:.65rem; }
  .brand-subtitle { display:none; }
}

@media print {
  .portal-utility,.portal-navbar,.app-bar,.dashboard-sidebar,.app-foot,.site-footer,.theme-toggle,.btn { display:none !important; }
  body { background:#fff !important; color:#000 !important; }
  .card,.ui-card,.table-wrap { box-shadow:none !important; border:1px solid #ccc !important; }
}

/* ---------- v2.5 Background Manager ---------- */
.background-jumpbar {
  display:flex; flex-wrap:wrap; gap:.55rem; margin:1rem 0 2rem;
}
.background-jumpbar a {
  display:inline-flex; align-items:center; gap:.45rem; padding:.58rem .78rem;
  border:1px solid var(--wh-border); border-radius:.7rem; background:var(--wh-surface);
  color:var(--wh-text); font-size:.78rem; font-weight:700; text-decoration:none;
}
.background-jumpbar a:hover { color:var(--wh-primary); border-color:color-mix(in srgb,var(--wh-primary) 38%,var(--wh-border)); background:var(--wh-primary-soft); }
.background-admin-section { scroll-margin-top:90px; margin:0 0 3rem; }
.background-admin-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.background-admin-card {
  overflow:hidden; border:1px solid var(--wh-border); border-radius:var(--wh-radius-lg);
  background:var(--wh-surface); box-shadow:var(--wh-shadow-sm);
}
.background-preview {
  min-height:210px; position:relative; display:grid; place-items:center;
  background:linear-gradient(135deg,var(--wh-surface-muted),color-mix(in srgb,var(--wh-primary) 7%,var(--wh-surface)));
  background-size:cover; background-repeat:no-repeat;
}
.background-empty { display:flex; flex-direction:column; align-items:center; gap:.55rem; color:var(--wh-muted); font-size:.78rem; }
.background-empty i { font-size:2rem; opacity:.6; }
.background-preview-badge {
  position:absolute; right:.65rem; bottom:.65rem; padding:.28rem .48rem; border-radius:999px;
  background:rgba(12,20,19,.7); color:#fff; font-size:.64rem; font-weight:800; letter-spacing:.03em;
  backdrop-filter:blur(8px);
}
.background-admin-body { padding:1rem; }
.background-admin-body h3 { margin:0 0 .35rem; font-size:1rem; }
.background-admin-body > p { min-height:2.6em; margin:0 0 .9rem; color:var(--wh-muted); font-size:.76rem; line-height:1.55; }
.background-form input[type="file"] { padding:.45rem; }
.background-form input[type="range"] { min-height:auto; padding:0; accent-color:var(--wh-primary); }
.hotel-hero-manager-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.hotel-hero-manager-card { overflow:hidden; border:1px solid var(--wh-border); border-radius:var(--wh-radius-lg); background:var(--wh-surface); box-shadow:var(--wh-shadow-sm); }
.hotel-hero-preview { min-height:165px; display:grid; place-items:center; padding:1rem; background:linear-gradient(135deg,var(--wh-sidebar-bg),var(--wh-primary)); background-size:cover; background-repeat:no-repeat; color:#fff; text-align:center; }
.hotel-hero-preview span { display:flex; flex-direction:column; align-items:center; gap:.45rem; font-size:.72rem; font-weight:700; text-shadow:0 1px 8px rgba(0,0,0,.3); }
.hotel-hero-preview i { font-size:1.6rem; }
@media (max-width:1199.98px) { .hotel-hero-manager-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:991.98px) { .background-admin-grid { grid-template-columns:1fr; } }
@media (max-width:767.98px) { .hotel-hero-manager-grid { grid-template-columns:1fr; } .background-preview { min-height:180px; } }

/* ---------- v2.6 Hotel / room amenities ---------- */
.check-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.55rem .75rem; margin:.5rem 0 1rem; }
.check-grid .check { margin:0; padding:.68rem .75rem; border:1px solid var(--wh-border); border-radius:.75rem; background:var(--wh-surface-muted); }
.check-grid .check:has(input:checked) { border-color:color-mix(in srgb,var(--wh-primary) 45%,var(--wh-border)); background:var(--wh-primary-soft); }
.room-amenity-selector { margin:1rem 0; }
.room-feature-chips .chip i { margin-right:.28rem; }
.mt-3 { margin-top:1rem !important; }
.mt-4 { margin-top:1.5rem !important; }
.mb-4 { margin-bottom:1.5rem !important; }
.align-end { align-items:end; }
.text-success { color:#198754 !important; }
@media(max-width:991.98px){ .check-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:575.98px){ .check-grid { grid-template-columns:1fr; } }
