@charset "utf-8";
/* =========================================================================================
Layout
=========================================================================================*/
/* sticky */
#main {
	overflow: clip !important;
}
#main section.sticky-block {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding-block: 8vh;
	position: -webkit-sticky !important;
	position: sticky !important;
	top: 0;
}
@media only screen and (max-width: 820px) {
}
@media only screen and (max-width: 468px) {
}

/* =========================================================================================
MAIN VISUAL
=========================================================================================*/
.main-visual {
	width: 100%;
	background: var(--main-color) url(../images/common/logo.svg) no-repeat;
	background-position: top 48.5% left 47.5%;
	background-size: 51% auto;
	overflow: hidden;
	position: relative;
}
.main-visual video {
	display: block;
	width: 100%;
	background: var(--main-color);
	padding: 0;
	margin: 0;
	opacity: 1; /* 最初は表示 */
}
.main-visual #scroll-navi .scroll-navi {
	color: #fff;
	writing-mode: vertical-rl;
	border-left: 1px solid;
	padding-top: 2.5em;
	padding-left: 0.25em;
	position: fixed;
	right: 5%;
	bottom: 5%;
	z-index: 10;
}
.main-visual #scroll-navi .scroll-navi::after {
	content: "";
	display: block;
	width: 10px;
	aspect-ratio: 1 / 1;
	background: #fff;
	border-radius: 100px;
	position: absolute;
	top: 0;
	left: -5px;
	z-index: 1;
	animation: scroll-navi-anime 3s ease-in-out infinite;
}
@keyframes scroll-navi-anime {
	0% {
		top: -5px;
		opacity: 1;
	}
	50% {
		top: calc(100% - 5px);
		opacity: 1;
	}
	100% {
		top: calc(100% - 5px);
		opacity: 0;
	}
}
@media only screen and (max-width: 820px) {
}
@media only screen and (max-width: 468px) {
	.main-visual {
		width: 100%;
		background-image: url(../images/common/logo_s.svg);
		background-position: top 43.5% left 51.5%;
		background-size: 55% auto;
	}
}

/* =========================================================================================
MESSAGE
=========================================================================================*/
section.message {
	width: 100%;
	min-height: 150vh;
	padding-block: 20vh;
	overflow: visible;
	position: relative;
}
section.message h2 {
	font-size: 3em;
	font-weight: var(--semibold-font-weight);
	line-height: 2;
	letter-spacing: 0.1em;
	min-height: 4em;
	margin-bottom: 1.5em;
}
section.message h2.typewriter {
	display: inline-block;
	white-space: pre-wrap;
	overflow: hidden;
	visibility: hidden; /* アニメーション開始まで非表示 */
	position: relative;
}
section.message h2 .caret {
	display: inline-block;
	width: 2px;
	height: 1em;
	vertical-align: middle;
	background: var(--base-font-color);
	margin-bottom: 0.2em;
	animation: caretBlink 1s steps(1) infinite;
}
@keyframes caretBlink {
	50% {
		opacity: 0;
	}
}
section.message h2 span.red {
	color: var(--main-color);
}
section.message h2 span.green {
	color: var(--sub-color);
}
section.message p {
	font-size: 1.1em;
	line-height: 2;
	width: 100%;
	max-width: 470px;
	margin-inline: auto 0;
}
section.message .circle {
	width: 100vw;
	aspect-ratio: 1 / 1;
	background: var(--main-color);
	border-radius: 100%;
	transform-origin: top center;
	position: absolute;
	top: 45%;
	left: 50%;
	translate: -50% 0;
	z-index: -1;
}
@media only screen and (max-width: 820px) {
	section.message {
		min-height: 125vh;
	}
	section.message h2 {
		font-size: clamp(1.563rem, calc(-0.281rem + 7.865vw), 3.75rem); /* min: 25px, max: 60px */
	}
	section.message p {
		font-size: 1em;
	}
}
@media only screen and (max-width: 468px) {
}

/* =========================================================================================
SERVICE
=========================================================================================*/
section.service {
	overflow-y: auto;
	color: #fff;
	background: var(--main-color);
	padding-block: 35vh;
	position: relative;
	border-radius: 30% 30% 0 0;
	z-index: 10 !important;
}
section.service ul {
	margin: 20vh 0;
}
section.service li {
	border-bottom: 1px solid #fff;
	padding-right: calc(50vw - 50%);
	padding-left: calc(50vw - 50%);
	margin-right: calc(50% - 50vw);
	margin-left: calc(50% - 50vw);
	position: relative;
}
section.service li:first-child {
	border-top: 1px solid #fff;
}
section.service li::before {
	content: "";
	width: 70%;
	height: 100%;
	background: linear-gradient(to right, var(--main-color) 80%, transparent 100%);
	position: absolute;
	top: 0;
	left: 0;
	z-index: 2;
}
section.service li::after {
	content: "";
	width: 60%;
	height: 100%;
	background-repeat: no-repeat;
	position: absolute;
	top: 0;
	right: 0;
	z-index: 1;
	opacity: 0;
	transition: 0.75s;
}
section.service li.creative::after {
	background-image: url(../images/page/service_creative.webp);
	background-position: center;
	background-size: 100%;
}
section.service li.planning::after {
	background-image: url(../images/page/service_planning.webp);
	background-position: right 150% top 17.5%;
	background-size: 120%;
}
section.service li.marketing::after {
	background-image: url(../images/page/service_marketing.webp);
	background-position: right 50% top 10%;
	background-size: 120%;
}
section.service li.event::after {
	background-image: url(../images/page/service_event.webp);
	background-position: right 50% top;
	background-size: 120%;
}
section.service li.promotion::after {
	background-image: url(../images/page/service_promotion.webp);
	background-position: right 130% top 25%;
	background-size: 150%;
}
section.service li.media::after {
	background-image: url(../images/page/service_media.webp);
	background-position: right 120% center;
	background-size: 125%;
}
section.service li:hover::after {
	opacity: 1;
}
section.service li a {
	color: #fff;
	display: flex;
	flex-direction: row-reverse;
	align-items: center;
	justify-content: left;
	gap: 2em;
	padding-block: 1.5em;
	padding-right: calc(50vw - 50%);
	padding-left: calc(50vw - 50%);
	margin-right: calc(50% - 50vw);
	margin-left: calc(50% - 50vw);
	position: relative;
	overflow: hidden;
}
section.service li a .jp,
section.service li a .en {
	position: relative;
	z-index: 5;
}
section.service li a .en {
	font-family: "Montserrat", sans-serif;
	font-size: 2.5em;
	font-weight: var(--semibold-font-weight);
	line-height: 1;
}
section.service li a::after {
	content: "";
	width: 0;
	height: 100%;
	background-color: #000;
	position: absolute;
	top: 0;
	left: -100px;
	z-index: 2;
	opacity: 0.5;
	transform: skew(-25deg);
	transition: 0.75s;
}
section.service li a:hover {
	opacity: 1;
}
section.service li a:hover::after {
	width: calc(100% + 200px);
}

@media only screen and (max-width: 820px) {
	section.service {
		border-radius: 0;
		padding-block: 15vh;
	}
	section.service ul {
		width: calc(100% + 20px + 20px);
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		grid-template-rows: auto;
		gap: 0;
		border: 1px solid #fff;
		margin: 0 0 10vh;
		translate: -20px 0;
	}
	section.service li {
		border: 1px solid #fff;
		padding: 0;
		margin: 0;
	}
	section.service li a {
		height: 100%;
		flex-direction: column-reverse;
		align-items: start;
		justify-content: start;
		gap: 1em;
		padding: 3em 10% 10%;
		margin: 0;
	}
	section.service li a .jp {
		font-size: clamp(0.5rem, calc(0.079rem + 2.247vw), 1rem); /* min: 10px, max: 20px */
	}
	section.service li a .en {
		font-size: clamp(1rem, calc(-0.264rem + 6.742vw), 2.5rem); /* min: 20px, max: 50px */
	}
	section.service li::before {
		display: none;
	}
	section.service li::after {
		width: 100%;
		height: 100%;
		background-position: left !important;
		background-size: cover !important;
	}
	section.service .btn {
		justify-content: right;
	}
}
@media only screen and (max-width: 468px) {
}

/* =========================================================================================
WORKS
=========================================================================================*/
section.works {
	color: #fff;
	background: var(--sub-color);
	display: flex;
	flex-direction: column;
	align-items: center;
}
section.works .inner {
	position: relative;
	z-index: 5;
}
section.works p {
	font-size: 1.1em;
	width: 50%;
	max-width: 510px;
	margin-inline: 0 auto;
}
section.works .btn {
	justify-content: left;
	margin-top: 7.5vh;
}
section.works .thumb {
	width: 70vw;
	height: 100%;
	position: absolute;
	right: 0;
	bottom: 0;
	z-index: 1;
}
section.works .thumb img {
	object-fit: cover;
	object-position: left;
	height: 100%;
	margin-inline: auto 0;
}
@media only screen and (max-width: 820px) {
	section.works p {
		width: 80%;
	}
	section.works .thumb {
		width: 60%;
		background: url(../images/works_image_mb.svg) no-repeat left bottom;
		background-size: 100%;
	}
	section.works .thumb img {
		display: none;
	}
}
@media only screen and (max-width: 468px) {
	section.works p {
		width: 100%;
	}
	section.works .thumb {
		width: 60%;
		background-position: left bottom;
		background-size: auto;
	}
}

/* =========================================================================================
NEWS
=========================================================================================*/
section.news {
	background: var(--base-bg-color);
}
section.news .post-list.row {
	width: 100%;
	max-width: var(--main-contents-width);
	padding-left: 40px;
	margin-inline: auto;
}
section.news .post-list.row ul {
	display: flex;
	flex-wrap: nowrap;
	align-items: stretch;
	justify-content: left;
	gap: 0;
	margin-right: calc(50% - 50vw);
	padding-right: calc(50vw - 50%);
}
section.news .post-list.row ul li {
	width: 300px;
}
@media only screen and (max-width: 820px) {
}
@media only screen and (max-width: 468px) {
	section.news .post-list.row {
		width: calc(100% - 40px - 40px);
		padding: 0;
	}
	section.news .post-list.row ul {
		flex-direction: column;
		margin-right: 0;
		padding-right: 0;
	}
	section.news .post-list.row ul li {
		width: 100%;
	}
	section.news .post-list.row ul li article {
		display: grid;
		grid-template-columns: minmax(100px, 40%) 1fr;
		grid-template-rows: auto;
		align-items: start;
		gap: 0 7.5%;
	}
	section.news .post-list.row ul li article .thumbnail {
		grid-area: 1 / 1 / 3 / 2;
	}
	section.news .post-list.row ul li article .title {
		grid-area: 1 / 2 / 2 / 3;
	}
	section.news .post-list.row ul li article .date {
		grid-area: 2 / 2 / 3 / 3;
	}
	section.news .post-list.row .thumbnail img {
		aspect-ratio: 3 / 2;
	}
	section.news .post-list.row ul li:nth-last-of-type(1),
	section.news .post-list.row ul li:nth-last-of-type(2),
	section.news .post-list.row ul li:nth-last-of-type(3) {
		display: none;
	}
}

/* =========================================================================================
RECRUIT
=========================================================================================*/
section.recruit {
	color: #fff;
	text-align: center;
	/* background: var(--main-color) url(../images/recruit_bg.svg) no-repeat center;
	background-size: cover; */
	background: var(--main-color);
	position: relative;
}
section.recruit .rotate img {
	width: 300vw;
	min-width: 1920px;
	aspect-ratio: 1 / 1;
	background-repeat: no-repeat;
	background-size: contain;
	pointer-events: none;
	position: absolute;
	top: 50%;
	left: 50%;
	translate: -50% -50%;
}
section.recruit .rotate img:nth-of-type(1) {
	z-index: 1;
	animation: rotate 100s linear infinite;
}
section.recruit .rotate img:nth-of-type(2) {
	z-index: 2;
	animation: rotate 150s linear infinite;
}
section.recruit .rotate img:nth-of-type(3) {
	z-index: 3;
	animation: rotate 250s linear infinite;
}
section.recruit .rotate img:nth-of-type(4) {
	z-index: 4;
	animation: rotate 200s linear infinite;
}
section.recruit .rotate img:nth-of-type(5) {
	z-index: 5;
	animation: rotate 80s linear infinite;
}
@keyframes rotate {
	0% {
		transform: rotateZ(0);
	}
	50% {
		transform: rotateZ(180deg);
	}
	100% {
		transform: rotateZ(360deg);
	}
}
section.recruit .inner {
	width: 80%;
	max-width: var(--minimum-contents-width);
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding-top: 15vh;
}
section.recruit .mid-l {
	margin-bottom: 1.5em;
}
section.recruit .mid-l .en {
	font-size: 6.25rem;
}
section.recruit p + p {
	margin-top: 10vh;
}
@media only screen and (max-width: 820px) {
	section.recruit .mid-l .en {
		font-size: clamp(3.5rem, calc(2.236rem + 6.742vw), 5rem); /* min: 70px, max: 100px */
	}
}
@media only screen and (max-width: 468px) {
	section.recruit .rotate img {
		min-width: 1400px;
	}
}

/* =========================================================================================
BANNER AREA
=========================================================================================*/
section.banner-area {
	background: #fff;
}
section.banner-area .scroll {
	background: #fff;
}
section.banner-area .scroll-object {
	width: 100%;
	max-height: 235px;
	min-height: 180px;
	background-position: center;
	background-repeat: repeat-x;
	background-size: auto 100%;
	animation: scroll-image 600s linear infinite;
}
section.banner-area .scroll-object.top {
	aspect-ratio: 3120 / 230;
	background-image: url(../images/scroll_1.png);
	animation: scroll-image-top 600s linear infinite;
}
@keyframes scroll-image-top {
	from {
		background-position: 0 0;
	}
	to {
		background-position: -19000px 0;
	}
}
section.banner-area .scroll-object.bottom {
	aspect-ratio: 3315 / 220;
	background-image: url(../images/scroll_2.png);
	animation: scroll-image-bottom 600s linear infinite;
}
@keyframes scroll-image-bottom {
	from {
		background-position: -19000px 0;
	}
	to {
		background-position: 0 0;
	}
}
section.banner-area .inner {
	max-width: var(--large-contents-width);
	display: flex;
	flex-direction: column;
	gap: 10vh;
	padding-top: 8vh;
}
section.banner-area .banner {
	width: 100%;
	border-radius: 20px;
	overflow: hidden;
	position: relative;
}
section.banner-area .banner a {
	width: 100%;
	aspect-ratio: 3 / 1;
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	display: flex;
	align-items: center;
	padding: 5vw 7.5vw;
}
section.banner-area .banner a .mid-l {
	flex-direction: column-reverse;
	margin: 0;
}
/*.banner.company*/
section.banner-area .banner.company a {
	color: #fff;
	background-image: url(../images/page/company_image.webp);
	filter: grayscale(1);
	position: relative;
	z-index: 5;
}
section.banner-area .banner.company a::after {
	content: "";
	width: 100%;
	height: 100%;
	background: #000;
	position: absolute;
	top: 50%;
	left: 50%;
	translate: -50% -50%;
	opacity: 0.6;
	transition: 0.3s;
	z-index: -1;
}
section.banner-area .banner.company a:hover {
	filter: grayscale(0);
	opacity: 1;
}
section.banner-area .banner.company a:hover::after {
	opacity: 0;
}
section.banner-area .banner.company a .mid-l .en {
	font-size: 7rem;
	font-weight: var(--semibold-font-weight);
}
/*.banner.contact*/
section.banner-area .banner.contact {
	filter: drop-shadow(7px 7px 0px rgba(0, 0, 0, 0.15));
}
section.banner-area .banner.contact a {
	color: var(--base-font-color);
	background-color: var(--accent-color);
}
section.banner-area .banner.contact a:hover {
	color: #fff;
	background-color: var(--link-color);
	opacity: 1;
}
section.banner-area .banner.contact a .mid-l .en {
	font-size: 5rem;
	font-weight: var(--semibold-font-weight);
}
section.banner-area .banner.contact a .mid-l .jp {
	font-size: 1rem;
}

@media only screen and (max-width: 820px) {
	section.banner-area .scroll-object {
		max-height: 120px;
		min-height: 120px;
	}
	section.banner-area .inner {
		gap: 50px;
		padding-top: 75px;
	}
	section.banner-area .banner.company a,
	section.banner-area .banner.contact a {
		aspect-ratio: 3 / 2;
	}
	section.banner-area .banner.company a .mid-l .en,
	section.banner-area .banner.contact a .mid-l .en {
		font-size: clamp(1.5rem, calc(-1.449rem + 15.73vw), 5rem); /* min: 30px, max: 100px */
	}
}
@media only screen and (max-width: 468px) {
	section.banner-area .scroll-object {
		max-height: 70px;
		min-height: 70px;
	}
	section.banner-area .inner {
		gap: 30px;
		padding-top: 50px;
	}
	section.banner-area .banner.company a .mid-l .en,
	section.banner-area .banner.contact a .mid-l .en {
		font-size: 2rem;
	}
}
