* { font-family: 'Vazirmatn', sans-serif; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background:
    radial-gradient(circle at 20% 10%, rgba(201,165,116,0.08), transparent 40%),
    #F5EFE6;
  color: #3A2E24;
}
.dir-ltr { direction: ltr; }

/* wood-grain texture overlay hint on body */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  opacity: 0.04;
  background-image: repeating-linear-gradient(100deg, #5C4033 0 1px, transparent 1px 5px);
}

/* nav underline */
.nav-link::after {
  content: "";
  position: absolute;
  right: 0; bottom: -4px;
  width: 0; height: 2px;
  background: #B8925A;
  transition: width .3s;
}
.nav-link:hover::after { width: 100%; }

/* loading bowl spinner */
.spin-bowl {
  font-size: 32px;
  animation: bob 1.2s ease-in-out infinite;
}
@keyframes bob {
  0%,100% { transform: translateY(0) rotate(-6deg); }
  50% { transform: translateY(-8px) rotate(6deg); }
}

/* entrance animations */
.fade-up { animation: fadeUp 1s ease both; }
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
.fade-in { animation: fadeIn .3s ease both; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

.modal-pop { animation: modalPop .35s cubic-bezier(.2,.9,.3,1.2) both; }
@keyframes modalPop {
  from { opacity: 0; transform: scale(.92) translateY(20px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

.pop { animation: pop .35s ease both; }
@keyframes pop {
  0% { transform: scale(0); }
  70% { transform: scale(1.25); }
  100% { transform: scale(1); }
}

.toast-in { animation: toastIn .4s cubic-bezier(.2,.9,.3,1.2) both; }
@keyframes toastIn {
  from { opacity: 0; transform: translate(50%, 30px); }
  to { opacity: 1; transform: translate(50%, 0); }
}

/* staggered card reveal */
.card-reveal { animation: cardReveal .7s ease both; }
@keyframes cardReveal {
  from { opacity: 0; transform: translateY(30px) scale(.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* invert logo colors inside dark footer */
.invert-logo svg path[stroke="#3A2E24"] { stroke: #C9A574; }
.invert-logo .text-\[\#3A2E24\] { color: #F5EFE6 !important; }

.line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: #F5EFE6; }
::-webkit-scrollbar-thumb { background: #C9A574; border-radius: 5px; }
::-webkit-scrollbar-thumb:hover { background: #B8925A; }