/* static/css/utilities.css */
/* ==================== */
/* 工具類樣式 */
/* ==================== */

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

@keyframes gentlePulse {
    0%, 100% { 
        transform: scale(1);
        opacity: 0.9;
    }
    50% { 
        transform: scale(1.05);
        opacity: 1;
    }
}

.fade-in-up {
    animation: fadeInUp 0.8s ease-out forwards;
}

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

.gentle-pulse {
    animation: gentlePulse 2s ease-in-out infinite;
}

/* 手繪分隔線 */
hr {
  border: none;
  margin: 3rem auto;
}

/* 手繪分隔線（最穩定寫法） */
hr.hand-drawn-divider {
  height: 24px;
  width: 80%;
  max-width: 500px;
  background-image: url("data:image/svg+xml,%3Csvg width='100%25' height='20' viewBox='0 0 1200 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 10 Q 150 5, 300 15 T 600 10 T 900 15 T 1200 10' fill='none' stroke='%23D4AF37' stroke-width='2' stroke-opacity='0.5' stroke-dasharray='10,8'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}


/* Coming Soon */
.coming-soon-placeholder {
    background: linear-gradient(135deg, 
        rgba(248, 249, 250, 0.8) 0%, 
        rgba(233, 236, 239, 0.8) 100%);
    padding: 4rem 2rem;
    border-radius: 12px;
    text-align: center;
    border: 2px dashed #dee2e6;
    margin: 2rem 0;
    position: relative;
    overflow: hidden;
}

.coming-soon-placeholder::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30,5 Q45,20,30,35 T15,50' stroke='%23adb5bd' stroke-width='0.5' fill='none' opacity='0.3'/%3E%3C/svg%3E");
    background-size: 60px 60px;
    opacity: 0.5;
}

.coming-soon-icon {
    font-size: 4rem;
    margin-bottom: 1.5rem;
    opacity: 0.7;
    animation: gentlePulse 3s infinite;
}

.coming-soon-placeholder h3 {
    color: var(--ink-deep);
    margin-bottom: 1rem;
    font-size: 1.5rem;
    font-family: 'ZCOOL XiaoWei', cursive;
}

.coming-soon-placeholder p {
    color: var(--ink-light);
    margin-bottom: 2rem;
    line-height: 1.6;
    font-family: 'Noto Serif TC', serif;
}

/* =========================
   Hengzhenfang Brandmark v1
   - subtle corner watermark
   ========================= */

.hz-card {
  position: relative;
}

.hz-card::after {
  content: "";
  position: absolute;
  right: 14px;
  bottom: 14px;
  width: 44px;
  height: 44px;
  background-image: url("/images/brandmark.svg");
  background-size: contain;
  background-repeat: no-repeat;
  opacity: 0.18;
  pointer-events: none;
  filter: saturate(0.9);
}

/* 手機不顯示，避免干擾 */
@media (max-width: 768px) {
  .hz-card::after {
    display: none;
  }
}

/* =========================================================
   Hengzhenfang Brandmark v1
   - only applies to images in /images/modern/ and /images/temple/
   - overlay is VISUAL only (downloaded image remains original)
   - default: bottom-right, opacity 0.16, hidden on <=768px
   - overrides:
       img[data-brandmark="tl|tr|bl|br"]
       img[data-no-brandmark]
       .no-brandmark img
   ========================================================= */

.hz-imgwrap {
  position: relative;
  display: inline-block;
  max-width: 100%;
}

.hz-imgwrap > img {
  display: block;
  max-width: 100%;
  height: auto;
}

.hz-imgwrap::after {
  content: "";
  position: absolute;
  width: 44px;
  height: 44px;
  background-image: url("/images/brandmark.svg");
  background-repeat: no-repeat;
  background-size: contain;
  opacity: 0.16;
  pointer-events: none;
  filter: saturate(0.9);
  right: 10px;
  bottom: 10px;
}

/* Position overrides via wrapper class */
.hz-imgwrap.hz-bm-tl::after { left: 10px; top: 10px; right: auto; bottom: auto; }
.hz-imgwrap.hz-bm-tr::after { right: 10px; top: 10px; left: auto; bottom: auto; }
.hz-imgwrap.hz-bm-bl::after { left: 10px; bottom: 10px; right: auto; top: auto; }
.hz-imgwrap.hz-bm-br::after { right: 10px; bottom: 10px; left: auto; top: auto; }

/* Responsive: hide on mobile */
@media (max-width: 768px) {
  .hz-imgwrap::after {
    display: none;
  }
}
