@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700;900&display=swap');

/* ===== Reset ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: 'Noto Sans JP', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Meiryo', sans-serif;
  background-color: #cde9f7;
  color: #333;
  font-size: 16px;
  line-height:1.6;
  font-feature-settings: "palt";
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }

/* ===== Wrapper ===== */
.page {
  width:100vw;
  position: relative;
  background-image:url(../images/bottom-art.png);
  background-position:left bottom;
  background-repeat:repeat-x;
}

body {
  overflow-x: hidden;
}

/* ===== サイトロゴ ===== */
.site-logo {
  padding: 10px 24px 0;
  max-width: 1100px;
  margin: 0 auto;
}

/* ===== ヒーローセクション ===== */
.hero {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  position: relative;
  padding-bottom: 0;
}
/* 星の背景 */
.hero::before {
    width:100%;
  max-width:1800px;
  content: '';
  position: absolute;
  inset: 0;
  background-image: url('../images/mv_star.svg');
  background-repeat: no-repeat;
  background-size: 100%;
  opacity: 0.45;
  pointer-events: none;
  left:50%;
  top:0;
  transform: translateX(-50%);
}
.hero__inner {
  position: relative;
  z-index: 1;
  max-width: 1800px;
  margin: 0 auto;
  padding: 0;
}
/* 左側：ほたて画像 */
.hero__photo {
    width:94vw;
    max-width:1432px;
    position:absolute;
    left:50%;
    top:102px;
    transform: translateX(-50%);
}
.hero__photo img {
  width: 100%;
  display: block;
}
/* 右側：タイトル＋賞品 */
.hero__content {
  margin-top:-20px;
  padding: 0px 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  position:relative;
  z-index:10;
}
/* 賞品概要バッジ（2列） */
.hero__badges {
    margin-bottom:36px;
  display: flex;
  gap: 10px;
  width: 100%;
  max-width: 858px;
}
.hero__badge-card {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.hero__badge-card img {
  width: 100%;
  max-width: 418px;
  height: auto;
  display: block;
}

/* ===== 応募期間バー ===== */
.period-bar {
    width:100vw;
    height:150px;
  margin-left: calc(50% - 50vw);
  background-image: url('../images/bg_camp_ribon.svg');
    margin-bottom: -20px;
    position: relative;
    z-index: 10;
    display:flex;
    justify-content: center;
    align-items: center;
}
.period-bar__inner {
  display: flex;
  flex-direction:column;
  justify-content: center;
  gap: 0;
  max-width: 1100px;
  margin: -1em auto 0;
  padding: 0 24px;
  align-items: center;
}
.period-bar__col {
  padding: 4px 28px;
  font-size: clamp(16px, 3.1vw, 32px);
  line-height: 1.4;
  text-align: center;
  display:flex;
  justify-content:center;
  align-items:center;
}
.period-bar__label {
    width:9em;
    margin-right:.4em;
    padding-right:.4em;
    border-right:1px solid #FCEE21;
  font-weight: 500;
  color: #FCEE21;
  display: block;
  text-align:right;
}
.period-bar__date {
  color: #FCEE21;
  font-weight: 500;
}

.wrap-hotate {
  width:100vw;
  margin-left: calc(50% - 50vw);
  padding-bottom:80px;
  padding-left:20px;
  padding-right:20px;
  background-image:url(../images/bg-shell.svg);
  background-position:center top;
  background-size: cover;
}

/* ===== CTAボタン ===== */
.cta-wrap {
  text-align: center;
  padding: 110px 20px 80px;
  max-width: 1100px;
  margin: 0 auto;
}
.btn-cta {
  display: inline-block;
  background-color: #FA9B38;
  color: #fff;
  font-size: clamp(20px,4.45vw,32px);
  font-weight: 500;
  padding: .4em 1.5em .5em;
  border-radius: 50px;
  letter-spacing: 0.06em;
  text-decoration: none;
  border:6px solid #fff;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.btn-cta:hover {
  transform: translateY(3px) scale(1.2);
  box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}
.btn-cta .arrow { 
  width:14px;
  height:24px;
  display:inline-block;
  background-image:url(../images/arrow_white.svg);
  margin-left: 8px; 
}
.btn-cta.-off {
  background-color:#ddd;
  pointer-events: none;
  cursor: default;
}
.teaser-message {
  padding:0 1em;
  margin-top:32px;
}
.teaser-message h4 {
  margin-bottom:.2em;
  padding:.1em .6em;
  font-size:clamp(18px,3.1vw,24px);
  color:#fff;
  background-color:#DF0007
}
.teaser-message p {
  font-size:clamp(14px,2.3vw,18px)
}
.teaser-message2 {
  margin-top:-1.5em;
  padding:0 2em;
  color:#fff;
  text-align:center;
}
.teaser-message2 h4 {
  font-size:clamp(14px,3vw,28px);
}
.teaser-message2 p {
  font-size:clamp(11px,2vw,18px)
}


/* ===== セクション：景品 ===== */
.sec-prizes {
  background: #fff;
  max-width: 1008px;
  margin: 40px auto 24px;
  border-radius: 30px;
  padding: 72px 32px 40px;
  position:relative;
}
.sec-title {
  text-align: center;
  margin-bottom: 10px;
  position:absolute;
  top:-40px;
  left:50%;
  transform:translateX(-50%);
}
.sec-title h2 {
  display: inline-block;
  background: #00649F;
  color: #fff;
  font-size: clamp(28px,7.3vw,56px);
  font-weight: 700;
  line-height: 1.2;
  padding: .1em .8em .2em;
  letter-spacing: 0.12em;
  position:relative;
}
.sec-title h2::after {
  width:3.9vw;
  height:3.4vw;
  max-width:32px;
  max-height:28px;
  content:'';
  background-image:url(../images/triangle-blu.svg);
  background-size:contain;
  background-repeat:no-repeat;
  position:absolute;
  left:50%;
  bottom:-27px;
  transform:translateX(-50%);
}
.prizes-lead {
  text-align: center;
  font-size: clamp(20px,3.6vw,40px);
  font-weight: 700;
  color: #00649F;
  margin-bottom: .5em;
  position: relative;
}
.prizes-lead::before {
  width: 50px;
  height: 75px;
  content: '';
  background-image: url('../images/waai-left.svg');
  background-size: contain;
  background-repeat: no-repeat;
  position: absolute;
  left:110px;
  bottom:0;
}
.prizes-lead::after {
  width: 50px;
  height: 75px;
  content: '';
  background-image: url('../images/waai-right.svg');
  background-size: contain;
  background-repeat: no-repeat;
  position: absolute;
  right:110px;
  bottom:0;
}
.prizes-sub {
  text-align: center;
  font-size: 18px;
  font-weight: 900;
  color: #003d7e;
  margin-bottom: 28px;
}
.prizes-grid {
  display: flex;
  gap: 24px;
  justify-content: center;
  align-items:flex-end
}
.prize-card__note {
  font-size: 11px;
  color: #888;
  margin-top: 6px;
}
.sec-prizes p.caution {
  font-size: clamp(11px, 2.6vw, 14px);
  position:absolute;
  right:0;
  bottom:-2em;
}

/* ===== セクション：対象商品 ===== */
.sec-products {
  width:100vw;
  margin-left: calc(50% - 50vw);
  background: #FFFCDB;
  padding: 130px 24px;
}
.white-wrap {
  max-width:1080px;
  margin:0 auto 40px;
  padding:100px 40px 40px;
  background-color:#fff;
  border-radius:30px;
  position:relative;
}
.sec-products .sec-title { margin-bottom: 28px; }
.products-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 56px;
  justify-content: center;
  margin-bottom: 56px;
}
.products-row {
  padding:0 64px;
  display: flex;
  gap: 56px;
  justify-content: center;
  width: 100%;
  flex-wrap: wrap;
}
.product-item {
  text-align: center;
}
.product-item img {
  width:21vw;
  max-width: 152px;
  object-fit: contain;
  margin: 0 auto;
}
.product-item .product-label {
  min-width:132px;
  margin-top:.75em;
  display: inline-block;
  font-size: clamp(11px, 2.6vw,20px);
  font-weight: 500;
  color: #fff;
  background: #333;
  padding: .2em 1em;
  clip-path: polygon(6% 0%, 100% 0%, 94% 100%, 0% 100%);
}
.product-label.red   { background: #DF0007; }
.product-label.green { background: #03974C; }
.product-label.green2 { background: #007731; }
.product-label.blue  { background: #0168DE; }
.product-label.blue2  { background: #00588C; }
.product-label.orange   { background: #FF5703; }
.product-label.broun   { background: #D98200; }
.products-note {
  text-align: right;
  font-size: clamp(11px, 2.6vw,14px);
  margin-bottom: 20px;
}
.products-link { text-align: center; }
.btn-link {
    display: inline-block;
    background-color: #2CA6E0;
    color: #fff;
    font-size: clamp(24px,4.45vw,32px);
    font-weight: 500;
    padding: .4em 1.5em .5em;
    border-radius: 50px;
    letter-spacing: 0.06em;
    text-decoration: none;
    border: 6px solid #fff;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.btn-link .arrow {
    width: 14px;
    height: 24px;
    display: inline-block;
    background-image: url(../images/arrow_white.svg);
    margin-left: 8px;
}
.btn-link:hover {
    transform: translateY(3px) scale(1.2);
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}

/* ===== セクション：応募方法 ===== */
.sec-howto {
  margin-left: calc(50% - 50vw);
  padding:0 20px;
  background: #FFFCDB;
  padding-top:112px;
}
.sec-howto .sec-title { 
  margin-bottom: 32px;
  position:relative;
}
.steps { max-width: 900px; margin: 0 auto; }
.step {
  min-height:244px;
  padding:32px 56px;
  margin-bottom: 64px;
  background-color: #fff;
  position:relative;
  border-radius: 20px;
}
.step .flx {
  display: flex;
  align-items: center;
  gap: 20px;
}
.step__num {
  flex: 0 0 72px;
  position:absolute;
  left:26px;
  top:-40px;
}
.step__num img { width: 90px; }
.step__body {
  flex: 1;
}
.step__body p {
  margin:20px 0;
  font-size: clamp(16px, 2.4vw, 24px);
  line-height: 1.7;
  font-weight:700;
  color: #333;
  flex:1;
}
.step__body.offset p {
  padding-left:2.5em;
  position:relative;
}
.step__body.offset p span {
  position:absolute;
  left:0;
}
.step__illust {
  flex: 0 0 90px;
  text-align: right;
  flex-basis: 280px;
}
.step__illust img { margin-left: auto; }
.kikan {
  margin-top:-40px;
  background-color: #fff;
  padding: 32px 56px;
  border-radius: 20px;
  text-align: center;
}
.kikan h4 {
  font-size:clamp(16px, 2.4vw, 24px);
  font-weight:700;
}
p.kikan-note {
  font-size: clamp(11px,2vw,15px);
}

/* レシート注意事項 */
.receipt-note {
  padding: 48px 0 0 0;
  margin: 48px 0 0 0;
  font-size: clamp(13px, 2.6vw, 16px);
  line-height: 2;
  display: flex;
  gap: 16px;
  align-items: flex-start;
  border-top:thin solid #FA9B38;
  justify-content: space-between;
}
.receipt-note__text {
  flex-basis: 330px
}
.receipt-note__title {
  font-weight: 700;
  font-size: clamp(16px, 3.1vw, 24px);
  margin-bottom: 6px;
  border:thin solid #777;
  text-align:center;
}
.receipt-note__img { flex: 0 0 256px; }

/* ===== セクション：応募規約 ===== */
.sec-terms {
  width: 100vw;
    margin-left: calc(50% - 50vw);
    background: #FFFCDB;
    padding-top: 112px;
    padding-bottom:140px;
    position:relative;
}
.sec-terms .slide-box {
  width:90%;
  max-width:832px;
  height:520px;
  margin:0 auto;
  overflow-Y:scroll;
  background-color:#fff;
  padding:24px 32px
}
.sec-terms .sec-title { 
  margin-bottom: 24px; 
  position:relative
}
.terms-box {
  max-width: 860px;
  margin: 0 auto;
  font-size: clamp(13px, 2.6vw, 16px);
  line-height: 1.6;
  color: #444;
}
.terms-box .terms-item {
  margin-bottom: 1em;
}
.terms-box .terms-label {
  font-weight: 700;
  font-size: clamp(13px, 2.6vw, 16px);
  margin-bottom: 4px;
}
.terms-box .terms-item ul {
  padding-left: 1.5em;
}
.terms-box .terms-item ul.rev1, .terms-box .terms-item ul.rev3 {
  list-style-type: disc;
}
.terms-box .terms-item ul.rev2 {
  list-style:none;
}
.terms-box .terms-item ul.rev2 li {
  position:relative;
}
.terms-box .terms-item ul.rev2 > li::before {
  content: '◯';
  position:absolute;
  left:-1.2em;
  top:0;
}

/* ===== セクション：問い合わせ先 ===== */
.sec-contact {
  padding-bottom:200px;
  padding-top:100px;
  padding-left:20px;
  padding-right:20px;
  text-align: center;
}
.sec-contact .sec-title { 
  margin-bottom: 50px; 
  position:relative;
  top:0;
}
.contact-box {
  max-width: 832px;
  padding:32px 48px;
  background: #fff;
  margin: 0 auto;
  border-radius: 20px;
}
.contact-name {
  font-size: clamp(16px, 3.1vw, 24px);
  font-weight: 700;
  margin-bottom: 16px;
}
.contact-link {
  display: inline-block;
  color: #00649F;
  font-size: clamp(16px, 3.1vw, 24px);
  font-weight: 500;
  margin-bottom: 32px;
  transition: opacity 0.2s;
  border-bottom:thin solid #00649F;
}
.contact-link:hover { 
  opacity: 0.85;
  border-color:#fff; 
}
.contact-period {
  font-size: clamp(16px, 3.1vw, 24px);
  line-height: 1.4;
  font-weight:700;
  margin-bottom:1em;
}
.contact-email {
  font-size: clamp(13px, 2.6vw, 16px);
  margin-top: 8px;
  text-align: left;
}
.contact-email a { color: #0066cc; text-decoration: underline; }

/* ===== フッター ===== */
.site-footer {
  height:58px;
  background: #99DEFF;
  text-align: center;
  margin: 0 auto;
  padding: 12px 24px;
  position: relative;
}
.site-footer .inner {
  max-width: 832px;
  margin: auto;
  display:flex;
  justify-content: space-between;
  align-items: center;
}
.site-footer__art { margin: 0 auto 8px; }
.site-footer__art img { margin: 0 auto; width: 100%; max-width: 400px; }
.site-footer__link {
  font-size: clamp(13px, 2.6vw, 16px);
  color: #000;
}
.site-footer__copy {
  font-size: 13px;
  color: #00649F;
}

/* ===== ドット背景（全体） ===== */
body {
  background-image: url('../images/pagetop_dot.svg');
  background-repeat: repeat-x;
  background-position: top center;
}

/* ===== アニメーション ===== */
.fade-in {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}
.fade-in.is-show {
  opacity: 1;
  transform: translateY(0);
}
.fade-in2 {
  animation: fadeIn 2s ease;
}
.fade-in3 {
  animation: fadeIn3 3s ease;
}
.fade-in4 {
  animation: fadeIn4 4s ease;
}
@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
@keyframes fadeIn3 {
  0% {
    opacity: 0;
  }
  25% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
@keyframes fadeIn4 {
  0% {
    opacity: 0;
  }
  35% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.sp-only {
  display: none;
}

/* ===== メディアクエリ ===== */
@media (max-width: 768px) {
  .pc-only {
    display: none;
  }
  .sp-only {
    display: block;
  }
  .hero::before {
    content: none;
  }
  body {
    background-image: none;
  }
  .period-bar__inner {
    margin-top:-1.8em;
    flex-direction: row;
    gap: 8px;
    padding:0;
  }
  .period-bar__col {
    flex-direction: column;
    padding:0;
    line-height: 2;
  }
  .period-bar__col:first-child {
    padding-right:8px;
    border-right:thin solid #FCEE21
  }
  .period-bar__label {
      width: 9em;
      margin-right:0;
      margin-bottom:0;
      padding:.1em .5em;
      border-right: none;
      font-weight: 400;
      font-size:clamp(13px, 2.6vw, 16px);
      display: inline-block;
      text-align: center;
      line-height:1.2;
      text-decoration: underline;
      text-underline-offset: 3px;
  }
  .period-bar {
      height: 31.5vw;
      padding-top: 4.8vw;
      margin-left: 0;
      background-image: url('../images/bg_camp_ribon_sp.svg');
      background-size: contain;
      margin-bottom: -20px;
  }
  .period-bar__date {
      position:relative;
  }
  .period-bar__date::after {
    width:10px;
    height:5px;
    content: '';
    background-image: url(../images/arrow_down_yel.svg);
    background-size: contain;
    background-repeat: no-repeat;
    position:absolute;
    top:50%;
    left:50%;
    transform: translate(-50%,-50%);
  }
  .btn-cta .arrow {
      width:2.2vw;
      height:3.7vw;
      max-width: 14px;
      max-height: 24px;
      margin-left: 1vw;
      background-size:contain;
  }
  .sec-title h2::after {
    bottom:-3.2vw
  }
  .cta-wrap {
      padding: 7.5vw 0 8vw;
      max-width: 1100px;
      margin: 0 auto;
  }
  .prizes-lead::before {
      width:6.1vw;
      height:9.2vw;
      max-width: 50px;
      max-height: 75px;
      left: 0;
      bottom: 4vw;
  }
  .prizes-lead::after {
      width:6.1vw;
      height:9.2vw;
      max-width: 50px;
      max-height: 75px;
      right: 0;
      bottom: 4vw;
  }
  .prizes-grid {
      display: flex;
      gap: 24px;
      justify-content: center;
      align-items: center;
      flex-direction: column;
  }
  .sec-prizes {
    width:88%;
      margin: 10vw auto 6vw;
      border-radius: 30px;
      padding: 12vw 6vw 6vw;
  }
  .sec-title {
      top: -4.4vw;
      white-space: nowrap
  }
  .products-row {
      padding: 0 0;
      display: flex;
      gap: 16px;
      justify-content: center;
      width: 100%;
      flex-wrap: wrap;
  }
  .product-item .product-label {
      min-width: 72px;
  }
  .white-wrap {
      margin: 0 auto 40px;
      padding: 64px 20px 10px;
  }
  .products-grid {
      gap: 24px;
      margin-bottom: 24px;
  }
  .products-note {
      text-align: center;
  }
  .step .flx {
      align-items: center;
      gap: 20px;
      flex-direction: column;
  }
  .receipt-note {
      padding: 48px 0 0 0;
      margin: 48px 0 0 0;
      gap: 16px;
      justify-content: space-between;
      flex-direction:column
  }
  .receipt-note__text {
      flex: 1;
  }
  .step {
    width:88%;
      padding: 32px 24px 24px;
      margin: 24px auto 64px;
  }
  .step__illust {
      flex:1;
  }
  .step__num {
      flex: 0 0 72px;
      position: absolute;
      left: 50%;
      top: -40px;
      transform: translateX(-50%);
  }
  .step__body p {
      margin: .8em 0 0;
      text-align:center
  }
  .step__body p span {
    display:block;
  }
  .step__body.offset p {
    text-align:left;
  }
  .step:nth-child(4) .step__illust {
    width:52vw;
    margin:0 auto;
  }
  .kikan {
    width:88%;
      margin-top: -40px;
      margin-left:auto;
      margin-right:auto;
      padding: 24px 24px;
  }
  .contact-box {
    width:88%;
      padding: 20px 24px;
      background: #fff;
      margin: 0 auto;
      border-radius: 20px;
  }
  .site-footer .inner {
      flex-direction: column;
      gap:1em;
  }
  .site-footer {
      height: auto;
  }
  .sec-products {
      padding: 20vw 24px;
  }
  .sec-howto {
      padding-top: 20vw;
  }
  .sec-howto .sec-title {
      margin-bottom: 12vw;
      position: relative;
  }
}

/* ===== タブレット ===== */
@media screen and (min-width:769px) and (max-width:1100px) {
  .products-row {
      padding: 0 0px;
  }
  .hero__inner.sp-only {
    display:block
  }
  .hero__inner.pc-only,.site-logo.pc-only {
    display:none
  }
  .hero__inner.sp-only img {
    margin-left:auto;
    margin-right:auto;
  }
}