@charset "utf-8";

/* ===== Layer order ===== */
@layer reset,
tokens,
base,
layout,
component,
page,
utility,
override;

/* ===== Tokens ===== */
@layer tokens {
	:root {
		--font-base: "Noto sans JP", sans-serif;
		--font-serif: "Noto Serif JP", serif;
	}
}

/* ===== Reset ===== */
@layer reset {
	*,
	*::before,
	*::after {
		box-sizing: border-box;
	}

	* {
		margin: 0;
	}

	:where(img, svg, video, canvas, audio, iframe, embed, object, picture) {
		display: block;
		max-width: 100%;
	}

	:where(img, video) {
		height: auto;
	}

	:where(ol, ul, menu) {
		list-style: none;
		padding: 0;
	}

	:where(button, input, select, textarea) {
		font: inherit;
		color: inherit;
		line-height: inherit;
		margin: 0;
		padding: 0;
		text-transform: none;
		background-color: transparent;
		background-image: none;
		outline: none;
		border: none;
	}
}

/* ===== Base ===== */
@layer base {
	html {
		font-size: 16px;
		line-height: 1.5;
		letter-spacing: 0em;
		font-family: var(--font-base);
		color: #222222;
		background: #fff;
		scroll-behavior: smooth;
		-webkit-text-size-adjust: 100%;
	}

	body {
		position: relative;
	}

	:where(h1, h2, h3, h4, h5, h6) {
		line-height: 1.5;
		font-weight: 600;
		overflow-wrap: anywhere;
	}

	:where(a) {
		color: inherit;
		text-decoration: none;
	}

	:where(main) {
		width: 100%;
		position: relative;
	}
}

/* ===== Layout ===== */
@layer layout {
	.l-section {
		width: 100%;
		position: relative;
		z-index: 10;
		overflow: hidden;
	}

	.l-inner {
		width: min(500px, 100%);
		position: relative;
		z-index: 0;
		margin-inline: auto;
	}
	.l-col {
		width: 100%;
		display: flex;
		flex-flow: column;
		align-items: flex-start;
	}

	.img-cont {
		width: 100%;
		height: auto;
		display: grid;
		place-items: center;
		overflow: hidden;
		position: relative;
		z-index: 0;
	}
	.img-cont img {
		width: 100%;
		height: 100%;
		object-fit: contain;
	}
}

/* ===== Component ===== */
@layer component {
	/* --------- Text --------- */
	:where(.c-txt) {
		font-size: clamp(14px, 1.111vw, 16px);
		line-height: 1.8;
		font-weight: 500;
	}

	/* --------- CTA --------- */
	.sec-cta .img-cont {
		aspect-ratio: 400 / 342;
	}
	.c-btn-cta {
		width: 93.5%;
		margin-inline: auto;
		display: grid;
		place-items: center;
		position: absolute;
		z-index: 10;
		left: 0;
		right: 0;
	}
	.sec-fv .c-btn-cta {
		bottom: 5.5%;
	}
	.sec-cta .c-btn-cta {
		top: 22.2%;
	}

	.c-btn-cta:before,
	.c-btn-cta:after {
		content: "";
		position: absolute;
		z-index: -10;
		width: 100%;
		height: 100%;
		top: 0;
		left: 0;
		border-radius: 10px;
		background: #44b33d;
		transform: translate3d(0, 0, 0);
	}

	.c-btn-cta:before {
		animation: anime 1s ease-out infinite;
	}

	.c-btn-cta:after {
		animation: anime 1s ease-out 1s infinite;
	}

	@keyframes anime {
		0% {
			transform: scale(0.95);
			opacity: 1;
		}
		90% {
			opacity: 0.1;
		}
		to {
			transform: scale(1.08, 1.4);
			opacity: 0;
		}
	}
	.img-btn-cta-base {
		width: 100%;
		height: auto;
		object-fit: contain;
		position: relative;
		z-index: 0;
		aspect-ratio: 370 / 71;
	}
	.img-btn-cta-balloon {
		width: 79.8%;
		position: absolute;
		top: -33%;
		left: 0;
		right: 0;
		aspect-ratio: 59 / 8;
		margin-inline: auto;
		z-index: 10;
	}

	/* --------- Footer  --------- */
	footer {
		width: 100%;
		position: relative;
		background: #111;
		color: #fff;
		padding: 20px;
	}
	.footer-cont {
		align-items: center;
		gap: 15px;
		font-family: var(--font-serif);
		font-size: 14px;
	}
	.footer-copy {
		text-align: center;
	}
	.footer-links {
		width: 100%;
		display: flex;
		align-items: center;
		justify-content: center;
		gap: clamp(20px, 10vw, 40px);
	}
	.footer-links a {
		text-decoration: underline;
		text-underline-offset: 2px;
	}
}

@layer utility {
	[x-cloak] {
		display: none !important;
	}

	.not-scroll {
		overflow: hidden;
		touch-action: none;
	}

	::-webkit-scrollbar {
		width: 0;
		height: 0;
	}
}

@layer page {
	/* --------- FV  --------- */
	.sec-fv .img-cont {
		aspect-ratio: 2 / 3;
	}
	/* --------- Worry  --------- */
	.sec-worry .img-cont {
		aspect-ratio: 65 / 211;
	}
	/* --------- Present  --------- */
	.sec-present .img-cont {
		aspect-ratio: 16 / 13;
	}
	/* --------- Support  --------- */
	.sec-support .img-cont {
		aspect-ratio: 65 / 94;
	}
	/* --------- Result  --------- */
	.sec-result .img-cont {
		aspect-ratio: 400 / 1592;
	}
	/* --------- Media  --------- */
	.sec-media .img-cont {
		aspect-ratio: 400 / 516;
	}
	/* --------- Recommend  --------- */
	.sec-recommend .img-cont {
		aspect-ratio: 400 / 635;
	}
	/* --------- FAQ  --------- */
	.sec-faq {
		padding-top: 127px;
		margin-bottom: 27px;
	}
	.sec-faq > .l-inner {
		padding-inline: 20px;
		z-index: 10;
	}
	.sec-faq::before {
		content: "";
		width: min(500px, 100%);
		height: auto;
		aspect-ratio: 400 / 140;
		background-image: url("../images/img-faq.webp");
		background-position: center;
		background-size: contain;
		background-repeat: no-repeat;
		position: absolute;
		z-index: 0;
		top: 0;
		left: 0;
		right: 0;
		margin-inline: auto;
	}

	.faq-list {
		width: 100%;
		margin-inline: auto;
		gap: 16px;
	}
	.c-acc {
		width: 100%;
		position: relative;
	}
	.c-acc__head {
		width: 100%;
		display: flex;
		justify-content: space-between;
		align-items: center;
		padding-block: 26px 30px;
		padding-inline: 15px;
		position: relative;
		cursor: pointer;
		background: #111;
		color: #fff;
		border-radius: 8px;
		gap: 15px;
	}
	.is-active .c-acc__head {
		border-radius: 8px 8px 0 0;
	}
	.c-acc__ttl {
		width: auto;
		font-size: 16px;
		font-weight: 500;
		display: flex;
		align-items: baseline;
		position: relative;
		gap: 12px;
	}
	.c-acc__ttl::before {
		content: "";
		width: 21px;
		height: 21px;
		aspect-ratio: 1 / 1;
		background-image: url("../images/icon-q.svg");
		background-position: center;
		background-size: contain;
		background-repeat: no-repeat;
		position: relative;
		top: 4px;
	}
	.c-acc__icon {
		width: 21px;
		height: 21px;
		aspect-ratio: 1 / 1;
		display: grid;
		place-items: center;
		position: relative;
		flex-shrink: 0;
		overflow: hidden;
	}
	.c-acc__icon::before {
		content: "";
		width: 21px;
		height: 21px;
		aspect-ratio: 1 / 1;
		background-image: url("../images/icon-plus.svg");
		background-position: center;
		background-size: contain;
		background-repeat: no-repeat;
	}
	.is-active .c-acc__icon::before {
		background-image: url("../images/icon-minus.svg");
	}
	.c-acc__inner {
		padding: 20px;
		border-top: none;
		border-radius: 0 0 8px 8px;
		border: 2px solid transparent;
	}
	.is-active .c-acc__inner {
		border: 2px solid #111;
	}
	.c-faq-answer {
		gap: 4px;
		padding-left: 28px;
		position: relative;
	}
	.c-faq-answer::before {
		content: "";
		width: 21px;
		height: 21px;
		aspect-ratio: 1 / 1;
		background-image: url("../images/icon-a.svg");
		background-position: center;
		background-size: contain;
		background-repeat: no-repeat;
		position: absolute;
		top: -2px;
		left: -8px;
	}
	.c-faq__ttl {
		width: 100%;
		color: #f8931f;
		font-weight: 600;
	}
	.c-faq__txt {
		width: 100%;
		font-size: 14px;
		line-height: 1.6;
	}

	/* --------- Company  --------- */
	.sec-company .img-cont {
		aspect-ratio: 400 / 540;
	}

	.fixed-cta {
		position: fixed;
		bottom: 10px;
		z-index: 999;
		width: 100%;
		height: auto;
		width: min(500px, 100%);
		margin-inline: auto;
		aspect-ratio: 400 / 73;
		left: 0;
		right: 0;
		pointer-events: none;
	}
	.fixed-cta.is-active {
		pointer-events: all;
	}
	.fixed-cta > .c-btn-cta {
		transition: all ease-in-out 0.33s;
		translate: 0 calc(100% + 10px);
		opacity: 0;
		pointer-events: none;
	}
	.fixed-cta.is-active > .c-btn-cta {
		translate: 0 0;
		opacity: 1;
		pointer-events: all;
	}
}
