:root{
  --bg:#f7eaec;
  --rose:#9a3d58;
  --rose-deep:#7a2d44;
  --gold:#c9a46a;
  --gold-light:#ead6ad;
  --stage-w:min(100vw, 460px);   /* 列の幅(スマホ=画面幅・PC=中央460px) */
  --cta-h:calc(var(--stage-w) / 3); /* cta-banner 2172x724 = 3:1 */
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:var(--bg)}
body{
  font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;
  display:flex;justify-content:center;overflow:hidden;
  height:100vh;height:100dvh;
}
.stage{
  position:relative;width:var(--stage-w);height:100%;
  display:flex;flex-direction:column;background:var(--bg);
}
@media (min-width:600px){ .stage{box-shadow:0 0 40px rgba(122,45,68,.12)} }

/* ---- スライド領域(CTAを除いた残り全部) ---- */
.viewer{position:relative;flex:1 1 auto;min-height:0}
.slides{
  display:flex;width:100%;height:100%;
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  overscroll-behavior-x:contain;scrollbar-width:none;outline:none;
}
.slides::-webkit-scrollbar{display:none}
.slide{
  flex:0 0 100%;width:100%;height:100%;
  scroll-snap-align:center;scroll-snap-stop:always;
  display:flex;align-items:center;justify-content:center;
  container-type:size;
}
/* 941:1672 を保ったまま、領域の幅・高さどちらにも収まる最大サイズ(=切れない) */
.frame{
  position:relative;
  width:min(100cqw, calc(100cqh * 941 / 1672));
  aspect-ratio:941 / 1672;
  container-type:inline-size;
}
.frame img{display:block;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-select:none}
/* container query 非対応ブラウザ用 */
@supports not (width:1cqw){
  .frame{width:100%;height:100%;aspect-ratio:auto}
}

/* ---- 1枚目 開院キャンペーン帯(画像差し替え時は .campaign-badge ごと外す) ---- */
.campaign-badge{
  position:absolute;
  left:5%;top:78.2%;width:47%;
  padding:2.2cqw 2cqw 2.4cqw;
  display:flex;flex-direction:column;align-items:center;
  font-family:"Noto Serif JP","Hiragino Mincho ProN","Yu Mincho",serif;
  color:#fff;text-align:center;line-height:1.25;
  background:linear-gradient(160deg,var(--rose) 0%,var(--rose-deep) 100%);
  border:1px solid var(--gold);
  outline:1px solid var(--gold-light);outline-offset:-0.9cqw;
  border-radius:0.8cqw;
  box-shadow:0 1cqw 3cqw rgba(122,45,68,.28);
}
.cb-head{
  font-size:max(11px,3.6cqw);font-weight:700;letter-spacing:.12em;color:var(--gold-light);
  padding-bottom:0.8cqw;margin-bottom:0.9cqw;
  border-bottom:1px solid var(--gold);
}
.cb-sub{font-size:max(11px,3.4cqw);font-weight:500;letter-spacing:.08em}
.cb-off{font-weight:700;color:var(--gold-light);font-size:max(12px,4cqw);margin-left:.2em;letter-spacing:.02em}
.cb-normal{font-size:max(10px,2.9cqw);font-weight:500;opacity:.9;margin-top:.4cqw;letter-spacing:.04em}
.cb-normal s{text-decoration-thickness:1.5px}
.cb-price{font-size:7.4cqw;font-weight:700;letter-spacing:.01em;white-space:nowrap}
.cb-price small{font-size:max(10px,3.2cqw);font-weight:500;margin-left:.15em}

/* ---- ページ数・矢印 ---- */
.page-count{
  position:absolute;top:10px;right:10px;z-index:3;
  padding:4px 11px;border-radius:999px;
  background:rgba(122,45,68,.78);color:#fff;
  font-size:12px;font-weight:600;letter-spacing:.06em;
  font-variant-numeric:tabular-nums;pointer-events:none;
}
.arrow{
  position:absolute;top:50%;z-index:3;transform:translateY(-50%);
  width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(255,255,255,.82);box-shadow:0 2px 8px rgba(122,45,68,.22);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .2s;
}
.arrow svg{width:20px;height:20px;fill:none;stroke:var(--rose-deep);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.arrow.prev{left:6px}
.arrow.next{right:6px}
.arrow:disabled{opacity:0;pointer-events:none}

/* ---- 下部固定CTA ---- */
.cta{flex:0 0 auto;height:var(--cta-h);padding-bottom:env(safe-area-inset-bottom)}
.cta a{display:block;width:100%;height:100%}
.cta img{display:block;width:100%;height:100%;object-fit:contain}
@media (prefers-reduced-motion:reduce){.slides{scroll-behavior:auto}}
