/* Labeled image placeholders until real assets are provided */
.img-placeholder {
  background-image: linear-gradient(to bottom right, #fce7ef, #f3f4f6, rgba(110, 193, 228, 0.2));
  border: 2px dashed #f9a8c4;
  border-radius: 0.75rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 1rem;
  color: #670047;
}

.img-placeholder span.filename {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 0.75rem;
  font-weight: 600;
  word-break: break-all;
}

.img-placeholder span.hint {
  font-size: 0.75rem;
  color: #6b7280;
  margin-top: 0.25rem;
}

.img-placeholder-sm {
  min-height: 120px;
}

.img-placeholder-md {
  min-height: 200px;
}

.img-placeholder-lg {
  min-height: 280px;
}

/* Utilities used by rewritten pages that may be missing from an older compile */
.min-h-0 { min-height: 0; }
.scroll-mt-28 { scroll-margin-top: 7rem; }
.divide-y > :not([hidden]) ~ :not([hidden]) { border-top-width: 1px; }
.divide-gray-100 > :not([hidden]) ~ :not([hidden]) { border-color: #f3f4f6; }
.overflow-x-auto { overflow-x: auto; }
.w-28 { width: 7rem; }
.h-28 { height: 7rem; }
.object-cover { object-fit: cover; }
.object-contain { object-fit: contain; }
.object-top { object-position: top; }
.w-full { width: 100%; }
.aspect-\[4\/3\] { aspect-ratio: 4 / 3; }
.aspect-\[16\/9\] { aspect-ratio: 16 / 9; }
.aspect-square { aspect-ratio: 1 / 1; }
.mt-8 { margin-top: 2rem; }
.mt-16 { margin-top: 4rem; }
.mb-2 { margin-bottom: 0.5rem; }
.gap-5 { gap: 1.25rem; }
.text-2xl { font-size: 1.5rem; line-height: 2rem; }
.text-5xl { font-size: 3rem; line-height: 1; }
.border-dashed { border-style: dashed; }
.border-gold-400 { border-color: #ffcb00; }
.bg-gold-100 { background-color: #fef9c3; }
.bg-success-50 { background-color: #f0fdf4; }
.bg-success-100 { background-color: #dcfce7; }
.bg-red-100 { background-color: #fee2e2; }
.bg-orange-100 { background-color: #ffedd5; }
.bg-yellow-100 { background-color: #fef9c3; }
.text-red-600 { color: #dc2626; }
.text-orange-600 { color: #ea580c; }
.text-yellow-600 { color: #ca8a04; }
.text-success-700 { color: #15803d; }
.text-success-800 { color: #166534; }
.text-gold-700 { color: #a16207; }
.border-success-200 { border-color: #bbf7d0; }
.space-y-5 > :not([hidden]) ~ :not([hidden]) { margin-top: 1.25rem; }
.space-y-8 > :not([hidden]) ~ :not([hidden]) { margin-top: 2rem; }
.flex-1 { flex: 1 1 0%; }
.bg-maroon-200 { background-color: #fbcfe8; }
.order-1 { order: 1; }
.order-2 { order: 2; }
@media (min-width: 1024px) {
  .lg\:order-1 { order: 1; }
  .lg\:order-2 { order: 2; }
  .lg\:col-span-1 { grid-column: span 1 / span 1; }
  .lg\:col-start-2 { grid-column-start: 2; }
}
@media (min-width: 768px) {
  .md\:col-span-2 { grid-column: span 2 / span 2; }
}
@media (min-width: 640px) {
  .sm\:col-span-2 { grid-column: span 2 / span 2; }
  .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.text-\[8px\] { font-size: 8px; }
.text-\[9px\] { font-size: 9px; }
.leading-tight { line-height: 1.25; }
.fixed { position: fixed; }
.inset-0 { inset: 0; }
.z-\[60\] { z-index: 60; }
.bg-black\/50 { background-color: rgba(0, 0, 0, 0.5); }
.max-h-\[90vh\] { max-height: 90vh; }
.overflow-y-auto { overflow-y: auto; }
.w-16 { width: 4rem; }
.h-16 { height: 4rem; }
.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (min-width: 768px) {
  .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Contact page map — explicit height (do not rely on uncompiled Tailwind arbitrary values) */
.contact-map {
  width: 100%;
  height: clamp(280px, 45vh, 360px);
  min-height: 240px;
  border: 0;
  border-radius: 1rem;
  display: block;
}
@media (min-width: 768px) {
  .contact-map { height: 480px; }
}
@media (min-width: 1024px) {
  .contact-map { height: 640px; }
}

/* Site-wide branded preloader */
body:has(.preloader:not(.is-done)) {
  overflow: hidden;
}

.preloader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #670047;
  background-image: radial-gradient(ellipse at 50% 42%, #8a1560 0%, #670047 48%, #3d0029 100%);
  transition: opacity 0.5s ease, visibility 0.5s ease, transform 0.5s ease;
}

.preloader.is-done {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: scale(1.03);
}

.preloader-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 1.5rem;
}

.preloader-mark {
  position: relative;
  width: 132px;
  height: 132px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1.75rem;
}

.preloader-mark img {
  position: relative;
  z-index: 1;
  width: 88px;
  height: 88px;
  object-fit: contain;
  background: #fff;
  border-radius: 1rem;
  padding: 0.5rem;
  box-shadow: 0 10px 36px rgba(0, 0, 0, 0.28);
}

.preloader-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 203, 0, 0.18);
  border-top-color: #ffcb00;
  border-right-color: rgba(255, 203, 0, 0.55);
  animation: preloader-spin 1.1s linear infinite;
}

.preloader-ring::after {
  content: "";
  position: absolute;
  inset: 8px;
  border-radius: 50%;
  border: 1px solid rgba(255, 203, 0, 0.12);
  border-bottom-color: #ffcb00;
  animation: preloader-spin 1.8s linear infinite reverse;
}

@keyframes preloader-spin {
  to { transform: rotate(360deg); }
}

.preloader-title {
  font-family: Poppins, Inter, sans-serif;
  font-weight: 600;
  font-size: 1.375rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #fff;
  margin: 0;
}

.preloader-title::after {
  content: "";
  display: block;
  width: 48px;
  height: 1px;
  background: #ffcb00;
  margin: 0.75rem auto 0.6rem;
}

.preloader-sub {
  margin: 0;
  font-size: 0.8125rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.62);
}

@media (prefers-reduced-motion: reduce) {
  .preloader-ring,
  .preloader-ring::after {
    animation: none;
  }
  .preloader {
    transition: opacity 0.2s ease, visibility 0.2s ease;
  }
  .preloader.is-done {
    transform: none;
  }
}
