/* Love Over Coffee — shared styles
   Editorial minimalism, "Botanical Heritage" theme. */

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }

body {
  min-height: max(884px, 100dvh);
}

.material-symbols-outlined {
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}

.hide-scroll::-webkit-scrollbar { display: none; }
.hide-scroll { -ms-overflow-style: none; scrollbar-width: none; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *, ::before, ::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ---------- Load animations ---------- */
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes rise-up { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }

.animate-fade-in { animation: fade-in 1.5s ease-out forwards; }
.animate-rise-1 { opacity: 0; animation: rise-up 1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.2s forwards; }
.animate-rise-2 { opacity: 0; animation: rise-up 1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.4s forwards; }
.animate-rise-3 { opacity: 0; animation: rise-up 1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.6s forwards; }
.animate-rise-4 { opacity: 0; animation: rise-up 1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.8s forwards; }

/* ---------- Scroll reveal ---------- */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal-scale {
  opacity: 0;
  transform: scale(0.97);
  transition: opacity 1.2s ease-out, transform 1.2s ease-out;
}
.reveal-scale.is-visible {
  opacity: 1;
  transform: scale(1);
}

/* ---------- Editorial accents ---------- */
.editorial-line-h {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 1px;
  height: 120px;
  background: currentColor;
  opacity: 0.15;
  top: -60px;
}

.btn-arrow-hover .arrow-icon { transition: transform 0.3s ease; }
.btn-arrow-hover:hover .arrow-icon { transform: translateX(4px); }

/* ---------- Top nav ---------- */
/* Keep the wordmark on a single line on small phones */
#site-header a[href="index.html"] { white-space: nowrap; }
@media (max-width: 430px) {
  #site-header a[href="index.html"] { font-size: 19px; }
  #site-header .order-btn { padding-left: 0.85rem; padding-right: 0.85rem; letter-spacing: 0.06em; }
  #site-header .site-header-inner { gap: 0.5rem; }
}

/* Homepage nav sits over the dark opening animation until scrolled */
#site-header[data-nav="transparent"] .nav-text { color: #fbf9f6; }
#site-header[data-nav="transparent"] .order-btn {
  background-color: rgba(251, 249, 246, 0.14);
  border: 1px solid rgba(251, 249, 246, 0.38);
  box-shadow: none;
}
#site-header.nav-scrolled .nav-text { color: #061b0e; }
#site-header.nav-scrolled .order-btn {
  background-color: #061b0e;
  border-color: transparent;
}
#site-header.nav-scrolled {
  background-color: rgba(251, 249, 246, 0.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(227, 226, 224, 0.5);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.03);
}
#site-header.nav-scrolled .site-header-inner { height: 4rem; }

.nav-glass {
  background: rgba(251, 249, 246, 0.85);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid #e3e2e0;
}

.video-bg-overlay {
  background: linear-gradient(to bottom, rgba(251, 249, 246, 0.6) 0%, rgba(251, 249, 246, 0.9) 100%);
}

/* ---------- Mobile menu drawer ---------- */
#mobile-menu {
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s ease, visibility 0s linear 0.3s;
}
#mobile-menu.is-open {
  visibility: visible;
  opacity: 1;
  transition: opacity 0.3s ease;
}
#mobile-menu .drawer {
  transform: translateX(-100%);
  transition: transform 0.5s cubic-bezier(0.2, 0.8, 0.2, 1);
}
#mobile-menu.is-open .drawer { transform: translateX(0); }

/* ---------- Botanical motif background ---------- */
.botanical-bg { position: relative; }
.botanical-bg::before {
  content: '';
  position: absolute;
  top: -100px;
  right: -100px;
  width: 420px;
  height: 420px;
  background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path d="M50 0 C75 0, 100 25, 100 50 C100 75, 75 100, 50 100 C25 100, 0 75, 0 50 C0 25, 25 0, 50 0 Z" fill="%23061b0e" opacity="0.03"/></svg>');
  background-repeat: no-repeat;
  background-size: contain;
  z-index: 0;
  pointer-events: none;
}

/* ---------- Menu: sticky category nav ---------- */
#category-nav a { border-bottom: 3px solid transparent; padding-bottom: 6px; transition: color .3s, border-color .3s; }
#category-nav a.is-active { color: #061b0e; border-color: #061b0e; }

/* ---------- Gallery: masonry ---------- */
.masonry-grid { column-count: 1; column-gap: 24px; }
@media (min-width: 768px) { .masonry-grid { column-count: 2; } }
@media (min-width: 1024px) { .masonry-grid { column-count: 3; } }

.masonry-item {
  break-inside: avoid;
  margin-bottom: 24px;
  opacity: 0;
  transform: translateY(20px);
  animation: fadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes fadeInUp { to { opacity: 1; transform: translateY(0); } }
.masonry-item:nth-child(1) { animation-delay: 0.05s; }
.masonry-item:nth-child(2) { animation-delay: 0.10s; }
.masonry-item:nth-child(3) { animation-delay: 0.15s; }
.masonry-item:nth-child(4) { animation-delay: 0.20s; }
.masonry-item:nth-child(5) { animation-delay: 0.25s; }
.masonry-item:nth-child(6) { animation-delay: 0.30s; }
.masonry-item:nth-child(7) { animation-delay: 0.35s; }
.masonry-item:nth-child(8) { animation-delay: 0.40s; }
.masonry-item:nth-child(9) { animation-delay: 0.45s; }
.masonry-item:nth-child(n+10) { animation-delay: 0.5s; }

.gallery-overlay { opacity: 0; transition: opacity 0.3s ease; }
.group:hover .gallery-overlay { opacity: 1; }

/* ---------- Home: scroll-scrub coffee sequence ---------- */
#brew-canvas { image-rendering: auto; }

/* Stage backdrop behind the pillar/letter-boxed frame.
   Mobile: the frame fills the width, so keep the original near-black.
   Desktop: wide side margins show — use the warm brown that matches the
   cup animation's own edge tone so the seam disappears. */
#brew, #brew-stage { background-color: #150b03; }
#brew-vignette {
  background: radial-gradient(ellipse at center, rgba(21, 11, 3, 0) 28%, rgba(21, 11, 3, 0.82) 100%);
}
@media (min-width: 768px) {
  #brew, #brew-stage { background-color: #3a2113; }
  #brew-vignette {
    background: radial-gradient(ellipse at center, rgba(58, 33, 19, 0) 38%, rgba(58, 33, 19, 0.5) 100%);
  }
}
#brew .brew-cap {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(90vw, 620px);
  transform: translate(-50%, -44%);
  text-align: center;
  z-index: 10;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
}
#brew .brew-cap.is-active {
  opacity: 1;
  transform: translate(-50%, -50%);
  pointer-events: auto;
}
/* No-JS / pre-JS fallback: show the opening caption */
#brew.brew-idle .brew-cap[data-band="0"] { opacity: 1; transform: translate(-50%, -50%); }
@media (prefers-reduced-motion: reduce) {
  #brew .brew-cap { transition: opacity 0.2s linear; }
}

/* ---------- Gallery: lightbox ---------- */
#lightbox { opacity: 0; pointer-events: none; transition: opacity 0.4s ease; }
#lightbox.is-open { opacity: 1; pointer-events: auto; }
#lightbox-img { opacity: 0; transform: scale(0.95); transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.4s ease; }
#lightbox.is-open #lightbox-img.loaded { opacity: 1; transform: scale(1); }
.nav-btn { opacity: 0; transition: opacity 0.3s ease, background-color 0.3s ease; }
#lightbox.is-open .nav-btn { opacity: 1; }
