/* Calendar Container */
.ruutio-calendar-container {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
    Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
  color: #333;
  background-color: #fff;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  border-radius: 4px;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-height: 500px;
  position: relative;
  box-sizing: border-box;
}

/* Calendar Layout */
.ruutio-calendar-layout {
  display: flex;
  flex: 1;
  width: 100%;
  height: 100%;
}

.ruutio-calendar-sidebar {
  width: 200px;
  min-width: 200px;
  background-color: #fafafa;
  border-right: 1px solid #e0e0e0;
  padding: 10px;
  overflow-y: auto;
}

.ruutio-calendar-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* Mini Month Preview */
.ruutio-calendar-mini-month {
  background-color: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
  padding: 8px;
  margin-bottom: 10px;
}

.ruutio-calendar-mini-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.ruutio-calendar-mini-title {
  font-size: 0.9em;
  font-weight: 500;
  color: #333;
  padding: 0px 0px 0px 15px;
}

.ruutio-calendar-mini-prev,
.ruutio-calendar-mini-next {
  background: none;
  border: none;
  color: #666;
  cursor: pointer;
  padding: 2px 4px;
  font-size: 1.1em;
  border-radius: 2px;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Mobile signed event indicator: stripes and checkmark for signed appointments */
.mobile-appointment-item.signed {
  position: relative;
  overflow: hidden;
}
.mobile-appointment-item.signed::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: repeating-linear-gradient(
    135deg,
    rgba(0, 128, 0, 0.1) 0px,
    rgba(0, 128, 0, 0.1) 8px,
    rgba(255, 255, 255, 0.15) 8px,
    rgba(255, 255, 255, 0.15) 16px
  );
  z-index: 1;
  opacity: 0.7;
  border-radius: 6px;
  mix-blend-mode: multiply;
  transition: opacity 0.2s;
}
.mobile-appointment-item.signed::before {
  content: "\2714"; /* Unicode checkmark */
  position: absolute;
  top: 8px;
  right: 12px;
  font-size: 1.2em;
  color: #218838;
  background: rgba(255, 255, 255, 0.85);
  border-radius: 50%;
  width: 1.6em;
  height: 1.6em;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
  pointer-events: none;
}
.mobile-appointment-item.signed:active::after {
  opacity: 1;
}

.ruutio-calendar-mini-prev:hover,
.ruutio-calendar-mini-next:hover {
  background-color: #e0e0e0;
  color: #333;
}

.ruutio-calendar-mini-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
}

.ruutio-calendar-mini-day-header {
  text-align: center;
  font-size: 0.7em;
  font-weight: 500;
  color: #666;
  padding: 2px;
  height: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.ruutio-calendar-mini-day-cell {
  text-align: center;
  font-size: 0.75em;
  padding: 2px;
  height: 20px;
  cursor: pointer;
  border-radius: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.ruutio-calendar-mini-day-cell:hover {
  background-color: #f0f0f0;
}

.ruutio-calendar-mini-day-cell.other-month {
  color: #ccc;
}

.ruutio-calendar-mini-day-cell.today {
  background-color: #3788d8;
  color: white;
  font-weight: 500;
}

.ruutio-calendar-mini-day-cell.current {
  background-color: #2c6fb1;
  color: white;
  font-weight: 500;
}

.ruutio-calendar-mini-day-cell.today.current {
  background-color: #1e5a8a;
}

/* Event Filters */
.ruutio-calendar-event-filters {
  background-color: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
  padding: 8px;
  margin-bottom: 10px;
}

.ruutio-calendar-filters-header {
  font-size: 0.9em;
  font-weight: 600;
  color: #333;
  margin-bottom: 12px;
  padding-bottom: 6px;
  border-bottom: 1px solid #f0f0f0;
}

.ruutio-calendar-filter-section {
  margin-bottom: 8px;
}

.ruutio-calendar-filter-section:last-child {
  margin-bottom: 0;
}

.ruutio-calendar-filter-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 4px 0;
  cursor: pointer;
  border-radius: 2px;
  transition: background-color 0.2s;
}

.ruutio-calendar-filter-section-header:hover {
  background-color: #f8f8f8;
}

.ruutio-calendar-filter-section-header:focus {
  outline: 2px solid #3788d8;
  outline-offset: 2px;
}

.ruutio-calendar-filter-section-title {
  font-size: 0.8em;
  font-weight: 500;
  color: #333;
}

.ruutio-calendar-filter-toggle {
  font-size: 0.7em;
  color: #666;
  transition: transform 0.2s;
}

.ruutio-calendar-filter-options {
  margin-top: 6px;
  margin-left: 8px;
}

.ruutio-calendar-filter-option {
  display: flex;
  align-items: center;
  margin-bottom: 4px;
  padding: 2px 0;
}

.ruutio-calendar-filter-option:last-child {
  margin-bottom: 0;
}

.ruutio-calendar-filter-checkbox {
  margin: 0;
  margin-right: 6px;
  cursor: pointer;
  accent-color: #3788d8;
}

.ruutio-calendar-filter-label {
  font-size: 0.75em;
  color: #555;
  cursor: pointer;
  user-select: none;
  line-height: 1.2;
}

.ruutio-calendar-filter-label:hover {
  color: #333;
}

/* Text Filter Styles */
.ruutio-calendar-text-filter-container {
  position: relative;
  margin: 8px 0;
}

.ruutio-calendar-text-filter-input {
  width: 100%;
  padding: 6px 30px 6px 8px;
  border: 1px solid #ccc;
  border-radius: 3px;
  font-size: 12px;
  outline: none;
  box-sizing: border-box;
  background-color: #fff;
  font-family: inherit;
}

.ruutio-calendar-text-filter-input:focus {
  border-color: #3788d8;
  box-shadow: 0 0 0 2px rgba(55, 136, 216, 0.1);
}

.ruutio-calendar-text-filter-input::placeholder {
  color: #999;
  font-style: italic;
}

.ruutio-calendar-text-filter-clear {
  position: absolute;
  right: 4px;
  top: 4px;
  background: none;
  border: none;
  font-size: 16px;
  color: #666;
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 3px;
  line-height: 1;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.ruutio-calendar-text-filter-clear:hover {
  background-color: #f0f0f0;
  color: #333;
}

.ruutio-calendar-text-filter-clear:focus {
  outline: 2px solid #3788d8;
  outline-offset: 1px;
}

/* Indeterminate checkbox styling */
.ruutio-calendar-filter-checkbox:indeterminate {
  background-color: #3788d8;
  border-color: #3788d8;
}

/* Mobile Responsive */
@media (max-width: 1020px) {
  .ruutio-calendar-layout {
    flex-direction: column;
  }

  .ruutio-calendar-sidebar {
    width: 100%;
    min-width: auto;
    border-right: none;
    border-bottom: 1px solid #e0e0e0;
    padding: 8px;
  }

  .ruutio-calendar-mini-month {
    margin-bottom: 5px;
  }

  .ruutio-calendar-event-filters {
    margin-bottom: 5px;
  }

  .ruutio-calendar-filter-section-header {
    padding: 6px 4px;
  }

  .ruutio-calendar-filter-section-title {
    font-size: 0.85em;
  }

  .ruutio-calendar-filter-label {
    font-size: 0.8em;
  }
}

/* Calendar Header */
.ruutio-calendar-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 16px;
  border-bottom: 1px solid #e0e0e0;
}

.ruutio-calendar-navigation {
  display: flex;
  align-items: center;
}

.ruutio-calendar-view-switcher {
  display: flex;
  align-items: center;
}

.ruutio-calendar-title {
  font-size: 1.2em;
  font-weight: 500;
  margin: 0 16px;
}

/* Calendar Buttons - Using unified button system */
.ruutio-calendar-container .ruutio-calendar-prev,
.ruutio-calendar-container .ruutio-calendar-next,
.ruutio-calendar-container .ruutio-calendar-today,
.ruutio-calendar-container .ruutio-calendar-month-view,
.ruutio-calendar-container .ruutio-calendar-week-view,
.ruutio-calendar-container .ruutio-calendar-add-event {
  /* Override only necessary properties for calendar-specific styling */
  background-color: #f0f0f0;
  border: 1px solid #e0e0e0;
  color: #333;
  padding: 6px 12px;
  margin: 0 2px;
  font-size: 0.9em;
}

.ruutio-calendar-container .ruutio-calendar-prev:hover,
.ruutio-calendar-container .ruutio-calendar-next:hover,
.ruutio-calendar-container .ruutio-calendar-today:hover,
.ruutio-calendar-container .ruutio-calendar-month-view:hover,
.ruutio-calendar-container .ruutio-calendar-week-view:hover {
  background-color: #e0e0e0;
  color: #333;
}

.ruutio-calendar-container .ruutio-calendar-month-view.active,
.ruutio-calendar-container .ruutio-calendar-week-view.active {
  background-color: #3788d8;
  color: white;
  border-color: #3788d8;
}

.ruutio-calendar-container .ruutio-calendar-add-event {
  background-color: #3788d8;
  color: white;
  border-color: #3788d8;
}

.ruutio-calendar-container .ruutio-calendar-add-event:hover {
  background-color: #2c6fb1;
  color: white;
}

/* Calendar Content */
.ruutio-calendar-content {
  flex: 1;
  overflow: auto;
  position: relative;
  width: 100%;
}

/* Month View */
.ruutio-calendar-month-grid {
  display: grid;
  grid-template-rows: auto repeat(6, 1fr);
  height: 100%;
  min-height: 400px;
}

.ruutio-calendar-header-row {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  border-bottom: 1px solid #e0e0e0;
}

.ruutio-calendar-day-header {
  padding: 8px;
  font-weight: 500;
}

.ruutio-calendar-week-row {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  border-bottom: 1px solid #e0e0e0;
}

.ruutio-calendar-day-cell {
  border-right: 1px solid #e0e0e0;
  min-height: 80px;
  padding: 4px;
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.ruutio-calendar-day-cell:last-child {
  border-right: none;
}

.ruutio-calendar-day-cell.other-month {
  background-color: #f9f9f9;
  color: #999;
}

.ruutio-calendar-day-cell.today {
  background-color: #fcf8e3;
}

.ruutio-calendar-day-cell.selected {
  background-color: #e8f4ff;
}

.ruutio-calendar-day-number {
  font-size: 0.9em;
  margin-bottom: 4px;
  text-align: right;
}

.ruutio-calendar-day-events {
  font-size: 0.85em;
  flex: 1;
  overflow: hidden;
}

.ruutio-calendar-event {
  background-color: #3788d8;
  color: white;
  border-radius: 3px;
  margin-bottom: 2px;
  padding: 2px 4px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  cursor: pointer;
  position: relative;
  box-sizing: border-box;
  border-left: 3px solid rgba(0, 0, 0, 0.15);
  z-index: 1;
  transition: all 0.2s ease;
  font-size: 0.85em;
  line-height: 1.2;
  min-height: 20px;
  display: flex;
  align-items: center;
  gap: 4px;
}

/* Only elevate events inside expanded day cells */
.ruutio-calendar-day-cell.expanded .ruutio-calendar-event {
  z-index: 55; /* Higher than expanded day cell (z-index: 50) */
}

.ruutio-calendar-event:hover {
  filter: brightness(115%);
  z-index: 10; /* Ensure hovered events are on top */
  transform: scale(1.02);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  transition: all 0.2s ease;
}

/* Enhanced hover states for events in expanded cells */
.ruutio-calendar-day-cell.expanded .ruutio-calendar-event:hover {
  z-index: 60; /* Even higher on hover within expanded cells */
  filter: brightness(115%);
  transform: scale(1.02);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  transition: all 0.2s ease;
}

/* Subtle signed indicator: an overlay pattern that preserves original color but
   visually marks that a signature exists for this appointment. Uses a semi-transparent
   repeating linear-gradient so it works on any background color. */
.ruutio-calendar-event--signed::after {
  content: "";
  position: absolute;
  inset: 0; /* cover entire element */
  pointer-events: none; /* don't block clicks */
  background-image: repeating-linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.6) 0px,
    rgba(255, 255, 255, 0.6) 6px,
    rgba(0, 0, 0, 0.04) 6px,
    rgba(0, 0, 0, 0.04) 12px
  );
  border-radius: 3px;
  mix-blend-mode: overlay;
  z-index: 2; /* above base color but below focus/hover effects */
}

/* Slightly stronger indicator when focused or hovered */
.ruutio-calendar-event--signed:focus::after,
.ruutio-calendar-event--signed:hover::after {
  opacity: 1;
  background-image: repeating-linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.7) 0px,
    rgba(255, 255, 255, 0.7) 6px,
    rgba(0, 0, 0, 0.06) 6px,
    rgba(0, 0, 0, 0.06) 12px
  );
}

.ruutio-calendar-event-time {
  font-weight: bold;
  font-size: 0.9em;
  flex-shrink: 0;
}

.ruutio-calendar-event-title {
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
}

.ruutio-calendar-more-events {
  font-size: 0.8em;
  color: #3788d8;
  cursor: pointer;
  text-align: center;
  padding: 2px;
  font-weight: 500;
  background-color: rgba(55, 136, 216, 0.1);
  border-radius: 2px;
  margin-top: 2px;
}

.ruutio-calendar-more-events:hover {
  background-color: rgba(55, 136, 216, 0.2);
  color: #2c6fb1;
}

/* Day Events Popup */
.ruutio-calendar-day-popup {
  position: absolute;
  background: white;
  border: 1px solid #ccc;
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  z-index: 100;
  min-width: 250px;
  max-width: 300px;
  max-height: 400px;
  overflow-y: auto;
  padding: 12px;
  box-sizing: border-box;
}

.ruutio-calendar-day-popup-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid #eee;
}

.ruutio-calendar-day-popup-title {
  font-weight: 600;
  font-size: 1em;
  color: #333;
  margin: 0;
}

.ruutio-calendar-day-popup-close {
  background: none;
  border: none;
  font-size: 18px;
  cursor: pointer;
  padding: 4px;
  line-height: 1;
  color: #666;
  border-radius: 3px;
}

.ruutio-calendar-day-popup-close:hover {
  background-color: rgba(0, 0, 0, 0.1);
  color: #333;
}

.ruutio-calendar-day-popup-events {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ruutio-calendar-day-popup-event {
  padding: 8px 10px;
  border-radius: 4px;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all 0.2s ease;
  background-color: #f8f9fa;
}

.ruutio-calendar-day-popup-event:hover {
  background-color: #e9ecef;
  border-color: #dee2e6;
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.ruutio-calendar-day-popup-event-time {
  font-size: 0.85em;
  font-weight: 600;
  color: #666;
  margin-bottom: 2px;
}

.ruutio-calendar-day-popup-event-title {
  font-size: 0.95em;
  font-weight: 500;
  color: #333;
  margin-bottom: 2px;
}

.ruutio-calendar-day-popup-event-description {
  font-size: 0.8em;
  color: #666;
  line-height: 1.3;
}

.ruutio-calendar-day-popup-no-events {
  text-align: center;
  color: #999;
  font-style: italic;
  padding: 20px;
}

/* Week View */
.ruutio-calendar-week-grid {
  display: grid;
  grid-template-columns: 70px repeat(7, minmax(0, 1fr)); /* Force equal sizing and prevent expansion */
  height: 100%;
  min-height: 600px;
  max-height: 800px; /* Add maximum height constraint */
  width: 100%;
  overflow-x: auto; /* Allow horizontal scrolling if needed */
  max-width: 100%; /* Ensure it doesn't exceed its container */
}

/* Make the grid itself a block that can allow internal vertical scrolling of day-hours */
.ruutio-calendar-week-grid {
  /* Let children handle vertical scrolling so sticky headers work inside columns */
  overflow-y: hidden;
}

.ruutio-calendar-time-column {
  border-right: 1px solid #e0e0e0;
  background-color: lightgrey;
  font-weight: bold;
}

.ruutio-calendar-corner-cell {
  height: 50px;
  border-bottom: 1px solid #e0e0e0;
}

/* Ensure the corner cell sits above the day headers when sticky */
.ruutio-calendar-corner-cell {
  position: sticky;
  top: 0;
  z-index: 70; /* Above headers so the corner/time column remains visible */
  background-color: none;
}

/* Make time column labels stack below the corner and headers to avoid overlap */
.ruutio-calendar-time-column {
  z-index: 2;
}

.ruutio-calendar-hour-cell {
  height: 60px;
  border-bottom: 1px solid #e0e0e0;
  padding: 0 4px;
  text-align: right;
  font-size: 0.8em;
  color: #666;
  position: relative;
  top: 0; /* No offset - label appears at the top of its hour block */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ruutio-calendar-day-column {
  border-right: 1px solid #e0e0e0;
  position: relative;
  min-width: 0; /* Critical - allows column to shrink below content width */
  overflow: hidden; /* Prevent content from forcing column wider */
}

/* Use a single vertical scroller for the entire week grid so headers can stick at the top of the week */
.ruutio-calendar-week-grid {
  /* Ensure week grid can scroll vertically as a single unit */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  max-height: calc(
    100vh - 180px
  ); /* Tweak as necessary to account for app chrome */
}

.ruutio-calendar-day-column .ruutio-calendar-day-hours {
  /* Disable per-day scrolling when unified week scroller is used */
  overflow-y: visible;
  max-height: none;
}

.ruutio-calendar-day-column:last-child {
  border-right: none;
}

.ruutio-calendar-week-day-header {
  height: 60px;
  text-align: center;
  border-bottom: 1px solid #e0e0e0;
  padding: 8px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background-color: lightgrey;
  font-weight: bold;
}

/* Headers container pulled out of the grid so headers can be sticky
   and not affected by internal transforms/overflow of the week grid. */
.ruutio-calendar-week-headers {
  display: grid;
  grid-template-columns: 70px repeat(7, minmax(0, 1fr));
  align-items: stretch;
  position: sticky;
  top: 0;
  z-index: 80; /* Above corner cell and headers inside grid */
  background: var(--calendar-header-bg, #fff);
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  max-width: calc(100% - 15px);
}

.ruutio-calendar-week-headers .ruutio-calendar-corner-cell {
  height: var(--calendar-header-height, 60px);
}

/* Make the day headers sticky so they're visible when scrolling vertically */
.ruutio-calendar-week-day-header {
  position: sticky;
  /* expose header height for other sticky elements to reference */
  --calendar-header-height: 60px;
  top: 0; /* header itself should stick to the very top of the scroller */
  z-index: 60; /* Above hour cells and events */
  background: var(--calendar-header-bg, #fff);
  background-clip: padding-box; /* Prevent background bleed when sticky */
}

/* Ensure the all-day row's left label is sticky as well */
.ruutio-calendar-all-day-container .ruutio-calendar-all-day-label {
  position: sticky;
  top: calc(var(--calendar-header-height, 60px)); /* align under header */
  z-index: 55;
  background: var(--calendar-all-day-bg, #fff);
}

.ruutio-calendar-week-day-header .day-name {
  font-weight: 500;
  font-size: 0.9em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}

.ruutio-calendar-week-day-header .day-number {
  font-size: 1.2em;
  font-weight: 600;
}

.ruutio-calendar-week-day-header.today {
  background-color: #fcf8e3;
}

.ruutio-calendar-week-day-header.selected {
  background-color: #e8f4ff;
}

.ruutio-calendar-day-hours {
  height: calc(100% - 50px);
}

.ruutio-calendar-day-hour {
  height: 60px;
  border-bottom: 1px solid #e0e0e0;
  position: relative;
}

/* Make hour marks more visible */
.ruutio-calendar-day-hour::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background-color: #c0c0c0;
}

.ruutio-calendar-half-hour {
  position: absolute;
  top: 50%;
  width: 100%;
  border-bottom: 1px dashed #d0d0d0;
}

.ruutio-calendar-day-events {
  position: relative;
  /* Ensure this container has position relative for absolute child positioning */
}

.ruutio-calendar-week-event {
  position: absolute;
  width: calc(100% - 8px);
  left: 4px;
  background-color: #3788d8;
  color: white;
  border-radius: 3px;
  padding: 4px;
  overflow: hidden;
  cursor: pointer;
  font-size: 0.85em;
  pointer-events: auto; /* Re-enable pointer events for events */
  box-sizing: border-box;
  /* Add styles for stacking */
  border-left: 3px solid rgba(0, 0, 0, 0.15);
  transition: all 0.2s ease;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%; /* Fill container but don't exceed it */
  box-sizing: border-box;
}

/* Style for overlapping events in week view */
.ruutio-calendar-day-events .overlap-group {
  position: relative;
  width: 100%;
  height: 100%;
}

/* Set up stacking classes for overlapping events */
.ruutio-calendar-week-event[data-overlap="0"] {
  width: calc(100% - 8px);
  z-index: 1;
  left: 4px;
  right: auto;
  border: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ruutio-calendar-week-event[data-overlap="1"] {
  width: calc(95% - 8px);
  left: auto;
  right: 4px;
  z-index: 2;
  box-shadow: -2px 1px 3px rgba(0, 0, 0, 0.15);
  border-left: 1px solid rgba(255, 255, 255, 0.3);
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ruutio-calendar-week-event[data-overlap="2"] {
  width: calc(90% - 8px);
  left: auto;
  right: 4px;
  z-index: 3;
  box-shadow: -2px 1px 4px rgba(0, 0, 0, 0.15);
  border-left: 1px solid rgba(255, 255, 255, 0.3);
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ruutio-calendar-week-event[data-overlap="3"] {
  width: calc(85% - 8px);
  left: auto;
  right: 4px;
  z-index: 4;
  box-shadow: -2px 1px 4px rgba(0, 0, 0, 0.15);
  border-left: 1px solid rgba(255, 255, 255, 0.3);
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ruutio-calendar-week-event[data-overlap="4"],
.ruutio-calendar-week-event[data-overlap="5"],
.ruutio-calendar-week-event[data-overlap="6"] {
  width: calc(80% - 8px);
  left: auto;
  right: 4px;
  z-index: 5;
  box-shadow: -2px 1px 5px rgba(0, 0, 0, 0.15);
  border-left: 1px solid rgba(255, 255, 255, 0.3);
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Add hover effect for stacked events */
.ruutio-calendar-week-event:hover {
  filter: brightness(115%);
  z-index: 10; /* Ensure hovered events are on top */
  transform: scale(1.02);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  transition: all 0.2s ease;
}

.ruutio-calendar-week-event.dragging,
.ruutio-calendar-week-event.resizing {
  opacity: 0.8;
  z-index: 100; /* Ensure dragging events are above all others */
  transition: top 0.05s ease-out, height 0.05s ease-out;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
}

.ruutio-calendar-day-events {
  position: absolute;
  top: 0px;
  padding-top: 30px; /* Height of the header */
  width: 100%;
  height: calc(100%);
  pointer-events: none; /* Allows clicking through to the hour cells */
}

.ruutio-calendar-week-grid .ruutio-calendar-day-events {
  top: 50px; /* Height of the header */
  height: calc(100% - 50px);
}

.ruutio-calendar-week-event {
  position: absolute;
  width: calc(100% - 8px);
  left: 4px;
  background-color: #3788d8;
  color: white;
  border-radius: 3px;
  padding: 4px;
  overflow: hidden;
  cursor: pointer;
  font-size: 0.85em;
  pointer-events: auto; /* Re-enable pointer events for events */
}

.ruutio-calendar-week-event:hover {
  filter: brightness(105%);
}

.ruutio-calendar-week-event.dragging,
.ruutio-calendar-week-event.resizing {
  opacity: 0.8;
  z-index: 10;
  transition: top 0.05s ease-out, height 0.05s ease-out; /* Slight transition for smoother snapping */
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
}

.ruutio-calendar-event-title {
  font-weight: bold;
}

.ruutio-calendar-current-time {
  position: absolute;
  width: 100%;
  border-top: 2px solid #ff4d4d;
  z-index: 11;
}

.ruutio-calendar-current-time-label {
  background-color: #ff4d4d;
  color: white;
  font-size: 0.7em;
  padding: 1px 4px;
  border-radius: 2px;
  position: absolute;
  right: 0;
}

/* Category Colors */
.ruutio-calendar-event.category-meeting,
.ruutio-calendar-week-event.category-meeting {
  background-color: #3788d8;
}

.ruutio-calendar-event.category-personal,
.ruutio-calendar-week-event.category-personal {
  background-color: #6caa47;
}

.ruutio-calendar-event.category-work,
.ruutio-calendar-week-event.category-work {
  background-color: #ff8c42;
}

.ruutio-calendar-event.category-holiday,
.ruutio-calendar-week-event.category-holiday {
  background-color: #e63946;
}

.ruutio-calendar-event.category-birthday,
.ruutio-calendar-week-event.category-birthday {
  background-color: #9381ff;
}

/* Focus states */
.ruutio-calendar-event.focused,
.ruutio-calendar-week-event.focused {
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.5);
}

/* Calendar Event Modal - Backward compatibility with existing JavaScript */
.ruutio-calendar-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
  backdrop-filter: blur(2px);
}

.ruutio-calendar-modal {
  background-color: #fff;
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
  width: 100%;
  max-width: 80vw;
  max-height: 90vh;
  overflow-y: auto;
  padding: 24px;
  position: relative;
}

.ruutio-calendar-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
  border-bottom: 1px solid #eee;
  padding-bottom: 12px;
}

.ruutio-calendar-modal-title {
  margin: 0;
  padding: 0;
  font-size: 1.5em;
  color: #2c6fb1;
  font-weight: 600;
}

.ruutio-calendar-modal-close {
  background: none;
  border: none;
  font-size: 1.5em;
  cursor: pointer;
  padding: 0 4px;
  line-height: 1;
  color: #666;
  border-radius: 4px;
  transition: all 0.2s ease;

  &:hover {
    background-color: rgba(0, 0, 0, 0.1);
    color: #333;
  }
}

/* Calendar Event Form Styling */
.ruutio-calendar-event-form {
  display: flex;
  flex-direction: column;
  padding: 16px;
  max-width: 80vw;
  gap: 16px;
}

.ruutio-calendar-event-form .form-group {
  margin-bottom: 4px;
}

.ruutio-calendar-event-form label {
  display: block;
  margin-bottom: 6px;
  font-weight: 500;
  color: #555;
  font-size: 0.95em;
}

.ruutio-calendar-event-form input[type="text"],
.ruutio-calendar-event-form input[type="datetime-local"],
.ruutio-calendar-event-form textarea,
.ruutio-calendar-event-form select {
  width: 100%;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 6px;
  font-family: inherit;
  font-size: 1em;
  background-color: #f9f9f9;
  transition: border-color 0.2s, background-color 0.2s;
  box-sizing: border-box;
}

.ruutio-calendar-event-form input[type="text"]:focus,
.ruutio-calendar-event-form input[type="datetime-local"]:focus,
.ruutio-calendar-event-form textarea:focus,
.ruutio-calendar-event-form select:focus {
  outline: none;
  border-color: #3788d8;
  background-color: #fff;
  box-shadow: 0 0 0 2px rgba(55, 136, 216, 0.2);
}

.ruutio-calendar-event-form textarea {
  resize: vertical;
  min-height: 80px;
}

/* Time inputs container */
.form-datetime-group {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

/* Color and category flex container */
.form-color-category-group {
  display: flex;
  gap: 16px;
}

.form-color-category-group .form-group {
  flex: 1;
}

/* Color input styling */
.ruutio-calendar-event-form input[type="color"] {
  width: 100%;
  height: 40px;
  padding: 2px;
  border: 1px solid #ddd;
  border-radius: 6px;
  cursor: pointer;
}

/* Recurrence section */
.ruutio-calendar-event-form .recurrence-options-container {
  margin-top: 16px;
  margin-left: 24px;
  padding: 16px;
  border-left: 3px solid #eee;
  background-color: #f9f9f9;
  border-radius: 0 6px 6px 0;
}

/* Recurring checkbox styling */
.ruutio-calendar-event-form .form-check {
  display: flex;
  align-items: center;
  gap: 8px;
}

.ruutio-calendar-event-form input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin-right: 8px;
}

/* Style the recurrence interval container */
.recurrence-interval-container {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 16px 0;
}

.recurrence-interval-container label {
  margin-bottom: 0;
  margin-right: 8px;
}

.recurrence-interval-container input {
  width: 60px !important;
  text-align: center;
}

.recurrence-interval-container .interval-text {
  color: #555;
  margin-left: 4px;
}

/* Days of week container */
.days-of-week-container {
  margin: 16px 0;
}

.days-of-week-wrapper {
  display: flex;
  gap: 8px;
  margin-top: 8px;
}

.day-selector {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 32px;
  text-align: center;
}

.day-selector input[type="checkbox"] {
  margin-right: 0;
}

.day-selector label {
  margin-top: 4px;
  margin-bottom: 0;
  font-size: 0.85em;
}

/* Monthly recurrence */
.monthly-container {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 16px 0;
}

.monthly-container input {
  width: 60px !important;
  text-align: center;
}

/* End recurrence options */
.end-recurrence-container {
  margin-top: 20px;
}

.end-type-container {
  margin-top: 8px;
}

.end-type-option {
  display: flex;
  align-items: center;
  margin-bottom: 12px;
}

.end-type-option input[type="radio"] {
  margin-right: 8px;
  width: 18px;
  height: 18px;
}

.end-type-option label {
  margin-bottom: 0;
  margin-right: 10px;
}

.end-type-option input[type="number"],
.end-type-option input[type="date"] {
  width: auto;
  margin-right: 8px;
  padding: 6px 10px;
}

.ruutio-calendar-event-form .form-button-group {
  display: flex;
  justify-content: space-between;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid #eee;
}

.ruutio-calendar-event-form .save-button {
  background-color: #3788d8;
  color: white;
  border: none;
  border-radius: 6px;
  padding: 10px 20px;
  cursor: pointer;
  font-size: 1em;
  font-weight: 500;
  transition: background-color 0.2s;
}

.ruutio-calendar-event-form .save-button:hover {
  background-color: #2c6fb1;
}

.ruutio-calendar-event-form .delete-button {
  background-color: #e63946;
  color: white;
  border: none;
  border-radius: 6px;
  padding: 10px 20px;
  cursor: pointer;
  font-size: 1em;
  transition: background-color 0.2s;
}

.ruutio-calendar-event-form .delete-button:hover {
  background-color: #c5303c;
}

/* Calendar-specific modal content */
.ruutio-calendar-details-modal {
  max-width: 450px;
}

.ruutio-calendar-details-content {
  margin-bottom: 20px;
}

.ruutio-calendar-details-content > div {
  margin-bottom: 12px;
  line-height: 1.5;
}

.ruutio-calendar-details-meta {
  margin-top: 16px;
  font-size: 0.8em;
  color: #666;
  border-top: 1px solid #eee;
  padding-top: 8px;
}

.ruutio-calendar-details-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 16px;
}

.ruutio-calendar-edit-button {
  background-color: #4285f4;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 6px 16px;
  cursor: pointer;
  transition: background-color 0.2s;
}

.ruutio-calendar-edit-button:hover {
  background-color: #3367d6;
}

.ruutio-calendar-cancel-button {
  background-color: #ff9500;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 6px 16px;
  cursor: pointer;
  transition: background-color 0.2s;
}

.ruutio-calendar-cancel-button:hover {
  background-color: #e68600;
}

.ruutio-calendar-delete-button {
  background-color: #e63946;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 6px 16px;
  cursor: pointer;
  transition: background-color 0.2s;
}

.ruutio-calendar-delete-button:hover {
  background-color: #c5303c;
}

.ruutio-calendar-details-time,
.ruutio-calendar-details-location {
  margin-bottom: 10px;
}

.ruutio-calendar-details-description {
  margin-top: 10px;
  white-space: pre-line; /* Preserve line breaks in description */
}

/* Dark mode support for calendar modals */
.dark-mode .ruutio-calendar-modal {
  background-color: #1a202c;
  color: #e2e8f0;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);
}

.dark-mode .ruutio-calendar-modal-header {
  border-bottom: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-modal-title {
  color: #63b3ed;
}

.dark-mode .ruutio-calendar-modal-close {
  color: #e2e8f0;

  &:hover {
    background-color: rgba(255, 255, 255, 0.1);
  }
}

.dark-mode .ruutio-calendar-event-form label {
  color: #a0aec0;
}

.dark-mode .ruutio-calendar-event-form input[type="text"],
.dark-mode .ruutio-calendar-event-form input[type="datetime-local"],
.dark-mode .ruutio-calendar-event-form textarea,
.dark-mode .ruutio-calendar-event-form select {
  border: 1px solid #4a5568;
  background-color: #2d3748;
  color: #e2e8f0;
}

.dark-mode .ruutio-calendar-event-form input[type="text"]:focus,
.dark-mode .ruutio-calendar-event-form input[type="datetime-local"]:focus,
.dark-mode .ruutio-calendar-event-form textarea:focus,
.dark-mode .ruutio-calendar-event-form select:focus {
  border-color: #63b3ed;
  background-color: #2d3748;
  box-shadow: 0 0 0 2px rgba(99, 179, 237, 0.2);
}

.dark-mode .ruutio-calendar-event-form .recurrence-options-container {
  border-left: 3px solid #4a5568;
  background-color: #2d3748;
}

.dark-mode .ruutio-calendar-event-form .form-button-group {
  border-top: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-details-meta {
  color: #a0aec0;
  border-top: 1px solid #2d3748;
}

/* Mobile responsiveness */
@media (max-width: 1020px) {
  .ruutio-calendar-container {
    min-height: 400px;
    height: auto !important; /* Override the 100% height */
    font-size: 0.85em;
    overflow: visible;
  }

  .ruutio-calendar-layout {
    flex-direction: column;
  }

  .ruutio-calendar-sidebar {
    width: 100%;
    order: 2;
    margin-top: 20px;
    border-top: 1px solid #e0e0e0;
    padding-top: 20px;
  }

  .ruutio-calendar-main {
    width: 100%;
    order: 1;
  }

  .ruutio-calendar-header {
    flex-direction: column;
    align-items: stretch;
    padding: 8px 12px;
  }

  .ruutio-calendar-navigation {
    margin-bottom: 6px;
    justify-content: center;
  }

  .ruutio-calendar-title {
    font-size: 1.1em;
    margin: 0 8px;
    text-align: center;
  }

  .ruutio-calendar-view-switcher,
  .ruutio-calendar-add-event {
    margin-top: 6px;
    justify-content: center;
  }

  /* Calendar-specific button sizing for mobile */
  .ruutio-calendar-container .ruutio-calendar-prev,
  .ruutio-calendar-container .ruutio-calendar-next,
  .ruutio-calendar-container .ruutio-calendar-today,
  .ruutio-calendar-container .ruutio-calendar-month-view,
  .ruutio-calendar-container .ruutio-calendar-week-view,
  .ruutio-calendar-container .ruutio-calendar-add-event {
    padding: 4px 8px;
    margin: 0 1px;
    font-size: 0.8em;
  }

  /* Compressed Month View */
  .ruutio-calendar-day-cell {
    min-height: 50px !important;
    padding: 2px !important;
    font-size: 0.75em;
  }

  .ruutio-calendar-day-header {
    padding: 4px 2px;
    font-size: 0.8em;
  }

  .ruutio-calendar-day-number {
    font-size: 0.8em;
    margin-bottom: 2px;
  }

  .ruutio-calendar-event {
    margin-bottom: 1px;
    padding: 1px 2px;
    font-size: 0.7em;
    border-radius: 2px;
  }

  .ruutio-calendar-event-time {
    margin-right: 2px;
  }

  .ruutio-calendar-more-events {
    font-size: 0.65em;
    padding: 1px;
  }

  /* Compressed Week View */
  .ruutio-calendar-week-grid {
    grid-template-columns: 35px repeat(7, 1fr);
  }

  .ruutio-calendar-hour-cell {
    height: 40px !important;
    padding: 0 1px;
    font-size: 0.65em;
    top: -8px;
  }

  .ruutio-calendar-day-hour {
    height: 40px !important;
  }

  .ruutio-calendar-week-day-header {
    height: 35px !important;
    padding: 4px;
    font-size: 0.75em;
    position: sticky !important;
    --calendar-header-height: 35px !important;
    top: 0 !important;
    z-index: 60 !important;
  }

  .ruutio-calendar-week-day-header .day-name {
    font-size: 0.8em;
  }

  .ruutio-calendar-week-day-header .day-number {
    font-size: 1em;
  }

  .ruutio-calendar-week-event {
    padding: 2px;
    font-size: 0.7em;
    min-height: 18px;
  }

  .ruutio-calendar-current-time-label {
    font-size: 0.65em;
    padding: 1px 3px;
  }

  /* Modal adjustments for mobile */
  .ruutio-calendar-modal {
    margin: 10px;
    padding: 16px;
    max-height: 85vh;
    width: calc(100% - 20px);
  }

  .ruutio-calendar-modal-title {
    font-size: 1.3em;
  }

  .ruutio-calendar-event-form {
    gap: 12px;
  }

  .ruutio-calendar-event-form label {
    font-size: 0.9em;
    margin-bottom: 4px;
  }

  .ruutio-calendar-event-form input[type="text"],
  .ruutio-calendar-event-form input[type="datetime-local"],
  .ruutio-calendar-event-form textarea,
  .ruutio-calendar-event-form select {
    padding: 8px;
    font-size: 0.9em;
  }

  /* Reduce spacing in form groups */
  .form-datetime-group {
    gap: 8px;
  }

  .form-color-category-group {
    gap: 8px;
  }

  /* Smaller recurrence options */
  .ruutio-calendar-event-form .recurrence-options-container {
    margin-top: 12px;
    padding: 12px;
    margin-left: 16px;
  }

  .recurrence-interval-container {
    margin: 12px 0;
    gap: 6px;
  }

  .days-of-week-wrapper {
    gap: 4px;
  }

  .day-selector {
    width: 28px;
  }

  .day-selector input[type="checkbox"] {
    width: 14px;
    height: 14px;
  }

  .day-selector label {
    font-size: 0.75em;
  }
}

/* Extra compressed styles for small mobile devices */
@media (max-width: 480px) {
  .ruutio-calendar-container {
    min-height: 350px;
    font-size: 0.8em;
  }

  .ruutio-calendar-header {
    padding: 6px 8px;
  }

  .ruutio-calendar-title {
    font-size: 1em;
    margin: 0 4px;
  }

  /* Ultra-compressed Month View */
  .ruutio-calendar-day-cell {
    min-height: 40px !important;
    padding: 1px !important;
    font-size: 0.7em;
  }

  .ruutio-calendar-day-header {
    padding: 3px 1px;
    font-size: 0.75em;
  }

  .ruutio-calendar-day-number {
    font-size: 0.75em;
    margin-bottom: 1px;
  }

  .ruutio-calendar-event {
    margin-bottom: 0.5px;
    padding: 0.5px 1px;
    font-size: 0.65em;
    line-height: 1.1;
  }

  .ruutio-calendar-event-time {
    margin-right: 1px;
  }

  /* Ultra-compressed Week View */
  .ruutio-calendar-week-grid {
    grid-template-columns: 30px repeat(7, 1fr);
  }

  .ruutio-calendar-hour-cell {
    height: 35px !important;
    padding: 0;
    font-size: 0.6em;
    top: -6px;
  }

  .ruutio-calendar-day-hour {
    height: 35px !important;
  }

  .ruutio-calendar-week-day-header {
    height: 30px !important;
    padding: 2px;
    font-size: 0.7em;
    position: sticky !important;
    top: 0 !important;
    z-index: 5 !important;
  }

  .ruutio-calendar-week-day-header .day-name {
    font-size: 0.75em;
  }

  .ruutio-calendar-week-day-header .day-number {
    font-size: 0.9em;
  }

  .ruutio-calendar-week-event {
    padding: 1px;
    font-size: 0.65em;
    min-height: 16px;
  }

  /* Ultra-compressed button sizing handled by unified button system */
  .ruutio-calendar-container .ruutio-calendar-prev,
  .ruutio-calendar-container .ruutio-calendar-next,
  .ruutio-calendar-container .ruutio-calendar-today,
  .ruutio-calendar-container .ruutio-calendar-month-view,
  .ruutio-calendar-container .ruutio-calendar-week-view,
  .ruutio-calendar-container .ruutio-calendar-add-event {
    padding: 3px 6px;
    margin: 0 0.5px;
    font-size: 0.75em;
  }

  /* Modal adjustments for small screens */
  .ruutio-calendar-modal {
    margin: 5px;
    padding: 12px;
    max-height: 90vh;
    width: calc(100% - 10px);
  }

  .ruutio-calendar-modal-title {
    font-size: 1.2em;
  }

  .ruutio-calendar-event-form {
    gap: 8px;
  }

  .ruutio-calendar-event-form label {
    font-size: 0.85em;
    margin-bottom: 3px;
  }

  .ruutio-calendar-event-form input[type="text"],
  .ruutio-calendar-event-form input[type="datetime-local"],
  .ruutio-calendar-event-form textarea,
  .ruutio-calendar-event-form select {
    padding: 6px;
    font-size: 0.85em;
  }

  .form-datetime-group {
    gap: 6px;
  }

  .days-of-week-wrapper {
    gap: 2px;
  }

  .day-selector {
    width: 24px;
  }

  .day-selector input[type="checkbox"] {
    width: 12px;
    height: 12px;
  }

  .day-selector label {
    font-size: 0.7em;
  }
}

/* Mobile swipe enhancements for calendar interaction */

/* Event drag handle */
.ruutio-calendar-event-drag-handle {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 12px;
  background-color: rgba(0, 0, 0, 0.1);
  cursor: move;
  opacity: 0;
  transition: opacity 0.2s ease;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px;
  z-index: 1;
}

.ruutio-calendar-week-event:hover .ruutio-calendar-event-drag-handle {
  opacity: 1;
}

/* Display a grip icon in the handle */
.ruutio-calendar-event-drag-handle::before {
  content: "≡";
  display: block;
  text-align: center;
  font-size: 10px;
  color: rgba(255, 255, 255, 0.7);
  line-height: 12px;
}

/* Event resize handle at bottom */
.ruutio-calendar-event-resize-handle {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 12px;
  background-color: rgba(0, 0, 0, 0.1);
  cursor: ns-resize;
  opacity: 0;
  transition: opacity 0.2s ease;
  border-bottom-left-radius: 3px;
  border-bottom-right-radius: 3px;
  z-index: 1;
}

.ruutio-calendar-week-event:hover .ruutio-calendar-event-resize-handle {
  opacity: 1;
}

/* Display a grip icon in the resize handle */
.ruutio-calendar-event-resize-handle::before {
  content: "⋯";
  display: block;
  text-align: center;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.7);
  line-height: 12px;
  letter-spacing: 2px;
}

/* Resizing state for events */
.ruutio-calendar-event-resizing {
  opacity: 0.7;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  z-index: 100;
  transition: none; /* Disable transitions during resize for immediate feedback */
}

.ruutio-calendar-event-resizing .ruutio-calendar-event-resize-handle {
  opacity: 1;
  background-color: rgba(0, 0, 0, 0.2);
}

/* Dragging state for events */
.ruutio-calendar-event-dragging {
  opacity: 0.7;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  z-index: 100;
  transition: none; /* Disable transitions during drag for immediate feedback */
}

.ruutio-calendar-event-dragging .ruutio-calendar-event-drag-handle {
  opacity: 1;
  background-color: rgba(0, 0, 0, 0.2);
}

/* Drag confirmation modal */
.ruutio-calendar-drag-confirm-modal {
  max-width: 500px;
  width: 90%;
}

.ruutio-calendar-drag-confirm-modal .ruutio-calendar-modal-body {
  padding: 20px;
}

.ruutio-calendar-drag-confirm-modal p {
  margin: 0 0 15px 0;
  line-height: 1.6;
}

.ruutio-calendar-recurring-info {
  background-color: #f0f7ff;
  border-left: 3px solid #3788d8;
  padding: 12px;
  margin: 15px 0;
  font-weight: 500;
  color: #333;
}

.ruutio-calendar-modal-buttons {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 20px;
}

.ruutio-calendar-button {
  padding: 12px 20px;
  border: none;
  border-radius: 4px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: background-color 0.2s, transform 0.1s;
  width: 100%;
}

.ruutio-calendar-button:hover {
  transform: translateY(-1px);
}

.ruutio-calendar-button:active {
  transform: translateY(0);
}

.ruutio-calendar-button-primary {
  background-color: #3788d8;
  color: white;
}

.ruutio-calendar-button-primary:hover {
  background-color: #2c6fb1;
}

.ruutio-calendar-button-secondary {
  background-color: #e0e0e0;
  color: #333;
}

.ruutio-calendar-button-secondary:hover {
  background-color: #d0d0d0;
}

/* Drop target highlight for cross-day dragging */
.ruutio-calendar-day-column-drop-target {
  background-color: rgba(55, 136, 216, 0.08);
}

.ruutio-calendar-day-column-drop-target .ruutio-calendar-day-hours {
  background-color: rgba(55, 136, 216, 0.05);
}

/* Multi-day events in Month View */
.ruutio-calendar-event-multiday {
  border-radius: 3px;
  margin-top: 1px;
  margin-bottom: 1px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* All-day row in Week View */
.ruutio-calendar-all-day-row {
  display: grid;
  grid-template-columns: 60px repeat(7, minmax(0, 1fr)); /* Match exactly with week grid */
  border-bottom: 1px solid #ddd;
  min-height: 25px;
  width: 100%;
  box-sizing: border-box;
}

/* Keep the all-day row visible (sticky) above the hourly slots */
.ruutio-calendar-all-day-row {
  position: sticky;
  /* Default header height variable; compressed variants override --calendar-header-height */
  --calendar-header-height: 60px;
  top: var(--calendar-header-height, 60px);
  z-index: 55; /* Sit below the day header but above hourly content */
  background-color: inherit;
}

.ruutio-calendar-all-day-label {
  padding: 4px;
  font-size: 12px;
  color: #666;
  text-align: right;
  border-right: 1px solid #ddd;
}

.ruutio-calendar-all-day-cell {
  border-right: 1px solid #ddd;
  padding: 2px;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow: hidden;
  min-width: 0; /* Allow cell to shrink */
}

.ruutio-calendar-multi-day-event {
  background-color: #3788d8;
  color: #fff;
  border-radius: 3px;
  padding: 2px 4px;
  font-size: 11px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
  flex-shrink: 1; /* Allow event to shrink */
}

/* All-day container */
.ruutio-calendar-all-day-container {
  width: 100%;
  margin-bottom: 10px;
  border-bottom: 2px solid #e0e0e0;
}

/* Light Mode Styles for Calendar */
.light-mode .ruutio-calendar-container {
  color: #333;
  background-color: #fff;
}

.light-mode .ruutio-calendar-header {
  border-bottom: 1px solid #e0e0e0;
}

.light-mode .ruutio-calendar-prev,
.light-mode .ruutio-calendar-next,
.light-mode .ruutio-calendar-today,
.light-mode .ruutio-calendar-month-view,
.light-mode .ruutio-calendar-week-view {
  background-color: #f0f0f0;
  border: 1px solid #e0e0e0;
  color: #333;
}

.light-mode .ruutio-calendar-prev:hover,
.light-mode .ruutio-calendar-next:hover,
.light-mode .ruutio-calendar-today:hover,
.light-mode .ruutio-calendar-month-view:hover,
.light-mode .ruutio-calendar-week-view:hover {
  background-color: #e0e0e0;
}

.light-mode .ruutio-calendar-month-view.active,
.light-mode .ruutio-calendar-week-view.active {
  background-color: #3788d8;
  color: white;
  border-color: #3788d8;
}

.light-mode .ruutio-calendar-header-row,
.light-mode .ruutio-calendar-week-row {
  border-bottom: 1px solid #e0e0e0;
}

.light-mode .ruutio-calendar-day-cell {
  border-right: 1px solid #e0e0e0;
}

.light-mode .ruutio-calendar-day-cell.other-month {
  background-color: #f9f9f9;
  color: #999;
}

.light-mode .ruutio-calendar-day-cell.today {
  background-color: #fcf8e3;
}

.light-mode .ruutio-calendar-day-cell.selected {
  background-color: #e8f4ff;
}

.light-mode .ruutio-calendar-day-cell.expanded {
  background-color: #fff;
  border: 1px solid #bbb;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.light-mode .ruutio-calendar-time-column,
.light-mode .ruutio-calendar-corner-cell,
.light-mode .ruutio-calendar-hour-cell,
.light-mode .ruutio-calendar-day-column,
.light-mode .ruutio-calendar-week-day-header {
  border-color: #e0e0e0;
}

.light-mode .ruutio-calendar-hour-cell {
  color: #666;
}

.light-mode .ruutio-calendar-day-hour {
  border-bottom: 1px solid #e0e0e0;
}

.light-mode .ruutio-calendar-day-hour::after {
  background-color: #c0c0c0;
}

.light-mode .ruutio-calendar-half-hour {
  border-bottom: 1px dashed #d0d0d0;
}

.light-mode .ruutio-calendar-modal {
  background-color: #fff;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}

.light-mode .ruutio-calendar-modal-header {
  border-bottom: 1px solid #eee;
}

.light-mode .ruutio-calendar-modal-title {
  color: #2c6fb1;
}

.light-mode .ruutio-calendar-event-form input[type="text"],
.light-mode .ruutio-calendar-event-form input[type="datetime-local"],
.light-mode .ruutio-calendar-event-form textarea,
.light-mode .ruutio-calendar-event-form select {
  border: 1px solid #ddd;
  background-color: #f9f9f9;
}

.light-mode .ruutio-calendar-event-form .recurrence-options-container {
  border-left: 3px solid #eee;
  background-color: #f9f9f9;
}

.light-mode .ruutio-calendar-event-form .form-button-group {
  border-top: 1px solid #eee;
}

.light-mode .ruutio-calendar-details-meta {
  color: #666;
  border-top: 1px solid #eee;
}

/* Dark Mode Styles for Calendar */
.dark-mode .ruutio-calendar-container {
  color: #e2e8f0;
  background-color: #1a202c;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
}

.dark-mode .ruutio-calendar-header {
  border-bottom: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-prev,
.dark-mode .ruutio-calendar-next,
.dark-mode .ruutio-calendar-today,
.dark-mode .ruutio-calendar-month-view,
.dark-mode .ruutio-calendar-week-view {
  background-color: #2d3748;
  border: 1px solid #4a5568;
  color: #e2e8f0;
}

.dark-mode .ruutio-calendar-prev:hover,
.dark-mode .ruutio-calendar-next:hover,
.dark-mode .ruutio-calendar-today:hover,
.dark-mode .ruutio-calendar-month-view:hover,
.dark-mode .ruutio-calendar-week-view:hover {
  background-color: #4a5568;
}

.dark-mode .ruutio-calendar-month-view.active,
.dark-mode .ruutio-calendar-week-view.active {
  background-color: #4299e1;
  color: white;
  border-color: #4299e1;
}

.dark-mode .ruutio-calendar-add-event {
  background-color: #4299e1;
  color: white;
  border-color: #4299e1;
}

.dark-mode .ruutio-calendar-add-event:hover {
  background-color: #3182ce;
}

.dark-mode .ruutio-calendar-header-row,
.dark-mode .ruutio-calendar-week-row {
  border-bottom: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-day-cell {
  border-right: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-day-cell.other-month {
  background-color: #171923;
  color: #718096;
}

.dark-mode .ruutio-calendar-day-cell.today {
  background-color: #2a4365;
}

.dark-mode .ruutio-calendar-day-cell.selected {
  background-color: #2c5282;
}

.dark-mode .ruutio-calendar-day-cell.expanded {
  background-color: #2d3748;
  border: 1px solid #4a5568;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
}

.dark-mode .ruutio-calendar-day-number {
  color: #e2e8f0;
}

.dark-mode .ruutio-calendar-more-events {
  color: #63b3ed;
}

.dark-mode .ruutio-calendar-time-column,
.dark-mode .ruutio-calendar-corner-cell,
.dark-mode .ruutio-calendar-hour-cell,
.dark-mode .ruutio-calendar-day-column,
.dark-mode .ruutio-calendar-week-day-header {
  border-color: #2d3748;
}

.dark-mode .ruutio-calendar-hour-cell {
  color: #a0aec0;
}

.dark-mode .ruutio-calendar-day-hour {
  border-bottom: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-day-hour::after {
  background-color: #4a5568;
}

.dark-mode .ruutio-calendar-half-hour {
  border-bottom: 1px dashed #4a5568;
}

.dark-mode .ruutio-calendar-event,
.dark-mode .ruutio-calendar-week-event {
  /* Default event colors are fine, they're already contrasting */
  border-left-color: rgba(255, 255, 255, 0.15);
}

.dark-mode .ruutio-calendar-modal-overlay {
  background-color: rgba(0, 0, 0, 0.7);
}

.dark-mode .ruutio-calendar-modal {
  background-color: #1a202c;
  color: #e2e8f0;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);
}

.dark-mode .ruutio-calendar-modal-header {
  border-bottom: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-modal-title {
  color: #63b3ed;
}

.dark-mode .ruutio-calendar-modal-close {
  color: #e2e8f0;
}

.dark-mode .ruutio-calendar-event-form label {
  color: #a0aec0;
}

.dark-mode .ruutio-calendar-event-form input[type="text"],
.dark-mode .ruutio-calendar-event-form input[type="datetime-local"],
.dark-mode .ruutio-calendar-event-form textarea,
.dark-mode .ruutio-calendar-event-form select {
  border: 1px solid #4a5568;
  background-color: #2d3748;
  color: #e2e8f0;
}

.dark-mode .ruutio-calendar-event-form input[type="text"]:focus,
.dark-mode .ruutio-calendar-event-form input[type="datetime-local"]:focus,
.dark-mode .ruutio-calendar-event-form textarea:focus,
.dark-mode .ruutio-calendar-event-form select:focus {
  border-color: #63b3ed;
  background-color: #2d3748;
  box-shadow: 0 0 0 2px rgba(99, 179, 237, 0.2);
}

.dark-mode .ruutio-calendar-event-form input[type="color"] {
  border: 1px solid #4a5568;
}

.dark-mode .ruutio-calendar-event-form .recurrence-options-container {
  border-left: 3px solid #4a5568;
  background-color: #2d3748;
}

.dark-mode
  .ruutio-calendar-event-form
  .recurrence-interval-container
  .interval-text {
  color: #a0aec0;
}

.dark-mode .ruutio-calendar-event-form .form-button-group {
  border-top: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-event-form .save-button {
  background-color: #4299e1;
}

.dark-mode .ruutio-calendar-event-form .save-button:hover {
  background-color: #3182ce;
}

.dark-mode .ruutio-calendar-event-form .delete-button {
  background-color: #e53e3e;
}

.dark-mode .ruutio-calendar-event-form .delete-button:hover {
  background-color: #c53030;
}

.dark-mode .ruutio-calendar-details-content {
  color: #e2e8f0;
}

.dark-mode .ruutio-calendar-details-meta {
  color: #a0aec0;
  border-top: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-edit-button {
  background-color: #4299e1;
}

.dark-mode .ruutio-calendar-delete-button {
  background-color: #e53e3e;
}

.dark-mode .ruutio-calendar-all-day-label {
  color: #a0aec0;
  border-right: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-all-day-cell {
  border-right: 1px solid #2d3748;
}

.dark-mode .ruutio-calendar-all-day-container {
  border-bottom: 2px solid #2d3748;
}

/* Category Colors - the same in both light and dark mode */
.ruutio-calendar-event.category-meeting,
.ruutio-calendar-week-event.category-meeting {
  background-color: #3788d8;
}

.ruutio-calendar-event.category-personal,
.ruutio-calendar-week-event.category-personal {
  background-color: #6caa47;
}

.ruutio-calendar-event.category-work,
.ruutio-calendar-week-event.category-work {
  background-color: #ff8c42;
}

.ruutio-calendar-event.category-holiday,
.ruutio-calendar-week-event.category-holiday {
  background-color: #e63946;
}

.ruutio-calendar-event.category-birthday,
.ruutio-calendar-week-event.category-birthday {
  background-color: #9381ff;
}

/* Mobile Swipe Gesture Indicators and Enhancements */
@media (max-width: 1020px) {
  .ruutio-calendar-container {
    /* Enable smooth transitions for swipe feedback */
    transition: transform 0.2s ease-out;

    /* Ensure the calendar container can be swiped */
    touch-action: pan-y; /* Allow vertical scrolling but enable horizontal swipe detection */
    user-select: none; /* Prevent text selection during swipes */

    /* Add swipe hint on first load */
    position: relative;

    &::before {
      content: "← Swipe to navigate →";
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background: rgba(0, 123, 255, 0.9);
      color: white;
      padding: 8px 16px;
      border-radius: 20px;
      font-size: 0.8em;
      font-weight: 500;
      z-index: 100;
      pointer-events: none;
      opacity: 0;
      animation: swipeHint 4s ease-in-out;
      animation-delay: 1s;
    }

    /* Show swipe indicators during touch */
    &.swiping {
      &::after {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        border: 2px solid rgba(0, 123, 255, 0.5);
        border-radius: 8px;
        pointer-events: none;
        animation: swipeBorder 0.3s ease-out;
      }
    }
  }

  @keyframes swipeHint {
    0%,
    90%,
    100% {
      opacity: 0;
    }
    10%,
    80% {
      opacity: 1;
    }
  }

  @keyframes swipeBorder {
    0% {
      border-color: rgba(0, 123, 255, 0);
      transform: scale(1);
    }
    50% {
      border-color: rgba(0, 123, 255, 0.8);
      transform: scale(1.02);
    }
    100% {
      border-color: rgba(0, 123, 255, 0);
      transform: scale(1);
    }
  }

  /* Enhanced touch feedback for navigation buttons */
  .ruutio-calendar-navigation {
    .rutio-calendar-prev,
    .ruutio-calendar-next,
    .ruutio-calendar-today {
      min-height: 44px; /* Apple's recommended minimum touch target */
      min-width: 44px;
      padding: 8px 12px;
      margin: 0 4px;
      position: relative;
      overflow: hidden;

      /* Add ripple effect on touch */
      &::after {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        width: 0;
        height: 0;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.5);
        transform: translate(-50%, -50%);
        transition: width 0.3s ease, height 0.3s ease;
        pointer-events: none;
      }

      &:active::after {
        width: 100px;
        height: 100px;
      }
    }
  }

  /* Enhanced view switcher for mobile */
  .ruutio-calendar-view-switcher {
    .ruutio-calendar-month-view,
    .rutio-calendar-week-view {
      min-height: 44px;
      padding: 8px 16px;
      margin: 0 2px;
      border-radius: 6px;
      font-weight: 500;
      transition: all 0.2s ease;

      &.active {
        background-color: #007bff;
        color: white;
        box-shadow: 0 2px 4px rgba(0, 123, 255, 0.3);
        transform: scale(0.95);
      }

      &:active {
        transform: scale(0.95);
      }
    }
  }

  /* Improve calendar title readability and add touch feedback */
  .ruutio-calendar-title {
    font-size: 1.1em;
    font-weight: 600;
    margin: 0 8px;
    color: #333;
    text-align: center;
    min-width: 120px;
    padding: 8px 4px;
    border-radius: 4px;
    transition: background-color 0.2s ease;

    &:active {
      background-color: rgba(0, 123, 255, 0.1);
    }
  }

  /* Mobile-specific feedback for touch interactions */
  .ruutio-calendar-day-cell {
    transition: all 0.2s ease;

    &:active {
      background-color: rgba(0, 123, 255, 0.1);
      transform: scale(0.98);
    }

    &.expanded {
      /* Add subtle animation for expanded cells */
      animation: expandCell 0.3s ease-out;
    }
  }

  @keyframes expandCell {
    0% {
      transform: scale(1);
      opacity: 0.8;
    }
    100% {
      transform: scale(1);
      opacity: 1;
    }
  }

  .ruutio-calendar-event {
    transition: transform 0.1s ease;

    &:active {
      transform: scale(0.95);
    }
  }

  /* Add subtle loading animation for calendar transitions */
  .ruutio-calendar-content {
    transition: opacity 0.15s ease-in-out;

    &.transitioning {
      opacity: 0.7;
    }
  }
}

/* Dark mode mobile optimizations */
@media (max-width: 1020px) and (prefers-color-scheme: dark) {
  .ruutio-calendar-container {
    &::before {
      background: rgba(255, 255, 255, 0.9);
      color: #333;
    }

    &.swiping::after {
      border-color: rgba(255, 255, 255, 0.5);
    }
  }

  .ruutio-calendar-title {
    color: #e0e0e0;

    &:active {
      background-color: rgba(255, 255, 255, 0.1);
    }
  }

  .ruutio-calendar-day-cell {
    &:active {
      background-color: rgba(255, 255, 255, 0.1);
    }
  }
}

*,
*:before,
*:after {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
html,
body {
  position: relative;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  color: #333;
  font: 100%/1.5 "Open Sans", sans-serif;
  font-size: 0.8rem;
  font-weight: 400;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
@media (max-width: 820px) {
  html,
  body {
    font-size: 1rem;
  }
  h1 {
    font-size: 1.8rem;
  }
  h2 {
    font-size: 1.6rem;
  }
  h3 {
    font-size: 1.4rem;
  }
  h4 {
    font-size: 1.2rem;
  }
  h5 {
    font-size: 1.1rem;
  }
  h6 {
    font-size: 1rem;
  }
  button,
  .button {
    font-size: 1rem;
    padding: 12px 16px;
    min-height: 44px;
  }
  p,
  span,
  div,
  td,
  th,
  li {
    font-size: 1rem !important;
    line-height: 1.5 !important;
  }
  .nav-links a,
  .sidebar-nav a,
  .header-nav a {
    font-size: 1.1rem !important;
    padding: 12px 16px !important;
  }
  table {
    font-size: 1rem !important;
    width: 100%;
    border-collapse: collapse;
  }
  table th,
  table td {
    font-size: 1rem !important;
    padding: 12px 8px !important;
    text-align: left;
    border-bottom: 1px solid #e0e0e0;
  }
  table th {
    font-weight: 600 !important;
    background-color: #f8f9fa;
  }
  .table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  label {
    font-size: 1rem !important;
    font-weight: 600 !important;
  }
  input,
  select,
  textarea {
    font-size: 1rem !important;
    padding: 12px !important;
    min-height: 44px !important;
  }
  .calendar-widget,
  .ruutio-calendar-container,
  .widget,
  .dashboard-widget {
    font-size: 1rem !important;
  }
  small,
  .small,
  .text-small {
    font-size: 0.9rem !important;
  }
  .event-title,
  .appointment-title {
    font-size: 1.1rem !important;
    font-weight: 600 !important;
  }
  .event-details,
  .appointment-details {
    font-size: 1rem !important;
  }
  .event-time,
  .appointment-time {
    font-size: 1rem !important;
    font-weight: 500 !important;
  }
  .card,
  .widget,
  .dashboard-card {
    margin-bottom: 20px;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  }
  .card .card-header,
  .widget .card-header,
  .dashboard-card .card-header,
  .card .widget-header,
  .widget .widget-header,
  .dashboard-card .widget-header {
    padding: 16px 20px;
    font-size: 1.2rem !important;
    font-weight: 600;
  }
  .card .card-body,
  .widget .card-body,
  .dashboard-card .card-body,
  .card .widget-body,
  .widget .widget-body,
  .dashboard-card .widget-body {
    padding: 20px;
    font-size: 1rem !important;
  }
  .container,
  .main-content {
    padding: 16px;
  }
  .pagination {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin: 20px 0;
  }
  .pagination button,
  .pagination a {
    min-height: 44px;
    min-width: 44px;
    font-size: 1rem !important;
    padding: 12px 16px;
    border-radius: 8px;
  }
}
@media (max-width: 820px) and (max-width: 480px) {
  table,
  thead,
  tbody,
  th,
  td,
  tr {
    display: block;
  }
  thead tr {
    position: absolute;
    top: -9999px;
    left: -9999px;
  }
  tr {
    border: 1px solid #e0e0e0;
    margin-bottom: 10px;
    padding: 10px;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  }
  td {
    border: none;
    padding: 10px 0;
    text-align: left;
    white-space: normal;
  }
  td:before {
    content: attr(data-label) ": ";
    font-weight: 600;
    margin-right: 10px;
    color: #666;
  }
}
/* Colors
   ========================================================================== */
/* Layout
   ========================================================================== */
@media (min-width: 40rem) {
  html {
    font-size: 112%;
  }
}
@media (min-width: 64rem) {
  html {
    font-size: 120%;
  }
}
body {
  background-color: #fff;
  color: #555;
}
body.dark-mode {
  background-color: #555;
  color: #fff;
}
body.light-mode {
  background-color: #fff;
  color: #555;
}
.container {
  margin: 0 auto;
  max-width: 53rem;
  width: 90%;
}
/* Header
   ========================================================================== */
header {
  background-color: #497bad;
  text-align: center;
}
.intro {
  margin: 2rem 0;
}
@media (min-width: 40rem) {
  .intro {
    margin: 4rem 0;
  }
}
.mobile {
  margin: 0 auto;
  max-width: 150px;
}
@media (min-width: 40rem) {
  .mobile {
    max-width: 250px;
  }
}
/* Section
   ========================================================================== */
section {
  position: relative;
  width: 100%;
  display: flex;
  border-top: 1px solid #eee;
  text-align: center;
  padding: 2rem 0;
}
section:first-of-type {
  border-top: none;
}
@media (min-width: 40rem) {
  section {
    padding: 2rem 0;
  }
}
/* Mobile First Grid
   ========================================================================== */
.column {
  margin-bottom: 1.5rem;
}
@media (min-width: 40rem) {
  .column {
    float: left;
    margin: 0;
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .column.unpadded {
    padding-left: 0;
    padding-right: 0;
  }
  .column.full {
    width: 100%;
  }
  .column.two-thirds {
    width: 66.7%;
  }
  .column.half {
    width: 50%;
  }
  .column.third {
    width: 33.3%;
  }
  .column.fourth {
    width: 25%;
  }
  .column.three-fourths {
    width: 75%;
  }
  .column.eighth {
    width: 12.5%;
  }
  .column.seven-eighths {
    width: 87.5%;
  }
  .column.flow-opposite {
    float: right;
  }
}
/* Typography
   ========================================================================== */
h1,
h2,
h3,
h4,
h5 {
  font-weight: 600;
  margin: 0;
  font: 100%/1.5 "Overlock";
  color: #1976d2ff;
}
h1 {
  font-size: 1.3rem;
  line-height: 1.3em;
  margin-bottom: 1.5rem;
}
@media (min-width: 40rem) {
  h1 {
    font-size: 1.5rem;
  }
}
h3 {
  font-size: 1.2rem;
  margin-bottom: 0.5rem;
}
p {
  color: #999;
  margin: 0 auto;
  max-width: 30rem;
}
blockquote {
  margin: 0;
}
blockquote p {
  color: #bbb;
  font-style: italic;
  margin-bottom: 1.5rem;
}
cite {
  color: #bbb;
}
/* Code
   ========================================================================== */
code {
  background-color: #f8f8f8;
  -moz-border-radius: 0.2em;
  -webkit-border-radius: 0.2em;
  border-radius: 0.2em;
  border: 1px solid #ddd;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  font-size: 0.8rem;
  padding: 0.1rem 0.3rem;
  position: relative;
  top: -1px;
  white-space: nowrap;
}
/* Lists
   ========================================================================== */
ul {
  margin: 0;
  text-align: left;
}
@media (min-width: 40rem) {
  ul {
    display: inline-block;
  }
}
/* Links
   ========================================================================== */
a {
  color: #497bad;
  text-decoration: none;
}
a.button {
  color: #fff !important;
}
a:hover {
  text-decoration: underline;
}
body.dark-mode a {
  color: #8daecf;
}
/* Buttons - Unified system now in buttons.less */
/* Elements
   ========================================================================== */
hr {
  border: 0;
  border-top: 1px solid #ddd;
  margin: 2rem auto;
  width: 3rem;
}
@media (min-width: 40rem) {
  hr {
    margin: 2.5rem auto;
  }
}
hr.small {
  margin: 1.5rem auto;
}
.circle {
  border: 3px solid #555;
  border-radius: 50%;
  -moz-border-radius: 50%;
  -webkit-border-radius: 50%;
  color: #555;
  display: block;
  font-size: 1.7rem;
  font-weight: 600;
  height: 3.2rem;
  line-height: 1.7em;
  margin: 0 auto 1rem auto;
  text-align: center;
  width: 3.2rem;
}
img {
  display: block;
  height: auto;
  margin: 0 auto 1.5rem auto;
  width: 100%;
}
.rwd {
  margin: 0 auto 1.5rem auto;
  max-width: 440px;
}
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"] {
  padding: 6px;
  margin: 6px 0px;
  border-radius: 0.2em;
}
input:not(:placeholder-shown):not(:focus):invalid {
  outline: 2px solid #c01600;
}
select {
  padding: 6px;
  margin: 6px 4px;
  border-radius: 0.2em;
  line-height: 1.5rem;
  font-size: 1rem;
  position: relative;
  width: 100%;
  border: 1px solid #ccc;
}
select:focus {
  outline: none;
}
select option {
  padding: 6px;
}
select::-ms-expand {
  display: none;
}
form:invalid button[type="submit"] {
  opacity: 0.3;
  pointer-events: none;
}
/* Forms - Using unified form system from inputs.less */
form {
  max-width: 500px;
  margin: 2rem auto;
  padding: 2rem;
  background-color: #e6e6e6;
  border-radius: 0.2em;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
@media (max-width: 600px) {
  .form-container {
    width: 95%;
    padding: 1rem;
  }
}
body.dark-mode form {
  background-color: #444;
}
body.light-mode form {
  background-color: #e6e6e6;
}
form.grid-form {
  position: relative;
  margin: 0px auto;
  max-width: 300px;
  width: 100%;
}
form.grid-form .form-section {
  position: relative;
  float: left;
  width: 100%;
}
form.grid-form .form-section label {
  font-size: 0.7rem;
  float: left;
  text-align: left;
  width: 100%;
  line-height: 2rem;
}
form.grid-form .form-section label input {
  float: right;
  clear: both;
}
.auto-table-container {
  position: relative;
  width: 100%;
  max-height: 750px;
  overflow-y: auto;
}
.auto-table-search-container {
  position: sticky;
  top: 0;
  z-index: 20;
  padding: 10px;
  margin-bottom: 10px;
  background-color: inherit;
}
body.light-mode .auto-table-search-container {
  background-color: #fff;
  border-bottom: 1px solid #444;
}
body.dark-mode .auto-table-search-container {
  background-color: #555;
  border-bottom: 1px solid #888;
}
.auto-table-search {
  width: 100%;
  padding: 8px 12px;
  border-radius: 0.2em;
  font-size: 0.9rem;
  transition: all 0.3s ease;
  box-sizing: border-box;
}
body.light-mode .auto-table-search {
  border: 1px solid #444;
  background-color: #fff;
  color: #555;
}
body.light-mode .auto-table-search:focus {
  border-color: #1976d2ff;
  box-shadow: 0 0 0 2px rgba(73, 123, 173, 0.2);
  outline: none;
}
body.dark-mode .auto-table-search {
  border: 1px solid #888;
  background-color: #444;
  color: #fff;
}
body.dark-mode .auto-table-search:focus {
  border-color: #4e9cea;
  box-shadow: 0 0 0 2px rgba(73, 123, 173, 0.3);
  outline: none;
}
body.light-mode .auto-table-container .auto-table .auto-table-header,
body.light-mode .auto-table-container .auto-table .auto-table-header-cell {
  background-color: #fff;
  border-bottom: 2px solid #444;
}
body.light-mode .auto-table-container .auto-table .auto-table-row:nth-child(odd) {
  background-color: #fff;
}
body.dark-mode .auto-table-container .auto-table .auto-table-header,
body.dark-mode .auto-table-container .auto-table .auto-table-header-cell {
  background-color: #444;
  border-bottom: 2px solid #888;
}
body.dark-mode .auto-table-container .auto-table .auto-table-row:nth-child(odd) {
  background-color: #555;
}
.auto-table {
  display: table;
  width: 100%;
  border-collapse: collapse;
  border-spacing: 0;
  margin: 0 auto;
  max-width: 100%;
  background-color: #e6e6e6;
}
.auto-table .auto-table-body {
  display: table-row-group;
}
.auto-table .auto-table-row,
.auto-table .auto-table-header {
  display: table-row;
  width: 100%;
}
.auto-table .auto-table-row.clickable-row,
.auto-table .auto-table-header.clickable-row {
  cursor: pointer;
}
.auto-table .auto-table-row.clickable-row:hover,
.auto-table .auto-table-header.clickable-row:hover {
  background: var(--color-row-hover-clickable, #a9cff5);
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.auto-table .auto-table-row.clickable-row:active,
.auto-table .auto-table-header.clickable-row:active {
  transform: translateY(0);
  background: var(--color-row-active, #92c2f2);
}
.auto-table .auto-table-row.clickable-row.selected,
.auto-table .auto-table-header.clickable-row.selected {
  background: var(--color-row-selected, #7bb6ef);
  border-left: 3px solid var(--color-primary, #1976d2ff);
}
.auto-table .auto-table-row.clickable-row.selected:hover,
.auto-table .auto-table-header.clickable-row.selected:hover {
  background: var(--color-row-selected-hover, #64a9ed);
}
.auto-table .auto-table-row.clickable-rows .auto-table-row,
.auto-table .auto-table-header.clickable-rows .auto-table-row {
  cursor: pointer;
}
.auto-table .auto-table-header {
  font-weight: bold;
  position: sticky;
  top: 0;
  z-index: 10;
}
.auto-table .auto-table-cell,
.auto-table .auto-table-header-cell {
  display: table-cell;
  padding: 0.5em;
  border-bottom: 1px solid #444;
  text-align: left;
  font-size: 1em;
  color: #555;
}
.auto-table .auto-table-cell:first-child,
.auto-table .auto-table-header-cell:first-child {
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
}
.auto-table .auto-table-cell:last-child,
.auto-table .auto-table-header-cell:last-child {
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
}
.auto-table .auto-table-cell.edit-cell div,
.auto-table .auto-table-header-cell.edit-cell div {
  display: inline-block;
  position: relative;
  width: 100%;
  text-align: center;
  width: 1.7em;
  height: 1.7em;
  border-radius: 0.9em;
  background-color: #1976d2ff;
  color: #fff;
}
.auto-table .auto-table-cell.edit-cell div:hover,
.auto-table .auto-table-header-cell.edit-cell div:hover {
  cursor: pointer;
  background-color: #378fe7;
}
.auto-table .auto-table-cell.edit-cell div i,
.auto-table .auto-table-header-cell.edit-cell div i {
  display: block;
  position: relative;
  float: left;
}
.auto-table .auto-table-cell.edit-cell div i.pencil-icon,
.auto-table .auto-table-header-cell.edit-cell div i.pencil-icon {
  position: relative;
  display: block;
  float: left;
  font-size: 1.3em;
  padding: 0em 0em 0em 0.2em;
}
.auto-table .auto-table-cell.edit-cell div i.ellipses-icon,
.auto-table .auto-table-header-cell.edit-cell div i.ellipses-icon {
  position: relative;
  display: block;
  float: left;
  font-size: 1.3em;
  line-height: 0.7em;
  padding: 0em 0em 0em 0.3em;
}
.auto-table .auto-table-row:nth-child(odd) {
  background-color: #f9f9f9;
}
body.dark-mode .auto-table {
  background-color: #444;
}
body.dark-mode .auto-table .auto-table-cell,
body.dark-mode .auto-table .auto-table-header-cell {
  border-bottom: 1px solid #888;
  color: #fff;
}
body.dark-mode .auto-table .auto-table-row:nth-child(odd) {
  background-color: #333;
}
body.light-mode .auto-table {
  background-color: #e6e6e6;
}
body.light-mode .auto-table .auto-table-cell,
body.light-mode .auto-table .auto-table-header-cell {
  border-bottom: 1px solid #444;
  color: #555;
}
body.light-mode .auto-table .auto-table-row:nth-child(odd) {
  background-color: #f9f9f9;
}
/* Modal - Backward Compatibility with existing JavaScript */
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  backdrop-filter: blur(2px);
}
.modal-overlay.active,
.modal-overlay.show {
  opacity: 1;
  visibility: visible;
}
.modal-container {
  background-color: #fff;
  border-radius: 0.2em;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
  max-width: 90vw;
  max-height: 90vh;
  width: auto;
  min-width: 300px;
  position: relative;
  transform: scale(0.8);
  transition: all 0.3s ease;
  overflow: hidden;
}
.modal-overlay.active .modal-container,
.modal-overlay.show .modal-container {
  transform: scale(1);
}
.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid #ccc;
  background-color: #e6e6e6;
}
.modal-header h1,
.modal-header h2,
.modal-header h3,
.modal-header h4,
.modal-header h5,
.modal-header h6 {
  margin: 0;
  color: #555;
  font-weight: 600;
}
.modal-close {
  background: none;
  border: none;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  color: #888;
  padding: 4px;
  border-radius: 0.2em;
  transition: all 0.2s ease;
  text-decoration: none;
}
.modal-close:hover {
  background-color: rgba(0, 0, 0, 0.1);
  color: #555;
  text-decoration: none;
}
.modal-close:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(139, 125, 254, 0.2);
}
.modal-content {
  padding: 24px;
  overflow-y: auto;
  max-height: calc(90vh - 140px);
}
/* Dark mode support */
body.dark-mode .modal-container {
  background-color: #555;
  color: #fff;
}
body.dark-mode .modal-header {
  background-color: #444;
  border-bottom-color: #888;
}
body.dark-mode .modal-header h1,
body.dark-mode .modal-header h2,
body.dark-mode .modal-header h3,
body.dark-mode .modal-header h4,
body.dark-mode .modal-header h5,
body.dark-mode .modal-header h6 {
  color: #fff;
}
body.dark-mode .modal-close {
  color: #fff;
}
body.dark-mode .modal-close:hover {
  background-color: rgba(255, 255, 255, 0.1);
}
/* Light mode support */
body.light-mode .modal-container {
  background-color: #fff;
  color: #555;
}
body.light-mode .modal-header {
  background-color: #e6e6e6;
}
/* Mobile responsiveness */
@media (max-width: 820px) {
  .modal-overlay {
    padding: 16px;
  }
  .modal-container {
    width: 100%;
    max-width: none;
    margin: 0;
    border-radius: 0.2em;
  }
  .modal-header {
    padding: 16px 20px;
  }
  .modal-content {
    padding: 20px;
    max-height: calc(90vh - 120px);
  }
}
/* Examples
   ========================================================================== */
.example {
  border-top: none;
  background-color: #497bad;
  color: #fff;
}
.example p {
  color: rgba(255, 255, 255, 0.7);
}
.example img {
  margin: 0;
}
.mobile-first .column {
  float: none;
  margin-bottom: 1rem;
}
.grid {
  text-align: center;
}
.grid span {
  background: rgba(225, 255, 255, 0.1);
  border: 2px solid rgba(255, 255, 255, 0.2);
  display: block;
  padding: 1rem;
  font-size: 0.9rem;
  font-weight: 600;
}
.grid .container {
  border: 2px dashed rgba(255, 255, 255, 0.3);
  padding: 1rem 1rem 0 1rem;
}
@media (min-width: 40rem) {
  .grid .container {
    padding: 1rem 0 0 0;
  }
}
.grid .column {
  margin-bottom: 1rem;
}
.row {
  position: relative;
  float: left;
  width: 100%;
}
.row-example .container {
  border: 2px dashed rgba(255, 255, 255, 0.2);
  padding: 1rem;
}
.row-example .row {
  background: rgba(225, 255, 255, 0.1);
  border: 2px solid rgba(255, 255, 255, 0.2);
  padding: 1rem 1rem 0 1rem;
  margin-bottom: 1rem;
}
.row-example .row:last-of-type {
  margin-bottom: 0;
}
@media (min-width: 40rem) {
  .row-example .row {
    padding: 1rem 0 0 0;
  }
}
.gutters {
  border: 2px dashed #eee;
  margin-bottom: 2rem;
  max-width: 39rem;
  padding: 1rem 1rem 0 1rem;
}
.gutters .column {
  background: #fb917e;
  margin-bottom: 1rem;
}
.gutters span {
  background: #f8f8f8;
  color: #999;
  display: block;
  padding: 1rem 0;
}
/* Box Model
   ========================================================================== */
.box-model h1 {
  margin-bottom: 3rem;
}
.margin {
  color: #f9cd9d;
}
.border {
  color: #fce08f;
}
.padding {
  color: #c2ddb6;
}
.content {
  color: #9ec3e5;
}
/* Gist Overrides
   ========================================================================== */
.gist .gist-file {
  font-size: 0.9rem !important;
  margin: 0 auto;
  max-width: 39rem;
  overflow: hidden !important;
  text-align: left;
}
.gist .gist-file .gist-data {
  background: #f8f8f8 !important;
  border-bottom: none !important;
}
.gist .gist-file .gist-meta {
  display: none !important;
}
.gist-syntax .k {
  color: #555 !important;
  font-weight: normal !important;
}
/* Animate.css by Daniel Eden
   ========================================================================== */
.animated {
  -webkit-animation-fill-mode: both;
  -moz-animation-fill-mode: both;
  -ms-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-duration: 2s;
  -moz-animation-duration: 2s;
  -ms-animation-duration: 2s;
  -o-animation-duration: 2s;
  animation-duration: 2s;
}
.animated.hinge {
  -webkit-animation-duration: 2s;
  -moz-animation-duration: 2s;
  -ms-animation-duration: 2s;
  -o-animation-duration: 2s;
  animation-duration: 2s;
}
@-webkit-keyframes fadeInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(20px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
  }
}
@-moz-keyframes fadeInUp {
  0% {
    opacity: 0;
    -moz-transform: translateY(20px);
  }
  100% {
    opacity: 1;
    -moz-transform: translateY(0);
  }
}
@-o-keyframes fadeInUp {
  0% {
    opacity: 0;
    -o-transform: translateY(20px);
  }
  100% {
    opacity: 1;
    -o-transform: translateY(0);
  }
}
@keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}
.fadeInUp {
  -webkit-animation-name: fadeInUp;
  -moz-animation-name: fadeInUp;
  -o-animation-name: fadeInUp;
  animation-name: fadeInUp;
}
/* Utilities
   ========================================================================== */
.remove-padding {
  padding-bottom: 0;
}
.remove-border {
  border: none;
}
/* Clearfix by Nicolas Gallagher
   ========================================================================== */
.clearfix:before,
.clearfix:after {
  content: " ";
  display: table;
}
.clearfix:after {
  clear: both;
}
.clearfix {
  *zoom: 1;
}
/* Unified Button System */
button,
.button,
a.button,
input[type="button"],
input[type="submit"],
input[type="reset"] {
  /* Reset browser defaults */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border: none;
  outline: none;
  font: inherit;
  text-decoration: none;
  /* Base styling */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 16px;
  margin: 2px;
  border-radius: 0.2em;
  font-size: 0.9rem;
  font-weight: 500;
  line-height: 1.4;
  cursor: pointer;
  transition: all 0.2s ease;
  vertical-align: middle;
  white-space: nowrap;
  min-height: 36px;
  /* Primary button (default) */
  background-color: #1976d2ff;
  color: #fff;
  /* Subtle shadow for depth */
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  /* Mobile responsive buttons */
}
button:hover:not(:disabled),
.button:hover:not(:disabled),
a.button:hover:not(:disabled),
input[type="button"]:hover:not(:disabled),
input[type="submit"]:hover:not(:disabled),
input[type="reset"]:hover:not(:disabled) {
  background-color: #378fe7;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.12);
  transform: translateY(-1px);
}
button:active:not(:disabled),
.button:active:not(:disabled),
a.button:active:not(:disabled),
input[type="button"]:active:not(:disabled),
input[type="submit"]:active:not(:disabled),
input[type="reset"]:active:not(:disabled) {
  transform: translateY(0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
button:disabled,
.button:disabled,
a.button:disabled,
input[type="button"]:disabled,
input[type="submit"]:disabled,
input[type="reset"]:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}
button:focus-visible,
.button:focus-visible,
a.button:focus-visible,
input[type="button"]:focus-visible,
input[type="submit"]:focus-visible,
input[type="reset"]:focus-visible {
  outline: 2px solid rgba(139, 125, 254, 0.5);
  outline-offset: 2px;
}
@media (max-width: 820px) {
  button,
  .button,
  a.button,
  input[type="button"],
  input[type="submit"],
  input[type="reset"] {
    font-size: 1rem;
    padding: 12px 20px;
    min-height: 44px;
    margin: 4px 2px;
  }
}
/* Button Variants */
.button.secondary,
button.secondary {
  background-color: #ccc;
  color: #555;
}
.button.secondary:hover:not(:disabled),
button.secondary:hover:not(:disabled) {
  background-color: #b3b3b3;
}
.button.outline,
button.outline {
  background-color: transparent;
  color: #1976d2ff;
  border: 1px solid #1976d2ff;
  box-shadow: none;
}
.button.outline:hover:not(:disabled),
button.outline:hover:not(:disabled) {
  background-color: #1976d2ff;
  color: #fff;
}
.button.danger,
button.danger {
  background-color: #c24040;
}
.button.danger:hover:not(:disabled),
button.danger:hover:not(:disabled) {
  background-color: #9d3232;
}
.button.success,
button.success {
  background-color: #23c227;
}
.button.success:hover:not(:disabled),
button.success:hover:not(:disabled) {
  background-color: #1b971e;
}
.button.ghost,
button.ghost {
  background-color: transparent;
  color: #555;
  box-shadow: none;
}
.button.ghost:hover:not(:disabled),
button.ghost:hover:not(:disabled) {
  background-color: rgba(0, 0, 0, 0.05);
}
/* Button Sizes */
.button.small,
button.small {
  padding: 4px 8px;
  font-size: 0.8rem;
  min-height: 28px;
}
.button.large,
button.large {
  padding: 12px 24px;
  font-size: 1rem;
  min-height: 44px;
}
/* Button Shapes */
.button.rounded,
button.rounded {
  border-radius: 0.5em;
}
.button.round,
button.round {
  border-radius: 50px;
}
.button.icon,
button.icon {
  padding: 8px;
  width: 36px;
  height: 36px;
  min-height: 36px;
}
.button.icon.large,
button.icon.large {
  width: 44px;
  height: 44px;
  min-height: 44px;
}
/* Full width button */
.button.full-width,
button.full-width {
  width: 100%;
  display: flex;
}
/* Button groups */
.button-group {
  display: inline-flex;
  gap: 0;
}
.button-group .button,
.button-group button {
  margin: 0;
  border-radius: 0;
}
.button-group .button:first-child,
.button-group button:first-child {
  border-top-left-radius: 0.2em;
  border-bottom-left-radius: 0.2em;
}
.button-group .button:last-child,
.button-group button:last-child {
  border-top-right-radius: 0.2em;
  border-bottom-right-radius: 0.2em;
}
.button-group .button:not(:last-child),
.button-group button:not(:last-child) {
  border-right: 1px solid rgba(255, 255, 255, 0.2);
}
/* Dark Mode Overrides */
body.dark-mode button,
body.dark-mode .button,
body.dark-mode a.button {
  color: #fff;
}
body.dark-mode button.secondary,
body.dark-mode .button.secondary,
body.dark-mode a.button.secondary {
  background-color: #444;
  color: #fff;
}
body.dark-mode button.secondary:hover:not(:disabled),
body.dark-mode .button.secondary:hover:not(:disabled),
body.dark-mode a.button.secondary:hover:not(:disabled) {
  background-color: #5e5e5e;
}
body.dark-mode button.outline,
body.dark-mode .button.outline,
body.dark-mode a.button.outline {
  color: #1976d2ff;
  border-color: #1976d2ff;
}
body.dark-mode button.ghost,
body.dark-mode .button.ghost,
body.dark-mode a.button.ghost {
  color: #fff;
}
body.dark-mode button.ghost:hover:not(:disabled),
body.dark-mode .button.ghost:hover:not(:disabled),
body.dark-mode a.button.ghost:hover:not(:disabled) {
  background-color: rgba(255, 255, 255, 0.1);
}
/* Light Mode Overrides */
body.light-mode button.secondary,
body.light-mode .button.secondary,
body.light-mode a.button.secondary {
  background-color: #e6e6e6;
  color: #555;
}
/* Unified Form Input System */
/* Base input styles */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="date"],
input[type="datetime-local"],
input[type="month"],
input[type="number"],
input[type="search"],
input[type="tel"],
input[type="time"],
input[type="url"],
input[type="week"],
textarea,
select {
  /* Reset browser defaults */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border: 1px solid #ccc;
  font: inherit;
  /* Base styling */
  width: 100%;
  padding: 10px 12px;
  margin: 4px 0;
  border-radius: 0.2em;
  background-color: #fff;
  color: #555;
  font-size: 0.9rem;
  line-height: 1.4;
  transition: all 0.2s ease;
  box-sizing: border-box;
  /* Mobile touch improvements */
  touch-action: manipulation;
  /* Enable touch events for mobile */
  -webkit-tap-highlight-color: transparent;
  /* Remove iOS tap highlight */
  /* Focus state */
  /* Disabled state */
  /* Invalid state */
  /* Placeholder styling */
  /* Mobile responsive inputs */
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="date"]:focus,
input[type="datetime-local"]:focus,
input[type="month"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="time"]:focus,
input[type="url"]:focus,
input[type="week"]:focus,
textarea:focus,
select:focus {
  outline: none;
  border-color: #1976d2ff;
  box-shadow: 0 0 0 2px rgba(139, 125, 254, 0.2);
}
input[type="text"]:disabled,
input[type="email"]:disabled,
input[type="password"]:disabled,
input[type="date"]:disabled,
input[type="datetime-local"]:disabled,
input[type="month"]:disabled,
input[type="number"]:disabled,
input[type="search"]:disabled,
input[type="tel"]:disabled,
input[type="time"]:disabled,
input[type="url"]:disabled,
input[type="week"]:disabled,
textarea:disabled,
select:disabled {
  background-color: #e6e6e6;
  color: #888;
  cursor: not-allowed;
  opacity: 0.7;
}
input[type="text"]:invalid:not(:focus),
input[type="email"]:invalid:not(:focus),
input[type="password"]:invalid:not(:focus),
input[type="date"]:invalid:not(:focus),
input[type="datetime-local"]:invalid:not(:focus),
input[type="month"]:invalid:not(:focus),
input[type="number"]:invalid:not(:focus),
input[type="search"]:invalid:not(:focus),
input[type="tel"]:invalid:not(:focus),
input[type="time"]:invalid:not(:focus),
input[type="url"]:invalid:not(:focus),
input[type="week"]:invalid:not(:focus),
textarea:invalid:not(:focus),
select:invalid:not(:focus) {
  border-color: #c24040;
}
input[type="text"]::placeholder,
input[type="email"]::placeholder,
input[type="password"]::placeholder,
input[type="date"]::placeholder,
input[type="datetime-local"]::placeholder,
input[type="month"]::placeholder,
input[type="number"]::placeholder,
input[type="search"]::placeholder,
input[type="tel"]::placeholder,
input[type="time"]::placeholder,
input[type="url"]::placeholder,
input[type="week"]::placeholder,
textarea::placeholder,
select::placeholder {
  color: #888;
  opacity: 1;
}
@media (max-width: 820px) {
  input[type="text"],
  input[type="email"],
  input[type="password"],
  input[type="date"],
  input[type="datetime-local"],
  input[type="month"],
  input[type="number"],
  input[type="search"],
  input[type="tel"],
  input[type="time"],
  input[type="url"],
  input[type="week"],
  textarea,
  select {
    font-size: 1rem;
    padding: 12px 16px;
    min-height: 44px;
  }
}
/* Textarea specific styles */
textarea {
  resize: vertical;
  min-height: 80px;
  font-family: inherit;
}
/* Select specific styles */
select {
  cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, #888 50%), linear-gradient(135deg, #888 50%, transparent 50%);
  background-position: calc(100% - 15px) calc(1em + 2px), calc(100% - 10px) calc(1em + 2px);
  background-size: 5px 5px,
    5px 5px;
  background-repeat: no-repeat;
  padding-right: 30px;
  /* Remove default arrow in IE */
}
select::-ms-expand {
  display: none;
}
select option {
  padding: 6px 12px;
  background-color: #fff;
  color: #555;
}
/* Checkbox and Radio styles */
input[type="checkbox"],
input[type="radio"] {
  width: auto;
  margin: 0 8px 0 0;
  vertical-align: middle;
  /* Custom styling for modern look */
  appearance: none;
  width: 18px;
  height: 18px;
  border: 2px solid #ccc;
  border-radius: 3px;
  background-color: #fff;
  cursor: pointer;
  position: relative;
  transition: all 0.2s ease;
  /* Mobile touch improvements */
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  /* Mobile responsive checkboxes and radios */
}
input[type="checkbox"]:checked,
input[type="radio"]:checked {
  background-color: #1976d2ff;
  border-color: #1976d2ff;
}
input[type="checkbox"]:checked::after,
input[type="radio"]:checked::after {
  content: "";
  position: absolute;
  top: 1px;
  left: 4px;
  width: 6px;
  height: 10px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
input[type="checkbox"]:focus,
input[type="radio"]:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(139, 125, 254, 0.2);
}
@media (max-width: 820px) {
  input[type="checkbox"],
  input[type="radio"] {
    width: 22px;
    height: 22px;
    margin: 0 12px 0 0;
  }
}
input[type="radio"] {
  border-radius: 50%;
}
input[type="radio"]:checked::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: #fff;
  border: none;
  transform: none;
}
/* File input styling */
input[type="file"] {
  border: 2px dashed #ccc;
  padding: 20px;
  text-align: center;
  background-color: #e6e6e6;
  cursor: pointer;
}
input[type="file"]:hover {
  border-color: #1976d2ff;
  background-color: rgba(139, 125, 254, 0.05);
}
/* Range/Slider styling */
input[type="range"] {
  width: 100%;
  height: 6px;
  background: #ccc;
  border-radius: 3px;
  outline: none;
  padding: 0;
  margin: 10px 0;
}
input[type="range"]::-webkit-slider-thumb {
  appearance: none;
  width: 20px;
  height: 20px;
  background: #1976d2ff;
  border-radius: 50%;
  cursor: pointer;
}
input[type="range"]::-moz-range-thumb {
  width: 20px;
  height: 20px;
  background: #1976d2ff;
  border-radius: 50%;
  cursor: pointer;
  border: none;
}
/* Color input */
input[type="color"] {
  padding: 2px;
  height: 40px;
  cursor: pointer;
  border: 1px solid #ccc;
}
input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 0;
}
input[type="color"]::-webkit-color-swatch {
  border: none;
  border-radius: calc(0.2em - 2px);
}
/* Input sizing modifiers */
.input-small {
  font-size: 0.8rem;
  padding: 6px 8px;
}
.input-large {
  font-size: 1rem;
  padding: 14px 16px;
}
/* Form groups and labels */
.form-group {
  margin-bottom: 16px;
}
.form-group label {
  display: block;
  margin-bottom: 6px;
  font-weight: 500;
  color: #555;
  font-size: 0.9rem;
}
.form-group .form-help {
  font-size: 0.8rem;
  color: #888;
  margin-top: 4px;
}
.form-group .form-error {
  font-size: 0.8rem;
  color: #c24040;
  margin-top: 4px;
}
/* Input groups (input with addon) */
.input-group {
  display: flex;
}
.input-group .input-addon {
  display: flex;
  align-items: center;
  padding: 10px 12px;
  background-color: #e6e6e6;
  border: 1px solid #ccc;
  color: #888;
  white-space: nowrap;
  font-size: 0.9rem;
}
.input-group .input-addon:first-child {
  border-right: none;
  border-top-left-radius: 0.2em;
  border-bottom-left-radius: 0.2em;
}
.input-group .input-addon:last-child {
  border-left: none;
  border-top-right-radius: 0.2em;
  border-bottom-right-radius: 0.2em;
}
.input-group input {
  border-radius: 0;
  margin: 0;
}
.input-group input:first-child {
  border-top-left-radius: 0.2em;
  border-bottom-left-radius: 0.2em;
}
.input-group input:last-child {
  border-top-right-radius: 0.2em;
  border-bottom-right-radius: 0.2em;
}
.input-group input:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.label-header {
  font-size: 0.8rem;
  padding: 10px 12px;
  margin: 4px 0px;
  font-weight: 600;
  color: #555;
  margin-bottom: 8px;
}
/* Enhanced Form Layout for Management Modals */
/* Form container styling */
form {
  /* Enhanced form layout for management modals */
}
form label {
  display: block;
  margin-bottom: 6px;
  font-weight: 500;
  color: #555;
  font-size: 0.9rem;
  line-height: 1.4;
  /* Special styling for checkbox and radio labels */
}
form label:has(input[type="checkbox"]),
form label:has(input[type="radio"]) {
  display: flex;
  align-items: center;
  margin-bottom: 12px;
  cursor: pointer;
  padding: 8px 0;
}
form label:has(input[type="checkbox"]) input[type="checkbox"],
form label:has(input[type="radio"]) input[type="checkbox"],
form label:has(input[type="checkbox"]) input[type="radio"],
form label:has(input[type="radio"]) input[type="radio"] {
  margin-right: 10px;
  margin-left: 0;
  flex-shrink: 0;
}
form[id*="edit-"],
form[id*="new-"] {
  max-width: 100%;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
form[id*="edit-"] label,
form[id*="new-"] label {
  margin-bottom: 12px;
  /* Ensure proper spacing for regular input labels */
  /* Improved checkbox/radio label styling */
}
form[id*="edit-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])),
form[id*="new-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])) {
  margin-bottom: 6px;
}
form[id*="edit-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])) input,
form[id*="new-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])) input,
form[id*="edit-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])) textarea,
form[id*="new-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])) textarea,
form[id*="edit-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])) select,
form[id*="new-"] label:not(:has(input[type="checkbox"])):not(:has(input[type="radio"])) select {
  margin-top: 4px;
}
form[id*="edit-"] label:has(input[type="checkbox"]),
form[id*="new-"] label:has(input[type="checkbox"]),
form[id*="edit-"] label:has(input[type="radio"]),
form[id*="new-"] label:has(input[type="radio"]) {
  background-color: rgba(139, 125, 254, 0.03);
  border: 1px solid rgba(139, 125, 254, 0.1);
  border-radius: 0.2em;
  padding: 12px;
  margin-bottom: 12px;
  transition: all 0.2s ease;
}
form[id*="edit-"] label:has(input[type="checkbox"]):hover,
form[id*="new-"] label:has(input[type="checkbox"]):hover,
form[id*="edit-"] label:has(input[type="radio"]):hover,
form[id*="new-"] label:has(input[type="radio"]):hover {
  background-color: rgba(139, 125, 254, 0.06);
  border-color: rgba(139, 125, 254, 0.2);
}
form[id*="edit-"] label:has(input[type="checkbox"]) input[type="checkbox"],
form[id*="new-"] label:has(input[type="checkbox"]) input[type="checkbox"],
form[id*="edit-"] label:has(input[type="radio"]) input[type="checkbox"],
form[id*="new-"] label:has(input[type="radio"]) input[type="checkbox"],
form[id*="edit-"] label:has(input[type="checkbox"]) input[type="radio"],
form[id*="new-"] label:has(input[type="checkbox"]) input[type="radio"],
form[id*="edit-"] label:has(input[type="radio"]) input[type="radio"],
form[id*="new-"] label:has(input[type="radio"]) input[type="radio"] {
  margin-right: 12px;
}
/* Specific styling for client and funder management forms */
#edit-client-form label,
#new-client-form label,
#edit-funder-form label,
#new-funder-form label,
#edit-user-form label,
#new-user-form label {
  display: block;
  margin-bottom: 12px;
  font-weight: 500;
  color: #555;
  font-size: 0.9rem;
  /* Better checkbox styling in management forms */
  /* When input type is checkbox, make the label inline */
}
#edit-client-form label input[type="checkbox"] + span ~ *,
#new-client-form label input[type="checkbox"] + span ~ *,
#edit-funder-form label input[type="checkbox"] + span ~ *,
#new-funder-form label input[type="checkbox"] + span ~ *,
#edit-user-form label input[type="checkbox"] + span ~ *,
#new-user-form label input[type="checkbox"] + span ~ *,
#edit-client-form label input[type="checkbox"] ~ *,
#new-client-form label input[type="checkbox"] ~ *,
#edit-funder-form label input[type="checkbox"] ~ *,
#new-funder-form label input[type="checkbox"] ~ *,
#edit-user-form label input[type="checkbox"] ~ *,
#new-user-form label input[type="checkbox"] ~ * {
  margin-left: 8px;
}
#edit-client-form label:has(input[type="checkbox"]),
#new-client-form label:has(input[type="checkbox"]),
#edit-funder-form label:has(input[type="checkbox"]),
#new-funder-form label:has(input[type="checkbox"]),
#edit-user-form label:has(input[type="checkbox"]),
#new-user-form label:has(input[type="checkbox"]) {
  display: flex !important;
  align-items: center;
  background-color: rgba(139, 125, 254, 0.04);
  border: 1px solid rgba(139, 125, 254, 0.12);
  border-radius: 0.2em;
  padding: 12px;
  cursor: pointer;
  transition: all 0.2s ease;
}
#edit-client-form label:has(input[type="checkbox"]):hover,
#new-client-form label:has(input[type="checkbox"]):hover,
#edit-funder-form label:has(input[type="checkbox"]):hover,
#new-funder-form label:has(input[type="checkbox"]):hover,
#edit-user-form label:has(input[type="checkbox"]):hover,
#new-user-form label:has(input[type="checkbox"]):hover {
  background-color: rgba(139, 125, 254, 0.08);
  border-color: rgba(139, 125, 254, 0.2);
}
#edit-client-form label:has(input[type="checkbox"]) input[type="checkbox"],
#new-client-form label:has(input[type="checkbox"]) input[type="checkbox"],
#edit-funder-form label:has(input[type="checkbox"]) input[type="checkbox"],
#new-funder-form label:has(input[type="checkbox"]) input[type="checkbox"],
#edit-user-form label:has(input[type="checkbox"]) input[type="checkbox"],
#new-user-form label:has(input[type="checkbox"]) input[type="checkbox"] {
  margin-right: 12px !important;
  margin-bottom: 0 !important;
  flex-shrink: 0;
}
/* Contact forms in client/funder modals */
.contacts-container .add-contact-form,
.contacts-container .edit-contact-form {
  background-color: #e6e6e6;
  border: 1px solid #ccc;
  border-radius: 0.2em;
  padding: 16px;
  margin: 12px 0;
}
.contacts-container .add-contact-form label,
.contacts-container .edit-contact-form label {
  display: block;
  margin-bottom: 8px;
  font-weight: 500;
  color: #555;
}
.contacts-container .add-contact-form label:has(input[type="checkbox"]),
.contacts-container .edit-contact-form label:has(input[type="checkbox"]) {
  display: flex !important;
  align-items: center;
  background-color: rgba(139, 125, 254, 0.06);
  border: 1px solid rgba(139, 125, 254, 0.15);
  border-radius: 0.2em;
  padding: 10px;
  cursor: pointer;
  margin-bottom: 12px;
}
.contacts-container .add-contact-form label:has(input[type="checkbox"]):hover,
.contacts-container .edit-contact-form label:has(input[type="checkbox"]):hover {
  background-color: rgba(139, 125, 254, 0.1);
}
.contacts-container .add-contact-form label:has(input[type="checkbox"]) input[type="checkbox"],
.contacts-container .edit-contact-form label:has(input[type="checkbox"]) input[type="checkbox"] {
  margin-right: 10px !important;
  margin-bottom: 0 !important;
  flex-shrink: 0;
}
/* Modal form button styling */
.form-buttons {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid #ccc;
}
.contact-buttons {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 16px;
}
/* Dark Mode Overrides */
body.dark-mode {
  /* Dark Mode Overrides for Enhanced Form Layout */
  /* Dark mode for specific management forms */
  /* Dark mode for modal improvements */
}
body.dark-mode input[type="text"],
body.dark-mode input[type="email"],
body.dark-mode input[type="password"],
body.dark-mode input[type="date"],
body.dark-mode input[type="datetime-local"],
body.dark-mode input[type="month"],
body.dark-mode input[type="number"],
body.dark-mode input[type="search"],
body.dark-mode input[type="tel"],
body.dark-mode input[type="time"],
body.dark-mode input[type="url"],
body.dark-mode input[type="week"],
body.dark-mode textarea,
body.dark-mode select {
  background-color: #444;
  color: #fff;
  border-color: #888;
}
body.dark-mode input[type="text"]:focus,
body.dark-mode input[type="email"]:focus,
body.dark-mode input[type="password"]:focus,
body.dark-mode input[type="date"]:focus,
body.dark-mode input[type="datetime-local"]:focus,
body.dark-mode input[type="month"]:focus,
body.dark-mode input[type="number"]:focus,
body.dark-mode input[type="search"]:focus,
body.dark-mode input[type="tel"]:focus,
body.dark-mode input[type="time"]:focus,
body.dark-mode input[type="url"]:focus,
body.dark-mode input[type="week"]:focus,
body.dark-mode textarea:focus,
body.dark-mode select:focus {
  border-color: #1976d2ff;
  box-shadow: 0 0 0 2px rgba(139, 125, 254, 0.2);
}
body.dark-mode input[type="text"]:disabled,
body.dark-mode input[type="email"]:disabled,
body.dark-mode input[type="password"]:disabled,
body.dark-mode input[type="date"]:disabled,
body.dark-mode input[type="datetime-local"]:disabled,
body.dark-mode input[type="month"]:disabled,
body.dark-mode input[type="number"]:disabled,
body.dark-mode input[type="search"]:disabled,
body.dark-mode input[type="tel"]:disabled,
body.dark-mode input[type="time"]:disabled,
body.dark-mode input[type="url"]:disabled,
body.dark-mode input[type="week"]:disabled,
body.dark-mode textarea:disabled,
body.dark-mode select:disabled {
  background-color: #555;
  color: #888;
}
body.dark-mode input[type="text"]::placeholder,
body.dark-mode input[type="email"]::placeholder,
body.dark-mode input[type="password"]::placeholder,
body.dark-mode input[type="date"]::placeholder,
body.dark-mode input[type="datetime-local"]::placeholder,
body.dark-mode input[type="month"]::placeholder,
body.dark-mode input[type="number"]::placeholder,
body.dark-mode input[type="search"]::placeholder,
body.dark-mode input[type="tel"]::placeholder,
body.dark-mode input[type="time"]::placeholder,
body.dark-mode input[type="url"]::placeholder,
body.dark-mode input[type="week"]::placeholder,
body.dark-mode textarea::placeholder,
body.dark-mode select::placeholder {
  color: #888;
}
body.dark-mode select {
  background-image: linear-gradient(45deg, transparent 50%, #fff 50%), linear-gradient(135deg, #fff 50%, transparent 50%);
}
body.dark-mode select option {
  background-color: #444;
  color: #fff;
}
body.dark-mode input[type="checkbox"],
body.dark-mode input[type="radio"] {
  border-color: #888;
  background-color: #444;
}
body.dark-mode input[type="file"] {
  background-color: #555;
  border-color: #888;
  color: #fff;
}
body.dark-mode input[type="file"]:hover {
  border-color: #1976d2ff;
  background-color: rgba(139, 125, 254, 0.1);
}
body.dark-mode input[type="range"] {
  background: #888;
}
body.dark-mode .form-group label {
  color: #fff;
}
body.dark-mode .form-group .form-help {
  color: #888;
}
body.dark-mode .input-addon {
  background-color: #555;
  border-color: #888;
  color: #fff;
}
body.dark-mode form label {
  color: #fff;
  /* Dark mode checkbox/radio label styling */
}
body.dark-mode form label:has(input[type="checkbox"]),
body.dark-mode form label:has(input[type="radio"]) {
  background-color: rgba(139, 125, 254, 0.05);
  border-color: rgba(139, 125, 254, 0.2);
}
body.dark-mode form label:has(input[type="checkbox"]):hover,
body.dark-mode form label:has(input[type="radio"]):hover {
  background-color: rgba(139, 125, 254, 0.1);
  border-color: rgba(139, 125, 254, 0.3);
}
body.dark-mode #edit-client-form label,
body.dark-mode #new-client-form label,
body.dark-mode #edit-funder-form label,
body.dark-mode #new-funder-form label,
body.dark-mode #edit-user-form label,
body.dark-mode #new-user-form label {
  color: #fff;
}
body.dark-mode #edit-client-form label:has(input[type="checkbox"]),
body.dark-mode #new-client-form label:has(input[type="checkbox"]),
body.dark-mode #edit-funder-form label:has(input[type="checkbox"]),
body.dark-mode #new-funder-form label:has(input[type="checkbox"]),
body.dark-mode #edit-user-form label:has(input[type="checkbox"]),
body.dark-mode #new-user-form label:has(input[type="checkbox"]) {
  background-color: rgba(139, 125, 254, 0.06);
  border-color: rgba(139, 125, 254, 0.2);
}
body.dark-mode #edit-client-form label:has(input[type="checkbox"]):hover,
body.dark-mode #new-client-form label:has(input[type="checkbox"]):hover,
body.dark-mode #edit-funder-form label:has(input[type="checkbox"]):hover,
body.dark-mode #new-funder-form label:has(input[type="checkbox"]):hover,
body.dark-mode #edit-user-form label:has(input[type="checkbox"]):hover,
body.dark-mode #new-user-form label:has(input[type="checkbox"]):hover {
  background-color: rgba(139, 125, 254, 0.12);
  border-color: rgba(139, 125, 254, 0.3);
}
body.dark-mode .contacts-container .add-contact-form,
body.dark-mode .contacts-container .edit-contact-form {
  background-color: #444;
  border-color: #888;
}
body.dark-mode .contacts-container .add-contact-form label,
body.dark-mode .contacts-container .edit-contact-form label {
  color: #fff;
}
body.dark-mode .contacts-container .add-contact-form label:has(input[type="checkbox"]),
body.dark-mode .contacts-container .edit-contact-form label:has(input[type="checkbox"]) {
  background-color: rgba(139, 125, 254, 0.08);
  border-color: rgba(139, 125, 254, 0.25);
}
body.dark-mode .contacts-container .add-contact-form label:has(input[type="checkbox"]):hover,
body.dark-mode .contacts-container .edit-contact-form label:has(input[type="checkbox"]):hover {
  background-color: rgba(139, 125, 254, 0.14);
}
body.dark-mode .form-buttons {
  border-top-color: #888;
}
body.dark-mode .modal .modal-content form label {
  color: #fff;
}
body.dark-mode .modal .modal-content form label:has(input[type="checkbox"]) {
  background: linear-gradient(135deg, rgba(139, 125, 254, 0.05) 0%, rgba(139, 125, 254, 0.12) 100%);
  border-left-color: rgba(139, 125, 254, 0.4);
}
body.dark-mode .modal .modal-content form label:has(input[type="checkbox"]):hover {
  background: linear-gradient(135deg, rgba(139, 125, 254, 0.08) 0%, rgba(139, 125, 254, 0.16) 100%);
  border-left-color: rgba(139, 125, 254, 0.6);
}
/* Light Mode Overrides */
body.light-mode input[type="text"],
body.light-mode input[type="email"],
body.light-mode input[type="password"],
body.light-mode input[type="date"],
body.light-mode input[type="datetime-local"],
body.light-mode input[type="month"],
body.light-mode input[type="number"],
body.light-mode input[type="search"],
body.light-mode input[type="tel"],
body.light-mode input[type="time"],
body.light-mode input[type="url"],
body.light-mode input[type="week"],
body.light-mode textarea,
body.light-mode select {
  background-color: #fff;
  color: #555;
  border-color: #ccc;
}
body.light-mode .form-group label {
  color: #555;
}
/* General improvement for all modal forms */
.modal .modal-content form label {
  line-height: 1.5;
  margin-bottom: 16px;
  /* Ensure text inputs have proper spacing */
  /* Make checkbox labels more visually distinct */
}
.modal .modal-content form label input:not([type="checkbox"]):not([type="radio"]),
.modal .modal-content form label textarea,
.modal .modal-content form label select {
  margin-top: 6px;
  margin-bottom: 4px;
}
.modal .modal-content form label:has(input[type="checkbox"]) {
  font-weight: 600;
  background: linear-gradient(135deg, rgba(139, 125, 254, 0.03) 0%, rgba(139, 125, 254, 0.08) 100%);
  border-left: 3px solid rgba(139, 125, 254, 0.3);
}
.modal .modal-content form label:has(input[type="checkbox"]):hover {
  background: linear-gradient(135deg, rgba(139, 125, 254, 0.06) 0%, rgba(139, 125, 254, 0.12) 100%);
  border-left-color: rgba(139, 125, 254, 0.5);
}
/* Responsive adjustments for smaller screens */
@media (max-width: 820px) {
  input,
  select,
  textarea {
    font-size: 1rem !important;
    padding: 14px 12px !important;
    min-height: 48px !important;
    border-radius: 8px !important;
    border-width: 2px !important;
    -webkit-appearance: none;
    appearance: none;
  }
  textarea {
    min-height: 100px !important;
    resize: vertical;
  }
  label {
    font-size: 1rem !important;
    font-weight: 600 !important;
    margin-bottom: 8px !important;
    display: block;
  }
  .form-group {
    margin-bottom: 20px !important;
  }
  input[type="checkbox"],
  input[type="radio"] {
    width: 20px !important;
    height: 20px !important;
    margin-right: 12px !important;
    min-height: 20px !important;
  }
  label:has(input[type="checkbox"]),
  label:has(input[type="radio"]) {
    display: flex !important;
    align-items: center !important;
    padding: 12px !important;
    font-size: 1rem !important;
    background-color: #f8f9fa;
    border-radius: 8px;
    border: 1px solid #dee2e6;
    cursor: pointer;
  }
  label:has(input[type="checkbox"]) input,
  label:has(input[type="radio"]) input {
    margin: 0 12px 0 0 !important;
    min-height: 20px !important;
  }
  .form-row,
  .form-columns {
    flex-direction: column !important;
    gap: 0 !important;
  }
  .form-row .form-group,
  .form-columns .form-group {
    width: 100% !important;
    margin-bottom: 20px !important;
  }
  .search-input,
  input[type="search"] {
    font-size: 1rem !important;
    padding: 14px 40px 14px 12px !important;
  }
  select {
    background-size: 20px !important;
    padding-right: 40px !important;
  }
  .modal .modal-content form .form-group {
    margin-bottom: 20px !important;
  }
  .modal .modal-content form label {
    font-size: 1rem !important;
    font-weight: 600 !important;
  }
  .modal .modal-content form label:has(input[type="checkbox"]) {
    padding: 12px;
    font-size: 1rem !important;
  }
  .modal .modal-content form input,
  .modal .modal-content form select,
  .modal .modal-content form textarea {
    font-size: 1rem !important;
    padding: 14px 12px !important;
    min-height: 48px !important;
  }
  .contacts-container .add-contact-form,
  .contacts-container .edit-contact-form {
    padding: 16px;
  }
  .contacts-container .add-contact-form label:has(input[type="checkbox"]),
  .contacts-container .edit-contact-form label:has(input[type="checkbox"]) {
    padding: 12px;
    font-size: 1rem !important;
  }
  .contacts-container .add-contact-form .form-group,
  .contacts-container .edit-contact-form .form-group {
    margin-bottom: 20px;
  }
  /* Signature fields in note templates - mobile fixes */
  .signature-field .signature-container {
    padding: 8px !important;
    margin: 0 !important;
  }
  .signature-field .signature-container canvas {
    touch-action: none !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -webkit-tap-highlight-color: transparent !important;
    /* Prevent coordinate offset issues */
    transform: none !important;
    position: relative !important;
    left: 0 !important;
    top: 0 !important;
    margin: 0 auto !important;
    display: block !important;
    max-width: 100% !important;
  }
  .signature-field .signature-container .signature-controls {
    margin-top: 10px !important;
  }
  .signature-field .signature-container .signature-controls .signature-clear-btn {
    min-height: 44px !important;
    min-width: 44px !important;
    padding: 12px 16px !important;
    font-size: 1rem !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1) !important;
  }
}
/* Default/System styles */
.radio-group {
  display: inline-flex;
  gap: 0.5rem;
  padding: 0.25rem;
  border: 1px solid #e2e8f0;
  border-radius: 0.2em;
  background: #f8fafc;
  transition: all 0.2s ease;
}
.radio-group label {
  position: relative;
  display: flex;
  align-items: center;
  padding: 0.5rem 1rem;
  border-radius: 0.2em;
  cursor: pointer;
  font-size: 0.875rem;
  color: #64748b;
  transition: all 0.2s ease;
}
.radio-group label:hover {
  background: #f1f5f9;
}
.radio-group label:has(input[type="radio"]:checked) {
  background: #fff;
  color: #0f172a;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.radio-group input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.radio-group input[type="radio"]:checked + label {
  background: #fff;
  color: #0f172a;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.radio-group input[type="radio"] .radio-group input[type="radio"]:focus-visible + label,
.radio-group label:has(input[type="radio"]:focus-visible) {
  outline: 2px solid #3b82f6;
  outline-offset: 2px;
}
/* Light mode styles */
.light-mode .radio-group {
  border-color: #e2e8f0;
  background: #f8fafc;
}
.light-mode .radio-group label {
  color: #64748b;
}
.light-mode .radio-group label:hover {
  background: #f1f5f9;
}
.light-mode .radio-group input[type="radio"]:checked + label,
.light-mode .radio-group label:has(input[type="radio"]:checked) {
  background: #fff;
  color: #0f172a;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.light-mode .radio-group input[type="radio"]:focus-visible + label,
.light-mode .radio-group label:has(input[type="radio"]:focus-visible) {
  outline-color: #3b82f6;
}
/* Dark mode styles */
.dark-mode .radio-group {
  border-color: #334155;
  background: #1e293b;
}
.dark-mode .radio-group label {
  color: #94a3b8;
}
.dark-mode .radio-group label:hover {
  background: #334155;
}
.dark-mode .radio-group input[type="radio"]:checked + label,
.dark-mode .radio-group label:has(input[type="radio"]:checked) {
  background: #0f172a;
  color: #f8fafc;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.dark-mode .radio-group input[type="radio"]:focus-visible + label,
.dark-mode .radio-group label:has(input[type="radio"]:focus-visible) {
  outline-color: #60a5fa;
}
@media (prefers-reduced-motion: reduce) {
  .radio-group,
  .radio-group label {
    transition: none;
  }
}
.searchable-select-container {
  position: relative;
  width: 100%;
}
.searchable-select-container .searchable-select-input {
  width: 100%;
  padding: 0.5rem;
  border: 1px solid #ccc;
  border-radius: 0.2em;
  font-size: 0.875rem;
  background: #fff;
  cursor: pointer;
}
.searchable-select-container .searchable-select-input:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
.searchable-select-container .searchable-select-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: #fff;
  border: 1px solid #ccc;
  border-top: none;
  border-radius: 0 0 0.2em 0.2em;
  max-height: 200px;
  overflow-y: auto;
  z-index: 1000;
  display: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.searchable-select-container .searchable-select-dropdown .searchable-select-option {
  padding: 0.5rem;
  cursor: pointer;
  font-size: 0.875rem;
  border-bottom: 1px solid #f0f0f0;
}
.searchable-select-container .searchable-select-dropdown .searchable-select-option:hover,
.searchable-select-container .searchable-select-dropdown .searchable-select-option.highlighted {
  background: #f8f9fa;
}
.searchable-select-container .searchable-select-dropdown .searchable-select-option.selected {
  background: #007bff;
  color: #fff;
}
.searchable-select-container .searchable-select-dropdown .searchable-select-option.selected:hover,
.searchable-select-container .searchable-select-dropdown .searchable-select-option.selected.highlighted {
  background: #0056b3;
}
.searchable-select-container .searchable-select-dropdown .searchable-select-option.no-results {
  color: #666;
  font-style: italic;
  cursor: default;
}
.searchable-select-container .searchable-select-dropdown .searchable-select-option.no-results:hover {
  background: transparent;
}
.searchable-select-container .searchable-select-dropdown .searchable-select-option:last-child {
  border-bottom: none;
}
.searchable-select-container.open .searchable-select-dropdown {
  display: block;
}
.ruutio-calendar-modal .searchable-select-container .searchable-select-input {
  padding: 0.75rem;
  font-size: 1rem;
}
/* Tab component styles */
.tabs-container {
  display: flex;
  flex-direction: column;
  width: 100%;
  margin: 1rem 0;
}
.tabs-nav {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  border-bottom: 1px solid #ccc;
  position: relative;
  z-index: 1;
}
.tabs-nav li {
  padding: 0.75rem 1.25rem;
  cursor: pointer;
  user-select: none;
  border: 1px solid transparent;
  border-bottom: 1px solid #ccc;
  border-radius: 0.2em 0.2em 0 0;
  margin-right: 0.25rem;
  position: relative;
  bottom: -1px;
  transition: all 0.2s ease;
  color: #666;
  background-color: #f8f8f8;
}
.tabs-nav li:hover {
  background-color: #f0f0f0;
}
.tabs-nav li.active {
  background-color: #fff;
  border-color: #ccc;
  color: #333;
  font-weight: 500;
  border-bottom: 1px solid transparent;
}
.tabs-content {
  border: 1px solid #ccc;
  border-top: none;
  border-radius: 0 0 0.2em 0.2em;
  padding: 1rem;
  background-color: #fff;
}
.tab-pane {
  display: none;
}
.tab-pane.active {
  display: block;
}
.tab-loading {
  padding: 1rem;
  color: #666;
  font-style: italic;
}
/* Dark mode tab styles */
.dark-mode .tabs-nav {
  border-bottom-color: #444;
}
.dark-mode .tabs-nav li {
  background-color: #383838;
  color: #ccc;
}
.dark-mode .tabs-nav li:hover {
  background-color: #444;
}
.dark-mode .tabs-nav li.active {
  background-color: #222;
  border-color: #555;
  color: #fff;
}
.dark-mode .tabs-content {
  border-color: #444;
  background-color: #222;
  color: #eee;
}
.dark-mode .tab-loading {
  color: #aaa;
}
/* Responsive tab styles */
@media screen and (max-width: 640px) {
  .tabs-nav {
    flex-wrap: wrap;
  }
  .tabs-nav li {
    flex-grow: 1;
    text-align: center;
    padding: 0.5rem;
    font-size: 0.9rem;
  }
}
/* Tooltip component styles */
.tooltip {
  display: inline-flex;
  position: relative;
  margin-left: 0.25rem;
  vertical-align: middle;
  z-index: 1;
  /* Tooltip positions */
}
.tooltip .tooltip-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background-color: #888;
  color: white;
  font-size: 0.75rem;
  cursor: pointer;
  transition: background-color 0.2s ease;
}
.tooltip .tooltip-icon:hover {
  background-color: #666;
}
.tooltip .tooltip-text {
  visibility: hidden;
  position: absolute;
  z-index: 10;
  width: max-content;
  max-width: 250px;
  padding: 0.5rem 0.75rem;
  border-radius: 0.2em;
  font-size: 0.8rem;
  line-height: 1.4;
  text-align: left;
  opacity: 0;
  transition: opacity 0.3s, visibility 0.3s;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  pointer-events: none;
}
.tooltip:hover .tooltip-text,
.tooltip:focus .tooltip-text,
.tooltip:focus-within .tooltip-text {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
}
.tooltip.top .tooltip-text {
  bottom: 125%;
  left: 50%;
  transform: translateX(-50%);
  margin-bottom: 0.5rem;
}
.tooltip.top .tooltip-text::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: currentColor transparent transparent transparent;
}
.tooltip.bottom .tooltip-text {
  top: 125%;
  left: 50%;
  transform: translateX(-50%);
  margin-top: 0.5rem;
}
.tooltip.bottom .tooltip-text::after {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent currentColor transparent;
}
.tooltip.left .tooltip-text {
  top: 50%;
  right: 125%;
  transform: translateY(-50%);
  margin-right: 0.5rem;
}
.tooltip.left .tooltip-text::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 100%;
  margin-top: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent transparent currentColor;
}
.tooltip.right .tooltip-text {
  top: 50%;
  left: 125%;
  transform: translateY(-50%);
  margin-left: 0.5rem;
}
.tooltip.right .tooltip-text::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 100%;
  margin-top: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent currentColor transparent transparent;
}
/* Light mode tooltip styles */
.light-mode .tooltip .tooltip-text {
  background-color: #333;
  color: #fff;
  border: 1px solid #444;
}
/* Dark mode tooltip styles */
.dark-mode .tooltip .tooltip-icon {
  background-color: #666;
}
.dark-mode .tooltip .tooltip-icon:hover {
  background-color: #888;
}
.dark-mode .tooltip .tooltip-text {
  background-color: #222;
  color: #eee;
  border: 1px solid #444;
}
/* Tooltip in form contexts */
label .tooltip {
  vertical-align: text-top;
}
/* Tooltip accessibility and touch devices */
@media (hover: none) {
  .tooltip:active .tooltip-text {
    visibility: visible;
    opacity: 1;
  }
}
/* Note Templates Styles */
.note-templates-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}
.note-templates-header h3 {
  margin: 0;
  color: #333;
}
.note-templates-list .loading,
.note-templates-list .error {
  text-align: center;
  padding: 40px;
  color: #666;
  font-style: italic;
}
.note-templates-list .error {
  color: #dc3545;
  background: #f8d7da;
  border: 1px solid #f5c6cb;
  border-radius: 0.2em;
}
.empty-state {
  text-align: center;
  padding: 40px;
  color: #666;
}
.empty-state h4 {
  margin-bottom: 10px;
  color: #333;
}
.empty-state p {
  margin: 0;
  font-style: italic;
}
.category-section {
  margin-bottom: 30px;
}
.category-section h4 {
  margin-bottom: 15px;
  color: #333;
  border-bottom: 2px solid #e0e0e0;
  padding-bottom: 5px;
  font-weight: 600;
}
.templates-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 20px;
}
.template-card {
  border: 1px solid #ddd;
  border-radius: 8px;
  padding: 20px;
  background: white;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.2s ease;
}
.template-card:hover {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}
.template-card h5 {
  margin: 0 0 5px 0;
  color: #333;
  font-weight: 600;
}
.template-card p {
  margin: 0;
  color: #666;
  font-size: 14px;
  line-height: 1.4;
}
.template-card .template-status {
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: bold;
}
.template-card .template-status.active {
  background: #d4edda;
  color: #155724;
}
.template-card .template-status.inactive {
  background: #f8d7da;
  color: #721c24;
}
.template-card .template-actions {
  display: flex;
  gap: 10px;
  margin-top: 15px;
}
.template-card .template-actions button {
  flex: 1;
  padding: 8px 12px;
  font-size: 14px;
  border-radius: 0.2em;
  border: 1px solid transparent;
  cursor: pointer;
  transition: all 0.2s ease;
  /* Primary buttons use default unified button styling */
}
.template-card .template-actions button.btn-secondary,
.template-card .template-actions button.secondary {
  background: #6c757d;
  color: white;
}
.template-card .template-actions button.btn-secondary:hover,
.template-card .template-actions button.secondary:hover {
  background: #545b62;
}
.template-card .template-actions button.btn-danger,
.template-card .template-actions button.danger {
  background: #dc3545;
  color: white;
}
.template-card .template-actions button.btn-danger:hover,
.template-card .template-actions button.danger:hover {
  background: #c82333;
}
/* Template Modal Styles */
.basic-info-tab,
.form-builder-tab,
.assignments-tab {
  padding: 20px;
}
.basic-info-tab .form-group,
.form-builder-tab .form-group,
.assignments-tab .form-group {
  margin-bottom: 20px;
}
.basic-info-tab .form-group label,
.form-builder-tab .form-group label,
.assignments-tab .form-group label {
  display: block;
  margin-bottom: 5px;
  font-weight: bold;
  color: #333;
}
.basic-info-tab .form-group input,
.form-builder-tab .form-group input,
.assignments-tab .form-group input,
.basic-info-tab .form-group textarea,
.form-builder-tab .form-group textarea,
.assignments-tab .form-group textarea,
.basic-info-tab .form-group select,
.form-builder-tab .form-group select,
.assignments-tab .form-group select {
  width: 100%;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 0.2em;
  font-size: 14px;
  transition: border-color 0.2s ease;
}
.basic-info-tab .form-group input:focus,
.form-builder-tab .form-group input:focus,
.assignments-tab .form-group input:focus,
.basic-info-tab .form-group textarea:focus,
.form-builder-tab .form-group textarea:focus,
.assignments-tab .form-group textarea:focus,
.basic-info-tab .form-group select:focus,
.form-builder-tab .form-group select:focus,
.assignments-tab .form-group select:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
.basic-info-tab .form-group textarea,
.form-builder-tab .form-group textarea,
.assignments-tab .form-group textarea {
  min-height: 80px;
  resize: vertical;
}
.form-builder-instructions {
  background: #f8f9fa;
  padding: 15px;
  border-radius: 0.2em;
  margin-bottom: 20px;
  border-left: 4px solid #007bff;
}
.form-builder-instructions h5 {
  margin: 0 0 10px 0;
  color: #333;
}
.form-builder-instructions p {
  margin: 0;
  color: #666;
}
.assignments-instructions {
  background: #f8f9fa;
  padding: 15px;
  border-radius: 0.2em;
  margin-bottom: 20px;
  border-left: 4px solid #28a745;
}
.assignments-instructions h5 {
  margin: 0 0 10px 0;
  color: #333;
}
.assignments-instructions p {
  margin: 0;
  color: #666;
}
.assignments-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px;
}
.assignments-grid h5 {
  margin-bottom: 15px;
  color: #333;
  font-weight: 600;
}
.funders-assignments,
.clients-assignments {
  max-height: 300px;
  overflow-y: auto;
  border: 1px solid #ddd;
  padding: 15px;
  border-radius: 0.2em;
  background: #fafafa;
}
.funders-assignments .assignment-item,
.clients-assignments .assignment-item {
  display: flex;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid #eee;
}
.funders-assignments .assignment-item:last-child,
.clients-assignments .assignment-item:last-child {
  border-bottom: none;
}
.funders-assignments .assignment-item input[type="checkbox"],
.clients-assignments .assignment-item input[type="checkbox"] {
  margin-right: 10px;
  cursor: pointer;
}
.funders-assignments .assignment-item label,
.clients-assignments .assignment-item label {
  cursor: pointer;
  flex: 1;
  font-weight: normal;
  color: #333;
}
.funders-assignments .assignment-item label:hover,
.clients-assignments .assignment-item label:hover {
  color: #007bff;
}
.funders-assignments .no-items,
.clients-assignments .no-items {
  color: #666;
  font-style: italic;
  text-align: center;
  padding: 20px;
}
/* Help Button */
.help-button {
  background: #17a2b8;
  color: white;
  border: none;
  padding: 8px 16px;
  border-radius: 0.2em;
  cursor: pointer;
  font-size: 14px;
  transition: background-color 0.2s ease;
}
.help-button:hover {
  background: #138496;
}
/* Form Builder Container */
#note-template-form-builder {
  min-height: 400px;
  border: 1px solid #ddd;
  border-radius: 0.2em;
  padding: 20px;
  background: white;
}
/* Form Builder Styles */
.form-builder-header {
  margin-bottom: 30px;
  padding-bottom: 20px;
  border-bottom: 1px solid #eee;
}
.form-builder-header .form-group {
  margin-bottom: 15px;
}
.form-builder-header .form-group label {
  display: block;
  margin-bottom: 5px;
  font-weight: bold;
  color: #333;
}
.form-builder-header .form-group input,
.form-builder-header .form-group textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 0.2em;
  font-size: 14px;
}
.form-builder-header .form-group input:focus,
.form-builder-header .form-group textarea:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
.form-builder-header .form-group textarea {
  resize: vertical;
  min-height: 80px;
}
.form-builder-fields h3 {
  margin-bottom: 20px;
  color: #333;
  font-size: 18px;
  border-bottom: 1px solid #eee;
  padding-bottom: 10px;
}
.fields-list {
  display: flex;
  flex-direction: column;
  gap: 15px;
}
.field-editor {
  border: 1px solid #ddd;
  border-radius: 0.2em;
  background: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.field-editor .field-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 15px;
  background: #f8f9fa;
  border-bottom: 1px solid #ddd;
  border-radius: 0.2em 0.2em 0 0;
}
.field-editor .field-header .field-info {
  font-weight: bold;
  color: #333;
  font-size: 14px;
}
.field-editor .field-header .field-controls {
  display: flex;
  gap: 5px;
}
.field-editor .field-config {
  padding: 20px;
}
/* Form Builder Button Controls */
.btn-field-control {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 1px solid #ccc;
  border-radius: 4px;
  background: #fff;
  color: #333;
  font-size: 16px;
  font-weight: bold;
  cursor: pointer;
  transition: all 0.2s ease;
}
.btn-field-control:hover {
  background: #f0f0f0;
  border-color: #999;
  color: #000;
}
.btn-field-control:active {
  transform: translateY(1px);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
.btn-field-control.btn-danger {
  background: #dc3545;
  color: white;
  border-color: #dc3545;
}
.btn-field-control.btn-danger:hover {
  background: #c82333;
  border-color: #bd2130;
  color: white;
}
.field-basic-props,
.field-type-props {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 15px;
  margin-bottom: 15px;
}
.field-basic-props .prop-group,
.field-type-props .prop-group {
  display: flex;
  flex-direction: column;
}
.field-basic-props .prop-group.prop-checkbox,
.field-type-props .prop-group.prop-checkbox {
  flex-direction: row;
  align-items: center;
  gap: 8px;
}
.field-basic-props .prop-group.prop-checkbox input[type="checkbox"],
.field-type-props .prop-group.prop-checkbox input[type="checkbox"] {
  width: auto;
  margin: 0;
}
.field-basic-props .prop-group.prop-checkbox label,
.field-type-props .prop-group.prop-checkbox label {
  margin: 0;
  font-weight: normal;
  cursor: pointer;
}
.field-basic-props .prop-group label,
.field-type-props .prop-group label {
  display: block;
  margin-bottom: 5px;
  font-weight: 500;
  color: #555;
  font-size: 13px;
}
.field-basic-props .prop-group input,
.field-type-props .prop-group input,
.field-basic-props .prop-group select,
.field-type-props .prop-group select,
.field-basic-props .prop-group textarea,
.field-type-props .prop-group textarea {
  padding: 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 13px;
}
.field-basic-props .prop-group input:focus,
.field-type-props .prop-group input:focus,
.field-basic-props .prop-group select:focus,
.field-type-props .prop-group select:focus,
.field-basic-props .prop-group textarea:focus,
.field-type-props .prop-group textarea:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
/* Form Builder Toolbox */
.form-builder-toolbox {
  margin-bottom: 30px;
  padding: 20px;
  background: #f8f9fa;
  border: 1px solid #ddd;
  border-radius: 0.2em;
}
.form-builder-toolbox h4 {
  margin-bottom: 15px;
  color: #333;
  font-size: 16px;
}
.form-builder-toolbox .field-types {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.form-builder-toolbox .field-types .field-type-btn {
  padding: 10px 15px;
  background: #007bff;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 14px;
  transition: background-color 0.2s ease;
}
.form-builder-toolbox .field-types .field-type-btn:hover {
  background: #0056b3;
}
.form-builder-toolbox .field-types .field-type-btn:active {
  transform: translateY(1px);
}
/* Form Builder Options */
.options-container .option-item {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  padding: 10px;
  background: #f8f9fa;
  border: 1px solid #ddd;
  border-radius: 4px;
}
.options-container .option-item input {
  flex: 1;
  margin: 0;
}
.options-container .option-item .remove-option {
  background: #dc3545;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 5px 10px;
  cursor: pointer;
  font-size: 12px;
}
.options-container .option-item .remove-option:hover {
  background: #c82333;
}
.options-container .add-option {
  background: #28a745;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 8px 12px;
  cursor: pointer;
  font-size: 13px;
  margin-top: 10px;
}
.options-container .add-option:hover {
  background: #218838;
}
/* Unified Modal System */
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  backdrop-filter: blur(2px);
}
.modal-overlay.active,
.modal-overlay.show {
  opacity: 1;
  visibility: visible;
}
.modal-overlay.click-outside {
  cursor: pointer;
}
.modal,
.modal-container {
  background-color: #fff;
  border-radius: 0.2em;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
  max-width: 90vw;
  max-height: 90vh;
  width: auto;
  position: relative;
  transform: scale(0.8);
  transition: all 0.3s ease;
  overflow: hidden;
  cursor: auto;
}
.modal-overlay.active .modal,
.modal-overlay.active .modal-container,
.modal-overlay.show .modal,
.modal-overlay.show .modal-container {
  transform: scale(1);
}
.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid #ccc;
  background-color: #e6e6e6;
}
.modal-header h1,
.modal-header h2,
.modal-header h3,
.modal-header h4,
.modal-header h5,
.modal-header h6 {
  margin: 0;
  color: #555;
  font-weight: 600;
}
.modal-header .modal-title {
  margin: 0;
  color: #555;
  font-weight: 600;
  font-size: 1.2rem;
}
.modal-close {
  background: none;
  border: none;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  color: #888;
  padding: 4px;
  border-radius: 0.2em;
  transition: all 0.2s ease;
}
.modal-close:hover {
  background-color: rgba(0, 0, 0, 0.1);
  color: #555;
}
.modal-close:focus {
  outline: none;
  box-shadow: 0 0 0 2px rgba(139, 125, 254, 0.2);
}
.modal-body {
  padding: 24px;
  overflow-y: auto;
  max-height: calc(90vh - 140px);
}
.modal-body > *:first-child {
  margin-top: 0;
}
.modal-body > *:last-child {
  margin-bottom: 0;
}
.modal-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  padding: 16px 24px;
  border-top: 1px solid #ccc;
  background-color: #e6e6e6;
}
.modal-footer.full-width {
  justify-content: stretch;
}
.modal-footer.full-width .button,
.modal-footer.full-width button {
  flex: 1;
}
.modal-footer.space-between {
  justify-content: space-between;
}
.modal-small {
  width: 400px;
}
.modal-medium {
  width: 600px;
}
.modal-large {
  width: 800px;
}
.modal-xlarge {
  width: 1000px;
}
.modal-fullscreen {
  width: 100vw;
  height: 100vh;
  max-width: none;
  max-height: none;
  border-radius: 0;
}
.modal-fullscreen .modal-body {
  max-height: calc(100vh - 140px);
}
.modal-simple .modal-body {
  padding: 32px;
  max-height: 90vh;
}
.modal-form .modal-body form {
  margin: 0;
  padding: 0;
  background: transparent;
  box-shadow: none;
  border-radius: 0;
}
.modal-confirm {
  width: 400px;
}
.modal-confirm .modal-body {
  text-align: center;
  padding: 32px 24px;
}
.modal-confirm .modal-body .confirm-icon {
  font-size: 48px;
  margin-bottom: 16px;
}
.modal-confirm .modal-body .confirm-icon.danger {
  color: #c24040;
}
.modal-confirm .modal-body .confirm-icon.warning {
  color: #c2b54a;
}
.modal-confirm .modal-body .confirm-icon.success {
  color: #23c227;
}
.modal-confirm .modal-body .confirm-icon.info {
  color: #4c56d6;
}
.modal-confirm .modal-body .confirm-title {
  font-size: 1.2rem;
  font-weight: 600;
  margin-bottom: 8px;
  color: #555;
}
.modal-confirm .modal-body .confirm-message {
  color: #888;
  margin-bottom: 0;
}
body.dark-mode .modal,
body.dark-mode .modal-container {
  background-color: #555;
  color: #fff;
}
body.dark-mode .modal-header {
  background-color: #444;
  border-bottom-color: #888;
}
body.dark-mode .modal-header .modal-title,
body.dark-mode .modal-header h1,
body.dark-mode .modal-header h2,
body.dark-mode .modal-header h3,
body.dark-mode .modal-header h4,
body.dark-mode .modal-header h5,
body.dark-mode .modal-header h6 {
  color: #fff;
}
body.dark-mode .modal-close {
  color: #fff;
}
body.dark-mode .modal-close:hover {
  background-color: rgba(255, 255, 255, 0.1);
}
body.dark-mode .modal-footer {
  background-color: #444;
  border-top-color: #888;
}
body.dark-mode .modal-confirm .confirm-title {
  color: #fff;
}
body.light-mode .modal,
body.light-mode .modal-container {
  background-color: #fff;
  color: #555;
}
body.light-mode .modal-header {
  background-color: #e6e6e6;
}
body.light-mode .modal-footer {
  background-color: #e6e6e6;
}
@media (max-width: 820px) {
  .modal-overlay {
    padding: 10px;
    align-items: flex-start;
    padding-top: 20px;
  }
  .modal,
  .modal-container {
    width: 100% !important;
    max-width: none;
    margin: 0;
    border-radius: 12px;
    font-size: 1rem !important;
  }
  .modal.modal-fullscreen,
  .modal-container.modal-fullscreen {
    border-radius: 0;
  }
  .modal-header {
    padding: 16px 20px;
  }
  .modal-header .modal-title,
  .modal-header h1,
  .modal-header h2,
  .modal-header h3,
  .modal-header h4,
  .modal-header h5,
  .modal-header h6 {
    font-size: 1.4rem !important;
    margin: 0;
  }
  .modal-body {
    padding: 20px;
    max-height: calc(90vh - 120px);
    font-size: 1rem !important;
  }
  .modal-body p,
  .modal-body div,
  .modal-body span {
    font-size: 1rem !important;
    line-height: 1.5 !important;
  }
  .modal-footer {
    padding: 16px 20px;
    flex-direction: column;
    gap: 12px;
  }
  .modal-footer .button,
  .modal-footer button {
    width: 100%;
    margin: 0;
    font-size: 1rem !important;
    padding: 14px 16px !important;
    min-height: 48px !important;
    border-radius: 8px;
  }
  .modal-footer.space-between {
    flex-direction: column-reverse;
  }
  .modal-footer.full-width .button,
  .modal-footer.full-width button {
    min-height: 52px;
    font-weight: 600;
  }
  .modal-close {
    font-size: 1.8rem !important;
    padding: 8px !important;
    min-width: 44px !important;
    min-height: 44px !important;
  }
  .modal-confirm .modal-body {
    padding: 24px 20px;
  }
  .modal-confirm .modal-body .confirm-icon {
    font-size: 3rem;
    margin-bottom: 20px;
  }
  .modal-confirm .modal-body .confirm-title {
    font-size: 1.3rem !important;
    margin-bottom: 12px;
  }
  .modal-confirm .modal-body .confirm-message {
    font-size: 1rem !important;
  }
}
@keyframes modalFadeIn {
  from {
    opacity: 0;
    transform: scale(0.8);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes modalFadeOut {
  from {
    opacity: 1;
    transform: scale(1);
  }
  to {
    opacity: 0;
    transform: scale(0.8);
  }
}
.modal-opening {
  animation: modalFadeIn 0.3s ease forwards;
}
.modal-closing {
  animation: modalFadeOut 0.3s ease forwards;
}
@media (prefers-reduced-motion: reduce) {
  .tooltip,
  .tooltip .tooltip-icon,
  .tooltip .tooltip-text,
  .btn-field-control,
  .field-type-btn {
    transition: none;
  }
}
/* Map Component Styles */
.location-container {
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid #ccc;
  border-radius: 0.2em;
  background: #f9f9f9;
}
.location-container h3 {
  margin: 0 0 1rem 0;
  color: #333;
  font-size: 1.1em;
  font-weight: 600;
}
.location-container .coords-input-container {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1rem;
  flex-wrap: wrap;
  align-items: center;
}
.location-container .coords-input-container .coord-input {
  flex: 1;
  min-width: 120px;
  padding: 0.5rem;
  border: 1px solid #ccc;
  border-radius: 0.2em;
  font-size: 0.9em;
}
.location-container .coords-input-container .coord-input:focus {
  outline: none;
  border-color: #007cba;
  box-shadow: 0 0 0 2px rgba(0, 124, 186, 0.2);
}
.location-container .coords-input-container .update-map-button,
.location-container .coords-input-container .geocode-button {
  padding: 0.5rem 1rem;
  border: 1px solid #ccc;
  border-radius: 0.2em;
  background: #fff;
  color: #333;
  cursor: pointer;
  font-size: 0.9em;
  transition: background-color 0.2s ease;
}
.location-container .coords-input-container .update-map-button:hover,
.location-container .coords-input-container .geocode-button:hover {
  background: #f0f0f0;
}
.location-container .coords-input-container .update-map-button:disabled,
.location-container .coords-input-container .geocode-button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.location-container .coords-input-container .geocode-button {
  background: #007cba;
  color: white;
  border-color: #007cba;
}
.location-container .coords-input-container .geocode-button:hover:not(:disabled) {
  background: #005a8b;
}
.location-container .map-container {
  border-radius: 0.2em;
  overflow: hidden;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.location-container .map-container .leaflet-control-container .leaflet-control {
  border-radius: 0.2em;
  box-shadow: 0 1px 5px rgba(0, 0, 0, 0.2);
}
.location-container .map-container .leaflet-popup-content {
  font-family: inherit;
  font-size: 0.9em;
  line-height: 1.4;
}
/* Mobile responsiveness for map components */
@media (max-width: 820px) {
  .location-container .coords-input-container {
    flex-direction: column;
  }
  .location-container .coords-input-container .coord-input,
  .location-container .coords-input-container .update-map-button,
  .location-container .coords-input-container .geocode-button {
    width: 100%;
    min-width: unset;
  }
  .location-container .map-container {
    height: 250px !important;
  }
}
/* Custom styling for contact count display in tables */
.contact-count,
.no-contacts {
  font-style: italic;
  color: #666;
  font-size: 0.9em;
}
.contact-count {
  color: #007cba;
}
.no-contacts {
  color: #999;
}
/* Recurring Choice Modal - Specific styles to prevent button positioning issues */
.recurring-choice-modal-overlay * {
  box-sizing: border-box;
}
.recurring-choice-modal-overlay .recurring-choice-modal {
  /* Ensure the modal container has proper containment */
  overflow: visible !important;
  contain: layout style !important;
  /* Button container styles - very specific selector */
}
.recurring-choice-modal-overlay .recurring-choice-modal > div[style*="display: flex"],
.recurring-choice-modal-overlay .recurring-choice-modal div[style*="display: flex"][style*="justify-content: flex-end"] {
  width: 100% !important;
  justify-content: flex-end !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  position: relative !important;
  overflow: visible !important;
  contain: layout !important;
  /* Button styles - override global button styles with high specificity */
}
.recurring-choice-modal-overlay .recurring-choice-modal > div[style*="display: flex"] > button,
.recurring-choice-modal-overlay .recurring-choice-modal div[style*="display: flex"][style*="justify-content: flex-end"] > button,
.recurring-choice-modal-overlay .recurring-choice-modal > div[style*="display: flex"] button,
.recurring-choice-modal-overlay .recurring-choice-modal div[style*="display: flex"][style*="justify-content: flex-end"] button {
  position: relative !important;
  float: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  flex-shrink: 0 !important;
  white-space: nowrap !important;
  transform: none !important;
  /* Ensure buttons don't have any weird positioning */
  left: auto !important;
  right: auto !important;
  top: auto !important;
  bottom: auto !important;
  /* Reset any potential inherited positioning */
  -webkit-transform: none !important;
  -moz-transform: none !important;
  -ms-transform: none !important;
  /* Ensure proper stacking */
  z-index: auto !important;
}
.form-message#login-form-message {
  font-size: 0.8rem;
}
.form-message#login-form-message .error {
  color: indianred;
}
.signup-link {
  position: relative;
  float: left;
  width: 100%;
}
.signup-link a {
  font-size: 0.8rem;
}
.main-header {
  position: relative;
  float: left;
  width: 100%;
  height: 58px;
  margin: 0;
  background: rgba(225, 255, 255, 0.1);
  border-bottom: 1px solid #444;
}
.main-header button {
  margin: 8px 4px;
  float: right;
  touch-action: manipulation;
  /* Enable proper touch events */
  -webkit-tap-highlight-color: transparent;
  /* Remove iOS tap highlight */
  user-select: none;
  /* Prevent text selection on touch */
  -webkit-user-select: none;
}
.main-header img.logo {
  position: relative;
  float: left;
  height: calc(58px - 4px);
  width: auto;
  margin: 0 auto;
  padding: 2px;
}
.main-header h1 {
  position: relative;
  float: left;
  margin: 0;
  padding: 0 1rem;
  line-height: 58px;
  font-size: 1.5rem;
  font-weight: 400;
}
@media (max-width: 820px) {
  .main-header h1 {
    display: none;
  }
  .main-header button {
    margin: 6px 2px;
    min-height: 40px;
    min-width: 40px;
    touch-action: manipulation;
    /* Ensure touch events work on mobile */
    -webkit-tap-highlight-color: transparent;
    /* Remove iOS tap highlight */
    user-select: none;
    /* Prevent text selection on touch */
    -webkit-user-select: none;
  }
  .main-header img.logo {
    height: calc(58px - 8px);
  }
}
section.admin-page-section {
  width: 100%;
}
.breadcrumb {
  display: flex;
  align-items: center;
  margin-bottom: 20px;
  padding: 10px 0;
  font-size: 0.9rem;
}
.breadcrumb .breadcrumb-link {
  color: #007bff;
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: 4px;
  transition: background-color 0.2s ease;
}
.breadcrumb .breadcrumb-link:hover {
  background-color: #f8f9fa;
  text-decoration: none;
}
.breadcrumb .breadcrumb-link i {
  font-size: 0.8rem;
}
.breadcrumb .breadcrumb-separator {
  margin: 0 8px;
  color: #6c757d;
}
.breadcrumb .breadcrumb-current {
  color: #6c757d;
  font-weight: 500;
}
.admin-navigation {
  padding: 20px;
}
.admin-navigation h4 {
  margin-bottom: 20px;
  color: #333;
  font-size: 1.5rem;
}
.admin-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 20px;
  margin-top: 20px;
}
@media (max-width: 820px) {
  .admin-cards {
    grid-template-columns: 1fr;
    gap: 15px;
  }
}
.admin-card {
  background: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 8px;
  padding: 20px;
  cursor: pointer;
  transition: all 0.3s ease;
  display: flex;
  align-items: center;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.admin-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  border-color: #007bff;
}
@media (max-width: 820px) {
  .admin-card {
    padding: 15px;
  }
  .admin-card .admin-card-icon {
    font-size: 1.5rem !important;
    margin-right: 12px !important;
  }
}
.admin-card .admin-card-icon {
  font-size: 2rem;
  color: #007bff;
  margin-right: 15px;
  min-width: 40px;
}
.admin-card .admin-card-content {
  flex: 1;
}
.admin-card .admin-card-content h5 {
  margin: 0 0 8px 0;
  font-size: 1.1rem;
  color: #333;
  font-weight: 600;
}
.admin-card .admin-card-content p {
  margin: 0 0 8px 0;
  color: #666;
  font-size: 0.9rem;
  line-height: 1.4;
}
.admin-card .admin-card-content .admin-card-category {
  display: inline-block;
  background: #f8f9fa;
  color: #495057;
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 0.75rem;
  font-weight: 500;
}
.admin-card .admin-card-arrow {
  color: #999;
  font-size: 1rem;
}
.admin-placeholder {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 400px;
  background: #f8f9fa;
  border-radius: 8px;
  border: 1px solid #e9ecef;
}
.admin-placeholder .placeholder-content {
  text-align: center;
  max-width: 400px;
  padding: 40px;
}
.admin-placeholder .placeholder-content .placeholder-icon {
  font-size: 4rem;
  color: #6c757d;
  margin-bottom: 20px;
  display: block;
}
.admin-placeholder .placeholder-content h3 {
  color: #495057;
  margin-bottom: 15px;
  font-size: 1.5rem;
}
.admin-placeholder .placeholder-content p {
  color: #6c757d;
  margin-bottom: 10px;
  line-height: 1.5;
}
.admin-placeholder .placeholder-content .placeholder-note {
  font-style: italic;
  font-size: 0.9rem;
  color: #868e96;
}
#edit-role-form {
  position: relative;
  float: left;
  width: 100%;
}
#edit-role-form label {
  position: relative;
  float: left;
  margin: 4px auto;
  width: 100%;
}
#edit-role-form label span {
  position: relative;
  float: left;
  width: 100%;
  text-align: center;
}
#edit-role-form label input,
#edit-role-form label textarea {
  position: relative;
  margin: 0px auto;
  width: 80%;
}
#edit-role-form label textarea {
  height: 200px;
}
#edit-role-form button {
  position: relative;
  margin: 4px auto;
  width: 80%;
}
#admin-models .model-forms-container {
  width: 100%;
  float: left;
  position: relative;
}
#admin-models .model-forms-container form {
  position: relative;
  float: left;
  width: 100%;
  margin: 24px auto;
}
#admin-models .model-forms-container form label {
  position: relative;
  float: left;
  width: 100%;
}
#admin-models .model-forms-container form label span {
  position: relative;
  float: left;
  width: 100%;
}
#admin-models .model-forms-container form label input,
#admin-models .model-forms-container form label textarea {
  position: relative;
  width: 75%;
}
.admin-support-tickets .container {
  max-width: 1400px;
  margin: 0 auto;
  padding: 20px;
}
.admin-support-tickets .page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 30px;
}
.admin-support-tickets .page-header h1 {
  margin: 0;
  color: #333;
}
.admin-support-tickets .header-actions {
  display: flex;
  gap: 10px;
}
.admin-support-tickets .card {
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  padding: 20px;
  margin-bottom: 20px;
}
.admin-support-tickets .stats-row {
  display: flex;
  gap: 20px;
  margin-bottom: 20px;
}
.admin-support-tickets .stat-card {
  flex: 1;
  background: #f8f9fa;
  border-radius: 8px;
  padding: 20px;
  text-align: center;
  border-left: 4px solid #007bff;
}
.admin-support-tickets .stat-card .stat-number {
  font-size: 2em;
  font-weight: bold;
  color: #007bff;
}
.admin-support-tickets .stat-card .stat-label {
  margin-top: 5px;
  color: #666;
  font-size: 0.9em;
}
.admin-support-tickets .button {
  padding: 8px 16px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-weight: 600;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
}
.admin-support-tickets .button.small {
  padding: 4px 8px;
  font-size: 12px;
}
.admin-support-tickets .button.primary {
  background: #007bff;
  color: white;
}
.admin-support-tickets .button.secondary {
  background: #6c757d;
  color: white;
}
.admin-support-tickets .button.danger {
  background: #dc3545;
  color: white;
}
.admin-support-tickets .button:hover {
  opacity: 0.9;
}
.admin-support-tickets .status-dropdown,
.admin-support-tickets .assign-dropdown {
  padding: 4px 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 12px;
  min-width: 100px;
}
.admin-support-tickets .priority-input {
  width: 60px;
  padding: 4px;
  border: 1px solid #ddd;
  border-radius: 4px;
  text-align: center;
}
.admin-support-tickets .ticket-actions {
  display: flex;
  gap: 5px;
}
.admin-support-tickets .status-badge {
  padding: 4px 8px;
  border-radius: 12px;
  font-size: 0.8em;
  font-weight: 600;
  text-transform: uppercase;
}
.admin-support-tickets .status-badge.status-open {
  background: #e3f2fd;
  color: #1976d2;
}
.admin-support-tickets .status-badge.status-in_progress {
  background: #fff3e0;
  color: #f57c00;
}
.admin-support-tickets .status-badge.status-resolved {
  background: #e8f5e8;
  color: #2e7d32;
}
.admin-support-tickets .status-badge.status-closed {
  background: #f3e5f5;
  color: #7b1fa2;
}
.admin-support-tickets .no-data,
.admin-support-tickets .error {
  text-align: center;
  padding: 40px;
  color: #666;
}
.admin-support-tickets .error {
  color: #d32f2f;
}
.admin-support-tickets .sortable-ghost {
  opacity: 0.5;
  background: #f8f9fa;
}
.admin-support-tickets .ticket-details {
  max-width: 100%;
}
.admin-support-tickets .ticket-details .ticket-meta {
  background: #f8f9fa;
  padding: 15px;
  border-radius: 4px;
  margin-bottom: 15px;
}
.admin-support-tickets .ticket-details .ticket-meta > div {
  margin-bottom: 8px;
}
.admin-support-tickets .ticket-details .ticket-description h4 {
  margin-bottom: 10px;
}
.admin-support-tickets .ticket-details .ticket-description p {
  line-height: 1.6;
  white-space: pre-wrap;
}
.admin-support-tickets .edit-ticket-form {
  max-width: 500px;
}
.admin-support-tickets .edit-ticket-form .form-group {
  margin-bottom: 20px;
}
.admin-support-tickets .edit-ticket-form .form-group label {
  display: block;
  margin-bottom: 5px;
  font-weight: 600;
}
.admin-support-tickets .edit-ticket-form .form-group input,
.admin-support-tickets .edit-ticket-form .form-group select,
.admin-support-tickets .edit-ticket-form .form-group textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 14px;
  box-sizing: border-box;
}
.admin-support-tickets .edit-ticket-form .form-group textarea {
  resize: vertical;
  min-height: 100px;
}
.admin-support-tickets .edit-ticket-form .form-actions {
  display: flex;
  gap: 10px;
  margin-top: 30px;
}
.admin-users-container {
  background: white;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  margin-top: 20px;
  overflow-x: auto;
}
.admin-users-container .table-wrapper {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
@media (max-width: 1200px) {
  .admin-users-container .table-wrapper {
    min-width: 1400px;
  }
}
.bulk-actions-bar {
  background: #f8f9fa;
  border: 1px solid #dee2e6;
  border-radius: 6px;
  padding: 15px;
  margin-bottom: 20px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.bulk-actions-bar .bulk-actions-content {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 15px;
}
.bulk-actions-bar .bulk-actions-content .selected-count {
  font-weight: 600;
  color: #495057;
  font-size: 1rem;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn {
  padding: 8px 16px;
  border-radius: 4px;
  border: none;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: all 0.2s ease;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-info {
  background: #17a2b8;
  color: white;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-info:hover {
  background: #138496;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-warning {
  background: #ffc107;
  color: #212529;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-warning:hover {
  background: #e0a800;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-danger {
  background: #dc3545;
  color: white;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-danger:hover {
  background: #c82333;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-success {
  background: #28a745;
  color: white;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-success:hover {
  background: #218838;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-secondary {
  background: #6c757d;
  color: white;
}
.bulk-actions-bar .bulk-actions-content .bulk-action-buttons .btn.btn-secondary:hover {
  background: #5a6268;
}
.admin-users-table {
  width: 100%;
  border-collapse: collapse;
  background: white;
  font-size: 0.875rem;
}
.admin-users-table th,
.admin-users-table td {
  padding: 8px 6px;
  text-align: left;
  border-bottom: 1px solid #dee2e6;
  vertical-align: middle;
  white-space: nowrap;
}
.admin-users-table th.wrap-text,
.admin-users-table td.wrap-text {
  white-space: normal;
}
.admin-users-table th {
  background: #f8f9fa;
  font-weight: 600;
  color: #495057;
  border-bottom: 2px solid #dee2e6;
  position: sticky;
  top: 0;
  z-index: 10;
  font-size: 0.8rem;
}
.admin-users-table th[style*="cursor: pointer"]:hover {
  background: #e9ecef;
}
.admin-users-table tbody tr {
  transition: background-color 0.2s ease;
}
.admin-users-table tbody tr:hover {
  background: #f8f9fa;
}
.admin-users-table tbody tr.selected {
  background: #e3f2fd !important;
  border-left: 3px solid #2196f3;
}
.admin-users-table .user-checkbox {
  cursor: pointer;
  transform: scale(1.1);
}
.admin-users-table .user-avatar-small {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
}
.admin-users-table .user-avatar-placeholder-small {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #007bff;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: bold;
}
.admin-users-table .status-verified {
  color: #28a745;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 4px;
}
.admin-users-table .status-unverified {
  color: #dc3545;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 4px;
}
.admin-users-table .status-yes {
  color: #28a745;
  font-size: 1em;
}
.admin-users-table .status-no {
  color: #dc3545;
  font-size: 1em;
}
.admin-users-table td:nth-child(12),
.admin-users-table td:nth-child(13),
.admin-users-table td:nth-child(16) {
  font-size: 0.75rem;
  max-width: 120px;
}
.admin-users-table td:nth-child(14) {
  text-align: center;
  font-weight: bold;
}
.admin-users-table .action-buttons {
  display: flex;
  gap: 3px;
}
.admin-users-table .action-buttons .btn {
  padding: 3px 6px;
  border: none;
  border-radius: 3px;
  cursor: pointer;
  font-size: 0.7rem;
  transition: all 0.2s ease;
}
.admin-users-table .action-buttons .btn.btn-sm {
  padding: 3px 6px;
  font-size: 0.7rem;
}
.admin-users-table .action-buttons .btn.btn-primary {
  background: #007bff;
  color: white;
}
.admin-users-table .action-buttons .btn.btn-primary:hover {
  background: #0056b3;
}
.admin-users-table .action-buttons .btn.btn-info {
  background: #17a2b8;
  color: white;
}
.admin-users-table .action-buttons .btn.btn-info:hover {
  background: #138496;
}
.admin-users-table .action-buttons .btn.btn-warning {
  background: #ffc107;
  color: #212529;
}
.admin-users-table .action-buttons .btn.btn-warning:hover {
  background: #e0a800;
}
.admin-users-table .action-buttons .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}
@media (max-width: 820px) {
  .bulk-actions-bar .bulk-actions-content {
    flex-direction: column;
    align-items: stretch;
  }
  .bulk-actions-bar .bulk-actions-content .bulk-action-buttons {
    justify-content: center;
  }
  .admin-users-table {
    font-size: 0.875rem;
  }
  .admin-users-table th,
  .admin-users-table td {
    padding: 8px;
  }
  .admin-users-table .action-buttons {
    flex-direction: column;
    gap: 2px;
  }
}
.profile-picture-section {
  margin-bottom: 20px;
  padding: 15px;
  border: 1px solid #dee2e6;
  border-radius: 6px;
  background: #f8f9fa;
}
.profile-picture-section .profile-picture-display {
  text-align: center;
}
.profile-picture-section .profile-picture-display .staff-profile-picture {
  margin: 0;
  border-radius: 50%;
  object-fit: cover;
  border: 3px solid #dee2e6;
}
.profile-picture-section .profile-picture-display .profile-picture-placeholder {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: #007bff;
  color: white;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  font-weight: bold;
  border: 3px solid #dee2e6;
}
.profile-picture-section .profile-picture-upload {
  display: flex;
  gap: 10px;
  justify-content: center;
  flex-wrap: wrap;
}
.profile-picture-section .profile-picture-upload input[type="file"] {
  margin-bottom: 10px;
}
.profile-picture-section .profile-picture-upload button {
  padding: 8px 16px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 500;
  transition: all 0.2s ease;
}
.profile-picture-section .profile-picture-upload button.upload-profile-button {
  background: #007bff;
  color: white;
}
.profile-picture-section .profile-picture-upload button.upload-profile-button:hover {
  background: #0056b3;
}
.profile-picture-section .profile-picture-upload button.delete-profile-button {
  background: #dc3545;
  color: white;
}
.profile-picture-section .profile-picture-upload button.delete-profile-button:hover {
  background: #c82333;
}
.modal-actions {
  margin-top: 30px;
  padding-top: 20px;
  border-top: 1px solid #dee2e6;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-start;
}
.modal-actions button {
  padding: 8px 16px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 500;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  gap: 6px;
}
.modal-actions button:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.modal-actions button.btn-secondary {
  background: #6c757d;
  color: white;
}
.modal-actions button.btn-secondary:hover {
  background: #5a6268;
}
.modal-actions button.danger {
  background: #dc3545;
  color: white;
}
.modal-actions button.danger:hover {
  background: #c82333;
}
.search-container {
  margin-bottom: 20px;
  padding: 20px;
  background: #f8f9fa;
  border-radius: 8px;
  border: 1px solid #e9ecef;
}
.search-container .search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  margin-bottom: 10px;
}
.search-container .search-input-wrapper .search-icon {
  position: absolute;
  left: 15px;
  color: #6c757d;
  font-size: 1rem;
  z-index: 2;
}
.search-container .search-input-wrapper .search-input {
  width: 100%;
  padding: 12px 50px 12px 45px;
  border: 2px solid #dee2e6;
  border-radius: 25px;
  font-size: 1rem;
  background: white;
  transition: all 0.3s ease;
}
.search-container .search-input-wrapper .search-input:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1);
}
.search-container .search-input-wrapper .search-input::placeholder {
  color: #adb5bd;
}
.search-container .search-input-wrapper .clear-search-btn {
  position: absolute;
  right: 15px;
  background: none;
  border: none;
  color: #6c757d;
  cursor: pointer;
  padding: 5px;
  border-radius: 50%;
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}
.search-container .search-input-wrapper .clear-search-btn:hover {
  background: #e9ecef;
  color: #495057;
}
.search-container .search-stats {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.9rem;
  color: #6c757d;
}
.search-container .search-stats #search-results-count {
  font-weight: 500;
  color: #007bff;
}
.client-service-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 15px;
  border: 1px solid #e0e0e0;
  margin-bottom: 10px;
  border-radius: 6px;
  background-color: #f9f9f9;
  transition: all 0.2s ease;
}
.client-service-item:hover {
  border-color: #007bff;
  background-color: #f0f8ff;
}
.client-service-item .left-section {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 15px;
}
.client-service-item .left-section .client-service-text {
  color: #666;
}
.client-service-item .left-section .client-service-text strong {
  color: #333;
  font-weight: 600;
}
.client-service-item .left-section .rate-input-container {
  display: flex;
  align-items: center;
  gap: 5px;
}
.client-service-item .left-section .rate-input-container label {
  font-weight: 500;
  color: #555;
  margin: 0;
}
.client-service-item .left-section .rate-input-container input[type="number"] {
  width: 80px;
  padding: 4px 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 0.9rem;
}
.client-service-item .left-section .rate-input-container input[type="number"]:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
.client-service-item .right-section .button.danger.small {
  padding: 4px 8px;
  font-size: 0.8rem;
  background-color: #dc3545;
  border-color: #dc3545;
}
.client-service-item .right-section .button.danger.small:hover {
  background-color: #c82333;
  border-color: #bd2130;
}
.new-assignment-form {
  border: 2px dashed #ccc;
  padding: 20px;
  margin-top: 15px;
  border-radius: 6px;
  background-color: #fafafa;
}
.new-assignment-form h4 {
  margin-top: 0;
  margin-bottom: 15px;
  color: #333;
  font-size: 1.1rem;
}
.new-assignment-form .form-row {
  display: flex;
  gap: 15px;
  align-items: flex-end;
  flex-wrap: wrap;
  margin-bottom: 0;
}
.new-assignment-form .form-row label {
  display: block;
  font-weight: 500;
  color: #555;
  margin-bottom: 5px;
}
.new-assignment-form .form-row label select,
.new-assignment-form .form-row label input {
  margin-top: 5px;
  min-width: 150px;
}
.new-assignment-form .form-row label input[type="number"] {
  width: 80px;
  min-width: 80px;
}
.new-assignment-form .form-row .button.primary {
  margin-top: 0;
  align-self: flex-end;
}
#staff-assignment-container {
  max-height: 70vh;
  overflow-y: auto;
}
#staff-assignment-container h3 {
  margin-bottom: 15px;
  color: #333;
  font-size: 1.2rem;
  border-bottom: 2px solid #e0e0e0;
  padding-bottom: 8px;
}
#staff-assignment-container .empty-message {
  text-align: center;
  color: #666;
  margin: 20px 0;
  font-style: italic;
}
#staff-assignment-container .close-button {
  margin-top: 20px;
  width: 100%;
  padding: 10px;
  background-color: #6c757d;
  border-color: #6c757d;
}
#staff-assignment-container .close-button:hover {
  background-color: #5a6268;
  border-color: #545b62;
}
#assignment-list-table .manage-button {
  background-color: #28a745;
  border-color: #28a745;
  color: white;
  padding: 6px 12px;
  font-size: 0.9rem;
}
#assignment-list-table .manage-button:hover {
  background-color: #218838;
  border-color: #1e7e34;
}
.funder-services-header {
  margin-bottom: 24px;
}
.funder-services-header h2 {
  margin-bottom: 8px;
  color: #333;
}
.funder-services-header .funder-services-description {
  color: #6c757d;
  font-size: 0.95rem;
  line-height: 1.5;
}
.funder-select-container {
  margin-bottom: 24px;
  padding: 16px;
  background-color: #f8f9fa;
  border-radius: 6px;
}
.funder-select-container label {
  display: block;
  font-weight: 600;
  margin-bottom: 8px;
  color: #333;
}
.funder-select-container .funder-select {
  width: 100%;
  max-width: 400px;
  padding: 10px 12px;
  font-size: 1rem;
  border: 1px solid #ced4da;
  border-radius: 4px;
  background-color: white;
  cursor: pointer;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.funder-select-container .funder-select:focus {
  border-color: #80bdff;
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.services-table {
  margin-top: 24px;
}
.services-table h3 {
  margin-bottom: 16px;
  color: #333;
  font-size: 1.25rem;
}
.services-table .funder-services-table {
  width: 100%;
  border-collapse: collapse;
  background-color: white;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  border-radius: 6px;
  overflow: hidden;
}
.services-table .funder-services-table thead {
  background-color: #f8f9fa;
}
.services-table .funder-services-table thead th {
  padding: 12px 16px;
  text-align: left;
  font-weight: 600;
  color: #495057;
  border-bottom: 2px solid #dee2e6;
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.services-table .funder-services-table tbody tr {
  border-bottom: 1px solid #dee2e6;
  transition: background-color 0.15s ease;
}
.services-table .funder-services-table tbody tr:hover {
  background-color: #f8f9fa;
}
.services-table .funder-services-table tbody tr:last-child {
  border-bottom: none;
}
.services-table .funder-services-table tbody tr td {
  padding: 14px 16px;
  color: #495057;
}
.services-table .funder-services-table tbody tr td:first-child {
  font-weight: 500;
}
.services-table .services-summary {
  margin-top: 16px;
  padding: 12px 16px;
  background-color: #e7f3ff;
  border-left: 4px solid #007bff;
  border-radius: 4px;
  color: #004085;
  font-size: 0.95rem;
}
.toggle-switch-container {
  display: flex;
  align-items: center;
  position: relative;
}
.toggle-switch {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.toggle-switch:checked + .toggle-label {
  background-color: #28a745;
}
.toggle-switch:checked + .toggle-label::before {
  transform: translateX(26px);
}
.toggle-switch:disabled + .toggle-label {
  opacity: 0.5;
  cursor: not-allowed;
}
.toggle-switch:focus + .toggle-label {
  outline: 2px solid #80bdff;
  outline-offset: 2px;
}
.toggle-label {
  position: relative;
  display: inline-block;
  width: 50px;
  height: 24px;
  background-color: #ccc;
  border-radius: 12px;
  cursor: pointer;
  user-select: none;
  transition: background-color 0.2s ease;
}
.toggle-label::before {
  content: "";
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  top: 2px;
  left: 2px;
  background-color: white;
  transition: transform 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
/* Unified Account page styling */
.account-page-section {
  padding: 2rem 0;
  min-height: calc(100vh - 80px);
}
.account-page-section .container {
  max-width: 1200px;
}
.account-page-section h2 {
  color: var(--color-primary);
  margin-bottom: 2rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--color-border);
  font-weight: 600;
}
/* Main account card */
.account-card {
  background-color: var(--color-card-bg);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  overflow: hidden;
  margin-bottom: 2rem;
}
.account-card .card-header {
  background: linear-gradient(135deg, var(--color-primary, #007bff), var(--color-primary-dark, #0056b3));
  color: white;
  padding: 1.5rem;
  border-bottom: none;
}
.account-card .card-header h4 {
  margin: 0;
  font-weight: 600;
  color: white !important;
}
.account-card .card-header .btn {
  background-color: rgba(255, 255, 255, 0.15) !important;
  border: 1px solid rgba(255, 255, 255, 0.3) !important;
  color: white !important;
  transition: all 0.3s ease;
  text-decoration: none;
  /* Additional specificity for button text */
  /* Override any global button styles */
  /* Force text visibility */
}
.account-card .card-header .btn:hover {
  background-color: rgba(255, 255, 255, 0.25) !important;
  border-color: rgba(255, 255, 255, 0.5) !important;
  color: white !important;
  transform: translateY(-1px);
  text-decoration: none;
}
.account-card .card-header .btn:focus,
.account-card .card-header .btn:active {
  color: white !important;
  background-color: rgba(255, 255, 255, 0.2) !important;
  border-color: rgba(255, 255, 255, 0.4) !important;
  box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.25) !important;
  text-decoration: none;
  outline: none;
}
.account-card .card-header .btn i {
  margin-right: 0.5rem;
  color: white !important;
}
.account-card .card-header .btn span,
.account-card .card-header .btn text {
  color: white !important;
}
.account-card .card-header .btn.btn-primary,
.account-card .card-header .btn.btn-sm {
  background-color: rgba(255, 255, 255, 0.15) !important;
  border-color: rgba(255, 255, 255, 0.3) !important;
  color: white !important;
}
.account-card .card-header .btn * {
  color: white !important;
}
.account-card .card-body {
  padding: 2rem;
}
/* Info sections */
.info-section {
  margin-bottom: 2rem;
}
.info-section:last-child {
  margin-bottom: 0;
}
.info-section .section-title {
  color: var(--color-primary);
  font-weight: 600;
  margin-bottom: 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border-light, #e9ecef);
  font-size: 1.1rem;
}
/* Info fields */
.info-field {
  display: flex;
  flex-direction: column;
  margin-bottom: 1rem;
}
.info-field .field-label {
  font-weight: 600;
  color: var(--color-text-secondary, #6c757d);
  font-size: 0.9rem;
  margin-bottom: 0.25rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.info-field .field-value {
  color: var(--color-text);
  font-size: 1rem;
  padding: 0.5rem 0;
  min-height: 1.5rem;
}
.info-field .field-value:empty::before {
  content: "Not set";
  color: var(--color-text-muted, #adb5bd);
  font-style: italic;
}
/* Preferences styling */
.preference-item .form-label {
  font-weight: 600;
  color: var(--color-text-secondary, #6c757d);
  margin-bottom: 0.75rem;
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.preference-item .radio-group {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
}
.preference-item .radio-group .radio-option {
  display: flex;
  align-items: center;
  padding: 0.5rem 1rem;
  border: 2px solid var(--color-border);
  border-radius: 8px;
  background-color: var(--color-bg);
  cursor: pointer;
  transition: all 0.3s ease;
  min-width: 80px;
  justify-content: center;
}
.preference-item .radio-group .radio-option:hover {
  border-color: var(--color-primary);
  background-color: var(--color-primary-light, #f8f9ff);
}
.preference-item .radio-group .radio-option.selected {
  border-color: var(--color-primary);
  background-color: var(--color-primary);
  color: white;
  font-weight: 600;
}
.preference-item .radio-group .radio-option input[type="radio"] {
  display: none;
}
.preference-item .radio-group .radio-option label {
  margin: 0;
  cursor: pointer;
  text-transform: capitalize;
  font-size: 0.9rem;
}
/* Modal form styling for unified edit */
.modal-dialog.modal-lg .modal-content {
  border-radius: 12px;
  border: none;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}
.modal-dialog.modal-lg .modal-header {
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark, #0056b3));
  color: white;
  border-radius: 12px 12px 0 0;
  padding: 1.5rem;
}
.modal-dialog.modal-lg .modal-header .modal-title {
  font-weight: 600;
  color: white;
}
.modal-dialog.modal-lg .modal-header .btn-close {
  filter: invert(1);
  opacity: 0.8;
}
.modal-dialog.modal-lg .modal-header .btn-close:hover {
  opacity: 1;
}
.modal-dialog.modal-lg .modal-body {
  padding: 2rem;
  max-height: 70vh;
  overflow-y: auto;
}
.modal-dialog.modal-lg .modal-body .form-section {
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--color-border-light, #e9ecef);
}
.modal-dialog.modal-lg .modal-body .form-section:last-child {
  border-bottom: none;
  margin-bottom: 0;
}
.modal-dialog.modal-lg .modal-body .form-section .section-header {
  color: var(--color-primary);
  font-weight: 600;
  margin-bottom: 1rem;
  font-size: 1.1rem;
}
.modal-dialog.modal-lg .modal-body .form-group {
  margin-bottom: 1.5rem;
}
.modal-dialog.modal-lg .modal-body .form-group label {
  font-weight: 600;
  color: var(--color-text-secondary, #6c757d);
  margin-bottom: 0.5rem;
  font-size: 0.9rem;
}
.modal-dialog.modal-lg .modal-body .form-group .form-control {
  border-radius: 8px;
  border: 2px solid var(--color-border);
  padding: 0.75rem;
  transition: all 0.3s ease;
}
.modal-dialog.modal-lg .modal-body .form-group .form-control:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.15);
}
.modal-dialog.modal-lg .modal-footer {
  padding: 1.5rem;
  background-color: var(--color-bg-light, #f8f9fa);
  border-radius: 0 0 12px 12px;
}
.modal-dialog.modal-lg .modal-footer .btn {
  padding: 0.75rem 1.5rem;
  border-radius: 8px;
  font-weight: 600;
  transition: all 0.3s ease;
}
.modal-dialog.modal-lg .modal-footer .btn.btn-primary {
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark, #0056b3));
  border: none;
}
.modal-dialog.modal-lg .modal-footer .btn.btn-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 123, 255, 0.3);
}
/* Error message styling */
.error-message {
  background-color: var(--color-danger-light, #f8d7da);
  color: var(--color-danger, #721c24);
  padding: 1rem;
  border-radius: 8px;
  border: 1px solid var(--color-danger-border, #f5c6cb);
  margin: 1rem 0;
}
/* Responsive design */
@media (max-width: 820px) {
  .account-page-section {
    padding: 1rem 0;
  }
  .account-page-section .container {
    padding: 0 1rem;
  }
  .account-page-section h2 {
    font-size: 1.5rem;
    margin-bottom: 1.5rem;
  }
  .account-card .card-header {
    padding: 1rem;
  }
  .account-card .card-header .d-flex {
    flex-direction: column;
    gap: 1rem;
    text-align: center;
  }
  .account-card .card-header .d-flex .btn {
    align-self: center;
  }
  .account-card .card-body {
    padding: 1.5rem;
  }
  .info-field .field-label {
    font-size: 0.8rem;
  }
  .info-field .field-value {
    font-size: 0.95rem;
  }
  .preference-item .radio-group {
    justify-content: center;
  }
  .preference-item .radio-group .radio-option {
    min-width: 70px;
    padding: 0.4rem 0.8rem;
  }
  .modal-dialog.modal-lg {
    margin: 0.5rem;
    max-width: calc(100% - 1rem);
  }
  .modal-dialog.modal-lg .modal-body {
    padding: 1.5rem;
    max-height: 60vh;
  }
}
/* Info table styling */
.info-table {
  width: 100%;
  border-collapse: collapse;
}
.info-table td {
  padding: 0.75rem 0;
  border-bottom: 1px solid var(--color-border-light);
}
.info-table td.label-cell {
  font-weight: 600;
  width: 30%;
}
.info-table tr:last-child td {
  border-bottom: none;
}
/* License table styling */
.license-table {
  width: 100%;
  border-collapse: collapse;
}
.license-table th {
  text-align: left;
  padding: 0.75rem;
  background-color: var(--color-table-header);
  border-bottom: 2px solid var(--color-border);
}
.license-table td {
  padding: 0.75rem;
  border-bottom: 1px solid var(--color-border-light);
}
.license-table tr:hover {
  background-color: var(--color-row-hover);
}
/* License status indicators */
.expiring-soon {
  color: var(--color-warning);
  font-weight: 600;
}
.expired {
  color: var(--color-danger);
  font-weight: 600;
}
/* License attachments styling */
.license-attachments-section {
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--color-border-light);
}
.attachments-list {
  list-style: none;
  padding: 0;
  margin: 1rem 0;
}
.attachments-list li {
  padding: 0.5rem 0;
}
.attachments-list li a {
  display: inline-flex;
  align-items: center;
  color: var(--color-link);
  text-decoration: none;
}
.attachments-list li a:hover {
  text-decoration: underline;
}
/* Preference section styling */
.preference-section {
  margin-bottom: 1.5rem;
}
.preference-section h5 {
  margin-bottom: 0.75rem;
  color: var(--color-text);
}
/* Form styling for modals */
.form-group {
  margin-bottom: 1rem;
}
.form-group label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
}
.form-control {
  display: block;
  width: 100%;
  padding: 0.5rem;
  font-size: 1rem;
  line-height: 1.5;
  border: 1px solid var(--color-form-border);
  border-radius: 0.25rem;
  background-color: var(--color-form-bg);
  color: var(--color-text);
}
.form-control:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
/* License notes styling */
.license-notes {
  margin-top: 1rem;
  padding: 1rem;
  background-color: var(--color-notes-bg);
  border-radius: 0.25rem;
  white-space: pre-line;
}
/* Error message styling */
.error-message {
  padding: 1rem;
  background-color: var(--color-error-bg);
  color: var(--color-error-text);
  border-radius: 0.25rem;
  margin-bottom: 1rem;
}
/* API request loading state */
.loading-indicator {
  text-align: center;
  padding: 2rem;
  color: var(--color-text-muted);
}
/* License detail modal */
.license-details {
  padding: 0.5rem;
}
.license-info-section p {
  margin-bottom: 0.75rem;
}
.license-info-section strong {
  font-weight: 600;
  margin-right: 0.5rem;
}
#edit-user-container,
#create-user-container {
  width: 80vw;
}
#edit-user-container input:focus,
#create-user-container input:focus,
#edit-user-container select:focus,
#create-user-container select:focus,
#edit-user-container textarea:focus,
#create-user-container textarea:focus {
  outline: none;
  border-color: #4a90e2;
  box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.2);
}
#edit-user-container input:invalid,
#create-user-container input:invalid,
#edit-user-container select:invalid,
#create-user-container select:invalid,
#edit-user-container textarea:invalid,
#create-user-container textarea:invalid {
  border-color: #dc3545;
}
#edit-user-container input:hover,
#create-user-container input:hover,
#edit-user-container select:hover,
#create-user-container select:hover,
#edit-user-container textarea:hover,
#create-user-container textarea:hover {
  border-color: #999;
}
#edit-user-container input:disabled,
#create-user-container input:disabled,
#edit-user-container select:disabled,
#create-user-container select:disabled,
#edit-user-container textarea:disabled,
#create-user-container textarea:disabled,
#edit-user-container input[readonly],
#create-user-container input[readonly],
#edit-user-container select[readonly],
#create-user-container select[readonly],
#edit-user-container textarea[readonly],
#create-user-container textarea[readonly] {
  background-color: #f5f5f5;
  cursor: not-allowed;
  opacity: 0.7;
}
#edit-user-container select,
#create-user-container select {
  appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%);
  background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px);
  background-size: 5px 5px,
      5px 5px;
  background-repeat: no-repeat;
  padding: 0.5rem 2rem 0.5rem 0.5rem;
}
#edit-user-container select option,
#create-user-container select option {
  padding: 6px;
}
#edit-user-container input[type="checkbox"],
#create-user-container input[type="checkbox"],
#edit-user-container input[type="radio"],
#create-user-container input[type="radio"] {
  margin: 0;
}
#new-user-form,
#edit-user-form {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  max-width: 800px;
  margin: 0 auto;
  padding: 1rem;
}
#new-user-form label,
#edit-user-form label {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
#new-user-form #edit-user-form-id-label,
#edit-user-form #edit-user-form-id-label {
  display: none;
}
#new-user-form #new-user-form-first_name-label,
#edit-user-form #new-user-form-first_name-label,
#new-user-form #new-user-form-last_name-label,
#edit-user-form #new-user-form-last_name-label,
#new-user-form #edit-user-form-first_name-label,
#edit-user-form #edit-user-form-first_name-label,
#new-user-form #edit-user-form-last_name-label,
#edit-user-form #edit-user-form-last_name-label {
  flex: 1 1 calc(50% - 1rem);
}
#new-user-form #new-user-form-username-label,
#edit-user-form #new-user-form-username-label,
#new-user-form #new-user-form-email-label,
#edit-user-form #new-user-form-email-label,
#new-user-form #edit-user-form-username-label,
#edit-user-form #edit-user-form-username-label,
#new-user-form #edit-user-form-email-label,
#edit-user-form #edit-user-form-email-label,
#new-user-form #edit-user-form-city-label,
#edit-user-form #edit-user-form-city-label,
#new-user-form #edit-user-form-state-label,
#edit-user-form #edit-user-form-state-label,
#new-user-form #edit-user-form-zip-label,
#edit-user-form #edit-user-form-zip-label {
  flex: 1 1 calc(50% - 1rem);
}
#new-user-form #new-user-form-title-label,
#edit-user-form #new-user-form-title-label,
#new-user-form #edit-user-form-title-label,
#edit-user-form #edit-user-form-title-label {
  flex: 1 1 100%;
}
#new-user-form #new-user-form-street_address-label,
#edit-user-form #new-user-form-street_address-label,
#new-user-form #edit-user-form-street_address-label,
#edit-user-form #edit-user-form-street_address-label {
  flex: 1 1 100%;
}
#new-user-form #new-user-form-rate-label,
#edit-user-form #new-user-form-rate-label,
#new-user-form #edit-user-form-rate-label,
#edit-user-form #edit-user-form-rate-label {
  flex: 1 1 100%;
}
#new-user-form #new-user-form-notes-label,
#edit-user-form #new-user-form-notes-label,
#new-user-form #edit-user-form-notes-label,
#edit-user-form #edit-user-form-notes-label {
  flex: 1 1 100%;
}
#new-user-form #new-user-form-notes-label textarea,
#edit-user-form #new-user-form-notes-label textarea,
#new-user-form #edit-user-form-notes-label textarea,
#edit-user-form #edit-user-form-notes-label textarea {
  width: 100%;
  min-height: 100px;
  resize: vertical;
}
#new-user-form .checkbox-form-label,
#edit-user-form .checkbox-form-label {
  flex: 0 1 auto;
  flex-direction: row !important;
  align-items: center;
}
#new-user-form .form-row,
#edit-user-form .form-row {
  flex: 1 1 100%;
  display: flex;
  gap: 1rem;
  justify-content: flex-end;
}
.licenses-section {
  margin-top: 2rem;
  border-top: 1px solid #ccc;
  padding-top: 1rem;
}
.licenses-section h3 {
  margin-bottom: 1rem;
}
.licenses-section #add-license-button {
  margin-top: 1rem;
}
.licenses-section .no-data-message {
  font-style: italic;
  color: #666;
  text-align: center;
  padding: 1rem;
}
.status-active {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  background-color: #d4edda;
  color: #155724;
  border-radius: 4px;
  font-size: 0.875rem;
}
.status-expired {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  background-color: #f8d7da;
  color: #721c24;
  border-radius: 4px;
  font-size: 0.875rem;
}
.status-other {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  background-color: #e2e3e5;
  color: #383d41;
  border-radius: 4px;
  font-size: 0.875rem;
}
.action-menu {
  min-width: 150px;
}
.action-menu .action-item {
  padding: 8px 16px;
  cursor: pointer;
}
.action-menu .action-item:hover {
  background-color: #f5f5f5;
}
.action-menu .action-item.delete-action:hover {
  background-color: #ffebee;
}
@media (max-width: 600px) {
  #new-user-form label {
    flex: 1 1 100% !important;
  }
}
/* Staff profile picture styles */
.profile-picture-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 15px;
  padding: 15px;
  border-bottom: 1px solid #eee;
}
.profile-picture-display {
  width: 200px;
  height: 200px;
  margin-bottom: 10px;
  border-radius: 50%;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #f0f0f0;
}
.staff-profile-picture {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.profile-picture-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #3498db;
  color: white;
  font-size: 48px;
  font-weight: bold;
}
.profile-picture-upload {
  display: flex;
  flex-direction: row;
  gap: 8px;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
}
.upload-profile-button,
.delete-profile-button,
.confirm-upload-button,
.cancel-upload-button {
  padding: 6px 8px;
  font-size: 0.9em;
  border-radius: 50%;
  border: 1px solid #ddd;
  background-color: #f8f9fa;
  cursor: pointer;
  transition: all 0.2s;
  color: #666;
  min-width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.upload-profile-button i,
.delete-profile-button i,
.confirm-upload-button i,
.cancel-upload-button i {
  font-size: 0.85em;
}
.upload-profile-button:hover,
.delete-profile-button:hover,
.confirm-upload-button:hover,
.cancel-upload-button:hover {
  background-color: #e9ecef;
  border-color: #adb5bd;
  color: #495057;
  transform: scale(1.05);
}
.delete-profile-button {
  background-color: #fff5f5;
  color: #dc3545;
  border-color: #f5c6cb;
}
.delete-profile-button:hover {
  background-color: #f8d7da;
  border-color: #f1aeb5;
  color: #721c24;
}
.confirm-upload-button {
  background-color: #f0fff4;
  color: #28a745;
  border-color: #c3e6cb;
}
.confirm-upload-button:hover {
  background-color: #d4edda;
  border-color: #a3d4a8;
  color: #155724;
}
.cancel-upload-button {
  background-color: #fff3cd;
  color: #856404;
  border-color: #ffeaa7;
}
.cancel-upload-button:hover {
  background-color: #ffeaa7;
  border-color: #fed976;
  color: #533f03;
}
.selected-file-section {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 8px;
  background-color: #f8f9fa;
  border-radius: 4px;
  border: 1px solid #e9ecef;
}
.selected-file-name {
  font-size: 0.8em;
  color: #666;
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* Table avatars */
.user-name-with-avatar {
  display: flex;
  align-items: center;
  gap: 10px;
}
.user-avatar {
  width: 40px;
  height: 40px;
  padding: 0;
  margin: 0;
  border-radius: 50%;
  object-fit: cover;
  display: inline-flex;
  justify-content: center;
  align-items: center;
}
.user-avatar-placeholder {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background-color: #3498db;
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 12px;
  font-weight: bold;
}
.btn-verification,
.btn-password-reset {
  margin: 10px 5px;
  padding: 10px 15px;
  border: none;
  border-radius: 5px;
  cursor: pointer;
  font-weight: 500;
  transition: all 0.3s ease;
}
.btn-verification:disabled,
.btn-password-reset:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.btn-verification {
  background-color: #17a2b8;
  color: white;
}
.btn-verification:hover:not(:disabled) {
  background-color: #138496;
}
.btn-password-reset {
  background-color: #dc3545;
  color: white;
}
.btn-password-reset:hover:not(:disabled) {
  background-color: #c82333;
}
.verification-section .error {
  color: #721c24;
  background-color: #f8d7da;
  border: 1px solid #f5c6cb;
  border-radius: 5px;
  padding: 10px;
  margin-bottom: 10px;
}
.verification-section .success {
  color: #155724;
  background-color: #d4edda;
  border: 1px solid #c3e6cb;
  border-radius: 5px;
  padding: 10px;
}
/* Funder Contacts Styling */
.contacts-container {
  margin: 20px 0;
  padding: 15px;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
  background-color: #f9f9f9;
}
.contacts-container h3 {
  margin-top: 0;
  margin-bottom: 15px;
  color: #333;
  font-size: 1.1em;
}
.contacts-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 15px;
}
.contacts-table th,
.contacts-table td {
  padding: 8px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}
.contacts-table th {
  background-color: #f2f2f2;
  font-weight: bold;
}
.delete-contact-button {
  background-color: #ff4d4d;
  color: white;
  border: none;
  border-radius: 3px;
  padding: 2px 6px;
  cursor: pointer;
  font-size: 0.8em;
}
.delete-contact-button:hover {
  background-color: #ff0000;
}
.add-contact-button {
  background-color: #4caf50;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 8px 12px;
  cursor: pointer;
  font-size: 0.9em;
  margin-top: 10px;
}
.add-contact-button:hover {
  background-color: #45a049;
}
.add-contact-form {
  margin-top: 15px;
  padding: 15px;
  border: 1px solid #ddd;
  border-radius: 4px;
  background-color: white;
}
.add-contact-form label {
  display: block;
  margin-bottom: 5px;
  font-weight: bold;
}
.add-contact-form input {
  width: 100%;
  padding: 8px;
  margin-bottom: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box;
}
.contact-buttons {
  display: flex;
  justify-content: space-between;
  margin-top: 10px;
}
.save-contact-button {
  background-color: #4caf50;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 8px 12px;
  cursor: pointer;
}
.cancel-contact-button {
  background-color: #f44336;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 8px 12px;
  cursor: pointer;
}
.contact-count {
  background-color: #e7f3ff;
  color: #0366d6;
  padding: 3px 8px;
  border-radius: 10px;
  font-size: 0.8em;
}
.no-contacts {
  color: #999;
  font-style: italic;
  font-size: 0.9em;
}
#funder-list-table {
  margin: 20px 0;
  width: 100%;
}
#funder-list-table .auto-table-row:hover {
  background-color: #f5f5f5;
}
#funder-list-table .edit-cell {
  cursor: pointer;
}
#new-funder-button {
  margin-top: 20px;
  padding: 10px 15px;
  background-color: #4caf50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
#new-funder-button:hover {
  background-color: #45a049;
}
#delete-funder-button {
  margin-top: 20px;
  width: 100%;
}
.auto-table .delete-contact-button {
  background-color: #ff4d4d;
  color: white;
  border: none;
  border-radius: 3px;
  padding: 2px 8px;
  cursor: pointer;
  font-size: 0.8em;
  display: inline-block;
}
.auto-table .delete-contact-button:hover {
  background-color: #ff0000;
}
.auto-table-cell button.delete-contact-button {
  margin: 0;
  min-width: 22px;
}
/* Edit Contact Modal Styling */
.edit-contact-container {
  min-width: 400px;
}
.edit-contact-form {
  padding: 20px 0;
}
.edit-contact-form label {
  display: block;
  margin-bottom: 5px;
  font-weight: bold;
  color: #333;
}
.edit-contact-form input {
  width: 100%;
  padding: 8px 12px;
  margin-bottom: 15px;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box;
  font-size: 14px;
}
.edit-contact-form input:focus {
  outline: none;
  border-color: #4caf50;
  box-shadow: 0 0 0 2px rgba(76, 175, 80, 0.2);
}
.edit-contact-form .form-buttons {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 20px;
  padding-top: 15px;
  border-top: 1px solid #e0e0e0;
}
.edit-contact-form .save-contact-button {
  background-color: #4caf50;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 10px 20px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
}
.edit-contact-form .save-contact-button:hover {
  background-color: #45a049;
}
.edit-contact-form .cancel-contact-button {
  background-color: #6c757d;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 10px 20px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
}
.edit-contact-form .cancel-contact-button:hover {
  background-color: #5a6268;
}
/* Make contact rows clickable */
.contacts-table-container .auto-table-row {
  cursor: pointer;
  transition: background-color 0.2s ease;
}
.contacts-table-container .auto-table-row:hover {
  background-color: #f8f9fa;
}
.logo {
  position: relative;
  height: auto;
  width: 50%;
  margin: 0 auto;
  padding: 2px;
}
#manage {
  display: none;
}
#manage #new-user-button {
  float: right;
  margin: 10px;
}
#manage .help-button {
  float: left;
  margin: 10px;
}
.nav-links {
  display: flex;
  justify-content: center;
  gap: 1rem;
  margin: 1rem auto;
  padding: 0.5rem;
  width: 70vw;
}
.nav-links a {
  padding: 0.5rem;
  text-decoration: none;
}
@media (max-width: 820px) {
  .nav-links {
    flex-direction: column;
    width: 90vw;
    gap: 0.5rem;
  }
  .nav-links a {
    padding: 1rem;
    text-align: center;
    font-size: 1.1rem;
    background: #f8f9fa;
    border-radius: 8px;
    border: 1px solid #dee2e6;
  }
}
/* Event Search Interface Styles */
#query-events-container {
  margin-top: 2rem;
}
#query-events-container h2 {
  margin-bottom: 1rem;
  padding-bottom: 0.5rem;
}
#query-events-container .event-search-interface {
  margin-top: 30px;
  padding-top: 20px;
}
#query-events-container .event-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 15px;
  margin-bottom: 20px;
  padding: 15px;
  background-color: #f9f9f9;
  border-radius: 5px;
}
.dark-mode #query-events-container .event-filters {
  background-color: #2d3748;
}
@media (max-width: 820px) {
  #query-events-container .event-filters {
    flex-direction: column;
    gap: 1rem;
    padding: 1rem;
  }
}
#query-events-container .filter-group {
  display: flex;
  flex-direction: column;
  min-width: 200px;
}
@media (max-width: 820px) {
  #query-events-container .filter-group {
    min-width: 100%;
  }
}
#query-events-container .filter-group label {
  font-weight: 600;
  margin-bottom: 5px;
}
.dark-mode #query-events-container .filter-group label {
  color: #e2e8f0;
}
#query-events-container .filter-group select,
#query-events-container .filter-group input {
  padding: 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
}
.dark-mode #query-events-container .filter-group select,
.dark-mode #query-events-container .filter-group input {
  background-color: #1a202c;
  border-color: #4a5568;
  color: #e2e8f0;
}
#query-events-container .date-filters {
  display: flex;
  gap: 15px;
}
@media (max-width: 820px) {
  #query-events-container .date-filters {
    flex-direction: column;
    gap: 1rem;
  }
}
#query-events-container .search-button {
  align-self: flex-end;
  padding: 8px 16px;
  background-color: #3788d8;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  margin-top: 21px;
  height: 37px;
}
.dark-mode #query-events-container .search-button {
  background-color: #4299e1;
}
#query-events-container .search-button:hover {
  background-color: #2b6baf;
}
.dark-mode #query-events-container .search-button:hover {
  background-color: #3182ce;
}
#query-events-container .vertical-timeline {
  position: relative;
  padding: 20px 0;
}
#query-events-container .vertical-timeline::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 20px;
  width: 4px;
  background-color: #e0e0e0;
}
.dark-mode #query-events-container .vertical-timeline::before {
  background-color: #4a5568;
}
#query-events-container .timeline-month-group {
  margin-bottom: 30px;
}
#query-events-container .timeline-month-header {
  margin-bottom: 15px;
  color: #3788d8;
}
.dark-mode #query-events-container .timeline-month-header {
  color: #63b3ed;
}
#query-events-container .timeline-event {
  position: relative;
  margin-left: 45px;
  padding: 15px;
  background-color: #fff;
  border-left: 4px solid #3788d8;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  margin-bottom: 20px;
}
.dark-mode #query-events-container .timeline-event {
  background-color: #2d3748;
  border-left-color: #4299e1;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
  color: #e2e8f0;
}
#query-events-container .timeline-event.recurring-event {
  border-left: 4px solid #a855f7;
}
.dark-mode #query-events-container .timeline-event.recurring-event {
  border-left-color: #b794f4;
}
#query-events-container .timeline-event::before {
  content: "";
  position: absolute;
  left: -45px;
  top: 20px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background-color: #3788d8;
  border: 4px solid #fff;
  box-shadow: 0 0 0 1px #3788d8;
}
.dark-mode #query-events-container .timeline-event::before {
  background-color: #4299e1;
  border-color: #1a202c;
  box-shadow: 0 0 0 1px #4299e1;
}
#query-events-container .timeline-event.recurring-event::before {
  background-color: #a855f7;
  box-shadow: 0 0 0 1px #a855f7;
}
.dark-mode #query-events-container .timeline-event.recurring-event::before {
  background-color: #b794f4;
  box-shadow: 0 0 0 1px #b794f4;
}
#query-events-container .event-datetime {
  font-size: 0.9em;
  color: #666;
  margin-bottom: 5px;
}
.dark-mode #query-events-container .event-datetime {
  color: #a0aec0;
}
#query-events-container .event-title {
  margin: 0 0 10px;
  display: flex;
  align-items: center;
}
#query-events-container .recurring-badge {
  font-size: 0.7em;
  background-color: #a855f7;
  color: white;
  padding: 2px 6px;
  border-radius: 10px;
  margin-left: 10px;
}
.dark-mode #query-events-container .recurring-badge {
  background-color: #9f7aea;
}
#query-events-container .event-notes {
  font-size: 0.9em;
  color: #666;
  margin-top: 5px;
}
.dark-mode #query-events-container .event-notes {
  color: #a0aec0;
}
#query-events-container .recurrence-info {
  font-size: 0.8em;
  font-style: italic;
  color: #a855f7;
  margin-top: 5px;
}
.dark-mode #query-events-container .recurrence-info {
  color: #b794f4;
}
#query-events-container .no-results,
#query-events-container .loading {
  padding: 20px;
  text-align: center;
  color: #666;
}
.dark-mode #query-events-container .no-results,
.dark-mode #query-events-container .loading {
  color: #a0aec0;
}
#query-events-container .error-message {
  color: #e53935;
  padding: 20px;
  text-align: center;
}
.dark-mode #query-events-container .error-message {
  color: #f56565;
}
/* My Tasks Section Styles */
.tasks-list {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.tasks-list .task-item {
  background: white;
  border: 1px solid #e0e0e0;
  border-radius: 8px;
  padding: 1rem;
  transition: all 0.2s ease;
}
.tasks-list .task-item:hover {
  border-color: #007bff;
  box-shadow: 0 2px 8px rgba(0, 123, 255, 0.1);
}
.dark-mode .tasks-list .task-item {
  background: #2d3748;
  border-color: #4a5568;
}
.dark-mode .tasks-list .task-item:hover {
  border-color: #63b3ed;
  box-shadow: 0 2px 8px rgba(99, 179, 237, 0.1);
}
.tasks-list .task-header {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  align-items: center;
}
.tasks-list .task-priority {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  border-radius: 12px;
  font-weight: 600;
  min-width: 32px;
  text-align: center;
}
.tasks-list .task-priority.priority-1 {
  background: #fee2e2;
  color: #dc2626;
}
.dark-mode .tasks-list .task-priority.priority-1 {
  background: #dc2626;
  color: white;
}
.tasks-list .task-priority.priority-2 {
  background: #fef3c7;
  color: #d97706;
}
.dark-mode .tasks-list .task-priority.priority-2 {
  background: #d97706;
  color: white;
}
.tasks-list .task-priority.priority-3 {
  background: #dbeafe;
  color: #2563eb;
}
.dark-mode .tasks-list .task-priority.priority-3 {
  background: #2563eb;
  color: white;
}
.tasks-list .task-priority.priority-4,
.tasks-list .task-priority.priority-5 {
  background: #f3f4f6;
  color: #6b7280;
}
.dark-mode .tasks-list .task-priority.priority-4,
.dark-mode .tasks-list .task-priority.priority-5 {
  background: #6b7280;
  color: white;
}
.tasks-list .task-type-badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  border-radius: 12px;
  font-weight: 500;
}
.tasks-list .task-type-badge.task {
  background: #ddd6fe;
  color: #7c3aed;
}
.dark-mode .tasks-list .task-type-badge.task {
  background: #7c3aed;
  color: white;
}
.tasks-list .task-type-badge.support_ticket {
  background: #fef3c7;
  color: #d97706;
}
.dark-mode .tasks-list .task-type-badge.support_ticket {
  background: #d97706;
  color: white;
}
.tasks-list .task-status {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  border-radius: 12px;
  font-weight: 500;
}
.tasks-list .task-status.status-open {
  background: #dbeafe;
  color: #2563eb;
}
.dark-mode .tasks-list .task-status.status-open {
  background: #2563eb;
  color: white;
}
.tasks-list .task-status.status-in_progress {
  background: #fef3c7;
  color: #d97706;
}
.dark-mode .tasks-list .task-status.status-in_progress {
  background: #d97706;
  color: white;
}
.tasks-list .task-status.status-resolved {
  background: #d1fae5;
  color: #059669;
}
.dark-mode .tasks-list .task-status.status-resolved {
  background: #059669;
  color: white;
}
.tasks-list .task-status.status-closed {
  background: #f3f4f6;
  color: #6b7280;
}
.dark-mode .tasks-list .task-status.status-closed {
  background: #6b7280;
  color: white;
}
.tasks-list .task-content {
  margin-bottom: 0.75rem;
}
.tasks-list .task-content .task-title {
  font-size: 1rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
  color: #1f2937;
}
.dark-mode .tasks-list .task-content .task-title {
  color: #f9fafb;
}
.tasks-list .task-content .task-description {
  font-size: 0.875rem;
  color: #6b7280;
  margin: 0;
  line-height: 1.4;
}
.dark-mode .tasks-list .task-content .task-description {
  color: #a0aec0;
}
.tasks-list .task-meta {
  font-size: 0.75rem;
  color: #9ca3af;
}
.dark-mode .tasks-list .task-meta {
  color: #a0aec0;
}
.tasks-list .view-all-tasks {
  padding: 1rem;
  text-align: center;
  background: #f8fafc;
  border: 1px dashed #cbd5e1;
  border-radius: 8px;
  color: #475569;
  font-weight: 500;
  transition: all 0.2s ease;
}
.tasks-list .view-all-tasks:hover {
  background: #f1f5f9;
  border-color: #94a3b8;
  color: #334155;
}
.dark-mode .tasks-list .view-all-tasks {
  background: #374151;
  border-color: #6b7280;
  color: #d1d5db;
}
.dark-mode .tasks-list .view-all-tasks:hover {
  background: #4b5563;
  border-color: #9ca3af;
  color: #f3f4f6;
}
.tasks-list .no-tasks {
  padding: 2rem;
  text-align: center;
  color: #6b7280;
  font-style: italic;
}
.dark-mode .tasks-list .no-tasks {
  color: #a0aec0;
}
@media (max-width: 820px) {
  .tasks-list .task-header {
    flex-wrap: wrap;
    gap: 0.25rem;
  }
  .tasks-list .task-priority,
  .tasks-list .task-type-badge,
  .tasks-list .task-status {
    font-size: 0.625rem;
    padding: 0.2rem 0.4rem;
  }
}
/* Task Modal Styles */
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
}
.task-modal {
  background: white;
  border-radius: 12px;
  max-width: 600px;
  width: 90%;
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}
.dark-mode .task-modal {
  background: #2d3748;
  color: #f7fafc;
}
.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1.5rem;
  border-bottom: 1px solid #e2e8f0;
}
.dark-mode .modal-header {
  border-bottom-color: #4a5568;
}
.modal-header h3 {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 600;
  color: #1a202c;
}
.dark-mode .modal-header h3 {
  color: #f7fafc;
}
.modal-header .modal-close {
  background: none;
  border: none;
  font-size: 1.5rem;
  cursor: pointer;
  color: #a0aec0;
  padding: 0.25rem;
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.375rem;
}
.modal-header .modal-close:hover {
  background: #f7fafc;
  color: #2d3748;
}
.dark-mode .modal-header .modal-close:hover {
  background: #4a5568;
  color: #f7fafc;
}
.modal-body {
  padding: 1.5rem;
}
.task-details {
  margin-bottom: 1.5rem;
}
.task-details .task-badges {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1rem;
  flex-wrap: wrap;
}
.task-details .task-badges .task-priority,
.task-details .task-badges .task-type-badge,
.task-details .task-badges .task-status {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  border-radius: 12px;
  font-weight: 500;
}
.task-details .task-description-full {
  margin-bottom: 1rem;
}
.task-details .task-description-full h4 {
  margin: 0 0 0.5rem 0;
  font-size: 1rem;
  font-weight: 600;
  color: #2d3748;
}
.dark-mode .task-details .task-description-full h4 {
  color: #f7fafc;
}
.task-details .task-description-full p {
  margin: 0;
  line-height: 1.6;
  color: #4a5568;
}
.dark-mode .task-details .task-description-full p {
  color: #a0aec0;
}
.task-details .task-meta-full p {
  margin: 0.25rem 0;
  font-size: 0.875rem;
  color: #6b7280;
}
.dark-mode .task-details .task-meta-full p {
  color: #a0aec0;
}
.status-update-container {
  padding: 1.5rem;
  background: #f8fafc;
  border-radius: 8px;
  margin-bottom: 1rem;
}
.dark-mode .status-update-container {
  background: #374151;
}
.status-update-container label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 600;
  color: #374151;
}
.dark-mode .status-update-container label {
  color: #f9fafb;
}
.status-update-container select {
  width: 100%;
  padding: 0.75rem;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  margin-bottom: 1rem;
  font-size: 0.875rem;
}
.dark-mode .status-update-container select {
  background: #4a5568;
  border-color: #6b7280;
  color: #f7fafc;
}
.status-update-container select:focus {
  outline: none;
  border-color: #3b82f6;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}
.status-update-container button {
  padding: 0.75rem 1.5rem;
  border: none;
  border-radius: 6px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}
.status-update-container button.primary {
  background: #3b82f6;
  color: white;
}
.status-update-container button.primary:hover:not(:disabled) {
  background: #2563eb;
}
.status-update-container button.primary:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.status-update-container button.secondary {
  background: #6b7280;
  color: white;
}
.status-update-container button.secondary:hover {
  background: #4b5563;
}
.admin-controls-container {
  padding: 1.5rem;
  background: #fef3c7;
  border-radius: 8px;
  border-left: 4px solid #f59e0b;
}
.dark-mode .admin-controls-container {
  background: #451a03;
  border-left-color: #f59e0b;
}
.admin-controls-container h4 {
  margin: 0 0 1rem 0;
  font-size: 1rem;
  color: #92400e;
}
.dark-mode .admin-controls-container h4 {
  color: #fbbf24;
}
.admin-controls-container button {
  padding: 0.5rem 1rem;
  border: none;
  border-radius: 6px;
  font-weight: 500;
  cursor: pointer;
  background: #6b7280;
  color: white;
}
.admin-controls-container button:hover {
  background: #4b5563;
}
@media (max-width: 820px) {
  .task-modal {
    width: 95%;
    max-height: 90vh;
  }
  .modal-header,
  .modal-body {
    padding: 1rem;
  }
  .status-update-container,
  .admin-controls-container {
    padding: 1rem;
  }
}
[data-cancelled="true"].ruutio-calendar-event--signed {
  background-color: #ffffff !important;
  border-left: 4px solid #ff6f00 !important;
  color: #666666 !important;
}
[data-cancelled="true"].ruutio-calendar-event--signed::after {
  background-image: repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(255, 111, 0, 0.3) 10px, rgba(255, 111, 0, 0.3) 20px) !important;
  mix-blend-mode: normal !important;
}
[data-no-show="true"].ruutio-calendar-event--signed {
  background-color: #ffffff !important;
  border-left: 4px solid #d32f2f !important;
  color: #666666 !important;
}
[data-no-show="true"].ruutio-calendar-event--signed::after {
  background-image: repeating-linear-gradient(45deg, transparent, transparent 8px, rgba(211, 47, 47, 0.2) 8px, rgba(211, 47, 47, 0.2) 16px), repeating-linear-gradient(-45deg, transparent, transparent 8px, rgba(211, 47, 47, 0.2) 8px, rgba(211, 47, 47, 0.2) 16px) !important;
  mix-blend-mode: normal !important;
}
.sidebar-nav-container {
  position: relative;
  float: left;
  width: 100%;
}
.sidebar-nav-container .sidebar {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 250px;
  padding: 20px;
  transition: transform 0.3s ease;
  height: calc(100vh - 58px);
}
@media (min-width: 769px) {
  .sidebar-nav-container .sidebar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: auto !important;
    bottom: auto !important;
  }
}
.sidebar-nav-container .content {
  flex-grow: 1;
  padding: 20px;
  overflow-y: auto;
  margin-left: 250px;
}
.sidebar-nav-container .mobile-menu-toggle {
  display: none;
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 100;
  cursor: pointer;
  background: #3788d8;
  color: #fff;
  border: none;
  border-radius: 50%;
  width: 56px;
  height: 56px;
  box-shadow: 0 4px 12px rgba(55, 136, 216, 0.4);
  touch-action: manipulation;
  /* Enable proper touch events */
  -webkit-tap-highlight-color: transparent;
  /* Remove iOS tap highlight */
}
.sidebar-nav-container .mobile-menu-toggle i {
  font-size: 1.2rem;
}
.sidebar-nav-container .mobile-menu-toggle:hover {
  background: #2c6db5;
  transform: scale(1.05);
}
.sidebar-nav-container .mobile-menu-toggle:active {
  transform: scale(0.95);
}
@media (max-width: 820px) {
  .sidebar-nav-container .sidebar-nav-container {
    position: relative;
    float: left;
    width: 100%;
  }
  .sidebar-nav-container .sidebar-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.5);
    z-index: 40;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
  }
  .sidebar-nav-container .sidebar-backdrop.open {
    opacity: 1;
    visibility: visible;
  }
  .sidebar-nav-container .sidebar {
    position: fixed !important;
    top: auto !important;
    left: auto !important;
    right: 20px !important;
    bottom: 90px !important;
    width: 220px !important;
    height: auto !important;
    max-height: 70vh !important;
    margin: 0 !important;
    padding: 1rem !important;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
    z-index: 50;
    overflow-y: auto;
    transform: translateY(100%) scale(0.9);
    opacity: 0;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }
  .sidebar-nav-container .sidebar:not(.open) {
    transform: translateY(100%) scale(0.9) !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }
  .sidebar-nav-container .sidebar.open {
    transform: translateY(0) scale(1) !important;
    opacity: 1 !important;
    pointer-events: auto !important;
  }
  .sidebar-nav-container .content {
    margin-left: 0px;
    padding: 1rem;
  }
  .sidebar-nav-container .mobile-menu-toggle {
    display: block;
    position: fixed !important;
    bottom: 20px !important;
    right: 20px !important;
    left: auto !important;
    top: auto !important;
  }
  .sidebar-nav-container .nav-item {
    font-size: 1rem;
    padding: 0.75rem 1rem;
    margin-bottom: 0.5rem;
    border-radius: 8px;
    transition: all 0.2s ease;
  }
  .sidebar-nav-container .nav-item:last-child {
    margin-bottom: 0;
  }
  .sidebar-nav-container .nav-item i {
    width: 20px;
    text-align: center;
    margin-right: 0.5rem;
  }
}
.sidebar-nav-container .nav-item {
  display: block;
  cursor: pointer;
  padding: 10px;
  margin-bottom: 10px;
  background-color: #e0e0e0;
  border-radius: 0.2em;
  text-decoration: none;
  color: inherit;
}
.sidebar-nav-container .nav-item:visited {
  color: inherit;
}
.sidebar-nav-container .nav-item:hover {
  background-color: #d0d0d0;
  text-decoration: none;
  color: inherit;
}
.sidebar-nav-container .nav-item.active {
  background-color: #1976d2ff;
  color: white;
}
.sidebar-nav-container .nav-item.active:hover {
  background-color: #1669bb;
  color: white;
}
@media (min-width: 769px) {
  .sidebar-nav-container .sidebar {
    transform: translateX(0) !important;
    display: block !important;
  }
}
body.dark-mode .sidebar-nav-container .sidebar {
  background-color: #626262;
}
body.dark-mode .sidebar-nav-container .nav-item {
  background-color: #444;
  color: inherit;
  text-decoration: none;
}
body.dark-mode .sidebar-nav-container .nav-item:visited {
  color: inherit;
}
body.dark-mode .sidebar-nav-container .nav-item:hover {
  background-color: #888;
  color: inherit;
  text-decoration: none;
}
body.dark-mode .sidebar-nav-container .nav-item.active {
  background-color: #1976d2ff;
  color: white;
}
body.dark-mode .sidebar-nav-container .nav-item.active:hover {
  background-color: #1669bb;
  color: white;
}
body.light-mode .sidebar-nav-container .sidebar {
  background-color: #f2f2f2;
}
body.light-mode .sidebar-nav-container .nav-item {
  background-color: #fff;
  color: inherit;
  text-decoration: none;
}
body.light-mode .sidebar-nav-container .nav-item:visited {
  color: inherit;
}
body.light-mode .sidebar-nav-container .nav-item:hover {
  background-color: #ddd;
  color: inherit;
  text-decoration: none;
}
body.light-mode .sidebar-nav-container .nav-item.active {
  background-color: #1976d2ff;
  color: white;
}
body.light-mode .sidebar-nav-container .nav-item.active:hover {
  background-color: #1669bb;
  color: white;
}
/* Add styles for the appointment details page */
.appointment-details-container {
  display: flex;
  position: relative;
  flex-direction: column;
  align-items: center;
  min-height: 80vh;
  background: #f1f4f7;
  padding: 2rem 0;
}
/* Tab Navigation Styles */
.appointment-tab-navigation {
  /* Ensure note-related selects use native UI on mobile.
   Placed at the end of this file so it compiles after generic input rules
   and overrides any earlier `appearance: none` declarations. */
  display: flex;
  background: #fff;
  border-radius: 12px 12px 0 0;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  margin-bottom: 0;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  width: 100%;
  border: 1px solid #e1e7ed;
  border-bottom: none;
}
@media (max-width: 820px) {
  .appointment-tab-navigation #appointment-notes-form select,
  .appointment-tab-navigation #notes-forms-container select,
  .appointment-tab-navigation .note-form-block select,
  .appointment-tab-navigation #notes-tab select {
    -webkit-appearance: menulist !important;
    appearance: menulist !important;
    background-image: none !important;
    /* avoid custom caret graphics */
    z-index: 99999 !important;
    /* ensure not visually clipped */
    position: relative !important;
  }
}
.appointment-tab-navigation::-webkit-scrollbar {
  display: none;
}
.appointment-tab-btn {
  flex: 1;
  min-width: 120px;
  padding: 1rem 1.5rem;
  border: none;
  background: #fff;
  color: #4a5568;
  font-size: 1.1rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  border-bottom: 3px solid transparent;
  white-space: nowrap;
  position: relative;
  touch-action: manipulation;
  /* Enable touch events for mobile */
}
.appointment-tab-btn:first-child {
  border-radius: 12px 0 0 0;
}
.appointment-tab-btn:last-child {
  border-radius: 0 12px 0 0;
}
.appointment-tab-btn:only-child {
  border-radius: 12px 12px 0 0;
}
.appointment-tab-btn:hover:not(.active) {
  background: #f7fafc;
  color: #2d3748;
  transform: translateY(-1px);
}
.appointment-tab-btn:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(55, 136, 216, 0.3);
}
.appointment-tab-btn.active {
  background: linear-gradient(135deg, #3788d8 0%, #2c6db5 100%);
  color: #fff;
  border-bottom: 3px solid #3788d8;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(55, 136, 216, 0.3);
}
.appointment-tab-btn.active:hover {
  background: linear-gradient(135deg, #2c6db5 0%, #245a9b 100%);
}
/* Tab Content Styles */
.appointment-tab-content {
  width: 100%;
  background: #fff;
  border-radius: 0 0 16px 16px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
  border: 1px solid #e1e7ed;
  border-top: none;
  min-height: 500px;
}
.appointment-tab-panel {
  display: none;
  padding: 2.5rem 3rem;
  min-height: 400px;
  opacity: 0;
  transition: opacity 0.3s ease-in-out;
}
.appointment-tab-panel.active {
  display: block;
  opacity: 1;
}
/* Mobile responsive styles for appointment page */
@media (max-width: 820px) {
  .appointment-details-container {
    padding: 1rem 0;
    min-height: auto;
    /* Remove any potential transform issues on mobile */
    transform: none !important;
  }
  .appointment-tab-navigation {
    border-radius: 8px 8px 0 0;
    margin: 0 0.5rem;
    overflow-x: auto;
    /* Remove transform issues */
    transform: none !important;
  }
  .appointment-tab-btn {
    min-width: 100px;
    padding: 0.75rem 1rem;
    font-size: 1rem;
    touch-action: manipulation;
    /* Ensure touch events work on mobile */
    -webkit-tap-highlight-color: transparent;
    /* Remove iOS tap highlight */
    /* Remove transform on mobile to prevent touch issues */
    transform: none !important;
  }
  .appointment-tab-content {
    border-radius: 0 0 8px 8px;
    margin: 0 0.5rem;
    /* Remove any transforms that might affect touch coordinates */
    transform: none !important;
  }
  .appointment-tab-panel {
    padding: 1.5rem 1rem;
    /* Ensure no transform issues */
    transform: none !important;
  }
  #appointment-actions {
    margin: 1rem 0;
    position: relative;
    z-index: 10;
  }
  #appointment-actions button {
    display: block;
    width: 100%;
    margin: 0.5rem 0;
    font-size: 1.1rem;
    padding: 1rem;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    /* Remove iOS tap highlight */
    user-select: none;
    /* Prevent text selection on touch */
    -webkit-user-select: none;
  }
  .form-group {
    margin-bottom: 1rem;
  }
  .form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-size: 1rem;
  }
  .form-group input,
  .form-group select,
  .form-group textarea {
    width: 100%;
    font-size: 1rem;
    padding: 0.75rem;
    border-radius: 4px;
    border: 1px solid #ddd;
  }
}
/* Tab content container styling */
.tab-content-container {
  background: #f8fafc;
  border-radius: 12px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
  padding: 2rem 1.5rem;
  margin: 0;
  border: 1px solid #e2e8f0;
  min-height: 300px;
}
.appointment-details-card {
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  min-width: 0;
  width: 100%;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2rem;
  border: none;
}
#appointment-title {
  margin: 0 0 2rem 2rem;
  font-size: 2.2rem;
  color: #1976d2ff;
  font-weight: 700;
  text-align: center;
}
#appointment-info {
  max-width: 100%;
  margin: 0 0 1.5rem 0;
  background: #f8fafc;
  border-radius: 12px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
  padding: 24px 22px;
  font-size: 1.1em;
  word-break: break-word;
  text-align: left;
  border: 1px solid #e2e8f0;
  color: #2d3748;
  line-height: 1.6;
}
#appointment-info b {
  color: #1a365d;
  font-weight: 600;
  display: inline-block;
  min-width: 80px;
}
#appointment-info > div {
  margin-bottom: 0.8rem;
}
.appointment-status-details {
  margin-bottom: 20px;
  padding: 20px;
  background: #edf2f7;
  border-radius: 12px;
  border: 1px solid #cbd5e0;
  color: #2d3748;
  line-height: 1.6;
}
.appointment-status-details b {
  color: #1a365d;
  font-weight: 600;
}
#appointment-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1.2rem;
  margin: 0 0 1.5rem 0;
  justify-content: flex-start;
  align-items: center;
}
#appointment-actions button.primary {
  background: linear-gradient(135deg, #3788d8 0%, #2c6db5 100%);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 0.7rem 1.5rem;
  font-size: 1.05rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 2px 8px rgba(55, 136, 216, 0.3);
}
#appointment-actions button.primary:hover {
  background: linear-gradient(135deg, #2c6db5 0%, #245a9b 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(55, 136, 216, 0.4);
}
#appointment-actions button.primary:disabled {
  background: #cbd5e0;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
  color: #a0aec0;
}
#appointment-actions button.secondary {
  background: linear-gradient(135deg, #4a5568 0%, #2d3748 100%);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 0.7rem 1.5rem;
  font-size: 1.05rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 2px 8px rgba(74, 85, 104, 0.3);
}
#appointment-actions button.secondary:hover {
  background: linear-gradient(135deg, #2d3748 0%, #1a202c 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(74, 85, 104, 0.4);
}
#appointment-actions button.secondary:disabled {
  background: #cbd5e0;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
  color: #a0aec0;
}
#appointment-notes-section {
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  margin: 0;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
  border: none;
}
#appointment-notes-section h3 {
  margin-top: 0;
  color: #1a365d;
  font-size: 1.4em;
  font-weight: 700;
  border-bottom: 2px solid #3788d8;
  padding-bottom: 0.5rem;
}
#appointment-notes-form {
  margin-bottom: 1rem;
}
#appointment-notes-section .btn {
  border: none;
  border-radius: 8px;
  padding: 0.7rem 1.5rem;
  font-size: 1.05rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  margin: 0.25rem;
}
#appointment-notes-section .btn-primary {
  background: linear-gradient(135deg, #3788d8 0%, #2c6db5 100%);
  color: #fff;
  box-shadow: 0 2px 8px rgba(55, 136, 216, 0.3);
}
#appointment-notes-section .btn-primary:hover {
  background: linear-gradient(135deg, #2c6db5 0%, #245a9b 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(55, 136, 216, 0.4);
}
#appointment-notes-section .btn-primary:disabled {
  background: #cbd5e0;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
  color: #a0aec0;
}
#appointment-notes-section .btn-secondary {
  background: linear-gradient(135deg, #4a5568 0%, #2d3748 100%);
  color: #fff;
  box-shadow: 0 2px 8px rgba(74, 85, 104, 0.3);
}
#appointment-notes-section .btn-secondary:hover {
  background: linear-gradient(135deg, #2d3748 0%, #1a202c 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(74, 85, 104, 0.4);
}
#appointment-notes-section .btn-secondary:disabled {
  background: #cbd5e0;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
  color: #a0aec0;
}
/* Queued signatures list (per-item) */
.queued-signatures-list {
  margin-top: 12px;
  padding: 10px;
  background: #fffdf5;
  border: 1px dashed #ffeeba;
  border-radius: 8px;
}
.queued-signatures-list .queued-signature-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 6px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.04);
}
.queued-signatures-list .queued-signature-item:last-child {
  border-bottom: none;
}
.queued-signatures-list .queued-signature-item .qs-meta {
  color: #6b7280;
  font-size: 0.9rem;
  margin-right: 12px;
}
.queued-signatures-list .queued-signature-item .qs-preview {
  flex: 1 1 auto;
  color: #1f2937;
  font-size: 0.95rem;
  margin-right: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.queued-signatures-list .queued-signature-actions {
  flex: 0 0 auto;
}
.queued-signatures-list .queued-signature-actions .btn {
  margin-left: 6px;
}
.queued-signatures-list .queued-signature-item.processing {
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.6), rgba(240, 249, 255, 0.8));
}
.queued-signatures-list .qs-attempts {
  color: #9ca3af;
  font-size: 0.85rem;
  margin-left: 6px;
}
#signature-section {
  margin: 1.5rem 0 1rem 0;
  text-align: center;
  padding: 1.5rem;
  background: #f8fafc;
  border-radius: 12px;
  border: 1px solid #e2e8f0;
}
@media (max-width: 820px) {
  #signature-section {
    padding: 1rem;
    margin: 1rem 0;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
}
#signature-section h3 {
  color: #1a365d;
  font-weight: 600;
  margin-bottom: 1rem;
}
#signature-canvas {
  background: #fff;
  border-radius: 8px;
  margin-bottom: 1rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  border: 2px solid #e2e8f0;
  touch-action: none !important;
  user-select: none !important;
  -webkit-user-select: none !important;
  -webkit-tap-highlight-color: transparent !important;
}
@media (max-width: 820px) {
  #signature-canvas {
    max-width: 100%;
    width: auto !important;
    height: auto !important;
    transform: none !important;
    position: relative !important;
    margin: 0 auto 1rem auto;
    display: block;
  }
}
#save-signature-btn,
#clear-signature-btn {
  margin: 0.5rem 0.5rem 0 0;
}
@media (max-width: 820px) {
  #save-signature-btn,
  #clear-signature-btn {
    min-height: 44px;
    min-width: 44px;
    touch-action: manipulation;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
    padding: 0.75rem 1rem;
    font-size: 1rem;
  }
}
#checkin-info,
#checkout-info {
  margin: 0.5rem 0;
  color: #2b6cb0;
  font-weight: 600;
  background: #ebf8ff;
  padding: 0.75rem;
  border-radius: 8px;
  border-left: 4px solid #3182ce;
}
/* Admin panel improvements */
.admin-appointment-panel {
  background: #f7fafc !important;
  border: 1px solid #e2e8f0 !important;
  border-radius: 12px !important;
  margin: 0 !important;
  padding: 1.5rem !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) !important;
}
.admin-appointment-panel h3 {
  color: #c53030 !important;
  font-size: 1.3em !important;
  font-weight: 700 !important;
  margin-bottom: 1rem !important;
  border-bottom: 2px solid #e53e3e !important;
  padding-bottom: 0.5rem !important;
}
.admin-appointment-panel label {
  color: #2d3748 !important;
  font-weight: 600 !important;
  font-size: 0.95em !important;
}
.admin-appointment-panel input {
  border: 1px solid #cbd5e0 !important;
  border-radius: 6px !important;
  padding: 0.5rem !important;
  font-size: 0.95em !important;
  transition: border-color 0.2s !important;
}
.admin-appointment-panel input:focus {
  border-color: #3182ce !important;
  box-shadow: 0 0 0 3px rgba(49, 130, 206, 0.1) !important;
  outline: none !important;
}
.admin-appointment-panel button {
  font-weight: 600 !important;
  border-radius: 6px !important;
  transition: all 0.2s !important;
  padding: 0.6rem 1.2rem !important;
}
.location-map-container {
  width: 100%;
  height: 200px;
  margin: 0.5rem 0;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  border: 1px solid #e2e8f0;
}
@media (min-width: 900px) {
  .appointment-details-container {
    justify-content: center;
    align-items: flex-start;
    gap: 0rem;
  }
  .appointment-tab-content {
    min-width: 700px;
    margin: 0rem 0 2rem 0;
  }
  .appointment-tab-navigation {
    min-width: 700px;
  }
}
/* Mobile responsive styles */
@media (max-width: 820px) {
  .appointment-details-container {
    padding: 1rem 0;
  }
  .appointment-tab-navigation {
    margin: 0 1rem 0 1rem;
    border-radius: 8px 8px 0 0;
  }
  .appointment-tab-content {
    margin: 0 1rem 2rem 1rem;
    border-radius: 0 0 8px 8px;
  }
  .appointment-tab-panel {
    padding: 1.5rem 1rem;
  }
  .tab-content-container {
    padding: 1.5rem 1rem;
  }
  .appointment-tab-btn {
    padding: 0.8rem 0.8rem;
    font-size: 1rem;
    min-width: 80px;
  }
  #appointment-title {
    font-size: 1.8rem;
    margin: 0 0 1.5rem 0;
  }
}
/* Additional styling for better visual hierarchy */
.appointment-tab-navigation {
  position: relative;
}
.appointment-tab-navigation::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: #e1e7ed;
}
.appointment-tab-btn.active::after {
  content: "";
  position: absolute;
  bottom: -1px;
  left: 0;
  right: 0;
  height: 2px;
  background: #3788d8;
}
.template-tab-container {
  display: flex;
  gap: 6px;
  margin: 0 0 16px 0;
  border-bottom: 2px solid #3788d8;
  background: #f8fafc;
  padding: 0;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
  height: auto;
  min-height: unset;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  align-items: flex-end;
  flex-wrap: nowrap;
  position: relative;
  z-index: 1;
  border-radius: 8px 8px 0 0;
}
.template-tab-container::-webkit-scrollbar {
  display: none;
}
.template-tab-btn {
  flex: 1 0 auto;
  min-width: 140px;
  font-size: 1em;
  padding: 12px 8px 10px 8px;
  border-radius: 8px 8px 0 0;
  border: none;
  border-bottom: 3px solid transparent;
  background: #f8fafc;
  color: #3788d8;
  font-weight: 600;
  margin-bottom: 0;
  outline: none;
  transition: all 0.3s ease;
  box-shadow: none;
  cursor: pointer;
  border-top: 1px solid #e2e8f0;
  border-left: 1px solid #e2e8f0;
  border-right: 1px solid #e2e8f0;
  touch-action: manipulation;
  /* Enable touch events for mobile */
  -webkit-tap-highlight-color: transparent;
  /* Remove iOS tap highlight */
}
.template-tab-btn:first-child {
  border-left: 1px solid #e2e8f0;
}
.template-tab-btn.active,
.template-tab-btn:focus,
.template-tab-btn.selected {
  background: linear-gradient(135deg, #3788d8 0%, #2c6db5 100%);
  color: #fff;
  border-bottom: 3px solid #3788d8;
  z-index: 2;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(55, 136, 216, 0.3);
  border-top: 1px solid #3788d8;
  border-left: 1px solid #3788d8;
  border-right: 1px solid #3788d8;
}
.note-form-block {
  margin-bottom: 28px;
  border: 1px solid #e2e8f0;
  padding: 20px;
  border-radius: 12px;
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}
.note-form-block h4 {
  color: #1a365d;
  font-weight: 600;
  margin-bottom: 1rem;
  border-bottom: 1px solid #e2e8f0;
  padding-bottom: 0.5rem;
}
.template-info {
  margin-bottom: 12px;
  padding: 12px;
  background-color: #edf2f7;
  border-radius: 8px;
  font-size: 0.95em;
  color: #4a5568;
  border: 1px solid #e2e8f0;
}
.appointment-status-details {
  margin-bottom: 20px;
  padding: 20px;
  background: #edf2f7;
  border-radius: 12px;
  border: 1px solid #cbd5e0;
  color: #2d3748;
  line-height: 1.6;
}
.appointment-status-details b {
  color: #1a365d;
  font-weight: 600;
}
.alert.alert-warning {
  margin-top: 20px;
  margin-bottom: 12px;
  background: #fef5e7;
  color: #744210;
  border: 1px solid #f6e05e;
  border-radius: 8px;
  padding: 16px;
  font-size: 1em;
  border-left: 4px solid #ed8936;
  font-weight: 500;
}
/* Edit History Section Styles */
#edit-history-container .edit-history-entry {
  margin-bottom: 15px;
  padding: 12px;
  background: white;
  border: 1px solid #e2e8f0;
  border-radius: 4px;
  transition: box-shadow 0.2s ease;
}
#edit-history-container .edit-history-entry:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
#edit-history-container .edit-history-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 8px;
  flex-wrap: wrap;
  gap: 8px;
}
#edit-history-container .edit-history-header strong {
  color: #2d3748;
  font-size: 0.95em;
}
#edit-history-container .edit-history-header small {
  color: #718096;
  font-size: 0.85em;
}
#edit-history-container .edit-history-details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 10px;
  font-size: 0.9em;
}
#edit-history-container .edit-history-details div strong {
  color: #4a5568;
  font-weight: 600;
}
#edit-history-container .edit-history-notes {
  margin-top: 8px;
  padding: 8px;
  background: #f7fafc;
  border-radius: 4px;
  font-size: 0.9em;
}
#edit-history-container .edit-history-notes strong {
  color: #2d3748;
  font-weight: 600;
}
#edit-history-container .edit-history-location {
  margin-top: 4px;
  font-size: 0.9em;
}
#edit-history-container .edit-history-location strong {
  color: #2d3748;
  font-weight: 600;
}
/* Responsive adjustments for edit history */
@media (max-width: 820px) {
  #edit-history-container .edit-history-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
  #edit-history-container .edit-history-details {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  /* Mobile styles for template tab buttons */
  .template-tab-container {
    margin: 0 0 12px 0;
    padding: 0;
    gap: 4px;
  }
  .template-tab-btn {
    min-width: 100px;
    font-size: 0.9em;
    padding: 10px 6px 8px 6px;
    touch-action: manipulation;
    /* Ensure touch events work on mobile */
    -webkit-tap-highlight-color: transparent;
    /* Remove iOS tap highlight */
  }
  /* Mobile-friendly form inputs within appointment notes */
  .appointment-tab-panel {
    /* Ensure the panel itself allows interactions */
    pointer-events: auto !important;
    position: relative !important;
  }
  .appointment-tab-panel input,
  .appointment-tab-panel textarea,
  .appointment-tab-panel select {
    font-size: 1rem !important;
    padding: 12px !important;
    min-height: 44px !important;
    border: 1px solid #ccc !important;
    background: white !important;
    pointer-events: auto !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: transparent !important;
  }
  .appointment-tab-panel textarea {
    min-height: 100px !important;
    resize: vertical !important;
  }
  .appointment-tab-panel button {
    min-height: 44px !important;
    padding: 12px 16px !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: transparent !important;
  }
}
/* Specific overrides for form builder generated content on mobile */
@media (max-width: 820px) {
  /* Remove any potential blocking elements and ensure inputs are accessible */
  #appointment-notes-form,
  #notes-forms-container,
  #notes-tab,
  .note-form-block,
  .form-group,
  .appointment-tab-panel {
    pointer-events: auto !important;
    position: relative !important;
    z-index: auto !important;
    /* Remove any transforms that might interfere with touch */
    transform: none !important;
  }
  /* Ensure any parent containers don't block touch events */
  .content,
  .sidebar-nav-container,
  main,
  .appointment-details-container {
    /* Remove potential transform interference */
    transform: none !important;
    /* Ensure proper touch event handling */
    touch-action: auto !important;
  }
  /* Simple mobile-friendly input styles */
  #appointment-notes-form input,
  #appointment-notes-form textarea,
  #notes-forms-container input,
  #notes-forms-container textarea,
  .note-form-block input,
  .note-form-block textarea,
  #notes-tab input,
  #notes-tab textarea {
    font-size: 1rem !important;
    padding: 12px !important;
    min-height: 44px !important;
    border: 1px solid #ccc !important;
    border-radius: 4px !important;
    background: white !important;
    /* Remove any touch blocking */
    pointer-events: auto !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: transparent !important;
    /* Ensure they're not hidden behind anything */
    position: relative !important;
    z-index: 1 !important;
    /* iOS Safari specific fixes */
    -webkit-user-select: text !important;
    user-select: text !important;
    /* Remove any transforms */
    transform: none !important;
    margin: 0 !important;
    left: auto !important;
    top: auto !important;
  }
  /* Keep native select popup behavior on mobile by using menulist appearance */
  #appointment-notes-form select,
  #notes-forms-container select,
  .note-form-block select,
  #notes-tab select {
    -webkit-appearance: menulist !important;
    appearance: menulist !important;
    -webkit-user-select: text !important;
    user-select: text !important;
    position: relative !important;
    z-index: 2 !important;
  }
  #appointment-notes-form textarea,
  #notes-forms-container textarea,
  .note-form-block textarea,
  #notes-tab textarea {
    min-height: 100px !important;
    resize: vertical !important;
    /* iOS specific textarea fixes */
    -webkit-appearance: none !important;
    appearance: none !important;
  }
}
/* Helper: explicitly opt-in selects to use native browser UI
   Use the `native-select` class on rendered selects to apply this
   rule. It's intentionally specific and uses !important so it
   overrides global `appearance: none` rules without runtime DOM surgery.
*/
.native-select {
  -webkit-appearance: menulist !important;
  appearance: menulist !important;
  -webkit-user-select: text !important;
  user-select: text !important;
  background-image: none !important;
  background-color: #fff !important;
  position: relative !important;
  z-index: 2147483647 !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
}
/* Upcoming Appointments Styling */
.appointments-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-top: 20px;
  padding: 0;
}
.appointment-item {
  display: flex;
  align-items: flex-start;
  padding: 20px;
  background: #ffffff;
  border: 1px solid #e0e0e0;
  border-radius: 12px;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  position: relative;
  overflow: hidden;
}
.appointment-item::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 4px;
  height: 100%;
  background: linear-gradient(135deg, #3788d8, #4299e1);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.appointment-item:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
  border-color: #3788d8;
}
.appointment-item:hover::before {
  opacity: 1;
}
.appointment-item.current-appointment {
  background: linear-gradient(135deg, #f0fff4, #f8fff8);
  border-color: #4caf50;
}
.appointment-item.current-appointment::before {
  background: linear-gradient(135deg, #4caf50, #68d391);
  opacity: 1;
}
.appointment-item.today-appointment {
  background: linear-gradient(135deg, #fffbf0, #fff8e1);
  border-color: #ff9800;
}
.appointment-item.today-appointment::before {
  background: linear-gradient(135deg, #ff9800, #ffb74d);
  opacity: 1;
}
.appointment-datetime {
  flex: 0 0 160px;
  margin-right: 20px;
  font-size: 0.95em;
  color: #666;
  line-height: 1.5;
}
.appointment-datetime strong {
  color: #333;
  font-weight: 600;
  display: block;
  margin-bottom: 6px;
  font-size: 1.05em;
  letter-spacing: 0.3px;
}
.appointment-details {
  flex: 1;
  min-width: 0;
}
.appointment-client {
  font-weight: 700;
  color: #1a202c;
  font-size: 1.15em;
  margin-bottom: 6px;
  line-height: 1.3;
}
.appointment-service {
  color: #4a5568;
  font-size: 1em;
  margin-bottom: 8px;
  font-weight: 500;
}
.appointment-notes {
  color: #718096;
  font-size: 0.9em;
  font-style: italic;
  line-height: 1.5;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid #e2e8f0;
  max-height: 60px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
}
.appointment-status {
  flex: 0 0 auto;
  margin-left: 20px;
  align-self: flex-start;
}
.appointment-status span {
  padding: 8px 12px;
  border-radius: 20px;
  font-size: 0.8em;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.8px;
  display: inline-block;
  position: relative;
  overflow: hidden;
}
.appointment-status span::before {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
  transition: left 0.6s ease;
}
.appointment-status span:hover::before {
  left: 100%;
}
.appointment-status .status-current {
  background: linear-gradient(135deg, #e8f5e8, #c8e6c9);
  color: #1b5e20;
  border: 2px solid #4caf50;
  box-shadow: 0 2px 8px rgba(76, 175, 80, 0.2);
}
.appointment-status .status-today {
  background: linear-gradient(135deg, #fff3e0, #ffe0b2);
  color: #e65100;
  border: 2px solid #ff9800;
  box-shadow: 0 2px 8px rgba(255, 152, 0, 0.2);
}
.appointment-status .status-upcoming {
  background: linear-gradient(135deg, #e3f2fd, #bbdefb);
  color: #0d47a1;
  border: 2px solid #2196f3;
  box-shadow: 0 2px 8px rgba(33, 150, 243, 0.2);
}
/* Loading and error states */
.loading,
.error-message,
.no-appointments {
  text-align: center;
  padding: 60px 30px;
  border-radius: 12px;
  font-weight: 500;
  position: relative;
}
.loading {
  background: linear-gradient(135deg, #e3f2fd, #f3e5f5);
  color: #1565c0;
  border: 2px solid #bbdefb;
}
.loading::before {
  content: "";
  position: absolute;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  width: 24px;
  height: 24px;
  border: 3px solid #e3f2fd;
  border-top: 3px solid #1565c0;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}
@keyframes spin {
  0% {
    transform: translateX(-50%) rotate(0deg);
  }
  100% {
    transform: translateX(-50%) rotate(360deg);
  }
}
.error-message {
  background: linear-gradient(135deg, #ffebee, #ffcdd2);
  color: #c62828;
  border: 2px solid #ef5350;
}
.error-message::before {
  content: "⚠️";
  display: block;
  font-size: 24px;
  margin-bottom: 10px;
}
.no-appointments {
  background: linear-gradient(135deg, #f5f5f5, #eeeeee);
  color: #616161;
  border: 2px solid #e0e0e0;
}
.no-appointments::before {
  content: "📅";
  display: block;
  font-size: 24px;
  margin-bottom: 10px;
}
/* Responsive design */
@media (max-width: 820px) {
  .appointment-item {
    flex-direction: column;
    align-items: stretch;
    padding: 16px;
  }
  .appointment-datetime {
    flex: none;
    margin-right: 0;
    margin-bottom: 12px;
  }
  .appointment-datetime strong {
    display: inline;
    margin-right: 12px;
  }
  .appointment-status {
    margin-left: 0;
    margin-top: 12px;
    align-self: flex-start;
  }
}
@media (max-width: 480px) {
  .appointments-list {
    gap: 12px;
    margin-top: 16px;
  }
  .appointment-item {
    padding: 12px;
    margin: 0 -4px;
  }
  .appointment-datetime {
    flex-direction: row;
    align-items: center;
    margin-bottom: 8px;
  }
  .appointment-datetime strong {
    margin-right: 8px;
    margin-bottom: 0;
  }
  .appointment-client {
    font-size: 1.05em;
  }
  .appointment-service {
    font-size: 0.95em;
  }
}
/* Dark mode support */
.dark-mode .appointment-item {
  background: linear-gradient(135deg, #2d3748, #1a202c);
  border-color: #4a5568;
  color: #e2e8f0;
}
.dark-mode .appointment-item::before {
  background: linear-gradient(135deg, #63b3ed, #4299e1);
}
.dark-mode .appointment-item:hover {
  border-color: #63b3ed;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
}
.dark-mode .appointment-item.current-appointment {
  background: linear-gradient(135deg, #1a202c, #2d3748);
  border-color: #68d391;
}
.dark-mode .appointment-item.current-appointment::before {
  background: linear-gradient(135deg, #68d391, #4fd1c7);
  opacity: 1;
}
.dark-mode .appointment-item.today-appointment {
  background: linear-gradient(135deg, #1a202c, #2d3748);
  border-color: #f6ad55;
}
.dark-mode .appointment-item.today-appointment::before {
  background: linear-gradient(135deg, #f6ad55, #fbd38d);
  opacity: 1;
}
.dark-mode .appointment-client {
  color: #f7fafc;
}
.dark-mode .appointment-service {
  color: #cbd5e0;
}
.dark-mode .appointment-notes {
  color: #a0aec0;
  border-top-color: #4a5568;
}
.dark-mode .appointment-datetime {
  color: #a0aec0;
}
.dark-mode .appointment-datetime strong {
  color: #f7fafc;
}
.dark-mode .appointment-status .status-current {
  background: linear-gradient(135deg, #1a365d, #2a4365);
  color: #9ae6b4;
  border-color: #68d391;
  box-shadow: 0 2px 8px rgba(104, 211, 145, 0.3);
}
.dark-mode .appointment-status .status-today {
  background: linear-gradient(135deg, #744210, #975a16);
  color: #fbb6ce;
  border-color: #f6ad55;
  box-shadow: 0 2px 8px rgba(246, 173, 85, 0.3);
}
.dark-mode .appointment-status .status-upcoming {
  background: linear-gradient(135deg, #1a365d, #2c5282);
  color: #90cdf4;
  border-color: #4299e1;
  box-shadow: 0 2px 8px rgba(66, 153, 225, 0.3);
}
.dark-mode .error-message {
  background: linear-gradient(135deg, #742a2a, #9b2c2c);
  border-color: #e53e3e;
  color: #fed7d7;
}
.dark-mode .no-appointments {
  background: linear-gradient(135deg, #2d3748, #4a5568);
  border-color: #718096;
  color: #cbd5e0;
}
.dark-mode .loading {
  background: linear-gradient(135deg, #2c5282, #3182ce);
  border-color: #4299e1;
  color: #bee3f8;
}
.dark-mode .loading::before {
  border-color: #2c5282;
  border-top-color: #bee3f8;
}
/* System dark mode support */
@media (prefers-color-scheme: dark) {
  .appointment-item {
    background: linear-gradient(135deg, #2d3748, #1a202c);
    border-color: #4a5568;
    color: #e2e8f0;
  }
  .appointment-item::before {
    background: linear-gradient(135deg, #63b3ed, #4299e1);
  }
  .appointment-item:hover {
    border-color: #63b3ed;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
  }
  .appointment-item.current-appointment {
    background: linear-gradient(135deg, #1a202c, #2d3748);
    border-color: #68d391;
  }
  .appointment-item.current-appointment::before {
    background: linear-gradient(135deg, #68d391, #4fd1c7);
    opacity: 1;
  }
  .appointment-item.today-appointment {
    background: linear-gradient(135deg, #1a202c, #2d3748);
    border-color: #f6ad55;
  }
  .appointment-item.today-appointment::before {
    background: linear-gradient(135deg, #f6ad55, #fbd38d);
    opacity: 1;
  }
  .appointment-client {
    color: #f7fafc;
  }
  .appointment-service {
    color: #cbd5e0;
  }
  .appointment-notes {
    color: #a0aec0;
    border-top-color: #4a5568;
  }
  .appointment-datetime {
    color: #a0aec0;
  }
  .appointment-datetime strong {
    color: #f7fafc;
  }
  .appointment-status .status-current {
    background: linear-gradient(135deg, #1a365d, #2a4365);
    color: #9ae6b4;
    border-color: #68d391;
    box-shadow: 0 2px 8px rgba(104, 211, 145, 0.3);
  }
  .appointment-status .status-today {
    background: linear-gradient(135deg, #744210, #975a16);
    color: #fbb6ce;
    border-color: #f6ad55;
    box-shadow: 0 2px 8px rgba(246, 173, 85, 0.3);
  }
  .appointment-status .status-upcoming {
    background: linear-gradient(135deg, #1a365d, #2c5282);
    color: #90cdf4;
    border-color: #4299e1;
    box-shadow: 0 2px 8px rgba(66, 153, 225, 0.3);
  }
  .error-message {
    background: linear-gradient(135deg, #742a2a, #9b2c2c);
    border-color: #e53e3e;
    color: #fed7d7;
  }
  .no-appointments {
    background: linear-gradient(135deg, #2d3748, #4a5568);
    border-color: #718096;
    color: #cbd5e0;
  }
  .loading {
    background: linear-gradient(135deg, #2c5282, #3182ce);
    border-color: #4299e1;
    color: #bee3f8;
  }
  .loading::before {
    border-color: #2c5282;
    border-top-color: #bee3f8;
  }
}
/* Mobile-specific calendar container adjustments */
@media (max-width: 1020px) {
  .ruutio-calendar-container {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    border-radius: 2px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    height: auto !important;
    min-height: 400px;
    overflow: visible !important;
    font-size: 1rem !important;
    padding: 16px !important;
  }
  .ruutio-calendar-layout {
    flex-direction: column !important;
  }
  .ruutio-calendar-sidebar {
    width: 100% !important;
    order: 1;
    margin-bottom: 20px !important;
    border: none !important;
    padding: 0 !important;
  }
  .ruutio-calendar-main {
    width: 100% !important;
    order: 2;
    height: auto;
    flex: none;
  }
  .ruutio-calendar-header {
    display: none !important;
  }
  .ruutio-calendar-navigation {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
    margin-bottom: 0 !important;
  }
  .ruutio-calendar-view-switcher {
    display: flex;
    justify-content: center;
    gap: 5px;
    margin-top: 0 !important;
  }
  .ruutio-calendar-mini-month {
    max-width: 100% !important;
    margin: 0 auto 24px auto !important;
    border: 2px solid #007bff !important;
    border-radius: 12px !important;
    box-shadow: 0 4px 12px rgba(0, 123, 255, 0.15) !important;
    background-color: #fff !important;
  }
  .ruutio-calendar-mini-month-container {
    justify-content: center !important;
  }
  .ruutio-calendar-mini-header {
    background: linear-gradient(135deg, #007bff, #0056b3) !important;
    color: white !important;
    border-radius: 8px 8px 0 0 !important;
    padding: 12px !important;
  }
  .ruutio-calendar-mini-title {
    color: white !important;
    font-weight: 600 !important;
    font-size: 1.1rem !important;
  }
  .ruutio-calendar-mini-prev,
  .ruutio-calendar-mini-next {
    color: white !important;
    background: rgba(255, 255, 255, 0.2) !important;
    border: 1px solid rgba(255, 255, 255, 0.3) !important;
  }
  .ruutio-calendar-mini-prev:hover,
  .ruutio-calendar-mini-next:hover {
    background: rgba(255, 255, 255, 0.3) !important;
  }
  .ruutio-calendar-week-view {
    display: none !important;
  }
  .ruutio-calendar-week-grid {
    display: none !important;
  }
  .ruutio-calendar-mobile-appointments {
    display: block !important;
    padding: 16px;
    background-color: #fff;
    max-height: 50vh;
    overflow-y: auto;
    border-radius: 12px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
    margin-top: 10px !important;
  }
  .mobile-appointment-day-header {
    font-weight: 600 !important;
    font-size: 1.1rem !important;
    margin-bottom: 12px !important;
    margin-top: 20px !important;
    padding-bottom: 8px !important;
    border-bottom: 2px solid #e9ecef !important;
    color: #333 !important;
    background: linear-gradient(90deg, #f8f9fa, transparent) !important;
    padding: 8px 12px !important;
    border-radius: 6px !important;
  }
  .mobile-appointment-day-header[style*="background: linear-gradient(90deg, #007bff"] {
    background: linear-gradient(90deg, #007bff, #0056b3) !important;
    color: white !important;
    border-bottom: 2px solid #0056b3 !important;
    box-shadow: 0 2px 8px rgba(0, 123, 255, 0.3) !important;
  }
  .mobile-appointment-item {
    background: linear-gradient(135deg, #ffffff, #f8f9fa) !important;
    border: 1px solid #e9ecef !important;
    border-radius: 12px !important;
    padding: 16px !important;
    margin-bottom: 12px !important;
    font-size: 0.95rem !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
    transition: all 0.2s ease !important;
  }
  .mobile-appointment-item:hover {
    background: linear-gradient(135deg, #f8f9fa, #e9ecef) !important;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12) !important;
    transform: translateY(-1px) !important;
  }
  .mobile-appointment-item:active {
    transform: translateY(0) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
  }
  .mobile-appointment-item .appointment-time {
    font-weight: 600 !important;
    color: #007bff !important;
    margin-bottom: 6px !important;
    font-size: 1rem !important;
  }
  .mobile-appointment-item .appointment-title {
    font-weight: 500 !important;
    margin-bottom: 6px !important;
    color: #333 !important;
    font-size: 1rem !important;
  }
  .mobile-appointment-item .appointment-details {
    color: #6c757d !important;
    font-size: 0.85rem !important;
    line-height: 1.4 !important;
  }
  .mobile-appointments-empty {
    text-align: center;
    padding: 40px 20px;
    color: #6c757d;
  }
  .mobile-appointments-empty .empty-icon {
    font-size: 3rem;
    margin-bottom: 16px;
    opacity: 0.5;
  }
  .mobile-appointments-empty .empty-text {
    font-size: 1.1rem;
    margin-bottom: 8px;
  }
  .mobile-appointments-empty .empty-subtext {
    font-size: 0.9rem;
  }
  .ruutio-calendar-day-cell {
    cursor: pointer;
    touch-action: manipulation;
    min-height: 50px !important;
    font-size: 0.8rem !important;
    position: relative;
  }
  .ruutio-calendar-day-cell:active {
    background-color: rgba(55, 136, 216, 0.1);
  }
  .ruutio-calendar-day-cell.today {
    background-color: #fff3cd;
    border: 1px solid #ffeaa7;
  }
  .ruutio-calendar-day-cell::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1;
    pointer-events: auto;
  }
  .ruutio-calendar-event {
    font-weight: 500;
    line-height: 1.2;
  }
  .ruutio-calendar-event:hover {
    transform: none;
  }
  .ruutio-calendar-container button {
    min-height: 32px;
    min-width: 32px;
    touch-action: manipulation;
  }
  .new-event-button-container {
    position: static !important;
    float: none !important;
    clear: both !important;
    display: block !important;
  }
  .ruutio-calendar-content {
    overflow-x: hidden;
    width: 100%;
    height: auto;
    min-height: inherit;
    max-height: 600px;
  }
  .ruutio-calendar-week-grid {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
  .ruutio-calendar-day-column {
    min-width: 80px !important;
    max-width: 120px !important;
  }
  .ruutio-calendar-modal-overlay {
    padding: 10px;
    align-items: flex-start;
    padding-top: 20px;
  }
  .ruutio-calendar-modal {
    width: 100% !important;
    max-width: 100% !important;
    max-height: calc(100vh - 40px) !important;
    margin: 0 !important;
    border-radius: 12px !important;
    padding: 20px !important;
    font-size: 1rem !important;
  }
  .ruutio-calendar-modal-title {
    font-size: 1.4rem !important;
    margin-bottom: 16px !important;
  }
  .ruutio-calendar-event-form {
    gap: 16px !important;
    max-width: 100% !important;
    padding: 0 !important;
  }
  .ruutio-calendar-event-form .form-group {
    margin-bottom: 16px !important;
  }
  .ruutio-calendar-event-form label {
    font-size: 1rem !important;
    font-weight: 600 !important;
    margin-bottom: 8px !important;
    color: #333 !important;
  }
  .ruutio-calendar-event-form input[type="text"],
  .ruutio-calendar-event-form input[type="datetime-local"],
  .ruutio-calendar-event-form input[type="date"],
  .ruutio-calendar-event-form input[type="time"],
  .ruutio-calendar-event-form input[type="number"],
  .ruutio-calendar-event-form textarea,
  .ruutio-calendar-event-form select {
    font-size: 1rem !important;
    padding: 14px 12px !important;
    border-radius: 8px !important;
    border: 2px solid #ddd !important;
    min-height: 48px !important;
    -webkit-appearance: none;
    appearance: none;
  }
  .ruutio-calendar-event-form textarea {
    min-height: 100px !important;
    resize: vertical;
  }
  .form-datetime-group {
    display: block !important;
    gap: 0 !important;
  }
  .form-datetime-group .form-group {
    width: 100% !important;
    margin-bottom: 16px !important;
  }
  .form-color-category-group {
    display: block !important;
    gap: 0 !important;
  }
  .form-color-category-group .form-group {
    width: 100% !important;
    margin-bottom: 16px !important;
  }
  .form-custom-fields-group .form-group {
    width: 100% !important;
    margin-bottom: 16px !important;
  }
  .ruutio-calendar-event-form .form-group:has(input[name="location_lat"]),
  .ruutio-calendar-event-form .form-group:has(input[name="location_lon"]) {
    width: 100% !important;
    margin-bottom: 16px !important;
  }
  .ruutio-calendar-event-form input[type="color"] {
    height: 50px !important;
    padding: 4px !important;
    cursor: pointer;
  }
  .ruutio-calendar-event-form .recurrence-options-container {
    margin-left: 0 !important;
    margin-top: 16px !important;
    padding: 16px !important;
    border-left: none !important;
    border: 2px solid #e0e0e0 !important;
    border-radius: 8px !important;
    background-color: #f8f9fa !important;
  }
  .ruutio-calendar-event-form .form-check {
    margin-bottom: 16px !important;
  }
  .ruutio-calendar-event-form input[type="checkbox"] {
    width: 20px !important;
    height: 20px !important;
    margin-right: 12px !important;
  }
  .ruutio-calendar-event-form input[type="radio"] {
    width: 20px !important;
    height: 20px !important;
    margin-right: 12px !important;
  }
  .days-of-week-wrapper {
    gap: 8px !important;
    justify-content: space-between !important;
  }
  .day-selector {
    width: auto !important;
    flex: 1 !important;
    min-width: 35px !important;
  }
  .day-selector input[type="checkbox"] {
    width: 18px !important;
    height: 18px !important;
  }
  .day-selector label {
    font-size: 0.9rem !important;
    margin-top: 6px !important;
  }
  .ruutio-calendar-event-form .form-button-group {
    flex-direction: column !important;
    gap: 12px !important;
    margin-top: 24px !important;
    padding-top: 20px !important;
  }
  .ruutio-calendar-event-form .save-button,
  .ruutio-calendar-event-form .delete-button {
    width: 100% !important;
    padding: 16px 20px !important;
    font-size: 1.1rem !important;
    font-weight: 600 !important;
    border-radius: 8px !important;
    min-height: 52px !important;
  }
  .ruutio-calendar-modal-close {
    font-size: 1.8rem !important;
    padding: 8px !important;
    min-width: 44px !important;
    min-height: 44px !important;
  }
  .searchable-select-container {
    position: relative;
    width: 100%;
  }
  .searchable-select-container .searchable-select-input {
    width: 100% !important;
    font-size: 1rem !important;
    padding: 14px 40px 14px 12px !important;
    min-height: 48px !important;
    border: 2px solid #ddd !important;
    border-radius: 8px !important;
    background-color: #fff;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
  }
  .searchable-select-container .searchable-select-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    border: 2px solid #ddd;
    border-top: none;
    border-radius: 0 0 8px 8px;
    max-height: 200px;
    overflow-y: auto;
    z-index: 1000;
    display: none;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  }
  .searchable-select-container.open .searchable-select-dropdown {
    display: block;
  }
  .searchable-select-container .searchable-select-option {
    padding: 14px 12px;
    font-size: 1rem;
    cursor: pointer;
    border-bottom: 1px solid #f0f0f0;
    transition: background-color 0.2s;
  }
  .searchable-select-container .searchable-select-option:hover,
  .searchable-select-container .searchable-select-option.selected {
    background-color: #3788d8;
    color: white;
  }
  .searchable-select-container .searchable-select-option.no-results {
    color: #666;
    cursor: default;
    padding: 14px 12px;
    font-style: italic;
  }
  .searchable-select-container .searchable-select-option.no-results:hover {
    background-color: transparent;
    color: #666;
  }
  .searchable-select-container::after {
    content: "▼";
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    color: #666;
    font-size: 0.8rem;
    transition: transform 0.2s ease;
  }
  .searchable-select-container.open::after {
    transform: translateY(-50%) rotate(180deg);
  }
  .dark-mode .searchable-select-container .searchable-select-input {
    background-color: #2d3748 !important;
    border-color: #4a5568 !important;
    color: #e2e8f0 !important;
  }
  .dark-mode .searchable-select-container .searchable-select-dropdown {
    background: #2d3748;
    border-color: #4a5568;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
  }
  .dark-mode .searchable-select-container .searchable-select-option {
    border-bottom-color: #4a5568;
    color: #e2e8f0;
  }
  .dark-mode .searchable-select-container .searchable-select-option:hover,
  .dark-mode .searchable-select-container .searchable-select-option.selected {
    background-color: #63b3ed;
    color: #1a202c;
  }
  .dark-mode .searchable-select-container .searchable-select-option.no-results {
    color: #a0aec0;
  }
  .dark-mode .searchable-select-container .searchable-select-option.no-results:hover {
    background-color: transparent;
    color: #a0aec0;
  }
  .dark-mode .searchable-select-container::after {
    color: #a0aec0;
  }
}
/* Tablet-specific optimizations */
@media (min-width: 481px) and (max-width: 1020px) {
  .ruutio-calendar-day-cell {
    min-height: 60px !important;
    padding: 3px !important;
  }
  .ruutio-calendar-hour-cell {
    height: 50px !important;
    font-size: 0.7em;
  }
  .ruutio-calendar-day-hour {
    height: 50px !important;
  }
}
/* Portrait orientation specific adjustments */
@media (max-width: 1020px) and (orientation: portrait) {
  .ruutio-calendar-container {
    min-height: 450px;
  }
  .ruutio-calendar-header {
    gap: 6px;
  }
  .ruutio-calendar-modal {
    width: 95%;
    margin: 2.5%;
  }
}
/* Landscape orientation specific adjustments */
@media (max-width: 1020px) and (orientation: landscape) {
  .ruutio-calendar-container {
    min-height: 320px;
  }
  .ruutio-calendar-day-cell {
    min-height: 35px !important;
  }
  .ruutio-calendar-hour-cell {
    height: 30px !important;
  }
  .ruutio-calendar-day-hour {
    height: 30px !important;
  }
}
/* Dark mode mobile optimizations */
@media (max-width: 1020px) {
  body.dark-mode .ruutio-calendar-container {
    background-color: #2d2d2d;
    color: #f0f0f0;
    border: 1px solid #444;
  }
  body.dark-mode .ruutio-calendar-day-cell {
    border-color: #444;
  }
  body.dark-mode .ruutio-calendar-day-cell.today {
    background-color: #3d3d00;
    border-color: #666600;
  }
  body.dark-mode .ruutio-calendar-day-cell.other-month {
    background-color: #1a1a1a;
    color: #666;
  }
  body.dark-mode .ruutio-calendar-event {
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
  }
}
/* High DPI screen optimizations */
@media (max-width: 1020px) and (-webkit-min-device-pixel-ratio: 2) {
  .ruutio-calendar-event {
    border-width: 0.5px;
  }
  .ruutio-calendar-day-cell {
    border-width: 0.5px;
  }
}
/* Accessibility improvements for mobile */
@media (max-width: 1020px) {
  .ruutio-calendar-container button:focus,
  .ruutio-calendar-container .ruutio-calendar-day-cell:focus {
    outline: 2px solid #3788d8;
    outline-offset: 1px;
  }
  .ruutio-calendar-event-time {
    font-weight: 600;
  }
  .ruutio-calendar-day-number {
    font-weight: 500;
  }
}
/* Mobile Swipe Gesture Navigation */
@media (max-width: 1020px) {
  .ruutio-calendar-container {
    transition: transform 0.2s ease-out;
    touch-action: pan-y;
    user-select: none;
    position: relative;
  }
  .ruutio-calendar-container::before {
    content: "";
    position: absolute;
    top: 0;
    left: -2px;
    right: -2px;
    height: 2px;
    background: linear-gradient(90deg, transparent 0%, rgba(0, 123, 255, 0.3) 50%, transparent 100%);
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 1;
  }
  .ruutio-calendar-container::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: -2px;
    right: -2px;
    height: 2px;
    background: linear-gradient(90deg, transparent 0%, rgba(0, 123, 255, 0.3) 50%, transparent 100%);
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 1;
  }
  .ruutio-calendar-container:active::before,
  .ruutio-calendar-container:active::after {
    opacity: 1;
  }
  .ruutio-calendar-navigation .ruutio-calendar-prev,
  .ruutio-calendar-navigation .ruutio-calendar-next,
  .ruutio-calendar-navigation .ruutio-calendar-today {
    min-height: 44px;
    min-width: 44px;
    padding: 8px 12px;
    margin: 0 4px;
    position: relative;
    overflow: hidden;
  }
  .ruutio-calendar-navigation .ruutio-calendar-prev::after,
  .ruutio-calendar-navigation .ruutio-calendar-next::after,
  .ruutio-calendar-navigation .ruutio-calendar-today::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.5);
    transform: translate(-50%, -50%);
    transition: width 0.3s ease, height 0.3s ease;
  }
  .ruutio-calendar-navigation .ruutio-calendar-prev:active::after,
  .ruutio-calendar-navigation .ruutio-calendar-next:active::after,
  .ruutio-calendar-navigation .ruutio-calendar-today:active::after {
    width: 100px;
    height: 100px;
  }
  .ruutio-calendar-view-switcher .ruutio-calendar-month-view,
  .ruutio-calendar-view-switcher .ruutio-calendar-week-view {
    min-height: 44px;
    padding: 8px 16px;
    margin: 0 2px;
    border-radius: 6px;
    font-weight: 500;
  }
  .ruutio-calendar-view-switcher .ruutio-calendar-month-view.active,
  .ruutio-calendar-view-switcher .ruutio-calendar-week-view.active {
    background-color: #007bff;
    color: white;
    box-shadow: 0 2px 4px rgba(0, 123, 255, 0.3);
  }
  .ruutio-calendar-title {
    font-size: 1.1em;
    font-weight: 600;
    margin: 0 8px;
    color: #333;
    text-align: center;
    min-width: 120px;
  }
  .ruutio-calendar-content {
    transition: opacity 0.15s ease-in-out;
  }
  .ruutio-calendar-content.transitioning {
    opacity: 0.7;
  }
  .ruutio-calendar-day-cell:active {
    background-color: rgba(0, 123, 255, 0.1);
    transform: scale(0.98);
    transition: all 0.1s ease;
  }
  .ruutio-calendar-event:active {
    transform: scale(0.95);
    transition: transform 0.1s ease;
  }
}
/* Dark mode mobile optimizations */
@media (max-width: 1020px) and (prefers-color-scheme: dark) {
  .ruutio-calendar-container::before,
  .ruutio-calendar-container::after {
    background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100%);
  }
  .ruutio-calendar-title {
    color: #e0e0e0;
  }
  .ruutio-calendar-day-cell:active {
    background-color: rgba(255, 255, 255, 0.1);
  }
}
/* Calendar modal button styles */
.ruutio-calendar-details-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 20px;
  flex-wrap: wrap;
}
.ruutio-calendar-view-appointment-button,
.ruutio-calendar-edit-button,
.ruutio-calendar-delete-button {
  padding: 8px 16px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  transition: all 0.2s ease;
  min-width: 80px;
}
.ruutio-calendar-view-appointment-button {
  background-color: #28a745;
  color: white;
}
.ruutio-calendar-view-appointment-button:hover {
  background-color: #218838;
}
.ruutio-calendar-edit-button {
  background-color: #007bff;
  color: white;
}
.ruutio-calendar-edit-button:hover {
  background-color: #0056b3;
}
.ruutio-calendar-delete-button {
  background-color: #dc3545;
  color: white;
}
.ruutio-calendar-delete-button:hover {
  background-color: #c82333;
}
@media (max-width: 1020px) {
  .ruutio-calendar-details-actions {
    flex-direction: column;
    gap: 8px;
  }
  .ruutio-calendar-view-appointment-button,
  .ruutio-calendar-edit-button,
  .ruutio-calendar-delete-button {
    width: 100%;
    min-width: unset;
  }
}
#edit-client-container {
  width: 80vw;
}
#edit-client-container form {
  max-width: 80vw;
}
/* Contact form styling */
.edit-contact-form,
.add-contact-form {
  display: grid;
  gap: 1rem;
  max-width: 500px;
  /* Checkbox specific styling */
  /* Address copy checkbox styling */
}
.edit-contact-form label,
.add-contact-form label {
  font-weight: 600;
  color: var(--label-color, #555);
  margin-bottom: 0.25rem;
}
.edit-contact-form input[type="text"],
.add-contact-form input[type="text"],
.edit-contact-form input[type="email"],
.add-contact-form input[type="email"],
.edit-contact-form input[type="tel"],
.add-contact-form input[type="tel"] {
  padding: 0.5rem;
  border: 1px solid var(--border-color, #ddd);
  border-radius: 4px;
  font-size: 1rem;
}
.edit-contact-form .checkbox-container,
.add-contact-form .checkbox-container {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0.5rem 0;
}
.edit-contact-form .checkbox-container input[type="checkbox"],
.add-contact-form .checkbox-container input[type="checkbox"] {
  width: auto !important;
  height: auto !important;
  max-width: 20px;
  max-height: 20px;
  margin: 0;
  cursor: pointer;
}
.edit-contact-form .checkbox-container label,
.add-contact-form .checkbox-container label {
  margin: 0;
  cursor: pointer;
  font-weight: normal;
}
.edit-contact-form .address-copy-container,
.add-contact-form .address-copy-container {
  background: var(--card-bg, #f8f9fa);
  border: 1px solid var(--border-color, #ddd);
  border-radius: 4px;
  padding: 0.75rem;
  margin: 0.5rem 0;
}
.edit-contact-form .address-copy-container .checkbox-container,
.add-contact-form .address-copy-container .checkbox-container {
  margin: 0.25rem 0;
}
.edit-contact-form .address-copy-container .checkbox-container:first-child,
.add-contact-form .address-copy-container .checkbox-container:first-child {
  margin-top: 0;
}
.edit-contact-form .address-copy-container .checkbox-container:last-child,
.add-contact-form .address-copy-container .checkbox-container:last-child {
  margin-bottom: 0;
}
/* Client View Page Styles */
.client-view-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 2rem;
}
.client-view-container .client-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 2px solid var(--border-color);
}
.client-view-container .client-header h1 {
  margin: 0;
  font-size: 2rem;
  font-weight: 600;
}
.client-view-container .client-header .header-actions {
  display: flex;
  gap: 1rem;
  align-items: center;
}
.client-view-container .client-header .header-actions .button {
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.client-view-container .client-header .header-actions .button.secondary {
  background: var(--secondary-bg);
  color: var(--secondary-text);
  border: 1px solid var(--border-color);
}
.client-view-container .client-header .header-actions .button.secondary:hover {
  background: var(--secondary-bg-hover);
}
.client-view-container .client-info-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
}
.client-view-container .client-info-container .info-section {
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 8px;
  padding: 1.5rem;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.client-view-container .client-info-container .info-section h3 {
  margin: 0 0 1rem 0;
  font-size: 1.2rem;
  font-weight: 600;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--border-color);
}
.client-view-container .client-info-container .info-section .info-grid {
  display: grid;
  gap: 1rem;
}
.client-view-container .client-info-container .info-section .info-grid .info-item {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.client-view-container .client-info-container .info-section .info-grid .info-item label {
  font-weight: 600;
  color: var(--label-color);
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.client-view-container .client-info-container .info-section .info-grid .info-item .info-value {
  color: var(--text-color);
  font-size: 0.95rem;
  padding: 0.5rem;
  background: var(--input-bg);
  border: 1px solid var(--border-color);
  border-radius: 4px;
  min-height: 2.5rem;
  display: flex;
  align-items: center;
}
.client-view-container .client-info-container .info-section .info-grid .info-item .info-value.status-active {
  background: var(--success-bg);
  color: var(--success-text);
  border-color: var(--success-border);
}
.client-view-container .client-info-container .info-section .info-grid .info-item .info-value.status-inactive {
  background: var(--warning-bg);
  color: var(--warning-text);
  border-color: var(--warning-border);
}
.client-view-container .client-info-container .info-section.documents-section {
  grid-column: 1 / -1;
}
.client-view-container .client-info-container .info-section.documents-section #client-file-cabinet-container {
  width: 100%;
  overflow-x: auto;
}
.client-view-container .client-info-container .info-section.documents-section #client-file-cabinet-container .folder-management-header {
  margin-bottom: 1rem;
}
.client-view-container .client-info-container .info-section.documents-section #client-file-cabinet-container .folder-section {
  margin-bottom: 1.5rem;
}
.client-view-container .client-info-container .info-section.documents-section #client-file-cabinet-container .file-item {
  padding: 0.75rem;
  margin-bottom: 0.5rem;
}
.loading-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 4rem 2rem;
  text-align: center;
}
.loading-container .loading-spinner {
  width: 50px;
  height: 50px;
  border: 4px solid var(--border-color);
  border-top: 4px solid var(--primary-color);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 1rem;
}
.loading-container p {
  color: var(--secondary-text);
  font-size: 1rem;
}
.error-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 4rem 2rem;
  text-align: center;
}
.error-container h2 {
  color: var(--error-color);
  margin-bottom: 1rem;
}
.error-container p {
  color: var(--text-color);
  margin-bottom: 2rem;
  max-width: 500px;
}
.error-container .button {
  text-decoration: none;
}
@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
/* Responsive Design */
@media (max-width: 820px) {
  .client-view-container {
    padding: 1rem;
  }
  .client-view-container .client-header {
    flex-direction: column;
    gap: 1rem;
    align-items: flex-start;
  }
  .client-view-container .client-header h1 {
    font-size: 1.5rem;
  }
  .client-view-container .client-header .header-actions {
    width: 100%;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
  }
  .client-view-container .client-header .header-actions .button {
    min-width: 120px;
    justify-content: center;
  }
  .client-view-container .client-info-container {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  .client-view-container .client-info-container .info-section {
    padding: 1rem;
  }
  .client-view-container .client-info-container .info-section .info-grid .info-item .info-value {
    word-break: break-word;
    min-height: auto;
    padding: 0.75rem 0.5rem;
  }
  .loading-container {
    padding: 2rem 1rem;
  }
  .error-container {
    padding: 2rem 1rem;
  }
}
/* Dark mode support */
@media (prefers-color-scheme: dark) {
  :root {
    --card-bg: #2a2a2a;
    --input-bg: #363636;
    --border-color: #404040;
    --label-color: #b0b0b0;
    --text-color: #e0e0e0;
    --secondary-text: #a0a0a0;
    --secondary-bg: #363636;
    --secondary-bg-hover: #404040;
    --error-color: #ff6b6b;
    --success-bg: #155724;
    --success-text: #d4edda;
    --success-border: #c3e6cb;
    --warning-bg: #856404;
    --warning-text: #fff3cd;
    --warning-border: #ffeaa7;
  }
}
/* Light mode (default) */
:root {
  --card-bg: #ffffff;
  --input-bg: #f8f9fa;
  --border-color: #e9ecef;
  --label-color: #6c757d;
  --text-color: #495057;
  --secondary-text: #6c757d;
  --secondary-bg: #f8f9fa;
  --secondary-bg-hover: #e9ecef;
  --error-color: #dc3545;
  --success-bg: #d1edff;
  --success-text: #0c5460;
  --success-border: #bee5eb;
  --warning-bg: #fff3cd;
  --warning-text: #856404;
  --warning-border: #ffeaa7;
}
/* File Cabinet Styles */
.file-cabinet-container {
  margin: 20px 0;
  padding: 15px;
  border: 1px solid #e0e0e0;
  border-radius: 8px;
  background-color: #fafafa;
}
.file-cabinet-container h3 {
  margin-top: 0;
  margin-bottom: 15px;
  color: #333;
  font-size: 1.2em;
}
.files-table-container {
  margin-bottom: 15px;
}
.files-table-container .auto-table {
  background-color: white;
  border-radius: 4px;
}
.file-upload-container {
  text-align: center;
  margin: 15px 0;
}
.upload-file-button {
  background-color: #007bff;
  color: white;
  border: none;
  padding: 10px 20px;
  border-radius: 5px;
  cursor: pointer;
  font-size: 14px;
  transition: background-color 0.3s;
}
.upload-file-button:hover {
  background-color: #0056b3;
}
/* Upload Modal Styles */
.upload-modal-container {
  min-width: 400px;
}
.upload-modal-container label {
  display: block;
  margin-bottom: 10px;
  font-weight: bold;
}
.file-input {
  width: 100%;
  padding: 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
  margin-top: 5px;
}
.notes-input {
  width: 100%;
  padding: 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
  margin-top: 5px;
  resize: vertical;
  font-family: inherit;
}
.modal-buttons {
  margin-top: 20px;
  text-align: right;
}
.modal-buttons button {
  padding: 8px 16px;
  margin-left: 10px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 14px;
}
.upload-btn {
  background-color: #28a745;
  color: white;
}
.upload-btn:hover {
  background-color: #1e7e34;
}
.upload-btn:disabled {
  background-color: #6c757d;
  cursor: not-allowed;
}
.cancel-btn {
  background-color: #6c757d;
  color: white;
}
.cancel-btn:hover {
  background-color: #5a6268;
}
/* File Details Modal */
.file-details-container {
  min-width: 400px;
}
.file-info h4 {
  margin-top: 0;
  margin-bottom: 15px;
  color: #333;
}
.file-info p {
  margin: 8px 0;
  line-height: 1.4;
}
.file-info strong {
  font-weight: 600;
  min-width: 100px;
  display: inline-block;
}
.file-detail-buttons {
  margin-top: 20px;
  text-align: right;
}
.file-detail-buttons button {
  padding: 8px 16px;
  margin-left: 10px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 14px;
}
.download-btn {
  background-color: #007bff;
  color: white;
}
.download-btn:hover {
  background-color: #0056b3;
}
.delete-btn {
  background-color: #dc3545;
  color: white;
}
.delete-btn:hover {
  background-color: #c82333;
}
/* Table customizations for file cabinet */
.files-table-container .auto-table-cell {
  vertical-align: middle;
}
.files-table-container .contact-count,
.files-table-container .no-contacts {
  font-style: italic;
  color: #666;
}
/* Deleted Files Section */
.deleted-files-container {
  margin-top: 30px;
  padding-top: 20px;
  border-top: 1px solid #e0e0e0;
}
.deleted-files-container h4 {
  color: #666;
  font-size: 1.1em;
  margin-bottom: 15px;
}
.deleted-files-table-container .auto-table {
  background-color: #f8f9fa;
  opacity: 0.8;
}
.deleted-files-table-container .auto-table-cell {
  color: #6c757d;
}
/* Folder Management Styles */
.folder-management-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 20px;
  padding: 10px;
  background-color: #f8f9fa;
  border-radius: 6px;
  border: 1px solid #e9ecef;
  color: #333;
}
.folders-container {
  display: flex;
  flex-direction: column;
  gap: 15px;
}
.folder-section {
  border: 1px solid #dee2e6;
  border-radius: 8px;
  overflow: hidden;
  background-color: white;
}
.folder-section.unorganized {
  border-color: #ffc107;
  background-color: #fff9c4;
}
.folder-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 15px;
  background-color: #f8f9fa;
  border-bottom: 1px solid #dee2e6;
}
.folder-section.unorganized .folder-header {
  background-color: #fff3cd;
}
.folder-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  color: #495057;
}
.folder-title i {
  color: #6c757d;
  font-size: 1.1em;
}
.folder-name {
  font-size: 1.05em;
}
.file-count {
  font-size: 0.9em;
  color: #6c757d;
  font-weight: normal;
  margin-left: 5px;
}
.folder-actions {
  display: flex;
  gap: 5px;
}
.folder-actions .btn {
  padding: 4px 8px;
  font-size: 0.85em;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.2s;
}
.folder-actions .btn-secondary {
  background-color: #6c757d;
  color: white;
}
.folder-actions .btn-secondary:hover {
  background-color: #5a6268;
}
.folder-actions .btn-warning {
  background-color: #ffc107;
  color: #212529;
}
.folder-actions .btn-warning:hover {
  background-color: #e0a800;
}
.folder-actions .btn-danger {
  background-color: #dc3545;
  color: white;
}
.folder-actions .btn-danger:hover {
  background-color: #c82333;
}
.folder-files {
  padding: 15px;
}
.folder-files .no-files {
  text-align: center;
  color: #6c757d;
  font-style: italic;
  margin: 20px 0;
}
/* File Item Styles */
.file-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px;
  border: 1px solid #e9ecef;
  border-radius: 6px;
  margin-bottom: 8px;
  background-color: #ffffff;
  transition: background-color 0.2s, box-shadow 0.2s;
}
.file-item:hover {
  background-color: #f8f9fa;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.file-item:last-child {
  margin-bottom: 0;
}
.file-info {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 1;
}
.file-icon {
  font-size: 1.5em;
  min-width: 24px;
}
.file-details {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.file-name {
  font-weight: 500;
  color: #333;
  font-size: 1em;
}
.file-meta {
  font-size: 0.85em;
  color: #6c757d;
}
.file-actions {
  display: flex;
  gap: 5px;
}
.file-actions .btn {
  padding: 6px 10px;
  font-size: 0.85em;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.2s;
}
.file-actions .btn-primary {
  background-color: #007bff;
  color: white;
}
.file-actions .btn-primary:hover {
  background-color: #0056b3;
}
.file-actions .btn-danger {
  background-color: #dc3545;
  color: white;
}
.file-actions .btn-danger:hover {
  background-color: #c82333;
}
/* Folder Modal Styles */
.folder-select {
  width: 100%;
  padding: 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
  margin-top: 5px;
  background-color: white;
  font-family: inherit;
}
/* Responsive Design for Folders */
@media (max-width: 820px) {
  .folder-management-header {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }
  .folder-header {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .folder-actions {
    justify-content: center;
  }
  .file-item {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .file-actions {
    justify-content: center;
  }
}
@media (max-width: 480px) {
  .folder-actions .btn,
  .file-actions .btn {
    padding: 8px 12px;
    font-size: 0.9em;
  }
  .file-icon {
    font-size: 1.3em;
  }
  .folder-title {
    font-size: 1em;
  }
}
/* Support Ticket Page Styles */
.support-ticket-page {
  background-color: #f8f9fa;
}
.support-ticket-page .tickets-section {
  margin-top: 50px;
  padding-top: 30px;
  border-top: 2px solid #dee2e6;
  clear: both;
}
.support-ticket-page .tickets-section h2 {
  border-bottom: 2px solid #007bff;
  padding-bottom: 10px;
  margin-bottom: 20px;
}
.support-ticket-page .card {
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  padding: 20px;
  margin-bottom: 20px;
}
.support-ticket-page .info-card {
  background: #f8f9fa;
  border-left: 4px solid #007bff;
}
.support-ticket-page .info-card h3 {
  margin-top: 0;
  color: #007bff;
  font-size: 1.1em;
}
.support-ticket-page .info-card ul {
  margin: 0;
  padding-left: 20px;
}
.support-ticket-page .info-card li {
  margin-bottom: 8px;
  font-size: 0.9em;
}
.support-ticket-page .form-group {
  margin-bottom: 20px;
}
.support-ticket-page .form-group label {
  display: block;
  margin-bottom: 5px;
  font-weight: 600;
}
.support-ticket-page .form-group input,
.support-ticket-page .form-group select,
.support-ticket-page .form-group textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 14px;
  box-sizing: border-box;
}
.support-ticket-page .form-group textarea {
  resize: vertical;
  min-height: 100px;
}
.support-ticket-page .form-actions {
  display: flex;
  gap: 10px;
  margin-top: 30px;
}
.support-ticket-page .button {
  padding: 12px 20px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-weight: 600;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.support-ticket-page .button.primary {
  background: #007bff;
  color: white;
}
.support-ticket-page .button.primary:hover {
  background: #0056b3;
}
.support-ticket-page .button.secondary {
  background: #6c757d;
  color: white;
}
.support-ticket-page .button.secondary:hover {
  background: #545b62;
}
.support-ticket-page .button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.support-ticket-page .status-badge {
  padding: 4px 8px;
  border-radius: 12px;
  font-size: 0.8em;
  font-weight: 600;
  text-transform: uppercase;
}
.support-ticket-page .status-badge.status-open {
  background: #e3f2fd;
  color: #1976d2;
}
.support-ticket-page .status-badge.status-in_progress {
  background: #fff3e0;
  color: #f57c00;
}
.support-ticket-page .status-badge.status-resolved {
  background: #e8f5e8;
  color: #2e7d32;
}
.support-ticket-page .status-badge.status-closed {
  background: #f3e5f5;
  color: #7b1fa2;
}
.support-ticket-page .no-data,
.support-ticket-page .error {
  text-align: center;
  padding: 40px;
  color: #666;
}
.support-ticket-page .error {
  color: #d32f2f;
}
.support-ticket-page .description {
  color: #666;
  font-size: 1.1em;
  margin-bottom: 30px;
}
.support-ticket-page .ticket-details {
  max-width: 100%;
}
.support-ticket-page .ticket-meta {
  background: #f8f9fa;
  padding: 15px;
  border-radius: 4px;
  margin-bottom: 15px;
}
.support-ticket-page .ticket-meta > div {
  margin-bottom: 8px;
}
.support-ticket-page .ticket-description h4 {
  margin-bottom: 10px;
}
.support-ticket-page .ticket-description p {
  line-height: 1.6;
  white-space: pre-wrap;
}
.support-ticket-page .auto-table-container {
  margin-top: 20px;
}
.support-ticket-page .clickable-row {
  cursor: pointer;
}
.support-ticket-page .clickable-row:hover {
  background-color: #f8f9fa;
}
.support-ticket-page .stats-row {
  display: flex;
  gap: 20px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.support-ticket-page .stat-card {
  flex: 1;
  min-width: 200px;
  background: #f8f9fa;
  border-radius: 8px;
  padding: 20px;
  text-align: center;
  border-left: 4px solid #007bff;
}
.support-ticket-page .stat-card .stat-number {
  font-size: 2em;
  font-weight: bold;
  color: #007bff;
  margin-bottom: 5px;
}
.support-ticket-page .stat-card .stat-label {
  color: #666;
  font-size: 0.9em;
  font-weight: 500;
}
.support-ticket-page .tickets-controls {
  margin-bottom: 20px;
}
@media (max-width: 820px) {
  .support-ticket-page .container {
    padding: 10px;
  }
  .support-ticket-page .form-actions {
    flex-direction: column;
  }
  .support-ticket-page .button {
    width: 100%;
    justify-content: center;
  }
  .support-ticket-page .stats-row {
    flex-direction: column;
    gap: 15px;
  }
  .support-ticket-page .stat-card {
    min-width: auto;
  }
}
/* Task Management Styles */
.admin-tasks .view-toggle {
  display: flex;
  gap: 10px;
  margin-bottom: 20px;
  justify-content: center;
}
.admin-tasks .view-toggle .toggle-btn {
  padding: 10px 20px;
  border: 2px solid #007bff;
  background-color: #fff;
  color: #007bff;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.3s ease;
  font-weight: 500;
}
.admin-tasks .view-toggle .toggle-btn:hover {
  background-color: #f8f9fa;
}
.admin-tasks .view-toggle .toggle-btn.active {
  background-color: #007bff;
  color: #fff;
}
.admin-tasks .view-toggle .toggle-btn.active:hover {
  background-color: #0056b3;
}
.admin-tasks .view-toggle .toggle-btn i {
  margin-right: 8px;
}
.admin-tasks .task-type-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 0.8em;
  font-weight: 500;
  text-transform: uppercase;
}
.admin-tasks .task-type-badge.task-type {
  background-color: #e3f2fd;
  color: #1976d2;
  border: 1px solid #bbdefb;
}
.admin-tasks .task-type-badge.support-ticket-type {
  background-color: #fff3e0;
  color: #f57c00;
  border: 1px solid #ffcc02;
}
.admin-tasks .stat-card {
  text-align: center;
  padding: 20px;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  margin-bottom: 20px;
}
.admin-tasks .stat-card .stat-number {
  font-size: 2.5em;
  font-weight: bold;
  color: #007bff;
  margin-bottom: 8px;
}
.admin-tasks .stat-card .stat-label {
  font-size: 0.9em;
  color: #6c757d;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.admin-tasks .filter-controls {
  display: flex;
  gap: 10px;
  align-items: center;
}
.admin-tasks .filter-controls select {
  min-width: 150px;
  padding: 6px 12px;
  border: 1px solid #ced4da;
  border-radius: 4px;
  font-size: 0.9em;
}
.admin-tasks .task-actions {
  display: flex;
  gap: 5px;
}
.admin-tasks .task-actions .button {
  padding: 4px 8px;
  font-size: 0.8em;
}
.admin-tasks .task-actions .button.small {
  min-width: auto;
}
.admin-tasks .status-dropdown,
.admin-tasks .assign-dropdown {
  padding: 4px 8px;
  border: 1px solid #ced4da;
  border-radius: 4px;
  font-size: 0.9em;
  background: white;
  min-width: 120px;
}
.admin-tasks .priority-input {
  width: 60px;
  padding: 4px 8px;
  border: 1px solid #ced4da;
  border-radius: 4px;
  text-align: center;
}
.admin-tasks .task-details .task-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 20px;
  padding: 15px;
  background-color: #f8f9fa;
  border-radius: 4px;
}
@media (max-width: 820px) {
  .admin-tasks .task-details .task-meta {
    grid-template-columns: 1fr;
  }
}
.admin-tasks .task-details .task-meta div {
  font-size: 0.9em;
}
.admin-tasks .task-details .task-meta div strong {
  color: #495057;
}
.admin-tasks .task-details .task-description h4 {
  margin-top: 20px;
  margin-bottom: 10px;
  color: #495057;
}
.admin-tasks .task-details .task-description p {
  line-height: 1.6;
  white-space: pre-wrap;
}
.admin-tasks .task-details .status-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 0.8em;
  font-weight: 500;
  text-transform: uppercase;
}
.admin-tasks .task-details .status-badge.status-open {
  background-color: #d4edda;
  color: #155724;
}
.admin-tasks .task-details .status-badge.status-in_progress {
  background-color: #fff3cd;
  color: #856404;
}
.admin-tasks .task-details .status-badge.status-resolved {
  background-color: #cce5ff;
  color: #004085;
}
.admin-tasks .task-details .status-badge.status-closed {
  background-color: #d1ecf1;
  color: #0c5460;
}
.admin-tasks .edit-task-form .form-group,
.admin-tasks .create-task-form .form-group {
  margin-bottom: 20px;
}
.admin-tasks .edit-task-form .form-group label,
.admin-tasks .create-task-form .form-group label {
  display: block;
  margin-bottom: 5px;
  font-weight: 500;
  color: #495057;
}
.admin-tasks .edit-task-form .form-group input,
.admin-tasks .create-task-form .form-group input,
.admin-tasks .edit-task-form .form-group select,
.admin-tasks .create-task-form .form-group select,
.admin-tasks .edit-task-form .form-group textarea,
.admin-tasks .create-task-form .form-group textarea {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid #ced4da;
  border-radius: 4px;
  font-size: 0.9em;
}
.admin-tasks .edit-task-form .form-group input:focus,
.admin-tasks .create-task-form .form-group input:focus,
.admin-tasks .edit-task-form .form-group select:focus,
.admin-tasks .create-task-form .form-group select:focus,
.admin-tasks .edit-task-form .form-group textarea:focus,
.admin-tasks .create-task-form .form-group textarea:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
.admin-tasks .edit-task-form .form-group textarea,
.admin-tasks .create-task-form .form-group textarea {
  resize: vertical;
  min-height: 100px;
}
.admin-tasks .edit-task-form .form-actions,
.admin-tasks .create-task-form .form-actions,
.admin-tasks .edit-task-form .form-buttons,
.admin-tasks .create-task-form .form-buttons {
  margin-top: 30px;
  display: flex;
  gap: 10px;
  justify-content: flex-end;
}
.admin-tasks .edit-task-form .form-actions .button,
.admin-tasks .create-task-form .form-actions .button,
.admin-tasks .edit-task-form .form-buttons .button,
.admin-tasks .create-task-form .form-buttons .button {
  padding: 10px 20px;
}
@media (max-width: 820px) {
  .admin-tasks .filter-controls {
    flex-direction: column;
    align-items: stretch;
  }
  .admin-tasks .filter-controls select {
    margin-bottom: 10px;
  }
  .admin-tasks .stat-card .stat-number {
    font-size: 2em;
  }
}
/* Home Page Task Styles */
.tasks-container .tasks-section-header {
  font-size: 1.2em;
  color: #333;
  margin: 20px 0 10px 0;
  padding-bottom: 5px;
  border-bottom: 2px solid #e9ecef;
}
.tasks-container .tasks-section-header.collapsible-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  border-bottom: 1px solid #e9ecef;
  padding: 10px 0;
  margin-bottom: 0;
}
.tasks-container .tasks-section-header.collapsible-header:hover {
  background-color: #f8f9fa;
  padding-left: 5px;
  padding-right: 5px;
  border-radius: 4px;
}
.tasks-container .tasks-section-header.collapsible-header .toggle-icon {
  color: #007bff;
  font-size: 0.9em;
  transition: transform 0.3s ease;
}
.tasks-container .active-tasks-section {
  margin-bottom: 30px;
}
.tasks-container .completed-tasks-section {
  margin-bottom: 20px;
}
.tasks-container .completed-tasks-section .completed-tasks {
  transition: all 0.3s ease;
  overflow: hidden;
}
.tasks-container .completed-tasks-section .completed-tasks.collapsed {
  max-height: 0;
  opacity: 0;
  margin-top: 0;
}
.tasks-container .completed-tasks-section .completed-tasks:not(.collapsed) {
  max-height: 1000px;
  opacity: 1;
  margin-top: 10px;
}
.tasks-container .completed-tasks-section .completed-task-item {
  opacity: 0.8;
  border-left: 3px solid #28a745;
}
.tasks-container .completed-tasks-section .completed-task-item .task-status.status-resolved,
.tasks-container .completed-tasks-section .completed-task-item .task-status.status-closed {
  background-color: #d4edda;
  color: #155724;
}
.tasks-container .completed-tasks-section .completed-task-item:hover {
  opacity: 1;
}
.tasks-container .tasks-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.tasks-container .tasks-list .task-item {
  padding: 15px;
  border: 1px solid #e9ecef;
  border-radius: 8px;
  background-color: #fff;
  transition: all 0.2s ease;
  cursor: pointer;
}
.tasks-container .tasks-list .task-item:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  border-color: #007bff;
}
.tasks-container .tasks-list .task-item .task-header {
  display: flex;
  gap: 8px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.tasks-container .tasks-list .task-item .task-content {
  margin-bottom: 10px;
}
.tasks-container .tasks-list .task-item .task-content .task-title {
  margin: 0 0 5px 0;
  font-size: 1.1em;
  color: #333;
}
.tasks-container .tasks-list .task-item .task-content .task-description {
  margin: 0;
  color: #666;
  font-size: 0.9em;
  line-height: 1.4;
}
.tasks-container .tasks-list .task-item .task-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.8em;
  color: #999;
}
.tasks-container .tasks-list .task-item .task-meta .task-created {
  margin: 0;
}
.tasks-container .view-all-tasks {
  text-align: center;
  padding: 15px;
  background-color: #f8f9fa;
  border: 1px dashed #dee2e6;
  border-radius: 8px;
  color: #007bff;
  cursor: pointer;
  margin-top: 20px;
  transition: all 0.2s ease;
}
.tasks-container .view-all-tasks:hover {
  background-color: #e9ecef;
  border-color: #007bff;
}
.tasks-container .no-tasks {
  text-align: center;
  padding: 30px;
  color: #999;
  font-style: italic;
}
.auto-table-row,
.auto-table-cell,
.auto-table-header-cell {
  border-bottom: 1px solid #e0e0e0 !important;
}
.auto-table-cell:has(.signature-image),
.auto-table-cell:has(.signature-container) {
  padding-top: 2px !important;
  padding-bottom: 2px !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin: 0 !important;
  vertical-align: middle !important;
  background-color: #fff !important;
}
.auto-table-cell .signature-image,
.auto-table-cell .signature-container {
  margin: 0 !important;
  padding: 0 !important;
  vertical-align: middle !important;
  /* Also reduce parent cell's padding if possible */
  padding-top: 2px !important;
  padding-bottom: 2px !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
.auto-table-cell .signature-image,
.auto-table-cell .signature-container {
  margin: 0 !important;
  padding: 0 !important;
  vertical-align: middle !important;
}
.auto-table-cell .signature-image img,
.auto-table-cell .signature-container img {
  margin: 0 !important;
  padding: 0 !important;
  max-height: 40px;
  vertical-align: middle;
  display: inline-block;
}
.auto-table-row {
  min-height: 44px;
}
.filter-section label {
  color: #222 !important;
}
.multi-select-container label {
  color: #222 !important;
}
.multi-select-container,
.multi-select-tag-tray span,
.multi-select-tag-tray .tag {
  color: #222 !important;
}
.multi-select-tag-tray span {
  background: #1976d2ff !important;
  color: #fff !important;
  font-weight: 500;
  font-size: 1.1rem;
}
.multi-select-tag-tray span button {
  color: red !important;
  border-radius: 10px;
  background: #fff !important;
  padding: 5px !important;
  min-height: 10px !important;
}

