@charset "UTF-8";
  :root{
    --cream:#FBF6EC;
    --cream-deep:#F7E8E0;
    --maroon:#B3243F;
    --maroon-deep:#8A1A31;
    --gold:#B08A3E;
    --gold-light:#E7C889;
    --pink:#D96B7B;
    --line-green:#06C755;
    --line-green-deep:#049E45;
    --ink:#3A2E22;
    --sub:#8a7a5f;
  }
  *{box-sizing:border-box;margin:0;padding:0;}
  html{scroll-behavior:auto;}
  html,body{overflow-x:hidden;}
  body{
    font-family:"Zen Maru Gothic","Hiragino Maru Gothic ProN","Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;
    color:var(--ink);
    background:#ddd;
    display:flex;
    justify-content:center;
  }
  a{color:inherit;}
  .lp-wrapper{
    width:100%;
    max-width:480px;
    background:var(--cream);
    position:relative;
    overflow:hidden;
    box-shadow:0 0 24px rgba(0,0,0,.15);
  }
  .section-title{
    font-family:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;
    font-weight:500;
    font-size:20px; color:var(--maroon); text-align:center;
  }
  .section-note{
    text-align:center; font-size:10.5px; color:var(--sub);
    background:#fff3d6; border:1px dashed var(--gold-light);
    padding:6px 10px; border-radius:6px; margin:0 20px 16px;
  }

  /* ---------- メニューボタン（FV画像のメニュー円に重ねて配置） ---------- */
  /* 位置・大きさはFV画像の幅に対する%で指定。FV画像を差し替えてメニュー円の位置が変わる場合はここを調整 */
  .menu-btn{
    position:absolute; left:95.14%; top:3.03%; transform:translate(-50%,-50%); z-index:7;
    width:15.23%; aspect-ratio:1/1;
    border-radius:50%; background:#fff; border:none; cursor:pointer;
    box-shadow:0 10px 20px rgba(90,40,15,.28), 0 2px 4px rgba(90,40,15,.12);
  }
  .menu-btn-icon span{width:100%; height:2px; background:var(--maroon); display:block; border-radius:1px;}
  .menu-btn-icon{position:absolute; top:56%; left:44%; transform:translate(-50%,-50%) scale(1.2); width:24%; display:flex; flex-direction:column; align-items:center; gap:5px;}

  /* ---------- グローバルナビ（ハンバーガー展開） ---------- */
  #g-nav{
    position:fixed; z-index:999; inset:0;
    background:linear-gradient(160deg, var(--maroon), var(--maroon-deep));
    display:flex; align-items:center; justify-content:center;
    opacity:0; pointer-events:none; transform:translateY(-6px);
    transition:opacity .3s ease, transform .3s ease;
  }
  #g-nav.is-open{opacity:1; pointer-events:auto; transform:translateY(0);}
  #g-nav ul{list-style:none; text-align:center;}
  #g-nav li{margin:18px 0;}
  #g-nav a{color:#fff; text-decoration:none; font-size:16px; letter-spacing:.08em;}
  #g-nav-close{position:absolute; top:16px; right:16px; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,.15); border:none; color:#fff; font-size:16px;}

  /* ---------- hero（FV画像） ---------- */
  .hero{position:relative;}
  .hero-media{position:relative;}
  .hero-fv-image{display:block; width:100%; height:auto;}

  .line-cta{display:flex; align-items:center; gap:10px; margin:calc(-1 * min(9vw, 43px)) 20px 0; position:relative; padding:10px 18px; background:linear-gradient(180deg,var(--line-green),var(--line-green-deep)); border-radius:999px; box-shadow:0 6px 14px rgba(4,158,69,.35); text-decoration:none; justify-content:center;}
  .line-cta--hero{
    margin-left:30px; margin-right:30px;
    padding:8px 14px; border:3px solid #06C755;
    justify-content:center; gap:8px;
    background:#FFF3D6;
  }
  .line-main.line-main--hero{
    font-family:"BIZ UDPGothic","Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;
    font-size:clamp(26px, 8.4vw, 26px); font-weight:700; color:#06C755;
    letter-spacing:-.01em; line-height:1; white-space:nowrap;
  }
  .line-cta--hero .line-arrow--hero{ color:#06C755; margin-left:5px; padding-left:0; }
  .line-logo{width:30px; height:30px; border-radius:9px; flex-shrink:0; display:block;}
  .line-logo--hero{width:50px; height:50px; border-radius:9px; margin-left:4px;}
  .line-text-group{display:flex; flex-direction:column; line-height:1.3; text-align:left;}
  .line-sub{color:#fff; font-size:16px; font-weight:600;}
  .line-main{color:#fff; font-size:17.5px; font-weight:700; letter-spacing:.01em;}
  .line-main .accent{color:var(--gold-light);}
  .line-text{color:#fff; font-size:18px; font-weight:700;}
  .line-arrow{color:#fff; font-size:18px;}
  .line-arrow--hero{font-size:24px; margin-left:12px; padding-left:2px; margin-top:-7px; display:inline-block; animation:arrowNudge 1.6s ease-in-out infinite;}
  @keyframes arrowNudge{
    0%, 100%{transform:translateX(0);}
    50%{transform:translateX(5px);}
  }
  @media (prefers-reduced-motion: reduce){
    .line-arrow--hero{animation:none;}
  }
  .line-note{text-align:center; font-size:13px; line-height:1.6; color:var(--ink); font-weight:500; margin:4px 16px 10px;}
  .line-note span{display:block; text-wrap:balance;}
  .line-note i{font-style:normal; display:inline-block;}
  .line-note strong{color:var(--maroon); font-weight:700;}

  /* ---------- ジャンプナビ（アイコン＋ラベル） ---------- */
  .jump-nav{background:var(--cream-deep); padding:18px 12px;}
  .jump-nav ul{list-style:none; display:grid; grid-template-columns:repeat(3,1fr); row-gap:18px;}
  .jump-nav li{text-align:center; display:flex; align-items:flex-start; justify-content:center;}
  .jump-nav a{display:flex; flex-direction:column; align-items:center; gap:0; text-decoration:none; color:var(--maroon); padding:2px 2px;}
  .jump-nav-icon{width:82px; height:auto; display:block;}
  .jump-nav span{font-size:13px; line-height:1.3; color:var(--ink); letter-spacing:-.03em;}

  /* ---------- 応募方法 ---------- */
  .apply{padding:30px 30px 10px; text-align:center;}
  .apply-lead{font-size:14.5px; color:#3c2c1a; font-weight:500; margin:10px 10px 10px; line-height:1.8;}
  .notes-text{font-size:12px; color:#3c2c1a; font-weight:400; margin:10px 0px 30px; line-height:1.5; text-align:left; padding:0 4px;}
  .notes-heading{display:block; font-size:13px; font-weight:600; color:var(--maroon); margin:16px 0 6px;}
  .notes-heading:first-child{margin-top:0;}
  .notes-tbc{color:#b6382e; font-weight:700;}
  .apply-target{background:#fff; border:1px solid var(--gold-light); border-radius:10px; padding:14px 16px; margin:0 4px 24px; text-align:left;}
  .apply-target-title{font-size:13.5px; font-weight:700; color:var(--maroon); margin-bottom:6px;}
  .apply-target-list{list-style:none; padding:0; margin:0;}
  .apply-target-list li{font-size:15px; color:var(--ink); line-height:1.4; padding-left:1.1em; text-indent:-1.1em; font-weight:500;}
  .apply-target-list li::before{content:"・";}
  .apply-target-note{font-size:13px; color:#b6382e; margin-top:8px; line-height:1.4; font-weight:500;}

  /* ---------- あったかまつり：キャラクターのスライドイン ---------- */
  .matsuri{position:relative; overflow:hidden; padding-top:0; padding-bottom:128px;}
  .matsuri-character-wrap{width:108px; position:absolute; right:30px;}
  .matsuri-character{
    display:block; width:100%; height:auto;
    transform:translateX(220%);
    transition:transform 1s cubic-bezier(.22,.68,0,1);
  }
  .matsuri-character.is-inview{transform:translateX(0);}
  .matsuri-koi-wrap{width:82px; position:absolute; left:34px;}
  .matsuri-koi{
    display:block; width:100%; height:auto;
    transform:translateX(-220%);
    transition:transform 1.3s cubic-bezier(.22,.68,0,1);
  }
  .matsuri-koi.is-inview{transform:translateX(0);}
  @media (prefers-reduced-motion: reduce){
    .matsuri-character{transition:none; transform:translateX(0);}
    .matsuri-koi{transition:none; transform:translateX(0);}
  }
  .step-list{display:flex; flex-direction:column; gap:6px;}
  .step-card{
    position:relative; background:#fff; border:1px solid var(--gold-light); border-radius:14px;
    padding:14px 16px 18px; text-align:center;
  }
  .step-num{
    position:absolute; top:-14px; left:50%; transform:translateX(-50%);
    width:34px; height:34px; border-radius:50%; background:var(--maroon); color:#fff;
    display:flex; align-items:center; justify-content:center; font-size:20px; font-weight:700;
    padding-bottom:3px;
  }
  .step-photo{margin-top:10px; aspect-ratio:16/10; border-radius:10px; background:linear-gradient(135deg,#e7d3a8,#c9925a); display:flex; align-items:center; justify-content:center; color:#fff; font-size:10px;}
  .step-title{font-size:18px; font-weight:500; margin-top:12px; color:var(--maroon);}
  .step-desc{font-size:14px; color:#3c2c1a; font-weight:500; margin:5px auto 0px; line-height:1.6; width:95%;}
  .step-arrow{font-size:28px; color:var(--gold); margin:-6px 0 2px; display:inline-block; animation:stepArrowBounce 1.4s ease-in-out infinite;}
  @keyframes stepArrowBounce{
    0%, 100%{transform:translateY(0);}
    50%{transform:translateY(6px);}
  }
  @media (prefers-reduced-motion: reduce){
    .step-arrow{animation:none;}
  }

  /* ---------- 景品 ---------- */
  .prize{padding:30px 30px 10px; text-align:center;}
  .prize-list{display:flex; flex-direction:column; gap:18px; margin-top:14px;}
  .prize-card{background:#fff; border:1px solid var(--gold-light); border-radius:14px; text-align:left; position:relative;}
  .prize-photo{position:relative; aspect-ratio:4/3; background:linear-gradient(135deg,#f0d9b0,#c98a5a); display:flex; align-items:center; justify-content:center; color:#fff; font-size:11px; border-radius:14px 14px 0 0;}
  .prize-photo-inner{width:100%; height:100%; overflow:hidden; border-radius:14px 14px 0 0;}
  .prize-photo img{border-radius:14px 14px 0 0; transform:scale(1); transition:transform 2.6s ease-out; will-change:transform;}
  .prize-photo img.is-inview{transform:scale(1.05);}
  @media (prefers-reduced-motion: reduce){
    .prize-photo img{transition:none;}
    .prize-photo img.is-inview{transform:scale(1);}
  }
  .photo-note-center{color:#fff; font-size:11px;}
  .prize-count{
    position:absolute; top:12px; right:12px; z-index:3;
    width:68px; height:68px; border-radius:50%;
    background:linear-gradient(180deg,#D4405B,#B3243F); color:#fff; font-weight:800;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:0;
    padding-bottom:6px;
    box-shadow:0 6px 14px rgba(0,0,0,.3), 0 0 0 3px #fff;
    animation:prizeCountPop 2.2s ease-in-out infinite;
  }
  .prize-count-num{font-size:37px; line-height:1.13;}
  .prize-count-label{font-size:13px; line-height:1.1; letter-spacing:.02em;}
  @keyframes prizeCountPop{
    0%, 100%{transform:scale(1);}
    50%{transform:scale(1.1);}
  }
  @media (prefers-reduced-motion: reduce){
    .prize-count{animation:none;}
  }
  .prize-body{padding:14px 16px 16px;}
  .prize-title{font-size:20px; font-weight:700; color:var(--maroon); line-height:1.2;}
  .prize-amount{font-size:25px; position:relative; top:1px;}
  .prize-desc{font-size:13.5px; color:#3c2c1a; font-weight:500; margin-top:6px; line-height:1.7;}
  .prize-link{display:inline-block; margin-top:10px; font-size:15px; color:var(--maroon); border-bottom:1px solid var(--maroon); text-decoration:none;}

  /* ---------- 温泉の水面（セクション区切り） ---------- */
  .water-divider{
    position:relative; height:110px; overflow:hidden; background:transparent;
  }
  .water-divider, .water-divider::before, .water-divider::after{
    background-repeat:repeat-x; background-size:450px 110px;
  }
  .water-divider{
    background-image:url("../images/wave-a.svg");
    animation:waveScrollA 15s linear infinite;
  }
  .water-divider::before{
    content:""; position:absolute; inset:0;
    background-image:url("../images/wave-b.svg");
    animation:waveScrollB 24s linear infinite;
  }
  .water-divider::after{
    content:""; position:absolute; inset:0;
    background-image:url("../images/wave-c.svg");
    animation:waveScrollC 11s linear infinite reverse;
  }
  @keyframes waveScrollA{ from{background-position-x:0;} to{background-position-x:-450px;} }
  @keyframes waveScrollB{ from{background-position-x:0;} to{background-position-x:-450px;} }
  @keyframes waveScrollC{ from{background-position-x:0;} to{background-position-x:-450px;} }
  @media (prefers-reduced-motion: reduce){
    .water-divider, .water-divider::before, .water-divider::after{animation:none;}
  }

  /* ---------- 魅力セクション ---------- */
  .charm{padding:0px 20px 30px; text-align:center;}
  .charm .divider{display:block; font-size:12px; color:var(--pink); margin-top:4px;}
  .charm-list{list-style:none; display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-top:20px;}
  .charm-list li{display:flex; flex-direction:column; align-items:center; gap:6px;}
  .charm-photo{width:100%; aspect-ratio:1/1; border-radius:50%; background:linear-gradient(135deg,#e7d3a8,#c9925a); overflow:hidden;}
  .charm-photo img{width:100%; height:100%; object-fit:cover; display:block;}
  .charm-name{font-size:13px; color:#4a3c2c;}

  /* ---------- SNS（サムネイル＋外部リンク方式） ---------- */
  .sns{padding:20px 0 10px; text-align:center;}
  .sns-list{
    display:flex; align-items:flex-start; gap:14px; margin-top:22px;
    overflow-x:auto; -webkit-overflow-scrolling:touch; scroll-snap-type:x mandatory;
    padding:0 20px 16px;
    margin-left:20px;
  }
  .sns-card{
    flex:0 0 74%; max-width:252px; scroll-snap-align:start;
    display:flex; flex-direction:column; background:#fff; border:1px solid var(--gold-light);
    border-radius:14px; overflow:hidden; text-decoration:none; text-align:left;
    position:relative;
  }
  .sns-badge{
    position:absolute; top:8px; right:8px; z-index:2;
    background:rgba(0,0,0,.6); color:#fff; font-size:11px; font-weight:700;
    padding:3px 8px; border-radius:20px; letter-spacing:.05em;
  }
  .sns-thumb{
    width:100%; aspect-ratio:4/3; flex-shrink:0;
    background:linear-gradient(135deg,#ddd,#aaa); display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:13px;
  }
  .sns-thumb img{width:100%; height:100%; object-fit:cover; display:block;}
  .sns-thumb--video{background:#111;}
  .sns-thumb--video img{object-fit:contain;}
  .sns-info{padding:10px 12px 12px;}
  .sns-platform{display:block; font-size:14px; color:var(--sub); letter-spacing:.05em;}
  .sns-caption{display:block; font-size:16px; margin-top:2px; line-height:1.5; color:var(--ink);}

  /* ---------- footer ---------- */
  .partner-links{padding:0px 20px 4px; text-align:center;}
  .partner-list{display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-top:16px;}
  .partner-item{aspect-ratio:3/1; border-radius:8px; overflow:hidden; display:block; text-decoration:none; border:1px solid var(--gold-light);}
  .partner-item img{width:100%; height:100%; object-fit:cover; display:block;}
  .site-footer{position:relative; margin-top:0; line-height:0;}  .footer-image{display:block; width:100%; height:auto;}

  /* ---------- 追従CTA（最後まで表示し続ける） ---------- */
  .fixed-cta{
    position:fixed; left:50%; bottom:14px; transform:translateX(-50%) translateY(calc(100% + 40px));
    width:calc(100% - 40px); max-width:440px; padding:9px 16px;
    background:linear-gradient(180deg,var(--line-green),var(--line-green-deep));
    color:#fff; font-size:18px; font-weight:700; text-align:center; text-decoration:none;
    border-radius:999px; box-shadow:0 8px 18px rgba(0,0,0,.25); transition:transform .25s ease; z-index:50;
  }
  .back-to-top{
    position:fixed; right:20px; bottom:70px; width:44px; height:44px; border-radius:50%;
    background:var(--maroon); color:#fff; text-decoration:none; font-size:20px; font-weight:700;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 6px 14px rgba(0,0,0,.25);
    opacity:0; pointer-events:none; transform:translateY(10px);
    transition:opacity .25s ease, transform .25s ease; z-index:50;
  }
  .back-to-top.is-visible{ opacity:.8; pointer-events:auto; animation:backToTopFloat 2.2s ease-in-out infinite; }
  @keyframes backToTopFloat{
    0%, 100%{ transform:translateY(0); }
    50%{ transform:translateY(-6px); }
  }
  @media (prefers-reduced-motion: reduce){
    .back-to-top.is-visible{ animation:none; transform:translateY(0); }
  }
  .back-to-top-arrow{ display:inline-block; transform:rotate(-90deg); margin-top:-2px; }
  .fixed-cta.is-visible{transform:translateX(-50%) translateY(0);}

  /* ---------- LINE友だち登録モーダル（補助導線） ---------- */
  .line-modal-overlay{
    position:fixed; inset:0; z-index:1000;
    background:rgba(58,46,34,.55);
    display:flex; align-items:flex-end; justify-content:center;
    opacity:0; pointer-events:none;
    transition:opacity .3s ease;
  }
  .line-modal-overlay.is-open{opacity:1; pointer-events:auto;}
  .line-modal{
    width:100%; max-width:480px;
    background:var(--cream);
    border-radius:20px 20px 0 0;
    padding:22px 22px 26px;
    position:relative;
    box-shadow:0 -8px 24px rgba(0,0,0,.25);
    transform:translateY(100%);
    transition:transform .35s cubic-bezier(.22,.68,0,1);
  }
  .line-modal-overlay.is-open .line-modal{transform:translateY(0);}
  .line-modal-close{
    position:absolute; top:12px; right:12px;
    width:34px; height:34px; border-radius:50%;
    background:rgba(58,46,34,.08); border:none; color:var(--ink);
    font-size:16px; line-height:1; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
  }
  .line-modal-title{
    font-family:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;
    font-weight:700; font-size:20px; color:var(--maroon); text-align:center;
    margin:4px 30px 8px;
  }
  .line-modal-desc{
    font-size:13.5px; font-weight:500; color:#3c2c1a; text-align:center; line-height:1.7; margin:0 2px 14px; text-wrap:balance;}
  .line-modal-desc i{font-style:normal; display:inline-block;
  }
  .line-modal-desc-brand{font-size:14.5px;}
  .line-modal .line-cta{margin:0 4px; justify-content:center;}

  /* PC（480px超）では画面中央のモーダル型に切り替え */
  @media (min-width:481px){
    .line-modal-overlay{align-items:center;}
    .line-modal{
      max-width:360px; border-radius:16px;
      box-shadow:0 12px 32px rgba(0,0,0,.3);
      transform:translateY(16px) scale(.96); opacity:0;
      transition:transform .3s ease, opacity .3s ease;
    }
    .line-modal-overlay.is-open .line-modal{transform:translateY(0) scale(1); opacity:1;}
    .line-modal-desc{margin:0 5px 14px;}
  }
