@charset 'UTF-8';

/* ---------------------------------------------------------

	hvrpf
	Date: 2026.08.03

	01. settings
	02. layout
	03. header
	04. footer
	05. module
	06. home
	07. about
	08. offices
	09. recruit
	10. contact
	11. others

--------------------------------------------------------- */

/* ---------------------------------------------------------

	01. settings

--------------------------------------------------------- */
@font-face {
	font-family: "Local Noto Sans JP";
	src:
		local("Noto Sans JP"),
		/* Windows用 */ local("Noto Sans CJK JP Regular") /* Android用 */;
}

html {
	position: relative;
	font-family: "Local Noto Sans JP", "Noto Sans JP", sans-serif;
	font-size: 100%;
	font-weight: 400;
	color: var(--color-text-default);
	-webkit-font-smoothing: antialiased;
}

body {
	font-size: 0.875rem;
	font-feature-settings: "palt";
	line-break: strict;
	word-break: normal;
	overflow-wrap: anywhere;
	background-color: var(--color-background-primary);

	@media (768px <= width) {
		font-size: 1rem;
	}
}

a {
	color: var(--color-text-default);
	text-decoration: none;
}

:root {
	--color-text-default: #2f4b5d;
	--color-background-primary: #faf8f1;
	--color-background-secondary: #f5f1e5;
	--color-background-tertiary: #b38e52;
	--color-background-gradient-1: #c2e5e9;
	--color-background-gradient-2: #d0e9e2;
	--color-background-gradient-3: #deeddb;
	--color-background-gradient-4: #eef1d3;
	--color-button-primary: #58b5c9;
	--color-border-default: #ded8c2;
}

/* ---------------------------------------------------------

	02. layout

--------------------------------------------------------- */
:root {
	--layout-content-width: 62.5rem;
	--layout-header-height: 5.625rem;
	--layout-padding-inline: 1.25rem;
	--z-index-header: 10;

	@media (768px <= width) {
		--layout-padding-inline: 2rem;
	}

	@media (1024px <= width) {
		--layout-header-height: 8.75rem;
	}
}

.layout-body {
	position: relative;
	display: block grid;
	grid-template:
		"header" auto
		"main" 1fr
		"footer" auto / 100%;
	min-block-size: 100dvb;
	overflow-inline: clip;

	@media (width < 768px) {
		padding-block-end: 20%;
	}
}

.layout-header {
	position: sticky;
	inset-block-start: 0;
	z-index: var(--z-index-header);
	grid-area: header;
	height: var(--layout-header-height);
}

.layout-main {
	position: relative;
	z-index: 0;
	grid-area: main;
	padding-bottom: 4.5em;

	@media (768px <= width) {
		padding-bottom: 7.5em;
	}
}

.layout-footer {
	position: relative;
	z-index: 0;
	grid-area: footer;
}

.layout-frame {
	position: relative;
	max-width: calc(var(--layout-content-width) + var(--layout-padding-inline) * 2);
	padding-inline: var(--layout-padding-inline);
	margin-inline: auto;
}

.layout-frame-wide {
	--layout-content-width: 75rem;
}

.layout-frame-narrow {
	--layout-content-width: 50rem;
}

.layout-section {
	padding-block: 3rem;

	@media (768px <= width) {
		padding-block: 7.5rem;
	}
}

/* ===============================================
	layout ： less than 768px
=============================================== */
@media (width < 768px) {
	.layout-only-md,
	.layout-only-lg,
	.layout-over-md {
		display: none;
	}
}

/* ===============================================
	layout ： 768px or more
=============================================== */
@media (768px <= width) {
	.layout-only-sm {
		display: none;
	}
}

/* ===============================================
	layout ： less than 1024px
=============================================== */
@media (width < 1024px) {
	.layout-only-lg {
		display: none;
	}
}

/* ===============================================
	layout ： 1024px or more
=============================================== */
@media (1024px <= width) {
	.layout-only-md,
	.layout-under-md {
		display: none;
	}
}

/* ---------------------------------------------------------

	03. header

--------------------------------------------------------- */
.header-wrap {
	display: grid;
	align-items: center;
	background-color: var(--color-background-primary);
}

.header-wrap > .layout-frame {
	display: grid;
	grid-template-columns: repeat(2, auto);
	align-items: center;
	justify-content: space-between;
	width: 100%;
}

.header-logo {
	margin-block: 0;
}

.header-logo a {
	display: block;
	width: 15.8rem;
	height: 3.25rem;
	overflow: hidden;
	text-indent: 100%;
	white-space: nowrap;
	background-color: var(--color-text-default);
	mask: url("../img/common/logo.svg") left center/contain no-repeat;

	@media (1024px <= width) {
		width: 17.3rem;
		height: 3.575rem;
	}

	@media (1200px <= width) {
		width: 21.3rem;
		height: 4.375rem;
	}

	@media (any-hover: hover) {
		transition: background-color 0.3s ease;

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

.header-menu > .menu-item > a[href="#"] {
	pointer-events: none;
}

.header-menu-title[href="#"] {
	pointer-events: none;
}

/* ===============================================
	header ： less than 1024px
=============================================== */
@media (width < 1024px) {
	.layout-body:has(dialog[open]) {
		overflow: hidden;
	}

	.header-menu-panel {
		--menu-interaction-delay: 0s;

		position: fixed;
		inset: 0;
		z-index: var(--z-index-header);
		width: 100%;
		height: 100dvb;
		padding: var(--layout-header-height) calc(2 * var(--layout-padding-inline));
		color: #fff;
		pointer-events: none;
		background-color: rgb(43 48 55 / 90%);
		opacity: 0;
		transition:
			opacity 0.3s,
			display 0.3s allow-discrete,
			overlay 0.3s allow-discrete,
			interactivity 0s var(--menu-interaction-delay) allow-discrete,
			pointer-events 0s var(--menu-interaction-delay) allow-discrete;
		interactivity: inert;
		transition-behavior: allow-discrete;

		&::backdrop {
			opacity: 0;
			transition: opacity 0.3s;
		}

		&[open] {
			--menu-interaction-delay: 0.3s;

			pointer-events: auto;
			interactivity: auto;
			opacity: 1;

			&::backdrop {
				opacity: 1;
			}

			@starting-style {
				pointer-events: none;
				interactivity: inert;
				opacity: 0;

				&::backdrop {
					opacity: 0;
				}
			}
		}
	}

	.header-menu-wrap {
		max-width: 22rem;
		margin-inline: auto;
	}

	.header-menu {
		border-block-start: 1px solid rgb(255 255 255 / 20%);

		& > .menu-item {
			border-block-end: 1px solid rgb(255 255 255 / 20%);
		}

		a {
			color: #fff;
		}

		& > .menu-item > a {
			display: block;
			padding: 1rem 1rem 0.5rem;
			font-size: 1.125rem;
			font-weight: 700;
		}

		& > .menu-item > a:not(:has(+ .sub-menu)) {
			padding-block-end: 1rem;
		}

		.sub-menu {
			display: grid;
			grid-template-columns: repeat(2, auto);
			gap: 1em 1.5em;
			padding: 0.5rem 1rem 1.5rem;
		}

		.sub-menu > .menu-item > a {
			font-size: 0.9375rem;
			font-weight: 500;
		}

		.header-menu-offices .sub-menu {
			grid-template-columns: 1fr;
		}
	}

	.header-menu-switch,
	.header-menu-close {
		position: relative;
		display: grid;
		place-items: end center;
		width: 3.25rem;
		height: 3.25rem;
		padding: 0;
		padding-block-end: 0.5em;
		overflow: hidden;
		font-size: 0.75rem;
		font-weight: 700;
		color: var(--color-text-default);
		text-transform: uppercase;
		white-space: nowrap;
		appearance: none;
		background-color: #fff;
		border: 1px solid var(--color-text-default);
		border-radius: 50%;
		box-shadow: 1px 1px 0 currentcolor;
	}

	.header-menu-switch::before {
		position: absolute;
		inset: 0;
		top: -1.25em;
		width: 1.125rem;
		height: 2px;
		margin: auto;
		content: "";
		background-color: var(--color-text-default);
		box-shadow:
			0 -7px 0 currentcolor,
			0 7px 0 currentcolor;
	}

	.header-menu-close {
		position: fixed;
		top: calc((var(--layout-header-height) / 2) - 1.625rem);
		right: var(--layout-padding-inline);
	}

	.header-menu-close::before,
	.header-menu-close::after {
		position: absolute;
		inset: 0;
		top: -1.25em;
		width: 1.5rem;
		height: 2px;
		margin: auto;
		content: "";
		background-color: var(--color-text-default);
	}

	.header-menu-close::before {
		rotate: 45deg;
	}

	.header-menu-close::after {
		rotate: -45deg;
	}

	.module-button-contact {
		width: fit-content;
		margin-block-start: 1.5em;
		margin-inline: auto;
	}

	.module-button-contact a {
		display: grid;
		grid-template-columns: repeat(2, auto);
		column-gap: 0.5em;
		place-content: center;
		align-items: center;
		padding: 0.6em 1.25em 0.7em;
		font-size: 1.125rem;
		font-weight: 600;
		color: #fff;
		background-color: var(--color-button-primary);
		border-radius: 0.5rem;
	}

	.module-button-contact a::before {
		display: block;
		width: 1.125em;
		height: 1.125em;
		margin-block-start: 0.25em;
		content: "";
		background: url("../img/common/icon_contact.svg") center/contain no-repeat;
	}
}

/* ===============================================
	header ： 1024px or more
=============================================== */
@media (1024px <= width) {
	.header-wrap > .layout-frame {
		align-items: end;
		padding-top: 1em;
	}

	.header-menu-switch,
	.header-menu-close {
		display: none;
	}

	.header-menu-panel {
		position: static;
		inset: auto;
		width: auto;
		max-width: none;
		height: auto;
		max-height: none;
		padding: 0;
		margin: 0;
		color: inherit;
		pointer-events: auto;
		background: transparent;
		border: none;
		opacity: 1;
		transition: none;
		interactivity: auto;

		&::backdrop {
			display: none;
		}
	}

	.header-menu {
		display: flex;
		align-items: center;
		border-inline-start: 1px solid var(--color-border-default);

		& > .menu-item {
			position: relative;
			border-inline-end: 1px solid var(--color-border-default);
		}

		& > .menu-item > a {
			display: block;
			width: 8rem;
			padding: 0.5em;
			font-size: 1.0625rem;
			font-weight: 700;
			color: var(--color-text-default);
			text-align: center;
		}

		& > .menu-item > a:has(+ .sub-menu)::after {
			position: absolute;
			top: 100%;
			left: 50%;
			display: block;
			width: 0;
			height: 0;
			content: "";
			border: 0.35em solid transparent;
			border-block-start-color: var(--color-text-default);
			translate: -50% 0;
		}

		& > .menu-item > .sub-menu {
			position: absolute;
			inset-block-start: 100%;
			inset-inline-start: 50%;
			z-index: calc(var(--z-index-header) + 1);
			display: none;
			visibility: hidden;
			grid-template-columns: repeat(2, auto);
			gap: 0.75em 2.5em;
			padding: 2em 3em;
			pointer-events: none;
			background-color: #fff;
			border-radius: 1.25rem;
			box-shadow: 0 0.25rem 0.75rem rgb(47 75 93 / 30%);
			opacity: 0;
			translate: -50% 0;
			transition:
				opacity 0.3s,
				visibility 0.3s allow-discrete,
				pointer-events 0.3s allow-discrete;
		}

		& > .menu-item:hover .sub-menu,
		& > .menu-item:focus-within .sub-menu {
			display: grid;
			visibility: visible;
			pointer-events: auto;
			opacity: 1;

			@starting-style {
				visibility: hidden;
				pointer-events: none;
				opacity: 0;
			}
		}

		& > .menu-item > .sub-menu > .menu-item > a {
			font-size: 1.0625rem;
			font-weight: 700;
			white-space: nowrap;
		}

		.header-menu-offices .sub-menu {
			grid-template-columns: 1fr;
		}
	}

	.header-menu-contact {
		position: absolute;
		top: 50%;
		right: var(--layout-padding-inline);
		margin-block-start: 0;
		translate: 0 calc(-1 * var(--layout-header-height) / 2);
	}

	.header-menu-contact a {
		padding-block-start: 0.5em;
		border-top-left-radius: 0;
		border-top-right-radius: 0;
	}
}

/* ===============================================
	header ： 1200px or more
=============================================== */
@media (1200px <= width) {
	.header-menu > .menu-item > a {
		width: 9rem;
	}
}

/* ===============================================
	header ： 1400px or more
=============================================== */
@media (1400px <= width) {
	.header-menu > .menu-item > a {
		width: 10rem;
	}
}

/* ===============================================
	header ： mouse hover
=============================================== */
@media (any-hover: hover) {
	.header-menu > .menu-item > a,
	.header-menu > .menu-item > .sub-menu > .menu-item > a {
		transition: color 0.3s ease;
	}

	.header-menu > .menu-item > a:hover,
	.header-menu > .menu-item > .sub-menu > .menu-item > a:hover {
		color: var(--color-button-primary);
	}
}

/* ---------------------------------------------------------

	04. footer

--------------------------------------------------------- */
.footer-wrapper {
	padding-block: 3em 1.5em;
	background-color: var(--color-background-secondary);

	@media (768px <= width) {
		padding-block: 5em 9em;
	}

	@media (1024px <= width) {
		padding-block-start: 7.5em;
	}

	@media (1400px <= width) {
		padding-block-end: 3em;
	}
}

.footer-information-wrap {
	@media (1024px <= width) {
		display: grid;
		grid-template-columns: repeat(2, auto);
		align-items: center;
		justify-content: space-between;

		--layout-content-width: 53.125em;
	}
}

.footer-logo {
	display: grid;
	width: fit-content;
	margin-inline: auto;
	font-weight: 700;

	@media (1024px <= width) {
		margin-inline: 0;
	}
}

.footer-logo-corporation {
	font-size: 0.75rem;

	@media (768px <= width) {
		font-size: 1rem;
	}
}

.footer-logo-name {
	font-size: 1rem;

	@media (768px <= width) {
		font-size: 1.5rem;
	}
}

.footer-address {
	margin-block-start: 0.5em;
	font-size: 0.8125rem;
	font-weight: 700;
	text-align: center;

	@media (768px <= width) {
		margin-block-start: 0.75em;
		font-size: 1rem;
	}

	@media (1024px <= width) {
		text-align: left;
	}
}

.footer-main-menu {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	margin-block-start: 2em;
	margin-inline: calc(-1 * var(--layout-padding-inline));
	font-size: 0.9375rem;
	font-weight: 700;
	border-block-start: 1px solid var(--color-border-default);

	@media (768px <= width) {
		grid-template-columns: repeat(3, 1fr);
	}

	@media (1024px <= width) {
		grid-template-columns: repeat(2, auto);
		column-gap: 4em;
		justify-content: start;
		margin-block-start: 0;
		margin-inline: 0;
		border-block-start: none;
	}

	& > .menu-item {
		border-block-end: 1px solid var(--color-border-default);

		@media (width < 768px) {
			&:nth-child(odd) {
				border-inline-end: 1px solid var(--color-border-default);
			}
		}

		@media (768px <= width < 1024px) {
			&:nth-child(3n - 2),
			&:nth-child(3n + 2) {
				border-inline-end: 1px solid var(--color-border-default);
			}
		}

		@media (1024px <= width) {
			border-block-end: none;
		}
	}

	& > .menu-item > a {
		display: grid;
		place-content: center;
		padding: 0.7em;

		@media (1024px <= width) {
			justify-content: start;
			padding: 0.5em 0;
			font-size: 1rem;
		}

		@media (any-hover: hover) {
			transition: color 0.3s ease;

			&:hover {
				color: var(--color-button-primary);
			}
		}
	}
}

.footer-sub-menu {
	display: grid;
	row-gap: 0.75em;
	width: fit-content;
	margin-block-start: 3em;
	margin-inline: auto;
	font-size: 0.8125rem;
	font-weight: 700;

	@media (768px <= width) {
		grid-template-columns: repeat(3, auto);
		column-gap: 2em;
		margin-block-start: 4em;
		font-size: 0.8125rem;
	}
}

.footer-sub-menu-item a {
	display: grid;
	grid-template-columns: repeat(2, auto);
	column-gap: 0.3em;
	align-items: center;

	@media (any-hover: hover) {
		transition: color 0.3s ease;

		&:hover {
			color: var(--color-button-primary);
		}
	}
}

.footer-sub-menu-item a[target="_blank"] {
	&::after {
		display: block;
		width: 1em;
		height: 1em;
		content: "";
		background-color: var(--color-text-default);
		mask: url("../img/common/icon_window.svg") center/contain no-repeat;
	}

	@media (any-hover: hover) {
		&::after {
			transition: background-color 0.3s ease;
		}

		&:hover::after {
			background-color: var(--color-button-primary);
		}
	}
}

.footer-copyright {
	margin-block-start: 2.75em;
	font-size: 0.75rem;
	font-weight: 500;
	text-align: center;
	opacity: 0.5;

	@media (768px <= width) {
		margin-block-start: 4em;
		font-size: 0.875rem;
	}
}

/*	footer : fixed menu
--------------------------------------------------------- */
.footer-page-top {
	position: fixed;
	right: 1rem;
	bottom: 5.5rem;
	z-index: var(--z-index-header);
	display: block;
	width: 2.5rem;
	height: 2.5rem;
	overflow: hidden;
	text-indent: 100%;
	white-space: nowrap;
	pointer-events: none;
	background-color: var(--color-text-default);
	border-radius: 50%;
	opacity: 0;
	transition: opacity 0.3s ease;

	&.is-show {
		pointer-events: auto;
		opacity: 1;
	}

	&::before {
		position: absolute;
		inset: 0;
		display: block;
		width: 0.75em;
		height: 0.75em;
		margin: auto;
		content: "";
		border-block-start: 2px solid #fff;
		border-inline-end: 2px solid #fff;
		rotate: -45deg;
		translate: 0 0.125em;
	}

	@media (768px <= width) {
		right: 2rem;
		bottom: 2rem;
		width: 3.75rem;
		height: 3.75rem;

		&::before {
			width: 1.125em;
			height: 1.125em;
			border-block-start-width: 3px;
			border-inline-end-width: 3px;
			translate: 0 0.25em;
		}
	}

	@media (1400px <= width) {
		bottom: 11rem;
	}

	@media (any-hover: hover) {
		transition:
			background-color 0.3s ease,
			opacity 0.3s ease;

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

.footer-banner-recruit {
	position: fixed;
	right: 0;
	bottom: 0;
	z-index: var(--z-index-header);
	width: 100%;

	@media (768px <= width) {
		right: 50%;
		bottom: 1em;
		width: 30rem;
		translate: 50% 0;
	}

	@media (1400px <= width) {
		right: 2rem;
		bottom: 2rem;
		width: 18.125rem;
		translate: 0 0;
	}

	@media (any-hover: hover) {
		transition:
			filter 0.3s ease,
			transform 0.3s ease;

		&:hover {
			filter: brightness(1.05);
			transform: scale(1.05);
		}
	}
}

/* ---------------------------------------------------------

	05. module

--------------------------------------------------------- */

/*	button : outline
--------------------------------------------------------- */
.module-button-outline a,
input.module-button-outline {
	display: flex;
	column-gap: 0.4em;
	align-items: center;
	justify-content: center;
	width: fit-content;
	padding: 0.5em 1em;
	font-size: 1rem;
	font-weight: 700;
	color: var(--color-text-default);
	text-decoration: none;
	background-color: #fff;
	border: 2px solid currentcolor;
	border-radius: 0.5rem;
	box-shadow: 0.125em 0.125em 0 0 currentcolor;

	&::after {
		font-size: 0.6em;
		content: "▶︎";
	}

	@media (768px <= width) {
		border-radius: 0.625rem;
		box-shadow: 0.25em 0.25em 0 0 currentcolor;
	}

	@media (any-hover: hover) {
		transition: color 0.3s ease;

		&:hover {
			color: var(--color-button-primary);
			text-decoration: none;
		}

		&::after {
			transition: transform 0.3s ease;
		}

		&:hover::after {
			transform: translateX(0.25em);
		}
	}
}

.module-button-outline a[href$=".pdf"]::after,
input.module-button-outline[href$=".pdf"]::after {
	width: 1.75em;
	height: 1.75em;
	content: "";
	background-color: currentcolor;
	mask: url("../img/common/icon_pdf.svg") center/contain no-repeat;
}

.module-button-outline-large a,
input.module-button-outline-large {
	padding: 0.75em 1em;
	font-size: 1.125rem;

	@media (768px <= width) {
		padding: 1em 1.5em;
		font-size: 1.125rem;
	}
}

/* button : contact
--------------------------------------------------------- */
:where(.module-button-contact) {
	width: fit-content;
	margin-block-start: 1.5em;
	margin-inline: auto;

	@media (1024px <= width) {
		margin-inline-start: 0;
	}
}

:where(.module-button-contact) a {
	display: grid;
	grid-template-columns: repeat(2, auto);
	column-gap: 0.5em;
	place-content: center;
	align-items: center;
	padding: 0.6em 1.25em 0.7em;
	font-size: 1.125rem;
	font-weight: 600;
	color: #fff;
	background-color: var(--color-button-primary);
	border-radius: 0.5rem;

	&::before {
		display: block;
		width: 1.125em;
		height: 1.125em;
		margin-block-start: 0.25em;
		content: "";
		background: url("../img/common/icon_contact.svg") center/contain no-repeat;
	}

	@media (768px <= width) {
		padding-inline: 1.5em;
		border-radius: 0.625rem;
	}

	@media (1024px <= width) {
		padding: 0.7em 1.75em 0.8em;
	}

	@media (any-hover: hover) {
		transition: filter 0.3s ease;

		&:hover {
			filter: brightness(1.15);
		}
	}
}

/*	module : page header
--------------------------------------------------------- */
.module-page-header {
	height: var(--page-header-height);
	margin-block-end: 1.5em;
	background: linear-gradient(to right, #dfefdb, #bee4eb);

	--page-header-height: 10rem;

	@media (768px <= width) {
		margin-block-end: 2em;

		--page-header-height: 15rem;
	}
}

.module-page-inner {
	display: grid;
	align-items: center;
	height: 100%;
}

.module-page-title {
	margin-block: 0;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.4;

	@media (768px <= width) {
		font-size: 2.375rem;
	}
}

.module-breadcrumbs {
	position: absolute;
	top: 1em;
	right: var(--layout-padding-inline);
	display: flex;
	column-gap: 0.5em;
	width: auto;
	max-width: calc(100% - var(--layout-padding-inline) * 2);
	font-size: 0.75rem;
	white-space: nowrap;

	@media (768px <= width) {
		top: 1.5em;
		column-gap: 0.75em;
		font-size: 0.875rem;
	}
}

.module-breadcrumbs > span:last-child {
	overflow: hidden;
	text-overflow: ellipsis;
	font-weight: 700;
	white-space: nowrap;
}

.module-breadcrumbs a {
	text-decoration: underline;
	text-underline-offset: 0.25em;

	@media (any-hover: hover) {
		transition:
			color 0.3s ease,
			text-decoration-color 0.3s ease;

		&:hover {
			color: var(--color-button-primary);
			text-decoration-color: transparent;
		}
	}
}

/* module : page menu
--------------------------------------------------------- */
.module-page-menu {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
	padding: 1.5rem;
	margin-block-start: 3em;
	background-color: var(--color-background-secondary);
	border-radius: 0.9375rem;

	@media (768px <= width) {
		display: grid;
		grid-template-columns: repeat(auto-fill, minmax(11em, 1fr));
		padding: 1.75rem;
	}
}

.module-page-menu-item {
	flex: 1 1 auto;
}

.module-page-menu-item a {
	display: block;
	padding: 0.5em 0.25em;
	font-size: 1.0625em;
	font-weight: 700;
	text-align: center;
	background-color: var(--color-background-primary);
	border: 1px solid currentcolor;
	border-radius: 0.625em;

	@media (any-hover: hover) {
		transition: color 0.3s ease;

		&:hover {
			color: var(--color-button-primary);
		}
	}
}

.module-page-menu-item.is-current a {
	color: #fff;
	pointer-events: none;
	background-color: var(--color-text-default);
}

/* module : anchor menu
--------------------------------------------------------- */
.module-title-section {
	scroll-margin-block-start: var(--layout-header-height);
}

.module-anchor-list {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 0.3em;
	place-content: center;
	width: fit-content;
	margin-block-start: 2.5em;
	margin-inline: auto;

	@media (768px <= width) {
		margin-block-start: 3.5em;

		&:has(> :nth-child(2):last-child) {
			grid-template-columns: repeat(2, 1fr);
		}

		&:has(> :nth-child(3):last-child) {
			grid-template-columns: repeat(3, 1fr);
		}

		&:has(> :nth-child(4):last-child) {
			grid-template-columns: repeat(4, 1fr);
		}

		&:has(> :nth-child(5):last-child) {
			grid-template-columns: repeat(5, 1fr);
		}

		&:not(:has(> :nth-child(6))) .module-anchor-list-item:first-child a {
			border-top-left-radius: 0.625em;
			border-bottom-left-radius: 0.625em;
		}

		&:not(:has(> :nth-child(6))) .module-anchor-list-item:last-child a {
			border-top-right-radius: 0.625em;
			border-bottom-right-radius: 0.625em;
		}
	}
}

.module-anchor-list-item a {
	display: grid;
	place-items: center;
	min-width: 8em;
	height: 100%;
	min-height: 2.5rem;
	padding: 0.25em 0.5em;
	font-weight: 700;
	line-height: 1.2;
	color: #fff;
	text-align: center;
	background-color: var(--color-background-tertiary);
	border-radius: 0.625em;
	text-box: trim-both cap alphabetic;

	& > span {
		text-box: trim-both cap alphabetic;
	}

	@media (768px <= width) {
		min-height: 3.75rem;
		padding: 0 0.75em;
		font-size: 1em;
		border-radius: 0;
	}

	@media (1024px <= width) {
		min-width: 9em;
		font-size: 1.25em;
	}

	@media (any-hover: hover) {
		transition: filter 0.3s ease;

		&:hover {
			filter: brightness(1.15);
		}
	}
}

.module-anchor-list-item.is-current a {
	pointer-events: none;
	background-color: color-mix(in oklch, var(--color-background-tertiary) 75%, black);
}

.news-anchor-list {
	margin-block-end: 3em;

	@media (768px <= width) {
		margin-block-end: 4em;
	}
}

/* module : page lead
--------------------------------------------------------- */
.module-page-lead {
	line-height: 1.875;
}

/* module : single heading
--------------------------------------------------------- */
.module-single-heading {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	padding-block-start: 1.5rem;

	@media (768px <= width) {
		padding-block-start: 2.5rem;
	}
}

.module-single-title {
	flex-basis: 100%;
	order: 1;
	margin-block: 0.125em 0.5em;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1.5;

	@media (768px <= width) {
		margin-block: 0.25em 0.75em;
		font-size: 2rem;
	}
}

.module-single-date {
	order: 0;
	font-size: 0.875rem;

	@media (768px <= width) {
		font-size: 1rem;
	}
}

.module-single-category {
	order: 2;
}

.module-single-category .post-categories {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
}

.module-single-category a {
	padding-inline: 0.75em;
	font-size: 0.75rem;
	color: var(--color-text-default);
	text-decoration: none;
	border: 1px solid currentcolor;

	@media (768px <= width) {
		display: block;
		width: 100%;
		padding-inline: 0.5em;
		font-size: 0.9375rem;
		text-align: center;
	}

	@media (any-hover: hover) {
		transition: color 0.3s ease;

		&:hover {
			color: var(--color-button-primary);
		}
	}
}

/* module : content
--------------------------------------------------------- */
:where(.module-block-editor-wrap, .module-content-wrap) {
	&:not(:first-child) {
		margin-block-start: 4em;
	}
}

:where(.module-block-editor-wrap) h2.wp-block-heading,
:where(.module-rich-editor-wrap) h2,
:where(.module-content-wrap) .module-title-section {
	position: relative;
	padding-block-end: 0.5em;
	margin-block-end: 1.5em;
	font-size: 1.75em;
	font-weight: 700;
	border-bottom: 1px solid var(--color-text-default);
}

:where(.module-block-editor-wrap) h2.wp-block-heading::after,
:where(.module-rich-editor-wrap) h2::after,
:where(.module-content-wrap) .module-title-section::after {
	position: absolute;
	top: 100%;
	left: 0;
	width: 1.8em;
	height: 0.26em;
	content: "";
	background-color: var(--color-text-default);
	border-bottom-right-radius: 0.3125em;
	border-bottom-left-radius: 0.3125em;
}

:where(.module-block-editor-wrap) * + h2.wp-block-heading,
:where(.module-rich-editor-wrap) * + h2,
:where(.module-content-wrap) * + .module-title-section {
	margin-block-start: 2.5em;
}

:where(.module-block-editor-wrap) h3.wp-block-heading,
:where(.module-rich-editor-wrap:not(.module-table)) h3,
:where(.module-content-wrap) .module-title-main {
	padding-inline-start: 0.5em;
	margin-block-end: 1.5em;
	font-size: 1.125rem;
	font-weight: 700;
	border-inline-start: 5px solid var(--color-text-default);
}

:where(.module-block-editor-wrap) * + h3.wp-block-heading,
:where(.module-rich-editor-wrap:not(.module-table)) * + h3,
:where(.module-content-wrap) * + .module-title-main {
	margin-block-start: 1.75em;
}

:where(.module-rich-editor-wrap.module-table) h3 {
	margin-block-end: 0.25em;
	font-size: 1.125rem;
	font-weight: 700;

	&:not(:first-child) {
		margin-block-start: 1em;
	}
}

:where(.module-block-editor-wrap, .module-rich-editor-wrap, .module-content-wrap) p {
	line-height: 1.875;
}

:where(.module-block-editor-wrap) * + p.wp-block-paragraph,
:where(.module-rich-editor-wrap, .module-content-wrap) * + p {
	margin-block-start: 1.25em;

	.module-rich-editor-wrap.module-table & {
		margin-block-start: 0.5em;
	}
}

:where(.module-block-editor-wrap) ol.wp-block-list,
:where(.module-block-editor-wrap) ul.wp-block-list,
:where(.module-rich-editor-wrap, .module-content-wrap) ol:not([class]),
:where(.module-rich-editor-wrap, .module-content-wrap) ul:not([class]) {
	padding-inline-start: 1.25em;
	line-height: 1.875;

	.module-rich-editor-wrap.module-table & {
		line-height: 1.625;
	}
}

:where(.module-block-editor-wrap) * + ol.wp-block-list,
:where(.module-block-editor-wrap) * + ul.wp-block-list,
:where(.module-rich-editor-wrap, .module-content-wrap) * + ol:not([class]),
:where(.module-rich-editor-wrap, .module-content-wrap) * + ul:not([class]) {
	margin-block-start: 1.25em;

	.module-rich-editor-wrap.module-table & {
		margin-block-start: 0.25em;
	}
}

:where(.module-block-editor-wrap) ol.wp-block-list li,
:where(.module-rich-editor-wrap, .module-content-wrap) ol:not([class]) li {
	list-style: decimal;
}

:where(.module-block-editor-wrap) ul.wp-block-list li,
:where(.module-rich-editor-wrap, .module-content-wrap) ul:not([class]) li {
	list-style: disc;
}

:where(.module-block-editor-wrap) ol.wp-block-list li:not(:first-child),
:where(.module-rich-editor-wrap, .module-content-wrap) ul.wp-block-list li:not(:first-child),
:where(.module-block-editor-wrap) ol:not([class]) li:not(:first-child),
:where(.module-rich-editor-wrap, .module-content-wrap) ul:not([class]) li:not(:first-child) {
	margin-block-start: 0.5em;
}

:where(.module-block-editor-wrap, .module-rich-editor-wrap, .module-content-wrap) a {
	color: var(--color-button-primary);
	text-decoration: underline;
	text-underline-offset: 0.25em;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-buttons {
	margin-block-start: 1.75em;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-buttons .wp-block-button__link {
	margin-block-end: 0.5em;
	font-weight: 700;
	background-color: var(--color-button-primary);

	@media (any-hover: hover) {
		transition: filter 0.3s ease;

		&:hover {
			text-decoration: none;
			filter: brightness(1.15);
		}
	}
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-table {
	margin-block-start: 1.75em;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-table.aligncenter {
	margin-inline: auto;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-table .has-fixed-layout {
	width: auto;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-image {
	&:not(:last-child) {
		margin-block-end: 1.75em;
	}

	&:not(:first-child) {
		margin-block-start: 1.75em;
	}
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-image .wp-element-caption {
	margin-block-start: 0.5em;
	font-size: 0.9375em;
	line-height: 1.75;
	text-align: center;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-gallery {
	margin-block: 1.75em 0;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-embed__wrapper {
	aspect-ratio: 16 / 9;
	margin-block: 1.75em 0;
	overflow: hidden;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-embed__wrapper iframe {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

:where(.module-block-editor-wrap, .module-content-wrap) .wp-block-columns {
	margin-block: 2.5em;
}

:where(.module-block-editor-wrap, .module-rich-editor-wrap) em {
	font-style: italic;
}

:where(.module-block-editor-wrap, .module-rich-editor-wrap) blockquote {
	margin: 1.5em 2em;
}

:where(.module-rich-editor-wrap) hr {
	margin-block: 2em;
	background-color: transparent;
	border: 1px solid var(--color-border-default);

	@media (768px <= width) {
		margin-block: 3em;
	}
}

:where(.module-block-editor-wrap, .module-content-wrap) a:hover {
	text-decoration: underline;
}

/* module : table
--------------------------------------------------------- */
.module-table {
	width: 100%;
	border-collapse: collapse;
}

.module-table th,
.module-table td {
	padding: 1em 1.5em;
	border: 1px solid var(--color-border-default);

	@media (width < 768px) {
		display: block;
	}
}

.module-table th {
	background-color: var(--color-background-secondary);

	@media (width < 768px) {
		border-block-end: none;
	}
}

.module-table td {
	background-color: #fff;

	@media (width < 768px) {
		border-block-start: none;

		tr:not(:last-child) & {
			border-block-end: none;
		}
	}
}

/*	module : news
--------------------------------------------------------- */
.module-news-list {
	display: grid;
	row-gap: 1em;

	@media (768px <= width) {
		row-gap: 1.25em;
	}
}

.module-news-list-item {
	display: grid;
	row-gap: 0.5em;
	align-items: center;
	justify-content: start;
	padding-block-end: 1em;
	border-block-end: 1px solid var(--color-border-default);

	@media (768px <= width) {
		grid-template-columns: 5em 1fr;
		column-gap: 1.5em;
		padding-block-end: 1.25em;
	}
}

.module-news-list-title {
	overflow: hidden;
	text-overflow: ellipsis;
	font-size: 0.875rem;
	font-weight: normal;
	white-space: nowrap;

	a {
		color: var(--color-text-default);
		text-decoration: none;

		@media (any-hover: hover) {
			transition: color 0.3s ease;

			&:hover {
				color: var(--color-button-primary);
			}
		}
	}

	@media (768px <= width) {
		font-size: 1rem;
	}
}

/* module : news : pagination
--------------------------------------------------------- */
.module-pagination-archive {
	margin-block-start: 2.5em;

	@media (768px <= width) {
		margin-block-start: 4em;
	}
}

.module-pagination-archive ul.page-numbers {
	display: flex;
	column-gap: 0.5em;
	align-items: center;
	justify-content: center;

	@media (768px <= width) {
		column-gap: 1em;
	}
}

.module-pagination-archive ul .page-numbers {
	display: grid;
	place-content: center;
	width: 2.5em;
	height: 2.5em;
	font-weight: 700;
	color: var(--color-text-default);
	text-decoration: none;
	background-color: #fff;
	border: 1px solid var(--color-text-default);
	border-radius: 50%;

	@media (768px <= width) {
		width: 3em;
		height: 3em;
	}

	@media (any-hover: hover) {
		transition:
			background-color 0.3s ease,
			border-color 0.3s ease,
			color 0.3s ease;

		&:hover {
			color: #fff;
			background-color: var(--color-button-primary);
			border-color: var(--color-button-primary);
		}
	}
}

.module-pagination-archive ul .page-numbers.current {
	color: #fff;
	background-color: var(--color-button-primary);
	border-color: var(--color-button-primary);
}

.module-pagination-archive ul .page-numbers.next {
	padding-inline-start: 0.125em;
}

/* ---------------------------------------------------------

	06. home

--------------------------------------------------------- */
.home .layout-main {
	padding-block-end: 0;
}

.home-section-box {
	padding: 1.5rem 1.5rem 3.5rem;
	background-color: #fff;
	border-radius: 0.625rem 5rem;

	@media (768px <= width) {
		padding: 4rem 2.5rem 7.5rem;
		border-radius: 1.25rem 7.5rem;
	}

	@media (1024px <= width) {
		padding-inline: 6.125rem;
	}
}

/*	home : section title
--------------------------------------------------------- */
.home-section-title {
	display: grid;
	row-gap: 0.25em;
	justify-items: center;
	margin-block-end: 1.75em;
	font-size: 1rem;
	font-weight: 700;

	&::before {
		display: block;
		width: 1.875em;
		height: 1.875em;
		margin-block-end: 0.25em;
		content: "";
		background: url("../img/common/icon_section_title.svg") center/contain no-repeat;
	}

	@media (768px <= width) {
		margin-block-end: 3.5em;
	}
}

.home-section-title-jp {
	font-size: 1.5625rem;

	@media (768px <= width) {
		font-size: 1.75rem;
	}
}

.home-section-title-en {
	font-size: 0.9375rem;
	color: #c3a87d;

	@media (768px <= width) {
		font-size: 1rem;
	}
}

/*	home : mv
--------------------------------------------------------- */
.home-mv-inner {
	position: relative;

	--home-mv-padding-block-end: 2em;
}

.home-mv-heading {
	position: absolute;
	bottom: calc(var(--layout-padding-inline) + var(--home-mv-padding-block-end));
	left: var(--layout-padding-inline);
	z-index: 2;
	display: grid;
	row-gap: 1em;

	@media (768px <= width) {
		bottom: calc((1.5 * var(--layout-padding-inline)) + var(--home-mv-padding-block-end));
		left: calc(1.5 * var(--layout-padding-inline));
		row-gap: 1.5em;
	}
}

.home-mv-title {
	display: grid;
	row-gap: 0.25em;
	justify-items: start;

	@media (768px <= width) {
		row-gap: 0.5em;
	}
}

.home-mv-title span {
	padding: 0.125em 0.25em 0.25em;
	font-size: 1.875rem;
	font-weight: 700;
	line-height: 1;
	color: #fff;
	background-color: var(--color-background-tertiary);
	border-radius: 5px;

	@media (768px <= width) {
		padding: 0.125em 0.25em 0.25em;
		font-size: 3.4375rem;
	}
}

.home-mv-lead {
	display: grid;
	row-gap: 0.25em;
	justify-content: start;
	justify-items: start;

	@media (768px <= width) {
		row-gap: 0.75em;
	}
}

.home-mv-lead span {
	padding: 0.5em;
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1;
	background-color: #fff;
	border-radius: 5px;

	@media (768px <= width) {
		padding: 0.5em;
		font-size: 1.25rem;
	}
}

.home-mv-slider {
	position: relative;
	padding-block-end: var(--home-mv-padding-block-end);
}

.home-mv-slider .swiper-button-prev,
.home-mv-slider .swiper-button-next {
	display: none;
}

.home-mv-slider .swiper {
	overflow: visible;
}

.home-mv-slider .swiper-wrapper {
	overflow: hidden;
	border-radius: 1.25rem;

	@media (768px <= width) {
		border-radius: 1.875rem;
	}
}

.home-mv-slider .swiper-pagination {
	bottom: -2em;
}

.home-mv-slider .swiper-pagination-bullet {
	width: 2rem;
	height: 0.25rem;
	background-color: #fff;

	@media (768px <= width) {
		width: 2.5rem;
		height: 0.3rem;
	}

	@media (any-hover: hover) {
		transition: background-color 0.3s ease;

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

.home-mv-slider .swiper-pagination-bullet-active {
	pointer-events: none;
	background-color: #c3a87d;
}

/*	home : news
--------------------------------------------------------- */
.home-news {
	padding-block-end: 1rem;

	@media (768px <= width) {
		padding-block-end: 0;
	}
}

.home-news .layout-frame {
	--layout-content-width: 53.75em;
}

.home-news-heading {
	display: grid;
	row-gap: 1.75em;

	@media (768px <= width) {
		grid-template-columns: repeat(2, auto);
		column-gap: 2em;
		align-items: center;
		justify-content: space-between;
	}
}

.home-news-title {
	display: grid;
	grid-template-columns: repeat(2, auto);
	column-gap: 0.5em;
	align-items: baseline;
	justify-content: start;
}

.home-news-title-jp {
	font-size: 1.25rem;
	font-weight: 700;

	@media (768px <= width) {
		font-size: 1.5rem;
	}
}

.home-news-title-en {
	font-size: 0.875rem;
	color: #c3a87d;

	@media (768px <= width) {
		font-size: 1rem;
	}
}

.home-news-category-list {
	display: flex;
	flex-wrap: wrap;
	gap: 1em 0.5em;
	align-items: center;

	@media (768px <= width) {
		justify-content: flex-end;
	}
}

.home-news-category-list-item a {
	padding: 0.25em;
	font-weight: 700;
	background-color: #fff;
	border: 1px solid currentcolor;
	border-radius: 5px;

	@media (768px <= width) {
		padding-inline: 0.75em;
		font-size: 0.9375rem;
	}

	@media (any-hover: hover) {
		transition: color 0.3s ease;

		&:hover {
			color: var(--color-button-primary);
		}
	}
}

.home-news-category-list-item.is-current a {
	color: #fff;
	pointer-events: none;
	background-color: var(--color-text-default);
	border-color: var(--color-text-default);
}

.home-news-list {
	margin-block-start: 2.5em;
}

.home-news-buttons {
	display: flex;
	justify-content: center;
	margin-block-start: 2em;

	@media (768px <= width) {
		margin-block-start: 3em;
	}
}

/*	home : business
--------------------------------------------------------- */
.home-business {
	@media (768px <= width) {
		padding-block-end: 2em;
	}
}

.home-business-inner {
	display: grid;
	row-gap: 4rem;

	@media (768px <= width) {
		grid-template-columns: repeat(2, 1fr);
		column-gap: 3em;
	}

	@media (1024px <= width) {
		column-gap: 4em;
	}
}

.home-business-item a {
	position: relative;
}

.home-business-image {
	border-radius: 5rem 0.625rem;

	@media (1024px <= width) {
		border-radius: 7.5rem 1.25rem;
	}

	@media (any-hover: hover) {
		transition: opacity 0.3s ease;

		&:hover {
			opacity: 0.8;
		}
	}
}

.home-business-title {
	position: absolute;
	bottom: 0;
	left: 50%;
	display: flex;
	column-gap: 0.5em;
	align-items: center;
	width: fit-content;
	padding: 0.5em 0.75em;
	font-size: 1.25rem;
	font-weight: 700;
	color: #fff;
	white-space: nowrap;
	background-color: var(--color-text-default);
	border-radius: 0.5rem;
	translate: -50% 50%;

	&::after {
		font-size: 0.6em;
		content: "▶︎";
	}

	@media (768px <= width) {
		padding: 0.5em 1em;
		font-size: 1.5625rem;
		border-radius: 0.625rem;
	}

	@media (any-hover: hover) {
		transition: background-color 0.3s ease;

		.home-business-item a:hover & {
			background-color: var(--color-button-primary);
		}

		&::after {
			transition: transform 0.3s ease;
		}

		.home-business-item a:hover &::after {
			transform: translateX(0.25em);
		}
	}
}

/*	home : office
--------------------------------------------------------- */
.home-office .layout-frame {
	--layout-content-width: 62.5rem;
}

.home-office-item {
	display: grid;
	row-gap: 1rem;

	@media (768px <= width) {
		grid-template-columns: 1fr 1.4fr;
		column-gap: 2.5em;
	}
}

.home-office-item + .home-office-item {
	margin-block-start: 2.75em;

	@media (768px <= width) {
		margin-block-start: 5.625em;
	}
}

.home-office-image {
	text-align: center;
}

.home-office-image img {
	max-inline-size: 13.5rem;
	border-radius: 0.875rem;

	@media (768px <= width) {
		max-inline-size: 20rem;
		width: 100%;
		border-radius: 1.25rem;
	}
}

.home-office-content {
	@media (width < 768px) {
		width: fit-content;
		margin-inline: auto;
	}
}

.home-office-title {
	padding-block-end: 0.5em;
	margin-block-end: 0.5em;
	font-size: 1rem;
	font-feature-settings: "palt";
	border-block-end: 1px dashed currentcolor;

	@media (768px <= width) {
		font-size: 1.375rem;
	}
}

.home-office-tel a {
	display: grid;
	grid-template-columns: repeat(2, auto);
	column-gap: 0.25em;
	align-items: center;
	justify-content: start;
	font-size: 1.375rem;
	font-weight: 600;

	&::before {
		display: block;
		width: 0.8em;
		height: 0.8em;
		content: "";
		background: url("../img/common/icon_tel.svg") center/contain no-repeat;
	}
}

.home-office-table {
	margin-block-start: 0.25em;
	font-size: 0.8125rem;
}

.home-office-table td:first-child {
	padding-inline-end: 1em;
	vertical-align: top;
	white-space: nowrap;
}

.home-office-buttons {
	display: flex;
	justify-content: center;
	margin-block-start: 1.25em;
}

/* ---------------------------------------------------------

	07. about

--------------------------------------------------------- */

/* 財団について
--------------------------------------------------------- */
.about-column {
	display: grid;
	row-gap: 1.5em;

	@media (768px <= width) {
		grid-template-columns: auto 1fr;
		column-gap: 2.5em;
	}

	@media (1024px <= width) {
		column-gap: 3.5em;
	}
}

.about-column-image {
	text-align: center;
}

.about-column-image img {
	max-inline-size: 13.5rem;
	border-radius: 0.625rem 3.125rem;

	@media (768px <= width) {
		max-inline-size: 16.875rem;
	}
}

.about-column-date {
	text-align: right;
}

.about-column-profile {
	font-size: 0.9375em;
	text-align: right;
}

.about-column-name {
	display: block;
	font-size: 1.75em;
	font-weight: 700;
}

/* 財団概要
--------------------------------------------------------- */
.outline-office-item {
	display: grid;
	grid-template-columns: 1fr;
	row-gap: 2em;
	padding-block-end: 0.5em;

	@media (768px <= width) {
		grid-template-columns: 1fr 1fr;
		gap: 3em;
	}
}

.outline-office-item + .outline-office-item {
	padding-block-start: 2em;
	margin-block-start: 2em;
	border-block-start: 1px dotted var(--color-border-default);

	@media (768px <= width) {
		padding-block-start: 1.5em;
		margin-block-start: 1em;
	}
}

.outline-office-name {
	display: grid;
	row-gap: 0.125em;
}

.outline-office-name-jp {
	font-size: 1.25rem;
	font-weight: 700;
}

.outline-office-name-en {
	font-size: 1rem;
	font-weight: 400;
}

.outline-button-wrap {
	display: flex;
	column-gap: 1.5em;
	margin-block: 1.25em 0.75em;
}

.outline-button-wrap .module-button-outline {
	margin-block-start: 0;
}

.outline-office-map {
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;

	@media (768px <= width) {
		aspect-ratio: auto;
	}
}

.outline-office-map iframe {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.outline-history-year {
	display: grid;
	row-gap: 0.75em;
	line-height: 1.875;

	@media (768px <= width) {
		grid-template-columns: max-content 1fr;
		column-gap: 2em;
	}
}

.outline-history-year + .outline-history-year {
	padding-block-start: 1em;
	margin-block-start: 1.5em;
	border-block-start: 1px dotted var(--color-border-default);
}

.outline-history-year-label {
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--color-background-tertiary);
}

.outline-history-month-wrap {
	display: grid;
	row-gap: 1em;

	@media (768px <= width) {
		padding-block-start: 0.25em;
	}
}

.outline-history-item {
	display: grid;
	grid-template-columns: 2.5em 1fr;
	column-gap: 1em;
	line-height: 1.875;
}

.outline-history-month-label {
	text-align: right;
}

.outline-history-month-none {
	padding-inline-start: 0.75em;
	text-align: center;
}

.outline-history-item p {
	margin-block-start: 0;
}

/* 役員・評議員
--------------------------------------------------------- */
.officers-table th {
	@media (768px <= width) {
		width: 14.5em;
	}
}

/* 組織図
--------------------------------------------------------- */
.organization-image {
	text-align: center;
}

/* 決算公告
--------------------------------------------------------- */
.financials-pdf {
	display: grid;
	grid-template-columns: auto 1fr;
	column-gap: 0.5em;
	align-items: center;
	width: fit-content;
}

.financials-pdf::before {
	display: block;
	width: 2em;
	height: 2em;
	content: "";
	background-color: #e35015;
	mask: url("../img/common/icon_pdf.svg") center/contain no-repeat;
}

/* 訪問看護事業
--------------------------------------------------------- */
.home-care-list {
	display: flex;
	flex-direction: column;
	row-gap: 2em;

	@media (1024px <= width) {
		flex-flow: row wrap;
		gap: 1.5em;
	}
}

.home-care-list-item {
	flex: 1 1 calc((100% - 1.5rem) / 2);
	padding: 2em;
	background-color: #fff;
	border-radius: 0.75rem 2.5rem;

	&:first-child {
		flex-basis: 100%;
	}

	@media (1024px <= width) {
		border-radius: 1.25rem 3.5rem;
	}
}

.home-care-office-wrap {
	display: grid;
	row-gap: 2.5rem;

	@media (1024px <= width) {
		grid-template-columns: 35% 1fr;
		column-gap: 3rem;
		margin-block-start: 2rem;
	}
}

.home-care-map {
	width: 100%;
	height: 18rem;
	margin-block-start: 2em;
	overflow: hidden;

	@media (768px <= width) {
		height: 20rem;
	}

	@media (1024px <= width) {
		height: 100%;
		margin-block-start: 0;
	}
}

.home-care-map iframe {
	position: relative;
	top: -60px;
	width: 100%;
	height: calc(100% + 60px);
	object-fit: cover;
}

.home-care-office-list {
	display: grid;
	row-gap: 2.5rem;

	@media (width < 1024px) {
		width: fit-content;
		margin-inline: auto;
	}
}

.home-care-office-item {
	display: grid;
	row-gap: 1rem;
	justify-content: center;

	.home-office-item + & {
		margin-block-start: 0;
	}

	.module-button-outline a {
		margin-inline-start: auto;
		line-height: 1.5;
	}

	@media (768px <= width) {
		grid-template-columns: repeat(2, auto);
		gap: 1.5rem;
		justify-content: start;

		.home-office-title {
			font-size: 1.125rem;
		}
	}
}

/* ---------------------------------------------------------

	08. offices

--------------------------------------------------------- */

/* 事業所詳細：メッセージ
--------------------------------------------------------- */
.offices-message-box {
	display: flex;
	flex-direction: column-reverse;
	row-gap: 2em;

	@media (1024px <= width) {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		column-gap: 2em;
	}
}

.offices-message-image {
	max-width: 50rem;
	margin-inline: auto;

	img {
		border-radius: 3.125rem 0.625rem;
	}
}

/* 事業所詳細：特徴
--------------------------------------------------------- */
.offices-feature-list {
	display: grid;
	row-gap: 1em;
	padding-inline-start: 0;

	@media (768px <= width) {
		grid-template-columns: repeat(2, 1fr);
		gap: 1.5em;
	}
}

.offices-feature-list-item {
	display: grid;
	grid-template: "image title" "text text" / auto 1fr;
	gap: 1em;
	align-content: start;
	align-items: center;
	padding: 1.5rem;
	background-color: #fff;
	border-radius: 0.75rem 2.5rem;

	@media (1024px <= width) {
		padding: 1.5rem 2rem;
		border-radius: 1.25rem 3.5rem;
	}
}

.offices-feature-image {
	grid-area: image;
	width: 4rem;
}

.offices-feature-title {
	grid-area: title;
}

.offices-feature-text {
	grid-area: text;
	margin-block-start: 0;
}

/* 事業所詳細：在籍スタッフ
--------------------------------------------------------- */
.offices-staff-wrap {
	margin-block-start: 4rem;

	@media (1024px <= width) {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		column-gap: 4rem;

		& > .module-content-wrap {
			margin-block-start: 0;
		}
	}
}

.offices-staff-list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr));
	gap: 1.5em;
	padding-inline-start: 0;

	@media (768px <= width) {
		grid-template-columns: repeat(5, 1fr) auto;
		column-gap: 2rem;
	}

	@media (1024px <= width) {
		grid-template-columns: repeat(2, 1fr);
		gap: 1.5em 2.5em;
	}
}

.offices-staff-list-item {
	display: grid;
	align-items: center;
	line-height: 1;

	&:not(:first-child) {
		margin-block-start: 0;
	}

	@media (768px <= width) {
		row-gap: 0.25rem;
	}

	@media (1024px <= width) {
		grid-template-columns: 4rem max-content auto;
		column-gap: 0.75em;
		align-items: center;
	}
}

.offices-staff-image {
	width: 100%;
	padding: 0.5rem;
	background-color: #fff;
	border: 1px solid currentcolor;
	border-radius: 0.75rem;
}

.offices-staff-title {
	margin-block-start: 0.5em;
	font-size: 1rem;
	font-weight: 700;

	@media (1024px <= width) {
		margin-block-start: 0;
	}
}

.offices-staff-number {
	* + & {
		margin-block-start: 0;
	}

	em {
		font-size: 1.125rem;
		font-weight: 700;
	}

	@media (1024px <= width) {
		justify-self: end;
	}
}

.offices-staff-total {
	align-self: end;
	list-style: none;

	em {
		font-size: 1.125rem;
		font-weight: 700;
	}

	@media (1024px <= width) {
		grid-column: span 3;
		place-self: center end;
	}
}

/* 事業所詳細：お知らせ
--------------------------------------------------------- */
.offices-archive-button {
	width: fit-content;
	margin-inline: auto;
}

/* 事業所詳細：施設情報
--------------------------------------------------------- */
.offices-office-item {
	align-items: center;
	width: fit-content;
	margin-inline: auto;

	& .home-office-table a[href^="https://maps.app.goo.gl/"],
	& .home-office-table a[href^="https://www.google.com/maps/"] {
		display: block;
		width: fit-content;
		padding: 0.125em 1em 0.25em;
		margin-block-start: 0.25em;
		font-weight: 700;
		color: #fff;
		text-decoration: none;
		background-color: var(--color-button-primary);
		border-radius: 0.5em;

		&::after {
			position: relative;
			top: -0.25em;
			margin-left: 0.5em;
			font-size: 0.6em;
			content: "▶︎";
		}

		@media (any-hover: hover) {
			transition: filter 0.3s ease;

			&:hover {
				filter: brightness(1.15);
			}
		}
	}

	@media (768px <= width) {
		display: grid;
		grid-template-columns: repeat(2, auto);
		gap: 2rem;
	}

	@media (1024px <= width) {
		.home-office-image img {
			max-inline-size: 24rem;
		}

		.home-office-table {
			font-size: 1rem;
			line-height: 1.875;
		}
	}

	@media (1280px <= width) {
		&:has(> .offices-instagram-wrap) {
			grid-template-columns: repeat(3, auto);
		}
	}
}

.offices-sns-wrap {
	display: grid;
	grid-template: "sns-title sns-title" "sns-text sns-button" / auto auto;
	gap: 0.75em 1em;
	justify-self: center;
	padding: 1em 1.5em;
	background-color: var(--color-background-secondary);
	border-radius: 0.75rem 2.5rem;

	.offices-sns-title {
		grid-area: sns-title;
		font-size: 1.125rem;
		font-weight: 700;
	}

	.offices-sns-text {
		grid-area: sns-text;
		margin-block-start: 0;
	}

	.offices-sns-button {
		display: block;
		grid-area: sns-button;
		max-width: 4rem;
	}

	@media (768px <= width) {
		grid-template: "sns-title sns-button" "sns-text sns-button" / auto auto;
		grid-column: 1 / 3;
		gap: 0.25em 1.25em;
		align-content: center;
		padding: 1.25em 2em;
		border-radius: 1.25rem 3.5rem;
	}

	@media (any-hover: hover) {
		.offices-sns-button {
			transition: opacity 0.3s ease;

			&:hover {
				opacity: 0.7;
			}
		}
	}
}

.offices-other-item {
	margin-block-start: 2rem;
	text-align: center;
}

.offices-document-list {
	display: grid;
	gap: 1em;
	align-items: center;
	justify-content: center;
	width: 16rem;
	margin-block-start: 1.5rem;
	margin-inline: auto;

	& > .module-button-outline {
		margin-block-start: 0;
	}

	& > .module-button-outline a {
		width: 100%;
		padding-inline: 0.75em;
	}

	@media (768px <= width) {
		grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
		width: auto;
	}
}

/* ---------------------------------------------------------

	09. recruit

--------------------------------------------------------- */

/* 採用情報：リード部
--------------------------------------------------------- */
.recruit-feature-title {
	margin-block-start: 2rem;
	font-size: 1.5rem;
	font-weight: 700;
	text-align: center;

	@media (768px <= width) {
		font-size: 1.875rem;
	}

	@media (1024px <= width) {
		font-size: 2.25rem;
	}
}

.recruit-feature-text {
	margin-block-start: 1rem;
	text-align: center;
}

.recruit-feature-list {
	display: grid;
	row-gap: 0.5rem;
	padding-inline-start: 0;
	margin-block-start: 1.5rem;

	@media (768px <= width) {
		grid-template-columns: repeat(3, 1fr);
		column-gap: 1rem;
		width: fit-content;
		margin-inline: auto;
	}
}

.recruit-feature-list-item {
	padding: 0.5rem 1rem;
	font-weight: 700;
	text-align: center;
	list-style: none;
	background-color: var(--color-background-gradient-2);
	border-radius: 0.5em;

	&:nth-child(2) {
		background-color: var(--color-background-gradient-3);
	}

	&:nth-child(3) {
		background-color: var(--color-background-gradient-4);
	}

	&:not(:first-child) {
		margin-block-start: 0;
	}
}

/* 採用情報：1日の流れ
--------------------------------------------------------- */
.recruit-schedule-list-wrap {
	padding: 1.5rem 1rem;
	margin-block-start: 2rem;
	background-color: #fff;
	border-radius: 1em;

	@media (768px <= width) {
		padding: 2.5rem 3rem;
	}
}

.recruit-schedule-list {
	position: relative;
	display: grid;
	row-gap: 1.5rem;
	padding-inline-start: 0;

	&::before {
		position: absolute;
		top: 1em;
		left: 5.25em;
		width: 1px;
		height: calc(100% - 1em);
		content: "";
		background-color: var(--color-text-default);

		@media (768px <= width) {
			left: 4.6em;
		}
	}

	@media (768px <= width) {
		row-gap: 2.5rem;
	}
}

.recruit-schedule-list-item {
	display: grid;
	grid-template-columns: 3.5rem 1fr;
	column-gap: 2.5rem;
	list-style: none;
}

.recruit-schedule-time {
	position: relative;
	align-self: start;
	font-size: 1.125rem;
	font-weight: 700;
	text-align: right;

	&::before {
		position: absolute;
		top: 50%;
		left: 100%;
		width: 0.8em;
		height: 0.8em;
		margin-inline: 0.1em;
		content: "";
		background-color: var(--color-background-gradient-2);
		border: 1px solid var(--color-text-default);
		border-radius: 50%;
		translate: 0.5em -50%;
	}
}

.recruit-schedule-list-inner {
	margin-block-start: -0.25em;

	@media (768px <= width) {
		display: grid;
		grid-template: "title comment" "text text" / auto 1fr;
		column-gap: 0.75rem;
		align-items: center;
		margin-block-start: -0.4em;
	}
}

.recruit-schedule-title {
	grid-area: title;
	font-size: 1.125rem;
	font-weight: 700;
}

.recruit-schedule-comment {
	position: relative;
	grid-area: comment;
	width: fit-content;
	padding: 0.5rem 1rem;
	margin-block-start: 0.75em;
	line-height: 1.5;
	background-color: var(--color-background-gradient-2);
	border-radius: 5px;

	@media (768px <= width) {
		margin-block-start: 0;
		font-size: 1rem;
		border-radius: 999em;
	}
}

.recruit-schedule-text {
	grid-area: text;
	margin-block-start: 0.5em;
}

/* 採用情報：教育・研修体制
--------------------------------------------------------- */
.recruit-training-list {
	display: grid;
	row-gap: 1rem;
	padding-inline-start: 0;
	counter-reset: recruit-training-list-item;

	@media (768px <= width) {
		grid-template-columns: repeat(2, 1fr);
		column-gap: 1rem;
	}

	@media (1280px <= width) {
		grid-template-columns: repeat(4, auto);
	}
}

.recruit-training-list-item {
	display: grid;
	grid-template-columns: auto 1fr;
	align-items: center;
	padding: 0.5rem 1rem;
	list-style: none;
	background-color: var(--color-background-gradient-4);
	border-radius: 0.5em;

	&::before {
		display: grid;
		place-content: center;
		width: 1.5em;
		height: 1.5em;
		padding-block-end: 0.0625em;
		margin-inline-end: 0.5em;
		font-weight: 700;
		color: #fff;
		content: counter(recruit-training-list-item);
		counter-increment: recruit-training-list-item;
		background-color: var(--color-text-default);
		border-radius: 50%;
	}

	@media (768px <= width) {
		padding-block: 1rem;
	}
}

/* 採用情報：応募の流れ
--------------------------------------------------------- */
.recruit-flow-list {
	display: grid;
	row-gap: 2rem;
	padding-inline-start: 0;

	@media (1024px <= width) {
		grid-template-columns: repeat(4, 1fr);
		column-gap: 2rem;
	}
}

.recruit-flow-list-item {
	position: relative;
	padding: 1rem;
	list-style: none;
	background-color: var(--color-background-gradient-1);
	border-radius: 0.5em;

	&:nth-child(2) {
		background-color: var(--color-background-gradient-2);
	}

	&:nth-child(3) {
		background-color: var(--color-background-gradient-3);
	}

	&:nth-child(4) {
		background-color: var(--color-background-gradient-4);
	}

	&:not(:last-child)::after {
		position: absolute;
		top: 100%;
		left: 50%;
		width: 2em;
		height: 1em;
		content: "";
		background-color: currentcolor;
		clip-path: polygon(50% 100%, 0 0, 100% 0);
		translate: -50% 0.5em;
	}

	@media (768px <= width < 1023px) {
		display: grid;
		grid-template-columns: 11rem 1fr;
		column-gap: 2rem;
		align-items: center;
		justify-content: start;
	}

	@media (1024px <= width) {
		display: grid;
		row-gap: 0.5rem;
		padding: 1.5rem;

		&:not(:last-child)::after {
			top: 50%;
			left: 100%;
			width: 1em;
			height: 2em;
			clip-path: polygon(0 0, 100% 50%, 0 100%);
			translate: 0.5em -50%;
		}
	}
}

.recruit-flow-title {
	display: grid;
	grid-template-columns: auto 1fr;
	column-gap: 0.25rem;
	align-items: center;
}

.recruit-flow-number {
	display: grid;
	place-content: center;
	width: 1.5em;
	height: 1.5em;
	padding-block-end: 0.125em;
	color: var(--color-text-default);
	background-color: #fff;
	border-radius: 50%;
}

.recruit-flow-text {
	margin-block-start: 0.5rem;

	@media (768px <= width) {
		margin-block-start: 0;
	}
}

.recruit-flow-contact {
	display: flex;
	justify-content: center;
	margin-block-start: 2rem;

	@media (768px <= width) {
		margin-block-start: 3rem;
	}
}

/* ---------------------------------------------------------

	10. contact

--------------------------------------------------------- */

/* お問い合わせ：メールフォーム
--------------------------------------------------------- */
.contact-required::after {
	margin-left: 0.25em;
	font-size: 0.75rem;
	font-weight: 700;
	vertical-align: super;
	color: #f00;
	content: "＊";
}

.contact-table {
	margin-block-start: 2rem;
}

.contact-table th {
	@media (768px <= width) {
		width: 15rem;
	}
}

.contact-input-text,
.contact-input-email,
.contact-input-select,
.contact-input-textarea {
	width: 100%;
	padding: 0.5em 1em;
	font-size: 1rem;
	line-height: 1.875;
	color: var(--color-text-dark);
	border: 1px solid #c6c6c6;
	border-radius: 5px;
}

.contact-input-text:not(.contact-input-address) {
	@media (768px <= width) {
		max-width: 22rem;
	}
}

.contact-input-select {
	padding-block: 0.7815em;
}

.contact-input-textarea {
	height: 13rem;
}

.contact-notice {
	padding-inline-start: 1em;
	margin-block-start: 0.5em;
	font-size: 0.875rem;
	color: #666;
	text-indent: -1em;
}

.contact-postal-code {
	display: flex;
	column-gap: 0.5rem;
	align-items: center;
}

.contact-postal-code .contact-input-text {
	width: 13rem;
}

.contact-address-wrap {
	display: grid;
	row-gap: 0.5rem;
}

.contact-address-select {
	width: 8rem;
}

.contact-submit-wrap {
	position: relative;
	display: flex;
	column-gap: 1.5rem;
	align-items: center;
	justify-content: center;
	width: fit-content;
	margin-block-start: 3rem;
	margin-inline: auto;

	@media (768px <= width) {
		margin-block-start: 4rem;
	}
}

.contact-submit-wrap .wpcf7-spinner {
	position: absolute;
	bottom: -3em;
	left: 50%;
	margin: 0;
	translate: -50% 0;
}

.contact-complete-lead {
	margin-block-start: 4em;
	text-align: center;
}

/* お問い合わせ：電話
--------------------------------------------------------- */
.contact-tel-wrap {
	width: fit-content;
	padding: 1rem 1.5rem;
	margin-block-start: 4rem;
	margin-inline: auto;
	background-color: var(--color-background-secondary);
	border-radius: 0.75rem 2.5rem;

	@media (768px <= width) {
		padding: 2rem 3rem;
		text-align: center;
		border-radius: 1.25rem 3.5rem;
	}
}

.contact-tel-title {
	margin-block-end: 0.5rem;
	font-size: 1.25rem;
	font-weight: 700;
}

.contact-tel-number {
	margin-block-start: 0.25rem;
	font-size: 1.5rem;
	font-weight: 700;
}

.contact-tel-number::before {
	display: inline-block;
	width: 0.8em;
	height: 0.8em;
	margin-inline-end: 0.25em;
	content: "";
	background: url("../img/common/icon_tel.svg") center/contain no-repeat;
}

.contact-tel-number a {
	@media (any-hover: hover) {
		pointer-events: none;
	}
}

/* ---------------------------------------------------------

	11. others

--------------------------------------------------------- */

/* 決算公告
--------------------------------------------------------- */
.financials-table {
	@media (width < 768px) {
		th,
		td {
			display: table-cell;
		}

		th,
		tr:not(:last-child) td {
			border-block-end: 1px solid var(--color-border-default);
		}
	}
}

/* 404ページ
--------------------------------------------------------- */
.error-404-wrap {
	display: grid;
	row-gap: 2rem;
	justify-items: center;
}
