:root {
  --cream: #F6EFE1;
  --brown: #5E4636;
  --green: #3F5B46;
  --berry: #B5473A;
  --col: 560px;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body {
  background: var(--cream);
  color: var(--brown);
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic", sans-serif;
  font-size: 16px;
  line-height: 1.8;
  overflow-x: hidden;
}
h1, h2, h3 { word-break: auto-phrase; text-wrap: balance; line-break: strict; }

.lp {
  max-width: var(--col);
  margin: 0 auto;
  background: var(--cream);
  box-shadow: 0 0 60px rgba(94, 70, 54, .08);
}
.part { position: relative; margin: 0; }
.part > img, .seam > img { display: block; width: 100%; height: auto; }
.seam { position: relative; overflow: hidden; margin: -1px 0; }

/* 画像の中のボタンの上に重ねるリンク（見た目は画像のまま） */
.hit {
  position: absolute;
  left: var(--x); top: var(--y); width: var(--w); height: var(--h);
  min-height: 44px;
  border-radius: 999px;
  color: transparent;
  font-size: 0;
  overflow: hidden;
  outline-offset: 3px;
  transition: background-color .2s;
}
.hit:hover { background: rgba(255, 255, 255, .12); }
.hit:focus-visible { outline: 3px solid var(--berry); }

/* 舞う粉雪（つなぎ目の上） */
.flake {
  position: absolute; top: -8px;
  width: var(--s); height: var(--s);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.95) 0 40%, rgba(255,255,255,0) 72%);
  filter: blur(var(--b));
  pointer-events: none;
  animation: fall var(--d) linear var(--delay) infinite;
}
@keyframes fall {
  0%   { transform: translate(0, 0); opacity: 0; }
  10%  { opacity: 1; }
  100% { transform: translate(var(--dx), 260px); opacity: 0; }
}

/* 下に追従する予約ボタン（FVを過ぎてから表示） */
.sticky {
  position: fixed; left: 50%; bottom: 0;
  transform: translate(-50%, 110%);
  width: 100%; max-width: var(--col);
  display: flex; gap: 10px; align-items: center;
  padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
  background: rgba(246, 239, 225, .94);
  backdrop-filter: blur(6px);
  box-shadow: 0 -6px 20px rgba(94, 70, 54, .10);
  transition: transform .35s ease;
  z-index: 10;
}
.sticky.show { transform: translate(-50%, 0); }
.sticky-dm {
  flex: 1;
  display: flex; justify-content: center; align-items: center; gap: .6em;
  min-height: 48px;
  border-radius: 999px;
  background: var(--green);
  color: var(--cream);
  text-decoration: none;
  font-size: 16px;
  letter-spacing: .06em;
}
.sticky-ig { flex: none; display: block; width: 44px; height: 44px; }
.sticky-ig img { width: 44px; height: 44px; display: block; }

.foot {
  padding: 28px 16px calc(96px + env(safe-area-inset-bottom));
  text-align: center;
  font-size: 13px;
  letter-spacing: .05em;
}

@media (min-width: 900px) {
  body {
    background:
      radial-gradient(circle at 20% 10%, rgba(63, 91, 70, .06), transparent 40%),
      radial-gradient(circle at 80% 70%, rgba(181, 71, 58, .05), transparent 40%),
      var(--cream);
  }
}

@media (prefers-reduced-motion: reduce) {
  .flake { display: none; }
  .sticky { transition: none; }
}
