/* =========================================================
   萬派 one pie — 靜謐禪意・奢華冥想 設計系統
   Dark Zen Luxury design system (shared across all pages)
   ========================================================= */

:root {
  /* Base — deep espresso night */
  --night: #14110c;
  --night-2: #1b1712;
  --panel: #221d16;
  --panel-2: #2a241b;
  --panel-hi: #322b20;

  /* Ink / paper text */
  --cream: #f4ead2;
  --cream-soft: #e6dabf;
  --muted: #b3a689;
  --faint: #7f7562;

  /* Accents */
  --gold: #c8a24c;
  --gold-soft: #ddc07d;
  --gold-deep: #9a7a34;
  --moss: #869a6b;
  --moss-deep: #56684a;
  --moss-pale: #a9b98e;
  --clay: #c07a4a;

  /* Lines / glass */
  --line: rgba(200, 162, 76, 0.16);
  --line-soft: rgba(244, 234, 210, 0.08);
  --glass: rgba(244, 234, 210, 0.045);
  --glass-hi: rgba(244, 234, 210, 0.08);

  /* Shadows / glow */
  --shadow: 0 30px 80px rgba(0, 0, 0, 0.55);
  --shadow-lift: 0 40px 110px rgba(0, 0, 0, 0.6);
  --glow-gold: 0 0 60px rgba(200, 162, 76, 0.28);

  --radius-lg: 30px;
  --radius-md: 20px;
  --radius-sm: 13px;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-brush: cubic-bezier(0.65, 0, 0.35, 1);

  --serif: "Noto Serif TC", serif;
  --sans: "Noto Sans TC", -apple-system, BlinkMacSystemFont, "PingFang TC", "Microsoft JhengHei", sans-serif;

  --maxw: 1180px;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  background: var(--night);
}

body {
  font-family: var(--sans);
  color: var(--cream-soft);
  background: var(--night);
  line-height: 1.75;
  font-weight: 300;
  letter-spacing: 0.01em;
  overflow-x: hidden;
  position: relative;
}

/* Ambient warm glow + film grain overlays on every page */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(60% 45% at 78% 0%, rgba(200, 162, 76, 0.14), transparent 60%),
    radial-gradient(55% 50% at 8% 100%, rgba(86, 104, 74, 0.16), transparent 65%);
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0.05;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

main,
.site-header,
.site-footer {
  position: relative;
  z-index: 2;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

::selection {
  background: rgba(200, 162, 76, 0.3);
  color: #fff;
}

/* ---------- Typography helpers ---------- */
.serif {
  font-family: var(--serif);
}
.eyebrow {
  font-family: var(--serif);
  font-size: 0.8rem;
  letter-spacing: 0.55em;
  text-transform: uppercase;
  color: var(--gold-soft);
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  gap: 0.9em;
}
.eyebrow::before {
  content: "";
  width: 34px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold));
}
.eyebrow.center::after {
  content: "";
  width: 34px;
  height: 1px;
  background: linear-gradient(90deg, var(--gold), transparent);
}

.container {
  width: 100%;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 24px;
}

section {
  position: relative;
  padding: clamp(72px, 11vw, 148px) 0;
}

/* ⚠️ 手機版加大段落留白：上面 clamp(72px, 11vw, 148px) 這個公式在窄螢幕上
   11vw 會小於 72px 這個下限，導致手機版永遠卡在最小值 72px，跟桌機版動輒
   140px 以上的留白差了快一倍——這正是「電腦端呼吸感夠、手機端感覺擠」的
   根本原因。手機版另外給一個更寬鬆的固定值，讓每個段落之間有更明顯的
   分段感，不會一滑就看到三段內容疊在同一個畫面裡。 */
@media (max-width: 760px) {
  section {
    padding: 110px 0;
  }
}
@media (max-width: 480px) {
  section {
    padding: 96px 0;
  }
}

.section-head {
  max-width: 720px;
  margin: 0 auto clamp(40px, 6vw, 72px);
  text-align: center;
}
@media (max-width: 760px) {
  .section-head {
    margin-bottom: 56px;
  }
}
.section-title {
  font-family: var(--serif);
  font-weight: 600;
  color: var(--cream);
  font-size: clamp(1.9rem, 4.6vw, 3.1rem);
  line-height: 1.28;
  letter-spacing: 0.02em;
  margin: 22px 0 18px;
  text-wrap: balance;
}
.section-sub {
  color: var(--muted);
  font-size: 1.02rem;
  line-height: 1.9;
  text-wrap: pretty;
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--sans);
  font-weight: 500;
  font-size: 0.98rem;
  letter-spacing: 0.06em;
  padding: 16px 34px;
  border-radius: 999px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform 0.4s var(--ease-out), box-shadow 0.4s var(--ease-out),
    background 0.4s var(--ease-out), color 0.4s var(--ease-out);
  position: relative;
  overflow: hidden;
  white-space: nowrap;
}
.btn svg {
  width: 18px;
  height: 18px;
}
.btn-gold {
  background: linear-gradient(135deg, var(--gold-soft), var(--gold) 55%, var(--gold-deep));
  color: #241d0e;
  box-shadow: 0 18px 40px rgba(200, 162, 76, 0.28);
}
.btn-gold:hover {
  transform: translateY(-3px);
  box-shadow: 0 26px 56px rgba(200, 162, 76, 0.42);
}
.btn-ghost {
  background: var(--glass);
  color: var(--cream);
  border-color: var(--line);
  backdrop-filter: blur(8px);
}
.btn-ghost:hover {
  transform: translateY(-3px);
  border-color: rgba(200, 162, 76, 0.5);
  background: var(--glass-hi);
}
.btn-lg {
  padding: 19px 44px;
  font-size: 1.05rem;
}

/* ---------- Header ---------- */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 50;
  transition: background 0.5s var(--ease-out), border-color 0.5s var(--ease-out),
    backdrop-filter 0.5s var(--ease-out);
  border-bottom: 1px solid transparent;
}
.site-header.scrolled {
  background: rgba(20, 17, 12, 0.78);
  backdrop-filter: blur(18px) saturate(1.2);
  border-bottom-color: var(--line);
}
.nav {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 15px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
}
.brand img {
  width: 42px;
  height: 42px;
  border-radius: 11px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5);
}
.brand-name {
  font-family: var(--serif);
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--cream);
  letter-spacing: 0.16em;
  line-height: 1;
}
.brand-name small {
  display: block;
  font-size: 0.6rem;
  letter-spacing: 0.42em;
  color: var(--gold-soft);
  margin-top: 5px;
  font-weight: 400;
}
.nav-links {
  display: flex;
  align-items: center;
  gap: 6px;
}
.nav-links a {
  font-size: 0.95rem;
  font-weight: 400;
  color: var(--cream-soft);
  padding: 9px 14px;
  border-radius: 999px;
  letter-spacing: 0.06em;
  transition: color 0.3s, background 0.3s;
  position: relative;
  white-space: nowrap; /* 避免空間一擠，文字就各自斷成兩行，寧可讓瀏覽器自己決定怎麼收窄 */
}
/* 桌機版 nav-cta 本來就有一顆「登入」按鈕了，nav-links 裡這顆只是為了手機版
   選單抽屜準備的入口（手機版 nav-cta 的 .btn-ghost 會被隱藏，見下方 880px 那段），
   桌機版不需要重複顯示兩次「登入」，藏起來、把空間讓給其他選單項目。 */
@media (min-width: 1121px) {
  .nav-links a.nav-login-mobile-only {
    display: none;
  }
}
.nav-links a:hover {
  color: var(--gold-soft);
}
.nav-links a.active {
  color: var(--gold-soft);
}
.nav-links a.active::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 2px;
  transform: translateX(-50%);
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--gold);
}
.nav-cta {
  display: flex;
  align-items: center;
  gap: 10px;
}
.nav-toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 8px;
}
.nav-toggle span {
  width: 24px;
  height: 2px;
  background: var(--cream);
  border-radius: 2px;
  transition: transform 0.4s var(--ease-out), opacity 0.3s;
}
.nav-toggle.open span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.nav-toggle.open span:nth-child(2) {
  opacity: 0;
}
.nav-toggle.open span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

@media (max-width: 1120px) {
  .nav-links {
    position: fixed;
    inset: 0 0 auto 0;
    top: 72px;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    padding: 18px 24px 28px;
    background: rgba(20, 17, 12, 0.96);
    backdrop-filter: blur(20px);
    border-bottom: 1px solid var(--line);
    transform: translateY(-130%);
    transition: transform 0.5s var(--ease-out);
  }
  .nav-links.open {
    transform: translateY(0);
  }
  .nav-links a {
    padding: 14px 16px;
    border-bottom: 1px solid var(--line-soft);
    font-size: 1.05rem;
  }
  .nav-links a.active::after {
    display: none;
  }
  .nav-cta .btn-ghost {
    display: none;
  }
  .nav-toggle {
    display: flex;
  }
}

/* ---------- Intro preloader — 筆墨圓相 Ensō reveal ---------- */
html.is-loading,
html.is-loading body {
  overflow: hidden;
  height: 100%;
}
.preloader {
  position: fixed;
  inset: 0;
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--night);
  transition: opacity 0.9s var(--ease-out), visibility 0.9s var(--ease-out);
}
.preloader::after {
  content: "";
  position: absolute;
  inset: 0;
  opacity: 0.05;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.preloader.leaving {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.preloader-glow {
  position: absolute;
  inset: 0;
  background: radial-gradient(32% 32% at 50% 50%, rgba(200, 162, 76, 0.24), transparent 70%);
  animation: preloaderPulse 2.6s var(--ease-out) infinite;
}
.preloader-inner {
  position: relative;
  width: 200px;
  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.preloader-ring {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transform: rotate(-92deg);
}
.preloader-ring .ring-path {
  stroke-dasharray: 541;
  stroke-dashoffset: 541;
  filter: drop-shadow(0 0 10px rgba(200, 162, 76, 0.35));
  animation: ensoDraw 1.5s var(--ease-brush) 0.15s forwards;
}
.preloader-logo {
  position: relative;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  opacity: 0;
  transform: scale(0.7);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
  animation: preloaderLogoIn 0.9s var(--ease-out) 1.05s forwards;
}
.preloader-word {
  position: absolute;
  bottom: -50px;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  opacity: 0;
  white-space: nowrap;
  animation: preloaderWordIn 0.8s var(--ease-out) 1.55s forwards;
}
.preloader-word .cn {
  display: block;
  font-family: var(--serif);
  font-size: 1.1rem;
  letter-spacing: 0.32em;
  color: var(--cream);
}
.preloader-word .en {
  display: block;
  margin-top: 7px;
  font-size: 0.62rem;
  letter-spacing: 0.5em;
  color: var(--gold-soft);
}
@keyframes ensoDraw {
  to {
    stroke-dashoffset: 46;
  }
}
@keyframes preloaderLogoIn {
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes preloaderWordIn {
  to {
    opacity: 1;
  }
}
@keyframes preloaderPulse {
  0%, 100% {
    opacity: 0.7;
    transform: scale(1);
  }
  50% {
    opacity: 1;
    transform: scale(1.08);
  }
}
@media (max-width: 480px) {
  .preloader-inner {
    width: 168px;
    height: 168px;
  }
  .preloader-word {
    bottom: -42px;
  }
}

/* ---------- Video tutorials ---------- */
.video-feature {
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  box-shadow: var(--shadow-lift);
}
.video-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #000;
}
.video-frame.vertical {
  aspect-ratio: 9 / 16;
  max-width: 320px;
  margin: 0 auto;
  border-radius: var(--radius-md);
  overflow: hidden;
}
.video-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.video-feature .cap {
  padding: clamp(26px, 4vw, 38px) clamp(26px, 4vw, 40px);
}
.video-tag {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--serif);
  font-size: 0.74rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--gold-soft);
  margin-bottom: 14px;
}
.video-tag::before {
  content: "";
  width: 20px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold));
}
.video-feature h3 {
  font-family: var(--serif);
  color: var(--cream);
  font-weight: 600;
  font-size: clamp(1.4rem, 2.6vw, 1.9rem);
  letter-spacing: 0.02em;
  margin-bottom: 12px;
}
.video-feature > .cap > p {
  color: var(--muted);
  line-height: 1.9;
  max-width: 62ch;
}

.video-group {
  margin-top: clamp(56px, 8vw, 96px);
}
.video-group-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: clamp(28px, 4vw, 40px);
  flex-wrap: wrap;
}
.video-group-head h3 {
  font-family: var(--serif);
  color: var(--cream);
  font-weight: 600;
  font-size: clamp(1.4rem, 3vw, 1.9rem);
  letter-spacing: 0.02em;
}
.video-group-head p {
  color: var(--muted);
  font-size: 0.95rem;
  max-width: 46ch;
}
.video-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
}
.video-card {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  transition: transform 0.5s var(--ease-out), border-color 0.5s, box-shadow 0.5s;
  padding: 20px 20px 6px;
}
.video-card:hover {
  transform: translateY(-6px);
  border-color: rgba(200, 162, 76, 0.4);
  box-shadow: var(--shadow-lift);
}
.video-card .cap {
  padding: 20px 4px 24px;
}
.video-card .video-tag {
  font-size: 0.68rem;
  margin-bottom: 10px;
}
.video-card h4 {
  font-family: var(--serif);
  color: var(--cream);
  font-size: 1.08rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  margin-bottom: 8px;
}
.video-card p {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.85;
}
@media (max-width: 640px) {
  .video-grid {
    grid-template-columns: 1fr;
  }
  .video-card {
    max-width: 340px;
    margin: 0 auto;
    width: 100%;
  }
}

/* ---------- Enso circle motif ---------- */
.enso {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  border: 1.5px solid transparent;
  background:
    conic-gradient(from 210deg, transparent 0deg, rgba(200, 162, 76, 0.5) 40deg,
      rgba(200, 162, 76, 0.15) 250deg, transparent 320deg) border-box;
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
          mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
  opacity: 0.5;
}

/* ---------- Hero ---------- */
.hero {
  min-height: 100svh;
  display: flex;
  align-items: center;
  padding-top: 120px;
  padding-bottom: 80px;
  overflow: hidden;
}
.hero-bg {
  position: absolute;
  inset: 0;
  z-index: -1;
}
.hero-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center right;
}
.hero-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, var(--night) 6%, rgba(20, 17, 12, 0.82) 42%, rgba(20, 17, 12, 0.35) 100%),
    linear-gradient(0deg, var(--night), transparent 40%);
}
.hero-inner {
  max-width: 660px;
}
.hero h1 {
  font-family: var(--serif);
  font-weight: 600;
  color: var(--cream);
  font-size: clamp(2.7rem, 7vw, 4.8rem);
  line-height: 1.16;
  letter-spacing: 0.03em;
  margin: 26px 0 26px;
  text-wrap: balance;
}
.hero h1 .accent {
  color: var(--gold-soft);
  position: relative;
}
.hero p.lead {
  font-size: clamp(1.02rem, 2vw, 1.2rem);
  color: var(--cream-soft);
  line-height: 1.95;
  max-width: 540px;
  text-wrap: pretty;
}
.hero-actions {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 38px;
}
.hero-scroll {
  position: absolute;
  left: 50%;
  bottom: 30px;
  transform: translateX(-50%);
  color: var(--muted);
  font-size: 0.72rem;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.hero-scroll .line {
  width: 1px;
  height: 42px;
  background: linear-gradient(var(--gold), transparent);
  animation: dropline 2.4s var(--ease-out) infinite;
}
@keyframes dropline {
  0% { transform: scaleY(0); transform-origin: top; }
  40% { transform: scaleY(1); transform-origin: top; }
  60% { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

/* ---------- Stats strip ---------- */
.stats {
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: linear-gradient(180deg, var(--night-2), var(--night));
  padding: clamp(40px, 6vw, 64px) 0;
}
.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
.stat {
  text-align: center;
  padding: 8px 10px;
  position: relative;
}
.stat + .stat::before {
  content: "";
  position: absolute;
  left: 0;
  top: 20%;
  height: 60%;
  width: 1px;
  background: var(--line);
}
.stat .num {
  font-family: var(--serif);
  font-size: clamp(2.1rem, 5vw, 3.1rem);
  font-weight: 600;
  color: var(--gold-soft);
  line-height: 1;
  letter-spacing: 0.02em;
}
.stat .num small {
  font-size: 0.9rem;
  color: var(--muted);
  margin-left: 3px;
}
.stat .label {
  margin-top: 12px;
  font-size: 0.9rem;
  color: var(--muted);
  letter-spacing: 0.14em;
}
@media (max-width: 760px) {
  .stats-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 34px 20px;
  }
  .stat:nth-child(3)::before {
    display: none;
  }
}

/* ---------- Generic layout: page hero (inner pages) ---------- */
.page-hero {
  padding-top: clamp(150px, 20vw, 220px);
  padding-bottom: clamp(48px, 7vw, 90px);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.page-hero .container {
  position: relative;
  z-index: 2;
}
/* Inner-page background photos: anchor higher so subjects' heads aren't cropped */
.page-hero .hero-bg img {
  object-position: center 26%;
}
.page-hero h1 {
  font-family: var(--serif);
  color: var(--cream);
  font-weight: 600;
  font-size: clamp(2.3rem, 6vw, 4rem);
  line-height: 1.22;
  letter-spacing: 0.03em;
  margin: 22px auto 22px;
  max-width: 15ch;
  text-wrap: balance;
}
.page-hero p {
  color: var(--muted);
  max-width: 620px;
  margin: 0 auto;
  font-size: 1.05rem;
  line-height: 1.95;
  text-wrap: pretty;
}

/* ---------- Cards / panels ---------- */
.panel {
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}

/* Story / quote block */
.story {
  text-align: center;
}
.story .quote {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 4vw, 2.6rem);
  line-height: 1.7;
  color: var(--cream);
  font-weight: 400;
  letter-spacing: 0.03em;
  max-width: 20ch;
  margin: 30px auto 26px;
  text-wrap: balance;
}
.story .quote .hl {
  color: var(--gold-soft);
}
.story .sign {
  color: var(--muted);
  letter-spacing: 0.2em;
  font-size: 0.95rem;
}

/* ---------- Feature grid (how it works) ---------- */
.feature-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
.feature {
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  padding: 38px 30px;
  transition: transform 0.5s var(--ease-out), border-color 0.5s, box-shadow 0.5s;
  position: relative;
  overflow: hidden;
}
.feature:hover {
  transform: translateY(-6px);
  border-color: rgba(200, 162, 76, 0.4);
  box-shadow: var(--shadow-lift);
}
.feature .ico {
  width: 58px;
  height: 58px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 30% 30%, rgba(200, 162, 76, 0.22), rgba(200, 162, 76, 0.05));
  border: 1px solid var(--line);
  color: var(--gold-soft);
  margin-bottom: 22px;
}
.feature .ico svg {
  width: 26px;
  height: 26px;
}
.feature .step-no {
  position: absolute;
  top: 22px;
  right: 26px;
  font-family: var(--serif);
  font-size: 2.4rem;
  color: rgba(200, 162, 76, 0.14);
  font-weight: 700;
}
.feature h3 {
  font-family: var(--serif);
  color: var(--cream);
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  margin-bottom: 10px;
}
.feature p {
  color: var(--muted);
  font-size: 0.96rem;
  line-height: 1.85;
}
@media (max-width: 860px) {
  .feature-grid {
    grid-template-columns: 1fr;
  }
}

/* ---------- Store page / store tools narrative ---------- */
.store-backstage {
  padding-top: clamp(88px, 12vw, 156px);
}
.backstage-panel {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(280px, 0.95fr);
  gap: clamp(28px, 5vw, 64px);
  align-items: stretch;
  margin-bottom: clamp(28px, 5vw, 58px);
  padding: clamp(34px, 5vw, 58px);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(90% 120% at 100% 0%, rgba(134, 154, 107, 0.12), transparent 58%),
    linear-gradient(155deg, rgba(42, 36, 27, 0.86), rgba(20, 17, 12, 0.98));
  box-shadow: var(--shadow);
}
.backstage-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.backstage-copy h3,
.backstage-flow-text h3 {
  font-family: var(--serif);
  color: var(--cream);
  font-size: clamp(1.55rem, 3vw, 2.25rem);
  line-height: 1.35;
  font-weight: 600;
  letter-spacing: 0.02em;
  margin-bottom: 18px;
  text-wrap: balance;
}
.backstage-copy p,
.backstage-flow-text p {
  color: var(--muted);
  line-height: 1.95;
  max-width: 58ch;
}
.backstage-flow-text p + p {
  margin-top: 16px;
}
.backstage-copy .hl,
.backstage-flow-text .hl {
  color: var(--gold-soft);
  font-weight: 500;
}
.setup-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 16px 0 20px;
}
.setup-tags span {
  padding: 8px 16px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--glass);
  color: var(--cream-soft);
  font-size: 0.85rem;
  letter-spacing: 0.03em;
  white-space: nowrap;
}
.mini-flow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin: 18px 0 20px;
  padding: 16px 20px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-sm);
  background: var(--glass);
}
.mini-flow span {
  font-family: var(--serif);
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--cream);
  letter-spacing: 0.02em;
}
.mini-flow .arrow {
  font-family: var(--sans);
  font-size: 0.8rem;
  font-weight: 400;
  color: var(--gold-deep);
  opacity: 0.85;
}
@media (max-width: 620px) {
  .mini-flow {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .mini-flow .arrow {
    transform: rotate(90deg);
    margin-left: 6px;
  }
}
.backstage-lines {
  margin-top: 24px;
  border-top: 1px solid var(--line-soft);
}
.backstage-lines span {
  display: block;
  padding: 12px 0 12px 24px;
  border-bottom: 1px solid var(--line-soft);
  color: var(--cream-soft);
  font-size: 0.95rem;
  line-height: 1.75;
  position: relative;
}
.backstage-lines span::before {
  content: "";
  position: absolute;
  top: 24px;
  left: 2px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--moss-pale);
  box-shadow: 0 0 0 5px rgba(169, 185, 142, 0.12);
}
.backstage-board {
  align-self: center;
  border: 1px solid var(--line);
  border-radius: 24px;
  padding: clamp(18px, 3vw, 24px);
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  box-shadow: var(--shadow-lift);
}
.backstage-board-top {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  color: var(--faint);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  margin-bottom: 14px;
}
.backstage-board-top strong {
  color: var(--gold-soft);
  font-weight: 600;
}
.backstage-board-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 4px 14px;
  padding: 16px 0;
  border-top: 1px solid var(--line-soft);
}
.backstage-board-row.active {
  margin: 0 -10px;
  padding: 16px 10px;
  border-radius: 14px;
  background: rgba(134, 154, 107, 0.11);
}
.backstage-board-row span {
  color: var(--cream);
  font-weight: 500;
}
.backstage-board-row strong {
  color: var(--moss-pale);
  font-size: 0.9rem;
  font-weight: 600;
}
.backstage-board-row small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 0.8rem;
  letter-spacing: 0.04em;
}
.backstage-board-action {
  margin-top: 16px;
  border-radius: 999px;
  padding: 12px 18px;
  text-align: center;
  font-weight: 700;
  color: #241d0e;
  background: linear-gradient(135deg, var(--gold-soft), var(--gold) 55%, var(--gold-deep));
}
.backstage-flow {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(260px, 0.85fr);
  gap: clamp(30px, 5vw, 66px);
  align-items: start;
}
.backstage-checklist {
  border-left: 1px solid var(--line);
  padding-left: clamp(24px, 4vw, 40px);
}
.backstage-checklist span {
  display: block;
  padding: 15px 0;
  border-bottom: 1px solid var(--line-soft);
  color: var(--cream);
  font-family: var(--serif);
  font-size: clamp(1rem, 1.8vw, 1.22rem);
  line-height: 1.65;
  letter-spacing: 0.04em;
}
@media (max-width: 860px) {
  .backstage-panel,
  .backstage-flow {
    grid-template-columns: 1fr;
  }
  .backstage-panel {
    padding: 30px 22px;
  }
  .backstage-checklist {
    border-left: 0;
    padding-left: 0;
  }
}

/* ---------- Store page / local recruitment narrative ---------- */
.recruitment-story {
  overflow: hidden;
  border-top: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
  background:
    radial-gradient(75% 80% at 88% 28%, rgba(134, 154, 107, 0.12), transparent 64%),
    linear-gradient(180deg, rgba(42, 36, 27, 0.3), rgba(20, 17, 12, 0));
}
.recruitment-lead {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(300px, 0.72fr);
  gap: clamp(34px, 7vw, 90px);
  align-items: end;
  margin-bottom: clamp(50px, 8vw, 92px);
}
.recruitment-lead-copy h2 {
  max-width: 760px;
  margin-top: 22px;
  color: var(--cream);
  font-family: var(--serif);
  font-size: clamp(2rem, 4.8vw, 3.65rem);
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: 0.02em;
  text-wrap: balance;
}
.recruitment-lead-note {
  padding-left: clamp(22px, 4vw, 42px);
  border-left: 1px solid var(--line);
}
.recruitment-lead-note p {
  color: var(--muted);
  line-height: 1.95;
}
.recruitment-lead-note p + p { margin-top: 18px; }
.recruitment-showcase {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 0.86fr);
  gap: clamp(34px, 7vw, 88px);
  align-items: center;
}
.recruitment-copy h3,
.recruitment-process-intro h3 {
  max-width: 690px;
  margin-bottom: 18px;
  color: var(--cream);
  font-family: var(--serif);
  font-size: clamp(1.55rem, 3vw, 2.35rem);
  font-weight: 600;
  line-height: 1.45;
  text-wrap: balance;
}
.recruitment-copy > p,
.recruitment-process-intro p {
  max-width: 60ch;
  color: var(--muted);
  line-height: 1.95;
}
.recruitment-contrast {
  margin-top: 28px;
  border-top: 1px solid var(--line-soft);
}
.recruitment-contrast div {
  display: grid;
  grid-template-columns: 128px 1fr;
  gap: 20px;
  padding: 17px 0;
  border-bottom: 1px solid var(--line-soft);
}
.recruitment-contrast span {
  color: var(--gold-soft);
  font-size: 0.84rem;
  letter-spacing: 0.04em;
}
.recruitment-contrast strong {
  color: var(--cream-soft);
  font-weight: 500;
}
.recruitment-poster { margin: 0; }
.recruitment-poster img {
  width: min(100%, 530px);
  margin-left: auto;
  border: 1px solid var(--line);
  border-radius: 26px;
  box-shadow: var(--shadow-lift);
}
.recruitment-poster figcaption {
  width: min(100%, 530px);
  margin: 12px 0 0 auto;
  color: var(--faint);
  font-size: 0.76rem;
  line-height: 1.7;
  text-align: center;
}
.recruitment-process {
  display: grid;
  grid-template-columns: minmax(280px, 0.75fr) minmax(0, 1.25fr);
  gap: clamp(34px, 7vw, 92px);
  align-items: start;
  margin-top: clamp(68px, 10vw, 120px);
  padding-top: clamp(46px, 7vw, 74px);
  border-top: 1px solid var(--line);
}
.recruitment-steps { list-style: none; }
.recruitment-steps li {
  display: grid;
  grid-template-columns: 42px 1fr;
  gap: 16px;
  padding: 17px 0;
  border-bottom: 1px solid var(--line-soft);
}
.recruitment-steps li > span {
  color: var(--gold-deep);
  font-family: var(--serif);
  font-size: 0.82rem;
  letter-spacing: 0.08em;
}
.recruitment-steps strong,
.recruitment-steps small { display: block; }
.recruitment-steps strong { color: var(--cream); font-family: var(--serif); font-size: 1.05rem; font-weight: 500; }
.recruitment-steps small { margin-top: 4px; color: var(--muted); font-size: 0.82rem; line-height: 1.7; }
.recruitment-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  margin-top: clamp(46px, 7vw, 78px);
  padding-top: 28px;
  border-top: 1px solid var(--line-soft);
}
.recruitment-foot p {
  max-width: 700px;
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1.8;
}
.recruitment-foot .btn { flex: 0 0 auto; }
@media (max-width: 860px) {
  .recruitment-lead,
  .recruitment-showcase,
  .recruitment-process { grid-template-columns: 1fr; }
  .recruitment-lead-note { padding: 24px 0 0; border-left: 0; border-top: 1px solid var(--line); }
  .recruitment-foot { align-items: stretch; flex-direction: column; }
  .recruitment-foot .btn { width: 100%; }
}
@media (max-width: 480px) {
  .recruitment-contrast div { grid-template-columns: 1fr; gap: 6px; }
}

.backstage-entry {
  display: grid;
  grid-template-columns: minmax(230px, 0.58fr) minmax(0, 1.42fr);
  gap: clamp(34px, 7vw, 88px);
  align-items: center;
  margin: clamp(62px, 9vw, 108px) 0;
  padding: clamp(34px, 5vw, 58px) 0;
  border-top: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
}
.backstage-entry-media { margin: 0; }
.backstage-entry-media img {
  width: min(100%, 360px);
  margin: auto;
  border: 1px solid var(--line);
  border-radius: 24px;
  box-shadow: var(--shadow-lift);
}
.backstage-entry-copy h3 {
  max-width: 690px;
  margin-bottom: 18px;
  color: var(--cream);
  font-family: var(--serif);
  font-size: clamp(1.55rem, 3vw, 2.35rem);
  font-weight: 600;
  line-height: 1.45;
  text-wrap: balance;
}
.backstage-entry-copy > p {
  max-width: 62ch;
  color: var(--muted);
  line-height: 1.95;
}
.backstage-entry-list {
  margin-top: 24px;
  border-top: 1px solid var(--line-soft);
}
.backstage-entry-list div {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 22px;
  padding: 16px 0;
  border-bottom: 1px solid var(--line-soft);
}
.backstage-entry-list strong { color: var(--gold-soft); font-family: var(--serif); font-weight: 500; }
.backstage-entry-list span { color: var(--cream-soft); line-height: 1.75; }
.backstage-entry-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 28px;
}
@media (max-width: 860px) {
  .backstage-entry { grid-template-columns: 1fr; }
  .backstage-entry-media img { width: min(78%, 360px); }
}
@media (max-width: 520px) {
  .backstage-entry-list div { grid-template-columns: 1fr; gap: 5px; }
  .backstage-entry-actions { flex-direction: column; }
  .backstage-entry-actions .btn { width: 100%; }
}

/* ---------- Split / showcase rows ---------- */
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(34px, 6vw, 78px);
  align-items: center;
}
.split.reverse .split-media {
  order: 2;
}
.split-media {
  position: relative;
}
.split-media img {
  width: 100%;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lift);
  border: 1px solid var(--line);
}
.split-media .badge {
  position: absolute;
  bottom: 22px;
  left: 22px;
  background: rgba(20, 17, 12, 0.72);
  backdrop-filter: blur(12px);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 10px 20px;
  font-size: 0.85rem;
  letter-spacing: 0.12em;
  color: var(--gold-soft);
}
.split-body .eyebrow {
  margin-bottom: 18px;
}
.split-body h2 {
  font-family: var(--serif);
  color: var(--cream);
  font-weight: 600;
  font-size: clamp(1.7rem, 3.6vw, 2.5rem);
  line-height: 1.35;
  letter-spacing: 0.02em;
  margin-bottom: 20px;
  text-wrap: balance;
}
.split-body > p {
  color: var(--muted);
  line-height: 1.95;
  margin-bottom: 26px;
}
@media (max-width: 860px) {
  .split {
    grid-template-columns: 1fr;
  }
  .split.reverse .split-media {
    order: 0;
  }
}

/* ---------- Pain / gain lists ---------- */
.pg-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
}
@media (max-width: 860px) {
  .pg-grid {
    grid-template-columns: 1fr;
  }
}
.pg-col {
  border-radius: var(--radius-md);
  padding: 34px 30px;
  border: 1px solid var(--line);
}
.pg-col.pg-pain {
  background: linear-gradient(160deg, rgba(192, 122, 74, 0.08), rgba(34, 29, 22, 0.9));
}
.pg-col.pg-gain {
  background: linear-gradient(160deg, rgba(134, 154, 107, 0.12), rgba(34, 29, 22, 0.92));
}
.pg-col h4 {
  font-family: var(--serif);
  font-size: 1.15rem;
  letter-spacing: 0.08em;
  margin-bottom: 22px;
  color: var(--cream);
  display: flex;
  align-items: center;
  gap: 10px;
}
.pg-col.pg-pain h4 {
  color: var(--clay);
}
.pg-col.pg-gain h4 {
  color: var(--moss-pale);
}
.pg-item {
  display: flex;
  gap: 14px;
  padding: 15px 0;
  border-bottom: 1px solid var(--line-soft);
}
.pg-item:last-child {
  border-bottom: 0;
}
.pg-item .mk {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.8rem;
  margin-top: 2px;
}
.pg-pain .pg-item .mk {
  background: rgba(192, 122, 74, 0.16);
  color: var(--clay);
}
.pg-gain .pg-item .mk {
  background: rgba(134, 154, 107, 0.2);
  color: var(--moss-pale);
}
.pg-item .txt strong {
  display: block;
  color: var(--cream);
  font-weight: 500;
  font-size: 1rem;
  margin-bottom: 3px;
  letter-spacing: 0.02em;
}
.pg-item .txt span {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.75;
}

/* ---------- Steps (timeline) ---------- */
.steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
  counter-reset: step;
}
@media (max-width: 860px) {
  .steps {
    grid-template-columns: 1fr;
  }
}
.step-card {
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  padding: 40px 30px 34px;
  position: relative;
}
.step-card .no {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  border: 1px solid var(--line);
  display: grid;
  place-items: center;
  font-family: var(--serif);
  font-size: 1.5rem;
  color: var(--gold-soft);
  background: radial-gradient(circle at 30% 30%, rgba(200, 162, 76, 0.2), transparent);
  margin-bottom: 22px;
}
.step-card h3 {
  font-family: var(--serif);
  color: var(--cream);
  font-size: 1.2rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  margin-bottom: 12px;
}
.step-card p {
  color: var(--muted);
  font-size: 0.96rem;
  line-height: 1.85;
}

.store-day {
  padding-top: clamp(70px, 9vw, 116px);
}
.store-day-inner {
  max-width: 860px;
  margin: 0 auto;
  padding: clamp(34px, 6vw, 66px) 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.store-day-inner .eyebrow {
  margin-bottom: 18px;
}
.store-day-inner h2 {
  font-family: var(--serif);
  color: var(--cream);
  font-size: clamp(1.65rem, 3.6vw, 2.55rem);
  line-height: 1.42;
  font-weight: 600;
  letter-spacing: 0.02em;
  max-width: 18ch;
  margin-bottom: 28px;
  text-wrap: balance;
}
.store-day-list {
  display: grid;
  gap: 18px;
  margin-left: min(24vw, 260px);
}
.store-day-list p {
  color: var(--muted);
  line-height: 2;
  font-size: 1rem;
}
@media (max-width: 760px) {
  .store-day-list {
    margin-left: 0;
  }
}

/* ---------- FAQ ---------- */
.faq-list {
  max-width: 800px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.faq-item {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--glass);
  overflow: hidden;
  transition: border-color 0.4s, background 0.4s;
}
.faq-item[open] {
  border-color: rgba(200, 162, 76, 0.4);
  background: var(--glass-hi);
}
.faq-item summary {
  list-style: none;
  cursor: pointer;
  padding: 22px 26px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-family: var(--serif);
  font-size: 1.08rem;
  color: var(--cream);
  letter-spacing: 0.03em;
}
.faq-item summary::-webkit-details-marker {
  display: none;
}
.faq-item summary .plus {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  position: relative;
  color: var(--gold-soft);
  transition: transform 0.4s var(--ease-out);
}
.faq-item summary .plus::before,
.faq-item summary .plus::after {
  content: "";
  position: absolute;
  background: currentColor;
  border-radius: 2px;
}
.faq-item summary .plus::before {
  left: 50%;
  top: 4px;
  bottom: 4px;
  width: 2px;
  transform: translateX(-50%);
}
.faq-item summary .plus::after {
  top: 50%;
  left: 4px;
  right: 4px;
  height: 2px;
  transform: translateY(-50%);
}
.faq-item[open] summary .plus {
  transform: rotate(135deg);
}
.faq-item .faq-body {
  padding: 0 26px 24px;
  color: var(--muted);
  line-height: 1.95;
  font-size: 0.98rem;
}
.faq-item .faq-body .shout {
  color: var(--gold-soft);
  font-weight: 500;
}

/* ---------- Final CTA ---------- */
.final-cta {
  text-align: center;
  overflow: hidden;
}
.final-cta .cta-panel {
  position: relative;
  border-radius: var(--radius-lg);
  padding: clamp(52px, 8vw, 96px) 30px;
  overflow: hidden;
  border: 1px solid var(--line);
  background: linear-gradient(160deg, var(--panel-2), var(--night-2));
}
.final-cta .cta-panel img.bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.28;
  z-index: 0;
}
.final-cta .cta-panel .veil {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: radial-gradient(70% 90% at 50% 0%, rgba(200, 162, 76, 0.16), transparent 60%),
    linear-gradient(0deg, var(--night-2), rgba(27, 23, 18, 0.5));
}
.final-cta .cta-inner {
  position: relative;
  z-index: 2;
}
.final-cta h2 {
  font-family: var(--serif);
  font-weight: 600;
  color: var(--cream);
  font-size: clamp(2rem, 5vw, 3.2rem);
  line-height: 1.3;
  letter-spacing: 0.03em;
  margin: 22px auto 18px;
  max-width: 18ch;
  text-wrap: balance;
}
.final-cta p {
  color: var(--muted);
  max-width: 520px;
  margin: 0 auto 34px;
  line-height: 1.9;
}
.final-cta .hero-actions {
  justify-content: center;
}

/* ---------- Divider mark ---------- */
.mark-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  color: var(--gold);
  opacity: 0.7;
}
.mark-divider .ln {
  width: min(120px, 24vw);
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}
.mark-divider .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  border: 1px solid var(--gold);
}

/* ---------- Footer ---------- */
.site-footer {
  border-top: 1px solid var(--line);
  background: var(--night-2);
  padding: 64px 0 34px;
}
.footer-top {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 40px;
  padding-bottom: 40px;
  border-bottom: 1px solid var(--line-soft);
}
@media (max-width: 760px) {
  .footer-top {
    grid-template-columns: 1fr;
    gap: 32px;
  }
}
.footer-brand .brand {
  margin-bottom: 18px;
}
.footer-brand p {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.85;
  max-width: 320px;
}
.footer-col h5 {
  font-family: var(--serif);
  color: var(--cream);
  font-size: 1rem;
  letter-spacing: 0.14em;
  margin-bottom: 18px;
}
.footer-col a {
  display: block;
  color: var(--muted);
  font-size: 0.92rem;
  padding: 7px 0;
  transition: color 0.3s;
}
.footer-col a:hover {
  color: var(--gold-soft);
}
.footer-bottom {
  padding-top: 26px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  color: var(--faint);
  font-size: 0.82rem;
  letter-spacing: 0.08em;
}

/* ---------- Reveal on scroll ---------- */
.reveal {
  opacity: 0;
  transform: translateY(34px);
  transition: opacity 1s var(--ease-out), transform 1s var(--ease-out);
  will-change: opacity, transform;
}
.reveal.in {
  opacity: 1;
  transform: none;
}
.reveal.d1 { transition-delay: 0.08s; }
.reveal.d2 { transition-delay: 0.16s; }
.reveal.d3 { transition-delay: 0.24s; }
.reveal.d4 { transition-delay: 0.32s; }

/* =========================================================
   Mobile refinement — keep the premium feel on phones
   ========================================================= */
@media (max-width: 640px) {
  .container {
    padding: 0 20px;
  }
  section {
    padding: clamp(56px, 15vw, 88px) 0;
  }

  /* Header — compact, breathing room */
  .nav {
    padding: 12px 18px;
  }
  .brand img {
    width: 36px;
    height: 36px;
    border-radius: 9px;
  }
  .brand-name {
    font-size: 1.08rem;
    letter-spacing: 0.12em;
  }
  .brand-name small {
    font-size: 0.52rem;
    letter-spacing: 0.34em;
    margin-top: 4px;
  }
  .nav-cta .btn-gold {
    padding: 11px 18px;
    font-size: 0.82rem;
    letter-spacing: 0.04em;
  }
  .nav-links {
    top: 62px;
  }

  /* Hero — stronger vertical veil so type reads cleanly on the photo */
  .hero {
    padding-top: 104px;
    padding-bottom: 64px;
    min-height: 92svh;
  }
  .hero-bg img {
    object-position: 68% center;
  }
  .hero-bg::after {
    background:
      linear-gradient(0deg, var(--night) 12%, rgba(20, 17, 12, 0.6) 55%, rgba(20, 17, 12, 0.45) 100%),
      radial-gradient(120% 80% at 50% 100%, rgba(20, 17, 12, 0.85), transparent 70%);
  }
  .hero h1 {
    margin: 20px 0;
    letter-spacing: 0.02em;
  }
  .hero p.lead {
    line-height: 1.85;
  }
  .hero-scroll {
    display: none;
  }

  /* Full-width, comfortably tappable CTAs */
  .hero-actions {
    gap: 12px;
    margin-top: 30px;
    width: 100%;
  }
  .hero-actions .btn {
    width: 100%;
  }
  .btn-lg {
    padding: 17px 32px;
    font-size: 1rem;
  }

  /* Inner-page hero spacing */
  .page-hero {
    padding-top: clamp(112px, 30vw, 150px);
  }
  .page-hero .hero-bg img {
    object-position: center 22%;
  }
  .page-hero p {
    font-size: 1rem;
  }

  /* Cards / panels — tighter, still luxurious padding */
  .feature {
    padding: 30px 24px;
  }
  .feature .step-no {
    font-size: 2rem;
    top: 18px;
    right: 22px;
  }
  .pg-col {
    padding: 28px 22px;
  }
  .step-card {
    padding: 32px 26px 28px;
  }
  .split {
    gap: 30px;
  }
  .split-media img {
    border-radius: var(--radius-md);
  }
  .split-media .badge {
    bottom: 16px;
    left: 16px;
    padding: 8px 16px;
    font-size: 0.78rem;
  }

  /* Story quote — avoid oversized line-height on small screens */
  .story .quote {
    line-height: 1.55;
    margin: 24px auto 22px;
  }

  /* FAQ — tighter horizontal padding */
  .faq-item summary {
    padding: 18px 20px;
    font-size: 1rem;
  }
  .faq-item .faq-body {
    padding: 0 20px 20px;
  }

  /* Final CTA */
  .final-cta .cta-panel {
    padding: 48px 22px;
    border-radius: var(--radius-md);
  }

  /* Footer — centered, calmer layout */
  .site-footer {
    padding: 52px 0 30px;
    text-align: center;
  }
  .footer-brand .brand {
    justify-content: center;
  }
  .footer-brand p {
    margin: 0 auto;
  }
  .footer-bottom {
    justify-content: center;
    text-align: center;
    gap: 8px;
  }
}

/* Small-phone tuning */
@media (max-width: 380px) {
  .brand-name small {
    display: none;
  }
  .nav-cta .btn-gold {
    padding: 10px 14px;
    font-size: 0.76rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .hero-scroll .line { animation: none; }
  html { scroll-behavior: auto; }
  .preloader { display: none; }
}
/* =========================================================
   首頁改版新增 — 真實問題 / 平台怎麼解決 / 流程 / 浮動介面卡片群
   （沿用既有 --night / --panel / --gold / --cream 等 token，
   刻意不引入新的淺色背景，維持全站黑金基調）
   ========================================================= */

/* ---------- 浮動介面卡片群（Hero 與「真實介面」共用的簽名元素）---------- */
.float-stage {
  position: relative;
  height: 460px;
}
.split-media .float-stage.proof-stage {
  height: 420px;
}
.ui-card {
  position: absolute;
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 14px 16px;
  box-shadow: var(--shadow);
  animation: uiFloat 7.5s var(--ease-out) infinite;
}
.ui-card .ui-card-label {
  display: flex;
  align-items: center;
  font-size: 0.66rem;
  letter-spacing: 0.08em;
  color: var(--faint);
  margin-bottom: 6px;
}
.ui-card .ui-card-main {
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--cream);
}
.ui-card .ui-card-sub {
  font-size: 0.76rem;
  color: var(--muted);
  margin-top: 3px;
}
.ui-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--moss-pale);
  margin-right: 6px;
  box-shadow: 0 0 0 4px rgba(169, 185, 142, 0.18);
}
@keyframes uiFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-9px); }
}

/* Hero 內的浮動卡片群位置 */
.hero .float-stage { position: absolute; top: 50%; right: 5%; width: 300px; transform: translateY(-50%); }
.hero .ui-card-notify { top: -60px; right: -4%; width: 250px; animation-delay: 0s; }
.hero .ui-card-chat   { top: 108px; right: 18%; width: 216px; animation-delay: 0.4s; }
.hero .ui-card-eta    { top: 232px; right: -8%; width: 202px; animation-delay: 0.8s; }
.hero .ui-card-rating { top: 0;    left: -180px; width: 172px; animation-delay: 1.1s; }
@media (max-width: 1180px) {
  .hero .float-stage { display: none; } /* 窄視窗容易跟文字互相遮擋，寧可先藏起來 */
}
@media (max-width: 860px) {
  .hero { padding-bottom: 40px; }
}

/* 「真實介面」段落內的浮動卡片群（借用 .split-media 當容器）*/
.proof-stage .ui-card-a { top: 0;    left: 4%;  width: 232px; z-index: 3; }
.proof-stage .ui-card-b { top: 118px; left: 42%; width: 206px; z-index: 2; animation-delay: 0.4s; }
.proof-stage .ui-card-c { top: 246px; left: 0;   width: 194px; z-index: 1; animation-delay: 0.8s; }
.proof-stage .ui-card-d { top: 30px; left: 66%;  width: 182px; z-index: 4; animation-delay: 1.1s; }
@media (max-width: 860px) {
  .proof-stage { height: auto; display: flex; flex-direction: column; gap: 12px; }
  .proof-stage .ui-card { position: static; width: 100% !important; animation: none; }
}

/* ---------- 真實問題：大段獨白，不置中 ---------- */
.pain {
  padding-top: clamp(120px, 14vw, 180px);
  padding-bottom: clamp(100px, 12vw, 160px);
}
.pain-inner {
  max-width: 680px;
  margin-left: auto;
  margin-right: 6%;
}
.pain-quote {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 3.2vw, 2.4rem);
  font-weight: 500;
  line-height: 1.7;
  color: var(--cream);
  letter-spacing: 0.02em;
  margin-bottom: 32px;
  text-wrap: balance;
}
.pain-quote .strike {
  color: var(--faint);
  text-decoration: line-through;
  text-decoration-color: rgba(200, 162, 76, 0.45);
}
.pain-lead {
  color: var(--muted);
  font-size: 1.02rem;
  line-height: 2;
  max-width: 52ch;
}
.pain-sign {
  margin-top: 30px;
  font-size: 0.88rem;
  letter-spacing: 0.06em;
  color: var(--gold-soft);
}
@media (max-width: 760px) {
  .pain-inner { margin: 0; max-width: 100%; }
}

/* ---------- 平台怎麼解決：一句話講完機制，深色浮板做節奏切換 ---------- */
.mechanism {
  padding-top: clamp(90px, 10vw, 100px);
  padding-bottom: clamp(90px, 10vw, 100px);
}
.mechanism-panel {
  max-width: 780px;
  margin: 0 auto;
  text-align: center;
  padding: clamp(48px, 7vw, 74px) clamp(24px, 5vw, 60px);
  border-radius: var(--radius-lg);
  border: 1px solid var(--line);
  background: linear-gradient(160deg, var(--panel-2), var(--night-2));
  box-shadow: var(--shadow);
}
.mechanism-panel .eyebrow { justify-content: center; }
.mechanism-flow {
  font-family: var(--serif);
  font-size: clamp(1.3rem, 2.8vw, 2rem);
  font-weight: 600;
  line-height: 1.7;
  color: var(--cream);
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 12px;
}
.mechanism-flow .arrow {
  font-size: 0.55em;
  color: var(--gold-deep);
  opacity: 0.85;
}
.mechanism-note {
  margin: 26px auto 0;
  max-width: 44ch;
  color: var(--muted);
  font-size: 0.98rem;
  line-height: 1.9;
}

/* ---------- 流程：五步驟時間軸，左文右畫面交錯 ---------- */
.process-step {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(30px, 5vw, 60px);
  align-items: center;
  padding: 52px 0;
  border-top: 1px solid var(--line);
}
.process-step:first-of-type { border-top: none; padding-top: 0; }
.process-step.reverse .process-visual { order: 2; }
.process-step.reverse .process-text { order: 1; }
.process-mark {
  display: block;
  font-family: var(--serif);
  font-size: 0.92rem;
  letter-spacing: 0.1em;
  color: var(--gold);
  margin-bottom: 12px;
}
.process-text h3 {
  font-family: var(--serif);
  color: var(--cream);
  font-weight: 600;
  font-size: 1.55rem;
  letter-spacing: 0.02em;
  margin-bottom: 12px;
  line-height: 1.4;
}
.process-text p {
  color: var(--muted);
  font-size: 0.98rem;
  line-height: 1.9;
  max-width: 40ch;
}
.process-visual { display: flex; justify-content: center; }

/* 流程步驟裡的手機示意畫面（沿用 panel / line / shadow token，不是照片，是真實資料結構） */
.ui-phone {
  width: 232px;
  border-radius: 24px;
  border: 1px solid var(--line);
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  box-shadow: var(--shadow-lift);
  padding: 18px;
}
.ui-phone .ui-phone-top {
  display: flex;
  justify-content: space-between;
  font-size: 0.66rem;
  color: var(--faint);
  margin-bottom: 14px;
  letter-spacing: 0.04em;
}
.ui-phone .ui-phone-notice {
  background: rgba(200, 162, 76, 0.1);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px;
  margin-bottom: 10px;
}
.ui-phone .ui-phone-notice .t { font-size: 0.78rem; font-weight: 600; color: var(--gold-soft); margin-bottom: 4px; }
.ui-phone .ui-phone-notice .s { font-size: 0.72rem; color: var(--muted); }
.ui-phone-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: 0.76rem;
}
.ui-phone-row:last-child { border-bottom: none; }
.ui-phone-row .lbl { color: var(--faint); }
.ui-phone-row .val { color: var(--cream); font-weight: 600; }
.ui-phone-btn {
  margin-top: 12px;
  text-align: center;
  font-size: 0.78rem;
  font-weight: 700;
  color: #241d0e;
  background: linear-gradient(135deg, var(--gold-soft), var(--gold) 55%, var(--gold-deep));
  border-radius: 999px;
  padding: 10px;
}
.ui-phone-map {
  height: 84px;
  border-radius: 12px;
  margin-bottom: 10px;
  position: relative;
  overflow: hidden;
  border: 1px solid var(--line);
  background:
    radial-gradient(circle at 30% 40%, rgba(200, 162, 76, 0.3), transparent 55%),
    linear-gradient(135deg, rgba(200, 162, 76, 0.12), rgba(134, 154, 107, 0.06));
}
.ui-phone-map .pin {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--gold-soft);
  box-shadow: 0 0 0 5px rgba(200, 162, 76, 0.2);
}
.ui-phone-map .pin.a { top: 32%; left: 26%; }
.ui-phone-map .pin.b { top: 58%; left: 64%; background: var(--moss-pale); box-shadow: 0 0 0 5px rgba(169, 185, 142, 0.2); }
.ui-phone-stars { color: var(--gold-soft); font-size: 0.9rem; letter-spacing: 2px; margin-bottom: 6px; }

@media (max-width: 860px) {
  .process-step { grid-template-columns: 1fr; gap: 26px; padding: 40px 0; }
  .process-step.reverse .process-text,
  .process-step.reverse .process-visual { order: initial; }
}

@media (prefers-reduced-motion: reduce) {
  .ui-card { animation: none; }
}
