@charset "UTF-8";

/* フォント読み込み */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700;900&display=swap');


/* 変数定義 */
:root {
	--color-main1: #004F94;
  --color-main1-dark: #014062;
	--color-main2: #BC9508;
  --color-main2-light : #EDD889;
	--color-main3: #919698;
  --color-red:#CC002B;
  --color-bg1:#F0EBE1;
  --color-goldgrade: to right, #a38400 0%, #cfa713 35%, #b08d05 75%, #c4a114 100%;
  --shadow-fmt:3px 3px 3px rgba(0, 0, 0, 0.3);
}

/* 基本設定 */
body.pc{
  background: url(bg_friends.webp) no-repeat fixed,var(--color-main1-dark);
  background-size: cover;
  &.friends_sc_index{
    .main_banner_area{border-radius: 5px 5px 0 0;}
    footer{border-radius: 0;}
  }
  #main_header{border-bottom: 0;}
  #main{
    background: none;
    box-shadow: none;
  }
  .header_wrap{
    border-radius: 0 0 5px 5px;
  }
  footer{
    border-radius: 5px 5px 0 0;
    overflow: hidden;
  }
}
.header_wrap,
.footer.shopsearch,
footer{
  background: #fff;
}
#contents{
  font-family: "Noto Sans JP", "Noto Sans JP", "メイリオ", "Meiryo", "ヒラギノ角ゴ Pro", "Hiragino Kaku Gothic Pro", sans-serif;
  display: flex;
  min-height: calc(100vh - 441px);
  padding: 60px 0;
  > .inner{width:auto;max-width:auto;min-width:auto;}
}
.contents_headnavi{
  width: 360px;
  padding: 0 0 0 80px;
  box-sizing: border-box;
}
.contents_headnavi nav{
  width: 280px;
  li.logo{margin: 0 0 40px;}
  li a{
    display: block;
    border: 2px solid #fff;
    color: #fff;
    font-weight: 700;
    text-align: center;
    padding: 15px 0 15px 20px;
    margin: 0 0 20px;
    position: relative;
  }
  li a:before {
    font-family: var(--fontfamily-icon);
    content: "\e5de";
    color: #fff;
    vertical-align: middle;
    position: absolute;
    left: 10px;
    font-size: 24px;
    transform: scaleX(1.6);
  }
}
#contents-main.all{
  width: 580px;
}
#contents-main h2{
  color: var(--color-main2-light);
  font-size: 30px;
  font-weight: 700;
  box-sizing: border-box;
}
/* SP 基本設定*/
body.sp{
  #main{
    position: relative;
    z-index: 0;
  }
  #main:before{
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: -1;
    background-image: url(bg_friends.webp);
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
  }
  #contents{
    display: block;
    padding: 0 0 20px;
    min-height: auto;
  }
  .contents_headnavi{
    width: 100%;
    padding: 0;
    nav{
      display: flex;
      width: 100%;
      li{width: 30%;overflow: hidden;}
      li.logo{
        width: 40%;
        text-align: center;
        padding: 16px 12px 0 16px;
        box-sizing: border-box;
        margin: 0;
      }
      li a{
        border-width: 0 0 1px 1px;
        padding: 12px 12px 12px 0;
        box-sizing: border-box;
        margin: 0;
        font-size: 14px;
        line-height: 1.2em;
      }
      li a:before {
        content: "\e5df";
        left: auto;
        right: 0;
        font-size: 20px;
        top: calc(50% - 8px);
      }
    }
  }
  #contents-main.all{
    width: 100%;
    padding: 0;
  }
  #contents-main h2{
    padding: 20px 0 0;
    margin: 0;
    font-size: 5vw;
  }
}


/*----------
SC一覧ページ
----------*/
.friends-scbenefits_content{
  background: #fff;
  padding: 30px;
  margin: 30px 0;
  border-radius: 20px;
  ul.attention{
    margin: 0 0 0 1em;
    li{
      font-size: 16px;
      list-style-type: "※";
      list-style-position: outside;
    }
  }
  ul.sc_list{
    display: flex;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 20px;
    margin: 20px 0 0;
    li{
      width: calc(100% / 2 - 10px);
      a{
        display: block;
        padding: 26px 0 30px;
        background: var(--color-main2);
        color: #fff;
        text-align: center;
        font-size: 20px;
        font-weight: 900;
        border-radius: 10px;
        box-shadow: var(--shadow-fmt);
        position: relative;
      }
      a:after {
        font-family: var(--fontfamily-icon);
        content: "\e5cc";
        color: #fff;
        vertical-align: middle;
        position: absolute;
        right: 0;
        font-size: 30px;
        top: calc(50% - 12px);
      }
    }
  }
}

/*----------
特典ページ
----------*/
.navi_benefit{
  background: var(--color-main2);
  padding: 10px 20px;
  margin: 40px 0 0;
  li a{
        display: block;
        border: solid #fff;
        border-width: 0 0 2px;
        color: #fff;
        padding: 18px 0 20px;
        text-align: center;
        font-weight: 700;
        font-size: 18px;
  }
  li:last-child a{border: none;}
  li a:before{
    font-family: var(--fontfamily-icon);
    font-weight: normal;
    color: #fff;
    font-size: 30px;
    vertical-align: bottom;
    margin: 0 5px 0 0;
  }
  li.scb a:before{content: "\e7ee";}
  li.camb a:before{content: "\ef49";font-size: 34px;}
  li.shopb a:before{content: "\ea12";}
}
span.icn_class{
    display: block;
    width: 100px;
    padding: 6px 0 8px;
    border-radius: 15px;
    font-weight: 900;
    font-size: 14px;
    text-align: center;
    line-height: 1em;
    color: #fff;
  &.premium{background: var(--color-main2);}
  &.plus{background: var(--color-main3);}
  &.welcome{background: var(--color-main1);}
}
#contents-main #banner_friends {
    margin: 10px 0 30px;
    position: relative;
  .swiper-container{
    width: 500px;
    height: 292px;
    overflow: hidden;
    position: relative;
    border: 2px solid #fff;
    margin: auto;
  }
  .swiper-button-next:after, .swiper-button-prev:after{
    font-family: var(--fontfamily-icon);
        content: "\e5e1";
        font-size: 24px;
        color: var(--color-main1);
        position: absolute;
        left: 10px;
        width: 32px;
        height: 32px;
        border-radius: 50%;
        background: #fff;
        box-sizing: border-box;
        text-align: center;
        font-weight: 900;
        padding: 4px 0 0 4px;
        box-shadow: var(--shadow-fmt);
  }
  .swiper-button-prev:after{
    content: "\e2ea";
    left: auto;
    right: 10px;
    padding: 4px 4px 0 0;
  }
}
#contents-main .friends_sc_index_content{
  background: #fff;
  padding: 30px 60px 10px;
  margin: 30px 0;
  border-radius: 20px;
  h3{
    margin: -30px -60px 0;
    background: linear-gradient(var(--color-goldgrade));
    color: #fff;
    text-align: center;
    font-weight: 700;
    font-size: 24px;
    border-radius: 20px 20px 0 0;
  }
  h4{
    font-weight: 700;
    font-size: 20px;
    padding: 20px 0 20px 60px;
    line-height: 1.4em;
    position: relative;
    border-bottom: 2px solid var(--color-main2);
    &:before{
      font-family: var(--fontfamily-icon);
      font-size: 50px;
      color: var(--color-main2);
      font-weight: 500;
      display: block;
      position: absolute;
      top: calc(50% - 15px);
      left: 0;
    }
  }
}
/*施設限定の特典*/
#contents-main #scb.friends_sc_index_content{
  h4:before{content: "\e7ee";}
  .content_box{
    dl.list_benefits{
      padding: 20px 0 0;
      border-bottom: 2px solid var(--color-main2);
      &:last-of-type{border-bottom: none;}
      > dt{
        font-weight: 900;
        font-size: 22px;
        color: var(--color-main1);
      }
      > dd{
        padding: 0 0 20px;
        border-bottom: 2px dashed #ccc;
        .benefit{
          padding: 15px 0;
          font-size: 18px;
          font-weight: 500;
          line-height: 1.4em;
          word-break: break-word;
          em{
            font-weight: 900;
            font-size: 22px;
            color: var(--color-red);
          }
          img{
            width: 110px;
            display: block;
            float: right;
            padding: 0 0 5px 5px;
          }
        }
      }
      > dd:last-of-type{border-bottom: none;}
    }
    .howtouse-item{
      padding: 5px;
      margin: 10px 0 0;
      border-radius: 10px;
      border: 1px solid #707070;
      .howto{
        display: flex;
        align-items: center;
        cursor: pointer;
        user-select: none;
      }
      .use-text {
        flex: 1;
        font-size: 18px;
        font-weight: 700;
        text-align: center;
        padding: 0 0 0 30px;
      }
      .use-toggle {
        flex-shrink: 0;
        color: var(--color-main2);
        font-size: 28px;
        line-height: 1;
        font-weight: 900;
        width: 40px;
        text-align: center;
        padding-bottom: 4px;
      }
      .use-answer{
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.35s ease, padding 0.35s ease;
        p{
          margin: 0;
          font-size: 16px;
        }
      }
      &.open{
        .use-answer {
          max-height: 800px;
          padding: 10px 20px 20px;
        }
        .use-answer a {
          text-decoration: underline;
          word-break: break-all;
        }
        .use-toggle {
          font-size: 30px;
        }
      }
    }
    dl.target_class{
      display: flex;
      background: var(--color-bg1);
      padding: 10px;
      gap: 5px;
      justify-content: left;
      align-items: center;
      dt{
        line-height: 1.3em;
        text-align: center;
      }
    }
  }
}
/*キャンペーン特典*/
#contents-main #camb.friends_sc_index_content{
  h4:before{content: "\ef49";}
  .camb-slider{
    position: relative;
  }

  .camb-slider-window{
    width: 460px;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;

    /* 端で引っ張り続ける挙動を抑える */
    overscroll-behavior-x: none;

    scrollbar-width: none;
  }

  .camb-slider-window::-webkit-scrollbar{
    display: none;
  }

  .camb-slider-track{
    display: flex;
    width: max-content;
    margin: 20px 0;
    padding-right: 30px;
    gap: 20px;
  }

  .camb-slider-slide{
    position: relative;
    background: var(--color-bg1);
    padding: 15px 15px 80px;
    border-radius: 10px;
    box-sizing: border-box;
    flex: 0 0 240px;

    overflow: hidden;
  }

  .camb-slider-prev,
  .camb-slider-next{
    position: absolute;
    top: 50%;
    cursor: pointer;
    z-index: 10;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #fff;
    box-sizing: border-box;
    text-align: center;
    font-weight: 900;
    padding: 2px 0 0 4px;
    box-shadow: var(--shadow-fmt);
    border: 0;
  }

  .camb-slider-prev:before{
    font-family: var(--fontfamily-icon);
    content: "\e2ea";
    font-size: 24px;
    color: var(--color-main1);
  }

  .camb-slider-next:before{
    font-family: var(--fontfamily-icon);
    content: "\e5e1";
    font-size: 24px;
    color: var(--color-main1);
  }

  .camb-slider-prev{
    left: -50px;
    transition: opacity .2s ease;
    padding: 2px 4px 0 0;
  }

  .camb-slider-next{
    right: -70px;
    transition: opacity .2s ease;
  }

  .camb-slider-prev.is-hidden,
  .camb-slider-next.is-hidden{
    opacity: 0;
    pointer-events: none;
  }

  .events{
    .image{
      height: 200px;
      border: 2px solid #fff;
      img {
        height: 100%;
        width: 100%;
        object-fit: cover;
        /* object-position: 50% 50%; */
        object-position: 50% 0;
      }
    }
    .ev_detail .event_title{
      font-size: 20px;
      font-weight: 900;
      color: var(--color-main1);
      line-height: 1.4em;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
      margin: 10px 0 5px;
    }
    .ev_detail p{
      font-size: 14px;
      line-height: 1.4em;
      padding: 3px 0 0;
    }
    .morelink span{
      display: block;
      top: auto;
      right: calc(50% - 5.3em);
      bottom: 20px;
      em{
        display: block;
        background: var(--color-main1);
        color: #fff;
        border-radius: 5px;
        font-weight: 700;
        font-size: 18px;
        padding: 10px;
        text-align: center;
      }
    }
    .morelink span:after{
      display: none;
    }
  }
}
/*ショップでつかえる特典*/
#contents-main #shopb.friends_sc_index_content{
  padding-bottom: 30px;
  h4:before{content: "\ea12";}
  > p.attention{
    font-size: 14px;
    line-height: 1.4em;
    padding: 10px 0;
  }
  #sel_btn_area{
    background: var(--color-bg1);
    padding: 10px 15px 15px;
    border-bottom: 1px solid #707070;
    .func_ttl{
      text-align: center;
      padding: 0 0 8px;
    }
    li:hover{cursor: pointer;}
    ul.tokusel_btn{
      display:flex;
      gap: 5px;
      justify-content: center;
      align-items: center;
      li{
        display: block;
        width: calc(100% / 3);
        padding: 8px 0 10px;
        border-radius: 15px;
        font-weight: 900;
        font-size: 14px;
        text-align: center;
        line-height: 1em;
        background: #fff;
      }
      li[data-toku="welcome"]{color: var(--color-main1);}
      li[data-toku="plus"]{color: var(--color-main3);}
      li[data-toku="premium"]{color: var(--color-main2);}
      li.active{color: #fff;}
      li.active[data-toku="welcome"]{background: var(--color-main1);}
      li.active[data-toku="plus"]{background: var(--color-main3);}
      li.active[data-toku="premium"]{background: var(--color-main2);}
    }
    .catcel {
      position: relative;
      width: 100%;
      max-width: 400px;
      margin: 10px 0 0;
    }
    .catcel_current {
      position: relative;
      width: 100%;
      height: 48px;
      padding: 0 45px 0 16px;
      border-radius: 10px;
      border: 1px solid #707070;
      background: #fff;
      font-size: 16px;
      font-weight: 700;
      text-align: center;
      cursor: pointer;
      color:var(--color-base-text-dark);
    }
    .catcel_arrow {
      position: absolute;
      top: 50%;
      right: 18px;
      width: 8px;
      height: 8px;
      border-right: 1px solid #333;
      border-bottom: 1px solid #333;
      transform: translateY(-65%) rotate(45deg);
      transition: transform 0.2s;
    }
    .catcel.is-open .catcel_arrow {
      transform: translateY(-35%) rotate(225deg);
    }
    .catcel_btn {
      display: none;
      position: absolute;
      z-index: 10;
      top: calc(100% + 4px);
      left: 0;
      width: 100%;
      margin: 0;
      padding: 0;
      list-style: none;
      background: #fff;
      border: 1px solid #707070;
      border-radius: 6px;
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
      overflow: hidden;
      li {
        padding: 10px 15px;
        font-size: 14px;
        line-height: 1.4;
        cursor: pointer;
        border-bottom: 1px dashed #707070;
      }
      li:last-child {border-bottom: none;}
      .catcel_btn li:hover {background: var(--color-bg1);}
    }
    .catcel.is-open .catcel_btn {
      display: block;
    }
    .result_cat{
      text-align: center;
      display: block;
      padding: 5px 0 0;
      font-weight: 700;
    }
    .reset_btn{
      cursor: pointer;
      text-align: right;
      padding: 5px 5px 0;
      &:before {
        font-family: var(--fontfamily-icon);
        content: "\e5cd";
        font-size: 20px;
        font-weight: 500;
        vertical-align: middle;
      }
    }
  }
  #sel_btn_area:not(:has(~ .shoplist article)) {
    display: none;
  }
  .shoplist article{
    border: 1px solid #707070;
    border-top:none;
    .logo{
      padding: 15px 15px 10px;
      overflow: hidden;
      a{
        font-size: 16px;
        font-weight: 700;
        line-height: 1.4em;
        text-decoration: underline;
        word-break: break-word;
      }
      img{
        max-width: 80px;
        max-height: 40px;
        display: block;
        float: right;
        padding: 5px 0 5px 5px;
      }
    }
    .tokuten_area{
      > p{
        display: flex;
        gap: 10px;
        padding: 10px;
        background: var(--color-bg1);
        border: 4px solid #fff;
        border-top: none;
        .rank{
          display: flex;
          justify-content: right;
          align-items: center;
          gap: 2px;
          /*flex: 0 0 170px;*/
        }
        em{
          line-height: 1.6em;
          word-break: break-all;
          white-space: pre-wrap;
          font-size: 12px;
          strong{
            font-weight: 900;
            font-size: 16px;
            color: var(--color-red);
              display: inline-block;
          }
        }
      }
      span.icn_class{
        width: 55px;
        font-size: 10px;
        letter-spacing: -0.1em;
      }
    }
  }
    /* 特典が2つ以上ある店舗：ウェルカム特典 */
    .shoplist article:has(.tokuten_area > p ~ p)
    .tokuten_area > p.welcome .icn_class:not(.welcome) {
      display: none !important;
    }

    /* 特典が2つ以上ある店舗：プラス特典 */
    .shoplist article:has(.tokuten_area > p ~ p)
    .tokuten_area > p.plus .icn_class:not(.plus) {
      display: none !important;
    }

    /* 特典が2つ以上ある店舗：プレミアム特典 */
    .shoplist article:has(.tokuten_area > p ~ p)
    .tokuten_area > p.premium .icn_class:not(.premium) {
      display: none !important;
    }
  .shoplist:not(:has(article))::after {
    content: "対象ショップはございません";
    display: block;
    font-size: 14px;
    padding: 20px;
    text-align: center;
    border: 1px solid #707070;
  }
  .shoplist .none_shop{
    display: block;
    font-size: 14px;
    padding: 20px;
    text-align: center;
    border: 1px solid #707070;
    border-top:none;
  }
}
/*SP*/
body.sp{
  .navi_benefit{
    margin: 20px -16px 40px;
    display: flex;
    justify-content: center;
      /*施設限定特典を除いた2ボタン*/
      li:first-child{width: 48%;}
      li:last-child{width: 52%;}
      li br{display: none}
    /*施設限定特典を表示する場合li{ width: calc(100% / 3);}*/
    li a{
        border-width: 0 2px 0 0;
        font-size: 16px;
        line-height: 1.2em;
        padding: 8px 0 10px;
        box-sizing: border-box;
    }
    li a:before{
      margin: 0 0 10px;
      display: block;
    }
  }
  span.icn_class{
    width: 80px; font-size: 12px;
  }
  #contents-main #banner_friends {
    .swiper-container{
      width: 320px;
      height: 186px;
    }
  }

  #contents-main .friends_sc_index_content{
    padding: 30px 20px 10px;
    h3{margin: -30px -20px 0;}
  }

  #contents-main #camb.friends_sc_index_content{
  & .events .image {height: 160px;}
  .camb-slider{margin:0 -20px 0 0;}
    .camb-slider-window{
      width: 100%;
      box-sizing: border-box;
    }
    .camb-slider-slide{flex: 0 0 200px;}
    .camb-slider-prev{left: -15px;}
    .camb-slider-next{right: -10px;}
  }

  #contents-main #shopb.friends_sc_index_content{
    #sel_btn_area{
      .catcel {max-width: none;}
      .catcel_current {
        height: 40px;
        font-size: 14px;
      }
      .catcel_btn li {padding: 10px 15px;}
    }
  }

  #contents-main #shopb.friends_sc_index_content{
    .shoplist article .tokuten_area{
      /*& > p .rank {flex: 0 0 150px;}*/
      span.icn_class{
        width: 48px;
        font-size: 8px;
      }
    }    
  }
}


/*----------
トピックス派生ページ
----------*/
body.item_eventnews #contents-main .friends .item{
  background: #fff;
  padding: 30px 60px 10px;
  margin: 30px 0;
  border-radius: 20px;
  overflow: hidden;
  .title h3{
    background: none;
    color: var(--color-main1);
    padding: 0 0 15px;
    border-bottom: 2px solid var(--color-main2);
  }
  .subtitle h4{padding: 0 0 10px;}
  table.table01,table.table01 th,table.table01 td{
    background: var(--color-bg1);
    border: none;
    border-radius: 20px;
    overflow: hidden;
  }
  table.table01 th,table.table01 td{
    border: 2px solid #fff;
  }
  .desc .link a{
    background: var(--color-main1);
  }
  .e_category{display: none;}
}
.friends .ev-navi_bottom .ev_all_link a{
  background: linear-gradient(var(--color-goldgrade));
  color: #fff;
  border-radius: 30px;
  padding: 10px 30px 10px 20px;
  border-color: #fff;
  font-weight: 700;
  &:before{color: #fff;}
}
body.pc{
  &.item_eventnews #contents-main .item .images .image img{min-width: 400px;}
  &.item_eventnews #contents-main .item .images .subimg li,
  &.item_eventnews #contents-main .item .images .subimg li span{width: 80px; height: 80px;}
}
/*SP*/
body.sp{
  &.item_eventnews #contents-main .friends .item{
    padding:30px 20px 10px;
  }
}
