@charset "utf-8";

/* Windows用デフォルト */
@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');
}

:root {
    --white: #fff;
    --black: #000;
    --gray: #f4f7f9;
    --main: #41aaba;
    --accent: #faedb5;

    font-size: 62.5%;
}

h1, h2, h3, h4, h5, h6 {
	margin: 0;
	font-weight: normal;
}

p {
	margin: 0;
	padding: 0;
}
a,
a:link {
    color: var(--black);
    text-decoration: none;
}
img {
    width: 100%;
	vertical-align: top;
	object-fit: contain;
}
strong {
    font-weight: normal;
}
br[sp] {
	display: none;
}

html {
	scroll-behavior: smooth;
}
body {
	width: 100%;
	min-height: 100%;
    background-color: var(--gray);

	font-family: YuMincho,    /* Macの游明朝 */
				 'Yu Mincho', /* Windowsの游明朝 */
				 'MS Mincho', /* 游明朝がないWindows（MS PMinchoなら字詰めされる） */
				 serif;
	font-size: 1.8rem;
	line-height: 1.75;
	color: var(--black);
	letter-spacing: 0.1em;

	position: relative;
}
.wrap {
    /*width: 900px;*/
	width: auto;
	max-width: 900px;
    margin-right: auto;
    margin-left: auto;
}
.marker {
    display: inline;
    background: linear-gradient(transparent 65%, var(--accent) 0%);
}

.headline {
    padding-top: 75px;
    padding-bottom: 39px;
    font-size: 3.0rem;
    text-align: center;
}








/*
    Header
======================================================================*/
.header {
    width: 100%;
    height: 100vh;

    position: relative;
}
.header-copy {
	padding: 0.5rem 2rem;
	font-size: clamp(1rem, 2vw, 2rem);
	letter-spacing: clamp(0em, 0.02vw, 0.1em);
	background:var(--gray);
	/*
		line-height: 1.75
		height = 2rem * 1.75 + 0.5rem * 2
	*/
}

.header-logo {
    width: 300px;

    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate( -50%, -50% );

    z-index: 10;
}

.header-slider,
.header-slider .cell,
.header-slider .cell .image {
    width: 100%;
    height: calc( 100vh - 63px );
}
.header-slider .cell {
    position: relative;
}
.header-slider .cell [class^="label"] {
    position: absolute;
    width: auto;
    height: 33px;
    object-fit: cover;
}
.header-slider .cell .label01 {
    top: 50%;
    left: 0;
    transform: translate(0, -200%);
}
.header-slider .cell .label02 {
    top: 50%;
    left: 0;
    transform: translate(0, 100%);
}
.header-slider .cell .label03 {
    top: 50%;
    right: 0;
    transform: translate(0, -200%);
}
.header-slider .cell .label04 {
    top: 50%;
    right: 0;
    transform: translate(0, 100%);
}

.header-slider .cell .image {
    object-fit: cover;
}


.header-nav {
    background-color: var(--main);
}
.header-nav .burger {
    display: none;
}
.header-nav .wrap {
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
}
.header-nav a {
    display: block;
    width: -moz-fit-content;
    width: fit-content;
    box-sizing: border-box;
    padding: 21px 30px;

    color: var(--white);
    font-size: 1.75rem;
    letter-spacing: 0;

    background-color: rgba(255, 255, 255, 0);
    transition: background-color 1.2s 0.2s ease, color 0.6s 0.2s ease;
}
.header-nav a:hover {
    color: var(--main);
    background-color: rgba(255, 255, 255, 1);
    transition: background-color 1s 0s ease, color 0.5s 0s ease;
}

/*
    追従CTA
======================================================================*/
.fixed-cta {
	width: 30%;
	max-width: 258px;
    position: fixed;
    top: 0;
    right: 0;
	z-index: 100;
}
.fixed-cta a {
	display: block;
}
.fixed-cta img {
	display: block;
}
.fixed-cta a[href*="tel:"] {
	pointer-events: none;
}
.fixed-cta a:last-child {
	border-bottom-left-radius: 5px;
	overflow: hidden;
}
@media (any-hover: hover) {
	.fixed-cta a {
		position: relative;
		z-index: 0;
	}
	.fixed-cta img {
		transition: 0.5s 0s ease;
	}
	.fixed-cta a::after {
		content: "";
		display: block;
		background: var(--white);
		position: absolute;
		inset: 0;
		z-index: -1;
	}
	.fixed-cta a:hover img {
		opacity: 0.8;
	}
}



/*
    About
======================================================================*/
.about {
    background-color: var(--gray);
}

.about .headline {
	padding-top: 90px;
	padding-bottom: 40px;
}
.about-block {
    position: relative;
	container-type: inline-size;
}
.about-block .text {
    /*width: 350px;*/
	width: 38.88%;
    min-height: 350px;
    box-sizing: border-box;
    /*padding: 58px;*/
	padding: min(5cqw, 58px);
    background-color: var(--white);

    display: flex;
    flex-flow: column wrap;
    justify-content: center;
    align-items: flex-start;

    position: absolute;
    top: 50%;
    right: 0;
    z-index: 11;

    transform: translate(0, -50%);
}
.about-block .text .label {
    color: var(--white);
    font-size: 1.6rem;

    width: -moz-fit-content;
    width: fit-content;
    border-radius: 5px;
    padding: 0 12px;
    background-color: var(--main);

    margin-bottom: 12px;
}
.about-block .text .title {
    font-size: 2.8rem;

}
.about-block .text p {
    margin-top: 6px;
    border-top: 1px solid #b3b3b3;
    padding-top: 12px;

    font-family: -apple-system, blinkMacSystemFont,"Helvetica Neue",Roboto,"Segoe UI", "Hiragino Kaku Gothic ProN","Hiragino Sans",Meiryo,sans-serif;
    font-size: 1.4rem;
}
.about-block .image {
    /*width: 650px;*/
	width: 72.22%;
    /*height: 400px;*/
	aspect-ratio: 650 / 400;

    position: relative;
    z-index: 10;
}



/*
    Footer
======================================================================*/
.footer {
    margin-top: 100px;
}
.footer .copyright {
    padding: 12px 0;
    background-color: var(--main);

    color: var(--white);
    font-family: -apple-system, blinkMacSystemFont,"Helvetica Neue",Roboto,"Segoe UI", "Hiragino Kaku Gothic ProN","Hiragino Sans",Meiryo,sans-serif;
    font-size: 1.35rem;
    text-align: center;

}


/*
    page
======================================================================*/
body.page .header {
	height: auto;
}
body.page .header-logo {
	width: 35svh;
	min-width: 180px;
	top: calc(50% - (2rem * 1.75 + 0.5rem * 2) / 4 );
}
.header-billboard {
	height: 40svh;
	min-height: 200px;
}
.header-billboard img.image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}



/*
    contact
======================================================================*/
.grecaptcha-badge {
	z-index: 120;
}

.contact-notice {
	width: 80%;
	margin-inline: auto;
	color: var(--alert, red);
	font-size: 1.5rem;
}
form dl {
	width: 80%;
	margin-inline: auto;
}
form dl + dl {
	margin-top: 30px;
}
form dt {
    position: relative;
}
form dl:has([required]) dt::before {
	content: var(--item-text, "必須");
	display: block;
	padding-inline: 0.5ic;
	background: var(--alert, red);
    color: var(--white, white);
	font-size: 75%;
    font-weight: 500;

    position: absolute;
    top: 0;
    right: 0;
}
form dd {
	-webkit-margin-start: 0;
	margin-inline-start: 0;
}
form dd:has(label:nth-child(2)) {
	display: flex;
	gap: 30px;
}
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 :is(input:is([type="text"], [type="email"], [type="tel"], [type="url"]), textarea) {
	width: 100%;
	box-sizing: border-box;
    padding-block: 0.5lh;
	padding-inline: 0.5ic;
}
form :is(input, textarea)::placeholder,
option[disabled] {
    color: var(--gray, gray);
}
form textarea {
	min-height: 10lh;
	field-sizing: content;
}
.privacy-agree {
	width: 80%;
	margin-inline: auto;
	margin-block-start: 30px;
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.privacy-agree::after {
	content: var(--item-text, "必須");
	padding-inline: 0.5ic;
	background: var(--alert, red);
	color: var(--white, white);
	font-size: 75%;
	font-weight: 500;
	flex-shrink: 0;
}
.privacy-agree a {
	text-decoration: underline;
}
form button {
	border: none;
	cursor: pointer;

	display: block;
	width: fit-content;
	padding: 20px 30px;
	background: var(--main);
	border-radius: 3px;
	margin-block: 30px 90px;
	margin-inline: auto;
	color: var(--white);
	font-size: 1.75rem;
	text-decoration: none;
}

@media (any-hover: hover) {
	form button {
		transition: 0.6s 0.2s ease, background-color 1.2s 0.2s ease;
	}
	form button:hover {
		color: var(--main);
		background: var(--white);
		box-shadow: inset 0 0 0 2px var(--main);
	}
}

/*
    thanks
======================================================================*/
section.thanks .nav-home {
	display: block;
	width: fit-content;
	padding: 20px 30px;
	background: var(--main);
	border-radius: 3px;
	margin-block: 30px 90px;
	margin-inline: auto;
	color: var(--white);
	font-size: 1.75rem;
	text-decoration: none;
}
@media (any-hover: hover) {
	section.thanks .nav-home {
		transition: 0.6s 0.2s ease, background-color 1.2s 0.2s ease;
	}
	section.thanks .nav-home:hover {
		color: var(--main);
		background: var(--white);
		box-shadow: inset 0 0 0 2px var(--main);
	}
}