.no_padding {
    padding: 0 !important;
}

.no-wrap {
    white-space: nowrap !important;
}

.text_center{
    text-align: center !important;
}

.top_align_heading{
    vertical-align: top  !important;
}

.note_max_width{
     max-width: 200px;
     word-wrap: break-word; 
     white-space: normal;
}


.resort_code_column_max_width  {
  min-width: 20px;
  overflow-wrap: break-word;  /* modern equivalent of word-wrap */
  white-space: normal;
  word-break: break-word;
}

.unit_name_column_max_width  {
  max-width: 120px;
  width: 120px;
  overflow-wrap: break-word;  /* modern equivalent of word-wrap */
  white-space: normal;
  word-break: break-word;
}
.unit_name_column_max_width .limit-width {
  display: block;  /* or inline-block if needed */
  max-width: 120px;
  width: 100%;
  overflow-wrap: break-word;
  white-space: normal;
  word-break: break-word;
}

.request_date_column_max_width{
    max-width: 120px;
    width: 120px;
    overflow: hidden;
}

.unit_view_column_max_width  {
    max-width: 100px;
    width: 100px;
}
.display_none{
    display: none;
}

.guest_name_input{
    width: 250px;
    max-width: 250px;

}

.guest_email_input{
    width: 250px;
    max-width: 250px;

}
.travel_dates_input {
    width: 250px;
    max-width: 250px;

}

.scan_comments {
  width: 480px;   /* adjust as needed */
  max-width: 100%;
  resize: vertical;
}

/* Make nav-links invisible wrappers around your buttons */
.nav-tabs .nav-link { border: 0; background: transparent; padding: 0; }

/* Do not recolor active tab; keep the inner .btn’s own styles */
.nav-tabs .nav-link.active,
.nav-tabs .nav-link:focus,
.nav-tabs .nav-link:hover {
  background: transparent;
}

/* Optional: if you want no underline bar under the tabs row */
.nav-tabs { border-bottom: 0; }

.resort-button {
  margin-right: 0.5rem;  /* horizontal spacing */
  margin-left: 0.5rem;
  margin-bottom: 0.75rem; /* vertical spacing */
  padding: 0.5rem 1rem;   /* larger click area */
}
.unit-button {
  margin-right: 0.5rem;  /* horizontal spacing */
  margin-left: 0.5rem;
  margin-bottom: 0.75rem; /* vertical spacing */
  padding: 0.5rem 1rem;   /* larger click area */
}
.margin_left_05_rem{
    margin-left: 0.5rem;
}

tr.scan-details:hover {
  background-color: var(--bs-light-bg-subtle);
}


/* Sticky card header above the template */
.sticky-card-header {
  position: sticky;
  top: var(--card-sticky-top, 0px); /* set this if you have a fixed topbar */
  z-index: 3;
  background: var(--bs-card-bg);

}

/* Table with sticky thead inside a scrollable wrapper */
.table-sticky-wrap{
  padding-inline: 0 !important;
  overflow: auto;
  /* modern browsers: keep layout stable when the vertical scrollbar appears */
  scrollbar-gutter: stable;
  scrollbar-width: auto;  
}
.table-sticky{
  
  min-width: 100%;
  margin-bottom: 0;
}
.table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--bs-body-bg);
}



:root { --card-sticky-top: 56px; }  /* adjust to your topbar height */

/* Stop the outer page from scrolling on this screen */
body.scans-page { overflow-y: hidden; }




/* Keep the sticky thead above expanded rows */
.table-sticky thead th { z-index: 5; }

/* Prevent scroll chaining out to the page */
.table-sticky-wrap { overscroll-behavior: contain; }

/* For tables that size to content (inline/block fit), don't reserve a scrollbar gutter
   — prevents a thin empty gap on the right when no scrollbar is present. */
.table-sticky-wrap.table-fit {
  scrollbar-gutter: auto;
}

/* Page-specific override: add 10px horizontal padding for the
   Interval / Marriott Missing XREF report (overrides general rules) */
.scans-page.missing-xref-page .table-sticky-wrap.table-fit {
  /* keep wrapper behavior unchanged; use table margins for spacing */
  padding-inline: 0 !important;
}

/* Add side spacing visually by giving the inner table small horizontal margins
   so the header/owners-card width is not affected */
.scans-page.missing-xref-page .table-sticky {
  margin: 0 10px;
  min-width: 0 !important;
  box-sizing: border-box;
  display: inline-block; /* keep content-sized */
}

/* When anything calls scrollIntoView on a row, keep it under the sticky thead */
.scan-summary { scroll-margin-top: var(--scan-scroll-margin, 56px); }





.owners-card {
  --bs-card-spacer-y: 0.75rem;
  --bs-card-spacer-x: 0.75rem;
  --bs-card-title-spacer-y: 0.75rem;
  --bs-card-title-color: var(--bs-headings-color);
  --bs-card-subtitle-color: ;
  --bs-card-border-width: 0;
  --bs-card-border-color: var(--bs-border-color);
  --bs-card-border-radius: var(--bs-border-radius);
  --bs-card-box-shadow: var(--bs-box-shadow);
  --bs-card-inner-border-radius: calc(var(--bs-border-radius) - 0);
  --bs-card-cap-padding-y: .75rem;
  --bs-card-cap-padding-x: .75rem;
  --bs-card-cap-bg: transparent;
  --bs-card-cap-color: ;
  --bs-card-height: ;
  --bs-card-color: ;
  --bs-card-bg: var(--bs-secondary-bg);
  --bs-card-img-overlay-padding: 1.5rem;
  --bs-card-group-margin: 0.75rem;
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  min-width: 0;
  height: var(--bs-card-height);
  color: var(--bs-body-color);
  word-wrap: break-word;
  background-color: var(--bs-card-bg);
  background-clip: border-box;
  border: var(--bs-card-border-width) solid var(--bs-card-border-color);
  border-radius: var(--bs-card-border-radius);
}

.owners-card-mw {
  max-width: 250px !important;
}

.min-w-0 { min-width: 0; }

.owners-card > hr {
  margin-right: 0;
  margin-left: 0;
}
.owners-card > .list-group {
  border-top: inherit;
  border-bottom: inherit;
}
.owners-card > .list-group:first-child {
  border-top-width: 0;
  border-top-left-radius: var(--bs-card-inner-border-radius);
  border-top-right-radius: var(--bs-card-inner-border-radius);
}
.owners-card > .list-group:last-child {
  border-bottom-width: 0;
  border-bottom-right-radius: var(--bs-card-inner-border-radius);
  border-bottom-left-radius: var(--bs-card-inner-border-radius);
}
.owners-card > .owners-card-header + .list-group,
.owners-card > .list-group + .owners-card-footer {
  border-top: 0;
}

.owners-card-body {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
  padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
  color: var(--bs-card-color);
}

.owners-card-title {
  margin-bottom: var(--bs-card-title-spacer-y);
  color: var(--bs-card-title-color);
}

.owners-card-subtitle {
  margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));
  margin-bottom: 0;
  color: var(--bs-card-subtitle-color);
}

.owners-card-text:last-child {
  margin-bottom: 0;
}

.owners-card-link + .owners-card-link {
  margin-left: var(--bs-card-spacer-x);
}

.owners-card-header {
  padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
  margin-bottom: 0;
  color: var(--bs-card-cap-color);
  background-color: var(--bs-card-cap-bg);
  border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
}
.owners-card-header:first-child {
  border-radius: var(--bs-border-radius) var(--bs-border-radius) 0 0;
}

.owners-card-footer {
  padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
  color: var(--bs-card-cap-color);
  background-color: var(--bs-card-cap-bg);
  border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
}
.owners-card-footer:last-child {
  border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);
}

.owners-card-header-tabs {
  margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
  margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));
  margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
  border-bottom: 0;
}
.owners-card-header-tabs .nav-link.active {
  background-color: var(--bs-card-bg);
  border-bottom-color: var(--bs-card-bg);
}

.owners-card-header-pills {
  margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
  margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
}

.owners-card-img-overlay {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  padding: var(--bs-card-img-overlay-padding);
  border-radius: var(--bs-card-inner-border-radius);
}

.owners-card-img,
.owners-card-img-top,
.owners-card-img-bottom {
  width: 100%;
}

.owners-card-img,
.owners-card-img-top {
  border-top-left-radius: var(--bs-card-inner-border-radius);
  border-top-right-radius: var(--bs-card-inner-border-radius);
}

.owners-card-img,
.owners-card-img-bottom {
  border-bottom-right-radius: var(--bs-card-inner-border-radius);
  border-bottom-left-radius: var(--bs-card-inner-border-radius);
}

.owners-card-group > .owners-card {
  margin-bottom: var(--bs-card-group-margin);
}
@media (min-width: 576px) {
  .owners-card-group {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-flow: row wrap;
            flex-flow: row wrap;
  }
  .owners-card-group > .owners-card {
    -webkit-box-flex: 1;
        -ms-flex: 1 0 0%;
            flex: 1 0 0%;
    margin-bottom: 0;
  }
  .owners-card-group > .owners-card + .owners-card {
    margin-left: 0;
    border-left: 0;
  }
  .owners-card-group > .owners-card:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
  .owners-card-group > .owners-card:not(:last-child) .owners-card-img-top,
  .owners-card-group > .owners-card:not(:last-child) .owners-card-header {
    border-top-right-radius: 0;
  }
  .owners-card-group > .owners-card:not(:last-child) .owners-card-img-bottom,
  .owners-card-group > .owners-card:not(:last-child) .owners-card-footer {
    border-bottom-right-radius: 0;
  }
  .owners-card-group > .owners-card:not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
  .owners-card-group > .owners-card:not(:first-child) .owners-card-img-top,
  .owners-card-group > .owners-card:not(:first-child) .owners-card-header {
    border-top-left-radius: 0;
  }
  .owners-card-group > .owners-card:not(:first-child) .owners-card-img-bottom,
  .owners-card-group > .owners-card:not(:first-child) .owners-card-footer {
    border-bottom-left-radius: 0;
  }
}

/* Option B: fixed label column + tabular digits */
.conf-stack { display: grid; row-gap: .25rem; min-width: 0; }   
.conf-row   { display: grid; grid-template-columns: 1.25em 1fr; column-gap: .25rem; align-items: baseline; min-width: 0; } 
.conf-value { 
  font-variant-numeric: tabular-nums;
  min-width: 0;                    
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: text;
}

.conf-value.is-editing {
  outline: 1px dashed rgba(0,0,0,.25);
  outline-offset: 2px;
  background: rgba(0,0,0,.03);
}

@supports not (font-variant-numeric: tabular-nums) {
  .conf-value { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }
}


/* Base wrapper for any table cell content */
.reservations-cell { display: block; max-width: 100%; }

/* Width caps per column (tweak as you like) */
.reservations-conf { max-width: 110px; min-width: 0; }
.reservations-guest  { max-width: 220px; white-space: nowrap; }
.reservations-date   { max-width: 110px; white-space: nowrap; }
.reservations-unit   { max-width:  90px;  ; } 
.reservations-resort   { max-width:  50px;  ; } 
.reservations-view   { min-width: 50px;  white-space: nowrap; }                      
.reservations-money  { max-width: 110px; white-space: nowrap; text-align: right; }
.reservations-wrap   { white-space: nowrap; word-break: break-word; } /* allow wrapping */
.reservations-ellipsis { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.padding_guest_requests {
    padding-top: 0.15rem  !important;
    padding-right: 0.85rem   !important;
    padding-bottom: 0.15rem   !important;
    padding-left: 0.85rem   !important;
}

.mw-scan-requests {
    max-width: 1450px;
}

.min_w_dropdown {
    min-width: 400px;
} 
.mw-resort_dropdown_card {
    max-width: 600px;
} 
.side-panel {
  max-height: calc(100vh - 220px);
  overflow: auto;
}


.latest_scan_results_heading {
    min-height: 69px;
}

/* Scope fixes to this table only */
.scan-results.table-sticky { table-layout: fixed; }               /* flexible columns */
.scan-results td.no-wrap { white-space: normal !important; }      /* allow wrapping here */

/* Make the inner divs respect cell width and wrap nicely */
.scan-results .limit-width { display: block; max-width: 100%; overflow-wrap: anywhere; word-break: break-word; }

/* Let guest name wrap; keep dates compact */
.scan-results .reservations-guest { white-space: normal; max-width: 220px; }
.scan-results .reservations-date  { white-space: nowrap; }

/* Use your existing width caps for these columns */
.scan-results .resort_code_column_max_width { min-width: 20px; }
.scan-results .unit_name_column_max_width   { max-width: 120px; width: 120px; }
.scan-results .unit_view_column_max_width   { max-width: 100px; width: 100px; }


.scan-details .reservations-cell { max-height: 6.5rem; overflow: auto; }

.pl-75{
  padding-left: 0.75rem !important;
}

/* makes clicks on the icon land on the button */
button.delete-scan * { pointer-events: none; }

/* Dates: wider and never wrap */
#scan-result-tbody td.reservations-date {
  white-space: nowrap;       /* keep on one line */
  min-width: 7rem;
  width: 7rem;
  padding-right: .5rem;      /* a little breathing room */
}

/* If a global .limit-width is constraining things, neutralize it here */
#scan-result-tbody td.reservations-date .limit-width {
  max-width: none;
  display: inline-block;     /* ensures the min/width above is respected */
}

/* Keep header widths aligned with body */
table:has(#scan-result-tbody) thead th:nth-child(2),
table:has(#scan-result-tbody) thead th:nth-child(3) {
  width: 7rem;
}


/* Resort column: a bit narrower and centered */
.scan-results th:nth-child(4),
.scan-results td.resort_code_column_max_width {
  width: 60px;            /* tweak: 5–7ch to taste */
  text-align: center;
  white-space: nowrap; 
}

/* Don’t let the inner wrapper clamp it */
.scan-results td.resort_code_column_max_width .limit-width {
  max-width: none;
  display: inline-block;
}

.text_align_center{
  text-align: center;
}

.text_align_right{
  text-align: right;
}
.vertical_align {
  vertical-align: middle;
}

.notes_width {
  width: 300px;
}

.heading_mw_60 {
  min-width: 60px !important;
  width: 60px !important;
}
.heading_mw_75 {
  min-width: 75px !important;
  width: 75px !important;
}
.heading_mw_85 {
  min-width: 85px !important;
  width: 85px !important;
}
.heading_mw_95 {
  min-width: 95px !important;
  width: 95px !important;
}
.heading_mw_165 {
  min-width: 165px !important;
  width: 165px !important;
}
.heading_mw_250 {
  min-width: 250px !important;
  
}

.box_mw_650 {
  min-width: 650px;
}
.box_mw_750,
.grp_gross_rev_profit,
.tight_card {
  width: 100%;
  max-width: 100%;
}
@media (min-width: 1400px) {
  .box_mw_750 {
    max-width: 750px;
  }
}

#dash-performance-chart,
.apex-charts,
.apexcharts-canvas,
.apexcharts-svg {
  width: 100% !important;
  max-width: 100% !important;
}

.apexcharts-canvas {
  overflow: hidden;
}

.box_margin_top_20 {
  margin-top: 20px;
}
.box_margin_bottom_200 {
  margin-bottom: 200px;
}
/* Right-side column: scrolls as one continuous pane */
.right-stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-height: 0;
  max-height: calc(100vh - var(--card-sticky-top, 56px));
  overflow-y: auto;           /* scroll entire right side */
  overflow-x: hidden;
}

/* Each card expands naturally; remove inner scroll caps */
.right-stack > .top-results,
.right-stack > .bottom-runs,
.right-stack > * {
  display: flex;
  flex-direction: column;
  flex: 0 0 auto;
  max-height: none;
  min-height: auto;
  max-width: 700px;
}

/* Remove nested table scrolls so the column handles scrolling */
.right-stack > .top-results .table-responsive,
.right-stack > .bottom-runs .table-responsive {
  flex: 1 1 auto;
  min-height: auto;
  overflow: visible;
}

/* Keep sticky headers inside the right column scroll context */
.right-stack .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}

.pl-15{
    padding-left: 15px !important;
}
.pl-25{
    padding-left: 25px !important;
}

/* remove the line after the main data row */
.scan-summary.no-bottom-border td { border-bottom: none !important; }

/* ensure no extra line above the timestamp row, but keep the one below it */
.scan-summary-footer td { border-top: none !important; }

.login-flex {
  display: flex;
  align-items: normal;
}

.d-flex {
  display: flex;
  align-items: center;
}
.filter-buttons {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}



/* --- Owner Vistana Job Runs table tweaks --- */
.scan-results { table-layout: fixed; }              /* stable column widths */
.scan-results thead th,
.scan-results td { padding: .5rem .6rem; }          /* compact, even spacing */
.scan-results tbody tr:nth-child(even) { 
  background: var(--bs-table-striped-bg, rgba(0,0,0,.015));
}

/* Column sizing */
.scan-results .col-id      { width: 80px;  }
.scan-results .col-owner   { min-width: 160px; }
.scan-results .col-start   { width: 140px; }
.scan-results .col-status  { width: 110px; }
.scan-results .col-runtime { width: 90px;  }

/* Keep long names tidy but readable */
.scan-results .limit-width { 
  display: block; 
  max-width: 100%; 
  overflow-wrap: anywhere; 
  word-break: break-word; 
}

/* Datetime on two lines, compact, centered */
.scan-results .datetime { 
  display: inline-grid; 
  grid-auto-rows: min-content; 
  row-gap: 2px; 
  justify-items: center;
}
.scan-results .datetime .time { font-size: .85em; }

/* Monospace where numbers benefit (IDs, times, runtime) */
.mono { font-variant-numeric: tabular-nums; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }

/* Make badges sit nicely in table rows */
.scan-results .badge { 
  font-weight: 600; 
  letter-spacing: .015em; 
  padding: .35em .5em; 
}

/* Ensure sticky-head wrapper matches your existing sticky setup */
.table-sticky-wrap { 
  padding-inline: 0 !important; 
  overflow: auto; 
  scrollbar-gutter: stable; 
  overscroll-behavior: contain; 
}
.table-sticky thead th { 
  position: sticky; 
  top: 0; 
  z-index: 5; 
  background: var(--bs-body-bg);
}




/* Keep date/time on one line */
.no-wrap { white-space: nowrap; }

/* Let the card and table size to their content, not full width */
.bottom-runs { 
  width: -moz-fit-content;
  width: fit-content;
  max-width: 100%;           /* still responsive if content is wide */
}

/* Make the scroll wrapper and table shrink to content */
.table-sticky-wrap {
  display: inline-block;     /* shrink-to-fit */
  max-width: 100%;
  overflow: auto;
  padding-inline: 0 !important;
  scrollbar-gutter: stable;
}

/* Table should not force 100% width */
.scan-results {
  width: auto;               /* override Bootstrap’s 100% */
  display: inline-table;     /* shrink-to-fit + keep table semantics */
  table-layout: auto;        /* allow natural sizing now that width is auto */
}

/* Optional: keep tight columns */
.scan-results thead th,
.scan-results td { padding: .5rem .6rem; }
.scan-results .col-id      { width: 80px;  }
.scan-results .col-owner   { min-width: 160px; }
.scan-results .col-start   { width: 150px; }  /* enough for “MM/DD/YYYY HH:MM:SS” */
.scan-results .col-status  { width: 110px; }
.scan-results .col-runtime { width: 90px;  }

/* Monospace for digit alignment (you already use .mono) */
.mono { 
  font-variant-numeric: tabular-nums; 
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; 
}




/* tiny ring spinner */
.ring { width:18px; height:18px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* overlay shown during navigation */
.nav-loading-overlay {
  position: fixed; inset: 0; z-index: 2000;
  display: none; align-items: center; justify-content: center;
  background: var(--bs-body-bg, #fff);
}
.is-navigating .nav-loading-overlay { display: flex; }
.is-navigating .page-content { opacity: .25; } /* optional: fade existing content */



/* Make the left card size to its content so it doesn't claim the whole row */
.card-fit { display: inline-block; max-width: 100%; }

/* Ensure the left table doesn't force full width */
#guest-requests-table.table-sticky {
  min-width: auto !important;
  width: auto;
  table-layout: auto;
}

/* Wrapper already present in your markup */
.table-fit.d-inline-block { display: inline-block; }


.note_max_width { 
  width: 400px; 
  min-width: 400px; 
  white-space: normal; 
  word-break: break-word; 
}


/* Specific to the Scan Run Log "Type" column */
.job_type_col {
  width: 100px;
  min-width: 100px;
  text-align: center;
  white-space: nowrap;
}



.cover-image-container {
  position: relative;
  height: 97vh;         /* fills the visible screen height */
  overflow: hidden;      /* hides anything that extends past the container */
}

.cover-image-container img {
  width: 100%;
  height: 100%;
  object-fit: cover;      /* maintain aspect ratio and crop as needed */
  object-position: top;   /* keep the top visible, crop the bottom */
}
  


/* Left table zebra colors */
#mismatch-tbody tr.row-odd  { background: rgba(0,0,0,.06); }
#mismatch-tbody tr.row-even { background: transparent; }

/* Space between % text and the slider in the last column (left table) */
#leftWrap td:last-child .mono { 
  display: inline-block;
  margin-right: 8px;
}
#leftWrap td:last-child input[type="range"] {
  margin-left: 4px; /* belt-and-suspenders if the slider is present */
}


/* only this one table area if you want it scoped */
#rightWrap .confirmation-clip {
  display: inline-block;      /* not a table-cell */
  max-width: 120px;           /* pick your width */
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}


#rightWrap td .confirmation-clip { white-space: nowrap; }   /* already included */
#rightWrap td:first-child { white-space: normal; }          /* just in case a global no-wrap leaks in */


/* ===== Vistana Profit Page only ===== */

/* 1) Height chain only on this page */
body.vistana-profit-page .page-content,
body.vistana-profit-page .page-content > .container-fluid,
body.vistana-profit-page .page-content > .container-fluid > .row {
  height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
}

/* 2) Right column gets its own scrollbar */
body.vistana-profit-page .right-stack {
  max-height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
  overflow-y: auto;   /* scroll entire right column */
  overflow-x: hidden;
}

/* 3) Keep the inner data section’s scrollbar, but allow scroll to bubble up */
body.vistana-profit-page .right-stack .table-sticky-wrap {
  overscroll-behavior: auto;   /* enable scroll chaining to parent */
  -webkit-overflow-scrolling: touch;
}

/* 4) Preserve sticky headers within either scroll container */
body.vistana-profit-page .right-stack .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}
/* Vistana Profit page only */
body.vistana-profit-page .right-stack {
  max-height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
  overflow-y: auto;   /* lets the entire right column scroll */
  overflow-x: hidden;
}

/* Important: allow scroll chaining from the inner table to the column */
body.vistana-profit-page .right-stack .table-sticky-wrap {
  overscroll-behavior: auto !important;  /* overrides the global 'contain' */
  -webkit-overflow-scrolling: touch;
}

/* Keep sticky headers working inside either scroll container */
body.vistana-profit-page .right-stack .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}


/* ===== Vistana Profit Page: right column scroll only ===== */

/* Stop page scroll on this page */
body.vistana-profit-page {
  overflow: hidden !important;
}

/* Right column gets its own scrollbar and fixed viewport height */
body.vistana-profit-page .right-stack {
  height: calc(100vh - var(--card-sticky-top, 56px));
  overflow-y: auto;
  overflow-x: hidden;
}

/* Keep inner data area scroll, but let wheel/trackpad chain UP to right column */
body.vistana-profit-page .right-stack .table-sticky-wrap {
  overflow: auto;                 /* keep its own scrollbar */
  overscroll-behavior: auto !important;   /* override global 'contain' */
  -webkit-overflow-scrolling: touch;
}

/* Optional: make left side never cause scroll */
body.vistana-profit-page .left-stack {
  overflow: hidden;
}

/* Sticky headers still work inside either scroll container */
body.vistana-profit-page .right-stack .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}


/* ===== Vistana Profit Page: make only the right side scroll ===== */

/* The new wrapper for the whole right-hand side */
body.vistana-profit-page #rightColumn {
  height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
  overflow-y: auto;          /* the entire right side can scroll */
  overflow-x: hidden;
  display: flex;
  flex-direction: column;
  gap: 12px;                 /* match your spacing */
}

/* Keep the inner data table’s own scrollbar */
body.vistana-profit-page #rightColumn #rightWrap {
  overflow: auto;            /* keep inner scroll */
  max-height: none;
}

/* Allow scroll chaining from the inner grid up to the right column only */
body.vistana-profit-page #rightColumn .table-sticky-wrap {
  overscroll-behavior: auto !important;  /* override global 'contain' */
  -webkit-overflow-scrolling: touch;
}

/* Preserve sticky headers inside either scroll container */
body.vistana-profit-page #rightColumn .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}


/* Make the OWNER BOOKING FINANCIALS title scroll (not sticky) */
body.scans-page #profit-right-card .sticky-card-header,
body.vistana-profit-page #profit-right-card .sticky-card-header {
  position: static !important;
  top: auto !important;
  z-index: auto !important;
  box-shadow: none !important;
}


/* Show pointer cursor on hover over clickable rows (left table) */
body.vistana-profit-page #profit-left-card .owner-row:hover {
  cursor: pointer;
}


/* ===== Interval Profit Page only ===== */

/* 1) Height chain only on this page */
body.interval-profit-page .page-content,
body.interval-profit-page .page-content > .container-fluid,
body.interval-profit-page .page-content > .container-fluid > .row {
  height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
}

/* 2) Right column gets its own scrollbar */
body.interval-profit-page .right-stack {
  max-height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
}

/* 3) Keep the inner data section’s scrollbar, but allow scroll to bubble up */
body.interval-profit-page .right-stack .table-sticky-wrap {
  overscroll-behavior: auto;
  -webkit-overflow-scrolling: touch;
}

/* 4) Preserve sticky headers within either scroll container */
body.interval-profit-page .right-stack .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}

/* Interval Profit page only */
body.interval-profit-page .right-stack {
  max-height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
}

/* Important: allow scroll chaining from the inner table to the column */
body.interval-profit-page .right-stack .table-sticky-wrap {
  overscroll-behavior: auto !important;
  -webkit-overflow-scrolling: touch;
}

/* Keep sticky headers working inside either scroll container */
body.interval-profit-page .right-stack .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}


/* ===== Interval Profit Page: right column scroll only ===== */

/* Stop page scroll on this page */
body.interval-profit-page {
  overflow: hidden !important;
}

/* Right column gets its own scrollbar and fixed viewport height */
body.interval-profit-page .right-stack {
  height: calc(100vh - var(--card-sticky-top, 56px));
  overflow-y: auto;
  overflow-x: hidden;
}

/* Keep inner data area scroll, but let wheel/trackpad chain UP to right column */
body.interval-profit-page .right-stack .table-sticky-wrap {
  overflow: auto;
  overscroll-behavior: auto !important;
  -webkit-overflow-scrolling: touch;
}

/* Optional: make left side never cause scroll */
body.interval-profit-page .left-stack {
  overflow: hidden;
}

/* Sticky headers still work inside either scroll container */
body.interval-profit-page .right-stack .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}


/* ===== Interval Profit Page: make only the right side scroll ===== */

/* The new wrapper for the whole right-hand side */
body.interval-profit-page #rightColumn {
  height: calc(100vh - var(--card-sticky-top, 56px));
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Keep the inner data table’s own scrollbar */
body.interval-profit-page #rightColumn #rightWrap {
  overflow: auto;
  max-height: none;
}

/* Allow scroll chaining from the inner grid up to the right column only */
body.interval-profit-page #rightColumn .table-sticky-wrap {
  overscroll-behavior: auto !important;
  -webkit-overflow-scrolling: touch;
}

/* Preserve sticky headers inside either scroll container */
body.interval-profit-page #rightColumn .table-sticky thead th {
  position: sticky;
  top: 0;
  z-index: 5;
}


/* Make the OWNER BOOKING FINANCIALS title scroll (not sticky) */
body.scans-page #profit-right-card .sticky-card-header,
body.interval-profit-page #profit-right-card .sticky-card-header {
  position: static !important;
  top: auto !important;
  z-index: auto !important;
  box-shadow: none !important;
}


/* Show pointer cursor on hover over clickable rows (left table) */
body.interval-profit-page #profit-left-card .owner-row:hover {
  cursor: pointer;
}

.margin_top_neg_10 {
      margin-top: -10px;
}



/* ========== Interval / Marriott Missing XREF Page Only ========== */


/* Missing XREF: remove faint corner seams without affecting layout */
body.scans-page.missing-xref-page .owners-card-header.sticky-card-header{
  box-shadow: none !important;   /* kills the 1px sticky divider line */
}

/* The seams you see are from the card border showing above a transparent header */
body.scans-page.missing-xref-page .owners-card-header{
  background-color: var(--bs-card-bg) !important; /* header was transparent */
  background-clip: padding-box;                  /* prevents paint to the outer edge */
}


/* allow text-truncate to actually work inside flex items */
.sub-nav-item.d-flex .sub-nav-link {
    min-width: 0;
}

/* Make sure long text can shrink and badge stays visible */
.nav.sub-navbar-nav .sub-nav-item.d-flex .sub-nav-link {
    min-width: 0;
}

.nav.sub-navbar-nav .sub-nav-item.d-flex .badge {
    flex-shrink: 0;
}

/* 🔹 Nudge the badges a bit LEFT */
.nav.sub-navbar-nav .sub-nav-item.d-flex .badge {
    margin-left: 0 !important;        /* cancel ms-2 if needed */
    transform: translateX(-8px);      /* move badge 8px left */
}


/* Hide the Reports badge when the menu is expanded */
.nav-link[aria-expanded="true"] #badge-reports {
    display: none !important;
}

 /* keeps date/time on one line and lets table size to content */
  .no-wrap { white-space: nowrap; }
  .table-fit { display: inline-block; max-width: 100%; }

/* keep the ownership table from stretching full width, but LEFT aligned */
.ownership-table-wrap {
    max-width: 1100px;      /* adjust as you like */
    margin: 0;              /* no auto-centering */
}

/* let the table size to content and stay left-justified */
.ownership-table {
    width: 99%;
    margin: 0;
}


/* contract + unit spacing */
.ownership-contract,
.ownership-col-unit {
    padding-top: 0.35rem;
    padding-bottom: 0.35rem;
}

.ownership-contract {
    padding-right: 0.75rem;
}

.ownership-col-unit {
    padding-left: 0.75rem;
}

/* indent child unit rows under lock-off summary */
.ownership-unit-child {
    padding-left: 1.5em;    /* roughly three characters */
}

/* center these columns consistently */
.ownership-col-week,
.ownership-col-usage {
    text-align: center;
}

/* year columns right–aligned */
.ownership-col-year {
    text-align: right;
}

/* totals row */
.ownership-total-row td {
    font-weight: 600;
    border-top: 2px solid #dee2e6;
}
/* totals row */
.ownership-available-total-row td {
    font-weight: 600;
    border-top: 2px solid #dee2e6;
}

.ownership-total-row td,
.ownership-available-total-row td {
  padding-top: 2px;
  padding-bottom: 2px;
}

.ownership-total-row .ownership-cell,
.ownership-available-total-row .ownership-cell {
  line-height: 1.1;
  padding-top: 0;
  padding-bottom: 0;
}



/* makes the card shrink to fit table width */
.vistana-card-wrap {
    width: fit-content;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    display: block;
}

/* prevents the card from forcing full width */
.vistana-card {
    width: auto !important;
    max-width: none !important;
}


/* Add a separator line above the totals row */
.ownership-table .ownership-total-row td {
    border-top: 2px solid #ccc !important;
}

/* Dark resort-group header row */
.table-group-row td {
    background-color: #f5f5f5 !important;
    font-weight: 600 !important;
    border-top: 1px solid #ddd !important;
}


.vistana-scroll-area {
    padding-right: 16px;   /* moves scrollbar to the right */
    box-sizing: content-box;
}

.justify-one-third {
    display: flex;
    justify-content: flex-start;
    padding-left: 33%;
}

.payments-modal-date-col {
    width: 110px;       /* adjust if you want */
    white-space: nowrap;
}

.modal-backdrop-inside {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,.5);
    z-index: 1050;          /* keep this */
    pointer-events: none;   /* <-- add this line */
}



/* 1) Default: everything in the ownership rows uses arrow */
.ownership-detail-row .ownership-cell {
    cursor: default;
}

/* 2) Override: only these two cells get pointer */
.ownership-detail-row .ownership-cell.js-exchange-cell,
.ownership-detail-row .ownership-cell.js-fees-cell {
    cursor: pointer;
}
/* payments screen: whole row is clickable */
.ownership-detail-row.js-payment-clickable .ownership-cell {
    cursor: pointer;
}


#profit-right-card tbody tr.mismatch2-row:hover {
  background-color: rgba(0, 0, 0, 0.03);
  cursor: pointer;
}


#intervalDetailModal .modal-header .badge { font-weight: 600; }
#intervalDetailModal dt { font-weight: 600; }
#intervalDetailModal dd { overflow-wrap: anywhere; }
  

  .interval_summary_card .card-header {
    background: #f6f7f9;
    border-bottom: 1px solid rgba(0,0,0,.06);
  }

  .grp_gross_rev_profit .card-body { padding: 12px !important; }

  .grp_gross_rev_profit .tight_card .card-body { padding: 12px !important; }
  .grp_gross_rev_profit .tight_card .card-footer { padding-top: 6px !important; padding-bottom: 6px !important; }

  .grp_gross_rev_profit .tight_card h3 { font-size: 1.45rem; margin-top: .15rem !important; }
  .grp_gross_rev_profit .tight_card p { margin-bottom: 0 !important; }

.grp_gross_rev_profit .tight_card .gm_pct {
  font-size: 1.05rem !important;
  font-weight: 700;
  line-height: 1.1;
  color: #0e9f6e;
}


  /* reduce gaps between cards inside the grouped card */
  .grp_gross_rev_profit .stack_gap { margin-top: 12px !important; }

  /* reduce padding below the combined card */
  .grp_gross_rev_profit .combined_wrap { padding-bottom: 10px !important; padding-top: 0 !important; }


   body.scans-page {
            overflow-y: auto;
        }

        .unassigned-exchanges-wrapper {
          max-width: 1100px;
          margin-left: 0;
          margin-right: 0;
          padding-left: 12px;
          padding-right: 12px;
        }

        /* Default table-sticky-wrap behavior (used elsewhere) */
        .table-sticky-wrap {
          max-height: 70vh;
          overflow-y: auto;
          margin-bottom: 10px;
        }

        /* For the unassigned exchanges report, prefer page vertical scrolling.
           Disable internal vertical scroll so the table won't show its own scrollbar
           unless the table exceeds page width (allow horizontal scroll then). */
        .unassigned-exchanges-wrapper .table-sticky-wrap {
          max-height: none;       /* let page determine height */
          overflow-y: visible;    /* no internal vertical scrollbar */
          overflow-x: auto;       /* allow horizontal scroll if table is wider */
        }

        /* Column widths for Missing Interval Exchanges table
           Columns: Owner | Vistana Conf | Marriott Conf | Guest | Check In | Check Out | Resort | Unit | View */
        .unassigned-exchanges-table th:nth-child(1),
        .unassigned-exchanges-table td:nth-child(1) {
          width: 20%; /* Owner name */
        }

        .unassigned-exchanges-table th:nth-child(2),
        .unassigned-exchanges-table td:nth-child(2) {
          width: 7%; /* Vistana confirmation (mono) */
          text-align: center; 
          white-space: nowrap;
        }

        .unassigned-exchanges-table th:nth-child(3),
        .unassigned-exchanges-table td:nth-child(3) {
          width: 7%; /* Marriott confirmation (mono) */
          text-align: center;
          white-space: nowrap;
        }

        .unassigned-exchanges-table th:nth-child(4),
        .unassigned-exchanges-table td:nth-child(4) {
          width: 26%; /* Guest name */
          white-space: nowrap;
          overflow: hidden;
          text-overflow: ellipsis;
        }

        .unassigned-exchanges-table th:nth-child(5),
        .unassigned-exchanges-table td:nth-child(5) {
          width: 7%; /* Check In */
          text-align: center;
          white-space: nowrap;
        }

        .unassigned-exchanges-table th:nth-child(6),
        .unassigned-exchanges-table td:nth-child(6) {
          width: 7%; /* Check Out */
          text-align: center;
          white-space: nowrap;
        }

        .unassigned-exchanges-table th:nth-child(7),
        .unassigned-exchanges-table td:nth-child(7) {
          width: 12%; /* Resort */
          white-space: nowrap;
        }

        .unassigned-exchanges-table th:nth-child(8),
        .unassigned-exchanges-table td:nth-child(8) {
          width: 6%; /* Unit */
          text-align: center;
          white-space: nowrap;
        }

        .unassigned-exchanges-table th:nth-child(9),
        .unassigned-exchanges-table td:nth-child(9) {
          width: 6%; /* View */
          text-align: center;
          white-space: nowrap;
        }

        /* Responsive: on small screens, hide less-essential columns and make table fit */
        @media (max-width: 767.98px) {
          .unassigned-exchanges-wrapper { max-width: 100%; padding-left: 8px; padding-right: 8px; }
          .table-sticky-wrap { overflow-x: auto; }
          .unassigned-exchanges-table { table-layout: auto; }

          /* Hide columns: Marriott Conf (3), Guest Name (4), Check Out (6), Resort (7), View (9) */
          .unassigned-exchanges-table th:nth-child(3),
          .unassigned-exchanges-table td:nth-child(3),
          .unassigned-exchanges-table th:nth-child(4),
          .unassigned-exchanges-table td:nth-child(4),
          .unassigned-exchanges-table th:nth-child(6),
          .unassigned-exchanges-table td:nth-child(6),
          .unassigned-exchanges-table th:nth-child(7),
          .unassigned-exchanges-table td:nth-child(7),
          .unassigned-exchanges-table th:nth-child(9),
          .unassigned-exchanges-table td:nth-child(9) {
            display: none;
          }

          .unassigned-exchanges-table th,
          .unassigned-exchanges-table td {
            font-size: 0.85rem;
            padding: .35rem .45rem;
          }

          .unassigned-exchanges-table .limit-width {
            max-width: 120px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            display: inline-block;
            vertical-align: middle;
          }
        }



        /* one left-aligned column that both card + note live in */
.unassigned-exchanges-col {
  max-width: 1100px;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
  display: block;
}

/* stop any shrink-to-fit/inline rules from making them sit side-by-side */
.unassigned-exchanges-col > * {
  display: block;
  width: 100%;
}


.missing-exchanges-col {
  max-width: 1100px;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
  display: block;
}

/* stop any shrink-to-fit/inline rules from making them sit side-by-side */
.missing-exchanges-col > * {
  display: block;
  width: 100%;
}

.mb-0{
    margin-bottom: 0 !important;
}


/* closed */
.revenue-accordion .accordion-button.collapsed {
  background-color: var(--bs-light-bg-subtle);
}

/* open */
.revenue-accordion .accordion-button:not(.collapsed) {
  background-color: #fff;
  box-shadow: none;
}
.adjust_heading {
      margin-top: -10px;
    margin-bottom: 10px;

}


.global_points_summary .card-header {
  background: transparent;
}
.global_points_summary .shadow-sm {
  box-shadow: 0 0.25rem 1.25rem rgba(31, 45, 61, 0.08) !important;
}




/* Let the card size naturally */
.unassigned-exchanges-wrapper {
    width: fit-content;
    max-width: 100%;
}

/* Only scroll when viewport is actually too narrow */
.table-fit {
    max-width: 100%;
    overflow-x: auto;
}


body.scans-page .unassigned-exchanges-wrapper .table-sticky-wrap {
  padding-right: 12px;
  background: var(--bs-card-bg);
  box-sizing: border-box;
}
/* Scope everything to this accordion only */
.revenue-accordion .rev_table {
  width: 100%;
  table-layout: fixed;
  font-size: 0.82rem;
}

/* Never wrap numbers anywhere in these tables */
.revenue-accordion .rev_table th,
.revenue-accordion .rev_table td {
  white-space: nowrap;
}

/* Make sure we do not show ... and do not clip */
.revenue-accordion .rev_table th,
.revenue-accordion .rev_table td {
  overflow: visible;
  text-overflow: clip;
}

/* Scope to the resorts table only */
#resorts_table { table-layout: auto; }

/* Make inputs obey the cell width and not force huge min-width */
#resorts_table .resorts_cell_input {
  min-width: 0 !important;
  width: 100%;
  box-sizing: border-box;
}

/* Narrow columns */
#resorts_table th.col_resort_code,
#resorts_table td.col_resort_code { width: 70px; }

#resorts_table th.col_resort_group,
#resorts_table td.col_resort_group { width: 80px; }

#resorts_table th.col_color,
#resorts_table td.col_color { width: 90px; }

#resorts_table th.col_interval_resort_code,
#resorts_table td.col_interval_resort_code { width: 120px; }

#resorts_table th.col_vistana_search_tag,
#resorts_table td.col_vistana_search_tag { width: 140px; }

/* Medium */
#resorts_table th.col_location,
#resorts_table td.col_location { width: 170px; }

/* Let long text columns breathe */
#resorts_table th.col_resort_name,
#resorts_table td.col_resort_name { width: 280px; }

#resorts_table th.col_resort_search_result_name,
#resorts_table td.col_resort_search_result_name { width: 280px; }

#resorts_table th.col_reservation_resort_name,
#resorts_table td.col_reservation_resort_name { width: 280px; }

.card {
  border-radius: 0.375rem;
  }

.mw-1000 {
  max-width: 1000px;  
}


.card > .card-header {
  border-top-left-radius: 0.375rem;
  border-top-right-radius: 0.375rem;
}

/* ------------------------------------------------------------
   visibility helpers
------------------------------------------------------------ */
.maintain_resorts_page .resorts_table_hidden { display: none !important; }
.maintain_resorts_page .units_table_hidden  { display: none !important; }

/* ------------------------------------------------------------
   units table sizing
   goal: table + card shrink to content, and only scroll when viewport is narrow
------------------------------------------------------------ */
.maintain_resorts_page #units_table{
  table-layout: auto;
  width: max-content;
}

.maintain_resorts_page #units_table th,
.maintain_resorts_page #units_table td{
  white-space: nowrap;
}

/* make units inputs not force wide columns */
.maintain_resorts_page #units_table .cell_input{
  min-width: 0;
  width: auto;
}

/* ------------------------------------------------------------
   units table column widths
   use data-col on the INPUT to control the column width
------------------------------------------------------------ */

/* long_unit_name column */
.maintain_resorts_page #units_table input[data-col="long_unit_name"]{
  width: 280px;
}

/* short_unit_name column */
.maintain_resorts_page #units_table input[data-col="short_unit_name"]{
  width: 190px;
}

/* sort_order column */
.maintain_resorts_page #units_table input[data-col="sort_order"]{
  width: 60px;
}

/* vistana_conf_unit_name column */
.maintain_resorts_page #units_table input[data-col="vistana_conf_unit_name"]{
  width: 220px;
}

/* interval_cert_unit_name column */
.maintain_resorts_page #units_table input[data-col="interval_cert_unit_name"]{
  width: 220px;
}

/* occupancy column */
.maintain_resorts_page #units_table input[data-col="occupancy"]{
  width: 60px;
  text-align: center;
}

.maintain_resorts_page #units_table td:has(input[data-col="amenities"]){
  white-space: normal;
  min-width: 260px;
  max-width: 320px;
}

/* input fills the cell cleanly */
.maintain_resorts_page #units_table input[data-col="amenities"]{
  width: 100%;
  box-sizing: border-box;
  white-space: normal;
}


@media (min-width: 1400px){
  .maintain_resorts_page #units_table td:has(input[data-col="amenities"]){
    max-width: 380px;
  }
}
/* ------------------------------------------------------------
   units card: shrink-wrap on wide screens, full width on narrow
------------------------------------------------------------ */
.maintain_resorts_page #units_table_card{
  display: inline-block;
  width: max-content;
  max-width: 100%;
  vertical-align: top;
}

.maintain_resorts_page #units_table_card .card-body{
  display: block;
  width: auto;
  max-width: 100%;
}

.maintain_resorts_page #units_table_wrapper.table-responsive{
  overflow-x: auto;
  max-width: 100%;
}

/* narrow screens: card must resize to viewport and wrapper scrolls */
@media (max-width: 1200px){
  .maintain_resorts_page #units_table_card{
    display: block;
    width: 100%;
    max-width: 100%;
  }

  .maintain_resorts_page #units_table_wrapper.table-responsive{
    overflow-x: auto;
  }
}

/* ------------------------------------------------------------
   resort dropdown card: shrink-wrap on wide screens, full width on narrow
------------------------------------------------------------ */
.maintain_resorts_page #resort_select_card{
  display: inline-block;
  width: fit-content;
  max-width: 100%;
  vertical-align: top;
}

.maintain_resorts_page #resort_select_card .card-body{
  display: block;
  width: auto;
  max-width: 100%;
}

/* prevent Bootstrap column from forcing wide layout inside this card */
.maintain_resorts_page #resort_select_card .col-md-6{
  flex: 0 0 auto;
  width: auto;
}

/* dropdown sizing */
.maintain_resorts_page #resort_select{
  width: auto;
  min-width: 220px;
}

/* narrow screens: dropdown card fills viewport */
@media (max-width: 1200px){
  .maintain_resorts_page #resort_select_card{
    display: block;
    width: 100%;
    max-width: 100%;
  }

  .maintain_resorts_page #resort_select{
    width: 100%;
  }
}




.owner-field.is_saving,
.owner-field-select.is_saving,
.owner-field-checkbox.is_saving {
  border-color: #ffc107 !important;
}

.owner-field.is_saved,
.owner-field-select.is_saved,
.owner-field-checkbox.is_saved {
  border-color: #198754 !important;
}

.owner-field.is_error,
.owner-field-select.is_error,
.owner-field-checkbox.is_error {
  border-color: #dc3545 !important;
}


/* ============================================================
   Maintain Resorts page only (drop-in replacement)
   - Keeps cards shrink-wrapped on wide screens
   - Prevents tables from spilling out of cards (wrapper scrolls)
   - Full width cards on narrow screens
============================================================ */

/* visibility helpers */
.maintain_resorts_page .resorts_table_hidden,
.maintain_resorts_page .units_table_hidden,
.maintain_resorts_page .views_table_hidden{
  display: none !important;
}

/* shared: shrink-wrap cards on wide screens */
.maintain_resorts_page #units_table_card,
.maintain_resorts_page #views_table_card{
  display: inline-block;
  width: max-content;
  max-width: 100%;
  vertical-align: top;
}

.maintain_resorts_page #resorts_table_card{
  display: block;
  clear: both;
  width: max-content;
  max-width: 100%;
  margin-top: 12px;
  margin-left: 0;
}

/* shared: table sizing */
.maintain_resorts_page #resorts_table,
.maintain_resorts_page #units_table,
.maintain_resorts_page #views_table{
  table-layout: auto;
  width: max-content;
}

.maintain_resorts_page #resorts_table th,
.maintain_resorts_page #resorts_table td,
.maintain_resorts_page #units_table th,
.maintain_resorts_page #units_table td,
.maintain_resorts_page #views_table th,
.maintain_resorts_page #views_table td{
  white-space: nowrap;
}

/* shared: make inputs not force columns wider than needed */
.maintain_resorts_page #resorts_table .cell_input,
.maintain_resorts_page #units_table .cell_input,
.maintain_resorts_page #views_table .cell_input{
  min-width: 0;
  width: auto;
}

/* wrappers: prevent overflow off the card */
.maintain_resorts_page #resorts_table_wrapper.table-responsive,
.maintain_resorts_page #units_table_wrapper.table-responsive,
.maintain_resorts_page #views_table_wrapper.table-responsive{
  max-width: 100%;
  overflow-x: auto;
}

/* narrow screens: cards fill viewport */
@media (max-width: 1200px){
  .maintain_resorts_page #resorts_table_card,
  .maintain_resorts_page #units_table_card,
  .maintain_resorts_page #views_table_card{
    display: block;
    width: 100%;
    max-width: 100%;
  }
}

/* spacing between Units and Views when inline */
.maintain_resorts_page #units_table_card{
  margin-right: 16px;
}

@media (max-width: 1200px){
  .maintain_resorts_page #units_table_card{
    margin-right: 0;
  }
}

/* views column widths (driven by data-col on inputs) */
.maintain_resorts_page #views_table input[data-col="long_view_name"]{ width: 280px; }
.maintain_resorts_page #views_table input[data-col="short_view_name"]{ width: 160px; }
.maintain_resorts_page #views_table input[data-col="sort_order"]{
  width: 60px;
  text-align: center;
}

/* delete column + button sizing */
.maintain_resorts_page #resorts_table td.col-1,
.maintain_resorts_page #units_table td.col-1,
.maintain_resorts_page #views_table td.col-1{
  width: 44px;
  min-width: 44px;
  max-width: 44px;
  padding-left: .25rem;
  padding-right: .25rem;
}

.maintain_resorts_page .delete_resort_btn,
.maintain_resorts_page .delete_unit_btn,
.maintain_resorts_page .delete_view_btn{
  width: 34px;
  height: 34px;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.rate_page_container {
  max-width: 1400px;
  margin-left: 0;
  margin-right: 0;
}

.rate_card {
  width: 100%;
  overflow: hidden;
}

/* Let the table auto-layout instead of forcing widths */
.rate_table {
  table-layout: auto;
  width: 100%;
}

/* Column hints, not hard locks */
.rate_unit_col { min-width: 140px; }
.rate_view_col { min-width: 110px; }
.rate_total_col { min-width: 90px; }
.rate_day_col { min-width: 84px; }

.rate_price_spacer_col {
  width: 22px;
  min-width: 22px;
  background: transparent;
  border-left: 0;
  border-right: 0;
}

.rate_price_col {
  width: 140px;
  min-width: 140px;
}

.rate_price_cell {
  border-left: 0;
}

.rate_price_input {
  width: 120px;
}

.rate_money_cell {
  text-align: right;
}

.rate_money_value {
  display: inline-block;
  min-width: 48px;
}

/* Prevent wrapping but allow shrinking */
.rate_table th,
.rate_table td {
  white-space: nowrap;
}

/* Total column styling */
.rate_total_cell {
  text-align: center;
}

.rate_total_value {
  display: block;
  font-weight: 700;
  width: 100%;
  text-align: center;
}

/* Scroll only when viewport is truly too small */
@media (max-width: 900px) {
  .rate_card .table-responsive {
    overflow-x: auto;
  }
}

/* Header rounding consistency */
.rate_card .card-header {
  border-top-left-radius: 0.375rem;
  border-top-right-radius: 0.375rem;
}

#rate_table_wrapper {
  display: none;
}



.rate_price_input {
  width: 120px;
  font-weight: 700;
  font-size: 1.05rem;
}


.staroptions_page_container {
  max-width: 1000px;
  margin-left: 0;
  margin-right: 0;
}

.staroptions_card {
  width: 100%;
  overflow: hidden;
}

/* Let the table auto-layout instead of forcing widths */
.staroptions_table {
  table-layout: auto;
  width: 100%;
}

/* Column hints, not hard locks */
.staroptions_unit_col { min-width: 140px; }
.staroptions_view_col { min-width: 110px; }
.staroptions_total_col { min-width: 90px; }
.staroptions_day_col { min-width: 50px; }

.staroptions_price_spacer_col {
  width: 22px;
  min-width: 22px;
  background: transparent;
  border-left: 0;
  border-right: 0;
}

.staroptions_price_col {
  width: 140px;
  min-width: 140px;
}

.staroptions_cell {
  min-width: 50px;
}




/* Prevent wrapping but allow shrinking */
.staroptions_table th,
.staroptions_table td {
  white-space: nowrap;
}

/* Total column styling */
.staroptions_total_cell {
  text-align: center;
}

.staroptions_total_value {
  display: block;
  font-weight: 700;
  width: 100%;
  text-align: center;
}

/* Scroll only when viewport is truly too small */
@media (max-width: 900px) {
  .staroptions_card .table-responsive {
    overflow-x: auto;
  }
}

/* Header rounding consistency */
.staroptions_card .card-header {
  border-top-left-radius: 0.375rem;
  border-top-right-radius: 0.375rem;
}

#staroptions_table_wrapper {
  display: none;
}



/* Slightly tighter padding for Sun–Sat cells only */
.staroptions_table td:nth-child(n+4) {
  padding-left: 6px;
  padding-right: 6px;
}

/* Narrow the input, not the column */
.staroptions_cell {
  width: 72px;
  max-width: 72px;
  padding-left: 6px;
  padding-right: 6px;
}



/* Center Sun–Sat day columns */
.rate_day_col,
.rate_money_cell,
.rate_money_cell .rate_money_value {
  text-align: center !important;
}

/* Center Airbnb column */
.rate_price_airbnb_cell,
.rate_price_airbnb_cell .rate_price_airbnb_value {
  text-align: center !important;
}


/* Center Sun-Sat values */
.rate_table td.rate_money_cell {
  text-align: center !important;
}

.rate_table td.rate_money_cell > span.rate_money_value {
  display: inline-block;
  width: 100%;
  text-align: center !important;
}

/* Center Airbnb column (kills Bootstrap text-end) */
.rate_table td.rate_price_airbnb_cell,
.rate_table td.rate_price_airbnb_cell.text-end {
  text-align: center !important;
}

.rate_table td.rate_price_airbnb_cell > span.rate_price_airbnb_value {
  display: inline-block;
  width: 100%;
  text-align: center !important;
}

/* Optional: center the Airbnb header too */
.rate_table th.rate_price_col {
  text-align: center !important;
}


.rate_table td.rate_price_cell input.rate_price_input {
  text-align: center !important;
}


/* ===== Maintain Rates only: center horizontally + vertically ===== */

/* vertical centering for ALL body cells in this table */
#rate_page table.rate_table tbody td {
  vertical-align: middle !important;
}

/* horizontal centering for Sun–Sat cells */
#rate_page table.rate_table tbody td.rate_money_cell,
#rate_page table.rate_table tbody td.rate_money_cell > span.rate_money_value {
  text-align: center !important;
}

/* horizontal centering for Airbnb column */
#rate_page table.rate_table tbody td.rate_price_airbnb_cell,
#rate_page table.rate_table tbody td.rate_price_airbnb_cell > span.rate_price_airbnb_value {
  text-align: center !important;
}

/* force the spans to occupy the cell so centering is obvious */
#rate_page table.rate_table tbody td.rate_money_cell > span.rate_money_value,
#rate_page table.rate_table tbody td.rate_price_airbnb_cell > span.rate_price_airbnb_value {
  display: block !important;
  width: 100% !important;
}


#rate_page table.rate_table tbody td.rate_price_cell {
  vertical-align: middle !important;
}



/* Location -> Resort Codes page */
.location_resort_left_col {
  width: 1000px;
  max-width: 1000px;
  flex: 0 0 1000px;
}

.location_resort_left_card .card-body {
  padding-bottom: 1rem;
}

.location_resort_calendar_row {
  margin-top: 14px;
}


/* location_resort page */
#resort_and_dates_row {
  width: 100%;
}

#resort_and_dates_row .travel_dates_input {
  min-width: 260px;
}

/* keep resort codes and calendar right next to each other */
.location_resort_row{
  display:flex;
  align-items:flex-start;
  gap:16px;
  flex-wrap:wrap; /* if the card gets narrow, calendar drops below */
}

.location_resort_codes_col{
  flex: 0 1 auto; /* do NOT grow to full width */
}

.location_resort_dates_col{
  flex: 0 0 260px; /* fixed calendar width */
}

.location_resort_dates_col .travel_dates_input{
  width: 260px;
}

.travel_dates_header {
  min-width: 150px;
  text-align: right;
}

/* Put this in your CSS file */
.selection_summary_note {
  font-size: 0.9rem;
}



/* 80/20 layout at xl and up */
@media (min-width: 1200px) {
  .selection_summary_left_col { flex: 0 0 80%; max-width: 80%; }
  .selection_summary_right_col { flex: 0 0 20%; max-width: 20%; }
}

/* Ensure the right table spans the full inner width of the card (minus padding) */
.selection_summary_right_tablewrap,
.selection_summary_table_right {
  width: 100%;
}

/* Perfect row alignment between left and right tables */
.selection_summary_table_left tbody tr,
.selection_summary_table_right tbody tr {
  height: 44px;              /* adjust once if you want tighter/looser */
}

/* Make both tables consistent about padding/line-height so row heights match */
.selection_summary_table_left td,
.selection_summary_table_left th,
.selection_summary_table_right td,
.selection_summary_table_right th {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  line-height: 1.2;
  vertical-align: middle;
}

/* Optional: keep the right table from shrinking */
.selection_summary_right_col {
  min-width: 260px;          /* adjust or remove if you want it smaller */
}



/* Make the 80/20 split kick in at lg so it works on your current screen */
@media (min-width: 992px) {
  .selection_summary_left_col { flex: 0 0 80%; max-width: 80%; }
  .selection_summary_right_col { flex: 0 0 20%; max-width: 20%; }
}

/* If you want to guarantee it never collapses too small */
@media (min-width: 992px) {
  .selection_summary_right_col { min-width: 260px; }
}

/* Tighten padding on the RIGHT card only */
.selection_summary_right_card .card-body {
  padding: 0.75rem; /* default is bigger */
}

/* Remove extra spacing around the right table */
.selection_summary_right_card .table-responsive {
  margin: 0;
  padding: 0;
}

/* Make the right table fill the card body width */
.selection_summary_table_right {
  width: 100%;
  margin: 0;
}

/* Reduce table cell padding on the right table so it doesn't look like a tiny table floating */
.selection_summary_table_right th,
.selection_summary_table_right td {
  padding: 0.35rem 0.5rem;
  line-height: 1.2;
  vertical-align: middle;
}

/* Keep table header and body aligned cleanly */
.selection_summary_table_left,
.selection_summary_table_right {
  table-layout: fixed;
}

/* Optional: if your spacer is pushing too much and making the right card look weird */
.selection_summary_spacer {
  flex: 1 1 auto;
  max-height: 206px;
}

.options_header_height {
  height: 38px;
}


/* Force the two summary cards to live on one line */
.selection_summary_row {
  display: flex;
  gap: 1rem;
  align-items: stretch;
  flex-wrap: nowrap; /* <-- prevents stacking */
}

/* Left card = ~80%, allowed to shrink slightly */
.selection_summary_left_col {
  flex: 1 1 80%;
  min-width: 0; /* critical for flex shrink */
}

/* Right card = ~20%, fixed-ish */
.selection_summary_right_col {
  flex: 0 0 20%;
  min-width: 240px; /* prevents collapse */
}

/* Make cards fill their columns */
.selection_summary_left_col .card,
.selection_summary_right_col .card {
  height: 100%;
}

/* Tighten right card padding (already mostly right, keeping here for clarity) */
.selection_summary_right_card .card-body {
  padding: 0.75rem;
}

/* Right table fills card width cleanly */
.selection_summary_table_right {
  width: 100%;
  margin: 0;
}

/* Match row heights exactly */
.selection_summary_table_left tbody tr,
.selection_summary_table_right tbody tr {
  height: 44px;
}

.selection_summary_table_left td,
.selection_summary_table_right td,
.selection_summary_table_left th,
.selection_summary_table_right th {
  padding: 0.5rem;
  line-height: 1.2;
  vertical-align: middle;
}
  .selection_summary_left_col_narrow {
  max-width: 520px; /* adjust as needed */
}

.summary_date_row {
  display: grid;
  grid-template-columns: max-content max-content max-content;
  column-gap: 6px;
  align-items: center;
}

.summary_date_label {
  text-align: right;
  min-width: 80px;
  font-weight: 700;
}

.summary_date_value,
.summary_date_dow {
  white-space: nowrap;
}


.resort-code-btn[data-selected="true"] {
  color: var(--bs-btn-hover-color);
  background-color: var(--bs-btn-hover-bg);
  border-color: var(--bs-btn-hover-border-color);
}


.options_header_height th {
  height: 38px;
  vertical-align: middle;
}

/* Overflow days that are inside the range should look like normal inRange (gray), not selected (blue) */
.flatpickr-day.nextMonthDay.inRange,
.flatpickr-day.prevMonthDay.inRange {
  background: #e9ecef;
  border-color: transparent;
  color: #212529;
  opacity: 1;
}

/* Keep the actual range endpoints blue, even if they are overflow days */
.flatpickr-day.nextMonthDay.startRange,
.flatpickr-day.nextMonthDay.endRange,
.flatpickr-day.prevMonthDay.startRange,
.flatpickr-day.prevMonthDay.endRange {
  background: #0d6efd;
  border-color: #0d6efd;
  color: #fff;
  opacity: 1;
}

/* While dragging, flatpickr may apply these classes too, keep them consistent */
.flatpickr-day.nextMonthDay.inRange:hover,
.flatpickr-day.prevMonthDay.inRange:hover {
  background: #e9ecef;
  color: #212529;
}

/* Optional: non-range overflow days still look muted */
.flatpickr-day.nextMonthDay:not(.inRange):not(.startRange):not(.endRange),
.flatpickr-day.prevMonthDay:not(.inRange):not(.startRange):not(.endRange) {
  color: #adb5bd;
}


.summary_copy_btn_row {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 0.5rem;
}

.summary_top_row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.summary_top_text {
  flex: 1 1 auto;
  min-width: 0;
}




.swal-copy-rates-grid {
  font-size: 16px;
  line-height: 1.6;
  display: inline-grid;
  grid-template-columns: auto 1fr;
  column-gap: 10px;
  row-gap: 6px;
  text-align: left;
}

.swal-copy-rates-label {
  font-weight: 600;
  text-align: right;
  white-space: nowrap;
}

.swal-copy-rates-value {
  text-align: left;
  word-break: break-word;
}



.card-auto-width {
  display: inline-block;
  width: auto;
}

.card-auto-width .card-body {
  white-space: nowrap;
}

.year_filter .btn.btn-outline-secondary.active {
  background-color: var(--bs-secondary);
  border-color: var(--bs-secondary);
  color: #fff;
}


.year_filter[data-controls-totals="1"] .btn.btn-outline-secondary:not(.active) {
  color: #ffffff;
  border-color: #ffffff;
}

.year_filter[data-controls-totals="1"] .btn.btn-outline-secondary:not(.active):hover {
  background-color: rgba(255, 255, 255, 0.15);
  color: #ffffff;
  border-color: #ffffff;
}

/* file: seasons_table.css */

.maintain_seasons_page #seasons_calendars_row { gap: 12px; }

.maintain_seasons_page #seasons_calendars_row > div { flex: 0 0 auto; width: 256px; margin: 6px; background-color: transparent; }

.maintain_seasons_page #seasons_calendars_row > div > .border.rounded.bg-white.p-2 { width: 256px; border-width: 1px; padding-left: 8px; padding-right: 8px; box-sizing: border-box; }

.maintain_seasons_page #seasons_calendars_row .fw-semibold { white-space: nowrap; }

.maintain_seasons_page #seasons_calendars_row table { table-layout: fixed; width: auto; }

.maintain_seasons_page #seasons_calendars_row th,
.maintain_seasons_page #seasons_calendars_row td { width: 32px; height: 28px; padding: 0; vertical-align: middle; }

.maintain_seasons_page #seasons_calendars_row td { line-height: 28px; }

.maintain_seasons_page td.season_day_cell { cursor: pointer; }


.btn-outline-black.btn-year {
  color: var(--bs-body-color);
  border: 1px solid var(--bs-body-color);
  background-color: transparent;
}

/* hover: slightly darker gray overlay using theme RGB vars */
.btn-outline-black.btn-year:hover {
  background-color: rgba(var(--bs-body-color-rgb), 0.12);
  border-color: var(--bs-body-color);
  color: var(--bs-body-color);
}

/* active: solid secondary (selected) */
.btn-outline-black.btn-year.active,
.btn-outline-black.btn-year:active {
  background-color: var(--bs-secondary);
  border-color: var(--bs-secondary);
  color: var(--bs-white);
}

.btn-outline-black.btn-year:focus {
  box-shadow: none;
}


.rate_page_container .rate_header{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap: nowrap;
}

.rate_page_container .rate_header_left{
  min-width: 240px;
  flex: 0 0 auto;
}

.rate_page_container .rates_resort_name{
  font-size: 0.95em;
  color: var(--bs-secondary-color);
}

/* season area */
.rate_page_container .rate_header_season{
  display:flex;
  align-items:center;
  gap:10px;
  flex: 0 0 auto;
  white-space: nowrap;
}

.rate_page_container .rate_season_btns{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap: nowrap;
}

.rate_page_container .rate_season_label_wrap{
  min-width: 120px;
  display:flex;
  align-items:center;
}

.rate_page_container .rate_season_label{
  font-weight: 600;
  color: var(--bs-secondary-color);
  white-space: nowrap;
}

/* if you do not want the "hi/med/low" text to the right, uncomment this */
/*
.rate_page_container .rate_season_label{
  display:none;
}
*/

/* push year buttons + action button to the far right */
.rate_page_container .rate_header_right{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:10px;
  flex: 0 0 auto;
  white-space: nowrap;
}

.rate_page_container .year_filter{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap: nowrap;
}

/* season buttons base (match year buttons vibe) */
.rate_page_container .rate_season_btn{
  border-width: 1px;
}

/* HIGH */
.rate_page_container .rate_season_btn.season_high{
  background: var(--bs-danger-bg-subtle);
  border-color: var(--bs-danger-border-subtle);
  color: var(--bs-danger-text-emphasis);
}
.rate_page_container .rate_season_btn.season_high.active{
  background: var(--bs-danger);
  border-color: var(--bs-danger);
  color: #fff;
}

/* MED */
.rate_page_container .rate_season_btn.season_med{
  background: var(--bs-warning-bg-subtle);
  border-color: var(--bs-warning-border-subtle);
  color: var(--bs-warning-text-emphasis);
}
.rate_page_container .rate_season_btn.season_med.active{
  background: var(--bs-warning);
  border-color: var(--bs-warning);
  color: #212529;
}

/* LOW */
.rate_page_container .rate_season_btn.season_low{
  background: var(--bs-success-bg-subtle);
  border-color: var(--bs-success-border-subtle);
  color: var(--bs-success-text-emphasis);
}
.rate_page_container .rate_season_btn.season_low.active{
  background: var(--bs-success);
  border-color: var(--bs-success);
  color: #fff;
}

.rate_page_container .rate_header_season{
  visibility: hidden;
}


/* container */
.staroptions_season_btns{
  display:flex;
  align-items:center;
  gap:6px;
  white-space: nowrap;
}

/* base button look (matches year buttons) */
.staroptions_season_btn{
  border-width: 1px;
}

/* HIGH */
.staroptions_season_btn.season_high{
  background: var(--bs-danger-bg-subtle);
  border-color: var(--bs-danger-border-subtle);
  color: var(--bs-danger-text-emphasis);
}
.staroptions_season_btn.season_high.active{
  background: var(--bs-danger);
  border-color: var(--bs-danger);
  color:#fff;
}

/* MED default */
.staroptions_season_btns .staroptions_season_btn.season_med{
  background: rgba(255, 235, 59, 0.22) !important;
  border-color: rgba(255, 235, 59, 0.70) !important;
  color: #6b5a00 !important;
  background-image: none !important;
  box-shadow: none !important;
  filter: none !important;
}

/* MED selected */
.staroptions_season_btns .staroptions_season_btn.season_med.active,
.staroptions_season_btns .staroptions_season_btn.season_med:active,
.staroptions_season_btns .staroptions_season_btn.season_med:focus,
.staroptions_season_btns .staroptions_season_btn.season_med:hover{
  background: #ffeb3bad !important;          /* very yellow */
  border-color: #ffeb3bad !important;
  color: #212529 !important;
  background-image: none !important;
  box-shadow: none !important;
  filter: none !important;
}

/* LOW */
.staroptions_season_btn.season_low{
  background: var(--bs-success-bg-subtle);
  border-color: var(--bs-success-border-subtle);
  color: var(--bs-success-text-emphasis);
}
.staroptions_season_btn.season_low.active{
  background: var(--bs-success);
  border-color: var(--bs-success);
  color:#fff;
}



.do_not_rent_dot {
  position: absolute;
  top: 0;
  left: 100%;
  transform: translate(-35%, -35%);
  width: 14px;
  height: 14px;
  background-color: #dc3545;
  border: 1px solid #ffffff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}

.do_not_rent_dot_x {
  position: relative;
  width: 8px;
  height: 8px;
}

.do_not_rent_dot_x::before,
.do_not_rent_dot_x::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 8px;
  height: 2px;
  background-color: #ffffff;
  transform-origin: center;
}

.do_not_rent_dot_x::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.do_not_rent_dot_x::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}



.no-wrap { white-space: nowrap; }
.table-fit { display: inline-block; max-width: 100%; }
.owners-card-header .btn-year { margin-left: 0.25rem; }


.do_not_rent_toggle { cursor: pointer; user-select: none; }
.do_not_rent_toggle .do_not_rent_x { margin-left: 4px; font-weight: 700; }
.do_not_rent_toggle.do_not_rent_active { text-decoration: underline; }


.do_not_rent_toggle {
  cursor: pointer;
  text-decoration: none;
}

.do_not_rent_toggle:hover,
.do_not_rent_toggle:focus,
.do_not_rent_toggle:active {
  text-decoration: none;
}

.do_not_rent_toggle,
.do_not_rent_toggle * {
  text-decoration: none !important;
}

.do_not_rent_header {
  cursor: pointer;
}
/* Keep table rows clean: remove all borders */
.ownership-table tbody tr > * {
  border-top: none;
  border-bottom: none;
}

/* Add row height (halfway version) */
.ownership-table tbody tr.ownership-detail-row > td,
.ownership-table tbody tr.table-group-row > td {
  padding-top: 6px;
  padding-bottom: 6px;
  line-height: 1.35;
}

/* Internal cell padding */
.ownership-table .ownership-cell {
  padding-top: 3px;
  padding-bottom: 3px;
}

.ownership-category {
  padding-top: 3px;
  padding-bottom: 3px;
  min-width: 300px;
}

/* Restore the intentional lines */
.ownership-table tbody tr.table-group-row > *,
.ownership-table tbody tr.ownership-row-contract > * {
  border-top: 1px solid #dee2e6;
}

/* -------------------------------------------------- */
/* Year buttons pinned top-right (no !important)      */
/* -------------------------------------------------- */
.ownership-table thead th.ownership-year-buttons-cell {
  padding: 6px 10px;
  text-align: right;
  vertical-align: top;
}

.ownership-table thead .ownership-year-buttons {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

/* keep the first header row compact */
.ownership-table thead tr:first-child th {
  padding-top: 6px;
  padding-bottom: 6px;
}

/* keep the second header row aligned and consistent */
.ownership-table thead tr:nth-child(2) th {
  vertical-align: bottom;
}

/* -------------------------------------------------- */
/* Tighten owner spacing even if rows are "plain"     */
/* -------------------------------------------------- */
.ownership-table tbody tr:not(.owner-separator-row) > td {
  padding-top: 6px;
  padding-bottom: 6px;
  line-height: 1.25;
}

/* Make the separator itself thinner */
.ownership-table tbody tr.owner-separator-row td {
  height: 2px;
  padding: 0;
  border-top: 1px solid #dee2e6;
  background-color: #f8f9fa;
}

/* -------------------------------------------------- */
/* Fix Available + Total header alignment             */
/* -------------------------------------------------- */
.ownership-table thead th.ownership-col-available,
.ownership-table thead th.ownership-col-total {
  text-align: right;
}

.ownership-table thead th.ownership-col-available .ownership-cell,
.ownership-table thead th.ownership-col-total .ownership-cell {
  display: block;
  text-align: right;
}



tr.ownership-detail-row .ownership-unit,
tr.ownership-detail-row .ownership-unit-child {
  cursor: pointer;
}


/* Make the card a containing block for sticky children */
.owners-card {
  position: relative;
  overflow: hidden;
}

/* Sticky header that stays on top */
.owners-card-header.sticky-card-header {
  position: sticky;
  top: 0;
  z-index: 10;
  background: var(--bs-body-bg);
}

/* Prevent content from sliding under the sticky header */
.owners-card .p-3.p-md-4 {
  padding-top: 68px;
}



.reservations-guest {
  max-width: 160px;       /* adjust as needed */
  min-width: 0;           /* critical for flex children */
}

.reservations-visible {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  min-width: 100px;
}


.reservations-guest > * {
  min-width: 0;           /* required so text can shrink inside flex */
}


.guest-name-ellipsis {
  display: block;
  max-width: 140px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
