  :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));
  }

  .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-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");
  }

  @keyframes heroKenburns {
    0% {
      transform: scale(1.2) translateX(5%);
    }

    100% {
      transform: scale(1.0) translateX(0%);
    }
  }

  .hero-kenburns {
    will-change: transform;
  }

  .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 Animation */
  .scroll-in {
    opacity: 0;
    transform: translateY(4px);
    transition: opacity 0.7s, transform 0.7s;
  }

  .scroll-in.visible {
    opacity: 1 !important;
    transform: translateY(0) !important;
  }