/* 2026サマーキャンプ特設ページ(summercamp2026.html)専用。他のページには読み込まれない。 */
.camp-body main.camp { --navy: #0d2b3e; --deep: #081c2a; --gold: #c2a468; --gold-d: #7d6535; --ivory: #f8f5ef; --ink: #1f272d;
  --serif: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", "Noto Serif CJK JP", "Noto Serif JP", serif;
  color: var(--ink); overflow-x: clip; }
.camp-wrap { max-width: 1080px; margin: 0 auto; padding: 0 20px; }
.camp-narrow { max-width: 760px; margin: 0 auto; padding: 0 20px; }
.camp-center { text-align: center; margin-top: 44px; }
.camp br.sp { display: none; }
.camp h1, .camp h2, .camp h3, .camp-lead, .camp-quote p { text-wrap: balance; }

/* ボタン */
.camp-btn { display: inline-block; padding: 15px 34px; background: var(--gold); color: #1a1408; font-weight: 700; letter-spacing: .08em;
  text-decoration: none; border: 1px solid var(--gold); border-radius: 2px; transition: background .25s, color .25s, transform .25s; }
.camp-btn:hover { background: #d6bb82; color: #1a1408; transform: translateY(-2px); }
.camp-btn--ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.7); }
.camp-btn--ghost:hover { background: rgba(255,255,255,.12); color: #fff; }

/* ヒーロー */
.camp-hero { position: relative; min-height: min(82vh, 760px); display: grid; place-items: center; text-align: center; color: #fff;
  background: var(--deep) url(../images/summercamp2026/hero.jpg) center / cover no-repeat; }
.camp-hero::before { content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(8,28,42,.7) 0%, rgba(8,28,42,.4) 45%, rgba(8,28,42,.78) 100%); }
.camp-hero-inner { position: relative; padding: 80px 20px 120px; }
.camp-eyebrow { font-family: var(--serif); letter-spacing: .5em; font-size: 14px; color: #e6cd96; margin-bottom: 22px; text-shadow: 0 1px 10px rgba(0,0,0,.6); }
.camp-hero h1 { font-family: var(--serif); font-weight: 500; font-size: clamp(32px, 5.6vw, 64px); letter-spacing: .12em; line-height: 1.4; text-shadow: 0 2px 20px rgba(0,0,0,.35); }
.camp-rule { width: 64px; height: 1px; background: var(--gold); margin: 30px auto; }
.camp-hero-date { font-family: var(--serif); letter-spacing: .2em; font-size: clamp(15px, 2vw, 20px); margin-bottom: 38px; }
.camp-hero-btns { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.camp-scroll { position: absolute; left: 50%; bottom: 28px; width: 26px; height: 44px; margin-left: -13px; border: 1px solid rgba(255,255,255,.7); border-radius: 14px; }
.camp-scroll span { position: absolute; left: 50%; top: 8px; width: 3px; height: 8px; margin-left: -1.5px; background: #fff; border-radius: 2px; animation: camp-scroll 1.8s infinite; }
@keyframes camp-scroll { 0% { opacity: 0; transform: translateY(0); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateY(16px); } }

/* 共通セクション */
.camp-sec { padding: 104px 0; }
.camp-ivory { background: var(--ivory); }
.camp-dark { background: var(--navy); color: #fff; }
.camp-dark--deep { background: var(--deep); }
.camp-head { text-align: center; margin-bottom: 52px; }
.camp-head p { font-family: var(--serif); letter-spacing: .5em; font-size: 13px; color: var(--gold-d); font-weight: 700; margin-bottom: 14px; }
.camp-dark .camp-head p { color: var(--gold); }
.camp-head h2 { font-family: var(--serif); font-weight: 500; font-size: clamp(26px, 3.6vw, 38px); letter-spacing: .1em; line-height: 1.5; }
.camp-head h2::after { content: ""; display: block; width: 48px; height: 1px; background: var(--gold); margin: 22px auto 0; }
.camp-head--left { text-align: left; }
.camp-head--left h2::after { margin-left: 0; }
.camp-head span { display: block; margin-top: 14px; font-size: 14px; color: #5c646a; }
.camp-dark .camp-head span { color: #aebbc4; }
.camp-note { text-align: center; font-size: 14px; color: #aebbc4; margin-top: 18px; }
.camp-note--dark { text-align: left; color: #5c646a; }
.camp-text { font-size: 17px; line-height: 2; }

/* 導入 */
.camp-intro { padding: 96px 0 72px; text-align: center; }
.camp-crumb { font-size: 13px; color: #5c646a; margin-bottom: 38px; }
.camp-crumb a { color: inherit; }
.camp-lead { font-family: var(--serif); font-size: clamp(20px, 2.6vw, 28px); line-height: 2; letter-spacing: .06em; margin-bottom: 30px; }
.camp-intro .camp-text { text-align: left; color: #3d474e; }

/* 数字 */
.camp-stats-band { background: var(--navy); color: #fff; padding: 64px 0; border-top: 1px solid rgba(194,164,104,.5); border-bottom: 1px solid rgba(194,164,104,.5); }
.camp-stats { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; text-align: center; margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; }
.camp-stats li { padding: 8px 14px; border-left: 1px solid rgba(255,255,255,.14); }
.camp-stats li:first-child { border-left: 0; }
.camp-stats b { display: block; font-family: var(--serif); font-weight: 500; font-size: clamp(40px, 5.4vw, 62px); line-height: 1.2; color: var(--gold); font-variant-numeric: lining-nums; }
.camp-stats b i { font-style: normal; }
.camp-stats b small { font-size: .4em; margin-left: 4px; color: #fff; letter-spacing: .1em; }
.camp-stats span { display: block; margin-top: 10px; font-size: 14px; line-height: 1.8; color: #cdd7de; }

/* 動画・スライドショー */
.camp-video { max-width: 980px; margin: 0 auto; box-shadow: 0 24px 60px rgba(0,0,0,.45); border: 1px solid rgba(194,164,104,.45); }
.camp-video video { width: 100%; display: block; background: #000; aspect-ratio: 16 / 9; }
.camp-show { max-width: 980px; margin: 0 auto; }
.camp-stage { position: relative; overflow: hidden; aspect-ratio: 16 / 10; background: #000; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 24px 60px rgba(0,0,0,.5); border: 1px solid rgba(194,164,104,.45); }
.camp-stage::before { content: ""; position: absolute; inset: -20px; background: var(--bg, #000) center / cover; filter: blur(24px) brightness(.5); }
.camp-stage img { position: relative; max-width: 100%; max-height: 100%; display: block; transition: opacity .2s; }
.camp-stage img.is-changing { opacity: .35; }
.camp-progress { height: 2px; background: rgba(255,255,255,.15); }
.camp-progress i { display: block; height: 100%; width: 0; background: var(--gold); }
.camp-progress i.run { animation: camp-bar 4.5s linear forwards; }
@keyframes camp-bar { from { width: 0; } to { width: 100%; } }
.camp-caption { text-align: center; font-family: var(--serif); letter-spacing: .1em; font-size: 17px; margin: 18px 0 14px; min-height: 1.8em; }
.camp-controls { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: center; }
.camp-controls button { font: inherit; font-size: 14px; letter-spacing: .06em; min-height: 44px; padding: 10px 20px; cursor: pointer; color: #fff;
  background: transparent; border: 1px solid rgba(194,164,104,.7); border-radius: 2px; transition: background .2s; }
.camp-controls button:hover { background: rgba(194,164,104,.2); }
.camp-controls button .ico { display: inline-block; min-width: 1em; }
.camp-count { min-width: 5em; text-align: center; font-size: 14px; color: #aebbc4; }
.camp-show:fullscreen { background: #000; display: flex; flex-direction: column; justify-content: center; max-width: none; padding: 16px; }
.camp-show:fullscreen .camp-stage { aspect-ratio: auto; flex: 1; box-shadow: none; border: 0; }

/* 引用の写真帯 */
.camp-quote { position: relative; min-height: 420px; display: grid; place-items: center; text-align: center; color: #fff; padding: 80px 20px;
  background: var(--deep); }
.camp-quote.is-near { background: var(--deep) url(../images/summercamp2026/band.jpg) center / cover no-repeat; }
.camp-quote::before { content: ""; position: absolute; inset: 0; background: rgba(8,28,42,.58); }
.camp-quote p { position: relative; font-family: var(--serif); font-size: clamp(22px, 3.4vw, 38px); line-height: 2; letter-spacing: .14em; }

/* 体験カード */
.camp-cards { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 36px; margin: 0; padding: 0; }
.camp-cards li { margin: 0; }
.camp-card-img { overflow: hidden; aspect-ratio: 4 / 5; background: #ddd; }
.camp-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s; }
.camp-cards li:hover .camp-card-img img { transform: scale(1.05); }
.camp-num { display: block; font-family: var(--serif); font-size: 15px; letter-spacing: .3em; color: var(--gold-d); margin: 22px 0 6px; }
.camp-cards h3 { font-family: var(--serif); font-weight: 500; font-size: 20px; letter-spacing: .06em; line-height: 1.6; margin-bottom: 10px; }
.camp-cards p { font-size: 15px; line-height: 1.9; color: #4a545b; }

/* 流れ・人 */
.camp-two { display: grid; grid-template-columns: 1.2fr 1fr; gap: 72px; }
.camp-timeline { list-style: none; margin: 0 0 14px; padding: 0 0 0 28px; border-left: 1px solid var(--gold); }
.camp-timeline li { position: relative; margin: 0 0 34px; }
.camp-timeline li::before { content: ""; position: absolute; left: -33px; top: 9px; width: 9px; height: 9px; background: var(--gold); border-radius: 50%; }
.camp-timeline h3 { font-family: var(--serif); font-weight: 500; font-size: 20px; letter-spacing: .08em; margin-bottom: 8px; }
.camp-timeline small { font-size: 14px; color: #5c646a; margin-left: 8px; letter-spacing: .04em; }
.camp-timeline p { font-size: 16px; line-height: 1.95; }

/* 開催情報 */
.camp-facts { margin: 0; border-top: 1px solid var(--ink); }
.camp-facts > div { display: grid; grid-template-columns: 170px 1fr; gap: 20px; padding: 22px 6px; border-bottom: 1px solid #d8d2c4; }
.camp-facts dt { font-family: var(--serif); letter-spacing: .1em; color: var(--gold-d); font-weight: 700; }
.camp-facts dd { margin: 0; line-height: 1.9; }
.camp-facts a { color: #1155cc; }

/* 写真一覧 */
.camp-chapter { display: flex; align-items: baseline; gap: 16px; margin: 46px 0 14px; }
.camp-chapter:first-of-type { margin-top: 0; }
.camp-chapter span { font-family: var(--serif); color: var(--gold-d); letter-spacing: .2em; font-size: 14px; }
.camp-chapter h3 { font-family: var(--serif); font-weight: 500; font-size: 20px; letter-spacing: .08em; }
.camp-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; margin: 0; padding: 0; }
.camp-grid li { margin: 0; overflow: hidden; background: #ddd; }
.camp-grid a { display: block; }
.camp-grid img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; transition: transform .6s, filter .6s; }
.camp-grid a:hover img { transform: scale(1.06); filter: brightness(1.06); }

/* 最後の呼びかけ */
.camp-final { position: relative; text-align: center; color: #fff; padding: 120px 0 100px;
  background: var(--deep) url(../images/summercamp2026/hero.jpg) center / cover no-repeat; }
.camp-final::before { content: ""; position: absolute; inset: 0; background: rgba(8,28,42,.82); }
.camp-final .camp-narrow { position: relative; }
.camp-final h2 { font-family: var(--serif); font-weight: 500; font-size: clamp(28px, 4.4vw, 46px); letter-spacing: .12em; margin-bottom: 28px; }
.camp-final p:not(.camp-eyebrow):not(.camp-hero-btns):not(.camp-final-sub) { font-size: 17px; line-height: 2.1; margin-bottom: 40px; }
.camp-final-sub { margin-top: 34px; font-size: 14px; }
.camp-final-sub a { color: #d7e0e6; }
.camp-final-sub button { font: inherit; color: #fff; background: transparent; border: 0; border-bottom: 1px solid rgba(255,255,255,.6); cursor: pointer; padding: 2px 0; }

/* スマホの固定ボタン */
.camp-sticky { display: none; }

/* スクロールで現れる動き(JSが動くときだけ) */
.camp-js .rv { opacity: 0; transform: translateY(26px); transition: opacity 1s ease, transform 1s ease; }
.camp-js .rv.is-in { opacity: 1; transform: none; }
.camp-js .camp-cards li:nth-child(2).rv { transition-delay: .12s; }
.camp-js .camp-cards li:nth-child(3).rv { transition-delay: .24s; }
.camp-js .camp-stats li:nth-child(2).rv { transition-delay: .1s; }
.camp-js .camp-stats li:nth-child(3).rv { transition-delay: .2s; }
.camp-js .camp-stats li:nth-child(4).rv { transition-delay: .3s; }

@media (max-width: 860px) {
  .camp-sec { padding: 72px 0; }
  .camp-two { grid-template-columns: 1fr; gap: 56px; }
  .camp-cards { grid-template-columns: 1fr; gap: 44px; }
  .camp-card-img { aspect-ratio: 4 / 3; }
  .camp-stats { grid-template-columns: repeat(2, 1fr); row-gap: 34px; }
  .camp-stats li:nth-child(3) { border-left: 0; }
}
@media (max-width: 700px) {
  .camp br.sp { display: inline; }
  .camp-btn { padding: 14px 16px; font-size: 14px; letter-spacing: .04em; }
  .camp-final h2 { font-size: 26px; letter-spacing: .08em; }
  .camp-hero { min-height: 70vh; background-image: url(../images/summercamp2026/hero-m.jpg); }
  .camp-final { background-image: url(../images/summercamp2026/hero-m.jpg); }
  .camp-hero-inner { padding: 64px 16px 110px; }
  .camp-intro { padding: 64px 0 48px; }
  .camp-text { font-size: 16px; }
  .camp-stats-band { padding: 44px 0; }
  .camp-quote { min-height: 320px; }
  .camp-facts > div { grid-template-columns: 1fr; gap: 4px; }
  .camp-grid { grid-template-columns: repeat(2, 1fr); }
  .camp-final { padding: 80px 0 120px; }
  .camp-sticky { display: block; position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 50; padding: 15px 12px; text-align: center;
    background: var(--gold); color: #1a1408; font-weight: 700; font-size: 15px; text-decoration: none; border-radius: 3px;
    box-shadow: 0 8px 24px rgba(0,0,0,.35); transform: translateY(140%); visibility: hidden; transition: transform .35s, visibility 0s .35s; }
  .camp-sticky:hover { color: #1a1408; }
  .camp-sticky.is-on { transform: none; visibility: visible; transition: transform .35s, visibility 0s; }
  .camp-body .site-footer { padding-bottom: 84px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .camp-js .rv { opacity: 1; transform: none; transition: none; }
  .camp-scroll span, .camp-progress i.run { animation: none; }
  .camp-stage img, .camp-card-img img, .camp-grid img, .camp-btn, .camp-sticky { transition: none; }
}
