/* ============================================
   キャンペーンページ専用CSS
   /cpn/ ページ専用のスタイル定義
   ============================================ */

/* リセットとベーススタイル */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: "Noto Sans JP", sans-serif;
  font-feature-settings: "palt";
  letter-spacing: 0.05em;
  line-height: 1.8;
  color: #333333;
  background-color: #fffdf2;
  overflow-x: hidden;
}

/* コンテナ */
.cpn-container-900 {
  max-width: 900px;
  margin: 0 auto;
  @media (width < 900px) {
    padding: 0 16px;
  }
}

.cpn-container-1000 {
  max-width: 1000px;
  margin: 0 auto;
  @media (width < 1000px) {
    padding: 0 16px;
  }
}

/* メインコンテンツ */
.cpn-main {
  background-color: #fffdf2;
}

/* ============================================
   MVセクション
   ============================================ */
.cpn-mv {
  width: 100%;
  display: block;
  margin-bottom: 6px;
}

.cpn-mv img {
  width: 100%;
  height: auto;
  display: block;
}

/* ============================================
   セクション見出し（ドット装飾付き）
   ============================================ */
.cpn-section-title-with-dots {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
/*  margin: 0 0 40px;*/
    margin: 40px 0 50px;
}

.cpn-section-title-with-dots .decoration-dot {
  width: clamp(25px, 8vw, 45px);
  flex-shrink: 0;
}

.cpn-section-title-with-dots .decoration-dot img {
  width: 100%;
  height: auto;
  display: block;
  filter: invert(27%) sepia(84%) saturate(477%) hue-rotate(359deg) brightness(95%) contrast(100%);
}

.cpn-section-title-text {
  text-align: center;
  font-weight: bold;
  line-height: 1.4;
  color: #704905;
}

.cpn-title-top {
  font-size: 23px;
  margin-bottom: -4px;
}

.cpn-title-campaign1,
.cpn-title-and,
.cpn-title-campaign2 {
  display: inline;
}

.cpn-title-middle,
.cpn-title-bottom {
  font-size: 32px;
}

.cpn-title-highlight {
  color: #e10101;
}

.cpn-title-number {
  font-size: 50px;
  line-height: 1;
}

/* ============================================
   キャンペーン内容セクション
   ============================================ */
.cpn-campaign-content {
  padding: 60px 0;
  @media (width < 769px) {
    padding: 40px 0;
  }
}

/* 景品説明枠 */
.cpn-prizes-wrapper {
  background: #ffffff;
  border-radius: 10px;
  padding: 80px 75px 48px;
  position: relative;
  margin-top: 40px;
  box-shadow: 0 1px 15px 0 rgba(0, 0, 0, 0.05);
}

/* 四隅のカギ括弧装飾 */
.cpn-corner-bracket {
  position: absolute;
  width: 45px;
  height: 45px;
  border-color: #fedd4d;
  border-style: solid;
  border-width: 0;
  opacity: 0.5;
}

.cpn-corner-bracket.top-left {
  top: 0;
  left: 0;
  border-top-width: 10px;
  border-left-width: 10px;
  border-top-left-radius: 10px;
}

.cpn-corner-bracket.top-right {
  top: 0;
  right: 0;
  border-top-width: 10px;
  border-right-width: 10px;
  border-top-right-radius: 10px;
}

.cpn-corner-bracket.bottom-left {
  bottom: 0;
  left: 0;
  border-bottom-width: 10px;
  border-left-width: 10px;
  border-bottom-left-radius: 10px;
}

.cpn-corner-bracket.bottom-right {
  bottom: 0;
  right: 0;
  border-bottom-width: 10px;
  border-right-width: 10px;
  border-bottom-right-radius: 10px;
}

/* 景品カードグリッド */
.cpn-prizes-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 70px;
  margin-bottom: 40px;
}

.cpn-prize-card {
  position: relative;
}

.cpn-prize-label {
  position: absolute;
  top: -40px;
  left: -40px;
/*  width: 142px;*/
  width: 120px;
  height: auto;
  z-index: 1;
  @media (width < 769px) {
    width: 14.8vw;
    max-width: 140px;
    top: -3.5vw;
    left: -3.5vw;
  }
  &[src*="cpn-c-label"],
  &[src*="cpn-d-label"] {
/*    width: 122px;*/
        width: 102px;
    top: -30px;
    left: -30px;
    @media (width < 769px) {
      width: 12.3vw;
      max-width: 122px;
      top: -2.8vw;
      left: -2.8vw;
    }
  }
}

.cpn-prize-image {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 10px;
  margin-bottom: 8px;
  @media (width < 769px) {
    border-radius: 4px;
    margin-bottom: 4px;
  }
}

.cpn-prize-name {
/*  font-size: 24px;*/
    font-size: 20px;
  font-weight: bold;
  color: #704905;
  line-height: 1.4;
}


/* 注意事項 */
.cpn-notice {
  margin-top: 16px;
  font-size: 14px;
}

/* ============================================
   応募方法タブセクション
   ============================================ */
.cpn-tabs-section {
  padding: 60px 0 0;
}

/* タブナビゲーション */
.cpn-tab-nav {
  display: flex;
  gap: 20px;
  margin-bottom: 0;
  justify-content: center;
}

.cpn-tab-button {
  flex: 1;
  max-width: 400px;
  padding: 38px 12px 34px;
  border: none;
  cursor: pointer;
  transition: all 0.3s;
}

.cpn-tab-button:first-child {
  border-radius: 40px 15px 0 0;
}

.cpn-tab-button:last-child {
  border-radius: 15px 40px 0 0;
}

.cpn-tab-button img {
  width: 100%;
  max-width: 300px;
  height: auto;
  max-height: 58px;
  display: block;
  margin: 0 auto;
}

.cpn-tab-button.active {
  opacity: 1;
}

.cpn-tab-button.instagram {
  background: #d46103;
}

.cpn-tab-button.survey {
  background: #129d4c;
}

/* タブラインバー */
.cpn-tab-line {
  position: relative;
  height: 30px;
  width: 100%;
  transition: background-color 0.3s;
  &::after {
    content: "";
    position: absolute;
    bottom: -9px;
    display: block;
    width: 100%;
    border-top: 3px dotted #000;
    transition: border-top-color 0.3s;
  }
}

.cpn-tab-line.instagram {
  background-color: #d46103;
  &::after {
    border-top-color: #d46103;
  }
}

.cpn-tab-line.survey {
  background-color: #129d4c;
  &::after {
    border-top-color: #129d4c;
  }
}

/* タブコンテンツ */
.cpn-tab-content {
  display: none;
  &#instagram-tab {
    background-color: #fff5dc;
  }
  &#survey-tab {
    background-color: #f5fae8;
  }
}

.cpn-tab-content.active {
  display: block;
}

/* タブコンテンツ背景 */
.cpn-tab-content-wrapper {
  padding: 60px 0;
}

/* タブ内セクション見出し */
.cpn-tab-section-title {
/*  font-size: 36px;*/
  font-size: 32px;
  font-weight: bold;
  text-align: center;
  line-height: 1.4;
}

.cpn-tab-section-title.instagram {
  color: #d46103;
}

.cpn-tab-section-title.survey {
  color: #129d4c;
}

/* 手順リスト */
.cpn-steps-list {
  padding: 0 50px;
  margin-bottom: 132px;
  &:has(.cpn-button-wrapper) {
    margin-bottom: 48px;
  }
}

.cpn-step-item {
  background: #ffffff;
  border-radius: 20px;
  padding: 40px;
  margin-bottom: 30px;
  display: flex;
  align-items: center;
  gap: 30px;
  color: #704905;
  font-weight: bold;
}

.cpn-step-number {
  flex-shrink: 0;
  width: 119px;
  height: 48px;
  display: block;
}

.cpn-step-number img {
  width: 100%;
  height: auto;
  display: none;
}

/* SVG着色（mask-image使用） */
.cpn-step-number.instagram {
  -webkit-mask-image: url("/images/cpn-step1.svg");
  mask-image: url("/images/cpn-step1.svg");
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  background-color: #d43003;
}

.cpn-step-number.survey {
  -webkit-mask-image: url("/images/cpn-step1.svg");
  mask-image: url("/images/cpn-step1.svg");
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  background-color: #129d4c;
}

/* ステップ番号ごとのマスク画像 */
.cpn-step-number:has(img[src*="step1"]) {
  -webkit-mask-image: url("/images/cpn-step1.svg");
  mask-image: url("/images/cpn-step1.svg");
}

.cpn-step-number:has(img[src*="step2"]) {
  -webkit-mask-image: url("/images/cpn-step2.svg");
  mask-image: url("/images/cpn-step2.svg");
}

.cpn-step-number:has(img[src*="step3"]) {
  -webkit-mask-image: url("/images/cpn-step3.svg");
  mask-image: url("/images/cpn-step3.svg");
}

.cpn-step-content {
  flex: 1;
  font-size: 24px;
  line-height: 1.8;
}

.cpn-step-content .highlight {
  color: #d43003;
  font-weight: bold;
}

.cpn-step-content small {
  font-size: 18px;
}

.cpn-step-button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: #e10101;
  color: #ffffff;
  border: none;
  border-radius: 50px;
  font-size: 18px;
  font-weight: bold;
  cursor: pointer;
  margin-top: 16px;
  transition: opacity 0.3s;
  text-decoration: none;
}

.cpn-step-button:hover {
  opacity: 0.8;
}

.cpn-step-button img {
  width: 20px;
  height: 20px;
}

.cpn-step-arrow {
  text-align: center;
  margin: -12px auto 12px;
  width: 24px;
  height: 16px;
  display: block;
  -webkit-mask-image: url("/images/cpn-arrow-down.svg");
  mask-image: url("/images/cpn-arrow-down.svg");
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}

/* 矢印の色（タブコンテンツによって変更） */
#instagram-tab .cpn-step-arrow {
  background-color: #d43003;
}

#survey-tab .cpn-step-arrow {
  background-color: #129d4c;
}

/* ステップ番号の高さ指定 */
.cpn-step-number img {
  height: 80px;
}

/* 大きなリンクボタン */
.cpn-large-button {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 20px 40px;
  background: #e10101;
  color: #ffffff;
  border: none;
  border-radius: 50px;
  font-size: 18px;
  font-weight: bold;
  cursor: pointer;
  margin: 40px auto 60px;
  transition: opacity 0.3s;
  text-decoration: none;
}

.cpn-large-button:hover {
  opacity: 0.8;
}

.cpn-large-button img {
  width: 24px;
  height: 24px;
}

.cpn-button-wrapper {
  text-align: center;
}

/* 応募要項・応募規約・個人情報セクション */
.cpn-info-section {
  margin-bottom: 40px;
}

.cpn-info-section-title {
  font-size: 32px;
  font-weight: bold;
  color: #ffffff;
  text-align: center;
  padding: 20px;
  border-radius: 10px 10px 0 0;
  margin-bottom: 0;
  height: 66px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.cpn-info-section-title.instagram {
  background-color: #d46103;
}

.cpn-info-section-title.survey {
  background-color: #129d4c;
}

.cpn-info-section-content {
  padding: 24px 50px 60px;
  border-radius: 0 0 10px 10px;
/*  line-height: 1.4;*/
    line-height: 1.6;
    font-size: 15px;
  ul,
  ol {
    list-style: none;
    padding: 0;
    margin: 0;
    &.text-indent-1 {
      text-indent: -1em;
      li {
        padding-left: 1em;
      }
    }
  }
  dl {
    &:not(:last-child) {
      margin-bottom: 16px;
    }
    dt {
      font-weight: bold;
      font-size: 20px;
      color: #704905;
      margin-bottom: 4px;
    }
    dd {
      & > *:not(:last-child) {
        margin-bottom: 16px;
      }
      .highlight {
        color: #d43003;
        font-weight: bold;
      }
    }
  }
}

.cpn-info-section-content p:not(:last-child) {
  margin-bottom: 16px;
}

/* ============================================
   フッター
   ============================================ */

.cpn-footer-copyright-wrapper {
  background: linear-gradient(96deg, #ffe552 4.67%, #efb43d 51.74%, #f3a73a 94.83%);
  padding: 30px 20px;
  text-align: center;
}

.cpn-footer-copyright {
  font-size: 14px;
  color: #333333;
  margin: 0;
}

.cpn-footer-decoration {
  width: 100%;
  height: auto;
  display: flex;
}
.cpn-footer-decoration img {
  width: 100%;
}

@media (min-width: 1400px) {
  .cpn-footer-decoration {
    background: url("/images/cpn-footer-bottom.webp") repeat-x center top;
    background-size: 1400px 50px;
    height: 50px;
  }

  .cpn-footer-decoration img {
    display: none;
  }
}

/* ============================================
   ページトップボタン
   ============================================ */
.cpn-page-top-button {
  position: fixed;
  bottom: 30px;
  right: 30px;
  width: 70px;
  height: 70px;
  background-color: #f3a73a;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  transition:
    opacity 0.3s,
    transform 0.3s;
  z-index: 1000;
  opacity: 0;
  pointer-events: none;
}

.cpn-page-top-button.visible {
  opacity: 1;
  pointer-events: auto;
}

.cpn-page-top-button:hover {
  opacity: 0.9;
  transform: translateY(-2px);
}

.cpn-page-top-button svg {
  width: 20px;
  height: 20px;
  color: #ffffff;
  margin-bottom: 4px;
}

.cpn-page-top-button span {
  font-size: 12px;
  font-weight: bold;
  color: #ffffff;
}

/* ============================================
   レスポンシブ対応
   ============================================ */
@media (max-width: 768px) {
  .cpn-section-title-with-dots {
    gap: 12px;
    margin: 0 0 30px;
    justify-content: center;
  }

  /* モバイル時はキャンペーン内容セクションの装飾ドットのみ非表示にして幅を確保 */
  .cpn-campaign-content .cpn-section-title-with-dots .decoration-dot {
    display: none;
  }

  /* モバイル時の見出しレイアウト */
  .cpn-title-top {
    font-size: 12px;
    margin-bottom: 4px;
  }

  .cpn-title-campaign1::after {
    content: "\A";
    white-space: pre;
  }

  .cpn-title-and::after {
    content: "\A";
    white-space: pre;
  }

  .cpn-title-middle,
  .cpn-title-bottom {
    font-size: 20px;
  }

  .cpn-title-middle::after {
    content: "\A";
    white-space: pre;
  }

  .cpn-title-number {
    font-size: 32px;
  }

  /* キャンペーン内容 */
  .cpn-prizes-wrapper {
    padding: 36px 20px 20px;
  }

  .cpn-prizes-grid {
    gap: 40px;
    margin-bottom: 24px;
  }

  .cpn-prize-name {
    font-size: 14px;
    br {
      display: none;
    }
  }

  .cpn-notice {
    font-size: 11px;
    line-height: 1.4;
  }

  .cpn-corner-bracket {
    width: 25px;
    height: 25px;
    border-width: 0;
  }

  .cpn-corner-bracket.top-left,
  .cpn-corner-bracket.top-right {
    border-top-width: 6px;
  }

  .cpn-corner-bracket.bottom-left,
  .cpn-corner-bracket.bottom-right {
    border-bottom-width: 6px;
  }

  .cpn-corner-bracket.top-left,
  .cpn-corner-bracket.bottom-left {
    border-left-width: 6px;
  }

  .cpn-corner-bracket.top-right,
  .cpn-corner-bracket.bottom-right {
    border-right-width: 6px;
  }

  /* タブ */
  .cpn-tabs-section {
    padding: 40px 0 0;
  }

  .cpn-tab-nav {
    gap: 20px;
  }

  .cpn-tab-button {
    max-width: 100%;
    padding: 16px 20px;
  }

  .cpn-tab-button:first-child {
    border-radius: 18px 6px 0 0;
  }
  .cpn-tab-button:last-child {
    border-radius: 6px 18px 0 0;
  }

  .cpn-tab-content-wrapper {
    padding: 60px 0 20px;
  }

  .cpn-tab-section-title {
    font-size: 20px;
  }

  .cpn-tab-line {
    height: 13px;
  }

  /* ステップナビゲーション - モバイル時の改善 */
  .cpn-steps-list {
    padding: 0 20px;
    margin-bottom: 80px;
    &:has(.cpn-button-wrapper) {
      margin-bottom: 48px;
    }
  }

  .cpn-step-item {
    flex-direction: column;
    padding: 24px 20px;
    gap: 12px;
  }

  .cpn-step-number {
    width: 84px;
    height: 32px;
  }

  .cpn-step-content {
    font-size: 16px;
    align-self: center;
    text-align: left;
    small {
      font-size: 16px;
    }
    br {
      display: none;
    }
  }

  .cpn-step-arrow {
  }

  .cpn-step-button,
  .cpn-large-button {
    font-size: 14px;
    padding: 10px 20px;
  }

  .cpn-large-button {
    padding: 16px 30px;
    margin: 0;
    img {
      width: 20px;
      height: 20px;
    }
  }

  .cpn-info-section-title {
    font-size: 20px;
    padding: 8px 16px;
    height: auto;
    height: 50px;
  }

  .cpn-info-section-content {
    padding: 16px 0 24px;
    font-size: 14px;
    dl dt {
      font-size: 18px;
    }
  }

  /* ページトップボタン */
  .cpn-page-top-button {
    width: 60px;
    height: 60px;
    bottom: 20px;
    right: 20px;
  }

  .cpn-page-top-button svg {
    width: 16px;
    height: 16px;
  }

  .cpn-page-top-button span {
    font-size: 10px;
  }

  .cpn-footer-copyright {
    font-size: 12px;
  }
}

@media (width < 481px) {
  .cpn-prizes-grid {
    gap: 20px;
  }
}


/* ===== 251127 added ===== */
.credit{
    font-size: 10px;
    text-align: right;
    padding-top: 10px;
}

.txt_emph{
    color: #d43003;
    font-weight: bold;
    font-size: 20px;
}



/* ===== //251127 added ===== */



/* ===== 260303 added ===== */
.disabled-link {
  pointer-events: none;
}
/* ===== キャンペーン終了処理 ===== */
.tab-inactive {
    background-color: #f3f4f6;
    color: #373a3f;
    cursor: not-allowed;
}
.winner_container{
  padding: 24px 50px 10px;
}
.winner_container p{
    text-align: center;
    margin-top: 1rem;
    margin-bottom: 2rem;
}
.prize-card {
    background: white;
    border-radius: 1rem;
    box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
    border: 2px solid #fbbf24;
    transition: transform 0.2s;
}
/*.prize-card:hover {
    transform: translateY(-5px);
}
*/
.winner-list-item {
    border-bottom: 1px dashed #e5e7eb;
}
.winner-list-item:last-child {
    border-bottom: none;
}
.gradient-text {
    background: linear-gradient(to right, #ea580c, #f59e0b);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}
.bg_prize {
    --tw-bg-opacity: 1;
    background-color: rgb(255 247 237 / var(--tw-bg-opacity, 1));
    border-radius: 15px 15px 0 0;
}

.cpn-prize-name_s {
  font-size: 20px;
  font-weight: bold;
  color: #704905;
  line-height: 1.4;
}

/* 賞ラベルのスタイル */
.prize-label-container {
    width: 70px;
    height: auto;
    flex-shrink: 0;
    display: flex;
    align-items: center;
}
.prize-label-container img {
    width: 100%;
    height: auto;
    object-fit: contain;
}

.card-header {
    display: flex;
    align-items: center;
    padding: 1.25rem;
    gap: 1rem;
}

.for_winner{
    margin: 3rem 50px;
    padding: 1.5rem;
    --tw-text-opacity: 1;
    color: rgb(75 85 99 / var(--tw-text-opacity, 1));
    font-size: 0.875rem;
    line-height: 1.25rem;
    --tw-bg-opacity: 1;
    background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
    border-width: 1px;
    border-radius: 0.5rem;
    --tw-border-opacity: 1;
    border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
}

/* ============================================
   レスポンシブ対応
   ============================================ */
@media (max-width: 768px) {
  .winner_container{
    padding: 0px;
  }
  .winner_container p{
    text-align: left;
    margin-top: 1rem;
    margin-bottom: 1rem;
  }
  .cpn-prize-name_s {
      font-size: 16px;
  }
  .for_winner{
    margin: 2rem 0;
  }
}
/* ===== //260303 added ===== */
