@charset "utf-8";
@import url('https://fonts.googleapis.com/css2?family=Yu+Gothic:wght@400;500;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@200;400;500;700&display=swap');

/* ========================================
   Variables
======================================== */
:root {
	--main-width: 410px;
	--main-bottom-padding: 70px;
	--color-key: rgb(133, 177, 100);
	--color-btn: rgb(255, 153, 0);
	--color-btn-hover: rgb(255, 173, 50);
	--font-mincho: "Noto Serif JP", "Source Han Serif", "源ノ明朝", "ヒラギノ明朝 Pro W3", "メイリオ", serif;
}

/* ========================================
   Base Styles
======================================== */
img {
	pointer-events: none;
}

body {
	font-family: "Yu Gothic", "游ゴシック", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif;
	font-weight: 400;
	line-height: 1.8;
}

/* ========================================
   Layout Components
======================================== */
.kv {
	display: none;
}

.sec {
	padding: 50px 20px;
}

.container-main {
	background-image: url("../img/yuta_tachibana/bg.webp");
	background-color: rgba(255, 255, 255, 0.88);
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	background-blend-mode: overlay;
	font-feature-settings: "palt";
	letter-spacing: 0.06em;
	position: relative;
	width: 100%;
	min-height: 100vh;
	padding: 0 0 var(--main-bottom-padding);
	overflow: hidden;
}

/* スマホ向けの背景画像最適化 */
@media screen and (max-width: 767px) {
	.container-main {
		background-attachment: scroll;
		background-size: cover;
		image-rendering: -webkit-optimize-contrast;
		image-rendering: crisp-edges;
	}
}

/* ========================================
   Desktop Styles
======================================== */
@media screen and (min-width: 768px) {
	.kv {
		display: block;
		position: fixed;
		width: 100%;
		height: 100%;
		top: 0;
		left: 0;

		& .-left,
		& .-right {
			position: absolute;
			top: 0;
			height: 100%;
		}

		& .-left {
			background-image: url("../img/yuta_tachibana/kv.webp");
			background-color: rgba(0, 0, 0, 0.3);
			background-position: center top;
			background-repeat: no-repeat;
			background-size: cover;
			background-blend-mode: overlay;
			left: 0;
			width: calc((100% - var(--main-width)) * 0.65);

			& .-title {
				position: absolute;
				left: 50%;
				top: 50%;
				transform: translate(-50%, -50%);
				width: 70%;
				max-width: 500px;
			}
		}

		& .-right {
			background-image: url("../img/yuta_tachibana/bg.webp");
			background-position: center top;
			background-repeat: no-repeat;
			background-size: cover;
			right: 0;
			width: calc((100% - var(--main-width)) * 0.35);
		}
	}

	.sec {
		padding: 70px 30px;
	}
	
	.container-main {
		background-attachment: fixed;
		background-size: contain;
		padding: 0 0 var(--main-bottom-padding);
		margin: 0 0 0 calc((100% - var(--main-width)) * 0.65);
		width: var(--main-width);
	}
}

/* ========================================
   Header
======================================== */
header {
	background-image: url("../img/yuta_tachibana/kv.webp");
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	height: 700px;
	position: relative;

	& .-logo {
		position: absolute;
		left: 0;
		top: 0;
		display: block;
		width: 100%;
		padding: 10px 40px;

		&::before {
			content: '';
			position: absolute;
			top: 0;
			left: 0;
			width: 100%;
			height: 100%;
			background-color: rgb(134, 177, 100);
			mix-blend-mode: multiply;
			z-index: 0;
		}

		& img {
			vertical-align: bottom;
			position: relative;
			z-index: 1;
		}
	}

	& .-title {
		width: 78%;
		position: absolute;
		bottom: 10%;
		left: 50%;
		height: fit-content;
		transform: translateX(-50%);
	}
}

/* ========================================
   Footer
======================================== */
footer {
	padding: 20px;
	text-align: center;
	font-size: 14px;

	& a {
		color: #222222;
	}
}

/* ========================================
   Sections
======================================== */
.sec-about {
	position: relative;
	color: #fff;
	padding: 40px 25px;
	text-align: justify;

	&::before {
		content: '';
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background-color: rgb(134, 177, 100);
		mix-blend-mode: multiply;
		z-index: 0;
	}

	&>* {
		position: relative;
		z-index: 1;
	}
}

.sec-gelatoset {
	position: relative;

	& h2.-title,
	& .-subtitle {
		color: #000;
		font-family: var(--font-mincho);
		font-style: italic;
		text-align: center;
	}

	& h2.-title {
		font-size: 2.2rem;
	}

	& .-subtitle {
		font-size: 1.2rem;
	}

	& .-logo {
		position: absolute;
		left: -32px;
		top: 10px;
		width: 150px;
		z-index: -100;

		& img {
			width: 100%;
			height: 100%;
			object-fit: contain;
		}
	}

	& .-package {
		position: relative;

		& img {
			display: block;
			width: 90%;
			margin: 40px auto;
		}

		& .-remarks {
			font-size: 0.8em;
			position: absolute;
			left: 0;
			bottom: 0;
		}
	}

	& .-data {
		background-color: rgb(134, 177, 100);
		padding: 35px 20px;
		color: #fff;
		text-align: center;

		& .-title,
		& .-special {
			font-family: var(--font-mincho);
			font-size: 1.4rem;
		}

		& .-title {
			border-bottom: 1px solid #fff;
			padding-bottom: 20px;
			margin-bottom: 20px;
			font-style: normal;
			font-weight: 400;
		}

		& .-special {
			line-height: 1.5;

			& span {
				font-size: 0.8em;
			}
		}
	}

	.-period {
		font-weight: 700;
		margin: 30px 0;
		padding: 15px;
		border: 1px solid #fff;
	}

	& .-price,
	& .-price-tax {
		font-family: var(--font-mincho);
		font-style: italic;
		line-height: 1;
	}

	& .-price {
		font-size: 2rem;
		margin-bottom: 5px;

		& span {
			font-size: 0.7em;
		}
	}

	& .-price-tax {
		color: #f5ffee;
		font-size: 1.1rem;
		font-weight: 400;

		& span {
			font-size: 0.7em;
		}
	}
}

/* ========================================
   Flavor Section
======================================== */
.sec-flavor {
	& h2.-title {
		background-color: #47951f;
		color: #fff;
		font-family: var(--font-mincho);
		font-weight: 400;
		font-style: italic;
		line-height: 1;
		padding: 18px 20px;
		text-align: center;
	}

	& .-flavor {
		&.-maccya {
			margin-bottom: 40px;
		}
		&.-milk {
			margin-bottom: 60px;
		}
	}

	& h3.-title {
		margin-bottom: 30px;
	}
	& .-card {
		display: flex;
		flex-wrap: wrap;
		gap: 30px;
		justify-content: center;
		align-items: flex-start;

		& img {
			width: calc(50% - 15px);
			max-width: 200px;
			height: auto;
			object-fit: cover;
		}
	}

}


/* ========================================
   Profile Section
======================================== */
.sec-profile {
	position: relative;
	color: #fff;

	&::before {
		content: '';
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background-color: rgb(134, 177, 100);
		mix-blend-mode: multiply;
		z-index: 0;
	}

	&>* {
		position: relative;
		z-index: 1;
	}

	& .-img {
		vertical-align: bottom;
		margin-bottom: 35px;
	}

	& .-title {
		font-family: var(--font-mincho);
		font-weight: 200;
		font-size: 1.9rem;
		font-style: italic;
		line-height: 1;
		margin-bottom: 1em;
	}

	& .-name {
		font-family: var(--font-mincho);
		font-weight: 200;
		font-size: 2.2rem;
		margin-bottom: 1em;
		line-height: 1;

		& span {
			font-size: 0.4em;
		}
	}

	& .-explanation {
		text-align: justify;
		margin-bottom: 0;
		word-break: break-all;
	}
}

/* ========================================
   Buy Button
======================================== */
.btn-buy {
	position: fixed;
	left: 10px;
	bottom: 10px;
	width: calc(100% - 20px);
	z-index: 3;

	& a {
		background-color: var(--color-btn);
		border-radius: 8px;
		color: #fff;
		display: flex;
		justify-content: center;
		align-items: center;
		font-weight: 700;
		line-height: 50px;
		text-align: center;
		text-decoration: none;
		width: 100%;
		transition: 0.3s ease-in-out;

		&:hover {
			background-color: var(--color-btn-hover);
		}

		&::after {
			content: '';
			width: 11px;
			height: 11px;
			border-top: 3px solid #fff;
			border-right: 3px solid #fff;
			transform: rotate(45deg) translateY(-50%);
			position: absolute;
			top: 50%;
			right: 30px;
			border-radius: 1px;
		}
	}

	& .-yet {
		cursor: default;

		&:hover {
			background-color: var(--color-sub);
		}

		&::after {
			display: none;
		}
	}

	@media screen and (min-width: 768px) {
		left: calc(((100% - var(--main-width)) * 0.65) + 10px);
		width: calc(var(--main-width) - 20px);
	}
}

/* ========================================
   Animation
======================================== */
.animate__animated {
	animation-fill-mode: forwards;
	visibility: hidden;
}

/* ========================================
   Flavor Image Animation
======================================== */
.flavor-image-container {
	border-radius: 50%;
	position: relative;
	cursor: pointer;
	overflow: hidden;

	& .flavor-image-front {
		position: relative;
		z-index: 2;
		transition: transform 0.3s ease;
		vertical-align: bottom;
	}

	& .flavor-image-back {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		z-index: 1;
		transform: translateY(100%);
		transition: transform 0.5s ease;
		vertical-align: bottom;
		z-index: 3;
	}

	&.active .flavor-image-back {
		transform: translateY(0);
	}
}