@charset "utf-8";
@import url("reset.css");
@import url('https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@400;500;600;700;800&family=Zen+Kaku+Gothic+New&family=Noto+Sans:ital,wght@0,100..900;1,100..900&family=Noto+Serif:ital,wght@0,100..900;1,100..900&display=swap');

:root {
	--main-color: #a51a29;
	--main-color-rgb: 165, 26, 41;
	--bg-color: #f7f0e8;
	--primary-font-set: source-han-sans-cjk-ja, sans-serif;
	--primary-text-color: #333333;
	--width_res: min(5vw, 100px);
	--easing: cubic-bezier(.2, 1, .2, 1);
	--transition02s: .2s var(--easing);
	--transition05s: .5s var(--easing);
	--transition08s: .8s var(--easing);
}


/* Common
---------------------------------------------------------- */
html,body{
	width: 100%;
	margin: 0;
	padding: 0;
}

html{
	scroll-behavior: smooth;
	font-size: clamp(15px, 13.3px + 0.24vw, 18px);
}

body{
	height: 100vh;
	font-family: var(--primary-font-set);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.8;
	letter-spacing: 0;
	color: var(--primary-text-color);
	overflow-x: hidden;
	/* 1. グラデーション（上層） */
	background: transparent; 
}
body::before {
	content: "";
	position: fixed; /* 画面に対して固定 */
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	z-index: -1; /* コンテンツ（.container）の裏側に配置 */
	
	/* 1. グラデーション（上層） */
	background-image: linear-gradient(
		180deg, 
		rgba(241, 90, 36, 1) 0%, 
		rgba(224, 169, 59, 1) 50%, 
		rgba(224, 169, 59, 0) 100% /* 黄色の透明版にして、さらに滑らかに濁りなく繋がるようにしました */
	);
	/* 2. 背景色（下層） */
	background-color: #f7f0e8;
	
	background-repeat: no-repeat;
	background-size: cover; /* 画面全体を覆うように引き伸ばす */
}



/* Usually
---------------------------------------------------------- */
/* Flex */
.flexbox {
	display: -webkit-box;
	display: flex;
	flex-wrap: wrap;
}

/* Inner */
.inner{
	margin: auto;
	padding: 30px;
}

/* a img input */
a,a img,input[type="button"],button,
input[type="submit"],
input[type="reset"],
input[type="image"]{
	transition: 0.2s ease-out;
}

a:hover img,
input[type="button"]:hover,
input[type="submit"]:hover,
input[type="reset"]:hover,
input[type="image"]:hover{
	filter:alpha(opacity=50);
	-moz-opacity: 0.5;
	opacity: 0.5;
}

a{
	color: var(--main-color);
	font-weight: 500;
	text-decoration: underline;
	word-break: break-all;
}
a:hover{
	color: var(--sec-color);
	text-decoration: none;
}
a[href^="tel:"] {
	color: inherit;
	text-decoration: none;
	pointer-events: none;
}

/* Img */
img{
	max-width: 100%;
	height: auto;
}
svg, object { fill: currentColor;}

/* Text */
h2{
	margin: 80px 0 50px;
	font-size: 1.7rem;
}
h3{
	margin: 50px 0 30px;
	font-size: 1.4rem;
}
h4{
	margin: 50px 0 20px;
	font-size: 1.3rem;
}
h5{
	margin: 50px 0 20px;
	font-size: 1.2rem;
}
h6{
	margin: 50px 0 20px;
	font-size: 1.1rem;
}
h2,h3,h4,h5,h6,dt{ font-weight: 500;}

.copy{
	margin: 40px 0 30px;
	font-size: 1.2rem;
	text-align: center;
}

p,ul,dl,table,dl{
	font-size: 1rem;
	line-height: 1.8;
}

p,ul,dl{ margin: 15px 0;}

ul li{
	margin: 0 0 0 30px;
	list-style: disc;
}

ul.anno li{
	margin-left: 1rem;
	list-style: none;
}
ul.anno li:before{
	content: "※";
	margin-left: -1em;
}

.note{ font-size: 0.9rem;}

/* Dl */
dt{
	font-size: 1.1rem;
	font-weight: 500;
}
dd{ margin: 10px 0 10px 1.2rem;}

/* Diplay none */
.pc{ display: block;}
.sp{ display: none;}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	a[href^="tel:"] {
		color: var(--sec-color);
		pointer-events: visible;
	}
	h2{
		margin: 30px 0 20px;
		font-size: 1.5rem;
	}
	h3{
		margin: 30px 0 20px;
		font-size: 1.3rem;
	}
	h4{ font-size: 1.2rem;}
	h5{ font-size: 1.1rem;}
	h6{ font-size: 1.1rem;}
	p,ul,ol,dl{
		margin: 15px 0;
		line-height: 1.6;
	}
	.pc{ display: none;}
	.sp{ display: block;}
}


/* effect
---------------------------------------------------------- */
.fadeIn {
	opacity: 0;
	transform: translateY(50px); /* translate(0, 50px) よりこちらの方がブラウザの処理が軽くなります */
	transition: opacity 1.2s cubic-bezier(0.25, 1, 0.5, 1), transform 1.2s cubic-bezier(0.25, 1, 0.5, 1); /* 1.2秒かけて少し上品に戻るイージングを設定 */
	will-change: opacity, transform; /* アニメーションのチラつき防止 */
}

/* 左右からの移動方向の上書き */
.fadeIn.right { 
	transform: translateX(50px); 
}
.fadeIn.left { 
	transform: translateX(-50px); 
}

/* 画面内に入った時に付与されるクラス */
.fadeIn.active {
	opacity: 1;
	transform: translate(0, 0); /* XもYも0に戻す */
}


/* Btn
---------------------------------------------------------- */
.link_btn{
	position: relative;
	display: block;
	padding: 20px 1rem;
	padding-right: 4rem;
	text-decoration: none;
	color: #fff;
	font-weight: 600;
	text-align: left;
	background-color: var(--main-color);
	border-radius: 20px;
	transition: all .2s;
}
.link_btn::after{
	content: '';
	position: absolute;
	top: calc(50% - 10px);
	right: 20px;
	width: 20px;
	height: 20px;
	background: url('../img/arrow_w.svg') no-repeat center;
}

.link_btn:hover{
	color: var(--main-color);
	background-color: var(--bg-color);
	text-decoration: none;
}
.link_btn:hover::after{ background: url('../img/arrow_r.svg') no-repeat center;}

.more{
	margin: 20px auto;
	text-align: center;
}
.more .link_btn{
	display: inline-block;
	max-width: 100% !important;
	margin: 0 10px;
}

.back{ margin: 50px 0 0 0;}
.back .link_btn{
	min-width: inherit;
	margin: 0 !important;
	padding: 0 !important;
	padding-left: calc(40px + 1rem) !important;
	background-color: var(--bg-main) !important;
	color: var(--t-main);
	font-size: 0.9rem;
}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	.inner{ padding: 10px 15px;}
	.link_btn{ min-width: inherit;}
	.more{ margin: 20px 0;}
	.more .link_btn{ min-width: none;}
	.back{ margin-top: 30px;}
}


/* container
---------------------------------------------------------- */
.container{
	max-width: 900px;
	margin: 0 auto;
	background-color: #fff;
	outline: none;
	scroll-margin-top: 100px; 
}

main{ padding: 0 var(--width_res);}

section{
	margin: 50px 0;
	border-radius: 30px;
	background-color: var(--bg-color);
}

h2.sec_h2{
	position: relative;
	padding: 30px;
	margin: 0;
	background-color: var(--main-color);
	border-radius: 30px 30px 0 0;
	color: #fff;
	font-size: 1.8rem;
	font-weight: 700;
	line-height: 1.4;
	text-align: center;
	overflow: hidden;
}
h2.sec_h2::after{
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: url("../img/h2_bg.svg") no-repeat top -100px center / cover;
}

h2.sec_h2 span{
	position: relative;
	z-index: 3;
}

main h3{
	margin: 25px 0;
	padding: 0 0 0 15px;
	border-left: 6px solid var(--main-color);
	color: var(--main-color);
	font-size: 1.1rem;
	font-weight: 600;
	line-height: 1.4;
}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	.container{ scroll-margin-top: 80px;}
	main{ padding: 20px var(--width_res);}
	section{ margin: 20px 0;}
	h2.sec_h2{
		padding: 15px 30px;
		font-size: 1.4rem;
	}
	main h3{ margin: 20px 0 15px;}
}


/* intro
---------------------------------------------------------- */
.intro{
	background-image: linear-gradient(
		180deg, 
		rgba(241, 90, 36, 1) 0%, 
		rgba(224, 169, 59, 1) 50%, 
		rgba(224, 169, 59, 0) 100% /* 黄色の透明版にして、さらに滑らかに濁りなく繋がるようにしました */
	);
}

.intro_h1{
	position: relative;
	width: 100%;
	margin: 0 0 50px 0;
}
.intro_h1 h1{ position: absolute;}

.about{
	margin: 100px 0 40px;
	padding: 30px;
	background-color: #fff;
	border-radius: 40% 40% 30px 30px;
}
.about h2{ margin: -100px 0 0;}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	.intro_h1{
		display: flex;
		align-items: center;
		margin: 0;
	}
	.about{
		margin: 30px 0 40px;
		padding: 20px;
		border-radius: 20% 20% 30px 30px;
	}
	.about h2{ margin: -30px 0 0 0;}
}


/* menu
---------------------------------------------------------- */
.menu{
	margin: 30px 0;
	font-size: 0.8rem;
	line-height: 1.2;
	justify-content: center;
}

.menu li{
	width: 48%;
	margin: 1%;
	list-style: none;
}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	.menu,.menu ul{ margin: 0;}
	.menu li{ font-size: 0.9rem;}
	.menu li a{
		padding: 15px;
		text-align: center;
	}
	.menu li a::after{ display: none;}
}


/* present
---------------------------------------------------------- */
.present{
	margin: 80px 0 30px;
	padding: 30px;
	background-color: #fce8c5;
	border: 4px solid var(--main-color);
	border-radius: 30px;
}
.present h2{ margin: -80px 0 -40px;}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	.present{
		margin: 30px 0;
		padding: 0;
	}
	.present h2{ margin: -60px 0 -30px;}
}


/* flow
---------------------------------------------------------- */
.flow_box{
	position: relative;
	margin: 20px 0 50px;
}
.flow_box img{
	display: block;
	width: 100%;
	max-width: 600px;
	margin: auto;
}

.flow_num{
	position: absolute;
	top: -20px;
	left: 50px;
	z-index: 10;
	padding: 10px 20px;
	border-radius: 20px 20px 0 20px;
	background-color: var(--main-color);
	color: #fff;
	font-size: 1.1rem;
	font-weight: 600;
	line-height: 1;
	display: flex;
	align-items: baseline;
}
.flow_num span{ font-size: 2.8rem;}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	.flow_num{ left: 10px;}
}


/* prize
---------------------------------------------------------- */
.prize_box{ margin: 50px 0 30px;}

.prize_img{
	position: relative;
	width: 50%;
	line-height: 0;
}
.prize_img img{ border-radius: 30px 0 0 30px;}
.prize_num{
	position: absolute;
	top: -30px;
	right: -50px;
	padding: 10px 20px;
	border-radius: 20px 20px 20px 0;
	background-color: var(--main-color);
	color: #fff;
	font-size: 1.1rem;
	font-weight: 600;
	line-height: 1;
	display: flex;
	align-items: baseline;
}
.prize_num span{ font-size: 2.8rem;}

.prize_box dl{
	display: flex;
	flex-direction: column;
	justify-content: center;
	width: 50%;
	margin: 0;
	padding: 40px 30px;
	background-color: #fff;
	border-radius: 0 30px 30px 0;
}
.prize_box dl dt{
	margin: 0;
	font-size: 1.4rem;
	font-weight: 700;
	line-height: 1.4;
}
.prize_box dl dd{
	margin: 20px 0 0 0;
	font-size: 1rem;
	line-height: 1.5;
}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	.prize_box{
		margin: 20px 0 30px;
		flex-direction: column;
	}
	.prize_img,.prize_box dl{ width: 100%;}
	.prize_img img{ border-radius: 30px 30px 0 0;}
	.prize_box dl{
		padding: 30px;
		border-radius: 0 0 30px 30px;
	}
	.prize_num{
		top: -20px;
		right: -10px;
		font-size: 1rem;
	}
	.prize_num span{ font-size: 1.6rem;}
}

/* store
---------------------------------------------------------- */
.store_li{
	margin: 20px 0 0 0;
	padding: 10px 25px;
	background-color: #fff;
	border-radius: 30px;
}
.store_li p{ font-size: 1.0rem;line-height: 2.4rem;}


/* notice
---------------------------------------------------------- */
.notice p,.notice ul{ font-size: 0.9rem;}
.red{ color: var(--main-color);}


/* banner
---------------------------------------------------------- */
.banner{ text-align: center;}


/* pagetop
---------------------------------------------------------- */
.pagetop{
	padding: 30px;
	color: var(--main-color);
	font-size: 0.9rem;
	font-weight: 600;
	text-align: center;
	line-height: 1;
	cursor: pointer;
}
.pagetop span{
	position: relative;
	display: inline-block;
	width: 20px;
	height: 20px;
	margin-right: 10px;
	background-color: var(--main-color);
	border-radius: 50%; /* 丸にする */
	vertical-align: middle;
}

.pagetop span::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 4px;
	height: 4px;
	border-top: 2px solid #ffffff; /* 矢印の上の線 */
	border-right: 2px solid #ffffff; /* 矢印の右の線 */
	transform: translate(-50%, -20%) rotate(-45deg);
}


/* floating_bn
---------------------------------------------------------- */
.floating_bn{
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	z-index: 300;
	max-width: 900px;
	margin: auto;
	padding: 10px;
}

.floating_bn a{
	display: block;
    padding: 15px 2rem;
    text-align: center;
	text-decoration: none;
	color: #fff;
	font-size: 1.3rem;
	background: linear-gradient(
    to bottom,
    #dc4a2f, 
    var(--main-color), 
    rgb(245, 86, 38) /* ホバー時の明るい色など */
	);
	/* 背景サイズを縦に200%にする */
	background-size: 100% 200%;
	background-position: top; /* 初期位置 */
	
	border: 1px solid #fff;
	border-radius: 3rem;
	transition: background-position 0.5s; /* 位置の移動をアニメーション */
}
.floating_bn a span{
	position: relative;
	padding-right: 3rem;
}
.floating_bn a span::after{
	content: '';
	position: absolute;
	top: calc(50% - 8px);
	right: 0;
	width: 16px;
	height: 16px;
	background: url(../img/arrow_w.svg) no-repeat center;
}

.floating_bn a:hover{
	background-position: bottom;
}


/* footer
---------------------------------------------------------- */
footer{
	position: relative;
	width: 100%;
	margin: 0;
	padding: 30px var(--width_res) 100px;
	background-color: var(--main-color);
	color: #fff;
	font-size: 0.8rem;
	text-align: center;
}

footer h3{ margin: 0;}

@media screen and (max-width: 768px) and  (orientation: portrait) {
	footer{ padding: 20px 20px 100px;}
}