@charset "utf-8";

@import url("./animation.css");
@import url("./root.css");


.material-symbols {
  font-family: var(--ms);
}
/*====================================================================
　全体設定
====================================================================*/
html,body,header,footer,main,section,nav,div,ul,ol,li,a,p,h1,h2,h3,h4,h5,h6,img,dl,dt,dd,form,label,input,textarea,span{
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
/*--ベースとなるフォントサイズ 1rem=10px想定--*/
html{
  font-size: calc(1000vw / 375);
  scroll-behavior: smooth;
  touch-action: manipulation;
}
body {
  position: relative;
  background: var(--bg);
  color: var(--black);
  font-family: var(--main-font);
  font-size: 1.4rem;
  line-height: 1.5;
  min-height: 100dvh;
  -webkit-tap-highlight-color:rgba(0,0,0,0);
}
body.fixed {
  position: fixed;
  width: 100%;
  height: 100%;
  left: 0;
}
main {
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
}
img {
  display: block;
  width: 100%;
}
a {
  color: var(--main-color);
}
ul{
  list-style-type: none;
}
.caution li,
.indent{
  padding-left: 1em;
  text-indent: -1em;
  text-align: left;
}
.error {
  background: #fff;
  border: var(--red) solid 0.2rem;
  border-radius: 0.5rem;
  padding: 0.5rem;
  margin: 0.5rem auto;
  max-width: 35.5rem;
  color: var(--red);
  font-weight: 700;
  font-size: 1.4rem;
  text-align: center;
}

/*--下からせり上がり--
.scroll{
  opacity : 0;
  transform : translate(0, 5rem);
  transition : all 500ms;
}
.scrollin {
  opacity : 1;
  transform : translate(0, 0);
}*/
/*--回りながら大きくなる--
.scroll{
  transform : rotateY(360deg) scale(0);
  transition : all 500ms;
  transform-origin: bottom;
}
.scrollin {
  transform : rotateY(0) scale(1);
}*/
/*--拡大--*/
.scroll{
  opacity : 0;
  transform : scale(0);
  transition : all 500ms;
}
.scrollin {
  opacity : 1;
  transform : scale(1);
}

.mt0{margin-top: 0!important;}
.mt05{margin-top: 0.5rem!important;}
.mt1{margin-top: 1rem!important;}
.mt15{margin-top: 1.5rem!important;}
.mt2{margin-top: 2rem!important;}
.mt3{margin-top: 3rem!important;}
.mt4{margin-top: 4rem!important;}
.mt5{margin-top: 5rem!important;}
.mb0{margin-bottom: 0!important;}
.mb05{margin-bottom: 0.5rem!important;}
.mb1{margin-bottom: 1rem!important;}
.mb15{margin-bottom: 1.5rem!important;}
.mb2{margin-bottom: 2rem!important;}
.mb3{margin-bottom: 3rem!important;}
.mb4{margin-bottom: 4rem!important;}
.mb5{margin-bottom: 5rem!important;}
.mr3{margin-right: 3rem!important;}
.center{text-align: center!important;}
.left{text-align: left!important;}
.right{text-align: right!important;}
.w-fit{width: fit-content;}
.w-50{width: 50%;}
.w-60{width: 60%;}
.w-70{width: 70%;}
.w-80{width: 80%;}
.w-90{width: 90%;}

/*--------------見出し-----------*/
h2{
  margin: 0 auto 3rem;
  text-align: center;
  font-size: 2.0rem;
  color: var(--main-color);
}
* + h2{
  margin-top: 3rem;
}
/*--------------------枠--------------------*/
.section {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 3.0rem;
  padding: 2rem 0rem 9rem;
}
.block{
  padding: 2rem 0;
}
/*--共通の枠が必要な場合などに利用--*/
.content{
  position: relative;
  background: #fff;
  border-radius: 2.0rem;
  padding: 2rem 1.5rem 2.0rem;
  width: 32.6rem;
  height: fit-content;
  margin: 0 auto;
  box-shadow: 0 0.5rem 0.8rem rgba(147, 147, 147, 0.2);
}
* + .content::before{
  position: absolute;
  background: url(../img/border.png) repeat-x left center/1.7rem auto;
  border-radius: 10vw;
  content: "";
  width: 32.2rem;
  height: 0.5rem;
  left: calc(50% - 32.2rem / 2);
  top: -1.5rem;
}
/*--アコーディオン--*/
.accordion{
  margin: 2rem auto 0;
}
.accordion_title,
.link_title{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background: var(--white);
  border-top: var(--main-color) solid 0.4rem;
  margin: 0;
  padding: 1rem;
  font-weight: 700;
  font-size: 1.6rem;
  text-align: center;
}
.accordion_title::after {
  position: absolute;
  font-family: var(--ms);
  content: "\e313";
  font-size: 1.5em;
  font-weight: 400;
  right: 1rem;
  color: var(--main-color);
}
.accordion_title.active::after{
  transform: rotateZ(180deg);
}
.accordion_title img,
.link_title img{
  width: auto;
  height: 1.7rem;
  margin-right: 1.5rem;
}
.accordion_content{
  display: none;
  background: #fff;
  margin: 0;
  padding: 1rem;
  transform-origin: top;
}
.accordion_content + .accordion_title{
  margin-top: 0.6rem;
}
.accordion_content.opne{
  display: block;
}
.link_title{
  text-decoration: none;
  color: var(--black);
}
.link_title::after {
  position: absolute;
  font-family: var(--ms);
  content: "\e89e";
  font-size: 1.5em;
  font-weight: 300;
  right: 1rem;
  color: var(--main-color);
}

/*--------------------ボタン--------------------*/
button {
  appearance: none;
  background: none;
  border: none;
}
.button {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background: var(--middle-gray);
  border-radius: 100vw;
  width: 100%;
  max-width: 25.3rem;
  margin: auto;
  min-height: 4.9rem;
  padding: 0.4rem;
  font-family: var(--main-font);
  color: #fff;
  font-size: 1.6rem;
  font-weight: 700;
  text-align: center;
  line-height: 1;
  text-decoration: none;
  transform: rotateZ(0deg);
}
.button span{
  display: flex;
  justify-content: center;
  align-items: center;
}
.button:disabled{
  background: var(--middle-gray);
}
.bt_next::after {
  position: absolute;
  font-family: var(--ms);
  content: "\e5cc";
  font-weight: 400;
  right: 1rem;
}
.bt_back{
  background-color: var(--white);
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 10vw;
  max-width: 18.7rem;
  min-height: 3.4rem;
  padding: 0.5rem 0rem 0.3rem;
  color: var(--middle-gray);
  font-size: 1.6rem;
  font-weight: 400;
}
.bt_sumi{
  background-color: var(--middle-gray);
  color: #ddd;
}
.bt_outside::after {
  position: absolute;
  font-family: var(--ms);
  content: "\e89e";
  font-weight: 300;
  font-size: 2.5rem;
  right: 1.5rem;
}
.bt_copy::after {
}
.bt_checkin::after {
  position: relative;
  font-family: var(--ms);
  content: "\e569";
  font-variation-settings: 'FILL' 1;
  font-weight: 500;
  font-size: 2.0rem;
  margin-left: 1rem;
}
.bt_qr{
}
.bt_qr svg{
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 100% auto;
  border-radius: 50%;
  content: "";
  width: 5.4rem;
  height: 5.4rem;
  left: 0.0rem;
}
.bt_qr svg .st0{fill: #fff}
.bt_qr svg .st1{fill: var(--main-color)}
.bt_qr svg .st2{fill: #707070}

.bt_gift::before{
  position: absolute;
  background: url(../img/icon_btn_gift.svg) no-repeat center center/100% auto;
  content: "";
  width: 2.2rem;
  height: 2.2rem;
  left: 2rem;
}
.bt_coupon::before{
  position: absolute;
  font-family: var(--ms);
  content: "\e53f";
  font-variation-settings: 'wght' 300;
  font-size: 2.4rem;
  left: 2rem;
}
.bt_cookie{
  background-color: var(--red);
}
/*--------------------色--------------------*/
.main_color{
  color: var(--main-color);
}
.red {
  color: var(--red)!important;
}
.bt_submit{
  background: var(--gradient1);
}
.bg_red{
  background-color: var(--red);
}
.bg_blue{
  background-color: var(--blue);
}
.bg_green{
  background-color: var(--green);
}
.bg_white{
  background-color: var(--white);
  border: var(--main-color) solid 0.2rem;
  color: var(--main-color);
}


/*====================================================================
　ヘッダー設定
====================================================================*/
header {
  position: relative;
  width: 100%;
}
/*====================================================================
　フッター設定
====================================================================*/
footer {
  position: -webkit-fixed;
  position: fixed;
  width: 100%;
  height: 7.1rem;
  left: 0;
  bottom: 0;
  z-index: 1001;
}
footer:has(#bt_menu:checked){
  filter: none;
}
footer.hide{
  display: none;
}
footer ul {
  position: absolute;
  display: flex;
  justify-content: center;
  background: #fff;
  border-top: var(--main-color) solid 0.4rem;
  width: 37.5rem;
  height: 7.1rem;
  left: calc(50% - (37.5rem / 2));
}
footer li {
  position: relative;
  border-radius: 50%;
  flex-basis: 9rem;
  text-align: center;
}
footer li a{
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  height: 100%;
  font-size: 1.2rem;
  font-weight: 500;
  color: var(--black);
  text-decoration: none;
}
footer li.btn_qr a{
  font-weight: 500;
  color: var(--white);
}
footer li a img{
  width: 6.0rem;
  margin: 0 auto;
}
footer li a svg{
  width: 6.0rem;
  margin: 0 auto;
}
footer li a svg .st0{
  fill: var(--main-color);
}
footer li a svg .st1{
  fill: #6b7477;
}
footer li a svg .st3{
  fill: #fff;
}

.menu{
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
.menu-btn {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
  width: 100%;
  z-index: 2;
}
.menu-btn span.menubtn,
.menu-btn span.menubtn:before,
.menu-btn span.menubtn:after {
  position: absolute;
  display: block;
  background-color: var(--main-color);
  border-radius: 10vw;
  height: 0.2rem;
  width: 1.6rem;
  content: '';
  transition: all 500ms;
  transition-timing-function: ease-in-out;
}
.menu-btn span.menubtn{
  top: 32%;
}
.menu-btn span.menubtn:before {
  background-color: #6B7477;
  bottom: 0.5rem;
}
.menu-btn span.menubtn:after {
  background-color: #6B7477;
  top: 0.5rem;
}
.menu span.menutext{
  position: absolute;
  display: block;
  bottom: 1.0rem;
  font-size: 1.2rem;
  font-weight: 500;
  color: var(--black);
}

#bt_menu:checked ~ .menu-btn span {
  background-color: rgba(255, 255, 255, 0);
  transform: rotate(180deg);
}
#bt_menu:checked ~ .menu-btn span::before {
  bottom: 0;
  transform: rotate(135deg);
}
#bt_menu:checked ~ .menu-btn span::after {
  background-color: var(--main-color);
  top: 0;
  transform: rotate(225deg);
}
#bt_menu:checked ~ .menu-btn span.menutext {
  transform: none;
}
#bt_menu {
  display: none;
}
.menu-content {
  position: fixed;
  background: rgba(0 ,0 ,0 ,0.5);
  width: 100%;
  height: calc(100dvh - 7.1rem);
  top: 0;
  left: 0;
  transition: all 0.1s;
  transform: translateX(100vw);
  transition-timing-function: linear(0, 0.30, 0.50, 0.65, 1);
}
footer:has(.btn_qr) .menu-content{
  height: calc(100dvh - 9.4rem);
}
footer .menu-content ul {
  display: block;
  border: none;
  width: 70%;
  height: 100%;
  left: auto;
  right: 0;
  top: 0;
  margin: 0;
  padding: 0 2rem;
  overflow-y: auto;
}
footer .menu-content ul li {
  background: transparent;
  border: none;
  border-radius: 0;
  border-bottom: var(--border1);
  width: 100%;
  height: auto;
  box-shadow: none;
  filter: none;
}
footer .menu-content ul li:last-of-type{
  border: none;
}
footer .menu-content ul li a {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  padding: 1.5rem 3rem 1.5rem 0.5rem;
  font-size: 1.4rem;
  color: var(--black);
  text-decoration: none;
}
footer .menu-content ul li a::after {
  position: absolute;
  font-family: var(--ms);
  content: "\e5cc";
  font-size: 2.0rem;
  font-weight: 400;
  right: 1rem;
  color: var(--main-color);
}
.menu-content ul li a.outside::after{
  content: "\e89e";
}
#bt_menu:checked ~ .menu-content {
  transform: translateX(0);
}
/*====================================================================
　規約・概要
====================================================================*/
.rule p{
  margin-bottom: 2rem;
}
.rule dt{
  background: var(--pale);
  padding: 0.2rem;
  text-align: center;
  font-size: 1.6rem;
  font-weight: 700;
}
.rule dd{
  margin-bottom: 2rem;
  padding: 1rem 0 0;
  word-break: break-all;
}
.rule dd div{
  background: var(--pale);
  margin: 0.5rem 0;
  padding: 1rem;
  font-size: 1.3rem;
}
.rule li {
  padding-left: 1em;
  text-indent: -1em;
}
.rule * + ul,
.rule * + li{
  margin-top: 1rem;
}

/*------初回アクセス時-----*/
.attention {
  position: fixed;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  background: rgba(0, 0, 0, 0.5);
  width: 100%;
  height: 100vh;
  padding: 2rem;
  top: 0;
  left: 0;
  text-align: center;
  overflow-y: auto;
}
.attention .inner{
  display: none;
  background: #fff;
  border-top: var(--main-color) solid 0.4rem;
  border-bottom: var(--main-color) solid 0.4rem;
  width: 32.6rem;
  padding: 2rem;
  margin-bottom: 2rem;
  overflow-y: scroll;
  overflow-x: hidden;
}
.attention .inner.active{
  display: block;
}
.attention img{
  background: #F5F5F5;
  border-radius: 1.3rem;
  width: 28.8rem;
  margin: 1.3rem auto;
}
.attention .step{
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  margin: 5.5rem auto 2.7rem;
  font-size: 1.0rem;
  color: #ddd;
}
.attention .step .active{
  color: var(--main-color);
}
.attention p{
  margin: 1.3rem auto;
  text-align: left;
}
.attention ul{
  text-align: left;
}
.attention li{
  padding-left: 1em;
  text-indent: -1em;
}

/* body:has(.entry) .content{
  min-height: calc(100dvh - 27.2rem - 10.2rem);
} */
.entry label input[type="radio"]{
  display: none;
}
.entry label:has(input[type="radio"]){
  display: flex;
  justify-content: center;
  align-items: center;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 0.5rem;
  width: 9.1rem;
  height: 3.4rem;
  margin-right: 0.7rem!important;
}
.entry label:has(input[type="radio"]:checked){
  background: var(--main-color);
  border: var(--main-color) solid 0.1rem;
  color: #fff;
}
.entry select{
  width: 100%;
}
.entry .caution{
  background: var(--pale);
  border-radius: 1.3rem;
  padding: 1.3rem;
  margin-bottom: 2.8rem;
}
.entry .text_link{
  display: block;
  margin: 2.8rem auto 0;
  text-align: center;
  color: var(--middle-gray);
}
.entry .bt_submit{
  margin-top: 3rem;
}
.entry .bt_back{
  margin-top: 3rem;
}
.entry h3{
  text-align: center;
}
.entry p a{
  position: relative;
}
.entry p a::after{
  position: relative;
  font-family: var(--ms);
  content: "\e89e";
  top: 0.2rem;
  margin-left: 0.2rem;
}
.limit{
  text-align: center;
  font-size: 1.8rem;
  font-weight: 500;
  color: var(--middle-gray);
}


/*====================================================================
　マイページ設定
====================================================================*/
.mypage {
  position: relative;
  background-color: #fff;
  border-radius: 2.0rem 0.6rem 2.0rem 2.0rem;
  padding: 2rem 1.5rem 2.0rem;
  width: 32.6rem;
  height: fit-content;
  margin: 0 auto;
  box-shadow: 0 0.5rem 0.8rem rgba(147, 147, 147, 0.2);
  text-align: center;
}
.mypage::before{
  position: absolute;
  background: color-mix(in srgb, var(--sub-color) 40%, transparent);
  border-radius: 0 0.6rem 0 0;
  content: "";
  width: 2.6rem;
  height: 2.6rem;
  right: -0.1rem;
  top: 0;
  clip-path: polygon(0 0, 100% 0, 100% 100%);
}

/*--------------------ユーザー情報--------------------*/
.info{
  position: relative;
}
.info .name {
  font-size: 1.6rem;
  font-weight: 700;
}
.info .name small{
  font-size: 1.4rem;
}
.info .myno {
  font-size: 1.4rem;
  color: #9B9B9B;
}

/*--------------------トピックス--------------------*/
.topics_top{
  margin: 0.8rem auto 0;
}
.topics_top ul{
  background: #F8F8F8;
  border-radius: 1.3rem;
  width: 100%;
  padding: 0 1.6rem;
}
.topics_top li{
  position: relative;
  text-align: left;
}
.topics_top li + li{
  border-top: var(--light-gray) solid 0.1rem;
}
.topics_top li a{
  position: relative;
  display: block;
  padding: 1.6rem 2rem 1.6rem 0;
  color: var(--fc1);
  font-size: 1.4rem;
  font-weight: 500;
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topics_top li::after {
  position: absolute;
  font-family: var(--ms);
  content: "\e5cc";
  font-size: 2.0rem;
  font-weight: 400;
  right: 0;
  top: 1.0rem;
  color: var(--main-color);
  pointer-events: none;
}
.topics_top li span{
  margin-right: 1.6em;
  font-size: 1.1rem;
  color: var(--middle-gray);
}
.topics_link{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: fit-content;
  margin: 1.2rem 0 0 auto;
  font-size: 1.3rem;
  font-weight: 500;
  text-align: center;
  line-height: 1;
  color: var(--main-color);
  text-decoration: none;
}
.topics_link::after{
  position: relative;
  font-family: var(--ms);
  content: "\ea50";
  font-size: 1.4em;
}

/*--------------------TOP共通クーポン--------------------*/
.top_coupon{
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1.0rem;
  align-items: center;
}
.top_coupon:has(.bt_qr){
  padding-bottom: 2.0rem;
}
.coupon_img{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 26.8rem;
}
.coupon_name{
  position: relative;
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--main-color);
}
.coupon_detail{
  position: relative;
  font-size: 1.4rem;
}
.coupon_detail p{
  margin-bottom: 1.0rem;
}
.coupon_detail .tuduri{
  display: flex;
  justify-content: center;
  align-items: baseline;
  gap: 1rem;
  padding-right: 3.0rem;
  font-weight: 700;
}
.coupon_detail .tuduri svg{
  position: relative;
  width: 3.0rem;
  transform: rotate(-20deg);
}
.coupon_detail .tuduri svg path{
  position: relative;
}
.coupon_detail .tuduri svg path.fill1{
  position: relative;
  fill: color-mix(in srgb, var(--sub-color) 50%, #fff 50%);
}
.coupon_detail .tuduri svg path.fill2{
  fill: var(--main-color);
}
.coupon_detail .tuduri svg path.fill3{
  fill: color-mix(in srgb, var(--sub-color) 90%, #fff 10%);
}
.coupon_detail .tuduri span{
  text-align: right;
  font-size: 1.8rem;
  color: var(--main-color);
}
.coupon_detail .balance{
  position: relative;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: flex-end;
  gap: 0 0.5rem;
  margin: 1rem 0 1.0rem;
  font-size: 1.6rem;
  font-weight: 700;
}
.coupon_detail .balance p{
  width: 100%;
  color: var(--main-color);
  text-align: center;
}
.coupon_detail .balance div{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: baseline;
  background: color-mix(in srgb, var(--sub-color) 30%, transparent);
  border: var(--sub-color) solid 0.1rem;
  border-radius: 1.4rem;
  width: 16.0rem;
  padding: 0.5rem;
  font-size: 3.4rem;
  font-weight: 700;
  color: var(--main-color);
}
.coupon_detail .balance span{
  position: absolute;
  right: calc(50% - 10.0rem);
}
.top_coupon ul.caution{
  width: 26.4rem;
  margin: 1rem auto 0;
  font-size: 1.2rem;
  color: var(--dark-gray);
}
.coupon_detail .notes{
  width: 100%;
  margin: 2rem auto ;
}

/*--------------------TOP店舗クーポン一覧--------------------*/
.coupon_list{
  position: relative;
  padding: 3rem 0rem 2.5rem;
}
.coupon_list h2{
  margin-bottom: 1.0rem;
}
.coupon_list .coupon_rule{
  width: 29.0rem;
  margin: 0 auto 1.0rem;
  font-size: 1.3rem;
  text-align: left;
}
.remarks{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  border: var(--main-color) solid 0.1rem;
  border-radius: 50%;
  width: 1.6rem;
  height: 1.6rem;
  margin: 0 2.0rem 1.0rem auto;
  color: var(--main-color);
  font-size: 1.2rem;
  cursor: pointer;
}
.remarks_popup{
  position: absolute;
  display: none;
  background: #fff;
  border-radius: 1rem;
  width: 24.0rem;
  padding: 1rem;
  left: 1.6rem;
  bottom: 0;
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--fc1);
  box-shadow: 0 0 0.5rem rgba(147, 147, 147, 0.5);
  z-index: 2;
}
.remarks_popup::after{
  position: absolute;
  font-family: var(--msr);
  content: "\e5c9";
  right: 0.5rem;
  top: 0;
  font-size: 2.0rem;
  color: var(--middle-gray);
}
.remarks_popup ul{
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.remarks_popup li{
  border: none!important;
  width: 100%!important;
  padding: 0 0 0 3rem;
  text-align: left;
}
.remarks_popup li.headsup::before{
  position: absolute;
  /* background: color-mix(in srgb, var(--main-color) 30%, #fff 70%); */
  background: #FFBFA4;
  font-family: var(--msr);
  content: "\e645";
  width: 2.3rem;
  height: 2.0rem;
  left: 0.0rem;
  top: 0;
  padding-left: 0.2rem;
  font-size: 1.0rem;
  font-variation-settings: 'wght' 700, 'opsz' 20;
  color: #fff;
  clip-path: polygon(0 0, 100% 0, 0 100%);
  z-index: 2;
}
.remarks_popup li.sumi::before{
  position: absolute;
  background: #D9D9D9;
  font-family: var(--msr);
  content: "\e5ca";
  width: 2.3rem;
  height: 2.0rem;
  left: 0.0rem;
  top: 0;
  padding-left: 0.2rem;
  font-size: 1.0rem;
  font-variation-settings: 'wght' 700, 'opsz' 20;
  color: #fff;
  clip-path: polygon(0 0, 100% 0, 0 100%);
  z-index: 2;
}
.coupon_list ul{
  display: flex;
  flex-direction: column;
}
.coupon_list li{
  position: relative;
  border-top: var(--light-gray) solid 0.1rem;
  width: 29.0rem;
  margin: 0 auto;
}
.coupon_list li:has(.headsup)::before{
  position: absolute;
  /* background: color-mix(in srgb, var(--main-color) 30%, #fff 70%); */
  background: #FFBFA4;
  font-family: var(--msr);
  content: "\e645";
  width: 2.3rem;
  height: 2.0rem;
  left: 0.0rem;
  top: 0;
  padding-left: 0.2rem;
  font-size: 1.0rem;
  font-variation-settings: 'wght' 700, 'opsz' 20;
  color: #fff;
  clip-path: polygon(0 0, 100% 0, 0 100%);
  z-index: 2;
}
.coupon_list li:has(.sumi){
  order: 1;
}
.coupon_list li:has(.sumi)::before{
  position: absolute;
  background: #D9D9D9;
  font-family: var(--msr);
  content: "\e5ca";
  width: 2.3rem;
  height: 2.0rem;
  left: 0.0rem;
  top: 0;
  padding-left: 0.2rem;
  font-size: 1.0rem;
  font-variation-settings: 'wght' 700, 'opsz' 20;
  color: #fff;
  clip-path: polygon(0 0, 100% 0, 0 100%);
  z-index: 2;
}
.coupon_list li a{
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-template-rows: repeat(2, 1fr);
  grid-column-gap: 1.6rem;
  padding: 1.0rem 2.0rem 1.0rem 0;
  text-decoration: none;
  line-height: 1;
}
.coupon_list li a::after{
  position: absolute;
  font-family: var(--msr);
  content: "\e5df";
  right: 0.0rem;
  top: calc(50% - 1rem);
  font-size: 2.0rem;
  font-variation-settings: 'wght' 700, 'opsz' 20;
  color: var(--middle-gray);
}
.coupon_list li a.sumi{
  pointer-events: none;
}
.coupon_list li a.sumi::after{
  display: none;
}
.coupon_list li a img{
  position: relative;
  width: 7.6rem;
  height: 5.7rem;
  margin: auto 0;
  grid-area: 1 / 1 / 3/ 2;
  object-fit: cover;
}
/* .coupon_list li:has(.sumi) img{
  filter: grayscale(1);
} */
.coupon_list li .coupon_name{
  grid-area: 1 / 2 / 2 / 3;
  align-content: center;
  width: 18.0rem;
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--black);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.coupon_list li .shop_name{
  grid-area: 2 / 2 / 3 / 3;
  align-content: center;
  width: 18.0rem;
  font-size: 1.4rem;
  color: var(--black);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}



/*--------------------リンクバナー--------------------*/
.link_banner{
  display: flex;
  flex-direction: column;
  gap: 2.0rem;
  margin: 0 auto;
}

/*--------------------シェア--------------------*/
.share{
  position: relative;
  background: #fff;
  border-radius: 2.0rem;
  padding: 2rem 1.5rem 2.0rem;
  width: 32.6rem;
  height: fit-content;
  margin: 0 auto;
  text-align: center;
  box-shadow: 0 0.5rem 0.8rem rgba(0, 0, 0, 0.09);
}
.share::before{
  position: absolute;
  background: url(../img/border.png) repeat-x left center/1.7rem auto;
  border-radius: 10vw;
  content: "";
  width: 32.2rem;
  height: 0.5rem;
  left: calc(50% - 32.2rem / 2);
  top: -1.5rem;
}
.share .copyTarget{
  border-radius: 2.0rem;
  margin: 0rem auto 1.5rem;
  padding: 2rem 1rem;
  font-size: 1.4rem;
  box-shadow: 0 0.5rem 0.8rem rgba(0, 0, 0, 0.09);
}
.share button{
  appearance: none;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background: var(--white);
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 10vw;
  width: fit-content;
  padding: 0.5rem 1rem;
  margin: 1.5rem auto 0;
  color: var(--middle-gray);
}
.share button span.bt_copy{
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 1.2rem;
}
.share button span.bt_copy::after{
  position: relative;
  background: url(../img/icon_copy.svg) no-repeat center center/100% auto;
  content: "";
  width: 1.2rem;
  height: 1.1rem;
  margin-left: 1rem;
}
.share ul {
  display: flex;
  justify-content: center;
  gap: 2rem;
  margin: 2rem 0 0;
  padding: 0;
}
.share li {
  position: relative;
  border-radius: 50%;
  width: 3.0rem;
}
.share li a img{
  position: relative;
  width: 3.0rem;
}



/*====================================================================
　全体マップ画面
====================================================================*/
body:has(#message_placeholder){
  border: #fff solid 0.3rem;
}
video {
  position: absolute;
  width: calc(100vw - 0.6rem);
  height: calc(100dvh - 0.6rem);
  left: 0;
  top: 0;
  object-fit: cover;
}
canvas {
  display: none;
  object-fit: scale-down;
}
#message_placeholder {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
}
#message_placeholder>* {
  position: absolute;
}
#message {
  display: none;
  position: absolute;
  width: 100%;
}
#message div {
  position: relative;
  left: 0;
  top: 0;
  padding: 1.5rem 0.5rem;
  text-align: center;
  font-size: 90%;
  font-weight: bold;
  background-color: rgba(238, 238, 238, 0.5);
  border: #808080 solid 0.1rem;
  border-radius: 1rem;
  margin: 1rem;
}
#loading {
  width: 100%;
  text-align: center;
  color: grey;
  padding-top: 10rem;
}
#error {
  margin: 0.5rem;
  display: none;
}


.map{
  display: none;
}
main:has(.tab .tab1.active) .map{
  display: block;
}
#map,
.map_content{
  position: relative;
  height: calc(100dvh - 5rem - 7.1rem)!important;
  /* overflow: scroll; */
}
.map .map_category{
  display: flex;
  justify-content: center;
  align-items: center;
  background: var(--white);
  height: 6.7rem;
  padding: 0 0.5rem;
  font-size: 1.3rem;
  font-weight: 700;
}
.map .map_category .swiper-button-prev,
.map .map_category .swiper-button-next{
  position: relative;
  display: block;
  background: none;
  margin: 0 0 0 auto;
  padding: 0;
  height: 2.0rem;
  right: auto;
  left: auto;
  top: auto;
  font-size: 2.0rem;
  font-variation-settings: 'FILL' 1;
  color: var(--main-color);
  z-index: 5;
}
.map .map_category .swiper-button-prev{
  margin: 0 auto 0 0;
}
.map .map_category .swiper-button-prev{
  transform: scale(-1,1);
}
.map .map_category button:disabled{
  opacity: 0;
}
.map .map_category .swiper-container{
  display: flex;
  justify-content: center;
  align-items: center;
  width: 29.9rem;
  overflow: hidden;
}
.map .map_category ul.swiper-wrapper{
  display: flex;
  justify-content: flex-start;
  align-items: center;
  gap: 0.7rem;
  width: 29.9rem;
}
.map .map_category li{
  background-color: var(--middle-gray);
  border-radius: 0.5rem;
  width: 8.5rem;
  min-width: 9.5rem;
  max-width: 9.5rem;
  height: 3.4rem;
  /* color: var(--middle-gray); */
  color: var(--white)!important;
}
.map .map_category li label{
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  padding: 0.2rem 0.5rem;
  line-height: 1;
}
.map .map_category li input[type="checkbox"]{
  display: none;
}
.map .map_category li:has(input[type="checkbox"]:checked){
  /* background: var(--main-color); */
  color: var(--white);
}
.map .map_category li:has(input[type="checkbox"]:checked){
  background: var(--white)!important;
  border: solid 0.2rem;
}
.map .map_category li.category1:has(input[type="checkbox"]:checked){
  border-color: #EF8775!important;
  color: #EF8775!important;
}
.map .map_category li.category2:has(input[type="checkbox"]:checked){
  border-color: #54B179!important;
  color: #54B179!important;
}
.map .map_category li.category3:has(input[type="checkbox"]:checked){
  border-color: #FF83A6!important;
  color: #FF83A6!important;
}
.map .map_category li.category4:has(input[type="checkbox"]:checked){
  border-color: #6291CC!important;
  color: #6291CC!important;
}
.map .map_category li.category5:has(input[type="checkbox"]:checked){
  border-color: #F1B45F!important;
  color: #F1B45F!important;
}




.illust_map{
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #fff;
  padding: 3rem 1rem;
  height: calc(100dvh - 2rem - 9.8rem);
  overflow: scroll;
}
.illust_map .inner{
  border-radius: 1.3rem;
  box-shadow: 0 0.5rem 0.8rem rgba(0, 0, 0, 0.09);
}
.illust_map .inner img{
  border-radius: 1.3rem;
}
.illust_map p{
  margin-top: 2rem;
  text-align: center;
}
.illust_map .leaflet-container{
  border-radius: 1.3rem;
}


/*====================================================================
　対象地点一覧
====================================================================*/
.tab {
  display: flex;
  justify-content: center;
}

.tab div {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #F8F8F8;
  width: 50%;
  height: 5.0rem;
  font-size: 1.6rem;
  font-weight: 700;
  text-align: center;
}
.tab div a{
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  text-decoration: none;
}
.tab1 a::before{
  position: relative;
  font-family: var(--ms);
  content: "\e55b";
  font-size: 2.2rem;
  font-variation-settings: 'wght' 300;
  left: -0.5rem;
}
.tab2 a::before{
  position: relative;
  font-family: var(--ms);
  content: "\e834";
  font-size: 2.2rem;
  font-variation-settings: 'wght' 300;
  left: -0.5rem;
}
.tab div.active {
  background: var(--white);
}
.tab div.active::after{
  position: absolute;
  background: var(--main-color);
  content: "";
  width: 5.6em;
  height: 0.4rem;
  bottom: 0;
}
.spot-list{
  display: none;
  background: var(--white);
  min-height: calc(100dvh - 3.6rem);
  padding-bottom: 12rem;
}
main:has(.tab .tab2.active) .spot-list{
  display: block;
}
.spot-list form{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1.1rem;
  background: var(--white);
  height: 6.7rem;
  font-size: 1.3rem;
  font-weight: 700;
}
.spot-list form select{
  position: relative;
  width: 16.0rem;
  text-align: center;
  font-size: 1.4rem;
}
.spot-list ul{
  display: flex;
  flex-direction: column;
  padding: 2.0rem 2.2rem 0;
}
.spot-list:has(form) ul{
  padding-top: 0;
}
.spot-list li {
  position: relative;
  display: flex;
  align-items: center;
  gap: 1rem;
  border-top: var(--light-gray) solid 0.1rem;
  padding: 1.7rem 0.5rem;
}
.spot-list li:nth-of-type(1){
  border: none;
}
.spot-list:has(form) li:nth-of-type(1){
  border-top: var(--light-gray) solid 0.1rem;
}
.spot-list li img{
  border-radius: 0.5rem;
  width: 6.3rem;
  min-width: 6.3rem;
  height: 6.3rem;
  min-height: 6.3rem;
  margin-bottom: auto;
  object-fit: cover;
}
.spot-list li a {
  position: relative;
  display: flex;
  align-items: center;
  gap: 1.4rem;
  padding: 0 2.5rem 0 0rem;
  width: 100%;
  color: #333;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
}
.spot-list li a::after {
  position: absolute;
  font-family: var(--ms);
  content: "\f591";
  font-variation-settings: 'FILL' 1;
  color: var(--main-color);
  right: 0;
  font-size: 2.2rem;
}
.spot-list li a .detail{
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: center;
  gap: 0.5rem 1.1rem;
}
.spot-list li a .spot-name{
  width: 100%;
  font-size: 1.4rem;
}
.spot-list li a span{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  border: color-mix(in srgb, var(--main-color) 50%, transparent) solid 0.1rem;
  border-radius: 0.5rem;
  padding: 0.3rem 1rem 0.2rem;
  font-size: 1.2rem;
  font-weight: 500;
  word-break: keep-all;
}
.spot-list li a span.area{
  background-color: color-mix(in srgb, var(--main-color) 50%, #fff 50%);
  border-color: color-mix(in srgb, var(--main-color) 50%, #fff 50%);
  color: var(--white);
}
.area1{
  background-color: #EF8775!important;
  border-color: #EF8775!important;
}
.area2{
  background-color: #54B179!important;
  border-color: #54B179!important;
}
.area3{
  background-color: #FF83A6!important;
  border-color: #FF83A6!important;
}
.area4{
  background-color: #6291CC!important;
  border-color: #6291CC!important;
}
.area5{
  background-color: #F1B45F!important;
  border-color: #F1B45F!important;
}
.category{
  color: var(--main-color);
}
.category1{
  border-color: #EF8775!important;
  color: #EF8775!important;
}
.category2{
  border-color: #54B179!important;
  color: #54B179!important;
}
.category3{
  border-color: #FF83A6!important;
  color: #FF83A6!important;
}
.category4{
  border-color: #6291CC!important;
  color: #6291CC!important;
}
.category5{
  border-color: #F1B45F!important;
  color: #F1B45F!important;
}
.spot-list .coupon,
.spot .coupon{
  background-color: color-mix(in srgb, var(--sys-color) 50%, transparent)!important;
  border-color: var(--sys-color)!important;
  color: var(--white)!important;
  width: auto!important;
  min-height: auto!important;
  margin: 0!important;
}
.spot-list .gettime,
.spot .gettime{
  border-color: var(--sys-color)!important;
  color: var(--fc1)!important;
}
.spot-list .pt{
  border-color: #ffc402;
}
.spot-list .pt::before{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #ffc402;
  border-radius: 50%;
  content: "P";
  width: 1.4rem;
  height: 1.4rem;
  margin-right: 0.5rem;
  font-size: 1.0rem;
  font-weight: 700;
  color: #fff;
}
.spot-list li.sumi::before{
  position: absolute;
  background: #D9D9D9;
  font-family: var(--msr);
  content: "\e5ca";
  width: 2.3rem;
  height: 2.0rem;
  left: 0.0rem;
  top: 0;
  padding-left: 0.2rem;
  font-size: 1.0rem;
  font-variation-settings: 'wght' 700, 'opsz' 20;
  color: #fff;
  clip-path: polygon(0 0, 100% 0, 0 100%);
  z-index: 2;
}


/*====================================================================
　地点詳細画面
====================================================================*/
.spot{
  background: #fff;
  border-radius: 2.0rem;
  width: calc(100% - 4rem);
  min-height: calc(100dvh - 22rem);
  padding: 1.0rem 0 2rem;
  margin: auto;
  box-shadow: 0 0.5rem 0.8rem rgba(147, 147, 147, 0.2);
}
.spot:has(.spot-img){
  padding: 0 0 2rem;
}
.spot .pt{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: baseline;
  margin: -1.5rem auto 2rem;
  font-size: 2.0rem;
  font-weight: 700;
  color: var(--fc1);
  line-height: 1;
}
.spot .pt small{
  font-size: 1.4rem;
}
.spot .pt::before{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #ffc402;
  border-radius: 50%;
  content: "P";
  width: 2rem;
  height: 2rem;
  top: -0.2rem;
  margin-right: 0.5rem;
  font-size: 1.4rem;
  color: var(--fc2);
}
.spot-img img{
  position: relative;
  border-radius: 2.0rem 2.0rem 0 0;
}
.spot .spot-name{
  padding: 1.5rem;
  font-size: 2.0rem;
  font-weight: 700;
  color: var(--main-color);
  text-align: center;
}
.spot .category{
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  margin: 0 auto 2rem;
  padding: 0 2rem;
}
.spot .category span{
  display: flex;
  justify-content: center;
  align-items: center;
  border: color-mix(in srgb, var(--main-color) 50%, transparent) solid 0.1rem;
  border-radius: 0.5rem;
  padding: 0.2rem 1rem;
  font-size: 1.2rem;
  font-weight: 500;
  color: #fff;
  word-break: keep-all;
}
/* .spot .category span:nth-of-type(1){
  border-color: var(--middle-gray);
} */
.spot-detail {
  background: var(--pale);
  border-radius: 1.3rem;
  margin: 0 auto 2rem;
  padding: 1rem;
  width: 29.5rem;
  text-align: left;
}
.spot-detail table{
  box-sizing: border-box;
  border-collapse: collapse;
  width: 100%;
}
.spot-detail tr + tr{
  border-top: var(--light-gray) solid 0.1rem;
}
.spot-detail th,
.spot-detail td {
  box-sizing: border-box;
  word-break: break-all;
  padding: 1em 0;
}
.spot-detail th {
  width: 6em;
  text-align: center;
  color: var(--middle-gray);
  font-size: 1.2rem;
  font-weight: 400;
}
.spot-detail td{
  line-height: 1.2;
}
.spot-detail td span{
  display: inline-block;
  margin-left: 0.5em;
  font-size: 1.1em;
}
.spot-detail td a{
  color: var(--dark-gray);
  text-decoration: none;
}
.spot-detail td a.g-map{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 10vw;
  margin-top: 1rem;
  padding: 0.5rem 1.5rem 0.3rem;
  color: var(--middle-gray);
  line-height: 1;
}
.spot-detail td a.g-map::after{
  position: relative;
  font-family: var(--ms);
  content: "\e89e";
  margin-left: 0.5rem;
}
.spot-trivia{
  padding: 2rem;
  line-height: 1.7;
}
.spot-trivia:empty{
  display: none;
}
.shop_coupon{
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.shop_coupon h2{
  margin-bottom: 0;
}
.shop_coupon .coupon_data .coupon_img{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 2rem;
}
.shop_coupon .coupon_data .coupon_img.sumi img{
  animation: grayscale 0.5s 1.2s linear both
}
.shop_coupon .coupon_data .coupon_img.sumi::after{
  position: absolute;
  content: "利用済み";
  background: rgba(255,255,255,0.8);
  border: var(--red) solid 0.3rem;
  border-radius: 0.5rem;
  padding: 0.5rem;
  font-size: 2.6rem;
  font-weight: 700;
  color: var(--red);
  animation: scale-down 0.5s 1.2s ease-in-out both;
}
.shop_coupon:has(.sumi) .coupon-btn{
  display: none;
}


/*====================================================================
  共通クーポン
====================================================================*/
.coupon{
  /* text-align: center; */
}
.coupon_data{
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 1.0rem;
}
.coupon_data .shop_name{
  font-size: 2.0rem;
}
.coupon .sumi img{
  animation: grayscale 0.5s 1.2s ease-in-out both;
}
.coupon .sumi .coupon_name{
  z-index: 2;
}
.coupon .sumi .coupon_img:after{
  position: absolute;
  content: "利用済み";
  background: rgba(255,255,255,0.8);
  border: var(--red) solid 0.3rem;
  border-radius: 0.5rem;
  padding: 0.5rem;
  font-size: 2.6rem;
  font-weight: 700;
  color: var(--red);
  animation: scale-down 0.5s 1.2s ease-in-out both;
}
.coupon dl{
  margin: 1em auto 3rem;
}
.coupon:has(.coupon-result) dl{
  margin: 1em auto 0rem;
}
.coupon dl.shop-name{
  width: 100%;
  margin: 1em 0 0;
}
.coupon form dt,
.coupon dl.shop-name dt{
  display: flex;
  align-items: baseline;
  padding: 0.5em 0;
  font-size: 1.4rem;
  font-weight: 700;
}
.coupon form dt small{
  margin-left: 0.5rem;
  font-size: 1.0rem;
  word-break: break-all;
}
.coupon form * + dt{
  margin-top: 2.5rem;
}
.coupon form dd,
.coupon dl.shop-name dd {
  /* margin-top: 0.5rem; */
  text-align: left;
  font-size: 2.0rem;
}
.coupon form dd label{
  font-size: 1.4rem;
}
.coupon-btn label {
  display: block;
  margin-top: 1rem;
  text-align: center;
  font-weight: 700;
}
.coupon-btn .caution {
  background: var(--pale);
  border-radius: 1.3rem;
  width: 28.8rem;
  padding: 2rem;
  margin: 0rem auto 1rem;
  text-align: left;
}
.coupon-result {
  background: var(--pale);
  border-radius: 1.3rem;
  width: 28.8rem;
  padding: 2rem;
  margin: 2rem auto 0;
  text-align: center;
}
.coupon-result dt{
  color: var(--dark-gray);
  font-weight: 700;
}
.coupon-result dd + dt{
  margin-top: 1rem;
}
.coupon-result dd{
  font-size: 1.8rem;
}

.coupon .spot-list{
  display: block;
  padding-bottom: 0;
  margin-top: 4.0rem;
}
.coupon .spot-list ul{
  padding: 0;
  text-align: left;
}
.coupon .coupon-btn{
  margin-bottom: 3rem;
}

/*====================================================================
　履歴
====================================================================*/
.history{
  
}
.history table{
  border-collapse: collapse;
  width: 100%;
}
.history tr{
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  gap: 1.0rem;
  border-top: var(--border1);
  width: 100%;
}
.history th{
  max-width: 6.0rem;
  padding: 1.2rem 0;
  font-weight: 500;
  color: var(--middle-gray);
}
.history td{
  padding: 1rem 0;
}
.history td:nth-of-type(1){
  width: calc(100% - 2rem - 6.0rem);
  margin-right: auto;
  font-size: 1.6rem;
}
/* .history td:last-of-type{
  margin-left: auto;
} */
.history td:last-of-type span{
  background: var(--main-color);
  border-radius: 0.5rem;
  min-width: 5.2rem;
  margin-right: 1rem;
  padding: 0.2rem 0.5rem;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;;
}
.history td:last-of-type span.unregistered{
  /* background: var(--red); */
  background: #fff;
  border: var(--red) solid 0.1rem;
  color: var(--red);
}
.history td:last-of-type span.unredeemed{
  background: var(--pink2);
}
.history td:last-of-type span.sumi{
  background: var(--middle-gray);
}
.history td:last-of-type span.hazure{
  background: color-mix(in srgb, var(--blue) 50%, #fff 50%);
  background: #fff;
  border: var(--light-gray) solid 0.1rem;
  color: var(--light-gray);
}
.history td .button{
  min-height: auto;
  padding: 0.8rem 0.5rem 0.5rem;
  font-size: 1.4rem;
  line-height: 1;
}
.history td .button.unregistered{
  background-color: var(--red);
  background-color: #fff;
  border: var(--red) solid 0.1rem;
  color: var(--red);
}
.history td .button.unredeemed{
  /* background-color: var(--pink2); */
  background-color: #fff;
  border: var(--pink2) solid 0.1rem;
  color: var(--pink2);
}

.history li {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: baseline;
  padding: 0 0 0.5rem;
  font-weight: 700;
}
.history li + li{
  border-top: 0.1rem dotted #999;
  padding-top: 0.5rem;
}
.history li span {
  display: block;
}
.history li .history-date {
  font-weight: 500;
  color: var(--middle-gray);
}
.history li .history-pt{
  color: var(--sys-color);
  font-size: 2.0rem;
}
.history li .history-ticket{
  color: var(--black);
  font-size: 1.6rem;
  font-weight: 500;
}
.history li .history-pt small{
  font-size: 1.6rem;
}
.history li .history-shop{
  color: var(--black);
  font-size: 1.6rem;
  font-weight: 500;
}
.history li .history-amount{
  color: var(--black);
  font-size: 1.8rem;
  font-weight: 500;
}
.history .no-history {
  margin: 0 auto;
  font-size: 1.8rem;
  color: var(--middle-gray);
  font-weight: 700;
  text-align: center;
}

/*====================================================================
　トピックス設定
====================================================================*/
.topics_list ul{
  margin: 0 auto 3rem;
}
.topics_list li{
  position: relative;
}
.topics_list li + li{
  border-top: var(--border1);
  padding-top: 1.5rem;
}
.topics_list li a{
  position: relative;
  display: block;
  text-align: left;
  padding: 0rem 3rem 1.5rem 0;
  text-decoration: none;
  color: var(--dark-gray);
}
.topics_list li a::after{
  position: absolute;
  font-family: var(--ms);
  content: "\e5cc";
  font-weight: 400;
  right: 0;
  top: calc(50% - 1rem);
  color: var(--main-color);
  font-size: 2.3rem;
}
.topics_list h3,
.topics_datail h3{
  background: var(--pale);
  padding: 0.5rem;
  margin-bottom: 2rem;
}
.topics_list span{
  color: #aaa;
}
.topics_list p{
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.topics_datail div.date{
  color: #aaa;
  text-align: left;
}
.topics_datail div.note{
  text-align: left;
  margin-bottom: 2rem;
  word-wrap: break-word;
  word-break: break-all;
  line-height: 1.8;
}


/*====================================================================
　フォーム設定
====================================================================*/
.form dl{
  margin: 1em auto;
}
.form dt {
  display: flex;
  align-items: baseline;
  padding: 0.5em 0;
  font-weight: 700;
}
.form dt small{
  margin-left: 0.5rem;
  font-size: 1.0rem;
  word-break: break-all;
}
.form * + dt{
  margin-top: 2rem;
}
.form dd {
  margin-top: 0.5rem;
}
.form dd.flex,
.form dd.flex50{
  display: flex;
  flex-wrap: wrap;
}
.form dd.flex label {
  margin-right: 2rem;
}
.form dd.flex50 label {
  width: 50%;
}
.form dd label {
  display: flex;
  align-items: center;
  margin-bottom: 0.5rem;
}
.required {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  background: var(--main-color);
  border-radius: 0.5rem;
  padding: 0.3rem 0;
  margin-left: 1rem;
  min-width: 3.6rem;
  max-height: 2.1rem;
  color: var(--white);
  font-size: 1.1rem;
  line-height: 1;
  word-break: keep-all;
}
.prize-name {
  margin: 2rem auto;
  font-size: 2.2rem;
  font-weight: 700;
  text-align: center;
  color: var(--main-color);
}
.form .caution{
  background: var(--pale);
  border-radius: 1.3rem;
  margin: 2rem auto ;
  padding: 1rem;
  width: 29.5rem;
  text-align: left;
  font-size: 1.3rem;
}
.form .caution li{
  font-size: 1.2rem;
}
.form_comp{
  text-align: center;
}
.form_comp p{
  margin: 2rem auto;
}
.form_comp p strong{
  font-size: 1.6rem;
}

input[type="radio"] {
  appearance: none;
  position: relative;
  background: #fff;
  border: var(--light-gray) solid 0.1rem;
  border-radius: 50%;
  width: 2rem;
  min-width: 2rem;
  height: 2rem;
  margin-right: 0.5rem;
  vertical-align: middle;
}
input[type="radio"]:checked {
  border-color: var(--main-color);
}
input[type="radio"]:checked:before {
  position: absolute;
  display: block;
  content: "";
  background: var(--main-color);
  border-radius: 50%;
  width: 1rem;
  height: 1rem;
  left: calc(50% - (1rem / 2));
  top: calc(50% - (1rem / 2));
}
label input[type="radio"]{
  display: none;
}
label:has(input[type="radio"]){
  display: flex;
  justify-content: center;
  align-items: center;
  border: var(--light-gray) solid 0.1rem;
  border-radius: 0.5rem;
  width: 9.1rem;
  height: 3.4rem;
  margin-right: 0.7rem!important;
}
label:has(input[type="radio"]:checked){
  background: var(--main-color);
  border: var(--main-color) solid 0.1rem;
  color: #fff;
}
input[type="checkbox"] {
  appearance: none;
  position: relative;
  background: #fff;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 0.5rem;
  width: 2rem;
  min-width: 2rem;
  height: 2rem;
  margin-right: 0.5rem;
  vertical-align: middle;
}
input[type="checkbox"]:checked {
  background: color-mix(in srgb, var(--main-color) 60%, transparent);
  border-color: color-mix(in srgb, var(--main-color) 60%, transparent);
}
input[type="checkbox"]:checked:before {
  position: absolute;
  display: block;
  background: #FFFFFF;
  content: "";
  left: 10%;
  top: 10%;
  width: 80%;
  height: 80%;
  clip-path: polygon(6% 70%, 15% 54%, 43% 70%, 81% 8%, 97% 19%, 50% 95%);
}

input[type="text"],
input[type="email"],
input[type="number"],
input[type="tel"],
input[type="password"],
textarea {
  appearance: none;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 0.5rem;
  min-height: 3.6rem;
  padding: 0.5rem;
  font-size: 1.6rem;
  width: 100%;
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
input:focus,
select:focus,
textarea:focus{
  box-sizing: border-box;
  outline: var(--blue) solid 0.2rem;
}
input[type="date"]:focus{
  outline: none
}
input[type="date"]{
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  border: none;
  font-size: 1.6rem;
  font-family: var(--main-font);
}
input[type="date"]::-webkit-calendar-picker-indicator{
  position: absolute;
  width: 100%;
  height: 3rem;
  right: -3.5rem;
  opacity: 0;
}
label:has(input[type="date"]){
  position: relative;
  display: inline-flex;
  width: fit-content;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 0.5rem;
  padding: 0.1rem 0.5rem;
}
label:has(input[type="date"]:focus){
  outline: var(--blue) solid 0.2rem;
}
label:has(input[type="date"])::before{
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: var(--middle-color);
  border-radius: 0.5rem;
  width: 3rem;
  height: 3rem;
  right: -3.5rem;
  font-family: var(--ms);
  content: "\e935";
  font-size: 2.0rem;
  font-weight: 300;
  color: #fff;
}
select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 0.5rem top 55%;
  background-size: 1.6rem 1.6rem;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 0.5rem;
  width: 100%;
  min-height: 3.6rem;
  padding: 0.5rem 2.5rem 0.5rem 0.5rem;
  font-size: 1.6rem;
  color: var(--black);
}
option:checked{
  background-color: var(--pale);
}
.birth_date select{
  box-sizing: border-box;
  width: 9.1rem;
  height: 3.4rem;
  margin-right: 0.7rem!important;
  text-align: center;
}
textarea {
  appearance: none;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 0.5rem;
  width: 100%;
}
textarea[disabled] {
  border-color: #ddd;
}
::placeholder {
  color: #999;
  font-size: 0.9em;
}
input#textPassword{
  border: none;
}
.amount{
  width: 50%!important;
  margin-right: 1rem;
}
.textPassword{
  position: relative;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 0.5rem;
  overflow: hidden;
}
.textPassword:has(input:focus){
  outline: var(--blue) solid 0.2rem;
}
#buttonEye {
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
  width: 10%;
  right: 0;
  top: 0;
}
#buttonEye.visibility::before{
  position: absolute;
  font-family: var(--ms);
  content: "\e8f4";
}
#buttonEye.visibility_off::before{
  position: absolute;
  font-family: var(--ms);
  content: "\e8f5";
}
.other_checked{
  display: none;
}
.form dd:has(#other:checked) .other_checked{
  display: block;
}


.questionnaire select{
  width: 100%;
}
.questionnaire input[type="radio"] {
  appearance: none;
  display: block;
  position: relative;
  background: #fff;
  border: var(--middle-gray) solid 0.1rem;
  border-radius: 50%;
  width: 2rem;
  min-width: 2rem;
  height: 2rem;
  margin-right: 0.5rem;
  vertical-align: middle;
}
.questionnaire input[type="radio"]:checked {
  border-color: var(--main-color);
}
.questionnaire input[type="radio"]:checked:before {
  position: absolute;
  display: block;
  content: "";
  background: var(--main-color);
  border-radius: 50%;
  width: 1rem;
  height: 1rem;
  left: calc(50% - (1rem / 2));
  top: calc(50% - (1rem / 2));
}
.questionnaire label:has(input[type="radio"]){
  display: flex;
  justify-content: flex-start;
  align-items: center;
  border: none;
  border-radius: 0;
  width: auto;
  height: auto;
  margin-right: 0.7rem!important;
}
.questionnaire label:has(input[type="radio"]:checked){
  background: none;
  border: none;
  color: var(--black);
}
.question{
  counter-reset: number;
}
.question dt::before{
  position: relative;
  counter-increment: number;
  content: "問" counter(number) "：";
  word-break: keep-all;
}
/*====================================================================
　参加時のご注意
====================================================================*/
.join_attention strong{
  font-size: 1.8rem;
}

.join_attention a{
  font-weight: 700;
}

.join_attention div{
  background: var(--pale);
  margin: 2rem 0 1rem;
  padding: 0.5rem;
}
.join_attention li{
  padding-left: 1em;
  text-indent: -1em;
  font-weight: 700;
  font-size: 1.4rem;
}
.join_attention li + li{
  margin-top: 0.5rem;
}
.join_attention div + ul li{
  font-size: 1.2rem;
  font-weight: normal;
}



/*====================================================================
よくある質問
====================================================================*/
.qanda dl{
  margin: 1rem auto 0;
}
.qanda dt:has(span){
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
  font-size: 1.6rem;
  font-weight: 700;
  text-align: left;
}
.qanda dt span{
  font-size: 2.0rem;
  font-weight: 700;
  color: var(--blue);
}
.qanda dd{
  margin-bottom: 3rem;
}
.qanda dd:has(span){
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}
.qanda dd span{
  font-size: 2.0rem;
  font-weight: 700;
  color: var(--red);
}
.qanda li{
  padding-left: 1em;
  text-indent: -1em;
}
.qanda h3{
  background: var(--main-color);
  border-radius: 0.8rem;
  padding: 0.5rem 1rem 0.4rem;
  text-align: center;
  color: #fff;
}
.qanda h4{
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  text-align: center;
}
.qanda h4::before,
.qanda h4::after{
  position: relative;
  background: var(--black);
  content: "";
  width: 3rem;
  height: 0.1rem;
}
.qanda #qr{
  background: var(--pale);
  border-radius: 0.8rem;
  padding: 2rem 0.8rem 0.1rem;
}
.qanda dd img{
  margin-top: 0.5rem;
}
.qanda ol{
  list-style-type: none;
  counter-reset: my-counter;
}
.qanda ol > li{
  position: relative;
  padding-left: 1.8rem;
  margin-top: 1rem;
}
.qanda ol > li::before{
  content: counter(my-counter);
  counter-increment: my-counter;
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: var(--main-color);
  border-radius: 50%;
  width: 1.4rem;
  height: 1.4rem;
  color: #fff;
  font-size: 1.2rem;
  font-weight: 500;
  top: 0.3rem;
  left: 0;
}
.qanda div{
  background: var(--pale);
  padding: 0.5rem;
}

/*====================================================================
　参加時のご注意
====================================================================*/
.join_attention strong{
  font-size: 1.6rem;
}
.join_attention a{
  font-weight: 700;
}
.join_attention div{
  background: var(--pale);
  margin: 2rem 0 1rem;
  padding: 1.0rem 0.5rem;
}
.join_attention li{
  padding-left: 1em;
  text-indent: -1em;
  font-weight: 700;
  font-size: 1.4rem;
}
.join_attention li + li{
  margin-top: 0.5rem;
}
.join_attention div + ul li{
  font-size: 1.2rem;
  font-weight: normal;
}


/*====================================================================
　FAQ
====================================================================*/
.faq .title{
  background: var(--red);
  padding: 1rem;
  margin-bottom: 1rem;
  font-size: 1.5rem;
  color: #fff;
  font-weight: 700;
  text-align: center;
}
.faq img {
  width: 100%;
  margin: 1rem 0;
}
.faq dt {
  margin: 0;
  padding: 1rem 0;
  padding-left: 1.25em;
  text-indent: -1.25em;
  color: #185195;
}
.faq dt strong {
  font-size: 1.8rem;
}
.faq dd  {
  border-bottom: 0.1rem dotted #999;
  margin: 0 0 1rem;
  padding-bottom: 1em;
  padding-left: 1.25em;
  text-indent: -1.25em;
}
.faq dd strong {
  font-size: 1.8rem;
  color: var(--red);
}
.faq ul {
  padding: 0.5rem 0 0.5rem 1em;
  text-indent: -1em;
}
.faq .title2{
  background: #006298;
  padding: 0.5rem;
  margin: 0.5rem 0;
  color: #fff;
}
.faq .midashi{
  background: var(--red);
  padding: 0.5rem;
  margin: 0.5rem 0;
  color: #fff;
  font-weight: 700;
}

/*====================================================================
　自動翻訳の設定方法
====================================================================*/
.translate h2{
  margin-top: 0!important;
}
.translate h3.title {
  background-color: #006298;
  color: #fff;
  text-align: center;
  padding: 0.5rem;
  margin-bottom: 3rem;
}
.translate img {
  display: block;
  margin: 0.5rem auto;
}
.translate ol.numb {
  list-style: none;
  counter-reset: number;
}
.translate ol.numb li {
  position: relative;
  padding-left: 2rem;
}
.translate ol.numb li:not(:last-of-type) {
  border-bottom: var(--dark-gray) dotted 0.2rem;
  padding-bottom: 2rem;
  margin-bottom: 3rem;
}
.translate ol.numb li::before {
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #006298;
  counter-increment: number;
  content: counter(number);
  top: 0.2em;
  left: 0;
  width: 1.8rem;
  height: 1.8rem;
  color: #fff;
  font-size: 0.7em;
  text-align: center;
  line-height: 1.5;
  font-weight: 700;
}
.translate ol.numb li div.box {
  margin: 0.5rem 0.5rem 0.5rem -1.5rem;
}
.translate ol.numb li img.inline {
  display: inline;
  width: 2em;
  margin: 0 0 -0.5rem;
}
.translate .siege{
  border: var(--black) solid 0.1rem;
  padding: 0.5rem;
}
.translate form{
  margin: 0 auto 2rem;
  text-align: center;
}
.eng{
  display: none;
}


/*====================================================================
　PCでアクセス時のエラー表示
====================================================================*/
@media screen and (min-width: 481px){
  html{
    font-size: 10px;
  }
  body{
    max-width: 750px;
    margin: auto;
  }
  main {
    max-width: 37.5rem;
    margin: auto;
  }
}
.view_pc .error{
  width: 90%;
  max-width: 500px;
  margin: 2rem auto;
}
.view_pc img{
  width: 150px;
  margin: 3rem auto;
}

/* LINEログイン */
.bt-line{
  background: #06c755;
  border-radius: 1.0rem;
  width: auto;
  max-width: none;
  padding: 0 0 0 5.4rem;
  font-family: var(--main-font);
  font-size: 2.0rem;
  font-weight: 500;
  line-height: 1;
  box-shadow: none;
}
.bt-line::before{
  background: url(../img/icon_line.svg) no-repeat center center/100% auto;
  content: "";
  width: 4rem;
  height: 4rem;
  position: absolute;
  top: 50%;
  left: 0.7rem;
  transform: translateY(-50%);
}
.bt-line span {
  width:100%;
  display: block;
  border-left: 1px rgba(0,0,0,0.08) solid;
  padding: 2.0rem 4rem;
}


.popup {
  display: none;
  position: fixed;
  background: rgba(0, 0, 0, 0.8);
  width: 100%;
  height: 100%;
  padding: 2rem;
  top: 0;
  left: 0;
  z-index: 1500;
}
.popup .inner {
  background: #fff;
  border-radius: 1rem;
  padding: 2rem;
  text-align: center;
}
.popup .title {
  font-size: 1.8rem;
  font-weight: 700;
}
.popup .flex{
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  margin: 2rem auto 0;
}
.popup .button {
  max-width: 40%;
  margin: 0;
}
.popup_close{
  background: var(--white);
  border: var(--sys-color) solid 0.1rem;
  color: var(--sys-color);
}


.clock-box {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  margin: 2rem auto 2rem;
}
.clock-box p {
  font-size: 2.0rem;
  color: var(--black);
  font-weight: 300;
}