@charset "utf-8";
/* all
-------------------------------------------------------------------*/
:root {
	--hover: background .4s, color .4s, border-color .4s, opacity .4s, text-decoration-color .4s, transform .4s, filter .4s, box-shadow .4s;
	--header: 100px;
	--container: 1200px;
	--wide: 1700px;
	--side: 375px;
	--inner: 5%;
	--outer: calc(var(--inner) * -1);
	--fontcolor: #282828;
	--key: #0e73eb;
	--accent: #ffff00;
	--sub01: #ff7830;
	--sub02: #00b0f0;
	--sub03: #65a350;
	--bg: #f6f4ed;
	--reverse: invert(1);
	--white: brightness(0) invert(1);
	--keyf: brightness(0) saturate(100%) invert(50%) sepia(67%) saturate(600%) hue-rotate(341deg) brightness(101%) contrast(94%);
	--accf: brightness(0) saturate(100%) invert(42%) sepia(30%) saturate(4526%) hue-rotate(86deg) brightness(94%) contrast(87%);
	--border_radius:100px;
}
:root img {
	transition: opacity .4s, filter .4s;
}
:root a {
	transition: var(--hover);
}
:root a :is(span, b, i, img) {
	transition: var(--hover);
}
:root a[href^="tel:"] {
	pointer-events: none;
}
html {
	background: #FFFFFF;
	color: var(--fontcolor);
	font-size: 16px;
	line-height: 1.6;
	scroll-padding: var(--header);
	scroll-behavior: smooth;
	font-feature-settings: 'palt';
	font-optical-sizing: auto;
	font-style: normal;
	letter-spacing: 0.06em;
}
:root body {
	width: 100%;
	font-size: 100%;
	text-align: center;
	min-width: var(--container);
	position: relative;
	z-index: 2;
	color: var(--fontcolor);
	font-family: "Noto Sans JP", sans-serif;
}
:root :is(.en, *[lang="en"]) {
	font-family: "Rubik", sans-serif;
}
:root a.skip-link {
	display: flex;
	font-size: 0.75rem;
	align-items: center;
	justify-content: center;
	color: #fff;
	background: var(--key);
	position: absolute;
	top: calc(var(--header) + 1px);
	left: 0;
	padding: 0.5em;
	z-index: -5;
	box-shadow: 0 0 1em rgba(0, 0, 0, 0.25);
	opacity: 0;
	width: 8em;
	height: 8em;
}
:root a.skip-link:focus {
	opacity: 1;
	z-index: 15;
	text-decoration: underline dotted 1px;
}
:root .icon {
	display: inline-block;
	mask: center center / contain no-repeat;
	mask-image: var(--url);
	background-color: var(--item_color);
}
:root .icon-list {
	--url: url(../img/common/icon-list.svg);
	aspect-ratio: 1/0.824;
}
:root .icon-catalog {
	--url: url(../img/common/icon-catalog.svg);
	aspect-ratio: 1/0.685;
}
:root .icon-purpose {
	--url: url(../img/common/icon-purpose.svg);
	aspect-ratio: 1/0.679;
}
:root .icon-casestudy {
	--url: url(../img/common/icon-casestudy.svg);
	aspect-ratio: 1/1.327;
}
:root .icon-tel {
	--url: url(../img/common/icon-tel.svg);
	aspect-ratio: 1/1;
}
:root .icon-form {
	--url: url(../img/common/icon-form.svg);
	aspect-ratio: 1/0.655;
}
:root :is(header, footer) li {
	list-style: none;
	flex: 1;
}
:root .fb-page {
	width: 100%;
	max-width: 500px;
}
.all-content {
	overflow: clip;
}
main {
	width: 100%;
	position: relative;
	z-index: 10;
	padding-top: var(--header)
}
body.home main{
	overflow:clip;
}
body:not(.home) main{
	padding-top:0;
}
body img,
body svg {
	max-width: 100%;
	height: auto;
}
.sitewrap,
.widewrap {
	width: var(--container);
	margin: 0 auto;
	text-align: left;
	box-sizing: border-box;
}
.widewrap {
	max-width: calc(var(--wide) + 2em);
	padding-inline: 1em;
	width: auto;
}
*:has(> .sitewrap) {
	width: 100%;
	overflow-x: clip;
}
.center_content {
	text-align: center;
}
.center_content>* {
	margin-inline: auto;
}
.right_content {
	text-align: right;
}
.right_content>* {
	margin-inline: auto 0;
}
*:has(>wbr) {
  word-break: keep-all;
  overflow-wrap: break-word;
}
@media screen and (max-width:1400px) {
	:root {
		--border_radius:60px;
	}
}
@media screen and (max-width:1240px) {
	:root {
		--container: 100%;
	}
	.sitewrap {
		padding-inline: var(--inner);
	}
}
@media screen and (max-width:980px) {
	:root {
		--header: 70px;
	}
}
@media screen and (max-width:767px) {
	:root {
		--header: 60px;
		--inner: 15px;
		--border_radius:30px;
	}
	html {
		font-size: 14px;
	}
	:root a[href^="tel:"] {
		pointer-events: auto;
	}
}
/* header
-------------------------------------------------------------------*/
body:has(#switch:checked) {
	overflow: hidden;
}
#global-header {
	position: fixed;
	z-index: 150;
	inset: 0 0 auto;
	display: flex;
	justify-content: flex-start;
	align-items: center;
	max-width: 100%;
	height: var(--header);
	transition: background .4s;
}
#global-header.fixedMenu {
	background: #fff;
}
#global-header #site_ttl {
	margin-inline: 1.5em;
	max-width: 234px;
	text-align:left;
	text-decoration: none;
}
#global-header #site_ttl a {
	display: flex;
	justify-content: center;
	align-items: center;
	text-decoration: none;
}
#global-header #site_ttl:hover{
	opacity: 0.5;
}
#global-header #site_ttl .logo-text{
	display:block;
	font-size:0.875rem;
	font-weight: bold;
	text-decoration:none;
}
#global-header .nav-wrap {
	display: flex;
	align-items: center;
	gap: 1.625em;
	margin-inline: auto 0;
}
#global-header #global-nav>ul {
	display: flex;
	align-items: center;
}
#global-header #global-nav>ul::after,
#global-header #global-nav>ul>li::before {
	content: "";
	display: block;
	width: 1px;
	height: 3.75em;
	background: #e8e8e8;
}
#global-header #global-nav>ul>li {
	flex: 1;
	display: flex;
	justify-content: center;
	align-items: center;
	height: var(--header);
}
#global-header #global-nav>ul>li a {
	position: relative;
	z-index: 10;
	display: flex;
	justify-content: flex-end;
	align-items: center;
	flex-direction: column;
	min-width: 7.75em;
	height: 4.625em;
	line-height: 1.2;
	margin-inline: 0.3125em;
	padding: 0.3125em;
	text-decoration: none;
}
#global-header #global-nav>ul>li a::after {
	position: absolute;
	z-index: -5;
	display: inline-block;
	content: "";
	width: 100%;
	height: 100%;
	inset: 0;
	background: #e6f8ff;
	border-radius: 0.25em;
	transform: scale(0);
	transition: var(--hover);
	transition-duration: 0s;
}
#global-header #global-nav>ul>li a img {
	flex: 1;
	display: flex;
	justify-content: center;
	align-items: center;
	flex-direction: column;
}
#global-header #global-nav>ul>li a span {
	font-size: 0.875em;
	font-weight: 500;
}
:is(#global-header, #footer) .header-cta a {
	position: relative;
	z-index: 10;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 0.71428571428em;
	min-width: 17.2857142857em;
	min-height: 4.28571428571em;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--fontcolor);
	background: #ffe33f;
	border: 1px solid #ffe33f;
	border-radius: 5em;
	padding: 1em;
	text-decoration: none;
	transition: var(--hover);
	overflow: hidden;
}
:is(#global-header, #footer) .header-cta a::after {
	position: absolute;
	z-index: -5;
	display: inline-block;
	content: "";
	width: 100%;
	aspect-ratio: 1/1;
	background: #ffd900;
	border-radius: 100%;
	transform: scale(0);
	transition: var(--hover);
	transition-duration: 0s;
}
#global-header .hamburger-menu label.btn-open {
	appearance: none;
	display: flex;
	cursor: pointer;
	width: 3.75em;
	height: 3.75em;
	aspect-ratio: 1/1;
	background: var(--key);
	border-radius: 100%;
	padding-block: 1.25em;
	margin-inline: 1.25em 1.5em;
}
#global-header .hamburger-menu label.btn-open b {
	display: block;
	position: relative;
	height: 100%;
	width: 100%;
	transition: transform .2s;
	max-width: 1.5rem;
	margin: auto;
}
#global-header .hamburger-menu label.btn-open b::before,
#global-header .hamburger-menu label.btn-open b::after,
#global-header .hamburger-menu label.btn-open b span {
	display: block;
	position: absolute;
	inset: 0;
	margin: auto 0;
	height: 1px;
	background: #fff;
	transition: transform .2s, inset .2s;
}
#global-header .hamburger-menu label.btn-open b::before {
	content: "";
	inset: 0 0 auto;
}
#global-header .hamburger-menu label.btn-open b::after {
	content: "";
	inset: auto 0 0;
	width: 66.69%;
}
#global-header .hamburger-menu label.btn-open::after {
	position: fixed;
	z-index: 500;
	inset: 0;
	content: "";
	display: inline-block;
	background: #000;
	opacity: 0;
	visibility: hidden;
	transition: var(--hover);
}
#global-header .hamburger-menu:has(#switch:checked) label.btn-open::after {
	opacity: 0.5;
	visibility: visible;
}
#global-header .hamburger-menu input {
	appearance: none;
	width: 1px;
	height: 1px;
	position: absolute;
	z-index: -1;
	border: none;
	background: none;
}
#global-header .hamburger-menu nav {
	position: fixed;
	z-index: 1000;
	top: 1.75em;
	right: 1.75em;
	bottom: 1.75em;
	width: min(100%, 400px);
	background: #fff;
	border-radius: 1em;
	padding: 1em;
	opacity: 0;
	visibility: hidden;
	transition: var(--hover);
}
#global-header .hamburger-menu:has(#switch:checked) nav {
	opacity: 1;
	visibility: visible;
}
#global-header .hamburger-menu .logo {
	text-align: left;
	margin-right: 2.5em;
}
#global-header .hamburger-menu label.btn-close {
	position: absolute;
	z-index: 100;
	top: 1em;
	right: 1em;
	width: 1.875em;
	aspect-ratio: 1/1;
}
#global-header .hamburger-menu label.btn-close::before,
#global-header .hamburger-menu label.btn-close::after {
	position: absolute;
	z-index: 10;
	inset: 50% auto auto 50%;
	display: inline-block;
	content: "";
	width: calc(1.875em * 1.41421356);
	height: 2px;
	background: var(--key);
	translate: -50% -50%;
	rotate: 45deg;
}
#global-header .hamburger-menu label.btn-close::after {
	rotate: -45deg;
}
#global-header .hamburger-menu .scroll_warp {
	display: flex;
	flex-direction: column;
	gap: 0.625em;
	height: calc(100% - 1.5em - 1.25em);
	margin-top: 1.25em;
	padding-bottom: 2em;
	overflow: auto;
}
#global-header .hamburger-menu .nav-contact_btn {
	position: relative;
	z-index: 10;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 0.71428571428em;
	min-height: 4.28571428571em;
	font-size: 1rem;
	font-weight: 500;
	background: #ffe33f;
	border: 1px solid #ffe33f;
	border-radius: 0.35714285714em;
	padding: 1em;
	text-decoration: none;
	transition: var(--hover);
}
#global-header .hamburger-menu .nav-contact_btn::after {
	position: absolute;
	z-index: -5;
	display: inline-block;
	content: "";
	width: 100%;
	height: 100%;
	background: #ffd900;
	border-radius: 0.35714285714em;
	transform: scale(0);
	transition: var(--hover);
	transition-duration: 0s;
}
#global-header .hamburger-menu .nav-product_list {
	display: flex;
	justify-content: space-between;
	align-items: stretch;
	gap: 0.625em;
}
#global-header .hamburger-menu .nav-product_list li {
	flex: 1;
}
#global-header .hamburger-menu .nav-product_list a {
	display: flex;
	justify-content: center;
	align-items: center;
	flex-direction: column;
	width: 100%;
	height: 100%;
	font-size: 0.92857142857remrem;
	font-weight: bold;
	line-height: 1.1;
	letter-spacing: -0.01em;
	color: #fff;
	background: var(--key);
	border: 1px solid var(--key);
	border-radius: 0.35714285714em;
	padding: 1em 0.25em 2em;
	text-decoration: none;
	transition: var(--hover);
}
#global-header .hamburger-menu .nav-product_list .link-arrow::before {
	font-size: 0.65em;
	bottom: 0.65em;
	right: 0.5em;
}
#global-header .hamburger-menu .nav-product_list .link-arrow::after {
	font-size: 0.8em;
	bottom: 0.825em;
	right: 1.1em;
	background: var(--key);
}
#global-header .hamburger-menu .nav-main_list {
	display: flex;
	justify-content: space-between;
	align-items: stretch;
	flex-wrap: wrap;
	gap: 0.5em;
}
#global-header .hamburger-menu .nav-main_list li {
	flex: calc((100% - 0.5em) / 2);
}
#global-header .hamburger-menu .nav-main_list a {
	display: flex;
	justify-content: flex-start;
	align-items: center;
	gap: 0.5em;
	min-height: 3.84615384615em;
	font-size: 0.92857142857rem;
	font-weight: 500;
	letter-spacing: -0.01em;
	background: var(--bg);
	border-radius: 0.35714285714em;
	padding: 0.5em 0.75em;
	padding-right: 2em;
}
#global-header .hamburger-menu .nav-main_list .link-arrow::before,
#global-header .hamburger-menu .nav-main_list .link-arrow::after {
	font-size: 0.6715em;
	top: 50%;
	translate: 0 -50%;
	right: 0.5em;
	background: var(--key);
}
#global-header .hamburger-menu .nav-main_list .link-arrow::after {
	right: 1.35em;
	background: #fff;
}
#global-header .hamburger-menu .nav-sub_list {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
}
#global-header .hamburger-menu .nav-sub_list li {
	width: 100%;
	border-bottom: 1px solid #eee;
}
#global-header .hamburger-menu .nav-sub_list li:first-child {
	border-top: 1px solid #eee;
}
#global-header .hamburger-menu .nav-sub_list a {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	min-height: 3.84615384615em;
	text-align: left;
	font-size: 0.92857142857rem;
	font-weight: 500;
	padding: 1em 1.25em;
	padding-right: 3.75em;
}
#global-header .hamburger-menu .nav-sub_list .link-arrow::before,
#global-header .hamburger-menu .nav-sub_list .link-arrow::after {
	top: 50%;
	translate: 0 -50%;
	right: 0.5em;
	background: var(--key);
}
#global-header .hamburger-menu .nav-sub_list .link-arrow::after {
	right: 1.35em;
	background: #fff;
}
#global-header .hamburger-menu .nav-sns_list {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1em;
	margin-top: 0.5em;
}
#global-header .hamburger-menu .nav-sns_list li {
	flex: 1;
}
#global-header .hamburger-menu .nav-sns_list a {
	display: flex;
	justify-content: center;
	align-items: center;
	flex-direction: column;
}
@media (hover: hover) and (pointer: fine),
(hover: none) and (pointer: coarse) {
	#global-header #global-nav>ul>li a:hover::after,
	:is(#global-header, #footer) .header-cta a:hover::after,
	#global-header .hamburger-menu .nav-contact_btn:hover::after {
		transform: scale(1);
		transition-duration: .2s;
	}
	:is(#global-header, #footer) .header-cta a:hover,
	#global-header .hamburger-menu .nav-contact_btn:hover {
		transform: translateY(3px);
	}
	#global-header .hamburger-menu .nav-product_list a:hover {
		transform: translateY(2px);
	}
	#global-header .hamburger-menu .nav-sns_list a:hover img {
		opacity: 0.5;
	}
}
@media screen and (max-width:1480px) {
	#global-nav {
		display: none;
	}
}
@media screen and (max-width:767px) {
	:root {
		--side: 100%;
	}
	#global-header #site_ttl {
		margin-inline: 0.75em;
		max-width:185px;
	}
	#global-header .header-cta a {
		width: 3.21428571429em;
		aspect-ratio:1/1;
		min-width: 0;
		min-height: 3.21428571429em;
		font-size: 1rem;
		padding: .5em 0.75em;
	}
	#global-header .header-cta a span {
		display:none;
	}
	#global-header .hamburger-menu label.btn-open {
		width: 3.21428571429em;
		height: 3.21428571429em;
		padding-block: 1em;
		margin-inline: 0.5em 0.75em;
	}
	#global-header .hamburger-menu nav {
		right: 0;
		left:0;
		width: calc(100% - var(--inner) * 2);
		margin-inline:auto;
	}
	#global-header .hamburger-menu .scroll_warp {
		padding-bottom:2em;
	}
}
/* footer
-------------------------------------------------------------------*/
#footer {
	position: relative;
	z-index: 10;
	color: #fff;
	background: #132739;
	background-image: url(../img/common/illust-footer01.png);
	background-repeat: no-repeat;
	background-position: center bottom;
	background-size: min(100%,1920px);
	padding-block: 6.875em 11.5vw;
}
#footer #footer-nav {
	display: flex;
	justify-content: space-between;
	border-bottom: 1px solid #344451;
	padding-bottom: 3.125em;
	margin-bottom: 3.125em;
}
#footer #footer-nav .footer-nav_list li:not(:first-child) {
	margin-top: 0.5em;
}
#footer #footer-nav .footer-nav_list li:not([class]) a {
	display: inline-block;
	font-size: 1rem;
	font-weight: 500;
}
#footer #footer-nav .footer-nav_list li.item-child {
	position: relative;
	z-index: 10;
	opacity: .42;
	padding-left: 1.75em;
}
#footer #footer-nav .footer-nav_list li.item-child::before {
	position: absolute;
	z-index: 10;
	display: inline-block;
	content: "";
	width: 0.5em;
	height: 1px;
	background: #fff;
	top: 0.85em;
	left: 0.5em;
}
#footer #footer-nav .footer-nav_list li.item-child a {
	display: inline-block;
	font-size: 0.875rem;
	font-weight: 500;
}
#footer .company-data .logo {
	margin-bottom: 1.5em;
}
#footer .company-data .logo img {
	filter: var(--white);
}
#footer .company-data :is(p, address) {
	font-size: 0.875rem;
	font-weight: 500;
	line-height: 1.4;
}
#footer .header-cta a {
	width: min(100%, 246px);
	margin-block: 3.125em 2.5em;
}
#footer #footer-nav_sub {
	display: inline-block;
}
#footer #footer-nav_sub .footer-lsub_list {
	display: inline-flex;
	gap: 0.5em;
	font-size: 0.875rem;
	opacity: 0.6;
	margin-right: 2.5em;
}
#footer #footer-nav_sub .footer-lsub_list::before,
#footer #footer-nav_sub .footer-lsub_list::after {
	content: "|";
	order: 2;
}
#footer #footer-nav_sub .footer-lsub_list::after {
	order: 4;
}
#footer #footer-nav_sub .footer-lsub_list li {
	order: 1;
	flex: inherit;
}
#footer #footer-nav_sub .footer-lsub_list li:nth-child(2) {
	order: 3;
}
#footer #footer-nav_sub .footer-lsub_list li:nth-child(3) {
	order: 5;
}
#footer #footer-nav_sub .footer-lsub_list a {
	text-decoration-color: inherit;
}
#footer .foot_copy {
	display: inline-block;
	font-size: 0.875rem;
	opacity: 0.6;
}
#footer .foot_copy small {
	font-size: 1em;
}
a.pagetop {
	position: fixed !important;
	z-index: 100 !important;
	bottom: 2em;
	right: 2.5%;
	display: inline-block;
	font-size: 1.75rem;
	font-weight: 600;
	text-transform: uppercase;
	line-height: 0.8 !important;
	color: #fff;
	padding-left: 1.65em !important;
	filter: drop-shadow(0 0 6px rgba(0, 0, 0, 0.25)) drop-shadow(0 0 2px rgba(0, 0, 0, 0.25));
	rotate: 90deg;
	transform-origin: right;
}
:root a.pagetop {
	transition: none;
}
a.pagetop.link-arrow::before,
a.pagetop.link-arrow::after {
	--bg_color: #fff !important;
	top: 50%;
	translate: 0 -50%;
	left: 0;
	font-size: 0.5326em;
}
a.pagetop.link-arrow::after {
	left: 1em;
	scale: -1 -1;
}
a.pagetop:is(:hover, :focus) {
	text-decoration-color: transparent;
}
@media (hover: hover) and (pointer: fine),
(hover: none) and (pointer: coarse) {
	#footer #footer-nav_sub .footer-lsub_list a:hover {
		text-decoration-color: transparent;
	}
}
@media screen and (max-width:1200px) {
	#footer .foot_copy {
		display: block;
		margin-top:1em;
	}
}
@media screen and (max-width:767px) {
	#footer {
		background-image: url(../img/common/illust-footer01_sp.png);
		padding-block: 2em 34vw;
	}
	#footer #footer-nav {
		display:none;
	}
	#footer .company-data .logo {
		max-width:186px;
		margin-bottom: 1em;
	}
	#footer .company-data :is(p, address) {
		font-size: 0.86rem;
		font-weight: 400;
	}
	#footer .header-cta a {
		display:none;
	}
	#footer #footer-nav_sub {
		display: block;
		border-top: 1px solid #344451;
		margin-top:1.5em;
		padding-top:1.5em;
	}
	#footer #footer-nav_sub .footer-lsub_list a{
		font-size:0.715rem;
	}
	#footer #footer-nav_sub .footer-lsub_list{
		margin-bottom:1em;
	}
	#footer .foot_copy {
		margin-top:0;
	}
	#footer .foot_copy small{
		font-size:0.715rem;
	}
	a.pagetop {
		display:none;
		right: 1em;
		bottom: 0.5em;
	}
}
/* print
-------------------------------------------------------------------*/
@media print {
	*html body {
		zoom: 60%;
	}
	html body {
		zoom: 50%;
	}
	#global-header{
		position: relative;
	}
	a.pagetop {
		position:absolute !important;
		bottom: auto;
		top: 7.25em;
	}
	.home #casestudy .casestudy-bg_image{
		width:100%;
		display:block;
		top:55vw;
	}
	.home #casestudy .casestudy-bg_image img{
		width:100%;
		height:100%;
		max-width:fit-content;
	}
	.home #casestudy .casestudy-slide_wrap{
		width:100vw;
		margin-left:auto;
	}
	.home #casestudy .casestudy-wrap::before{
		width:90%;
	}
}