/* ===== Custom Properties ===== */
:root {
  --plum-50: #faf5f7;
  --plum-100: #f3e8ed;
  --plum-200: #e6cfd9;
  --plum-300: #d4a7bc;
  --plum-400: #c07a9a;
  --plum-500: #a8557a;
  --plum-600: #943960;
  --plum-700: #7d2d52;
  --plum-800: #6b2f5c;
  --plum-900: #4a1a35;
  --plum-950: #2a0c1c;
  --amber-300: #fcd34d;
  --amber-400: #fbbf24;
  --amber-500: #f59e0b;
  --amber-600: #d97706;
  --amber-700: #b45309;
  --stone-50: #fafaf9;
  --stone-100: #f5f5f4;
  --stone-200: #e7e5e4;
  --stone-300: #d6d3d1;
  --stone-400: #a8a29e;
  --stone-500: #78716c;
  --stone-600: #57534e;
  --stone-800: #292524;
  --stone-900: #1c1917;
}

/* ===== Tailwind Custom Colors ===== */
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer utilities {
  .text-plum-950 { color: var(--plum-950); }
  .text-plum-900 { color: var(--plum-900); }
  .text-plum-700 { color: var(--plum-700); }
  .text-plum-300 { color: var(--plum-300); }
  .text-plum-200 { color: var(--plum-200); }
  .text-plum-400 { color: var(--plum-400); }
  .bg-plum-950 { background-color: var(--plum-950); }
  .bg-plum-900 { background-color: var(--plum-900); }
  .bg-plum-800 { background-color: var(--plum-800); }
  .bg-plum-700 { background-color: var(--plum-700); }
  .bg-plum-900\/5 { background-color: color-mix(in srgb, var(--plum-900) 5%, transparent); }
  .text-amber-600 { color: var(--amber-600); }
  .text-amber-400 { color: var(--amber-400); }
  .text-amber-700 { color: var(--amber-700); }
  .bg-amber-500 { background-color: var(--amber-500); }
  .bg-amber-600 { background-color: var(--amber-600); }
  .border-amber-200 { border-color: var(--plum-200); }
}

/* ===== Typography ===== */
.font-playfair {
  font-family: 'Playfair Display', Georgia, serif;
}
.font-inter {
  font-family: 'Inter', system-ui, sans-serif;
}

/* ===== Animations ===== */
@keyframes fade-up {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes float {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  50% { transform: translateY(-20px) rotate(2deg); }
}

.animate-fade-up {
  animation: fade-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.animate-float {
  animation: float 6s ease-in-out infinite;
}

/* ===== Scroll Reveal ===== */
.scroll-reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.scroll-reveal.revealed {
  opacity: 1;
  transform: translateY(0);
}

/* ===== Navigation ===== */
.nav-text {
  transition: color 0.3s ease;
}

#nav.scrolled .nav-text {
  color: var(--plum-950);
}

.nav-link {
  position: relative;
}

.nav-link::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 0;
  height: 2px;
  background: var(--amber-500);
  transition: width 0.3s ease;
}

.nav-link:hover::after {
  width: 100%;
}

/* ===== Mobile Menu ===== */
#mobile-menu.open {
  opacity: 1;
  pointer-events: all;
}

#mobile-menu.closed {
  opacity: 0;
  pointer-events: none;
}

.menu-line {
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

#menu-btn.active .menu-line:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

#menu-btn.active .menu-line:nth-child(2) {
  opacity: 0;
}

#menu-btn.active .menu-line:nth-child(3) {
  width: 20px;
  transform: rotate(-45deg) translate(3px, -3px);
}

.mobile-link {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

#mobile-menu.open .mobile-link {
  opacity: 1;
  transform: translateY(0);
}

#mobile-menu.open .mobile-link:nth-child(1) { transition-delay: 0.05s; }
#mobile-menu.open .mobile-link:nth-child(2) { transition-delay: 0.1s; }
#mobile-menu.open .mobile-link:nth-child(3) { transition-delay: 0.15s; }
#mobile-menu.open .mobile-link:nth-child(4) { transition-delay: 0.2s; }
#mobile-menu.open .mobile-link:nth-child(5) { transition-delay: 0.25s; }

/* ===== Smooth Scroll ===== */
html {
  scroll-behavior: smooth;
}

/* ===== Selection ===== */
::selection {
  background: var(--plum-200);
  color: var(--plum-950);
}

/* ===== Focus Visible ===== */
:focus-visible {
  outline: 2px solid var(--amber-500);
  outline-offset: 2px;
}

/* ===== Reduced Motion ===== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
  html {
    scroll-behavior: auto;
  }
  .scroll-reveal {
    opacity: 1;
    transform: none;
  }
}

/* ===== Print ===== */
@media print {
  #nav, #contact-form, .scroll-reveal {
    display: none;
  }
  body {
    color: #000;
    background: #fff;
  }
}
