@charset "utf-8";

/*	===================================================================
	Basement
=================================================================== */
:root {
    --gray: #B3C0C7;
    --gray-light: #F5F6F7;
    --gray-dark: #292B2E;
    --black: #231815;
    --border: #E4ECF0;
    --required: #F6C7CE;
    --alert: #ff3352;
    --action: #0088FF;
    --action-light: #59B2FF;

    --gradient-green: #A3D5C0 15%, #ACDDF7 90%;
    --gradient-pink: #F6C8DD 11%, #BAE2F8 100%;
    --gradient-purple: #BBB3D7 8%, #D5E8C3 83%;

    --main-width: 1200px;/* vw値は1200pxでvw計算 */
    --header-height: 90px;

    --radius: min(1.666vw, 20px);
    --m: min(2.5vw, 30px);
    --m2: calc( var(--m) * 2);
    --m3: calc( var(--m) * 3);
    --m4: calc( var(--m) * 4);
    --m5: calc( var(--m) * 5);
    --m6: calc( var(--m) * 6);
    --m7: calc( var(--m) * 7);
    --m8: calc( var(--m) * 8);
    --m9: calc( var(--m) * 9);
    --m10: calc( var(--m) * 10);
    --m11: calc( var(--m) * 11);
    --m12: calc( var(--m) * 12);
    --m13: calc( var(--m) * 13);
    --m14: calc( var(--m) * 14);
    --m15: calc( var(--m) * 15);
    --m16: calc( var(--m) * 16);
    --m17: calc( var(--m) * 17);
    --m18: calc( var(--m) * 18);
    --m19: calc( var(--m) * 19);
    --m20: calc( var(--m) * 20);

	--fs10: min(0.833vw, 1rem);
	--fs12: min(1vw, 1.2rem);
	--fs15: min(1.25vw, 1.5rem);
    --fs18: min(1.5vw, 1.8rem);
    --fs21: min(1.75vw, 2.1rem);
    --fs24: min(2vw, 2.4rem);
    --fs27: min(2.25vw, 2.7rem);
    --fs30: min(2.5vw, 3rem);
    --fs36: min(3vw, 3.6rem);
    --fs39: min(3.25vw, 3.9rem);

	--transition: 0.3s 0s ease;
}
@media screen and (max-width: 767px) {
	:root {
        --main-width: 100%;/* 100vw = 375pxで計算 */
		--header-height: 8.99vh;

        --radius: min(5.333vw, 20px);
		--m: 8vw;

		--fs10: min(2.66vw, 1rem);
		--fs12: min(3.2vw, 1.2rem);
		--fs15: min(4vw, 1.5rem);
		--fs18: min(4.8vw, 1.8rem);
		--fs21: min(5.6vw, 2.1rem);
		--fs22: min(5.86vw, 2.2rem);
		--fs24: min(6.4vw, 2.4rem);
		--fs27: min(7.2vw, 2.7rem);
		--fs30: min(8vw, 3rem);
        --fs36: min(9.6vw, 3rem);
        --fs39: min(10.4vw, 2.9rem);
    }
}

html {
    font-size: 62.5%;
	-webkit-text-size-adjust: none;
    -moz-text-size-adjust: none;
    -ms-text-size-adjust: none;
    text-size-adjust: none;
	scroll-behavior: smooth;

	transition: 0.5s 0s ease;
}
@font-face {
    font-family: YuGothicM;
    font-weight: normal;
    src: local('YuGothic-Medium'),
        local('Yu Gothic Medium'),
        local('YuGothic-Regular');
}
@font-face {
    font-family: YuGothicM;
    font-weight: bold;
    src: local('YoGothic-Bold'),
        local('Yu Gothic');
}

body {
	font-family: -apple-system, blinkMacSystemFont, /* Macの欧文はSan Francisco (OS X 10.11以降) */
	               YuGothicM,        /* Windows8.1以上は游ゴシック */
	               YuGothic,         /* Macの游ゴシック */
	               Meiryo,           /* 游ゴシックが入っていないWindows */
	               sans-serif;
    font-optical-sizing: auto;
    font-size: 1.8rem;
	font-weight: 500;
	font-style: normal;
	line-height: 1.75;
	color: var(--black);
	overflow-x: clip;
	position: relative;
}

@media screen and (max-width: 767px) {
	body {
        font-family: "Zen Kaku Gothic New", sans-serif;
        width: 100svw;
		min-width: unset;
        font-size: 4.4vw;
        font-weight: 400;
    }
}


.grecaptcha-badge {
    z-index: 90;
    transition: var(--transition), right 0.3s !important;
}
#contact:not(.is_show) .grecaptcha-badge {
    opacity: 0;
    pointer-events: none;
    z-index: -1;
}

/*	===================================================================
	Object
=================================================================== */
* {
	box-sizing: border-box;
}


/** テキスト */
:is(h1, h2, h3, h4, h5, h6) {
    font-weight: 500;
}
ul:is(:not([class]), .normal), ol {
	margin-block: 0.75lh;
}
ol {
	list-style: decimal;
	padding-inline-start: 1.5ic;
}
dt {
    font-weight: 400;
}
img,
iframe {
	display: block;
	width: auto;
	max-width: 100%;
	height: auto;
	font-style: italic;
	background-repeat: no-repeat;
	background-size: cover;
	vertical-align: middle;
}
img {
	outline: 0;
	-o-object-fit: contain;
	object-fit: contain;
}
a.logo > img {
    width: 100%;
    height: auto;
    max-height: 100%;
    object-fit: contain;
}


picture {
	line-height: 0;
	overflow: hidden;
}
:target {
	scroll-margin-block: 5ex;
}
*::before,
*::after {
	content: "";
	display: none;
	box-sizing: border-box;
}

/** 改行 */
:is(br, wbr)[sp], .sp {
	display: none;
}
@media screen and (max-width: 767px) {
    :is(h1, h2, h3, h4, h5, h6) {
        font-weight: 400;
    }
    :is(br, wbr)[pc], .pc {
		display: none;
	}
	:is(br, wbr)[sp] {
		display: inline;
	}
	.sp {
		display: block;
	}
}

/** リンク */
a {
	--visited: var(--link);
    --focus: var(--hover);
    text-decoration: none;
    transition: var(--transition);
}
a:has(img) {
	display: block;
}
a:not([class]) {
	color: currentColor;
	text-underline-offset: 4px;
}

@media (hover: hover) {
	a:not([class]) {
		text-decoration: underline;
	}
	a:not([class]):hover {
		text-decoration: none;
	}
}

a:link {
	--color: var(--link);
}
a:visited {
	--color: var(--visited);
}
:is(a, button) {
	background: var(--bg);
	color: var(--color);
}
:is(a, button):focus {
	--bg: var(--focus-bg, var(--hover-bg, transparent));
	--color: var(--focus, var(--hover));
}
@media (hover: hover) {
	:is(a, button):hover {
		--bg: var(--hover-bg, transparent);
		--color: var(--hover);
	}
}



/*  main
-------------------------------------------------------------------- */
main.content {
    padding-top: var(--header-height);
}

/*  wrapper
-------------------------------------------------------------------- */
.wrap {
    width: auto;
    max-width: var(--main-width);
    padding-inline: var(--m);
    margin-inline: auto;
}




/*  section
-------------------------------------------------------------------- */
section {
    padding-block: var(--m4);
    background: white;

    position: relative;
    z-index: 0;
}
section img[src*="headline-icon"] {
    width: min(4.75vw, 57px);
    margin-inline: auto;
}
section h2 {
    margin-top: calc(var(--m) * 1.5);
    font-size: var(--fs39);
    font-weight: normal;
    text-align: center;
    letter-spacing: 0.15ic;
}
section h2:not(:has(+ p)) {
    margin-bottom: var(--m3);
}
section h2 img {}
section h2 + p {
    margin-block: calc(var(--m) * 1.5) var(--m3);
    padding-inline: var(--m);
    text-align: center;
}

section .bg {
    width: 100svw;
    aspect-ratio: 16 / 12;

    position: absolute;
    left: 50%;
    translate: -50% 0;
    z-index: -1;

    opacity: 0.3;
}

@media screen and (max-width: 767px) {
    section {
        padding-block: var(--m2);
    }
    section img[src*="headline-icon"] {
        width: 11vw;
    }
    section h2 {
        margin-top: var(--m);
        padding-inline: var(--m);
        font-size: var(--fs27);
    }
    section h2 img {}
    section h2 + p {
        margin-block: var(--m);
        text-align: justify;
    }
    section .bg {
        aspect-ratio: 375 / 667;
    }
}



/*  container & block
-------------------------------------------------------------------- */
.container {}
.block {}
.block h3 {}
.block h3 + p {}

@media screen and (max-width: 767px) {
    .block h3 + p {
        text-align: justify;
    }
}



/*  board
-------------------------------------------------------------------- */
.board:where(.container) .block,
.board:where(.block) {
    padding: var(--m);

    position: relative;
    z-index: 0;
}
.board:where(.container) .block::before,
.board:where(.block)::before { /** 背景 */
    display: block;
    width: 100%;
    height: 100%;
    border-radius: var(--radius);
    background: white;

    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}
.board:where(.container) .block::after,
.board:where(.block)::after { /** 影 */
    display: block;
    width: 80%;
    height: 10%;
    border-radius: 50%;
    background: var(--black);
    box-shadow: 0 0 var(--m) 0 rgba(0, 0, 0, .2);

    position: absolute;
    bottom: 1px;
    left: 50%;
    translate: -50% 0;
    z-index: -2;
}

@media screen and (max-width: 767px) {}

/*  accordion
-------------------------------------------------------------------- */
details {
    transition: var(--transition);
}
details + details {
    margin-top: var(--m);
}
summary {
    display: flex;
    padding-right: calc( min(2.25vw, 36px) + var(--m) );
    position: relative;
    cursor: pointer;

    font-size: var(--fs21);
    font-weight: 500;
}
summary::-webkit-details-marker {
    display: none;
}
summary > img[src*="faq-icon"] {
    width: min(2.25vw, 36px);
    margin-right: var(--m);
}
summary::before {
    --arrow-color: var(--black);
    --arrow-size: min(0.8125vw, 13px);
    display: block;
    width: var(--arrow-size);
    height: var(--arrow-size);
    border-right: 3px solid var(--arrow-color);
    border-bottom: 3px solid var(--arrow-color);
    rotate: 45deg;

    position: absolute;
    top: 0.5lh;
    right: calc(var(--m) / 2);
    translate: 0 -50%;

    transition: var(--transition);

}
details[open] summary::before {
    --arrow-color: var(--gray);
    rotate: -135deg;
}

details p {
    margin-top: var(--m);
    border-top: 1px solid var(--border);
    padding-top: var(--m);
    padding-inline: calc( min(2.25vw, 36px) + var(--m) );
    transition: 0.5s 0.2s ease;
}
details:not([open]) p {
    opacity: 0;
}
details[open] p {
    opacity: 1;
}
@media screen and (max-width: 767px) {
    details {
        padding-block: var(--fs15) !important;
    }
    summary {
        flex-direction: column;
        align-items: center;
        padding-right: 0;
        font-size: var(--fs18);
    }
    summary > img[src*="faq-icon"] {
        width: 9vw;
        margin-right: 0;
        margin-bottom: var(--fs15);
    }
    summary::before {
        --arrow-size: 3.2vw;
        margin-top: var(--fs15);
        position: static;
        order: 3;
    }
    details p {
        margin-top: var(--fs15);
        padding-inline: 0;
        padding-bottom: var(--m);
    }
}


/*  title
-------------------------------------------------------------------- */
.title {
    margin-bottom: var(--m);
    font-size: var(--fs30);
    letter-spacing: 0.1ic;
    position: relative;
    z-index: 0;
}
.title::after {
    display: block;
    width: 100%;
    height: 0.35lh;
    background: linear-gradient(to right, var(--gradient-pink));
    opacity: 0.3;

    position: absolute;
    bottom: 0.125lh;
    left: 0;
    z-index: -1;
}

@media screen and (max-width: 767px) {
    .title {
        width: fit-content;
        padding-inline: 0.5ic;
        margin-inline: auto;
        font-size: var(--fs21);
        line-height: 1.5;
    }
    .title::after {
        height: 100%;
        bottom: 0;
    }
}

/*  caption
-------------------------------------------------------------------- */
.caption {
    display: flex;
    flex-direction: column;
    align-items: center;

    text-align: center;
}
.caption::after {
    display: block;
    width: 54px;
    height: 9px;
    border-radius: 9px;
    margin-block: 0.5lh;
    background: var(--tie-color, linear-gradient(to right, var(--gradient-purple)));
}
.container:has(.caption) .block:nth-child(3n + 1) {
    --tie-color: linear-gradient(to right, var(--gradient-green));
}
.container:has(.caption) .block:nth-child(3n + 2) {
    --tie-color: linear-gradient(to right, var(--gradient-pink));
}

@media screen and (max-width: 767px) {
    .caption::after {
        width: 11.2vw;
        height: 2vw;
    }
}



/*  form
-------------------------------------------------------------------- */
form {}
form dl {
    padding-inline: var(--m3);
	display: flex;
	align-items: stretch;
}
form dl + dl {}
form dd {
	-webkit-margin-start: 0;
	margin-inline-start: 0;
}
form button {
	border: none;
	cursor: pointer;
}
form dt {
	flex-shrink: 0;
	width: 15ic;
	padding-block: calc( var(--m) + 0.25lh);
	padding-right: var(--m2);

    position: relative;
}

form dd {
	padding-block: var(--m);
	padding-left: var(--m2);

    flex-grow: 1;
	display: flex;
	flex-flow: row wrap;
	gap: 0.5lh 2ic;
}
form dl:has([required]) dt::before {
	content: var(--item-text, "必須");
	display: block;
	padding-inline: 0.5ic;
	background: var(--required);
    font-weight: 500;

    position: absolute;
    top: calc( var(--m) + 0.25lh);
    right: 0;
    translate: 50% 0;
    scale: 0.75;
}
form label {
    width: fit-content;
    max-width: 100%;
    padding-block: 0.25lh;
}
form label:has(input:is([type="checkbox"], [type="radio"])) {
	display: flex;
	flex-flow: row wrap;
	align-items: center;
	-moz-column-gap: 0.5ic;
	column-gap: 0.5ic;
}
form dd .note {
	flex: 0 0 100%;
	font-size: 75%;
	color: gray;
}
form dd:has(input:user-invalid) .note {
	color: var(--alert, red);
}
form :is(input, textarea)::placeholder,
option[disabled] {
    color: var(--gray);
}
form input:is([type="text"], [type="email"], [type="tel"], [type="url"]),
form textarea,
form select {
	padding-inline: 0.5ic;
    background: rgba(255,255,255,.7);
    outline: var(--border) auto 1px;
}
form input:is([type="text"], [type="email"], [type="tel"], [type="url"]):focus-visible,
form textarea:focus-visible,
form select:focus-visible {
	outline: var(--outline, dodgerBlue) auto 1px;
}
form input:is([type="text"], [type="email"], [type="tel"], [type="url"]):user-invalid,
form textarea:user-invalid,
form select:user-invalid {
	outline: var(--alert, red) auto 1px;
}
form input:is([type="text"], [type="email"], [type="tel"], [type="url"]),
form textarea {
	flex: 1 1 50%;
	min-width: 5ic;
	box-sizing: border-box;
	padding-block: 0.25lh;
}
form input:is([type="checkbox"], [type="radio"]) {
	appearance: auto;
    inline-size: 1ic;
    block-size: 1ic;
    accent-color: var(--action);
}
form label:has(select) {
    position: relative;
}
form label:has(select)::after {
    --arrow-color: var(--black);
    display: block;
    width: min(0.8125vw, 13px);
    height: min(0.8125vw, 13px);
    border-right: 3px solid var(--arrow-color);
    border-bottom: 3px solid var(--arrow-color);
    rotate: 45deg;

    position: absolute;
    top: 50%;
    right: calc(var(--m) / 2);
    translate: 0 -50%;

    transition: var(--transition);
    pointer-events: none;
}

form select {
	appearance: none;
    width: 100%;
    padding-block: 0.5lh;
    padding-right: calc(var(--m) * 1.5);
	cursor: pointer;
}
form textarea {
	min-height: 10lh;
	field-sizing: content;
}


form [type="submit"]:is(button, input) {
	margin-block: var(--m3);
	margin-inline: auto;
	font-size: var(--fs24);
}
@media (hover: hover) {
	form [type="submit"]:is(button, input) {
		cursor: pointer;
	}
}
@media screen and (max-width: 767px) {
	form dl {
		flex-direction: column;
        padding-inline: var(--m);
	}
    form :is(dt, dd) {
        width: 100%;
        padding: 0;
    }
    form dt {
        padding-top: var(--m);
    }
	form dl:not(:first-child) dt {
        border-top: 1px solid var(--border);
		padding-bottom: 0;
	}
    form dl:has([required]) dt::before {
        top: calc( var(--m) + 0.125lh);
        translate: none;
        transform-origin: top right;
    }
    form dd {
        padding-block: var(--fs15) var(--m);
    }
    form input:is([type="text"], [type="email"], [type="tel"], [type="url"]),
    form textarea,
    form select {
        outline: transparent;
        border: 2px solid var(--border);
    }
    form input:is([type="text"], [type="email"], [type="tel"], [type="url"]):focus-visible,
    form textarea:focus-visible,
    form select:focus-visible {
        border-color: transparent;
    }

    form select {
		width: 100%;
	}
    form label:has(select)::after {
        width: 3.2vw;
        height: 3.2vw;
    }
    form [type="submit"]:is(button, input) {
		margin-block: var(--m2) var(--m);
        width: fit-content;
		font-size: var(--fs18);
	}
}



/*  button
-------------------------------------------------------------------- */
.btn {
    display: block;
    width: fit-content;
    box-sizing: content-box;
    padding-block: 0.3lh;
    padding-inline: 2.5ic;
    background: var(--action);
    border-radius: var(--radius) 0;

    color: white;
    font-weight: 500;
    letter-spacing: 0.1ic;
    text-align: center;

    transition: var(--transition);
}
@media (hover: hover) {
    .btn:hover {
        background: var(--action-light);
    }
}
@media screen and (max-width: 767px) {
    .btn {
        box-sizing: border-box;
        padding-block: 0.5lh;
        font-weight: 400;
    }
}



/*  cta
-------------------------------------------------------------------- */
.cta {
    width: 100%;
    height: var(--m10);
    background: linear-gradient(45deg, var(--gradient-pink));

    position: relative;
    z-index: 10;
}
.cta .board {
    width: fit-content;
    box-sizing: content-box;
    padding-block: calc( var(--m) * 1.5 ) var(--m2);
    padding-inline: var(--m4);

    position: absolute;
    bottom: calc( -1 * var(--m));
    left: 50%;
    translate: -50% 0;
    z-index: 10;
}
.cta .lead {
    font-size: var(--fs27);
    text-align: center;
    white-space: nowrap;
}
.cta .lead::before {
    display: block;
    width: 54px;
    height: 9px;
    border-radius: 9px;
    margin-bottom: 0.5lh;
    margin-inline: auto;
    background: linear-gradient(to right, var(--gradient-pink));
}
.cta .btn {
    margin-top: var(--m);
    width: 100%;
    box-sizing: border-box;
    padding-block: 0.25lh;
    font-size: var(--fs24);
}
.cta .bg {
    width: 100%;
    height: 100%;
    object-fit: cover;

    position: absolute;
    top: 0;
    left: 50%;
    translate: -50% 0;
    z-index: 1;
}

@media screen and (max-width: 767px) {
    .cta + section {
        padding-top: var(--m4);
    }
    .cta .board {
        width: 90%;
        box-sizing: border-box;
        padding-inline: var(--m);
    }
    .cta .lead {
        font-size: var(--fs21);
    }
    .cta .lead::before {
        width: 11.2vw;
        height: 2vw;
    }
    .cta .btn {
        width: fit-content;
        font-size: var(--fs18);
        margin-inline: auto;
    }
}




/*	===================================================================
	ヘッダー・フッター
=================================================================== */
header {
    width: 100%;
    height: var(--header-height);
    background: rgba(255,255,255,.8);

    position: fixed;
    top: 0;
    left: 0;
    z-index: 100;
}
:is(header, footer) .wrap {
    height: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
:is(header, footer) a.logo {
    display: block;
    flex: 0 0 min(19.166vw, 230px);
}
header .burger {
    display: none;
}
:is(header, footer) nav {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 1ic;
}
:is(header, footer) nav > a {
    --hover: var(--action);
    display: block;
    
    font-weight: 500;
}
header nav > a {
    font-size: var(--fs15);
}

@media screen and (max-width: 767px) {
    header {
        background: rgba(255,255,255,.95);
    }
    header .wrap {
        padding-right: 0;
    }
    :is(header, footer) a.logo {
        flex: 0 0 42.93vw;
        height: calc( var(--header-height) * 0.7 );
    }
    header .burger {
        display: block;
        width: var(--header-height);
        height: var(--header-height);

        position: relative;
        transition: 0.5s 0s ease;
    }
    header .burger::before,
    header .burger::after {
        display: block;
        height: 1px;
        background: var(--black);

        position: absolute;
        top: 50%;
        left: 50%;
        transition: 0.5s 0s ease;
    }
    header:not(.is_active) .burger::before {
        width: 60%;
        translate: -50% calc(-50% - 0.6rem);
    }
    header:not(.is_active) .burger::after {
        width: 40%;
        translate: -70% calc(-50% + 0.6rem);
    }
    header:is(.is_active) .burger {
        background: var(--gray);
    }
    header:is(.is_active) .burger::before,
    header:is(.is_active) .burger::after {
        width: 60%;
        background: white;
        translate: -50% -50%;
    }
    header:is(.is_active) .burger::before {
        rotate: 45deg;
    }
    header:is(.is_active) .burger::after {
        rotate: -45deg;
    }
    :is(header, footer) nav {
        width: 100%;

        flex-direction: column;
        justify-content: flex-start;
    }
    header nav {
        height: 100svh;
        padding: var(--m);
        background: rgba(255,255,255,.95);

        gap: 0;

        position: fixed;
        top: var(--header-height);
        left: 0;
    }
    :is(header, footer) nav > a {
        width: 100%;
        padding-block: 0.5lh;
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: var(--fs18);
        font-weight: 400;
    }
    :is(header, footer) nav > a:not(.btn)::after {
        display: block;
        width: min(2.13vw, 8px);
        height: min(2.13vw, 8px);
        border-top: 2px solid currentColor;
        border-right: 2px solid currentColor;
        rotate: 45deg;
        margin-left: 0.5ic;
    }
    header .nav-contact {
        margin-block: 0.5lh;
        width: 100%;
    }
    header:not(.is_active) nav {
        z-index: -100;
        opacity: 0;
        pointer-events: none;
        transition: 0.5s 0s ease;
    }
    header:is(.is_active) nav {
        z-index: 200;
        opacity: 1;
        pointer-events: all;
        transition: 0.2s 0s ease-in;
    }
    body:has(header.is_active) {
        overflow-y: clip;
    }
}


footer {
    --link: white;
    padding-block: var(--m2) var(--m);
    background: var(--gray-dark);
    color: var(--link);
}
footer nav {
    gap: 2ic;
}
footer nav > a {
    font-size: var(--fs18);
    font-weight: 400;
}
footer .copyright {
    margin-top: var(--m4);
    font-size: var(--fs15);
    font-weight: 400;
    text-align: center;
    letter-spacing: 0.1ic;
}

@media screen and (max-width: 767px) {
    footer .wrap {
        display: block;
        padding-inline: var(--m2);
    }
    footer nav {
        margin-top: var(--m2);
        border-top: 1px solid rgba(255,255,255,.2);
        padding-top: var(--m);
        gap: 0;
    }
    footer nav > a {
        font-size: var(--fs15);
    }
    footer .copyright {
        font-size: var(--fs12);
    }
}




/*	===================================================================
	ビルボード
=================================================================== */
#billboard {
    height: clamp(540px, 55.625vw, 980px);

    position: relative;
    z-index: 1;

    overflow-x: clip;
}
#billboard .heading {
    width: min(95vw, 1140px);

    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--m2);

    position: absolute;
    top: calc( 50% - 14.1vw + 5vw);
    left: 50%;
    translate: -50% -50%;
    z-index: 0;
}
#billboard .nav-contact {
    padding-block: 0.33lh;
    padding-inline: 5ic;

    font-size: var(--fs21);

    position: absolute;
    bottom: min(9.5vw, 114px);
    left: 50%;
    translate: -50% 0;
    z-index: 1;
}
#billboard .gene {
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}
#billboard .image {
    width: 125vw;
    max-width: unset;
    max-height: 235px;
    object-fit: cover;

    position: absolute;
    bottom: 0;
    left: 50%;
    translate: -50% 0;
    z-index: -2;
}
body#thanks #billboard {

}
body#thanks #billboard .heading {
    filter: drop-shadow(0 0 var(--m) white) drop-shadow(0 0 var(--m2) white) drop-shadow(0 0 var(--m3) white) drop-shadow(0 0 var(--m4) white);
}
body#thanks #billboard h1 {
    font-size: 36px;
    text-align: center;
}


@media screen and (max-width: 767px) {
    #billboard {
        height: calc(100vh - var(--header-height));
    }
    #billboard .heading {
        width: calc(100% - var(--m));
        top: min(8vw, 30px);
        translate: -50% 0;
    }
    #billboard .nav-contact {
        width: max-content;
        padding-inline: 3ic;
        font-size: var(--fs18);
        bottom: auto;
        top: 110%;
    }
    #billboard .gene {}
    #billboard .image {
        width: 100%;
    }
    body#thanks #billboard {
        height: 70svh;
    }
    body#thanks #billboard .heading {
        gap: var(--m);
    }
}





/*	===================================================================
	特徴
=================================================================== */
#feature {
    background: var(--gray-light);
}
#feature .bg {
    top: 11.25vw;
    scale: -1 1;
}
#feature .container {
    padding-inline: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: stretch;
}
#feature .block {
    flex: 0 0 min(30vw, 360px);
    margin-top: calc( var(--m) * 2.5 );
    padding-top: 0;
}
#feature .block:first-child {
    flex: 0 0 min(65.5vw, 786px);
    margin-inline: min(18vw, 216px);
    margin-bottom: var(--m2);
}
#feature .block img {
    width: min(20vw, 240px);
    margin-top: calc( -1 * var(--m) * 2.5 );
    margin-inline: auto;
}
#feature .block:first-child img {
    width: min(41.666vw, 500px);
}
#feature .block h3 {
    margin-top: var(--m);
    font-size: var(--fs24);
}


@media screen and (min-width: 768px) {
    #feature .block:nth-child(3) {
        translate: 0 var(--m4);
    }
}

@media screen and (max-width: 767px) {
    #feature .container {
        flex-direction: column;
        padding-inline: var(--m);
    }
    #feature .block {
        margin-top: var(--m5);
        width: 100% !important;
    }
    #feature .block:first-child {
        margin-top: var(--m3);
        margin-inline: 0;
        margin-bottom: 0;
    }
    #feature .block img {
        margin-top: calc( -1 * var(--m3) );
        width: 48vw !important;
    }
    #feature .block h3 {
        font-size: var(--fs21);
    }
}





/*	===================================================================
	サービスの仕組み
=================================================================== */
#overview {
    background: var(--gray-light);
}
#overview .bg {
    top: 0;
}

#overview .block {
    padding: var(--m2);
}




@media screen and (max-width: 767px) {
    #overview .block {
        padding: var(--m);
    }
}





/*	===================================================================
	遺伝子検査について
=================================================================== */
#test .bg01 {
    top: -15vw;
}
#test .bg02 {
    top: 80vw;
    scale: -1 1;
}

#test .block {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: var(--m4);
}
#test .block + .block {
    margin-top: var(--m4);
}
#test .image {
    flex: 0 0 min(36.66vw, 440px);
    position: relative;
    z-index: 0;
}
#test .image img {
    border-radius: var(--radius);
}
#test .image::before,
#test .image::after {
    display: block;
    background: linear-gradient(45deg, var(--gradient-pink));
    border-radius: calc(var(--radius) + 2px);

    position: absolute;
    z-index: -1;
}
#test .image::before {
    width: calc(100% + 4px);
    height: calc(100% + 4px);
    
    top: 50%;
    left: 50%;
    translate: -50% -50%;
}
#test .image::after {
    width: 100%;
    height: 100%;
    border-bottom-right-radius: calc(var(--radius) + 2px + var(--m) * 0.25);
    top: calc(var(--m) * 0.5);
    left: calc(var(--m) * 0.5);
}
#test .text {}

#test h3 {}
#test h4 {
    margin-bottom: 0.125lh;
    display: flex;
    align-items: center;
    font-size: var(--fs21);
    font-weight: 500;
}
#test p + h4 {
    margin-top: var(--m);
}
#test h4 img {
    width: var(--fs30);
    margin-right: 0.5ic;
}

#test .example {
    margin-top: var(--m);
    padding: calc(var(--m) * 0.5);
    border-radius: var(--radius);
    background: linear-gradient(45deg, var(--gradient-pink));
    display: flex;
    flex-wrap: wrap;
    gap: calc(var(--m) * 0.25);

    position: relative;
}
#test .example .icon {
    flex: 0 0 100%;
    position: relative;
    z-index: 0;
}
#test .example .icon::after {
    display: block;
    width: 100%;
    height: 2px;
    background: white;
    position: absolute;
    top: 50%;
    left: 0;
    translate: 0 -50%;
    z-index: -1;
}
#test .example .icon img {
    display: block;
    width: var(--m);
    margin-inline: auto;
}
#test .example > h4 {
    margin-bottom: 0;
    flex: 0 0 100%;
    display: block;
    color: white;
    text-align: center;
}
#test .example .box {
    flex: 1 0 30%;
    padding-block: calc(var(--m) * 0.5);
    padding-inline: calc(var(--m) * 0.3);
    border-radius: calc(var(--radius) * 0.5);
    background: white;
}
#test .example .box h4 {
    font-size: var(--fs18);
}
#test .example ul {
    margin-block: 0;
    list-style: disc;
    padding-left: 1ic;
}
#test .example li {
    font-size: var(--fs12);
}

@media screen and (min-width: 768px) {
    #test .block:first-child {
        gap: var(--m2);
    }
    #test .block:nth-child(odd) {
        flex-direction: row-reverse;
    }
}
@media screen and (min-width: 768px) {
    #test {
        padding-bottom: var(--m6);
    }
}
@media screen and (max-width: 767px) {
    #test .bg01 {
        top: 20%;
    }
    #test .bg02 {
        top: 60%;
    }
    #test .block {
        flex-direction: column;
        gap: var(--m2);
    }
    #test .block + .block {
        margin-top: var(--m3);
    }
    #test .image {
        width: 70%;
    }
    #test h3 {
        width: fit-content;
        margin-inline: auto;
        text-align: center;
    }
    #test03 h3 {
        letter-spacing: 0;
    }
    #test h4 {
        font-size: var(--fs18);
        font-weight: 400;
        justify-content: center;
        margin-bottom: 0.25lh;
    }
    #test p + h4 {
        margin-top: 1lh;
        border-top: 1px solid var(--gray);
        padding-top: 0.75lh;
    }
    #test .example > h4 {
        font-size: var(--fs21);
    }
    #test .example .box {
        flex: 1 0 40%;
    }
    #test .example .box h4 {
        font-size: var(--fs15);
    }
}





/*	===================================================================
	プロフェッショナルカウンセリング
=================================================================== */
#counseling {
    background: var(--gray-light);
}
#counseling .bg01 {
    top: 30vw;
}
#counseling .bg02 {
    top: 150vw;
    scale: -1 1;
}
#counseling .wrap {
    padding-inline: 0;
}
#counseling .block:where(#method, #report) {
    padding: 0;
    display: flex;
    align-items: center;
}
#counseling .block:where(#method, #report)::before {
    width: min(83.333vw, 1000px);
}
#counseling .block:where(#report)::before {
    left: auto;
    right: 0;
}
#counseling .block:where(#method, #report)::after {
    width: min(66.66vw, 800px);
    left: 10%;
    translate: none;
}
#counseling .block:where(#report)::after {
    left: auto;
    right: 10%;
}
#counseling .block:where(#method, #report) img {
    width: min(45vw, 540px);
    flex-shrink: 0;
    border-radius: var(--radius);
}
#counseling .block:where(#method, #report) .text {
    padding-inline: var(--m2);
}
#counseling .block:where(#method, #report) h3 {
    margin-bottom: var(--m);
}
#counseling .block:where(#method) h3 {
    font-size: var(--fs27);
    letter-spacing: 0;
}
#counseling .block:where(#report) h3 {
    font-size: var(--fs30);
}
#counseling .container:where(#menu) {
    margin-block: var(--m8);
    display: flex;
    justify-content: space-between;
    align-items: stretch;
}
#counseling .container:where(#menu) .block {
    flex: 0 0 min(30vw, 360px);
    margin-top: calc( var(--m) * 2.5 );
    padding-top: 0;
}
#counseling .container:where(#menu) img[src*="image"] {
    width: min(20vw, 240px);
    margin-top: calc( -1 * var(--m) * 2.5 );
    margin-inline: auto;
}
#counseling .container:where(#menu) img[src*="icon"] {
    width: min(4.75vw, 57px);
    margin-block: var(--m);
    margin-inline: auto;
}
#counseling .container:where(#menu) h3 {
    font-size: var(--fs24);
}

#counseling .block:where(#counselor) {
    margin-top: var(--m4);
    padding: var(--m2);
}
#counseling .block:where(#counselor) .container {
    margin-top: var(--m2);
    display: flex;
    justify-content: space-between;
    gap: var(--m);
}
#counseling .block:where(#counselor) .block {
    flex: 0 0 min(28.33vw, 340px);
}
#counseling .block:where(#counselor) h4 {
    margin-block: var(--m);
    font-size: var(--fs24);
    font-weight: 500;
    text-align: center;
}
#counseling .block:where(#counselor) .label {
    width: fit-content;
    padding-inline: 1ic;
    border-radius: 0.5lh;
    margin-inline: auto;
    margin-bottom: var(--m);
    color: white;
    font-weight: bold;
    letter-spacing: 0.1ic;

    position: relative;
}
#counseling .block:where(#counselor01) .label {
    background: linear-gradient(45deg, var(--gradient-green));
}
#counseling .block:where(#counselor02) .label {
    background: linear-gradient(45deg, var(--gradient-pink));
}
#counseling .block:where(#counselor03) .label {
    background: linear-gradient(45deg, var(--gradient-purple));
}
#counseling .block:where(#counselor) .label::before {
    content: "専門";
    display: block;
    width: fit-content;
    color: var(--black);
    font-size: 75%;
    font-weight: 400;

    position: absolute;
    bottom: 100%;
    left: 50%;
    translate: -50% 0;
}

@media screen and (min-width: 768px) {
    #counseling .block:where(#method) {
        flex-direction: row-reverse;
    }
    #counseling .block:where(#method) img {
        translate: 0 var(--m2);
    }
    #counseling .block:where(#report) img {
        translate: 0 calc( -1 * var(--m2));
    }
    #counseling .container:where(#menu) .block:first-child {
        translate: 0 calc( -1 * var(--m4) );
    }
    #counseling .container:where(#menu) .block:last-child {
        translate: 0 var(--m4);
    }
    #counseling .block:where(#counselor) h3 {
        width: fit-content;
        padding-inline: 3ic;
        margin-inline: auto;
    }
}

@media screen and (max-width: 767px) {
    #counseling .bg01 {
        top: 15%;
    }
    #counseling .bg02 {
        top: 47%;
    }
    #counseling .wrap {
        padding-inline: var(--m);
    }
    #counseling .block:where(#method, #report) {
        flex-direction: column;
    }
    #counseling .block:where(#method, #report)::before {
        width: 100%;
    }
    #counseling .block:where(#method, #report) img {
        width: 100%;
        margin-bottom: calc(var(--m) * 1.5);
        border-radius: var(--radius) var(--radius) 0 0;
    }
    #counseling .block:where(#method, #report) .text {
        padding-inline: var(--m);
        padding-bottom: var(--m);
    }
    #counseling .block:where(#method, #report) h3 {
        text-align: center;
    }
    #counseling .block h3 {
        font-size: var(--fs21);
    }
    #counseling .container:where(#menu) {
        margin-block: 0;
        flex-direction: column;
        justify-content: flex-start;
        align-items: center;
    }
    #counseling .container:where(#menu) .block {
        margin-top: var(--m5);
    }
    #counseling .container:where(#menu) img[src*="image"] {
        margin-top: calc( -1 * var(--m3) );
        width: 48vw;
    }
    #counseling .container:where(#menu) img[src*="icon"] {
        width: 12vw;
        margin-block: 0.5lh;
    }
    #counseling .block:where(#report, #counselor) {
        margin-top: var(--m3);
    }
    #counseling .block:where(#report) h3 {
        letter-spacing: 0;
    }
    #counseling .block:where(#counselor) {
        padding: calc(var(--m) * 1.5) var(--m) var(--m);
    }
    #counseling .block:where(#counselor)::after {
        height: 3%;
    }
    #counseling .block:where(#counselor) .container {
        margin-top: var(--m);
        flex-direction: column;
        justify-content: flex-start;
        gap: var(--m2);
    }
    #counseling .block:where(#counselor) .block {
        width: 100%;
    }
    #counseling .block:where(#counselor) h4 {
        margin-top: 0.5lh;
        font-size: var(--fs18);
    }
}





/*	===================================================================
	サービスの流れ
=================================================================== */
#step {
    z-index: 1;
}
#step .bg01 {
    top: 20vw;
}
#step .bg02 {
    top: 110vw;
    scale: -1 1;
}

#step > h3 {
    width: fit-content;
    padding-inline: 1ic;
    border-radius: 1lh;
    background: linear-gradient(45deg, var(--gradient-pink));
    margin-inline: auto;

    color: white;
    font-size: var(--fs30);
}
#step .container {
    margin-top: var(--m3);
}
#step .block {
    display: flex;
    gap: var(--m2);
}
#step .block + .block {
    margin-top: var(--m3);
}
#step .block > img {
    width: min(28.33vw, 340px);
}
#step .block .text {
    flex: 1 0 50%;
    letter-spacing: -0.01ic;
}
#step .block h3.caption {
    margin-bottom: var(--m);
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    gap: var(--m);

    font-size: var(--fs24);
}
#step .block h3 img {
    width: min(5.5vw, 66px);
}

@media screen and (min-width: 768px) {
    #step .block:nth-child(even) {
        flex-direction: row-reverse;
    }
    #step .block h3.caption {
        text-align: left;
    }
    #step .caption::after {
        display: none;
    }
}

@media screen and (max-width: 767px) {
    #step .bg01 {
        top: 20%;
    }
    #step .bg02 {
        top: 50%;
    }
    #step > h3 {
        padding-inline: 0.5ic;
        font-size: var(--fs22);
    }
    #step .container {
        margin-top: var(--m2);
    }
    #step .block {
        flex-direction: column;
        gap: 0;
    }
    #step .block + .block {
        margin-top: var(--m2);
    }
    #step .block > img {
        width: 80%;
        margin-inline: auto;
    }
    #step .block h3.caption {
        margin-block: calc(-1 * var(--m)) 0.5lh;
        flex-direction: column;
        gap: 0.25lh;
        font-size: var(--fs21);
        text-align: center;
    }
    #step .caption::after {
        margin-block: 0.25lh;
        background: linear-gradient(to right, var(--gradient-pink));
    }
    #step .block h3 img {
        width: 12vw;
    }
}


/*	===================================================================
	料金プラン
=================================================================== */

#price {
    background: var(--gray-light);
}
#price .bg01 {
    top: -45vw;
}
#price .bg02 {
    top: 45vw;
}

#price .container {
    --gap: calc( var(--m) * 0.5 );
    display: flex;
    justify-content: flex-end;
    align-items: flex-start;
    gap: var(--gap);
}
#price .block {
    width: min(37.5vw, 450px);
    padding: 0;
}
#price .block:where(#price-basic) {
    --heading-bg: var(--gradient-green);
}
#price .block:where(#price-advanced) {
    --heading-bg: var(--gradient-pink);
}
#price .block h3 {
    background: linear-gradient(45deg, var(--heading-bg));
    border-radius: var(--radius) var(--radius) 0 0;
    color: white;
    font-size: var(--fs30);
    font-weight: normal;
    line-height: 2;
    text-align: center;
}
#price .block h3 span {
    font-size: var(--fs18);
}
#price .block dl {
    position: relative;
}
#price .block :is(dt, dd) {
    height: min(10vw, 120px);
    display: flex;
    flex-direction: column;
    justify-content: center;
}
#price .block dt {
    width: min(17.5vw, 210px);

    position: absolute;
    top: 0;
    right: calc( 100% + var(--gap) );
}
#price .block dd {
    margin-inline: var(--m);
    align-items: center;
}
#price .price {
    font-size: var(--fs30);
    font-weight: 400;
}
#price dl:nth-child(2) .price {
    font-size: var(--fs36);
}
#price .price span {
    margin-left: 0.25ic;
    font-size: var(--fs18);
    font-weight: 400;
}
#price .note {
    color: var(--gray);
    font-size: 75%;

}
@media screen and (min-width: 768px) {
    #price .block dl:not(:nth-child(2)) :is(dt, dd) {
        border-top: 1px solid var(--border);
    }
    #price .block:not(:first-child) dt {
        display: none;
    }
}
@media screen and (max-width: 767px) {
    #price .bg01 {
        top: -10%;
    }
    #price .bg02 {
        top: 40%;
    }
    #price .container {
        --gap: var(--m3);
        flex-direction: column;
    }
    #price .block {
        width: 100%;
    }
    #price .block dl {
        padding-block: 0.5lh;
        padding-inline: var(--m);
    }
    #price .block dl:not(:first-child) {
        border-top: 1px solid var(--border);
    }
    #price .block :is(dt, dd) {
        height: auto;
    }
    #price .block dl:not(:nth-child(2)) :is(dt, dd) {}
    #price .block dt {
        width: 100%;
        padding-bottom: 0.5lh;
        position: static;
        text-align: center;
    }
    #price .block h4 {
        width: fit-content;
        padding-block: 0.25lh;
        padding-inline: 1ic;
        border-radius: 0.3lh;
        background: linear-gradient(45deg, var(--heading-bg));
        margin-inline: auto;
        color: white;
        font-size: var(--fs15);
        line-height: 1.25;
    }
    #price .block dd {
        margin-inline: 0;
    }

    #price .price {
        font-size: var(--fs27);
        font-weight: 400;
    }
    #price .price span {
        font-size: var(--fs15);
    }
}






/*	===================================================================
	お客さまの声
=================================================================== */
#review {
    background: rgba(255,255,255,.3);
    z-index: 1;
}
#review .container {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: stretch;
    gap: var(--m);
}
#review .block {
    flex: 1 0 min(26.666vw, 320px); 
    padding: var(--m);
}
#review .image {
    width: min(20vw, 240px);
    margin-inline: auto;
    position: relative;
}
#review .image img[src*="icon"] {
    width: min(4.5vw, 54px);

    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
    z-index: 10;
}
#review h3 {
    margin-top: var(--m);
    font-size: var(--fs21);
}
#review p {}


@media screen and (max-width: 767px) {
    #review .container {
        flex-direction: column;
        justify-content: flex-start;
        align-items: center;
        gap: var(--m);
    }
    #review .block {
        padding-inline: 0;
    }
    #review .image {
        width: 48vw;
    }
    #review .image img[src*="icon"] {
        width: 16vw;
    }
    #review h3 {
        margin-top: 0.5lh;
    }
}





/*	===================================================================
	よくある質問
=================================================================== */
#faq {
    background: var(--gray-light);
}

#faq .bg {
    top: -45vw;
    scale: -1 1;
}




@media screen and (max-width: 767px) {
    #faq .bg {
        top: 20%;
    }
}





/*	===================================================================
	お問い合せ
=================================================================== */
#contact {
    overflow-y: clip;
}
#contact .bg01 {
    top: 5vw;
}
#contact .bg02 {
    top: 90vw;
    scale: -1 1;
}
#contact form {
    padding-block: var(--m2);
    background: rgba(255,255,255,.4);
    border-radius: var(--radius);
    box-shadow: inset 0 0 var(--m) var(--m) rgba(255,255,255,.7);
}




@media screen and (max-width: 767px) {
    #contact .bg01 {
        top: 20%;
    }
    #contact .bg02 {
        top: 70%;
    }
    #contact .wrap {
        padding-inline: var(--fs15);
    }
    #contact form {
        padding-block: var(--m);
    }
    #contact form dl:last-of-type dt {
        padding-top: var(--m2);
    }
    #contact form dl:last-of-type dt::before {
        top: auto;
        bottom: 0;
        right: auto;
        left: 0;
        transform-origin: top left;
    }
    #contact form dl:last-of-type dd {
        padding-top: 0;
    }
}

