:root {
  --rc-bg: #f6f7fb;
  --rc-surface: #ffffff;
  --rc-border: rgba(15, 23, 42, 0.08);
  --rc-text: #0f172a;
  --rc-muted: rgba(15, 23, 42, 0.65);
  --rc-radius: 14px;
  --rc-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
  --rc-shadow-sm: 0 6px 16px rgba(15, 23, 42, 0.06);
}

html, body {
  height: 100%;
}

body {
  background: var(--rc-bg);
  color: var(--rc-text);
}

/* Layout */
#wrapper {
  min-height: 100vh;
}

.sidebar {
  min-height: 100vh;
  width: 260px;
  background: linear-gradient(180deg, #0f172a 0%, #111827 100%) !important;
  color: #e5e7eb;
}

.sidebar .nav-link {
  color: rgba(229, 231, 235, 0.85);
  border-radius: 10px;
  padding: 0.55rem 0.75rem;
}

.sidebar .nav-link:hover {
  background: rgba(255, 255, 255, 0.08);
  color: #ffffff;
}

.sidebar .nav-link.active {
  background: rgba(255, 255, 255, 0.14);
  color: #ffffff;
  font-weight: 600;
}

#content {
  flex: 1;
  padding: 1.25rem;
}

/* Cards */
.card {
  border: 1px solid var(--rc-border);
  border-radius: var(--rc-radius);
  box-shadow: var(--rc-shadow-sm);
}

.card-header {
  border-top-left-radius: var(--rc-radius) !important;
  border-top-right-radius: var(--rc-radius) !important;
}

.card-kpi {
  overflow: hidden;
}

.card-kpi .card-body {
  padding: 1.05rem 1.1rem;
}

/* Tables */
.table {
  margin-bottom: 0;
}

.table thead th {
  font-weight: 600;
  color: rgba(15, 23, 42, 0.7);
}

.table-hover tbody tr:hover {
  background: rgba(15, 23, 42, 0.03);
}

/* Badges */
.badge {
  border-radius: 999px;
}

/* Buttons */
.btn {
  border-radius: 12px;
}

.btn-sm {
  border-radius: 10px;
}

/* Mobile */
@media (max-width: 992px) {
  .sidebar {
    width: 100%;
    min-height: auto;
  }

  #content {
    padding: 1rem;
  }
}

/* Property cards status stripe (dashboard) */
.property-card{
  position: relative;
  overflow: hidden;
}
.property-card::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:6px;
  background: var(--bs-border-color, #dee2e6);
  border-top-left-radius: 14px;
  border-bottom-left-radius: 14px;
}

/* Match dashboard statuses exactly */
.property-card.status-paid::before{ background: var(--bs-success, #198754); }
.property-card.status-pending::before{ background: var(--bs-info, #0dcaf0); }
.property-card.status-partial::before{ background: var(--bs-info, #0dcaf0); }
.property-card.status-partial_due::before{ background: var(--bs-warning, #ffc107); }
.property-card.status-due_soon::before{ background: var(--bs-warning, #ffc107); }    /* 5..0 zile */
.property-card.status-overdue::before{ background: var(--bs-danger, #dc3545); }      /* după scadență */
.property-card.status-partial_overdue::before{ background: var(--bs-danger, #dc3545); }
.property-card.status-vacant::before{ background: var(--bs-secondary, #6c757d); }
.property-card.status-neutral::before{ background: var(--bs-info, #0dcaf0); }        /* fallback */

/* Apartment detail layout */
.rc-apartment-page .rc-page-header{
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
}
.rc-apartment-page .rc-actions{
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
}
.rc-summary-card,
.rc-data-card{
  height: 100%;
}
.rc-component-table th,
.rc-component-table td{
  vertical-align: middle;
}
.rc-status-row.status-overdue,
.rc-status-row.status-partial_overdue{
  --bs-table-bg: rgba(220, 53, 69, .045);
}
.rc-status-row.status-partial{
  --bs-table-bg: rgba(13, 202, 240, .045);
}
.rc-status-row.status-partial_due,
.rc-status-row.status-due_soon{
  --bs-table-bg: rgba(255, 193, 7, .06);
}

@media (max-width: 767.98px) {
  .rc-apartment-page .rc-page-header{
    flex-direction: column;
  }
  .rc-apartment-page .rc-actions{
    width: 100%;
    justify-content: flex-start;
  }
}
/* =======================================================================
   Mobile-first hardening
   - Prevents unwanted horizontal scroll on phones
   - Ensures the sticky header stays full-width
   - Keeps wide tables/cards contained inside the content area
   ======================================================================= */

html, body {
  max-width: 100%;
  overflow-x: clip;
}

@supports not (overflow-x: clip) {
  html, body { overflow-x: hidden; }
}

/* Allow flex children (main content) to shrink; avoids layout overflow */
#content,
main#content,
.d-flex > #content,
.d-flex > main {
  min-width: 0;
}

/* Sticky header should always span the viewport */
.navbar.sticky-top {
  left: 0;
  right: 0;
  width: 100%;
}

/* Responsive sidebar sizing (Bootstrap offcanvas-lg) */
#sidebarOffcanvas {
  width: 260px;
}
@media (max-width: 991.98px) {
  #sidebarOffcanvas {
    width: min(85vw, 340px);
  }
}

/* Media never overflow the viewport */
img, svg, video, canvas {
  max-width: 100%;
  height: auto;
}

/* On small screens, let action rows and buttons wrap instead of forcing sideways scroll */
@media (max-width: 575.98px) {
  #content .d-flex { flex-wrap: wrap; }
  #content .btn,
  #content .nav-link { white-space: normal; }
  #content .btn { max-width: 100%; }
}

/* Tables inside flex layouts should not widen the page */
.table-responsive {
  max-width: 100%;
}

/* Regim Hotelier */
.rc-hotel-page .rc-page-header,
.rc-page-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:1rem;
}
.rc-hotel-page .rc-actions,
.rc-actions{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:.5rem;
  flex-wrap:wrap;
}
.rc-hotel-tabs{
  gap:.35rem;
  overflow-x:auto;
  flex-wrap:nowrap;
  padding-bottom:.25rem;
}
.rc-hotel-tabs .nav-link{
  border:1px solid var(--rc-border);
  background:var(--rc-surface);
  color:var(--rc-text);
  white-space:nowrap;
  border-radius:999px;
}
.rc-hotel-tabs .nav-link.active{
  border-color:rgba(13,110,253,.28);
  box-shadow:var(--rc-shadow-sm);
}
.rc-hotel-card,
.rc-hotel-occupancy-card,
.rc-filter-card{
  position:relative;
  overflow:hidden;
}
.rc-hotel-card::before,
.rc-hotel-occupancy-card::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:6px;
  background:rgba(13,110,253,.65);
}
.rc-hotel-mini-stat{
  padding:.75rem;
  border:1px solid var(--rc-border);
  border-radius:12px;
  background:rgba(15,23,42,.02);
}
.rc-chart-row + .rc-chart-row{
  margin-top:.85rem;
}
.rc-bar-track{
  height:.65rem;
  width:100%;
  border-radius:999px;
  background:rgba(15,23,42,.08);
  overflow:hidden;
}
.rc-bar{
  height:100%;
  min-width:0;
  border-radius:999px;
  background:rgba(13,110,253,.72);
}
@media (max-width: 767.98px){
  .rc-hotel-page .rc-page-header,
  .rc-page-header{
    flex-direction:column;
  }
  .rc-hotel-page .rc-actions,
  .rc-actions{
    width:100%;
    justify-content:flex-start;
  }
}

/* Regim Hotelier – enhanced dashboard/calendar */
.rc-data-card{
  overflow:hidden;
}
.rc-form-section{
  border:1px solid var(--rc-border);
  border-radius:14px;
  padding:1rem;
  background:rgba(15,23,42,.015);
}
.rc-check-card{
  padding:.75rem .85rem .75rem 2.2rem;
  border:1px solid var(--rc-border);
  border-radius:12px;
  background:#fff;
  min-height:46px;
}
.rc-check-card .form-check-input{
  margin-left:-1.45rem;
}
.rc-check-danger{
  border-color:rgba(220,53,69,.22);
  background:rgba(220,53,69,.04);
}
.rc-dashboard-apt{
  border:1px solid var(--rc-border);
  border-radius:14px;
  padding:1rem;
  background:#fff;
  min-height:116px;
  box-shadow:0 4px 14px rgba(15,23,42,.035);
}
.rc-notification{
  display:flex;
  gap:.8rem;
  text-decoration:none;
  color:inherit;
  padding:.85rem;
  border:1px solid var(--rc-border);
  border-radius:14px;
  background:#fff;
  margin-bottom:.65rem;
}
.rc-notification:hover{
  background:rgba(13,110,253,.035);
  border-color:rgba(13,110,253,.22);
}
.rc-notification-icon{
  width:36px;
  height:36px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(13,110,253,.09);
  color:#0d6efd;
  flex:0 0 36px;
}
.rc-notification-danger .rc-notification-icon{background:rgba(220,53,69,.10);color:#dc3545;}
.rc-notification-warning .rc-notification-icon{background:rgba(255,193,7,.18);color:#997404;}
.rc-notification-info .rc-notification-icon{background:rgba(13,202,240,.12);color:#087990;}
.rc-notification-success .rc-notification-icon{background:rgba(25,135,84,.12);color:#198754;}
.rc-task-row{
  border:1px solid var(--rc-border);
  border-radius:12px;
  padding:.75rem;
  background:#fff;
}
.rc-calendar-scroll{
  overflow:auto;
  max-width:100%;
}
.rc-calendar-table{
  min-width:980px;
}
.rc-calendar-table th,
.rc-calendar-table td{
  border-color:rgba(15,23,42,.08) !important;
}
.rc-calendar-apt-col{
  position:sticky;
  left:0;
  z-index:2;
  min-width:210px;
  background:#fff !important;
  box-shadow:8px 0 14px rgba(15,23,42,.04);
}
.rc-calendar-table thead .rc-calendar-apt-col{
  z-index:4;
}
.rc-calendar-cell{
  min-width:88px;
  height:54px;
  text-align:center;
  vertical-align:middle;
  font-size:.8rem;
  position:relative;
}
.rc-calendar-cell a{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  text-decoration:none;
  color:inherit;
  border-radius:8px;
  padding:.2rem;
}
.rc-calendar-cell.available{background:rgba(25,135,84,.045);}
.rc-calendar-cell.available a{color:#198754;}
.rc-calendar-cell.stay.checked_in{background:rgba(25,135,84,.18);font-weight:600;}
.rc-calendar-cell.stay.reserved{background:rgba(13,110,253,.14);font-weight:600;}
.rc-calendar-cell.stay.checked_out{background:rgba(108,117,125,.10);}
.rc-calendar-cell.stay.cancelled{background:rgba(108,117,125,.06);text-decoration:line-through;}
.rc-calendar-cell.blocked{background:rgba(220,53,69,.15);font-weight:600;color:#842029;}
.rc-calendar-cell.housekeeping{background:rgba(255,193,7,.18);font-weight:600;color:#997404;}
.rc-calendar-cell.maintenance{background:rgba(220,53,69,.17);font-weight:600;color:#842029;}
.rc-calendar-cell.rc-today,
.rc-calendar-table th.rc-today{
  box-shadow:inset 0 0 0 2px rgba(13,110,253,.22);
}
.rc-calendar-legend{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  padding:.25rem .55rem;
  border-radius:999px;
  border:1px solid var(--rc-border);
  background:#fff;
}
.rc-calendar-legend::before{
  content:"";
  width:.65rem;
  height:.65rem;
  border-radius:50%;
  background:rgba(25,135,84,.4);
}
.rc-calendar-legend.checked_in::before{background:rgba(25,135,84,.75);}
.rc-calendar-legend.reserved::before{background:rgba(13,110,253,.65);}
.rc-calendar-legend.blocked::before{background:rgba(220,53,69,.65);}
.rc-calendar-legend.needs_cleaning::before{background:rgba(255,193,7,.85);}
@media (max-width: 767.98px){
  .rc-calendar-table{min-width:760px;}
  .rc-calendar-apt-col{min-width:165px;}
  .rc-calendar-cell{min-width:72px;}
  .rc-notification{padding:.75rem;}
}
.rc-notification-secondary .rc-notification-icon{background:rgba(108,117,125,.12);color:#6c757d;}

/* Regim Hotelier dashboard apartment status badge fix
   Prevents the badge from stretching vertically inside the flex row. */
.rc-dashboard-apt > .d-flex {
  align-items: flex-start;
}

.rc-dashboard-apt .badge {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
  height: auto;
  min-height: 0;
  padding: .38rem .65rem;
  line-height: 1;
  white-space: nowrap;
}

/* Regim Hotelier calendar containment + compact professional layout
   Keeps the availability calendar inside its card/page and lets it scroll horizontally
   instead of widening the whole screen. */
.rc-hotel-page,
.rc-hotel-page .card,
.rc-hotel-page .rc-data-card {
  max-width: 100%;
  min-width: 0;
}

.rc-hotel-page {
  overflow-x: hidden;
}

.rc-calendar-scroll {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  border-bottom-left-radius: var(--rc-radius);
  border-bottom-right-radius: var(--rc-radius);
}

.rc-calendar-scroll::-webkit-scrollbar {
  height: 10px;
}

.rc-calendar-scroll::-webkit-scrollbar-track {
  background: rgba(15, 23, 42, .04);
  border-radius: 999px;
}

.rc-calendar-scroll::-webkit-scrollbar-thumb {
  background: rgba(15, 23, 42, .22);
  border-radius: 999px;
}

.rc-calendar-table {
  width: max-content;
  min-width: 100%;
  table-layout: fixed;
  white-space: nowrap;
}

.rc-calendar-table thead th {
  padding: .45rem .25rem;
  vertical-align: middle;
  white-space: nowrap;
}

.rc-calendar-table th:not(.rc-calendar-apt-col),
.rc-calendar-cell {
  width: 64px;
  min-width: 64px;
  max-width: 64px;
}

.rc-calendar-apt-col {
  width: 190px;
  min-width: 190px;
  max-width: 190px;
  white-space: normal;
}

.rc-calendar-apt-col a {
  display: inline-block;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.rc-calendar-apt-col .badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  max-width: 100%;
  min-height: 0;
  padding: .32rem .55rem;
  line-height: 1;
  white-space: nowrap;
  vertical-align: middle;
}

.rc-calendar-cell {
  height: 48px;
  padding: .25rem !important;
  font-size: .75rem;
}

.rc-calendar-cell a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 30px;
  min-height: 30px;
  max-width: 100%;
  padding: .2rem .28rem;
  border-radius: 999px;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rc-calendar-cell.available a {
  border: 1px solid rgba(25, 135, 84, .18);
  background: rgba(25, 135, 84, .07);
  color: #198754;
  font-weight: 600;
}

.rc-calendar-cell.stay a,
.rc-calendar-cell.blocked a,
.rc-calendar-cell.housekeeping a,
.rc-calendar-cell.maintenance a {
  font-weight: 700;
}

@media (max-width: 767.98px) {
  .rc-calendar-table th:not(.rc-calendar-apt-col),
  .rc-calendar-cell {
    width: 58px;
    min-width: 58px;
    max-width: 58px;
  }

  .rc-calendar-apt-col {
    width: 155px;
    min-width: 155px;
    max-width: 155px;
  }

  .rc-calendar-cell {
    height: 44px;
    font-size: .7rem;
  }

  .rc-calendar-cell a {
    height: 28px;
    min-height: 28px;
  }
}

/* Regim Hotelier cleanup UI polish
   - Keeps long housekeeping labels inside calendar cells
   - Adds compact mark-clean buttons
   - Stops hotel data cards from forcing empty vertical space when there is little information. */
.rc-hotel-page .rc-data-card,
.rc-hotel-page .rc-data-card.h-100 {
  height: auto !important;
  min-height: 0;
}

.rc-hotel-page .card.rc-data-card .card-body:empty {
  display: none;
}

.rc-calendar-cell.housekeeping a {
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: .68rem;
  letter-spacing: -.01em;
}

.rc-calendar-cell.housekeeping.needs_cleaning a {
  background: rgba(255, 193, 7, .22);
  border: 1px solid rgba(255, 193, 7, .34);
  color: #7a5a00;
}

.rc-housekeeping-badge {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rc-clean-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .2rem;
  line-height: 1;
  white-space: nowrap;
  box-shadow: none;
}

.rc-calendar-apt-col .rc-clean-btn {
  max-width: 100%;
  padding: .28rem .5rem;
  font-size: .72rem;
  border-radius: 999px;
}

.rc-dashboard-apt .rc-clean-btn,
.rc-hotel-card .rc-clean-btn {
  border-radius: 999px;
}

@media (max-width: 767.98px) {
  .rc-calendar-cell.housekeeping a {
    font-size: .64rem;
  }

  .rc-calendar-apt-col .rc-clean-btn {
    padding: .25rem .45rem;
    font-size: .68rem;
  }
}


/* Regim Hotelier booking/calendar micro-fixes
   - Row status in calendar no longer says available when the visible period has bookings.
   - Aligns the price/payment inputs even when one label wraps to two lines. */
.rc-calendar-row-status {
  margin-top: .25rem;
}

.rc-hotel-price-grid > [class*="col-"] {
  display: flex;
  flex-direction: column;
}

.rc-hotel-price-grid .form-label {
  min-height: 2.65rem;
  display: flex;
  align-items: flex-end;
  margin-bottom: .45rem;
  line-height: 1.25;
}

.rc-hotel-price-grid .form-control,
.rc-hotel-price-grid .form-select {
  margin-top: auto;
}

@media (max-width: 767.98px) {
  .rc-hotel-price-grid > [class*="col-"] {
    display: block;
  }

  .rc-hotel-price-grid .form-label {
    min-height: 0;
    display: block;
  }
}

/* Regim Hotelier – dashboard grouping, operating expenses and utilities */
.min-w-0 { min-width: 0 !important; }

/* Calendar: viitorul rezervat este portocaliu, iar check-in-ul activ este roșu. */
.rc-calendar-cell.stay.checked_in {
  background: rgba(220, 53, 69, .18);
  color: #842029;
  font-weight: 700;
}
.rc-calendar-cell.stay.checked_in a {
  background: rgba(220, 53, 69, .16);
  border: 1px solid rgba(220, 53, 69, .34);
  color: #842029;
}
.rc-calendar-cell.stay.reserved {
  background: rgba(253, 126, 20, .17);
  color: #8a3f08;
  font-weight: 700;
}
.rc-calendar-cell.stay.reserved a {
  background: rgba(253, 126, 20, .15);
  border: 1px solid rgba(253, 126, 20, .32);
  color: #8a3f08;
}
.rc-calendar-legend.checked_in::before { background: rgba(220, 53, 69, .82); }
.rc-calendar-legend.reserved::before { background: rgba(253, 126, 20, .82); }

/* Bookingurile următoare – o singură listă cronologică. */
.rc-upcoming-card .card-body { padding: .75rem; }
.rc-upcoming-list {
  display: flex;
  flex-direction: column;
  gap: .55rem;
}
.rc-upcoming-booking {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr) minmax(150px, auto) 20px;
  align-items: center;
  gap: .85rem;
  padding: .72rem .8rem;
  color: inherit;
  text-decoration: none;
  border: 1px solid var(--rc-border);
  border-left: 4px solid rgba(253, 126, 20, .65);
  border-radius: 14px;
  background: #fff;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.rc-upcoming-booking:hover {
  color: inherit;
  border-color: rgba(13, 110, 253, .26);
  box-shadow: 0 7px 18px rgba(15, 23, 42, .07);
  transform: translateY(-1px);
}
.rc-upcoming-booking.rc-upcoming-today { border-left-color: #dc3545; background: rgba(220, 53, 69, .025); }
.rc-upcoming-booking.rc-upcoming-tomorrow { border-left-color: #fd7e14; background: rgba(253, 126, 20, .025); }
.rc-upcoming-date {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 56px;
  padding: .35rem;
  border-radius: 12px;
  background: rgba(253, 126, 20, .10);
  line-height: 1.1;
}
.rc-upcoming-today .rc-upcoming-date { background: rgba(220, 53, 69, .10); color: #842029; }
.rc-upcoming-date strong { font-size: 1.05rem; margin: .15rem 0; }
.rc-upcoming-main { min-width: 0; }
.rc-upcoming-state {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .25rem;
  text-align: right;
}
.rc-upcoming-arrow { color: var(--rc-muted); }

/* Notificări grupate pe apartament și booking. */
.rc-notification-groups {
  display: flex;
  flex-direction: column;
  gap: .7rem;
}
.rc-notification-group {
  border: 1px solid var(--rc-border);
  border-radius: 14px;
  background: rgba(15, 23, 42, .012);
  overflow: hidden;
}
.rc-notification-group > summary {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto 20px;
  align-items: center;
  gap: .7rem;
  padding: .75rem .85rem;
  cursor: pointer;
  list-style: none;
  background: #fff;
}
.rc-notification-group > summary::-webkit-details-marker { display: none; }
.rc-notification-group > summary:hover { background: rgba(13, 110, 253, .025); }
.rc-notification-group[open] > summary { border-bottom: 1px solid var(--rc-border); }
.rc-notification-group-icon {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 11px;
  color: #0d6efd;
  background: rgba(13, 110, 253, .09);
}
.rc-notification-group-title { min-width: 0; display: flex; flex-direction: column; }
.rc-notification-group-title strong,
.rc-notification-group-title small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rc-notification-group-title small { color: var(--rc-muted); }
.rc-notification-chevron { color: var(--rc-muted); transition: transform .18s ease; }
.rc-notification-group[open] .rc-notification-chevron { transform: rotate(180deg); }
.rc-notification-group-body { padding: .75rem; }
.rc-notification-section {
  padding: .7rem;
  border: 1px solid rgba(15, 23, 42, .075);
  border-radius: 12px;
  background: #fff;
}
.rc-notification-section + .rc-notification-section { margin-top: .65rem; }
.rc-notification-section-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: .7rem;
  padding-bottom: .55rem;
  margin-bottom: .55rem;
  border-bottom: 1px dashed rgba(15, 23, 42, .11);
}
.rc-notification-alerts { display: flex; flex-direction: column; gap: .45rem; }
.rc-notification-alerts .rc-notification {
  margin: 0;
  padding: .62rem .68rem;
  border-radius: 11px;
  background: rgba(15, 23, 42, .012);
}
.rc-notification-alerts .rc-notification-icon {
  width: 32px;
  height: 32px;
  flex-basis: 32px;
}
.rc-empty-state {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .8rem;
  color: var(--rc-muted);
}
.rc-empty-state > i {
  width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(25, 135, 84, .09);
  color: #198754;
  font-size: 1.15rem;
  flex: 0 0 42px;
}

/* Navigație secundară pentru Cheltuieli: trei butoane clare și compacte. */
.rc-expense-tabs {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .55rem;
}
.rc-expense-tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  min-height: 42px;
  padding: .55rem 1rem;
  color: var(--rc-text);
  font-weight: 600;
  line-height: 1.15;
  text-decoration: none;
  white-space: nowrap;
  border: 1px solid var(--rc-border);
  border-radius: 10px;
  background: var(--rc-surface, #fff);
  box-shadow: var(--rc-shadow-sm, 0 2px 8px rgba(15, 23, 42, .05));
  transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.rc-expense-tab:hover {
  color: #0d6efd;
  border-color: rgba(13, 110, 253, .35);
  background: rgba(13, 110, 253, .035);
}
.rc-expense-tab.active {
  color: #0d6efd;
  border-color: rgba(13, 110, 253, .45);
  background: rgba(13, 110, 253, .09);
  box-shadow: 0 4px 12px rgba(13, 110, 253, .10);
}
.rc-expense-tab > i {
  flex: 0 0 auto;
  font-size: 1rem;
}
.rc-expense-tab > span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Panou de adăugare și liste checkbox. */
.rc-entry-panel > summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  cursor: pointer;
  list-style: none;
}
.rc-entry-panel > summary::-webkit-details-marker { display: none; }
.rc-entry-panel[open] > summary { border-bottom: 1px solid var(--rc-border); }
.rc-entry-chevron { color: var(--rc-muted); transition: transform .18s ease; }
.rc-entry-panel[open] .rc-entry-chevron { transform: rotate(180deg); }
.rc-checkbox-grid > div,
.rc-checkbox-grid > ul {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.rc-checkbox-grid > div > div,
.rc-checkbox-grid li {
  min-width: 0;
  padding: .55rem .65rem;
  border: 1px solid var(--rc-border);
  border-radius: 11px;
  background: #fff;
}
.rc-checkbox-grid label {
  display: flex;
  align-items: center;
  gap: .5rem;
  width: 100%;
  margin: 0;
  cursor: pointer;
  overflow-wrap: anywhere;
}
.rc-checkbox-grid input[type="checkbox"] {
  width: 1rem;
  height: 1rem;
  flex: 0 0 1rem;
  margin: 0;
}
.rc-checkbox-grid-compact > div,
.rc-checkbox-grid-compact > ul { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.rc-checkbox-grid-disabled { opacity: .72; }
.rc-checkbox-grid-disabled label { cursor: not-allowed; }

/* Carduri contoare. */
.rc-meter-card .card-body { display: flex; flex-direction: column; }
.rc-meter-icon {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 44px;
  border-radius: 13px;
  font-size: 1.2rem;
}
.rc-meter-icon.electricity { color: #8a6100; background: rgba(255, 193, 7, .17); }
.rc-meter-icon.gas { color: #b02a37; background: rgba(220, 53, 69, .10); }
.rc-meter-icon.water { color: #087990; background: rgba(13, 202, 240, .14); }
.rc-meter-apartment-badge { padding: .48rem .68rem; }

/* Raport curățenie – perioade expandabile. */
.rc-cleaning-periods { display: flex; flex-direction: column; gap: .7rem; }
.rc-cleaning-period {
  border: 1px solid var(--rc-border);
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
}
.rc-cleaning-period > summary {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) 92px 92px 20px;
  align-items: center;
  gap: .7rem;
  padding: .78rem .85rem;
  cursor: pointer;
  list-style: none;
}
.rc-cleaning-period > summary::-webkit-details-marker { display: none; }
.rc-cleaning-period > summary:hover { background: rgba(13, 110, 253, .025); }
.rc-cleaning-period[open] > summary { border-bottom: 1px solid var(--rc-border); background: rgba(13, 110, 253, .025); }
.rc-cleaning-period-date {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 11px;
  color: #198754;
  background: rgba(25, 135, 84, .09);
}
.rc-cleaning-period-title { display: flex; flex-direction: column; min-width: 0; }
.rc-cleaning-period-title small { color: var(--rc-muted); }
.rc-cleaning-period-metric { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.15; }
.rc-cleaning-period-metric strong { font-size: 1.05rem; }
.rc-cleaning-period-metric small { color: var(--rc-muted); }
.rc-cleaning-chevron { color: var(--rc-muted); transition: transform .18s ease; }
.rc-cleaning-period[open] .rc-cleaning-chevron { transform: rotate(180deg); }

@media (min-width: 992px) {
  .rc-col-lg-15 { flex: 0 0 auto; width: 12.5%; }
}

@media (max-width: 991.98px) {
  .rc-upcoming-booking { grid-template-columns: 76px minmax(0, 1fr) 20px; }
  .rc-upcoming-state {
    grid-column: 2 / 3;
    align-items: flex-start;
    flex-direction: row;
    flex-wrap: wrap;
    text-align: left;
  }
  .rc-upcoming-arrow { grid-column: 3; grid-row: 1 / span 2; }
  .rc-checkbox-grid > div,
  .rc-checkbox-grid > ul,
  .rc-checkbox-grid-compact > div,
  .rc-checkbox-grid-compact > ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767.98px) {
  .rc-expense-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .rc-expense-tab {
    width: 100%;
    padding: .55rem .65rem;
  }
  .rc-upcoming-booking { grid-template-columns: 66px minmax(0, 1fr); gap: .65rem; }
  .rc-upcoming-arrow { display: none; }
  .rc-upcoming-state { grid-column: 1 / -1; padding-left: 0; }
  .rc-upcoming-main .small { white-space: normal; }
  .rc-notification-group > summary { grid-template-columns: 34px minmax(0, 1fr) auto 18px; padding: .68rem; }
  .rc-notification-group-icon { width: 32px; height: 32px; }
  .rc-notification-group-body { padding: .55rem; }
  .rc-notification-section { padding: .58rem; }
  .rc-notification-section-head { flex-direction: column; }
  .rc-cleaning-period > summary { grid-template-columns: 34px minmax(0, 1fr) 18px; }
  .rc-cleaning-period-metric { align-items: flex-start; }
  .rc-cleaning-period-metric:nth-of-type(1) { grid-column: 2; }
  .rc-cleaning-period-metric:nth-of-type(2) { grid-column: 2; }
  .rc-cleaning-chevron { grid-column: 3; grid-row: 1; }
}

@media (max-width: 575.98px) {
  .rc-checkbox-grid > div,
  .rc-checkbox-grid > ul,
  .rc-checkbox-grid-compact > div,
  .rc-checkbox-grid-compact > ul { grid-template-columns: 1fr; }
  .rc-upcoming-date { min-height: 52px; }
  .rc-notification-alerts .rc-notification { align-items: flex-start; }
}


/* Regim Hotelier – navigație compactă pe telefon.
   Păstrează „Cazări / Check-in” pe un singur rând și evită pill-uri prea înalte. */
@media (max-width: 575.98px) {
  #content .rc-hotel-tabs {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    gap: .35rem;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  #content .rc-hotel-tabs .nav-item {
    flex: 0 0 auto;
  }
  #content .rc-hotel-tabs .nav-link {
    display: inline-flex;
    align-items: center;
    flex-wrap: nowrap;
    min-height: 38px;
    padding: .45rem .7rem;
    font-size: .875rem;
    line-height: 1;
    white-space: nowrap;
  }
  #content .rc-hotel-tabs .nav-link i {
    flex: 0 0 auto;
  }

  .rc-expense-tabs {
    grid-template-columns: 1fr;
  }
  .rc-expense-tab {
    justify-content: flex-start;
    min-height: 40px;
  }
}

/* Regim Hotelier – culorile bookingului se aplică pe întreaga zi din calendar.
   Rezervare viitoare = portocaliu; check-in efectuat / ocupat = roșu. */
.rc-calendar-table td.rc-calendar-cell.stay.reserved,
.rc-calendar-table td.rc-calendar-cell.stay.checked_in {
  padding: 0 !important;
  background-image: none !important;
  transition: background-color .15s ease;
}

.rc-calendar-table td.rc-calendar-cell.stay.reserved {
  background-color: #ffe1c7 !important;
  color: #7a3500 !important;
  box-shadow: inset 0 0 0 1px rgba(253, 126, 20, .52);
}

.rc-calendar-table td.rc-calendar-cell.stay.checked_in {
  background-color: #f8d7da !important;
  color: #842029 !important;
  box-shadow: inset 0 0 0 1px rgba(220, 53, 69, .52);
}

.rc-calendar-table td.rc-calendar-cell.stay.reserved > a,
.rc-calendar-table td.rc-calendar-cell.stay.checked_in > a {
  display: flex;
  width: 100%;
  height: 100%;
  min-height: 48px;
  padding: .3rem .2rem;
  border: 0 !important;
  border-radius: 0;
  background: transparent !important;
  color: inherit !important;
  font-weight: 700;
}

.rc-calendar-table td.rc-calendar-cell.stay.reserved:hover {
  background-color: #ffd2aa !important;
}

.rc-calendar-table td.rc-calendar-cell.stay.checked_in:hover {
  background-color: #f1bfc4 !important;
}

/* Păstrează marcajul zilei curente vizibil peste culoarea bookingului. */
.rc-calendar-table td.rc-calendar-cell.stay.reserved.rc-today,
.rc-calendar-table td.rc-calendar-cell.stay.checked_in.rc-today {
  outline: 2px solid rgba(13, 110, 253, .48);
  outline-offset: -2px;
}

@media (max-width: 767.98px) {
  .rc-calendar-table td.rc-calendar-cell.stay.reserved > a,
  .rc-calendar-table td.rc-calendar-cell.stay.checked_in > a {
    min-height: 44px;
  }
}

/* Regim Hotelier – calendar sticky header + culori distincte pe rezervare.
   - Headerul tabelului este clonat de calendar.html și rămâne sub navbar la scroll vertical.
   - Fiecare booking rezervat primește o culoare stabilă; rezervările consecutive
     din același apartament nu folosesc aceeași culoare.
   - Check-in-ul efectiv rămâne roșu. */
.rc-calendar-floating-head {
  position: fixed;
  z-index: 1015;
  overflow: hidden;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  background: #fff;
  border: 1px solid var(--rc-border);
  border-top: 0;
  box-shadow: 0 10px 24px rgba(15, 23, 42, .14);
  transition: opacity .12s ease;
}

.rc-calendar-floating-head.is-visible {
  visibility: visible;
  opacity: 1;
}

.rc-calendar-floating-viewport {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.rc-calendar-floating-table {
  margin: 0 !important;
  background: #fff;
}

.rc-calendar-floating-table thead th {
  background: #fff !important;
}

.rc-calendar-table td.rc-calendar-cell.stay.reserved[class*="rc-reservation-color-"] {
  background-color: var(--rc-reservation-bg) !important;
  color: var(--rc-reservation-text) !important;
  box-shadow: inset 0 0 0 1px var(--rc-reservation-border) !important;
}

.rc-calendar-table td.rc-calendar-cell.stay.reserved[class*="rc-reservation-color-"]:hover {
  background-color: var(--rc-reservation-hover) !important;
}

.rc-reservation-color-1 {
  --rc-reservation-bg: #90caf9;
  --rc-reservation-hover: #79bdf5;
  --rc-reservation-border: #42a5f5;
  --rc-reservation-text: #0d3b66;
}

.rc-reservation-color-2 {
  --rc-reservation-bg: #ce93d8;
  --rc-reservation-hover: #c17fce;
  --rc-reservation-border: #ab47bc;
  --rc-reservation-text: #4a1457;
}

.rc-reservation-color-3 {
  --rc-reservation-bg: #ffd180;
  --rc-reservation-hover: #ffc55f;
  --rc-reservation-border: #f0a43a;
  --rc-reservation-text: #5b3800;
}

.rc-reservation-color-4 {
  --rc-reservation-bg: #80cbc4;
  --rc-reservation-hover: #68beb6;
  --rc-reservation-border: #26a69a;
  --rc-reservation-text: #064f48;
}

.rc-reservation-color-5 {
  --rc-reservation-bg: #9fa8da;
  --rc-reservation-hover: #8994d0;
  --rc-reservation-border: #5c6bc0;
  --rc-reservation-text: #28305f;
}

.rc-reservation-color-6 {
  --rc-reservation-bg: #f8bbd0;
  --rc-reservation-hover: #f3a3bf;
  --rc-reservation-border: #ec407a;
  --rc-reservation-text: #6a1b3d;
}

.rc-reservation-color-7 {
  --rc-reservation-bg: #80deea;
  --rc-reservation-hover: #65d4e2;
  --rc-reservation-border: #26c6da;
  --rc-reservation-text: #0b5360;
}

.rc-reservation-color-8 {
  --rc-reservation-bg: #d7ccc8;
  --rc-reservation-hover: #c9bbb6;
  --rc-reservation-border: #a1887f;
  --rc-reservation-text: #4b342d;
}

.rc-calendar-table td.rc-calendar-cell.stay.checked_in {
  background-color: #ef5350 !important;
  color: #fff !important;
  box-shadow: inset 0 0 0 1px #c62828 !important;
}

.rc-calendar-table td.rc-calendar-cell.stay.checked_in:hover {
  background-color: #e53935 !important;
}

.rc-calendar-legend.reserved::before {
  background: linear-gradient(
    135deg,
    #90caf9 0 25%,
    #ce93d8 25% 50%,
    #ffd180 50% 75%,
    #80cbc4 75% 100%
  );
}

/* Regim Hotelier — TO DO, acces booking și registru financiar */
.rc-todo-danger > * {
  background-color: #fff0f1 !important;
  border-top-color: #ffc7cd !important;
  border-bottom-color: #ffc7cd !important;
}

.rc-todo-warning > * {
  background-color: #fff7e5 !important;
  border-top-color: #ffe0a3 !important;
  border-bottom-color: #ffe0a3 !important;
}

.rc-access-code-panel,
.rc-access-code-detail {
  width: min(100%, 620px);
  padding: 1rem 1.15rem;
  color: #fff;
  background: linear-gradient(135deg, #b4232e 0%, #dc3545 100%);
  border: 1px solid rgba(140, 20, 32, .35);
  border-radius: var(--rc-radius);
  box-shadow: 0 10px 24px rgba(180, 35, 46, .2);
}

.rc-access-code-detail {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.rc-access-code-value {
  margin: .15rem 0;
  font-size: clamp(2rem, 4vw, 3.25rem);
  line-height: 1;
  letter-spacing: .12em;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
}

.rc-access-code-inline {
  display: inline-flex;
  align-items: center;
  padding: .38rem .58rem;
  color: #b4232e;
  background: #fff0f1;
  border: 1px solid #ffc7cd;
  border-radius: .65rem;
  font-weight: 800;
  letter-spacing: .08em;
  font-variant-numeric: tabular-nums;
}

.rc-money-card,
.rc-custody-card {
  overflow: hidden;
  border-color: rgba(13, 110, 253, .16);
}

.rc-money-card::before,
.rc-custody-card::before {
  content: "";
  display: block;
  height: 4px;
  background: linear-gradient(90deg, #0d6efd, #20c997);
}

.rc-custody-card::before {
  background: linear-gradient(90deg, #212529, #6f42c1);
}

.rc-money-value {
  font-variant-numeric: tabular-nums;
}

.rc-money-metric {
  height: 100%;
  padding: .7rem .75rem;
  background: #f7f9fc;
  border: 1px solid rgba(15, 23, 42, .07);
  border-radius: .8rem;
}

.rc-money-metric span,
.rc-money-metric strong {
  display: block;
}

.rc-money-metric span {
  color: var(--rc-muted);
  margin-bottom: .15rem;
}

.rc-money-metric-danger {
  background: #fff5f5;
  border-color: #ffd5d8;
}

.rc-money-metric-warning {
  background: #fff9e9;
  border-color: #ffe4a8;
}

.rc-money-metric-info {
  background: #eef9ff;
  border-color: #c9ebff;
}

.rc-clickable-row {
  cursor: pointer;
}

.rc-clickable-row:hover > * {
  background-color: rgba(13, 110, 253, .045) !important;
}

.rc-ledger-table td,
.rc-booking-history-table td {
  vertical-align: middle;
}

.rc-ledger-table td:last-child,
.rc-booking-history-table .rc-access-code-inline {
  font-variant-numeric: tabular-nums;
}

@media (max-width: 767.98px) {
  .rc-access-code-detail {
    align-items: flex-start;
    flex-direction: column;
  }

  .rc-access-code-panel,
  .rc-access-code-detail {
    width: 100%;
  }

  .rc-access-code-value {
    font-size: 2.3rem;
  }
}
