  :root {
    --background: 40 33% 96%;
    --foreground: 102 13% 15%;
    --card: 40 30% 98%;
    --primary: 102 13% 20%;
    --primary-foreground: 40 33% 96%;
    --secondary: 40 20% 92%;
    --muted: 40 15% 90%;
    --muted-foreground: 102 8% 40%;
    --accent: 28 33% 50%;
    --accent-foreground: 40 33% 96%;
    --destructive: 0 84.2% 60.2%;
    --border: 102 13% 20%;
  }

  body {
    background-color: hsl(var(--background));
    color: hsl(var(--foreground));
  }

  /* Remove default browser styles for autofilled inputs */
  input:-webkit-autofill,
  input:-webkit-autofill:hover,
  input:-webkit-autofill:focus,
  textarea:-webkit-autofill,
  textarea:-webkit-autofill:hover,
  textarea:-webkit-autofill:focus,
  select:-webkit-autofill,
  select:-webkit-autofill:hover,
  select:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0px 1000px white inset !important;
    transition: background-color 5000s ease-in-out 0s;
  }

  .hidden {
    display: none;
  }

  .font-sans {
    font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  }

  .font-serif {
    font-family: 'Playfair Display', ui-serif, Georgia, serif;
  }

  .font-mono {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
  }

  .text-balance {
    text-wrap: balance;
  }

  .bg-background {
    background-color: hsl(var(--background));
  }

  .bg-primary {
    background-color: hsl(var(--primary));
  }

  .bg-primary\/0 {
    background-color: hsl(var(--primary) / 0);
  }

  .bg-primary\/50 {
    background-color: hsl(var(--primary) / 0.5);
  }

  .bg-primary\/60 {
    background-color: hsl(var(--primary) / 0.6);
  }

  .bg-primary\/70 {
    background-color: hsl(var(--primary) / 0.7);
  }

  .bg-primary\/80 {
    background-color: hsl(var(--primary) / 0.8);
  }

  .text-primary-foreground {
    color: hsl(var(--primary-foreground));
  }

  .text-primary-foreground\/70 {
    color: hsl(var(--primary-foreground) / 0.7);
  }

  .text-primary-foreground\/50 {
    color: hsl(var(--primary-foreground) / 0.5);
  }

  .text-primary-foreground\/30 {
    color: hsl(var(--primary-foreground) / 0.3);
  }

  .bg-primary-foreground\/80 {
    background-color: hsl(var(--primary-foreground) / 0.8);
  }

  .bg-primary-foreground\/30 {
    background-color: hsl(var(--primary-foreground) / 0.3);
  }

  .border-primary-foreground {
    border-color: hsl(var(--primary-foreground));
  }

  .bg-secondary {
    background-color: hsl(var(--secondary));
  }

  .text-foreground {
    color: hsl(var(--foreground));
  }

  .text-muted-foreground {
    color: hsl(var(--muted-foreground));
  }

  .text-muted-foreground\/40 {
    color: hsl(var(--muted-foreground) / 0.4);
  }

  .bg-accent {
    background-color: hsl(var(--accent));
  }

  .text-accent {
    color: hsl(var(--accent));
  }

  .text-accent-foreground {
    color: hsl(var(--accent-foreground));
  }

  .text-destructive {
    color: hsl(var(--destructive));
  }

  .border-foreground\/5 {
    border-color: hsl(var(--foreground) / 0.05);
  }

  .border-foreground\/10 {
    border-color: hsl(var(--foreground) / 0.1);
  }

  .border-foreground\/20 {
    border-color: hsl(var(--foreground) / 0.2);
  }

  .bg-foreground\/20 {
    background-color: hsl(var(--foreground) / 0.2);
  }

  .bg-card\/60 {
    background-color: hsl(var(--card) / 0.6);
  }

  .placeholder\:text-muted-foreground::placeholder {
    color: hsl(var(--muted-foreground));
  }

  .placeholder\:text-muted-foreground\/40::placeholder {
    color: hsl(var(--muted-foreground) / 0.4);
  }

  .hover\:bg-accent:hover {
    background-color: hsl(var(--accent));
  }

  .hover\:text-accent:hover {
    color: hsl(var(--accent));
  }

  .hover\:text-accent-foreground:hover {
    color: hsl(var(--accent-foreground));
  }

  .focus\:outline-none:focus {
    outline: none;
  }

  .focus\:ring-1:focus {
    box-shadow: 0 0 0 1px hsl(var(--accent));
  }

  .focus\:ring-accent:focus {
    --tw-ring-color: hsl(var(--accent));
  }

  .focus\:border-accent:focus {
    border-color: hsl(var(--accent));
  }

  .group:hover .group-hover\:scale-105 {
    transform: scale(1.05);
  }

  .group:hover .group-hover\:bg-primary\/60 {
    background-color: hsl(var(--primary) / 0.6);
  }

  .group:hover .group-hover\:opacity-100 {
    opacity: 1;
  }

  .grain-texture::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 50;
    opacity: 0.03;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");

    /* Performance fixes for iOS/stuttering */
    transform: translateZ(0);
    will-change: transform;
    backface-visibility: hidden;
  }

  @keyframes heroKenburns {
    0% {
      transform: scale(1.2) translateX(5%);
    }

    100% {
      transform: scale(1.0) translateX(0%);
    }
  }

  .hero-kenburns {
    will-change: transform;
    transform: translateZ(0);
    /* Force GPU hardware-acceleration */
    backface-visibility: hidden;
    /* Prevent flickering on iOS */
  }

  .hero-kenburns-frozen {
    transform: scale(1.0) translateX(0%);
  }

  html {
    scroll-behavior: smooth;
  }

  .gradient-overlay {
    background-image: linear-gradient(to top, hsl(var(--primary) / 0.7), transparent, transparent);
  }

  /* Amenities Slider */
  .amenity-slider-container {
    user-select: none;
  }

  .amenity-dots button {
    transition: all 0.3s;
  }

  .scroll-in {
    opacity: 0;
    transform: translateY(4px) translateZ(0);
    transition: opacity 0.7s, transform 0.7s;
    will-change: opacity, transform;
    backface-visibility: hidden;
  }

  .scroll-in.visible {
    opacity: 1 !important;
    transform: translateY(0) !important;
  }

  /* Flatpickr Custom Theme Overrides */
  .flatpickr-day.selected,
  .flatpickr-day.startRange,
  .flatpickr-day.endRange,
  .flatpickr-day.selected.inRange,
  .flatpickr-day.startRange.inRange,
  .flatpickr-day.endRange.inRange,
  .flatpickr-day.selected:focus,
  .flatpickr-day.startRange:focus,
  .flatpickr-day.endRange:focus,
  .flatpickr-day.selected:hover,
  .flatpickr-day.startRange:hover,
  .flatpickr-day.endRange:hover,
  .flatpickr-day.selected.prevMonthDay,
  .flatpickr-day.startRange.prevMonthDay,
  .flatpickr-day.endRange.prevMonthDay,
  .flatpickr-day.selected.nextMonthDay,
  .flatpickr-day.startRange.nextMonthDay,
  .flatpickr-day.endRange.nextMonthDay {
    background: hsl(var(--primary)) !important;
    border-color: hsl(var(--primary)) !important;
    color: hsl(var(--primary-foreground)) !important;
  }

  .flatpickr-day.inRange,
  .flatpickr-day.prevMonthDay.inRange,
  .flatpickr-day.nextMonthDay.inRange,
  .flatpickr-day.today.inRange,
  .flatpickr-day.prevMonthDay.today.inRange,
  .flatpickr-day.nextMonthDay.today.inRange,
  .flatpickr-day:hover,
  .flatpickr-day.prevMonthDay:hover,
  .flatpickr-day.nextMonthDay:hover,
  .flatpickr-day:focus,
  .flatpickr-day.prevMonthDay:focus,
  .flatpickr-day.nextMonthDay:focus {
    background: hsl(var(--primary) / 0.1) !important;
    border-color: transparent !important;
  }

  .flatpickr-day.today {
    border-color: hsl(var(--primary) / 0.3) !important;
  }

  .flatpickr-day.today:hover,
  .flatpickr-day.today:focus {
    border-color: hsl(var(--primary)) !important;
    background: hsl(var(--primary) / 0.1) !important;
    color: hsl(var(--foreground)) !important;
  }