/*
 * Trix CSS is loaded via CDN in the layout to ensure consistent icons and styles.
 * We intentionally do NOT require it here to avoid duplication with the CDN include.
 */

/*
 * We need to override trix.css’s image gallery styles to accommodate the
 * <action-text-attachment> element we wrap around attachments. Otherwise,
 * images in galleries will be squished by the max-width: 33%; rule.
*/
.trix-content .attachment-gallery > action-text-attachment,
.trix-content .attachment-gallery > .attachment {
  flex: 1 0 33%;
  padding: 0 0.5em;
  max-width: 33%;
}

.trix-content .attachment-gallery.attachment-gallery--2 > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--2 > .attachment, .trix-content .attachment-gallery.attachment-gallery--4 > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--4 > .attachment {
  flex-basis: 50%;
  max-width: 50%;
}

.trix-content action-text-attachment .attachment {
  padding: 0 !important;
  max-width: 100% !important;
}

/* Ensure custom text heading buttons (H2–H4) render clearly */
trix-toolbar .trix-button--text {
  padding: 0 6px;
  min-width: auto;
  font-weight: 600;
}

/* Minimal table styling for ActionText content */
.trix-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 0.5rem 0 1rem;
}

.trix-content th,
.trix-content td {
  border: 1px solid #dee2e6; /* Bootstrap-like neutral */
  padding: 0.5rem;
  vertical-align: top;
}

.trix-content thead th {
  background: #f8f9fa;
  font-weight: 600;
}

.trix-content table caption {
  caption-side: bottom;
  color: #6c757d;
  font-size: 0.875rem;
  padding-top: 0.25rem;
}
/* Accessibility Enhancements for Gogolo */

/* Improved color contrast for text on brand colors */
.tw-text-brand-blue-70 {
  color: rgba(16, 80, 66, 0.85); /* Increased from 0.7 for better contrast */
}

.tw-text-brand-blue-50 {
  color: rgba(16, 80, 66, 0.65); /* Increased from 0.5 for better contrast */
}

/* Improved contrast for badges */
.tw-badge-blue {
  background-color: #105042; /* brand-blue */
  color: white;
  /* Ensure text is readable with sufficient contrast */
  font-weight: 600;
}

.tw-badge-yellow {
  background-color: #107538; /* brand-yellow */
  color: #030040; /* ink-blue - high contrast combination */
  font-weight: 600;
}

/* Improved contrast for alerts */
.tw-alert-info {
  background-color: rgba(16, 80, 66, 0.15); /* Slightly increased opacity */
  border-left-color: #105042; /* brand-blue */
  color: #0a3028; /* Darker shade of brand-blue for better contrast */
}

.tw-alert-warning {
  background-color: rgba(16, 117, 56, 0.15); /* Slightly increased opacity */
  border-left-color: #107538; /* brand-yellow */
  color: #030040; /* ink-blue */
}

/* Improved focus styles for better keyboard navigation */
:focus {
  outline: 3px solid rgba(16, 80, 66, 0.5) !important; /* More visible focus outline */
  outline-offset: 2px !important;
}

/* Improved button focus states */
.tw-btn-primary:focus,
.tw-btn-secondary:focus,
.tw-btn-outline:focus,
.tw-btn-ghost:focus {
  outline: 3px solid rgba(16, 80, 66, 0.5) !important;
  outline-offset: 2px !important;
}

/* Improved link contrast */
.tw-link {
  color: #0a3028; /* Darker shade of brand-blue */
  text-decoration: underline; /* Always show underline for better visibility */
}

.tw-link:hover {
  color: #105042; /* brand-blue */
  text-decoration: underline;
}

/* Improved form label contrast */
.tw-form-label {
  color: #0a3028; /* Darker for better contrast */
  font-weight: 500; /* Medium weight for better visibility */
}

/* Improved placeholder text contrast */
::placeholder {
  color: rgba(16, 80, 66, 0.65) !important; /* Darker than default for better contrast */
}

/* Improved breadcrumb contrast */
.tw-breadcrumbs-link {
  color: #0a3028; /* Darker shade of brand-blue */
  text-decoration: underline; /* Always show underline for better visibility */
}

.tw-breadcrumbs-current {
  color: #4b5563; /* Darker gray for better contrast */
  font-weight: 500; /* Medium weight for better visibility */
}

/* Improved card title contrast */
.tw-card-title {
  color: #0a3028; /* Darker shade of brand-blue */
  font-weight: 600; /* Semibold for better visibility */
}

/* Improved table header contrast */
.tw-table thead th {
  color: #0a3028; /* Darker shade of brand-blue */
  font-weight: 600; /* Semibold for better visibility */
}

/* Improved pagination contrast */
.tw-pagination-link {
  color: #0a3028; /* Darker for better contrast */
}

/* Improved tab contrast */
.tw-tab {
  color: #4b5563; /* Darker gray for better contrast */
}

.tw-tab-active {
  color: #0a3028; /* Darker shade of brand-blue */
  font-weight: 500; /* Medium weight for better visibility */
}

/* Improved tooltip contrast */
.tw-tooltip-text {
  background-color: #030040; /* ink-blue for better contrast */
  color: white;
  font-weight: 500; /* Medium weight for better visibility */
}

/* Improved dropdown contrast */
.tw-dropdown-item {
  color: #0a3028; /* Darker for better contrast */
}

/* Improved button contrast for small text */
.tw-btn-sm {
  font-weight: 500; /* Medium weight for better visibility of small text */
}

/* Improved alert title contrast */
.tw-alert-title {
  font-weight: 600; /* Semibold for better visibility */
  font-size: 1.05rem; /* Slightly larger for better readability */
}

/* Skip to content link for keyboard users */
.skip-to-content {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.skip-to-content:focus {
  position: fixed;
  top: 0;
  left: 0;
  width: auto;
  height: auto;
  padding: 10px;
  background-color: white;
  z-index: 9999;
  color: #0a3028;
  font-weight: 600;
  outline: 3px solid #105042;
}

/* High contrast mode adjustments */
@media (forced-colors: active) {
  .tw-btn-primary,
  .tw-btn-secondary,
  .tw-btn-outline,
  .tw-btn-ghost {
    forced-color-adjust: none;
    border: 2px solid currentColor;
  }
  
  .tw-card {
    forced-color-adjust: none;
    border: 1px solid currentColor;
  }
}
/* Admin Dashboard Styles */

/* Layout and Structure */
.admin-layout {
  min-height: 100vh;
  background-color: #f8f9fa;
}

/* Sidebar Styles moved to custom.css for unified styling */

/* Using common navbar styling from application.css */

/* Main Content Area */
main {
  padding-top: 1.5rem;
}

/* Card Styles */
.admin-layout .card {
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
  border-radius: 0.5rem;
  border: none;
  margin-bottom: 1.5rem;
  overflow: hidden;
}

.admin-layout .card-header {
  background-color: #fff;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  padding: 1rem;
  font-weight: 600;
}

/* Table Styles */
.admin-layout .table {
  margin-bottom: 0;
}

.admin-layout .table th {
  border-top: none;
  border-bottom: 2px solid #dee2e6;
  background-color: #f8f9fa;
  font-weight: 600;
  padding: 0.75rem 1rem;
}

.admin-layout .table td {
  padding: 0.75rem 1rem;
  vertical-align: middle;
}

.admin-layout .table tbody tr:hover {
  background-color: rgba(0, 123, 255, 0.04);
}

/* Stats Cards */
.admin-layout .stats-card {
  transition: transform 0.3s;
  border-radius: 0.5rem;
  overflow: hidden;
}

.admin-layout .stats-card:hover {
  transform: translateY(-5px);
}

.admin-layout .stats-card .card-body {
  padding: 1.5rem;
}

.admin-layout .stats-card .stats-icon {
  font-size: 2rem;
  opacity: 0.8;
}

/* Form Controls */
.admin-layout .form-control,
.admin-layout .form-select {
  border-radius: 0.375rem;
  padding: 0.5rem 0.75rem;
  border: 1px solid #ced4da;
}

.admin-layout .form-control:focus,
.admin-layout .form-select:focus {
  border-color: #86b7fe;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

/* Buttons - Admin-specific styling */
.admin-layout .btn {
  border-radius: 0.375rem;
  padding: 0.5rem 1rem;
  font-weight: 500;
}

/* Primary button styling moved to custom.css */

/* Pagination */
.admin-layout .pagination {
  margin-bottom: 0;
}

/* Responsive adjustments */
@media (max-width: 767.98px) {
  .sidebar {
    padding-top: 1rem;
    margin-bottom: 1rem;
  }
  
  main {
    padding-top: 1rem;
  }
}

.admin-layout .activity-timeline {
  position: relative;
  padding-left: 45px;
}

.admin-layout .activity-timeline::before {
  content: '';
  position: absolute;
  left: 20px;
  top: 0;
  height: 100%;
  width: 2px;
  background-color: #e9ecef;
}

.admin-layout .activity-item {
  position: relative;
  padding-bottom: 1.5rem;
}

.admin-layout .activity-item::before {
  content: '';
  position: absolute;
  left: -30px;
  top: 0;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background-color: #007bff;
  border: 2px solid #fff;
}

.admin-layout .activity-item.danger::before {
  background-color: #dc3545;
}

.admin-layout .activity-item.warning::before {
  background-color: #ffc107;
}

.admin-layout .activity-item.success::before {
  background-color: #28a745;
}

/* Dashboard cards */
.admin-layout .dashboard-card {
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  transition: all 0.3s ease;
}

.admin-layout .dashboard-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
}

/* Custom scrollbar for admin panels */
.admin-layout .custom-scrollbar {
  max-height: 400px;
  overflow-y: auto;
  scrollbar-width: thin;
}

.admin-layout .custom-scrollbar::-webkit-scrollbar {
  width: 6px;
}

.admin-layout .custom-scrollbar::-webkit-scrollbar-track {
  background: #f1f1f1;
}

.admin-layout .custom-scrollbar::-webkit-scrollbar-thumb {
  background: #888;
  border-radius: 10px;
}

.admin-layout .custom-scrollbar::-webkit-scrollbar-thumb:hover {
  background: #555;
}

/* Audit log styles */
.admin-layout .audit-log-filters {
  background-color: #f8f9fa;
  padding: 1rem;
  border-radius: 0.5rem;
  margin-bottom: 1.5rem;
}

.admin-layout .audit-log-item {
  border-left: 4px solid #6c757d;
  padding: 0.75rem 1rem;
  margin-bottom: 0.5rem;
  background-color: #f8f9fa;
}

.admin-layout .audit-log-item.login {
  border-left-color: #28a745;
}

.admin-layout .audit-log-item.logout {
  border-left-color: #6c757d;
}

.admin-layout .audit-log-item.failed_login {
  border-left-color: #dc3545;
}

.admin-layout .audit-log-item.suspicious_activity {
  border-left-color: #ffc107;
}

.admin-layout .audit-log-item.admin_action {
  border-left-color: #007bff;
}
/* 
 * Simple Aspect Ratio Utilities
 * Provides consistent aspect ratio control for card images
 */

/* Base aspect ratio container */
.aspect-ratio-container {
  position: relative;
  width: 100%;
  overflow: hidden;
  background-color: #f8f9fa;
  border-top-left-radius: 0.375rem;
  border-top-right-radius: 0.375rem;
}

/* Modern browsers - using aspect-ratio property */
.aspect-ratio-4-3 {
  aspect-ratio: 4/3;
}

/* Fallback for older browsers */
@supports not (aspect-ratio: 4/3) {
  .aspect-ratio-4-3::before {
    content: "";
    display: block;
    padding-top: 75%; /* 3/4 = 0.75 = 75% */
  }
  
  .aspect-ratio-4-3 > img,
  .aspect-ratio-4-3 > div {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
}

/* Image content styling */
.aspect-ratio-content {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* Simple placeholder for missing images */
.aspect-ratio-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background-color: #f8f9fa;
  color: #6c757d;
}

/* Simple placeholder icon */
.aspect-ratio-placeholder svg {
  width: 40px;
  height: 40px;
  opacity: 0.7;
}

/* Override fixed height classes when using aspect ratio */
.listing-item .aspect-ratio-4-3 img.h-176,
.listing-item .aspect-ratio-4-3 div.h-176 {
  height: 100% !important;
}
/* Audit Logs Styling */

/* Table styling */
.audit-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}

.audit-table th {
  background-color: #f8f9fa;
  border-bottom: 2px solid #dee2e6;
  padding: 12px 15px;
  font-weight: 600;
  text-align: left;
  color: #495057;
}

.audit-table td {
  padding: 12px 15px;
  border-bottom: 1px solid #e9ecef;
  vertical-align: middle;
}

.audit-table tbody tr:hover {
  background-color: rgba(0, 123, 255, 0.04);
}

/* Activity type badges */
.activity-badge {
  display: inline-block;
  padding: 0.35em 0.65em;
  font-size: 0.75em;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: 0.25rem;
  color: #fff;
}

.activity-badge-login {
  background-color: #0d6efd;
}

.activity-badge-logout {
  background-color: #6c757d;
}

.activity-badge-failed_login, 
.activity-badge-login_failure {
  background-color: #dc3545;
}

.activity-badge-suspicious_activity {
  background-color: #fd7e14;
}

.activity-badge-admin_action {
  background-color: #6f42c1;
}

.activity-badge-profile_update {
  background-color: #20c997;
}

.activity-badge-password_change {
  background-color: #0dcaf0;
}

.activity-badge-account_creation {
  background-color: #198754;
}

/* Pagination styling */
.pagination {
  display: flex;
  justify-content: center;
  padding-left: 0;
  list-style: none;
  border-radius: 0.25rem;
}

.pagination .page-item {
  margin: 0 2px;
}

.pagination .page-link {
  position: relative;
  display: block;
  padding: 0.5rem 0.75rem;
  margin-left: -1px;
  line-height: 1.25;
  color: #0d6efd;
  background-color: #fff;
  border: 1px solid #dee2e6;
  text-decoration: none;
}

.pagination .page-item.active .page-link {
  z-index: 3;
  color: #fff;
  background-color: #0d6efd;
  border-color: #0d6efd;
}

.pagination .page-item.disabled .page-link {
  color: #6c757d;
  pointer-events: none;
  cursor: auto;
  background-color: #fff;
  border-color: #dee2e6;
}

.pagination .page-link:hover {
  z-index: 2;
  color: #0a58ca;
  text-decoration: none;
  background-color: #e9ecef;
  border-color: #dee2e6;
}

/* Filter card styling */
.filter-card {
  margin-bottom: 1.5rem;
  border: none;
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}

.filter-card .card-header {
  background-color: #f8f9fa;
  border-bottom: 1px solid #dee2e6;
  padding: 0.75rem 1.25rem;
}

/* Action buttons */
.action-btn {
  padding: 0.25rem 0.5rem;
  font-size: 0.875rem;
  border-radius: 0.2rem;
}

/* Custom scrollbar for tables */
.table-responsive {
  max-height: 600px;
  overflow-y: auto;
}

.table-responsive::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

.table-responsive::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 10px;
}

.table-responsive::-webkit-scrollbar-thumb {
  background: #c1c1c1;
  border-radius: 10px;
}

.table-responsive::-webkit-scrollbar-thumb:hover {
  background: #a8a8a8;
}
/* Kyasina Button Styles */

/* Primary Button - Deep Blue */
.tw-btn-primary {
  background-color: #105042; /* tw-bg-brand-blue */
  color: white;
  font-family: 'Inter', system-ui, sans-serif; /* tw-font-body */
  font-weight: 500; /* tw-font-medium */
  padding: 0.5rem 1rem; /* tw-py-2 tw-px-4 */
  border-radius: 0.375rem; /* tw-rounded-md */
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* tw-shadow-sm */
  transition: background-color 0.2s;
}

.tw-btn-primary:hover {
  background-color: rgba(16, 80, 66, 0.9); /* hover:tw-bg-brand-blue/90 */
}

.tw-btn-primary:focus {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #105042; /* focus:tw-ring-2 focus:tw-ring-offset-2 focus:tw-ring-brand-blue */
}

/* Secondary Button - Ink Blue */
.tw-btn-secondary {
  background-color: #030040; /* tw-bg-ink-blue */
  color: white;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  transition: background-color 0.2s;
}

.tw-btn-secondary:hover {
  background-color: rgba(3, 0, 64, 0.9); /* hover:tw-bg-ink-blue/90 */
}

.tw-btn-secondary:focus {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #030040;
}

/* Accent Button - Yellow (use sparingly, 10% rule) */
.tw-btn-accent {
  background-color: #107538; /* tw-bg-brand-yellow */
  color: #030040; /* tw-text-ink-blue */
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  transition: background-color 0.2s;
}

.tw-btn-accent:hover {
  background-color: rgba(16, 117, 56, 0.9); /* hover:tw-bg-brand-yellow/90 */
}

.tw-btn-accent:focus {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #107538;
}

/* Outline Button - Deep Blue */
.tw-btn-outline {
  background-color: transparent;
  border: 1px solid #105042;
  color: #105042;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  transition: background-color 0.2s;
}

.tw-btn-outline:hover {
  background-color: rgba(16, 80, 66, 0.05); /* hover:tw-bg-brand-blue/5 */
}

.tw-btn-outline:focus {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #105042;
}

/* Ghost Button */
.tw-btn-ghost {
  background-color: transparent;
  color: #105042;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  transition: background-color 0.2s;
}

.tw-btn-ghost:hover {
  background-color: rgba(16, 80, 66, 0.05);
}

.tw-btn-ghost:focus {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px rgba(16, 80, 66, 0.2);
}

/* Danger Button */
.tw-btn-danger {
  background-color: #dc2626; /* tw-bg-red-600 */
  color: white;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  transition: background-color 0.2s;
}

.tw-btn-danger:hover {
  background-color: #b91c1c; /* hover:tw-bg-red-700 */
}

.tw-btn-danger:focus {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #ef4444; /* focus:tw-ring-red-500 */
}

/* Success Button */
.tw-btn-success {
  background-color: #16a34a; /* tw-bg-green-600 */
  color: white;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  transition: background-color 0.2s;
}

.tw-btn-success:hover {
  background-color: #15803d; /* hover:tw-bg-green-700 */
}

.tw-btn-success:focus {
  outline: none;
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #22c55e; /* focus:tw-ring-green-500 */
}

/* Small Button */
.tw-btn-sm {
  padding: 0.25rem 0.75rem;
  font-size: 0.875rem;
}

/* Large Button */
.tw-btn-lg {
  padding: 0.75rem 1.5rem;
  font-size: 1.125rem;
}

/* Full Width Button */
.tw-btn-block {
  width: 100%;
}

/* Disabled Button */
.tw-btn-disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Icon Button */
.tw-btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Icon Left */
.tw-btn-icon-left > svg,
.tw-btn-icon-left > i {
  margin-right: 0.5rem;
}

/* Icon Right */
.tw-btn-icon-right > svg,
.tw-btn-icon-right > i {
  margin-left: 0.5rem;
}

/* Rounded Button */
.tw-btn-rounded {
  border-radius: 9999px;
}
/* Card layout fixes for mobile responsiveness */

/* Card grid alignment */
.row-cols-2 > .col.listing-item {
  padding-right: 0.5rem;
  padding-left: 0.5rem;
  margin-bottom: 1rem;
}

/* Card container */
.listing-item {
  display: flex;
  break-inside: avoid;
}

/* Card structure */
.card {
  width: 100%;
  overflow: hidden;
}

/* Image container */
.card-img-container {
  position: relative;
  width: 100%;
  height: 176px;
  overflow: hidden;
}

/* Card image top */
.card-img-top {
  width: 100%;
  height: 176px !important;
  object-fit: cover;
}

/* Fallback for missing images */
.card-img-top.bg-light {
  width: 100%;
  height: 176px !important;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Property details container */
.property-details {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  margin-top: auto;
}

/* Property detail item */
.property-details span {
  display: flex;
  align-items: center;
  white-space: nowrap;
}

/* Card hover effects */
.hover-lift {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.hover-lift:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 20px rgba(0,0,0,0.1) !important;
}

/* Media query fixes */
@media (max-width: 575.98px) {
  .row-cols-2 > .col.listing-item {
    padding-right: 0.25rem;
    padding-left: 0.25rem;
    margin-bottom: 0.5rem;
  }
  
  .card-img-top,
  .card-img-container,
  .card-img-top.bg-light {
    height: 140px !important;
  }
  
  .card-body {
    padding: 0.75rem !important;
  }
  
  .card-title {
    font-size: 0.875rem !important;
  }
  
  .property-details {
    gap: 0.25rem 0.75rem;
  }
  
  .property-details span {
    font-size: 0.75rem;
  }
}

/* Make sure lazily loaded images maintain structure */
.lazy-image {
  opacity: 0.2;
  transition: opacity 0.3s ease;
  min-height: 100px;
}

.lazy-image.loaded {
  opacity: 1;
}
/* Cards - production styles only */

/* Subtle Shadow Defaults (Project-wide) */
.shadow-sm,
:root {
  /* Make Bootstrap's small shadow lighter app-wide */
  --bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, 0.06);
}
.card {
  box-shadow: var(--bs-box-shadow-sm);
}

/* If components used Bootstrap .shadow or .shadow-lg on cards, normalize down */
.card.shadow,
.card.shadow-lg {
  box-shadow: var(--bs-box-shadow-sm) !important;
}

/* Slightly lighter header background for a cleaner look */
.card > .card-header {
  background-color: #ffffff;
}
/* CMS Module Styles */

/* Content Block Styles */
.content-block {
  position: relative;
  margin-bottom: 2rem;
}

/* Drag and Drop Styles */
.content-blocks-list .content-block {
  transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.content-blocks-list .handle {
  cursor: grab;
}

.content-blocks-list .handle:active {
  cursor: grabbing;
}

.sortable-ghost {
  opacity: 0.5;
  background-color: #f8f9fa;
  border: 2px dashed #dee2e6;
}

.sortable-chosen {
  background-color: #f8f9fa;
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  z-index: 1000;
}

.sortable-drag {
  opacity: 0.8;
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

/* Content Block Type Specific Styles */
.content-block-text .content-preview {
  max-height: 300px;
  overflow-y: auto;
}

.content-block-image .image-preview {
  text-align: center;
}

.content-block-video .video-preview {
  max-width: 100%;
}

.content-block-embed .embed-container {
  overflow: hidden;
}

/* Map Container */
.map-container {
  min-height: 300px;
  width: 100%;
  position: relative;
  z-index: 1;
}

/* Frontend CMS Page Styles */
.cms-page .featured-image img {
  max-width: 100%;
  height: auto;
}

.cms-content {
  margin-top: 2rem;
}

.cms-content .content-block {
  margin-bottom: 3rem;
}

/* Responsive styles */
@media (max-width: 768px) {
  .map-container {
    height: 250px;
  }
  
  .video-block .ratio {
    --bs-aspect-ratio: 75%;
  }
}

/* Mautic Form Styling */
.mautic-form-container {
  background-color: #f8f9fa;
  border-radius: 0.25rem;
  padding: 1.5rem;
  margin-bottom: 1.5rem;
}

/* Image Block Caption */
.image-block figcaption {
  text-align: center;
  margin-top: 0.5rem;
  font-style: italic;
}

/* Embed Block */
.embed-block iframe {
  max-width: 100%;
}
/* Components stylesheet intentionally minimal in production.
 * Bootstrap 5 provides core component styles; any project-specific
 * component CSS should live in targeted files. */

















/* Brand Colors */
:root {
  --brand-yellow: #EDB402;
  --brand-blue-dark: #012F58;
  --brand-blue-main: #003CA0;
  --brand-blue-light: #4F90FF;
}

/* Bootstrap 5 CSS variable overrides (for buttons, links, etc.) */
:root {
  --bs-primary: var(--brand-blue-main);
  --bs-secondary: var(--brand-blue-light);
  --bs-warning: var(--brand-yellow);
}

body {
  background-color: #f8f9fa;
  color: var(--brand-blue-dark);
  overflow-x: hidden;
}

/* Main content wrapper responsive widths */
.main-content-wrapper {
  width: 80%;
  max-width: 100%;
  margin: 0 auto;
  padding: 0 1rem;
}

/* Tablet and mobile responsive widths */
@media (max-width: 991.98px) {
  .main-content-wrapper {
    width: 90%;
  }
}

@media (max-width: 576px) {
  .main-content-wrapper {
    width: 90%;
    padding: 0 0.75rem;
  }
}

/* Navbar section layout */
.navbar-sections {
  display: flex;
  width: 100%;
  align-items: stretch;
  justify-content: space-between;
  gap: 0;
  position: relative;
}

.navbar-logo-section {
  flex: 0 0 25%;
  max-width: 25%;
  min-width: 0;
}

.navbar-search-section {
  flex: 0 0 35%;
  max-width: 35%;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding-right: 0;
}

.navbar-search-section form {
  width: 100%;
  margin-left: auto;
}

.navbar-search-section .input-group {
  width: 100%;
}

@media (min-width: 992px) {
  .navbar-search-section {
    margin-right: -10px; /* visually tuck search into links */
  }
}

@media (max-width: 991.98px) {
  .navbar-search-section {
    display: none !important;
  }
  .navbar-mobile-icons {
    display: flex !important;
    align-items: center;
    gap: 0.5rem;
  }
  .navbar-mobile-search {
    display: none;
    width: 100vw;
    max-width: 100vw;
    position: absolute;
    left: 0;
    top: 56px;
    z-index: 1051;
    background: #fff;
    box-shadow: 0 4px 16px rgba(0,0,0,0.07);
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #e0e0e0;
    margin: 0;
  }
  .navbar-mobile-search.show {
    display: flex !important;
  }
  .navbar-search-section form {
    margin-left: 0;
  }
}

.navbar-mobile-icons {
  display: none;
}

.navbar-mobile-search input.form-control {
  flex: 1 1 auto;
}

.navbar-mobile-search .btn {
  min-width: 48px;
}

.navbar-links-section {
  flex: 0 0 40%;
  max-width: 40%;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

@media (max-width: 991.98px) {
  .navbar-sections {
    flex-direction: column;
    gap: 0;
  }
  .navbar-logo-section,
  .navbar-search-section,
  .navbar-links-section {
    flex: 1 1 100%;
    max-width: 100%;
    width: 100%;
    margin-bottom: 0.5rem;
  }
  .navbar-links-section {
    justify-content: flex-start;
  }
}

.navbar {
  background-color: var(--brand-blue-dark) !important;
  min-height: 70px;
  font-size: 1.25rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.navbar .navbar-brand, .navbar .navbar-nav .nav-link {
  font-size: 1.05rem;
  line-height: 1.8rem;
}

/* Main menu links use brand yellow */
.navbar-nav .nav-link {
  color: var(--brand-yellow) !important;
  font-weight: 600;
  background: none !important;
  border: none !important;
  transition: color 0.2s, border 0.2s;
}

.navbar-nav .nav-link:hover, .navbar-nav .nav-link:focus {
  color: #fff !important;
  background: none !important;
}

.navbar-nav .nav-link.active {
  color: #fff !important;
  background: none !important;
  border-bottom: 2px solid var(--brand-blue-light) !important;
  border-left: 2px solid var(--brand-blue-light) !important;
  border-radius: 0;
}

/* On mobile, menu appears at right but text is left-aligned */
@media (max-width: 991.98px) {
  .navbar-collapse {
    justify-content: flex-end !important;
  }
  .navbar-nav {
    align-items: flex-start !important;
    text-align: left !important;
  }
}


.navbar-logo {
  height: 100%;
  max-height: 70px;
  width: auto;
  padding: 0 !important;
  margin: 0 !important;
  display: block;
  object-fit: contain;
}

.search-btn {
  background: var(--brand-yellow) !important;
  color: var(--brand-blue-dark) !important;
  border: none !important;
  padding: 0.45rem 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  border-top-right-radius: 0.375rem;
  border-bottom-right-radius: 0.375rem;
}

.input-group .form-control {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  margin-right: 0;
}

.search-btn .bi-search {
  font-size: 1.3rem;
  vertical-align: middle;
}

/* Adjust input height to match button */
.navbar form .form-control {
  min-width: 0;
  height: calc(2.25rem + 2px);
  font-size: 1rem;
}


/* Sidebar - Complete Styling */
.sidebar {
  position: relative;
  z-index: 100;
  padding: 0;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  overflow-y: auto;
  background-color: #e2e4e7 !important; /* soft silver/grey */
  color: #012F58 !important;
}

.sidebar .nav-link {
  padding: 0.75rem 1rem;
  border-radius: 0;
  border-left: 3px solid transparent;
  font-weight: 500;
  display: flex;
  align-items: center;
}

.sidebar a {
  color: #003CA0 !important;
}

.sidebar a.active, .sidebar a:focus, .sidebar a:hover {
  color: #4F90FF !important;
  background-color: #e6e8eb !important;
}

.sidebar .nav-link i {
  margin-right: 0.5rem;
  width: 20px;
  text-align: center;
  font-size: 12px;
}

.navbar .navbar-brand, .navbar-nav .nav-link {
  color: #fff !important;
}

.btn-primary {
  background-color: var(--brand-blue-main) !important;
  border-color: var(--brand-blue-main) !important;
}

.btn-primary:hover, .btn-primary:focus {
  background-color: var(--brand-blue-light) !important;
  border-color: var(--brand-blue-light) !important;
}

/* Map Styles */
.map-container {
  height: 450px !important;
  width: 100% !important;
  position: relative !important;
  z-index: 5 !important;
  visibility: visible !important;
  display: block !important;
  background-color: #f8f9fa !important;
  border-radius: 8px !important;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1) !important;
  overflow: hidden !important;
  margin-bottom: 20px !important;
}

/* Responsive map heights */
@media (max-width: 768px) {
  .map-container {
    height: 350px !important;
  }
}

@media (max-width: 576px) {
  .map-container {
    height: 300px !important;
  }
}

/* Map loading indicator */
.map-loading {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1000;
  background-color: rgba(255, 255, 255, 0.8);
  padding: 10px 20px;
  border-radius: 4px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}

/* Map error message */
.map-error-message {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 1000;
  background-color: rgba(255, 0, 0, 0.7);
  color: white;
  padding: 10px;
  border-radius: 5px;
  max-width: 80%;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
}

.btn-warning, .badge-warning {
  background-color: var(--brand-yellow) !important;
  color: #012F58 !important;
  border-color: var(--brand-yellow) !important;
}

a {
  color: var(--brand-blue-main);
}

a:hover {
  color: var(--brand-blue-light);
}

/* Minimal use of yellow for highlights */
.highlight, .text-warning {
  color: var(--brand-yellow) !important;
}

/* Example card styling */
.card {
  background-color: #f5f6fa;
  border-color: #d9dce0;
}

.card-header {
  background-color: var(--brand-blue-main);
  color: #fff;
}

/* Fix: when card headers use bg-light, ensure readable dark text on light background */
.card-header.bg-light,
.card .card-header.bg-light {
  background-color: #f8f9fa !important;
  color: var(--brand-blue-dark) !important;
  border-bottom: 1px solid #dee2e6;
}

/* Add more customizations as needed */

/* Map container styling */

.map-wrapper {
  width: 100%;
  position: relative;
  overflow: visible;
  height: 450px; /* Set explicit height */
  display: block;
}

/* Ensure the shared map container used in forms establishes a stacking context
   that does not overlay neighboring form fields */
.form-map-container {
  position: relative;
  z-index: 0;
}

.map-container {
  width: 100%;
  height: 100%; /* Use 100% of parent height */
  position: relative;
  overflow: hidden;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  margin-bottom: 20px;
  display: block; /* Ensure display block */
  min-height: 450px; /* Minimum height */
  background-color: #f8f8f8; /* Background color to see container */
}

.map-content {
  width: 100% !important; /* Force 100% width */
  height: 100% !important; /* Force 100% height */
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  z-index: 5; /* Increased z-index to ensure visibility */
  max-width: 100% !important; /* Prevent overflow */
  max-height: 100% !important; /* Prevent overflow */
  display: block !important; /* Ensure display block */
  min-height: 450px; /* Minimum height */
}

/* Override any Leaflet inline styles that might cause overflow */
/* IMPORTANT: Keep the Leaflet container positioned relatively so it doesn't
   escape its parent and overlay other inputs on create/edit pages. */
.leaflet-container {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  position: relative !important; /* was absolute */
  z-index: 0 !important; /* keep below controls and outside UI */
  overflow: hidden !important;
  min-height: 450px !important;
}

/* Fix Leaflet controls */
.leaflet-control-container {
  position: absolute;
  z-index: 10;
}

.leaflet-control-container .leaflet-top,
.leaflet-control-container .leaflet-bottom {
  z-index: 10 !important;
}

.leaflet-control-zoom {
  visibility: visible !important;
  display: block !important;
}

/* Fix Leaflet popups */
.leaflet-popup {
  z-index: 15 !important;
}

/* Fix Leaflet tiles to prevent overflow */
.leaflet-tile-container {
  width: 100% !important;
  height: 100% !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  visibility: visible !important;
  z-index: 2 !important;
  overflow: hidden !important;
}

/* Fix Leaflet pane */
.leaflet-map-pane {
  z-index: 10 !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  width: 100% !important;
  height: 100% !important;
  visibility: visible !important;
}

/* Fix for map tiles */
.leaflet-tile {
  visibility: visible !important;
}

/* Responsive adjustments for the map */
@media (max-width: 767.98px) {
  .map-container {
    margin-top: 1.5rem;
    height: 350px;
  }
}

/* Uploader styles removed (legacy FilePond/custom uploaders) */

@import "navbar-mobile.css";

@import "offcanvas-mobile.css";

/* Footer */
.footer-top {
  color: var(--brand-blue-dark);
  position: relative;
}

.footer-top::before {
  content: "";
  position: absolute;
  left: 0;
  top: -20px; /* sit just above footer */
  width: 100%;
  height: 20px;
  pointer-events: none;
  /* fade upward from subtle shadow to transparent */
  background: linear-gradient(to top, rgba(0, 0, 0, 0.08), rgba(0, 0, 0, 0));
  /* taper at left/right edges */
  -webkit-mask-image: linear-gradient(to right, rgba(0,0,0,0), rgba(0,0,0,1) 12%, rgba(0,0,0,1) 88%, rgba(0,0,0,0));
  mask-image: linear-gradient(to right, rgba(0,0,0,0), rgba(0,0,0,1) 12%, rgba(0,0,0,1) 88%, rgba(0,0,0,0));
}

.footer-top h6 {
  color: var(--brand-blue-dark);
}

.footer-top a.text-reset {
  color: var(--brand-blue-main) !important;
}

.footer-top a.text-reset:hover {
  color: var(--brand-blue-light) !important;
}

/* Footer heading accent */
.footer-top h6 {
  position: relative;
  display: inline-block;
  letter-spacing: 0.02em;
}

.footer-top h6::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -6px;
  width: 36px;
  height: 3px;
  background-color: var(--brand-yellow);
  border-radius: 2px;
}

/* Animated underline for links */
.footer-top a.text-reset {
  position: relative;
  text-decoration: none;
}

.footer-top a.text-reset::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 100%;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 160ms ease-in-out;
  opacity: 0.6;
}

.footer-top a.text-reset:hover::after {
  transform: scaleX(1);
}

/* Column separators on md+ */
@media (min-width: 768px) {
  .footer-col {
    position: relative;
    padding-left: 1rem;
  }
  .footer-col:not(:first-child) {
    border-left: 1px solid #eceff3;
  }
}

/* Tighter list spacing */
.footer-top ul li {
  margin-bottom: 0.35rem;
}

/* Reduce spacing under footer area */
footer.text-muted.small {
  margin-top: 0.75rem !important; /* was mt-3 */
  padding-top: 0.5rem !important; /* was pt-2/3 */
}

/* Breadcrumbs */
nav[aria-label="breadcrumb"] .breadcrumb {
  background: transparent;
  padding: 0;
  margin: 0;
  gap: 0.25rem;
  font-size: .9rem;
}

nav[aria-label="breadcrumb"] .breadcrumb-item + .breadcrumb-item::before {
  content: "›"; /* chevron divider */
  color: #9aa6b2;
  padding-right: 0.25rem;
}

nav[aria-label="breadcrumb"] .breadcrumb-item a {
  color: var(--brand-blue-main);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 160ms ease, border-color 160ms ease;
}

nav[aria-label="breadcrumb"] .breadcrumb-item a:hover {
  color: var(--brand-blue-light);
  border-color: currentColor;
}

nav[aria-label="breadcrumb"] .breadcrumb-item.active {
  color: var(--brand-blue-dark);
  font-weight: 600;
  max-width: 50vw;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}


/* Filter components styling for better mobile experience */

/* Base filter card styling */
.filter-card {
  margin-bottom: 1.5rem;
  border-radius: 0.5rem;
  overflow: hidden;
}

.filter-card .card-header {
  padding: 0.75rem 1rem;
  background-color: rgba(0, 0, 0, 0.03);
  border-bottom: 1px solid rgba(0, 0, 0, 0.125);
  display: flex;
  align-items: center;
}

.filter-card .card-header .btn-link {
  padding: 0;
  color: inherit;
  text-decoration: none;
}

/* Spacing improvements for mobile */
@media (max-width: 767.98px) {
  .filter-card .card-header {
    padding: 0.625rem 0.875rem;
  }
  
  .filter-card .card-body {
    padding: 0.75rem;
  }
  
  .filter-card .form-select {
    font-size: 0.875rem;
    padding: 0.25rem 0.5rem;
    height: auto;
  }
  
  .filter-card .form-label {
    margin-bottom: 0.25rem;
    font-size: 0.75rem;
  }
  
  .filter-card .btn-sm {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
  }
}

/* Chevron animation for filter toggles */
.filter-card .chevron-toggle {
  transition: transform 0.2s;
}

.filter-card .collapsed .chevron-toggle {
  transform: rotate(-90deg);
}

/* Filter buttons styling */
.filter-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.filter-btn {
  padding: 0.375rem 0.75rem;
  font-size: 0.875rem;
  border-radius: 1rem;
  background-color: #f8f9fa;
  border: 1px solid #dee2e6;
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  transition: all 0.15s ease-in-out;
}

.filter-btn:hover {
  background-color: #e9ecef;
}

.filter-btn.active {
  background-color: #0d6efd;
  color: white;
  border-color: #0d6efd;
}

.filter-btn .close-icon {
  margin-left: 0.25rem;
  font-size: 0.75rem;
}

/* Map toggle styling */
.map-toggle-container {
  display: flex;
  align-items: center;
}

.map-toggle-label {
  margin-left: 0.5rem;
  font-size: 0.875rem;
  font-weight: 500;
}

/* Larger touchable area for form controls on mobile */
@media (max-width: 767.98px) {
  .form-select, 
  .form-control {
    min-height: 38px;
  }
  
  .filter-btn {
    min-height: 36px;
  }
  
  /* Make sure form controls have enough spacing */
  .filter-card .form-group:not(:last-child) {
    margin-bottom: 0.75rem;
  }
  
  /* Better spacing for filter buttons on mobile */
  .filter-buttons {
    margin-top: 0.5rem;
  }
}
/* Brand Fonts for Kyasina */

/* Gilroy Bold for Headlines & Display */
@font-face {
  font-family: 'Gilroy Bold';
  src: url(/fonts/Gilroy-Bold.woff2) format('woff2'),
       url(/fonts/Gilroy-Bold.woff) format('woff');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Inter for Body Copy & Text */
@font-face {
  font-family: 'Inter';
  src: url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;900&display=swap');
  font-display: swap;
}

/* Typography Classes */
.font-display {
  font-family: 'Gilroy Bold', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

.font-body {
  font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

/* Heading Styles */
h1, h2, h3, h4, h5, h6 {
  font-family: 'Gilroy Bold', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

/* Body Text */
body, p, div, span, a, input, button, textarea, select {
  font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
/* Kyasina Form Styles */

/* Base Input Styles */
.tw-form-input {
  background-color: white;
  border: 1px solid #d1d5db; /* gray-300 */
  border-radius: 0.375rem;
  color: #111827; /* gray-900 */
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.5;
  padding: 0.5rem 0.75rem;
  width: 100%;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.tw-form-input:focus {
  outline: none;
  border-color: #105042; /* brand-blue */
  box-shadow: 0 0 0 3px rgba(16, 80, 66, 0.2);
}

.tw-form-input::placeholder {
  color: #9ca3af; /* gray-400 */
}

/* Input Sizes */
.tw-form-input-sm {
  font-size: 0.875rem;
  padding: 0.25rem 0.5rem;
}

.tw-form-input-lg {
  font-size: 1.125rem;
  padding: 0.75rem 1rem;
}

/* Select Input */
.tw-form-select {
  background-color: white;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
  background-position: right 0.5rem center;
  background-repeat: no-repeat;
  background-size: 1.5em 1.5em;
  border: 1px solid #d1d5db; /* gray-300 */
  border-radius: 0.375rem;
  color: #111827; /* gray-900 */
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.5;
  padding: 0.5rem 2.5rem 0.5rem 0.75rem;
  width: 100%;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.tw-form-select:focus {
  outline: none;
  border-color: #105042; /* brand-blue */
  box-shadow: 0 0 0 3px rgba(16, 80, 66, 0.2);
}

/* Checkbox and Radio */
.tw-form-checkbox,
.tw-form-radio {
  appearance: none;
  background-color: #fff;
  border: 1px solid #d1d5db; /* gray-300 */
  display: inline-block;
  height: 1rem;
  width: 1rem;
  color: #105042; /* brand-blue */
  vertical-align: middle;
  position: relative;
  margin-right: 0.5rem;
  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.tw-form-checkbox {
  border-radius: 0.25rem;
}

.tw-form-radio {
  border-radius: 50%;
}

.tw-form-checkbox:checked {
  background-color: #105042; /* brand-blue */
  border-color: #105042; /* brand-blue */
  background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
  background-size: 100% 100%;
  background-position: center;
  background-repeat: no-repeat;
}

.tw-form-radio:checked {
  background-color: #105042; /* brand-blue */
  border-color: #105042; /* brand-blue */
  background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");
  background-size: 100% 100%;
  background-position: center;
  background-repeat: no-repeat;
}

.tw-form-checkbox:focus,
.tw-form-radio:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(16, 80, 66, 0.2);
}

/* Form Label */
.tw-form-label {
  display: block;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
  color: #111827; /* gray-900 */
  margin-bottom: 0.5rem;
}

/* Form Group */
.tw-form-group {
  margin-bottom: 1.5rem;
}

/* Form Help Text */
.tw-form-help-text {
  display: block;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 0.875rem;
  color: #6b7280; /* gray-500 */
  margin-top: 0.25rem;
}

/* Form Error */
.tw-form-error {
  display: block;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 0.875rem;
  color: #dc2626; /* red-600 */
  margin-top: 0.25rem;
}

.tw-form-input-error {
  border-color: #dc2626; /* red-600 */
}

.tw-form-input-error:focus {
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.2);
}

/* Form Success */
.tw-form-success {
  display: block;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 0.875rem;
  color: #16a34a; /* green-600 */
  margin-top: 0.25rem;
}

.tw-form-input-success {
  border-color: #16a34a; /* green-600 */
}

.tw-form-input-success:focus {
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.2);
}

/* Form Header */
.tw-form-header {
  font-family: 'Gilroy Bold', system-ui, sans-serif;
  font-size: 1.5rem;
  color: #105042; /* brand-blue */
  margin-bottom: 1.5rem;
}

/* Form Section */
.tw-form-section {
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid #e5e7eb; /* gray-200 */
}

.tw-form-section-title {
  font-family: 'Gilroy Bold', system-ui, sans-serif;
  font-size: 1.25rem;
  color: #105042; /* brand-blue */
  margin-bottom: 1rem;
}

/* Form Actions */
.tw-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.75rem;
  margin-top: 2rem;
}

/* Form Inline */
.tw-form-inline {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

/* Form Grid */
.tw-form-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 1rem;
}

.tw-form-col-1 { grid-column: span 1 / span 1; }
.tw-form-col-2 { grid-column: span 2 / span 2; }
.tw-form-col-3 { grid-column: span 3 / span 3; }
.tw-form-col-4 { grid-column: span 4 / span 4; }
.tw-form-col-5 { grid-column: span 5 / span 5; }
.tw-form-col-6 { grid-column: span 6 / span 6; }
.tw-form-col-7 { grid-column: span 7 / span 7; }
.tw-form-col-8 { grid-column: span 8 / span 8; }
.tw-form-col-9 { grid-column: span 9 / span 9; }
.tw-form-col-10 { grid-column: span 10 / span 10; }
.tw-form-col-11 { grid-column: span 11 / span 11; }
.tw-form-col-12 { grid-column: span 12 / span 12; }

/* Responsive Form Grid */
@media (max-width: 768px) {
  /* All columns become full width on mobile */
  .tw-form-col-md-12,
  .tw-form-col-1,
  .tw-form-col-2,
  .tw-form-col-3,
  .tw-form-col-4,
  .tw-form-col-5,
  .tw-form-col-6,
  .tw-form-col-7,
  .tw-form-col-8,
  .tw-form-col-9,
  .tw-form-col-10,
  .tw-form-col-11 {
    grid-column: span 12 / span 12;
  }
  
  /* Larger inputs/selects on mobile for better touch targets */
  .tw-form-input,
  .tw-form-select,
  .tw-form-textarea,
  .form-control,
  .form-select,
  select,
  input[type="text"],
  input[type="email"],
  input[type="number"],
  input[type="password"],
  input[type="tel"] {
    font-size: 16px !important; /* Prevents iOS zoom */
    padding: 0.65rem 0.75rem !important;
    height: auto !important;
    min-height: 44px !important;
  }
  
  /* Better spacing between form groups on mobile */
  .tw-form-group,
  .form-group,
  .mb-3 {
    margin-bottom: 1rem !important;
  }
  
  /* Form labels on mobile */
  .tw-form-label,
  .form-label,
  label {
    font-size: 0.9rem !important;
    margin-bottom: 0.35rem !important;
  }
}

@media (max-width: 640px) {
  .tw-form-col-sm-12 { grid-column: span 12 / span 12; }
  
  /* Even better spacing on small phones */
  .tw-form-group,
  .form-group,
  .mb-3 {
    margin-bottom: 0.85rem !important;
  }
  
  /* Full width buttons on mobile */
  .btn,
  button[type="submit"],
  input[type="submit"] {
    width: 100%;
    margin-bottom: 0.5rem;
    padding: 0.6rem 1rem !important;
    min-height: 44px !important;
  }
}

/* Form Textarea */
.tw-form-textarea {
  background-color: white;
  border: 1px solid #d1d5db; /* gray-300 */
  border-radius: 0.375rem;
  color: #111827; /* gray-900 */
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.5;
  padding: 0.5rem 0.75rem;
  width: 100%;
  min-height: 6rem;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.tw-form-textarea:focus {
  outline: none;
  border-color: #105042; /* brand-blue */
  box-shadow: 0 0 0 3px rgba(16, 80, 66, 0.2);
}

/* Form File Input */
.tw-form-file {
  display: block;
  width: 100%;
}

.tw-form-file::-webkit-file-upload-button {
  background-color: #105042; /* brand-blue */
  color: white;
  border: none;
  border-radius: 0.375rem;
  padding: 0.5rem 1rem;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  margin-right: 1rem;
}

.tw-form-file::file-selector-button {
  background-color: #105042; /* brand-blue */
  color: white;
  border: none;
  border-radius: 0.375rem;
  padding: 0.5rem 1rem;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  margin-right: 1rem;
}
/* Home page specific styles */

/* Hero section */
.min-vh-75 {
  min-height: 75vh;
}

/* Background colors */
.bg-primary-light {
  background-color: var(--brand-blue-light);
}

/* Carousel styling */
.carousel {
  position: relative;
}

.carousel-container {
  display: flex;
  overflow: hidden;
  width: 100%;
}

.carousel-slide {
  flex: 0 0 100%;
  transition: transform 0.5s ease;
}

.carousel-indicator {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: none;
  padding: 0;
  cursor: pointer;
}

.carousel-indicator.active {
  background-color: var(--bs-primary);
}

/* Transitions */
.transition {
  transition: all 0.3s ease;
}

/* Hover effects */
.hover-lift:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1) !important;
}

/* Rotating text animation */
.rotating-text {
  transition: opacity 0.5s ease;
}
/* Enhanced Layout Styles for Gogolo */

/* Main Layout Structure */
.app-container {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  width: 100%;
  overflow-x: hidden;
  position: relative;
}

/* Sticky Navbar */
.navbar-sticky {
  position: sticky;
  top: 0;
  z-index: 1030;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  transition: all 0.3s ease;
}

/* Content Area */
.content-wrapper {
  display: flex;
  flex: 1;
  width: 100%;
  position: relative;
}

/* Sidebar Styles */
.sidebar {
  position: sticky;
  top: 70px; /* Height of navbar */
  height: calc(100vh - 70px);
  z-index: 40;
  transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
  overflow-y: auto;
  overflow-x: hidden;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
  background-color: #f8f9fa;
  padding-top: 1.25rem;
  padding-bottom: 1.5rem;
  border-right: 1px solid rgba(0, 0, 0, 0.05);
}

/* Sidebar States */
.sidebar-collapsed {
  text-align: center;
  padding-left: 0;
  padding-right: 0;
}

.sidebar-collapsed .nav-link {
  padding: 0.75rem 0.5rem;
  justify-content: center;
}

.sidebar-collapsed .nav-link span {
  display: none;
}

.sidebar-collapsed .nav-item .disabled {
  display: none;
}

.sidebar-collapsed .nav-item {
  margin-bottom: 0.5rem;
}

/* Improve sidebar section headers */
.sidebar .nav-link.disabled {
  color: #6c757d;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.05rem;
  padding-top: 1.25rem;
  padding-bottom: 0.5rem;
  opacity: 0.8;
}

/* Add subtle hover effect */
.sidebar .nav-link:not(.disabled):hover {
  background-color: rgba(0, 0, 0, 0.03);
}

/* Add subtle divider between sections */
.sidebar .nav-item.mt-3:before {
  content: '';
  display: block;
  height: 1px;
  background: rgba(0, 0, 0, 0.05);
  margin: 0.5rem 1.25rem;
  width: calc(100% - 2.5rem);
}

/* Sidebar Toggle Button */
.sidebar-toggle {
  position: absolute;
  right: -12px;
  top: 20px;
  width: 24px;
  height: 24px;
  background-color: #0d6efd; /* Bootstrap primary */
  color: white;
  border-radius: 9999px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 50;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
  border: 1px solid white;
  transition: all 0.2s ease;
  font-size: 0.75rem;
  padding: 0;
}

.sidebar-toggle:hover {
  background-color: #0d6efd; /* Bootstrap primary */
  transform: scale(1.1);
}

/* Content Area Adjustments */
.main-content {
  overflow-y: auto;
  min-height: calc(100vh - 70px);
}

/* Sidebar Navigation */
.sidebar .nav-link {
  display: flex;
  align-items: center;
  padding: 0.6rem 1.25rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
  border-left: 3px solid transparent;
  position: relative;
  font-size: 0.9rem;
  margin-bottom: 0.15rem;
}

/* Dashboard header styling */
.sidebar .nav-item:first-child .nav-link {
  font-weight: 600;
  color: #0d6efd; /* Bootstrap primary */
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  margin-bottom: 0.75rem;
}

/* Active state styling */
.sidebar .nav-link.active {
  background-color: rgba(13, 110, 253, 0.05); /* Bootstrap primary with opacity */
  border-left: 3px solid #0d6efd; /* Bootstrap primary */
  color: #0d6efd !important; /* Bootstrap primary */
  font-weight: 600;
}

.sidebar .nav-link.active i,
.sidebar .nav-link.active svg {
  color: #0d6efd; /* Bootstrap primary */
}

/* Hover effect */
.sidebar .nav-link:hover:not(.active) {
  background-color: rgba(13, 110, 253, 0.02); /* Bootstrap primary with opacity */
  border-left: 3px solid #6ea8fe; /* Bootstrap primary-300 */
}

.sidebar-collapsed .nav-link {
  justify-content: center;
  padding: 0.75rem 0;
}

.sidebar .nav-link i,
.sidebar .nav-link svg {
  min-width: 20px;
  margin-right: 0.75rem;
  text-align: center;
  transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
  transform-origin: center;
}

.sidebar-collapsed .nav-link i,
.sidebar-collapsed .nav-link svg {
  margin-right: 0;
  font-size: 1.25rem;
  transform: scale(1.1);
}

.sidebar-collapsed .nav-link span {
  display: none;
}

.sidebar-collapsed .nav-item .disabled {
  display: none;
}

/* Mobile Sidebar */
@media (max-width: 767.98px) {
  .sidebar {
    position: fixed;
    top: 70px;
    left: -100%;
    width: 80%;
    max-width: 20rem;
    height: calc(100vh - 70px);
    z-index: 50;
    transition: left 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  }
  
  .sidebar.sidebar-expanded {
    left: 0;
  }
}

/* Sidebar Backdrop */
.sidebar-backdrop {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 40;
  opacity: 0;
  transition: opacity 0.3s ease;
  backdrop-filter: blur(2px);
}

.sidebar-backdrop.show {
  display: block;
  opacity: 1;
}

@media (min-width: 768px) {
  .sidebar-backdrop {
    display: none !important;
  }
}

/* Responsive Adjustments */
@media (max-width: 991.98px) {
  .sidebar-toggle {
    display: none;
  }
}

/* Animations */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slideIn {
  from { transform: translateX(-20px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes scaleIn {
  from { transform: scale(0.9); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}

.fade-in {
  animation: fadeIn 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) forwards;
}

.slide-in {
  animation: slideIn 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) forwards;
}

.scale-in {
  animation: scaleIn 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) forwards;
}

/* Tooltip for collapsed sidebar */
.sidebar-tooltip {
  position: relative;
}

.sidebar-collapsed .sidebar-tooltip::before {
  content: '';
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent transparent rgba(0, 0, 0, 0.8);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s, visibility 0.2s;
  z-index: 1051;
  margin-left: 10px;
}

.sidebar-collapsed .sidebar-tooltip::after {
  content: attr(data-title);
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  background-color: rgba(0, 0, 0, 0.8);
  color: white;
  padding: 5px 10px;
  border-radius: 4px;
  font-size: 0.875rem;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s, visibility 0.2s;
  z-index: 1050;
  margin-left: 20px;
}

.sidebar-collapsed .sidebar-tooltip:hover::before,
.sidebar-collapsed .sidebar-tooltip:hover::after {
  opacity: 1;
  visibility: visible;
}
/* Lazy Loading CSS */

/* Base style for lazy-loaded images */
.lazy-image {
  opacity: 0.1;
  transition: opacity 0.3s ease-in-out;
  background-color: #f8f9fa;
  min-height: 100px;
}

/* Class added when the image is loaded */
.lazy-image.loaded {
  opacity: 1;
  background-color: transparent;
}

/* Fix for card layouts with lazy images */
.card-img-top.lazy-image {
  object-fit: cover;
  width: 100%;
  height: 176px !important; /* Make sure all images have consistent height */
}

/* Specific fix for property cards */
.listing-item .card {
  height: 100%;
  display: flex;
  flex-direction: column;
}

.listing-item .card .card-body {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.listing-item .card-img-top {
  height: 176px;
  object-fit: cover;
}

/* Placeholder styling */
.placeholder-bg {
  background-color: #f0f0f0;
  background-image: linear-gradient(90deg, #f0f0f0 0px, #f8f8f8 40px, #f0f0f0 80px);
  background-size: 200% 100%;
  animation: placeholderShimmer 1.5s infinite;
}

@keyframes placeholderShimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

/* Optimizations for specific network connections */
html.network-slow-2g .high-res-bg, 
html.network-2g .high-res-bg,
html.save-data .high-res-bg {
  background-image: var(--low-res-bg) !important;
}

/* Special handling for users with data saver enabled */
html.save-data .non-essential-image {
  display: none !important;
}

/* Mobile-specific lazy-loading rules */
@media (max-width: 767.98px) {
  /* Smaller, lower-quality placeholders on mobile */
  .lazy-image {
    background-size: cover;
    background-position: center;
  }
  
  /* Different transition on mobile to avoid jank */
  .lazy-image.loaded {
    transition: opacity 0.15s ease-in-out;
  }
  
  /* Special handling for items below the fold on mobile */
  .below-fold .lazy-image {
    min-height: 100px;
  }
}

/* Network-aware styles for different connection types */
@media (prefers-reduced-data: reduce) {
  /* System-level data saving mode */
  .lazy-image[data-high-res] {
    display: none;
  }
  
  /* Load fewer animations */
  .animate {
    animation: none !important;
    transition: none !important;
  }
}
/* Responsive Grid Layouts for Listing Pages */

/* Base styling for listing grids */
.listing-grid {
  display: flex;
  flex-wrap: wrap;
  margin: 0 -0.5rem;
}

/* Consistent card styling across all listing types */
.listing-item {
  height: 100%;
  display: flex;
}

.listing-item .card {
  width: 100%;
  height: 100%;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  overflow: hidden;
}

/* Card hover effects */
.listing-item .card:hover {
  transform: translateY(-3px);
  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1) !important;
}

/* Consistent image heights */
.listing-item .card-img-top {
  height: 176px;
  object-fit: cover;
  width: 100%;
}

/* Card body layout */
.listing-item .card-body {
  display: flex;
  flex-direction: column;
  padding: 0.5rem;
}

.listing-item .card-title {
  font-size: 1rem;
  font-weight: 500;
  margin-bottom: 0.25rem;
}

.listing-item p {
  margin-bottom: 0.25rem;
  font-size: 0.875rem;
}

/* Grid sizing adjustments for different screen sizes */
@media (min-width: 576px) {
  .listing-item .card-body {
    padding: 0.75rem;
  }
  
  /* More space between cards on larger screens */
  .row-cols-sm-2 > .col,
  .row-cols-md-3 > .col,
  .row-cols-lg-3 > .col {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }
}

@media (min-width: 768px) {
  .listing-item .card-body {
    padding: 1rem;
  }
  
  /* Even more space on tablets and up */
  .row-cols-md-3 > .col,
  .row-cols-lg-3 > .col {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  
  .g-4 {
    --bs-gutter-y: 1.5rem;
  }
}

/* Fix for when map is hidden - adjust column widths */
.col-12 .row-cols-md-4 > .col {
  flex: 0 0 auto;
  width: 25%;
}

@media (max-width: 991.98px) {
  .col-12 .row-cols-md-4 > .col {
    width: 33.333333%;
  }
}

@media (max-width: 767.98px) {
  .col-12 .row-cols-md-4 > .col {
    width: 50%;
  }
  
  .listing-item .card-img-top {
    height: 140px;
  }
}

@media (max-width: 575.98px) {
  .col-12 .row-cols-md-4 > .col,
  .col-12 .row-cols-md-3 > .col {
    width: 100%;
  }
  
  .listing-item .card-img-top {
    height: 160px;
  }
  
  .g-4 {
    --bs-gutter-y: 1rem;
  }
}

/* Spacing between rows */
.row > .col {
  margin-bottom: 1rem;
}

/* Map container responsive handling */
.sticky-top {
  z-index: 100;
  top: 1rem;
}

.h-vh-minus-150 {
  height: calc(100vh - 150px);
  min-height: 400px;
}

@media (max-width: 767.98px) {
  .h-vh-minus-150 {
    height: 400px;
    min-height: 300px;
  }
}
/* Styling for Markdown content */
.markdown-content {
  line-height: 1.6;
  color: #333;
}

.markdown-content h1,
.markdown-content h2,
.markdown-content h3 {
  margin-top: 1.5rem;
  margin-bottom: 1rem;
  font-weight: 600;
}

.markdown-content h1 {
  font-size: 1.8rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid #eaecef;
}

.markdown-content h2 {
  font-size: 1.5rem;
}

.markdown-content h3 {
  font-size: 1.25rem;
}

.markdown-content p,
.markdown-content ul,
.markdown-content ol {
  margin-bottom: 1rem;
}

.markdown-content ul,
.markdown-content ol {
  padding-left: 2rem;
}

.markdown-content code {
  background-color: #f6f8fa;
  padding: 0.2em 0.4em;
  border-radius: 3px;
  font-family: monospace;
  font-size: 0.9em;
}

.markdown-content pre {
  background-color: #f6f8fa;
  border-radius: 3px;
  padding: 1rem;
  overflow: auto;
}

.document-container {
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
  max-height: 600px;
  overflow-y: auto;
}

/* Timeline styling */
.timeline-icon {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background-color: #f8f9fa;
  font-size: 1.25rem;
  color: #6c757d;
  position: relative;
}

.timeline-icon::after {
  content: '';
  position: absolute;
  width: 2px;
  background-color: #dee2e6;
  top: 40px;
  bottom: -40px;
  left: 19px;
  z-index: 0;
}

.list-group-item:last-child .timeline-icon::after {
  display: none;
}

/* Print styles for rental agreement */
@media print {
  .document-container {
    max-height: none;
    box-shadow: none;
    border: none;
  }
  
  .no-print {
    display: none !important;
  }
}
/* Messaging Split View Layout */
.messaging-container {
  height: calc(100vh - 80px); /* Adjust based on your navbar height */
  overflow: hidden;
}

.messaging-split-view {
  display: flex;
  height: 100%;
  background: #f8f9fa;
}

/* Left Sidebar - Conversation List */
.conversation-sidebar {
  width: 380px;
  border-right: 1px solid #dee2e6;
  background: white;
  display: flex;
  flex-direction: column;
  height: 100%;
}

.conversation-list-header {
  flex-shrink: 0;
}

.conversation-list-items {
  overflow-y: auto;
  flex: 1;
}

.conversation-list-item {
  transition: background-color 0.2s ease;
  cursor: pointer;
  color: inherit;
}

.conversation-list-item:hover {
  background-color: #f8f9fa;
}

.conversation-list-item.active {
  background-color: #e7f3ff;
  border-left: 3px solid #0d6efd;
}

.conversation-list-item.unread {
  background-color: #f0f8ff;
}

.conversation-list-item.unread .conversation-title {
  font-weight: 600;
}

.conversation-list-item.unread .conversation-preview {
  font-weight: 500;
  color: #212529 !important;
}

/* Avatar Circle */
.avatar-circle {
  width: 45px;
  height: 45px;
  border-radius: 50%;
  font-size: 18px;
  font-weight: 600;
  flex-shrink: 0;
}

.conversation-list-item .avatar-circle {
  width: 50px;
  height: 50px;
  font-size: 20px;
}

/* Right Panel - Chat */
.chat-panel {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: white;
  height: 100%;
}

.chat-header {
  flex-shrink: 0;
  box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}

.chat-messages {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  background: #f8f9fa;
}

.chat-input {
  flex-shrink: 0;
  box-shadow: 0 -1px 2px rgba(0,0,0,0.05);
}

/* Message Bubbles */
.message-item {
  animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.message-item .bg-primary {
  background: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%) !important;
  border-radius: 18px 18px 4px 18px;
  box-shadow: 0 2px 8px rgba(13, 110, 253, 0.2);
}

.message-item .bg-light {
  background-color: white !important;
  border: 1px solid #e9ecef;
  border-radius: 18px 18px 18px 4px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
}

.message-item .bg-primary p {
  color: white;
  margin: 0;
}

.message-item .bg-light p {
  color: #212529;
  margin: 0;
}

/* Scrollbar Styling */
.conversation-list-items::-webkit-scrollbar,
.chat-messages::-webkit-scrollbar {
  width: 6px;
}

.conversation-list-items::-webkit-scrollbar-track,
.chat-messages::-webkit-scrollbar-track {
  background: #f1f1f1;
}

.conversation-list-items::-webkit-scrollbar-thumb,
.chat-messages::-webkit-scrollbar-thumb {
  background: #888;
  border-radius: 3px;
}

.conversation-list-items::-webkit-scrollbar-thumb:hover,
.chat-messages::-webkit-scrollbar-thumb:hover {
  background: #555;
}

/* Responsive Design */
@media (max-width: 768px) {
  .messaging-container {
    height: calc(100vh - 60px); /* Adjust for mobile navbar */
  }
  
  .messaging-split-view {
    flex-direction: column;
  }
  
  .conversation-sidebar {
    width: 100%;
    height: 100%;
    display: none;
  }
  
  .conversation-sidebar.show {
    display: flex;
  }
  
  .chat-panel {
    width: 100%;
  }
  
  /* Show sidebar on index page, hide on show page */
  body[data-controller="conversations"][data-action="index"] .conversation-sidebar {
    display: flex;
  }
  
  body[data-controller="conversations"][data-action="index"] .chat-panel {
    display: none;
  }
  
  body[data-controller="conversations"][data-action="show"] .conversation-sidebar {
    display: none;
  }
  
  body[data-controller="conversations"][data-action="show"] .chat-panel {
    display: flex;
  }
  
  /* Mobile-specific improvements */
  .conversation-list-header {
    padding: 1rem;
    position: sticky;
    top: 0;
    z-index: 10;
    background: white;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
  }
  
  .conversation-list-header h5 {
    font-size: 1.25rem;
    font-weight: 600;
  }
  
  .conversation-list-item {
    padding: 1rem;
    border-bottom: 1px solid #f0f0f0;
    min-height: 80px;
    display: flex;
    align-items: center;
  }
  
  .conversation-list-item .avatar-circle {
    width: 56px;
    height: 56px;
    font-size: 22px;
    flex-shrink: 0;
  }
  
  .conversation-list-item .conversation-title {
    font-size: 1rem;
    font-weight: 600;
  }
  
  .conversation-list-item .conversation-preview {
    font-size: 0.9rem;
    line-height: 1.4;
  }
  
  .conversation-list-item .badge {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
  }
  
  /* Mobile chat header */
  .chat-header {
    padding: 0.75rem 1rem;
    position: sticky;
    top: 0;
    z-index: 10;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
  }
  
  .chat-header .avatar-circle {
    width: 42px;
    height: 42px;
    font-size: 18px;
  }
  
  .chat-header h5 {
    font-size: 1rem;
    font-weight: 600;
  }
  
  .chat-header small {
    font-size: 0.8rem;
  }
  
  /* Mobile messages */
  .chat-messages {
    padding: 1rem;
    background: #f5f5f5;
  }
  
  .message-item {
    margin-bottom: 1rem;
  }
  
  .message-item > div {
    max-width: 85%;
  }
  
  .message-item .bg-primary,
  .message-item .bg-light {
    padding: 0.75rem 1rem;
    font-size: 0.95rem;
    line-height: 1.5;
  }
  
  .message-item small {
    font-size: 0.75rem;
    margin-top: 0.25rem;
  }
  
  /* Mobile input */
  .chat-input {
    padding: 0.75rem 1rem;
    background: white;
    box-shadow: 0 -2px 8px rgba(0,0,0,0.08);
  }
  
  .chat-input textarea {
    font-size: 1rem;
    padding: 0.75rem;
    border-radius: 20px;
    border: 1px solid #e0e0e0;
    min-height: 44px;
  }
  
  .chat-input .btn-primary {
    min-width: 44px;
    min-height: 44px;
    border-radius: 50%;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  .chat-input .btn-primary i {
    font-size: 1.1rem;
  }
  
  .chat-input small {
    font-size: 0.75rem;
    margin-top: 0.5rem;
  }
  
  /* Mobile back button */
  .chat-header .btn-link {
    padding: 0.5rem;
    margin-left: -0.5rem;
    font-size: 1.25rem;
    color: #333;
  }
  
  /* Mobile dropdown menu */
  .chat-header .dropdown-menu {
    font-size: 0.95rem;
  }
  
  /* Improve touch targets */
  .conversation-list-item,
  .chat-input button,
  .chat-header button {
    -webkit-tap-highlight-color: rgba(0,0,0,0.1);
  }
  
  /* Active state for mobile */
  .conversation-list-item:active {
    background-color: #e8e8e8;
  }
  
  /* Empty state on mobile */
  .chat-panel .text-center i {
    font-size: 60px;
  }
  
  .chat-panel .text-center h3 {
    font-size: 1.25rem;
  }
  
  .chat-panel .text-center p {
    font-size: 0.9rem;
  }
  
  /* Prevent text selection on tap */
  .conversation-list-item * {
    user-select: none;
    -webkit-user-select: none;
  }
  
  /* Smooth scrolling */
  .conversation-list-items,
  .chat-messages {
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
  }
  
  /* Hide scrollbar on mobile for cleaner look */
  .conversation-list-items::-webkit-scrollbar,
  .chat-messages::-webkit-scrollbar {
    display: none;
  }
  
  /* Better visual hierarchy */
  .conversation-list-item.unread {
    background: linear-gradient(to right, #f0f8ff 0%, white 100%);
    border-left: 3px solid #0d6efd;
  }
  
  /* Improve badge visibility */
  .conversation-list-item .badge.bg-primary {
    background: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%) !important;
    box-shadow: 0 2px 4px rgba(13, 110, 253, 0.3);
  }
  
  /* Better spacing for message timestamps */
  .message-item small {
    display: block;
    opacity: 0.7;
  }
  
  /* Improve input focus state */
  .chat-input textarea:focus {
    border-color: #0d6efd;
    box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.15);
    outline: none;
  }
  
  /* Add subtle animation to send button */
  .chat-input .btn-primary:active {
    transform: scale(0.95);
    transition: transform 0.1s ease;
  }
  
  /* Improve category badge on mobile */
  .badge.bg-secondary {
    background: linear-gradient(135deg, #6c757d 0%, #5a6268 100%) !important;
  }
  
  /* Better divider between conversations */
  .conversation-list-item:not(:last-child) {
    border-bottom: 1px solid #f0f0f0;
  }
  
  /* Add subtle hover effect even on mobile (for hybrid devices) */
  @media (hover: hover) {
    .conversation-list-item:hover {
      background-color: #f8f9fa;
    }
  }
}

@media (min-width: 769px) and (max-width: 1024px) {
  .conversation-sidebar {
    width: 320px;
  }
}

@media (min-width: 1400px) {
  .conversation-sidebar {
    width: 420px;
  }
}

/* Utilities */
.min-w-0 {
  min-width: 0;
}

.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Safe area insets for notched devices */
@supports (padding: max(0px)) {
  .messaging-container {
    padding-left: max(0px, env(safe-area-inset-left));
    padding-right: max(0px, env(safe-area-inset-right));
  }
  
  .chat-input {
    padding-bottom: max(0.75rem, env(safe-area-inset-bottom));
  }
}

/* Badge Styling */
.conversation-list-item .badge {
  font-size: 0.7rem;
}

/* Empty State */
.chat-messages .text-center {
  margin-top: 100px;
}

/* Dropdown Menu */
.chat-header .dropdown-menu {
  min-width: 200px;
}

/* Focus States */
.chat-input textarea:focus {
  border-color: #0d6efd;
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

/* Loading State */
.conversation-list-item.loading {
  opacity: 0.6;
  pointer-events: none;
}

/* Hover Effects */
.conversation-list-item:not(.active):hover {
  background-color: #f1f3f5;
}

/* Unread Badge Animation */
.badge.bg-primary {
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.7;
  }
}

/* Message Input Textarea */
.chat-input textarea {
  resize: none;
  border-radius: 8px;
}

/* Send Button */
.chat-input .btn-primary {
  border-radius: 8px;
  padding: 0.5rem 1rem;
  height: fit-content;
}

/* Conversation Preview Text */
.conversation-preview {
  line-height: 1.4;
}

/* Time Ago Text */
.conversation-list-item small {
  font-size: 0.75rem;
}

/* Category Badge */
.badge-sm {
  font-size: 0.7rem;
  padding: 0.2rem 0.5rem;
}
/* Enhanced Mobile Touch Targets and Spacing
 * This file provides enhanced touch targets and spacing specifically for mobile interfaces
 */

/* Base touch target sizes - based on WCAG 2.5.5 recommendations (44px min) */

/* Touch-friendly buttons */
.btn {
  position: relative;
}

/* Ensure good tap area on mobile */
@media (max-width: 767.98px) {
  .btn,
  .form-control,
  .form-select,
  .nav-link,
  .dropdown-item {
    min-height: 44px;
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
  }
  
  /* Improve tap targets for interactive elements */
  [role="button"],
  [type="button"],
  [type="submit"],
  [type="reset"],
  button,
  select,
  a {
    touch-action: manipulation;
  }
  
  /* Enlarge checkbox and radio touch areas */
  .form-check {
    padding-left: 1.75rem;
    min-height: 1.5rem;
  }
  
  .form-check-input {
    margin-top: 0.25rem;
    width: 1.25rem;
    height: 1.25rem;
  }
  
  /* Larger clickable area for links in text */
  p a, li a, td a, th a {
    padding: 0.125rem 0;
    margin: -0.125rem 0;
    display: inline-block;
  }
  
  /* List items in navigation */
  .nav-item {
    margin-bottom: 0.25rem;
  }
  
  /* Card title links */
  .card-title a {
    display: block;
    padding: 0.25rem 0;
    margin: -0.25rem 0;
  }
  
  /* Increase spacing between interactive elements */
  .btn + .btn,
  .form-group + .form-group,
  .nav-item + .nav-item {
    margin-top: 0.75rem;
  }
  
  /* Improve dropdown touch targets */
  .dropdown-item {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
  }
  
  /* Adjust form label position */
  .form-label {
    margin-bottom: 0.35rem;
  }
}

/* Accessible hover effect - don't rely only on hover for touchscreens */
@media (hover: hover) {
  /* Only apply hover effects on devices that support hover */
  .hover-effect:hover {
    transform: translateY(-2px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.1);
    transition: all 0.3s ease;
  }
}

/* Active state - apply regardless of hover support */
.hover-effect:active {
  transform: translateY(1px);
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.1);
}

/* Enhanced touch feedback */
.touch-feedback {
  position: relative;
  overflow: hidden;
}

.touch-feedback::after {
  content: '';
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  pointer-events: none;
  background-image: radial-gradient(circle, rgba(0, 0, 0, 0.1) 10%, transparent 10.01%);
  background-repeat: no-repeat;
  background-position: 50%;
  transform: scale(10, 10);
  opacity: 0;
  transition: transform 0.5s, opacity 1s;
}

.touch-feedback:active::after {
  transform: scale(0, 0);
  opacity: 0.3;
  transition: 0s;
}

/* Improved touch area for form elements */
.form-control, 
.form-select {
  padding: 0.5rem;
}

/* Tap highlight transparent for elements with active states */
button, 
.btn, 
.nav-link,
.card-link {
  -webkit-tap-highlight-color: transparent;
}

/* Physical button-like feedback */
.btn.btn-solid-touch {
  box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1);
  transform: translateY(0);
  transition: transform 0.1s, box-shadow 0.1s;
}

.btn.btn-solid-touch:active {
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.1);
  transform: translateY(2px);
}
/* Mobile-specific utility classes for Gogolo
 * These utility classes help make the UI more mobile-friendly across the site
 */

/* ====== Responsive spacings ====== */

/* Responsive margins - different values on mobile vs. desktop */
.my-responsive {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}

.mx-responsive {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}

.mt-responsive {
  margin-top: 0.5rem;
}

.mb-responsive {
  margin-bottom: 0.5rem;
}

.ms-responsive {
  margin-left: 0.5rem;
}

.me-responsive {
  margin-right: 0.5rem;
}

/* Responsive paddings - different values on mobile vs. desktop */
.py-responsive {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.px-responsive {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}

.pt-responsive {
  padding-top: 0.5rem;
}

.pb-responsive {
  padding-bottom: 0.5rem;
}

.ps-responsive {
  padding-left: 0.5rem;
}

.pe-responsive {
  padding-right: 0.5rem;
}

@media (min-width: 768px) {
  .my-responsive {
    margin-top: 1rem;
    margin-bottom: 1rem;
  }
  
  .mx-responsive {
    margin-left: 1rem;
    margin-right: 1rem;
  }
  
  .mt-responsive {
    margin-top: 1rem;
  }
  
  .mb-responsive {
    margin-bottom: 1rem;
  }
  
  .ms-responsive {
    margin-left: 1rem;
  }
  
  .me-responsive {
    margin-right: 1rem;
  }
  
  .py-responsive {
    padding-top: 1rem;
    padding-bottom: 1rem;
  }
  
  .px-responsive {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  
  .pt-responsive {
    padding-top: 1rem;
  }
  
  .pb-responsive {
    padding-bottom: 1rem;
  }
  
  .ps-responsive {
    padding-left: 1rem;
  }
  
  .pe-responsive {
    padding-right: 1rem;
  }
}

@media (min-width: 992px) {
  .my-responsive {
    margin-top: 1.5rem;
    margin-bottom: 1.5rem;
  }
  
  .mx-responsive {
    margin-left: 1.5rem;
    margin-right: 1.5rem;
  }
  
  .mt-responsive {
    margin-top: 1.5rem;
  }
  
  .mb-responsive {
    margin-bottom: 1.5rem;
  }
  
  .ms-responsive {
    margin-left: 1.5rem;
  }
  
  .me-responsive {
    margin-right: 1.5rem;
  }
  
  .py-responsive {
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
  }
  
  .px-responsive {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
  
  .pt-responsive {
    padding-top: 1.5rem;
  }
  
  .pb-responsive {
    padding-bottom: 1.5rem;
  }
  
  .ps-responsive {
    padding-left: 1.5rem;
  }
  
  .pe-responsive {
    padding-right: 1.5rem;
  }
}

/* ====== Font sizes for mobile ====== */

/* Responsive font sizes - smaller on mobile, larger on desktop */
.fs-responsive-1 {
  font-size: 1.75rem; /* Smaller on mobile */
}

.fs-responsive-2 {
  font-size: 1.5rem;
}

.fs-responsive-3 {
  font-size: 1.25rem;
}

.fs-responsive-4 {
  font-size: 1.125rem;
}

.fs-responsive-5 {
  font-size: 1rem;
}

.fs-responsive-6 {
  font-size: 0.875rem;
}

@media (min-width: 768px) {
  .fs-responsive-1 {
    font-size: 2.25rem; /* Larger on desktop */
  }
  
  .fs-responsive-2 {
    font-size: 1.75rem;
  }
  
  .fs-responsive-3 {
    font-size: 1.5rem;
  }
  
  .fs-responsive-4 {
    font-size: 1.25rem;
  }
  
  .fs-responsive-5 {
    font-size: 1.125rem;
  }
  
  .fs-responsive-6 {
    font-size: 1rem;
  }
}

/* ====== Touch-friendly utilities ====== */

/* Touch-friendly targets (min 44px height according to WCAG 2.5.5) */
.touch-target {
  min-height: 44px;
  min-width: 44px;
  display: flex;
  align-items: center;
}

/* Make links more touchable on mobile */
.mobile-link {
  display: block;
  padding: 8px 0;
}

/* Ensure buttons have good touch targets */
@media (max-width: 767px) {
  .btn {
    padding: 0.5rem 1rem;
    min-height: 44px;
  }
  
  .btn-sm {
    padding: 0.375rem 0.75rem;
    min-height: 38px;
  }
  
  .btn-lg {
    padding: 0.75rem 1.5rem;
    min-height: 50px;
  }
}

/* ====== Visibility utilities ====== */

/* Show only on mobile devices */
.mobile-only {
  display: none;
}

@media (max-width: 767px) {
  .mobile-only {
    display: block;
  }
  
  span.mobile-only, a.mobile-only, i.mobile-only {
    display: inline;
  }
  
  div.mobile-only, nav.mobile-only {
    display: block;
  }
  
  .flex.mobile-only {
    display: flex;
  }
}

/* Show only on tablets and larger */
.tablet-up {
  display: none;
}

@media (min-width: 768px) {
  .tablet-up {
    display: block;
  }
  
  span.tablet-up, a.tablet-up, i.tablet-up {
    display: inline;
  }
  
  div.tablet-up, nav.tablet-up {
    display: block;
  }
  
  .flex.tablet-up {
    display: flex;
  }
}

/* Show only on desktop and larger */
.desktop-up {
  display: none;
}

@media (min-width: 992px) {
  .desktop-up {
    display: block;
  }
  
  span.desktop-up, a.desktop-up, i.desktop-up {
    display: inline;
  }
  
  div.desktop-up, nav.desktop-up {
    display: block;
  }
  
  .flex.desktop-up {
    display: flex;
  }
}

/* ====== Mobile text alignment ====== */

/* Text alignment that changes based on screen size */
.text-mobile-center {
  text-align: center;
}

.text-mobile-left {
  text-align: left;
}

.text-mobile-right {
  text-align: right;
}

@media (min-width: 768px) {
  .text-mobile-center {
    text-align: inherit;
  }
  
  .text-mobile-left {
    text-align: inherit;
  }
  
  .text-mobile-right {
    text-align: inherit;
  }
}

/* ====== Mobile-friendly containers ====== */

/* Smaller container padding on mobile */
@media (max-width: 767px) {
  .container, .container-fluid {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }
}

/* Full-width container on mobile */
.container-mobile-fluid {
  width: 100%;
  padding-right: 0.75rem;
  padding-left: 0.75rem;
  margin-right: auto;
  margin-left: auto;
}

@media (min-width: 768px) {
  .container-mobile-fluid {
    max-width: 720px;
  }
}

@media (min-width: 992px) {
  .container-mobile-fluid {
    max-width: 960px;
  }
}

@media (min-width: 1200px) {
  .container-mobile-fluid {
    max-width: 1140px;
  }
}

@media (min-width: 1400px) {
  .container-mobile-fluid {
    max-width: 1320px;
  }
}

/* ====== Stack columns on mobile ====== */

/* Forces a flexible display to stack on mobile */
@media (max-width: 767px) {
  .stack-on-mobile {
    flex-direction: column !important;
    gap: 0.5rem !important;
  }
  
  .stack-on-mobile > * {
    width: 100% !important;
  }
}

/* ====== Order columns differently on mobile ====== */
@media (max-width: 767px) {
  .mobile-order-1 {
    order: 1 !important;
  }
  
  .mobile-order-2 {
    order: 2 !important;
  }
  
  .mobile-order-3 {
    order: 3 !important;
  }
  
  .mobile-order-4 {
    order: 4 !important;
  }
  
  .mobile-order-5 {
    order: 5 !important;
  }
}

/* ====== Mobile-friendly cards ====== */

/* Card that expands to full width on mobile */
@media (max-width: 767px) {
  .card-mobile-fluid {
    margin-left: -0.75rem;
    margin-right: -0.75rem;
    border-radius: 0 !important;
    border-left: none;
    border-right: none;
  }
}

/* ====== Mobile-specific gaps ====== */

/* Gap for flex containers - smaller on mobile, larger on desktop */
.gap-responsive {
  gap: 0.5rem;
}

@media (min-width: 768px) {
  .gap-responsive {
    gap: 1rem;
  }
}

@media (min-width: 992px) {
  .gap-responsive {
    gap: 1.5rem;
  }
}

/* ====== Mobile scrolling helpers ====== */

/* Horizontal scrolling container for mobile */
.scroll-container-x {
  display: flex;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
  scrollbar-width: none; /* Hide scrollbar in Firefox */
  padding-bottom: 10px; /* Space for scrollbar */
  margin-bottom: -10px; /* Compensate for padding */
}

/* Hide scrollbar in Webkit browsers */
.scroll-container-x::-webkit-scrollbar {
  display: none;
}

.scroll-container-x > * {
  scroll-snap-align: start;
  flex: 0 0 auto;
}

@media (min-width: 768px) {
  .scroll-container-x {
    flex-wrap: wrap;
    overflow-x: visible;
    scroll-snap-type: none;
  }
}
/* Enhanced Navbar Styles */

/* Navbar Base */
.navbar-sticky {
  position: sticky;
  top: 0;
  z-index: 1040;
  transition: all 0.3s ease;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  width: 100%;
  background-color: var(--brand-blue-dark);
}

/* Navbar Scroll Effects */
.navbar-scrolled {
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
}

/* Auto-hide on scroll down (mobile only) */
.navbar-hidden {
  transform: translateY(-100%);
}

/* Brand Colors - Matching existing theme */
.tw-nav {
  background-color: var(--brand-blue-dark) !important;
  min-height: 70px;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  transition: all 0.3s ease;
  width: 100%;
}

/* Navbar Logo */
.navbar-logo {
  height: 100%;
  max-height: 56px;
  transition: max-height 0.3s ease;
}

.navbar-scrolled .navbar-logo {
  max-height: 48px;
}

/* Mobile Menu Toggle Button */
.mobile-menu-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem;
  border-radius: 50%;
  width: 44px; /* Increased touch target size */
  height: 44px; /* Increased touch target size */
  background-color: var(--brand-blue-main);
  color: white;
  border: none;
  transition: all 0.2s ease;
  margin-right: 8px;
}

.mobile-menu-toggle:hover {
  background-color: var(--brand-blue-light);
  transform: scale(1.05);
}

.mobile-menu-toggle:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(79, 144, 255, 0.5);
}

/* Mobile menu toggle icon size */
.mobile-menu-toggle svg,
.mobile-menu-toggle i {
  font-size: 22px;
  width: 22px;
  height: 22px;
}

/* Responsive Adjustments */
@media (max-width: 991.98px) {
  .navbar-sections {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
  }
  
  .navbar-logo-section {
    flex: 0 0 auto;
    max-width: none;
  }
  
  .navbar-mobile-icons {
    margin-left: auto;
    display: flex;
    gap: 8px;
  }
  
  .navbar-logo {
    max-height: 48px;
  }
}

@media (max-width: 575.98px) {
  .navbar-sections {
    padding-top: 0.4rem;
    padding-bottom: 0.4rem;
  }
  
  .navbar-logo {
    max-height: 40px; /* Even smaller logo on mobile */
  }
  
  /* Adjust search button on smallest screens */
  .search-button-mobile {
    width: 40px;
    height: 40px;
    padding: 8px !important;
  }
  
  .search-button-mobile span {
    display: none !important;
  }
  
  /* Ensure all navbar buttons have proper touch targets */
  .navbar .btn,
  .navbar-nav .nav-link,
  .dropdown-toggle {
    min-height: 44px;
    display: flex;
    align-items: center;
  }
}

/* Dropdown Menu Enhancements */
.dropdown-menu {
  border: none;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  padding: 0.5rem 0;
  margin-top: 0.5rem;
  transition: all 0.2s ease;
}

.dropdown-item {
  padding: 0.75rem 1rem; /* Increased padding for better touch targets */
  transition: all 0.15s ease;
  white-space: normal; /* Allow text to wrap on smaller screens */
  display: flex;
  align-items: center;
}

.dropdown-item:hover {
  background-color: rgba(0, 60, 160, 0.05);
}

.dropdown-item:active {
  background-color: var(--brand-blue-main);
  color: white;
}

/* Mobile enhancements for dropdown menus */
@media (max-width: 767.98px) {
  .dropdown-menu {
    width: 94vw; /* Nearly full width on mobile */
    max-width: 360px;
    left: 50% !important;
    right: auto !important;
    transform: translateX(-50%);
    box-shadow: 0 5px 15px rgba(0,0,0,0.15);
    border-radius: 12px;
  }
  
  .dropdown-item {
    padding: 0.85rem 1rem; /* Even larger touch targets on mobile */
    font-size: 1rem;
    border-bottom: 1px solid rgba(0,0,0,0.05);
  }
  
  .dropdown-item:last-child {
    border-bottom: none;
  }
  
  /* Add visual cues that items are tappable */
  .dropdown-item i,
  .dropdown-item svg {
    margin-right: 10px;
    opacity: 0.7;
    font-size: 18px;
  }
  
  /* Better hover state on mobile */
  .dropdown-item:hover,
  .dropdown-item:active,
  .dropdown-item:focus {
    background-color: rgba(13, 110, 253, 0.1);
  }
}

/* Search Modal Enhancements */
.modal-content {
  border: none;
  border-radius: 12px;
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
  overflow: hidden;
}

.modal-header {
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  padding: 1rem 1.5rem;
}

.modal-body {
  padding: 1.5rem;
}

.modal-footer {
  border-top: 1px solid rgba(0, 0, 0, 0.05);
  padding: 1rem 1.5rem;
}

/* Mobile search modal adjustments */
@media (max-width: 767.98px) {
  .modal-dialog {
    margin: 1rem;
  }
  
  .modal-content {
    border-radius: 10px;
  }
  
  .modal-header {
    padding: 0.75rem 1rem;
  }
  
  .modal-body {
    padding: 1rem;
  }
  
  /* Search input optimized for mobile */
  .modal-body .form-control {
    font-size: 16px; /* Prevent iOS zoom */
    padding: 12px;
    height: auto;
  }
  
  /* Larger close button for touch */
  .modal-header .btn-close {
    padding: 0.6rem;
    margin: -0.6rem;
  }
}

/* Avatar Initials */
.avatar-initials {
  transition: all 0.2s ease;
}

.avatar-initials:hover {
  transform: scale(1.05);
}

/* Navbar Links Animation */
.navbar-nav .nav-link {
  position: relative;
  transition: all 0.2s ease;
}

.navbar-nav .nav-link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 50%;
  width: 0;
  height: 2px;
  background-color: var(--brand-yellow);
  transition: all 0.3s ease;
  transform: translateX(-50%);
  opacity: 0;
}

.navbar-nav .nav-link:hover::after,
.navbar-nav .nav-link.active::after {
  width: 80%;
  opacity: 1;
}

/* Custom Button Styles */
.tw-btn-primary {
  background-color: var(--brand-blue-main);
  color: white;
  border: none;
  transition: all 0.2s ease;
}

.tw-btn-primary:hover {
  background-color: var(--brand-blue-light);
  color: white;
  transform: translateY(-1px);
}

.tw-btn-primary:active {
  transform: translateY(0);
}

/* Notification Badge: transitions and animations disabled */
.badge {
  transition: none;
}
/* Notification styling */

/* Unread notification styling */
.notification-unread {
  background-color: rgba(13, 110, 253, 0.1);
  border-left: 4px solid #0d6efd;
}

/* Read notification styling */
.notification-read {
  border-left: 4px solid #6c757d;
}

/* Notification card styling */
.notification-card {
  transition: all 0.2s ease;
  margin-bottom: 0.5rem;
}

.notification-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

/* Notification type icons */
.notification-icon-danger {
  color: #dc3545;
}

.notification-icon-warning {
  color: #ffc107;
}

.notification-icon-info {
  color: #0dcaf0;
}

.notification-icon-success {
  color: #198754;
}

.notification-icon-primary {
  color: #0d6efd;
}

/* Notification status badges */
.notification-badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  border-radius: 1rem;
}

.notification-badge-unread {
  background-color: rgba(13, 110, 253, 0.1);
  color: #0d6efd;
  font-weight: bold;
}

.notification-badge-read {
  background-color: rgba(108, 117, 125, 0.1);
  color: #6c757d;
}

/* Custom scrollbar for notification lists */
.notification-scrollbar {
  max-height: 400px;
  overflow-y: auto;
}

.notification-scrollbar::-webkit-scrollbar {
  width: 6px;
}

.notification-scrollbar::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 10px;
}

.notification-scrollbar::-webkit-scrollbar-thumb {
  background: #c1c1c1;
  border-radius: 10px;
}

.notification-scrollbar::-webkit-scrollbar-thumb:hover {
  background: #a8a8a8;
}
/* Off-canvas Sidebar Styles */

/* Offcanvas menu button in navbar */
.offcanvas-menu-btn {
  background: transparent !important;
  border: none !important;
  color: var(--brand-yellow) !important;
  border-bottom: 3px solid var(--brand-yellow) !important;
  border-radius: 0 !important;
  transition: all 0.2s ease;
  font-weight: 600;
}

.offcanvas-menu-btn:hover {
  background: transparent !important;
  color: var(--brand-yellow) !important;
  border-bottom-color: var(--brand-yellow) !important;
}

.offcanvas-menu-btn:focus {
  background: transparent !important;
  color: var(--brand-yellow) !important;
  border-bottom-color: var(--brand-yellow) !important;
  box-shadow: none !important;
}

/* Smooth transitions for off-canvas */
.offcanvas {
  transition: transform 0.3s ease-in-out;
  overflow-x: hidden; /* Prevent horizontal scrollbar */
}

/* Custom header styling */
.offcanvas-header {
  background: var(--brand-blue-dark) !important;
  border-bottom: 1px solid rgba(237, 180, 2, 0.2);
}

.offcanvas-title {
  font-weight: 600;
  font-size: 1.1rem;
}

/* Navigation sections */
.offcanvas-body {
  overflow-x: hidden; /* Prevent horizontal scrollbar from inner content */
  padding: 8px 10px !important; /* Reduce default padding to fit more items */
}

/* Reduce padding on section headers inside offcanvas */
.offcanvas-body .px-3.py-2 {
  padding: 6px 10px !important;
}

/* Reduce horizontal padding on lists */
.offcanvas-body .px-2 {
  padding-left: 6px !important;
  padding-right: 6px !important;
}

.offcanvas-body .nav-link {
  color: var(--brand-blue-main);
  transition: all 0.2s ease;
  border-radius: 8px;
  margin-bottom: 2px;
  font-weight: 500;
  padding: 8px 12px; /* Reduced padding to show more items */
}

.offcanvas-body .nav-link:hover {
  background-color: #e6e8eb;
  color: var(--brand-blue-light);
  transform: translateX(2px); /* Smaller shift to avoid potential overflow */
}

.offcanvas-body .nav-link.bg-primary {
  background-color: var(--brand-blue-main) !important;
  color: white !important;
  box-shadow: 0 2px 4px rgba(0, 60, 160, 0.3);
}

.offcanvas-body .nav-link.bg-primary:hover {
  background-color: var(--brand-blue-light) !important;
  transform: translateX(0);
}

/* Section headers */
.offcanvas-body .bg-light {
  background-color: #e2e4e7 !important;
  border-color: #d9dce0 !important;
}

.offcanvas-body .text-muted {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.5px;
  color: var(--brand-blue-dark) !important;
}

/* Icons */
.offcanvas-body .nav-link i {
  width: 20px;
  text-align: center;
  opacity: 0.8;
}

.offcanvas-body .nav-link:hover i,
.offcanvas-body .nav-link.bg-primary i {
  opacity: 1;
}

/* Badges */
.offcanvas-body .badge {
  font-size: 0.7rem;
  font-weight: 600;
  background-color: var(--brand-yellow) !important;
  color: var(--brand-blue-dark) !important;
}

/* Footer section */
.offcanvas-body .mt-auto {
  background-color: #e2e4e7;
  border-top: 1px solid #d9dce0;
}

/* Backdrop blur effect */
.offcanvas-backdrop {
  backdrop-filter: blur(4px);
  background-color: rgba(1, 47, 88, 0.4);
}

/* Mobile optimizations */
@media (max-width: 576px) {
  .offcanvas {
    width: 85vw !important;
  }
  
  .offcanvas-body .nav-link {
    padding: 10px 12px; /* Reduced padding on mobile */
    font-size: 0.95rem;
  }
  
  .offcanvas-body .nav-link i {
    width: 24px;
    font-size: 1.1rem;
  }
}

/* Tablet optimizations */
@media (min-width: 577px) and (max-width: 991px) {
  .offcanvas {
    width: 320px !important;
  }
}

/* Desktop optimizations */
@media (min-width: 992px) {
  .offcanvas {
    width: 350px !important;
  }
}

/* Accessibility improvements */
.offcanvas-body .nav-link:focus {
  outline: 2px solid var(--brand-blue-light);
  outline-offset: 2px;
}

/* Animation for menu items */
.offcanvas-body .nav-link {
  animation: slideInLeft 0.3s ease-out;
}

@keyframes slideInLeft {
  from {
    opacity: 0;
    transform: translateX(-20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* Stagger animation for menu sections */
.offcanvas-body .px-2:nth-child(2) .nav-link {
  animation-delay: 0.1s;
}

.offcanvas-body .px-2:nth-child(4) .nav-link {
  animation-delay: 0.2s;
}

.offcanvas-body .px-2:nth-child(6) .nav-link {
  animation-delay: 0.3s;
}

.offcanvas-body .px-2:nth-child(8) .nav-link {
  animation-delay: 0.4s;
}

/* Scrollbar styling for long menus */
.offcanvas-body::-webkit-scrollbar {
  width: 6px;
}

.offcanvas-body::-webkit-scrollbar-track {
  background: #f1f1f1;
}

.offcanvas-body::-webkit-scrollbar-thumb {
  background: #c1c1c1;
  border-radius: 3px;
}

.offcanvas-body::-webkit-scrollbar-thumb:hover {
  background: #a8a8a8;
}
/* Offline indicator styling */

/* Offline indicator container */
.offline-indicator {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  background-color: #f8d7da;
  color: #842029;
  padding: 0.75rem;
  text-align: center;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  z-index: 2000; /* Above most content */
  font-weight: 500;
  font-size: 0.9rem;
  display: none; /* Hidden by default */
  animation: slide-down 0.3s ease-in-out;
}

/* Pulsing dot animation */
.offline-indicator span {
  animation: pulse 2s infinite;
  color: #dc3545;
  font-size: 1.2rem;
  line-height: 1;
}

/* Offline indicator animations */
@keyframes pulse {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.3;
  }
  100% {
    opacity: 1;
  }
}

@keyframes slide-down {
  from {
    transform: translateY(-100%);
  }
  to {
    transform: translateY(0);
  }
}

/* Body adjustment when offline indicator is visible */
body.has-offline-indicator {
  padding-top: 2.5rem;
}

/* Mobile-friendly adjustments */
@media (max-width: 767.98px) {
  .offline-indicator {
    font-size: 0.8rem;
    padding: 0.5rem;
  }
  
  body.has-offline-indicator {
    padding-top: 2rem;
  }
}
/* Property card styling fixes */

/* Fix for stretching cards */
.listing-item {
  display: flex;
}

.listing-item .card {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.listing-item .card .card-body {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
  padding: 1rem; /* Default padding */
}

.listing-item .card .card-footer {
  margin-top: auto;
}

/* Card image defaults: do not force a global fixed height here.
   Let component classes (e.g., h-176) control height to avoid
   inconsistent spacing in grids. */
.card-img-top {
  object-fit: cover;
  width: 100%;
}

/* Height utility classes - used by rental and shortstay cards */
.h-176 {
  height: 176px; /* Default height for desktop */
}

.h-137 {
  height: 137px; /* Default height for smaller cards */
}

/* Card title text handling */
.card-title.text-truncate,
.text-truncate {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

/* Spacing for property details */
.property-details {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

/* Make touch targets bigger */
.card a, 
.card-body .d-flex > div,
.property-details span {
  min-height: 32px;
  display: flex;
  align-items: center;
}

/* Responsive adjustments */
@media (max-width: 991.98px) {
  .h-176 {
    height: 160px; /* Slightly shorter on tablet */
  }
  
  .h-137 {
    height: 130px;
  }
  
  .card-img-top {
    height: auto; /* Let the height be determined by the container */
  }
  
  .card-body p {
    margin-bottom: 0.35rem;
  }
}

/* Mobile adjustments */
@media (max-width: 767.98px) {
  .h-176 {
    height: 140px; /* Even shorter on mobile */
  }
  
  .h-137 {
    height: 120px;
  }
  
  .listing-item .card .card-body {
    padding: 0.75rem; /* Less padding on mobile */
  }
  
  .card-title {
    font-size: 0.9rem; /* Smaller font on mobile */
  }
  
  /* Simplify property details on very small screens */
  .property-details {
    gap: 0.35rem;
  }
}

/* Small mobile screens */
@media (max-width: 480px) {
  .h-176 {
    height: 120px; /* Shortest on smallest screens */
  }
  
  .h-137 {
    height: 100px;
  }
  
  .listing-item .card .card-body {
    padding: 0.5rem; /* Minimal padding on smallest screens */
  }
  
  .card-body p {
    margin-bottom: 0.25rem;
    font-size: 0.8rem;
  }
  
  /* Hide some less important info on very small screens */
  .d-sm-none {
    display: none !important;
  }
}

/* Card hover effects */
.hover-lift:hover {
  transform: translateY(-3px);
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
  transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}

/* Ensure cards have proper border-radius throughout */
.rounded-12 {
  border-radius: 12px !important;
}

/* Ensure all card shadows are consistent */
.shadow-sm {
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
/* Rental Agreement Styling */

.document-container {
  font-family: 'Georgia', serif;
  line-height: 1.6;
}

.document-container h3 {
  margin-top: 1.5rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid #dee2e6;
  color: #212529;
}

.document-container h4 {
  margin-top: 1.2rem;
  color: #495057;
}

/* Payment Terms Section Highlighting */
.document-container .payment-terms-header {
  background-color: #e9f5ff;
  padding: 0.75rem;
  border-left: 4px solid #0d6efd;
  margin-left: -0.75rem;
  margin-right: -0.75rem;
  color: #0d6efd;
  font-weight: 600;
}

/* Code blocks for formulas */
.document-container pre {
  background-color: #f8f9fa;
  border: 1px solid #dee2e6;
  border-radius: 4px;
  padding: 1rem;
  margin: 1rem 0;
}

/* Payment formula special styling */
.document-container .payment-formula {
  background-color: #fff8e6;
  border: 1px solid #ffd166;
  border-left: 4px solid #ffd166;
  font-family: 'Courier New', monospace;
  font-weight: 600;
}

/* Bold text emphasis */
.document-container strong {
  color: #0d6efd;
}

/* Total amounts emphasis */
.document-container .total-payment {
  color: #198754;
  font-size: 1.1em;
  background-color: #e9f7f0;
  padding: 0.5rem 1rem;
  border-radius: 4px;
  display: inline-block;
  margin: 1rem 0;
}

/* Print styles */
@media print {
  .document-container {
    font-size: 12pt;
  }
  
  .document-container h3 {
    page-break-after: avoid;
  }
  
  .document-container pre {
    page-break-inside: avoid;
  }
}
/* Responsive Design Enhancements for Gogolo */

/* Base responsive adjustments */
html {
  box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

/* Mobile-first approach */
body {
  min-width: 320px; /* Minimum supported width */
  overflow-x: hidden; /* Prevent horizontal scrolling */
}

/* Responsive typography */
@media (max-width: 640px) {
  .tw-page-title {
    font-size: 1.5rem; /* Smaller on mobile */
  }
  
  .tw-section-title {
    font-size: 1.25rem; /* Smaller on mobile */
  }
  
  .tw-card-title {
    font-size: 1.125rem; /* Smaller on mobile */
  }
}

/* Responsive form elements */
@media (max-width: 640px) {
  .tw-form-input,
  .tw-form-select,
  .tw-form-textarea {
    font-size: 16px; /* Prevent iOS zoom on focus */
    padding: 0.5rem; /* Slightly larger touch target */
  }
  
  .tw-form-label {
    margin-bottom: 0.25rem; /* Tighter spacing on mobile */
  }
}

/* Responsive buttons */
@media (max-width: 640px) {
  .tw-btn-primary,
  .tw-btn-secondary,
  .tw-btn-outline,
  .tw-btn-ghost {
    width: 100%; /* Full width on mobile */
    margin-bottom: 0.5rem; /* Spacing between stacked buttons */
  }
  
  .tw-btn-sm {
    padding: 0.375rem 0.75rem; /* Slightly larger on mobile for touch */
  }
}

/* Responsive cards */
@media (max-width: 640px) {
  .tw-card {
    margin-bottom: 1rem; /* More spacing between cards */
  }
  
  .tw-card-body {
    padding: 1rem; /* Smaller padding on mobile */
  }
}

/* Responsive tables */
@media (max-width: 768px) {
  .tw-table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
  
  .tw-table-responsive {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  
  .tw-table-responsive thead {
    display: none; /* Hide headers on small screens */
  }
  
  .tw-table-responsive tbody tr {
    display: block;
    margin-bottom: 1rem;
    border: 1px solid #e5e7eb;
  }
  
  .tw-table-responsive tbody td {
    display: block;
    text-align: right;
    padding: 0.5rem;
    border: none;
    border-bottom: 1px solid #e5e7eb;
  }
  
  .tw-table-responsive tbody td:before {
    content: attr(data-label);
    float: left;
    font-weight: bold;
  }
  
  .tw-table-responsive tbody td:last-child {
    border-bottom: none;
  }
}

/* Responsive grid layouts */
.tw-responsive-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1rem;
}

/* Responsive images */
.tw-responsive-image {
  max-width: 100%;
  height: auto;
}

/* Responsive map containers */
@media (max-width: 768px) {
  [id^="map-"] {
    height: 300px !important; /* Smaller maps on mobile */
  }
  
  .sticky.top-20 {
    position: relative !important; /* Non-sticky on mobile */
    top: 0 !important;
  }
}

/* Responsive navigation */
@media (max-width: 768px) {
  .tw-breadcrumbs {
    flex-wrap: wrap;
    font-size: 0.875rem;
  }
}

/* Responsive alerts */
@media (max-width: 640px) {
  .tw-alert {
    padding: 0.75rem;
  }
  
  .tw-alert-title {
    font-size: 1rem;
  }
}

/* Responsive modals */
@media (max-width: 640px) {
  .tw-modal {
    width: 95%;
    max-width: none;
  }
}

/* Responsive tabs */
@media (max-width: 640px) {
  .tw-tabs {
    flex-wrap: wrap;
  }
  
  .tw-tab {
    flex: 1 0 auto;
    text-align: center;
    padding: 0.5rem;
  }
}

/* Responsive pagination */
@media (max-width: 640px) {
  .tw-pagination {
    justify-content: center;
  }
  
  .tw-pagination-item:not(.tw-pagination-prev):not(.tw-pagination-next):not(.tw-pagination-active) {
    display: none;
  }
}

/* Responsive dropdowns */
@media (max-width: 640px) {
  .tw-dropdown-menu {
    position: fixed;
    top: auto;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    border-radius: 0.5rem 0.5rem 0 0;
    transform: translateY(100%);
    transition: transform 0.3s ease;
    max-height: 50vh;
    overflow-y: auto;
  }
  
  .tw-dropdown-menu.show {
    transform: translateY(0);
  }
  
  .tw-dropdown-item {
    padding: 0.75rem 1rem;
  }
}

/* Responsive sidebar */
@media (max-width: 768px) {
  #sidebar {
    width: 100% !important;
    position: fixed !important;
    left: 0;
    top: 70px !important;
    transform: translateX(-100%);
    transition: transform 0.3s ease;
    z-index: 50;
  }
  
  #sidebar.expanded {
    transform: translateX(0);
  }
}

/* Responsive footer */
@media (max-width: 640px) {
  footer .flex {
    flex-direction: column;
    text-align: center;
  }
  
  footer .justify-between > div {
    margin-bottom: 1rem;
  }
}

/* Print styles */
@media print {
  .no-print {
    display: none !important;
  }
  
  body {
    background-color: white !important;
    color: black !important;
  }
  
  .tw-card {
    box-shadow: none !important;
    border: 1px solid #e5e7eb !important;
  }
  
  a {
    text-decoration: none !important;
    color: black !important;
  }
  
  .tw-btn-primary,
  .tw-btn-secondary,
  .tw-btn-outline,
  .tw-btn-ghost {
    display: none !important;
  }
}

/* High contrast mode adjustments */
@media (forced-colors: active) {
  .tw-btn-primary,
  .tw-btn-secondary,
  .tw-btn-outline,
  .tw-btn-ghost {
    forced-color-adjust: none;
    border: 2px solid currentColor;
  }
  
  .tw-card {
    forced-color-adjust: none;
    border: 1px solid currentColor;
  }
}
/* Reusable Image Uploader styles */
.riu { margin-top: 4px; }

/* Dropzone */
.riu-dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 10px;
  background: #fafafa;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}
.riu-dropzone:hover {
  background: #f5f8ff;
  border-color: #93c5fd;
}
.riu-dropzone.is-dragover {
  background: #eef6ff;
  border-color: #60a5fa;
  box-shadow: inset 0 0 0 2px #bfdbfe;
}
.riu-dropzone .riu-instructions {
  color: #475569;
}
.riu-dropzone .riu-icon {
  font-size: 28px;
  color: #2563eb;
}

/* Previews grid */
.riu-previews {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 10px;
  min-height: 20px; /* Ensure container is visible even when empty */
}
.riu-thumb {
  width: 100%;
  height: 120px;
  position: relative;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.riu-thumb-inner {
  width: 100%;
  height: 100%;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}
.riu-thumb-inner img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Drag handle */
.riu-handle {
  position: absolute;
  top: 6px;
  left: 6px;
  background: rgba(0,0,0,0.55);
  color: #fff;
  border-radius: 6px;
  padding: 2px 6px;
  font-size: 12px;
  line-height: 1;
  cursor: grab;
  user-select: none;
}

/* Actions hover-reveal */
.riu-actions {
  position: absolute;
  bottom: 6px;
  left: 6px;
  right: 6px;
  display: flex;
  justify-content: space-between;
  gap: 6px;
  opacity: 0;
  transition: opacity 0.15s ease;
}
.riu-thumb-inner:hover + .riu-actions,
.riu-thumb:hover .riu-actions {
  opacity: 1;
}

/* Cover badge */
.riu-badge-cover {
  position: absolute;
  top: 6px;
  right: 6px;
  background: #2563eb;
  color: #fff;
  border-radius: 999px;
  font-size: 11px;
  padding: 3px 8px;
  line-height: 1;
  display: none;
}
.riu-thumb.is-cover .riu-badge-cover { display: inline-block; }
.riu-thumb.is-cover .riu-thumb-inner {
  outline: 2px solid #2563eb;
  box-shadow: 0 0 0 2px #bfdbfe inset;
}

/* Dragging state */
.riu-thumb.is-dragging { opacity: 0.6; }

/* Focus visibility for accessibility */
.riu-dropzone:focus-visible { outline: 3px solid #2563eb; outline-offset: 2px; }
/* Theme Styles for Light/Dark Mode */

/* Light Theme (Default) */
:root {
  --body-bg: #f8f9fa;
  --body-color: #212529;
  --card-bg: #ffffff;
  --card-border: #dee2e6;
  --input-bg: #ffffff;
  --input-border: #ced4da;
  --sidebar-bg: #e2e4e7;
  --sidebar-hover: rgba(0, 60, 160, 0.05);
  --sidebar-active: rgba(0, 60, 160, 0.1);
  --navbar-bg: var(--brand-blue-dark);
  --navbar-color: #ffffff;
  --dropdown-bg: #ffffff;
  --dropdown-border: rgba(0, 0, 0, 0.15);
  --dropdown-link-hover: #f8f9fa;
  --modal-bg: #ffffff;
  --toast-bg: #ffffff;
  --toast-header-bg: rgba(255, 255, 255, 0.85);
  --shadow-color: rgba(0, 0, 0, 0.15);
}

/* Dark Theme */
[data-bs-theme="dark"] {
  --body-bg: #212529;
  --body-color: #f8f9fa;
  --card-bg: #2c3034;
  --card-border: #495057;
  --input-bg: #2c3034;
  --input-border: #495057;
  --sidebar-bg: #343a40;
  --sidebar-hover: rgba(255, 255, 255, 0.05);
  --sidebar-active: rgba(255, 255, 255, 0.1);
  --navbar-bg: #212529;
  --navbar-color: #ffffff;
  --dropdown-bg: #343a40;
  --dropdown-border: rgba(255, 255, 255, 0.15);
  --dropdown-link-hover: #2c3034;
  --modal-bg: #343a40;
  --toast-bg: #343a40;
  --toast-header-bg: rgba(52, 58, 64, 0.85);
  --shadow-color: rgba(0, 0, 0, 0.5);
}

/* Apply theme variables */
body {
  background-color: var(--body-bg);
  color: var(--body-color);
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* Navbar theme */
.tw-nav {
  background-color: var(--navbar-bg) !important;
  color: var(--navbar-color);
}

/* Sidebar theme */
.sidebar {
  background-color: var(--sidebar-bg) !important;
  box-shadow: 0 0 10px var(--shadow-color);
}

.sidebar .nav-link:hover:not(.active) {
  background-color: var(--sidebar-hover);
}

.sidebar .nav-link.active {
  background-color: var(--sidebar-active);
}

/* Card theme */
.card {
  background-color: var(--card-bg);
  border-color: var(--card-border);
}

.card-header {
  border-bottom-color: var(--card-border);
}

/* Form controls */
.form-control, .form-select {
  background-color: var(--input-bg);
  border-color: var(--input-border);
  color: var(--body-color);
}

/* Dropdowns */
.dropdown-menu {
  background-color: var(--dropdown-bg);
  border-color: var(--dropdown-border);
}

.dropdown-item:hover {
  background-color: var(--dropdown-link-hover);
}

/* Modals */
.modal-content {
  background-color: var(--modal-bg);
}

/* Theme toggle icon */
[data-bs-theme="light"] [data-bs-theme-value="light"] {
  display: inline-block !important;
}

[data-bs-theme="light"] [data-bs-theme-value="dark"] {
  display: none !important;
}

[data-bs-theme="dark"] [data-bs-theme-value="light"] {
  display: none !important;
}

[data-bs-theme="dark"] [data-bs-theme-value="dark"] {
  display: inline-block !important;
}

/* Theme transition */
.theme-transition {
  transition: all 0.3s ease;
}

/* Improved contrast for dark mode links */
[data-bs-theme="dark"] a:not(.btn):not(.nav-link) {
  color: var(--brand-blue-light);
}

[data-bs-theme="dark"] a:not(.btn):not(.nav-link):hover {
  color: #6fa8ff;
}

/* Dark mode table styling */
[data-bs-theme="dark"] .table {
  color: var(--body-color);
}

[data-bs-theme="dark"] .table-striped > tbody > tr:nth-of-type(odd) > * {
  background-color: rgba(255, 255, 255, 0.05);
}

/* Dark mode borders */
[data-bs-theme="dark"] .border,
[data-bs-theme="dark"] .border-top,
[data-bs-theme="dark"] .border-end,
[data-bs-theme="dark"] .border-bottom,
[data-bs-theme="dark"] .border-start {
  border-color: var(--card-border) !important;
}

/* Dark mode alerts */
[data-bs-theme="dark"] .alert-success {
  background-color: rgba(25, 135, 84, 0.2);
  border-color: rgba(25, 135, 84, 0.4);
  color: #75b798;
}

[data-bs-theme="dark"] .alert-danger {
  background-color: rgba(220, 53, 69, 0.2);
  border-color: rgba(220, 53, 69, 0.4);
  color: #ea868f;
}

[data-bs-theme="dark"] .alert-warning {
  background-color: rgba(255, 193, 7, 0.2);
  border-color: rgba(255, 193, 7, 0.4);
  color: #ffda6a;
}

[data-bs-theme="dark"] .alert-info {
  background-color: rgba(13, 202, 240, 0.2);
  border-color: rgba(13, 202, 240, 0.4);
  color: #6edff6;
}
/* Kyasina Typography Styles */

/* Base Typography */
/* 
 * REMOVED: Tailwind base typography styles
 * REPLACED WITH: Bootstrap typography
 * 
 * Bootstrap already provides base typography styles.
 * You can customize the font family by setting the $font-family-sans-serif variable in Bootstrap.
 * 
 * For custom fonts, add them to your CSS and they will override Bootstrap's defaults:
 * body {
 *   font-family: 'Inter', system-ui, sans-serif;
 * }
 */

/* Headings */
/* 
 * REMOVED: Tailwind heading styles
 * REPLACED WITH: Bootstrap heading styles
 * 
 * Use the following Bootstrap classes instead:
 * - h1-h6 HTML elements or .h1-.h6 classes for heading styles
 * - .display-1 through .display-6 for larger, more prominent headings
 * - .fw-bold, .fw-semibold, etc. for font weights
 * - .text-primary, .text-secondary, etc. for text colors
 * 
 * Examples:
 * <h1 class="display-4 fw-bold text-primary">Heading 1</h1>
 * <h2 class="h2 fw-semibold text-secondary">Heading 2</h2>
 */

/* Responsive Headings */
/* 
 * REMOVED: Tailwind responsive heading styles
 * REPLACED WITH: Bootstrap responsive typography
 * 
 * Bootstrap's typography is already responsive by default.
 * For custom responsive behavior, use the responsive variants of Bootstrap classes:
 * 
 * Examples:
 * <h1 class="display-4 display-md-3 display-lg-2">Responsive Heading</h1>
 * <p class="fs-6 fs-md-5 fs-lg-4">Responsive text</p>
 */

/* Paragraphs */
/* 
 * REMOVED: Tailwind paragraph styles
 * REPLACED WITH: Bootstrap paragraph styles
 * 
 * Bootstrap already provides paragraph styles.
 * For custom styling, use Bootstrap's utility classes:
 * 
 * Examples:
 * <p class="lead">Lead paragraph</p>
 * <p class="text-muted">Muted paragraph</p>
 */

/* Text Sizes */
/* 
 * REMOVED: Tailwind text size classes
 * REPLACED WITH: Bootstrap font size utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .fs-1 through .fs-6 for predefined font sizes
 * - .small for smaller text (typically 80% of the parent)
 * - .lead for larger intro text
 * 
 * Bootstrap font size scale:
 * - .fs-1: ~2.5rem (40px)
 * - .fs-2: ~2rem (32px)
 * - .fs-3: ~1.75rem (28px)
 * - .fs-4: ~1.5rem (24px)
 * - .fs-5: ~1.25rem (20px)
 * - .fs-6: ~1rem (16px)
 * 
 * Examples:
 * <p class="fs-6">Default size text</p>
 * <p class="fs-5">Slightly larger text</p>
 * <p class="fs-4">Even larger text</p>
 */

/* Font Weights */
/* 
 * REMOVED: Tailwind font weight classes
 * REPLACED WITH: Bootstrap font weight utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .fw-bold: font-weight: 700
 * - .fw-bolder: font-weight: bolder (relative to parent)
 * - .fw-semibold: font-weight: 600
 * - .fw-medium: font-weight: 500
 * - .fw-normal: font-weight: 400
 * - .fw-light: font-weight: 300
 * - .fw-lighter: font-weight: lighter (relative to parent)
 * 
 * Examples:
 * <p class="fw-bold">Bold text</p>
 * <p class="fw-normal">Normal weight text</p>
 * <p class="fw-light">Light weight text</p>
 */

/* Font Families */
/* 
 * REMOVED: Tailwind font family classes
 * REPLACED WITH: Bootstrap font family utilities
 * 
 * Bootstrap uses system font stacks by default. For custom fonts, you can:
 * 
 * 1. Override Bootstrap variables in your Sass files (preferred method):
 *    $font-family-sans-serif: 'Inter', system-ui, sans-serif;
 *    $font-family-monospace: 'Roboto Mono', monospace;
 * 
 * 2. Or add custom CSS classes:
 *    .font-display {
 *      font-family: 'Gilroy Bold', system-ui, sans-serif;
 *    }
 *    .font-body {
 *      font-family: 'Inter', system-ui, sans-serif;
 *    }
 * 
 * Bootstrap also provides:
 * - .font-monospace for monospace text
 */

/* Text Colors */
/* 
 * REMOVED: Tailwind text color classes
 * REPLACED WITH: Bootstrap text color utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .text-primary: Primary brand color
 * - .text-secondary: Secondary brand color
 * - .text-success: Success color (green)
 * - .text-danger: Danger color (red)
 * - .text-warning: Warning color (yellow)
 * - .text-info: Info color (cyan)
 * - .text-light: Light color
 * - .text-dark: Dark color
 * - .text-muted: Muted color
 * - .text-white: White color
 * - .text-body: Default body color
 * 
 * For custom brand colors, you can either:
 * 1. Override Bootstrap's theme colors in your Sass files
 * 2. Create custom CSS classes for specific brand colors
 * 
 * Example:
 * <p class="text-primary">Primary color text</p>
 * <p class="text-secondary">Secondary color text</p>
 */

/* Text Alignment */
/* 
 * REMOVED: Tailwind text alignment classes
 * REPLACED WITH: Bootstrap text alignment utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .text-start: Text aligned to start (left in LTR)
 * - .text-center: Centered text
 * - .text-end: Text aligned to end (right in LTR)
 * 
 * Responsive variants are also available:
 * - .text-{breakpoint}-start
 * - .text-{breakpoint}-center
 * - .text-{breakpoint}-end
 * 
 * Examples:
 * <p class="text-center">Centered text</p>
 * <p class="text-start text-md-center text-lg-end">Responsive text alignment</p>
 */

/* Text Transforms */
/* 
 * REMOVED: Tailwind text transform classes
 * REPLACED WITH: Bootstrap text transform utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .text-uppercase: Transform text to uppercase
 * - .text-lowercase: Transform text to lowercase
 * - .text-capitalize: Capitalize first letter of each word
 * 
 * Examples:
 * <p class="text-uppercase">uppercase text</p>
 * <p class="text-lowercase">LOWERCASE TEXT</p>
 * <p class="text-capitalize">capitalized text</p>
 */

/* Text Decoration */
/* 
 * REMOVED: Tailwind text decoration classes
 * REPLACED WITH: Bootstrap text decoration utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .text-decoration-underline: Underlined text
 * - .text-decoration-line-through: Strikethrough text
 * - .text-decoration-none: No text decoration
 * 
 * Examples:
 * <p class="text-decoration-underline">Underlined text</p>
 * <p class="text-decoration-line-through">Strikethrough text</p>
 * <a class="text-decoration-none">Link with no underline</a>
 */

/* Letter Spacing */
/* 
 * REMOVED: Tailwind letter spacing classes
 * REPLACED WITH: Bootstrap doesn't have built-in letter spacing utilities
 * 
 * For letter spacing in Bootstrap, you'll need to create custom utility classes
 * or use inline styles. Here's how you might create your own utilities:
 * 
 * .letter-spacing-tight {
 *   letter-spacing: -0.025em;
 * }
 * 
 * .letter-spacing-normal {
 *   letter-spacing: 0;
 * }
 * 
 * .letter-spacing-wide {
 *   letter-spacing: 0.025em;
 * }
 * 
 * Or use inline styles when needed:
 * <p style="letter-spacing: 0.05em;">Text with wider letter spacing</p>
 */

/* Line Heights */
/* 
 * REMOVED: Tailwind line height classes
 * REPLACED WITH: Bootstrap line height utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .lh-1: line-height: 1
 * - .lh-sm: line-height: 1.25
 * - .lh-base: line-height: 1.5
 * - .lh-lg: line-height: 2
 * 
 * Examples:
 * <p class="lh-1">Tightly spaced text with line-height: 1</p>
 * <p class="lh-sm">Slightly tighter than normal line height</p>
 * <p class="lh-base">Default line height</p>
 * <p class="lh-lg">Loose line height</p>
 */

/* Lists */
/* 
 * REMOVED: Tailwind list styles
 * REPLACED WITH: Bootstrap list styles
 * 
 * Bootstrap already provides default styling for lists.
 * For custom list styling, use these Bootstrap classes:
 * 
 * - .list-unstyled: Removes default list styling
 * - .list-inline: Creates horizontal lists with .list-inline-item for each item
 * - .list-group: Creates styled list groups (with .list-group-item)
 * 
 * Examples:
 * <ul class="list-unstyled">
 *   <li>No bullets or indentation</li>
 * </ul>
 * 
 * <ul class="list-inline">
 *   <li class="list-inline-item">Inline item 1</li>
 *   <li class="list-inline-item">Inline item 2</li>
 * </ul>
 */

/* Blockquote */
/* 
 * REMOVED: Tailwind blockquote styles
 * REPLACED WITH: Bootstrap blockquote styles
 * 
 * Use the following Bootstrap classes:
 * - <blockquote class="blockquote"> for the blockquote itself
 * - <footer class="blockquote-footer"> for the citation
 * 
 * Example:
 * <figure>
 *   <blockquote class="blockquote">
 *     <p>A well-known quote, contained in a blockquote element.</p>
 *   </blockquote>
 *   <figcaption class="blockquote-footer">
 *     Someone famous in <cite title="Source Title">Source Title</cite>
 *   </figcaption>
 * </figure>
 * 
 * For custom styling like colored borders, you can add additional classes:
 * <blockquote class="blockquote border-start border-primary border-3 ps-3">
 */

/* Links */
/* 
 * REMOVED: Tailwind link styles
 * REPLACED WITH: Bootstrap link styles
 * 
 * Bootstrap already provides default styling for links.
 * For custom link styling, use these Bootstrap classes:
 * 
 * - .link-primary, .link-secondary, etc. for colored links
 * - .text-decoration-none to remove underlines
 * - .text-decoration-underline to add underlines
 * 
 * Examples:
 * <a href="#" class="link-primary">Primary link</a>
 * <a href="#" class="link-secondary">Secondary link</a>
 * <a href="#" class="link-success">Success link</a>
 * <a href="#" class="text-decoration-none">Link with no underline</a>
 */

/* Page Title and Subtitle */
/* 
 * REMOVED: Tailwind page title and subtitle styles
 * REPLACED WITH: Bootstrap heading and display utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .display-4 or .display-5 for page titles
 * - .lead or .fs-5 with .text-muted for subtitles
 * 
 * Examples:
 * <h1 class="display-4 fw-bold text-primary mb-4">Page Title</h1>
 * <p class="lead text-secondary mb-5">Page subtitle or description text</p>
 * 
 * Alternative with more spacing:
 * <div class="mb-5">
 *   <h1 class="display-5 fw-bold text-primary mb-2">Page Title</h1>
 *   <p class="fs-5 text-muted">Page subtitle with additional context</p>
 * </div>
 */

/* Section Title and Subtitle */
/* 
 * REMOVED: Tailwind section title and subtitle styles
 * REPLACED WITH: Bootstrap heading utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .h2 or .h3 with .fw-bold for section titles
 * - .fs-5 or .fs-6 with .text-muted for section subtitles
 * 
 * Examples:
 * <h2 class="h3 fw-bold text-primary mb-3">Section Title</h2>
 * <p class="fs-5 text-muted mb-4">Section subtitle or description text</p>
 * 
 * Alternative with card styling:
 * <div class="card mb-4">
 *   <div class="card-header bg-primary text-white">
 *     <h3 class="h4 mb-0">Section Title</h3>
 *   </div>
 *   <div class="card-body">
 *     Content goes here
 *   </div>
 * </div>
 */

/* Code */
/* 
 * REMOVED: Tailwind code styles
 * REPLACED WITH: Bootstrap code styles
 * 
 * Use the following Bootstrap classes instead:
 * - <code> element for inline code (styled by Bootstrap)
 * - <pre> element for code blocks (styled by Bootstrap)
 * - .font-monospace for monospace text
 * - .bg-light for light backgrounds
 * 
 * Examples:
 * <p>Inline <code>code</code> example</p>
 * 
 * <pre class="p-3 bg-light rounded">
 * <code>// Code block example
 * function example() {
 *   return 'Hello world';
 * }</code>
 * </pre>
 * 
 * For syntax highlighting, consider using a library like Prism.js or Highlight.js
 * alongside Bootstrap's styling.
 */

/* Truncate and Text Overflow */
/* 
 * REMOVED: Tailwind truncate and word break classes
 * REPLACED WITH: Bootstrap text utilities
 * 
 * Use the following Bootstrap classes instead:
 * - .text-truncate: Truncates text with an ellipsis
 * - .text-break: Breaks long words to prevent overflow
 * - .text-wrap: Allows text to wrap
 * - .text-nowrap: Prevents text from wrapping
 * 
 * Examples:
 * <div class="text-truncate" style="max-width: 150px;">This text will be truncated with an ellipsis</div>
 * <p class="text-break">ThisIsAVeryLongWordThatWillBreakToPreventOverflow</p>
 */

/* Placeholder and Selection */
/* 
 * REMOVED: Tailwind placeholder and selection styles
 * REPLACED WITH: Bootstrap form control styling
 * 
 * Bootstrap already provides styling for form placeholders.
 * For custom placeholder styling, you can use:
 * 
 * .form-control::placeholder {
 *   color: rgba(108, 117, 125, 0.6);
 * }
 * 
 * For custom text selection styling:
 * 
 * ::selection {
 *   background-color: rgba(13, 110, 253, 0.25);
 *   color: #0d6efd;
 * }
 */
/* Reusable utility classes to reduce inline styles */

/* Heights */
.h-450 {
  height: 450px !important;
}
.h-400 {
  height: 400px !important;
}

/* Images */
.img-cover-450 {
  height: 450px !important;
  width: 100% !important;
  object-fit: cover !important;
}
.img-thumb-80x60 {
  width: 80px !important;
  height: 60px !important;
  object-fit: cover !important;
}

/* Cursor */
.pointer {
  cursor: pointer !important;
}

/* Fixed widths */
.w-80px {
  width: 80px !important;
}

/* Icon sizing and color helpers */
.icon-sm {
  font-size: 1.1rem !important;
}
.icon-xs {
  font-size: 0.92rem !important;
}
.text-sky {
  color: #87CEEB !important;
}

/* Accent underline utility (used for price frequency text) */
.underline-accent-warning {
  border-bottom: 3px solid #ffc107 !important;
  display: inline-block !important;
  padding-bottom: 2px !important;
}

/* Map wrappers */
.map-box-400 {
  position: relative !important;
  overflow: hidden !important;
  height: 400px !important;
}
.map-fill-abs {
  position: absolute !important;
  inset: 0 !important; /* top:0; right:0; bottom:0; left:0 */
}

/* Category badge styling */
.badge-category {
  background-color: #e9ecef !important;
  color: #6c757d !important;
  animation: none !important;
}

/* --- Home/Hero helpers --- */
/* Width/Height helpers */
.wh-24rem {
  width: 24rem !important;
  height: 24rem !important;
}

/* Blur filter utility */
.blur-3rem {
  filter: blur(3rem) !important;
}

/* Typography size helpers not covered by Bootstrap */
.fs-3rem { font-size: 3rem !important; }
.fs-2rem { font-size: 2rem !important; }
.fs-0-5rem { font-size: 0.5rem !important; }

/* Specific heights for card images on homepage */
.h-137 { height: 137px !important; }
.h-176 { height: 176px !important; }
.h-180 { height: 180px !important; }

/* Border radius 12px utility */
.rounded-12 { border-radius: 12px !important; }

/* Width constraints */
.minw-120 { min-width: 120px !important; }
.mw-36rem { max-width: 36rem !important; }
.maxw-500px { max-width: 500px !important; }
.maxw-200px { max-width: 200px !important; }

/* Object fit helpers */
.object-fit-cover { object-fit: cover !important; }

/* Height constraints */
.minh-240 { min-height: 240px !important; }
.maxh-320 { max-height: 320px !important; }

/* Overflow helpers */
.oy-auto { overflow-y: auto !important; }

/* Additional font sizes */
.fs-2-5rem { font-size: 2.5rem !important; }

/* Smaller map box for previews */
.map-box-300 {
  position: relative !important;
  overflow: hidden !important;
  height: 300px !important;
}

/* Fixed square sizes */
.wh-48 { width: 48px !important; height: 48px !important; }
.wh-32 { width: 32px !important; height: 32px !important; }

/* Max-width percentage utilities */
.maxw-75p { max-width: 75% !important; }
.maxw-70p { max-width: 70% !important; }

/* Max-height rem utility */
.maxh-24rem { max-height: 24rem !important; }
.maxh-200 { max-height: 200px !important; }
.maxh-300 { max-height: 300px !important; }
.maxh-150 { max-height: 150px !important; }

/* Small fixed heights */
.h-40 { height: 40px !important; }
.h-8px { height: 8px !important; }
.h-250px { height: 250px !important; }

/* Width percentage helpers */
.w-20p { width: 20% !important; }
.w-40p { width: 40% !important; }
.w-60px { width: 60px !important; }
.w-200px { width: 200px !important; }
.w-40px { width: 40px !important; }

/* Additional fixed sizes */
.wh-64 { width: 64px !important; height: 64px !important; }
.h-24 { height: 24px !important; }
.w-160px { width: 160px !important; }
.h-120px { height: 120px !important; }

/* Additional max-heights */
.maxh-200 { max-height: 200px !important; }

/* Position offsets */
.top-17 { top: 17px !important; }

/* Viewport height calculations */
.h-vh-minus-150 { height: calc(100vh - 150px) !important; }
/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *



 */
