/* Resca product design system shared by every application surface. */
:root {
  --resca-ink: #17151f;
  --resca-ink-soft: #4e4a59;
  --resca-muted: #746f7f;
  --resca-canvas: #f7f7f9;
  --resca-surface: #fff;
  --resca-surface-soft: #f1f0f4;
  --resca-border: #e6e3ea;
  --resca-border-strong: #d4d0da;
  --resca-primary: #5b45e0;
  --resca-primary-hover: #4934c4;
  --resca-primary-soft: #f0edff;
  --resca-success: #138a5b;
  --resca-warning: #a86100;
  --resca-danger: #ca3652;
  --resca-radius-sm: .625rem;
  --resca-radius: .875rem;
  --resca-shadow-sm: 0 1px 2px rgba(23, 21, 31, .04), 0 4px 14px rgba(23, 21, 31, .04);
  --resca-shadow: 0 12px 32px rgba(23, 21, 31, .08);
  --resca-focus: 0 0 0 .24rem rgba(91, 69, 224, .16);
  --resca-ease: cubic-bezier(.2, .8, .2, 1);
  --bs-primary: var(--resca-primary);
  --bs-primary-rgb: 91, 69, 224;
  --bs-body-color: var(--resca-ink);
  --bs-body-bg: var(--resca-canvas);
  --bs-border-color: var(--resca-border);
  --bs-link-color: var(--resca-primary);
  --bs-link-hover-color: var(--resca-primary-hover);
  color-scheme: light;
}

html { scroll-behavior: smooth; background: var(--resca-canvas); }
body {
  color: var(--resca-ink);
  background: var(--resca-canvas);
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: .9375rem;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
body, button, input, select, textarea { letter-spacing: -.006em; }
h1, h2, h3, h4, h5, h6, .block-title { color: var(--resca-ink); letter-spacing: -.025em; }
h1, .h1 { font-weight: 760; }
a { text-underline-offset: .18em; }

/* Consistent page rhythm */
#main-container { min-width: 0; }
#main-container > .content,
#main-container > .content.content-full { padding-top: 1.5rem; padding-bottom: 1.5rem; }
.bg-body-light { background: transparent !important; }
.bg-body-light > .content:first-child { padding-bottom: .5rem; }
.content > :last-child { margin-bottom: 0; }

/* Calm surfaces with clear hierarchy */
.block, .card, .modal-content, .offcanvas, .dropdown-menu {
  border: 1px solid var(--resca-border);
  border-radius: var(--resca-radius);
  background-color: var(--resca-surface);
  box-shadow: var(--resca-shadow-sm);
}
.block { margin-bottom: 1.25rem; }
.block.block-rounded { border-radius: var(--resca-radius); }
.block-header, .card-header {
  min-height: 3.75rem;
  padding: .875rem 1.125rem;
  border-bottom: 1px solid var(--resca-border);
  background: var(--resca-surface) !important;
}
.block-header-default { background: var(--resca-surface) !important; }
.block-title { font-size: .96rem; font-weight: 720; }
.block-content { padding-right: 1.125rem; padding-left: 1.125rem; }
.block-content-full { padding-top: 1.125rem; padding-bottom: 1.125rem; }
.modal-header, .modal-footer { border-color: var(--resca-border); }
.modal-content { overflow: hidden; box-shadow: 0 24px 70px rgba(23, 21, 31, .18); }
.dropdown-menu { padding: .45rem; box-shadow: var(--resca-shadow); }
.dropdown-item { padding: .6rem .75rem; border-radius: .55rem; }
.dropdown-item:hover, .dropdown-item:focus { color: var(--resca-ink); background: var(--resca-surface-soft); }

/* One visually dominant primary action; secondary actions stay quiet. */
.btn {
  min-height: 2.65rem;
  padding: .55rem .9rem;
  border-radius: var(--resca-radius-sm);
  font-weight: 680;
  transition: color .16s var(--resca-ease), background-color .16s var(--resca-ease), border-color .16s var(--resca-ease), box-shadow .16s var(--resca-ease), transform .16s var(--resca-ease);
}
.btn-sm, .btn-group-sm > .btn { min-height: 2.15rem; padding: .38rem .65rem; border-radius: .5rem; }
.btn-lg { min-height: 3.15rem; padding: .72rem 1.15rem; }
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.btn-primary, .btn-primary:focus {
  border-color: var(--resca-primary);
  color: #fff;
  background: var(--resca-primary);
  box-shadow: 0 6px 16px rgba(91, 69, 224, .19);
}
.btn-primary:hover, .btn-primary:active { border-color: var(--resca-primary-hover) !important; background: var(--resca-primary-hover) !important; }
.btn-alt-primary { border-color: #dcd6ff; color: var(--resca-primary); background: var(--resca-primary-soft); }
.btn-alt-primary:hover { border-color: #cec6ff; color: var(--resca-primary-hover); background: #e7e2ff; }
.btn-alt-secondary, .btn-secondary { border-color: var(--resca-border); color: var(--resca-ink-soft); background: var(--resca-surface); }
.btn-alt-secondary:hover, .btn-secondary:hover { border-color: var(--resca-border-strong); color: var(--resca-ink); background: var(--resca-surface-soft); }
.btn-alt-success { border-color: #ccebdd; color: var(--resca-success); background: #edf9f3; }
.btn-alt-danger { border-color: #f2ced5; color: var(--resca-danger); background: #fff1f4; }
.btn-alt-warning { border-color: #f1dfc2; color: var(--resca-warning); background: #fff8e9; }
.btn[disabled], .btn.disabled { transform: none; box-shadow: none; cursor: not-allowed; }

/* Forms */
.form-label { margin-bottom: .42rem; color: var(--resca-ink-soft); font-size: .82rem; font-weight: 680; }
.form-control, .form-select, .input-group-text {
  min-height: 2.75rem;
  border-color: var(--resca-border-strong);
  border-radius: var(--resca-radius-sm);
  color: var(--resca-ink);
  background-color: var(--resca-surface);
  transition: border-color .16s var(--resca-ease), box-shadow .16s var(--resca-ease), background-color .16s var(--resca-ease);
}
.form-control:hover, .form-select:hover { border-color: #bdb7c5; }
.form-control:focus, .form-select:focus, .form-check-input:focus { border-color: var(--resca-primary); box-shadow: var(--resca-focus); }
.form-control::placeholder { color: #9a95a2; }
textarea.form-control { min-height: 7rem; }
.input-group > .form-control:not(:first-child), .input-group > .form-select:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.input-group > .form-control:not(:last-child), .input-group > .form-select:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.form-check-input:checked { border-color: var(--resca-primary); background-color: var(--resca-primary); }
.form-text { color: var(--resca-muted); }

/* Dense data remains readable without looking like a spreadsheet. */
.table-responsive { border-radius: calc(var(--resca-radius) - .15rem); }
.table { margin-bottom: 0; color: var(--resca-ink); }
.table > :not(caption) > * > * { padding: .85rem .8rem; border-bottom-color: var(--resca-border); vertical-align: middle; }
.table > thead > tr > th {
  border-top: 0;
  color: var(--resca-muted);
  background: #faf9fb;
  font-size: .72rem;
  font-weight: 760;
  letter-spacing: .035em;
  text-transform: uppercase;
  white-space: nowrap;
}
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: transparent; }
.table-hover > tbody > tr:hover > *, .table > tbody > tr:hover > * { background: #faf9fc; }
.table a:not(.btn) { font-weight: 650; text-decoration: none; }

/* Feedback and statuses */
.badge { padding: .4em .65em; border-radius: 999px; font-weight: 680; letter-spacing: 0; }
.alert { border: 1px solid currentColor; border-radius: var(--resca-radius); box-shadow: none; }
.alert-success { color: #0b6944; background: #edf9f3; border-color: #ccebdd; }
.alert-danger { color: #a1263f; background: #fff1f4; border-color: #f2ced5; }
.alert-warning { color: #8d5100; background: #fff8e9; border-color: #f1dfc2; }
.pagination { gap: .25rem; }
.page-link { min-width: 2.35rem; border: 0; border-radius: .55rem !important; color: var(--resca-ink-soft); text-align: center; }
.page-link:hover { color: var(--resca-primary); background: var(--resca-primary-soft); }
.active > .page-link, .page-link.active { color: #fff; background: var(--resca-primary); }
.nav-tabs { gap: .25rem; border-color: var(--resca-border); }
.nav-tabs .nav-link { border: 0; border-bottom: 2px solid transparent; color: var(--resca-muted); font-weight: 650; }
.nav-tabs .nav-link:hover, .nav-tabs .nav-link.active { border-bottom-color: var(--resca-primary); color: var(--resca-primary); background: transparent; }

/* Navigation */
#page-header { border-bottom: 1px solid var(--resca-border); box-shadow: 0 2px 16px rgba(23, 21, 31, .035); }
#sidebar { border-right: 1px solid rgba(255, 255, 255, .06); }
.nav-main-link { margin: .14rem 0; border-radius: .6rem; transition: color .14s ease, background-color .14s ease, transform .14s ease; }
.nav-main-link:hover { transform: translateX(2px); }
.nav-main-link.active { font-weight: 680; }
.nav-main-heading { margin-top: .75rem; font-size: .68rem; font-weight: 760; letter-spacing: .07em; }
.client-portal { --client-primary: var(--resca-primary); --client-text: var(--resca-ink); --client-muted: var(--resca-muted); --client-border: var(--resca-border); background: var(--resca-canvas); }
.client-portal .nav-main-link.active,
.client-portal .nav-main-link:hover { color: var(--resca-primary); background: var(--resca-primary-soft); }
.client-portal .nav-main-link.active .nav-main-link-icon,
.client-portal .nav-main-link:hover .nav-main-link-icon { color: var(--resca-primary); }
.client-portal .client-new-booking { border-color: var(--resca-primary); background: var(--resca-primary); }

/* Empty and loading states */
td.text-center.text-muted.py-4 { padding: 3.5rem 1rem !important; color: var(--resca-muted) !important; }
form.is-submitting { cursor: progress; }
form.is-submitting [type="submit"] { pointer-events: none; opacity: .78; }
form.is-submitting [type="submit"].is-submit-source::after {
  display: inline-block;
  width: .85rem;
  height: .85rem;
  margin-left: .5rem;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  content: "";
  vertical-align: -.1em;
  animation: resca-spin .65s linear infinite;
}
@keyframes resca-spin { to { transform: rotate(360deg); } }

@media (hover: none) {
  .btn:hover, .nav-main-link:hover { transform: none; }
  .btn, .form-control, .form-select { min-height: 2.875rem; }
}
@media (max-width: 767.98px) {
  body { font-size: .925rem; }
  #main-container > .content, #main-container > .content.content-full { padding: 1rem; }
  .bg-body-light > .content:first-child { align-items: flex-start !important; flex-direction: column; gap: .75rem; }
  .bg-body-light > .content:first-child > .space-x-1 { display: flex; width: 100%; gap: .5rem; overflow-x: auto; padding-bottom: .2rem; scrollbar-width: none; }
  .bg-body-light > .content:first-child > .space-x-1::-webkit-scrollbar { display: none; }
  .bg-body-light > .content:first-child > .space-x-1 > * { flex: 0 0 auto; margin: 0 !important; }
  .block-header { align-items: flex-start; gap: .65rem; }
  .block-options { display: flex; flex-wrap: wrap; justify-content: flex-end; }
  .block-content { padding-right: .9rem; padding-left: .9rem; }
  .table > :not(caption) > * > * { padding: .72rem .65rem; }
  .modal-dialog { margin: .65rem; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* Dark mode keeps the same hierarchy and interaction language. */
html.dark {
  --resca-ink: #f3f1f6;
  --resca-ink-soft: #cbc6d1;
  --resca-muted: #a59fab;
  --resca-canvas: #17151d;
  --resca-surface: #211f28;
  --resca-surface-soft: #2b2832;
  --resca-border: #38343f;
  --resca-border-strong: #4b4653;
  --resca-primary: #9c8cff;
  --resca-primary-hover: #b0a4ff;
  --resca-primary-soft: #302a55;
  --bs-body-color: var(--resca-ink);
  --bs-body-bg: var(--resca-canvas);
  color-scheme: dark;
}
html.dark .table > thead > tr > th { background: #26232c; }
html.dark .table-hover > tbody > tr:hover > *, html.dark .table > tbody > tr:hover > * { background: #292631; }
html.dark .form-control, html.dark .form-select, html.dark .input-group-text { color: var(--resca-ink); background-color: var(--resca-surface); }
html.dark .dropdown-item:hover, html.dark .dropdown-item:focus { color: var(--resca-ink); }
