@charset "UTF-8";

/* Reset */
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {box-sizing: border-box; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {display: block; } body {line-height: 1; } ol, ul {list-style: none; } blockquote, q {quotes: none; } blockquote:before, blockquote:after, q:before, q:after {content: ''; content: none; } table {border-collapse: collapse; border-spacing: 0; }
* {box-sizing: border-box;}

#preloader {
	position: fixed;
	inset: 0;
	background: black;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 9998;
	overflow: hidden;
}
#preloader canvas {
	z-index: 9999;
}
#loading-logo {
	width: 1920px;
	top: 0;
	bottom: 0;
	margin: auto;
	position: absolute;
	height: 1080px;
	z-index: 2;
	transition: transform .5s ease-in-out, opacity 1s ease-in-out;
	max-width: none;
}
#white-fill {
	position: absolute;
	bottom: 0;
	height: 0%;
	width: 100%;
	background: url('../img/suminagashi.gif')no-repeat bottom center;
	background-size: 1920px auto;
	z-index: 1;
	bottom: 0;
	left: 0;
	image-rendering: pixelated;
}
#white-fill.hide {
	opacity: 0;
	transition: opacity .5s ease;
}
#preloader.zoom #loading-logo {
	transform: scale(10);
	opacity: 0;
}
#preloader.hide {
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.5s ease;
}
#main-content {
	display: none;
	opacity: 0;
	transition: opacity 0.3s ease;
}
#main-content.fade-in {
	opacity: 1;
}

/* General */
html {
	scroll-behavior: smooth;
}
body {
	font-family: 'DM Sans', Arial, sans-serif;
	color: #fff;
	background: #111;
	line-height: 1.2;
	font-size: 16px;
	font-weight: 300;
}
body p {
	line-height: 1.5;
}
img {
	max-width: 100%;
}
a, img {
	display: block;
}
canvas {
	position: fixed;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	pointer-events: none;
	mix-blend-mode: normal;
}
.page-wrapper {
	z-index: 1;
	position: relative;
}

/* Header */
.header {
	padding: 30px 15px;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 10;
	background: url('../img/body-border-top.png')no-repeat top center/auto 5px;
}
.lang {
	position: fixed;
	padding: 8px;
	background: #333;
	border-radius: 4px 0 0 4px;
	top: 100px;
	right: 0;
	z-index: 100;
	font-size: 12px;
	text-decoration: none;
	display: block;
	filter: grayscale(100%);
	transition: all .3s ease-in-out;
}
.lang:hover {
	filter: grayscale(0);
}
@media (min-width: 1200px) {
	.header {
		padding: 64px 0;
	}
	.header img {
		height: 40px;
	}
	.header nav {
		display: flex;
		justify-content: center;
		gap: 32px;
	}
	.header nav a {
		color: #fff;
		text-decoration: none;
		font-size: 21px;
		letter-spacing: 1px;
		font-weight: 200;
	}
	.lang {
		top: 24px;
	}
}

/* Hero */
.section-holder {
	padding-top: 160px;
	background: url('../img/hero-element.svg')no-repeat top center/auto 60%;
}
.hero h1 {
	font-size: 40px;
	margin-bottom: 40px;
	padding: 0 15px;
	letter-spacing: 2px;
}
.hero-box {
	position: relative;
	overflow: hidden;
	border-radius: 24px;
	padding: 32px;
	margin: 0 15px;
}
.hero-blur {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.2);
	z-index: 0;
}
.hero-content {
	position: relative;
	z-index: 1;
	color: white;
}
.hero-content a {
	display: none;
}
.rotating-text {
	margin: 80px 0;
	position: relative;
	overflow: hidden;
	width: 100%;
	font-size: 60px;
	white-space: nowrap;
}
.rotating-text span {
	color: #fff;
}
.rotating-text:hover span {
	background: url('../img/suminagashi.gif') repeat;
	background-size: auto;
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	text-fill-color: transparent;
}
.rotating-track {
	display: flex;
	white-space: nowrap;
	will-change: transform;
}
.rotating-track span {
	display: inline-block;
	padding: 0 2rem;
}
.about {
	padding: 0 15px;
}
.about h3 {
	background: linear-gradient(to left, #666666, #FFFFFF);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	text-fill-color: transparent;
	margin-bottom: 8px;
	font-weight: 400;
	text-transform: lowercase;
}
.about h2 {
	font-size: 40px;
	margin-bottom: 16px;
}
.about-end {
	position: relative;
	margin: 160px 0 0 0;
	padding: 0 15px 64px 15px;
}
.about-end-bg {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.1);
	z-index: 0;
}
.about-end-box {
	margin-top: -118px;
	display: flex;
	flex-direction: column;
	align-items: center;
}
.about-end-box p {
	font-size: 24px;
	text-align: center;
	padding: 0 15px;
	margin-top: 16px;
}
@media (min-width: 1200px) {
	.section-holder {
		padding-top: 280px;
	}
	.hero h1 {
		padding: 0;
		font-size: 60px;
		margin-bottom: 64px;
	}
	.hero-box {
		margin: 0;
		padding: 24px 64px;
	}
	.hero-content {
		display: flex;
		gap: 64px;
		align-items: center;
	}
	.hero-content p {
		font-size: 24px;
		flex: 1;
	}
	.hero-content a {
		display: block;
	}
	.rotating-text { 
		margin: 240px 0;
		font-size: 120px;
	}
	.about h3 {
		font-size: 24px;
	}
	.about h2 {
		font-size: 80px;
	}
	.about p {
		font-size: 24px;
	}
	.about-end {
		padding: 64px 0;
	}
	.about-end-box {
		margin-top: 0;
		flex-direction: row;
		gap: 64px;
	}
	.about-end-box > div {
		flex: 0 1 auto;
	}
	.about-end-box img {
		width: 225px;
		max-width: none;
	}
	.about-end-box p {
		text-align: left;
		margin: 0;
	}
}

/* Solutions */
.solutions-title {
	position: relative;
	height: 100vh;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.solutions-title-bg {
	position: absolute;
	inset: 0;
	background: #222 url('../img/suminagashi.gif')no-repeat center top;
	background-size: 1920px auto;
	z-index: 0;
	background-attachment: fixed;
	image-rendering: pixelated;
	background-blend-mode: multiply;
}
.solutions-title-bg-2 {
	background-position: bottom left;
}
.solutions-title-bg canvas {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	pointer-events: none;
	mix-blend-mode: normal;
}
.solutions-title h2 {
	padding: 100px 30px;
	text-align: center;
	position: relative;
	color: #fff;
	font-size: 48px;
}
.solutions {
	padding: 80px 0 0 0;
}
.solutions .col-xl-6:first-child {
	padding-left: 30px;
	padding-right: 30px;
}
.solutions h3 {
	background: linear-gradient(to left, #666666, #FFFFFF);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	text-fill-color: transparent;
	margin-bottom: 8px;
	font-weight: 400;
	text-transform: lowercase;
}
.solutions h2 {
	font-size: 40px;
	margin-bottom: 16px;
}
.solutions p {
	margin-bottom: 24px;
}
.solutions-boxes {
	margin: 0 -15px;
	padding-top: 64px;
}
.solution-box {
	position: sticky;
	top: 120px;
}
.solution-box-title {
	padding: 16px 32px;
	background: #111;
}
.solution-box-title h4 {
	font-size: 24px;
	background: linear-gradient(to left, #666666, #FFFFFF);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	text-fill-color: transparent;
}
.solution-box-content {
	background: #222;
	padding: 32px 30px;
}
.solution-box-content p {
	margin-bottom: 0;
}
.solutions-details-carousel {
	display: flex;
	justify-content: center;
	align-items: center;
	min-height: 100vh;
	flex-direction: column;
	gap: 200px;
	background: url('../img/hero-element.svg')no-repeat center/contain;
	margin: 0 -15px;
	background-attachment: fixed;
}
.solutions-details-carousel-item {
	height: 100vh;
	position: sticky;
	top: 0px;
	text-align: center;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	transition: opacity 0.2s linear, filter 0.2s linear;
	padding: 30px;
}
.solutions-details-carousel-item h3 {
	font-size: 40px;
	background: linear-gradient(to left, #666666, #FFFFFF);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	text-fill-color: transparent;
}
.solutions-details-carousel-item p {
	font-size: 24px;
	margin-top: 16px;
	font-weight: 200;
}
@media (min-width: 1200px) {
	.safari-ios .solutions-title-bg {
		background-attachment: scroll!important;
	}
	.solutions-title h2 {
		padding: 200px 0;
		font-size: 96px;
		max-width: 90%;
		margin: 0 auto;
	}
	.solutions {
		padding: 120px 0;
	}
	.solutions h3 {
		font-size: 24px;
	}
	.solutions h2 {
		font-size: 48px;
	}
	.solutions p {
		font-size: 18px;
	}
	.sticky-to {
		position: sticky;
		top: 220px;
	}
	.solutions-boxes {
		padding-top: 0;
	}
	.solution-box {
		top: 220px;
	}
	.solutions-details-carousel {
		background-size: auto 600px;
	}
	.solutions-details h3 {
		font-size: 96px;
		line-height: 96px;
		max-width: 80%;
	}
	.solutions-details p {
		font-size: 32px;
		max-width: 80%;
	}
}
@media (min-width: 1600px) {
	.solutions-title h2 {
		font-size: 120px;
		max-width: 80%;
	}
}

/* Projects */
.projects {
	padding: 80px 15px;
	background: rgba(255,255,255,.02);
	overflow-x: hidden;
}
.projects h4 {
	font-size: 32px;
	margin-bottom: 32px;
}
.projects-box {
	background: #222;
	border-radius: 24px;
}
.projects-carousel-slide {
	position: relative;
}
.projects-carousel-slide-images {
	position: relative;
}
.projects-carousel-slide-images img {
	max-width: none;
	width: 600px;
	position: absolute;
	left: 50%;
	top: -100px;
	margin: 0 -300px;
}
.projects-carousel-slide-images img:nth-child(2) {
	max-width: none;
	width: 80px;
	position: absolute;
	bottom: 0;
	top: 50px;
	right: 40px;
	left: auto;
	margin: auto;
}
.projects-carousel-slide-content {
	padding: 32px;
	padding-top: 240px;
	position: relative;
	z-index: 2;
}
.projects-carousel-slide-content h3 {
	font-size: 24px;
	margin-bottom: 24px;
}
.projects-carousel-slide-content p + p {
	margin-top: 16px;
}
@media (min-width: 1200px) {
	.projects {
		padding: 120px 0;
	}
	.projects h4 {
		font-size: 60px;
		margin-bottom: 80px;
	}
	.projects-carousel-slide {
		display: flex;
		flex-direction: row-reverse;
	}
	.projects-carousel-slide div {
		flex: 1;
	}
	.projects-carousel-slide-content {
		padding: 64px;
	}
	.projects-carousel-slide-images img {
		left: 0;
		width: 1000px;
		top: -50px;
	}
	.projects-carousel-slide-images img:nth-child(2) {
		width: 130px;
		top: 0;
	}
	.projects-carousel-slide-content h3 {
		font-size: 40px;
		max-width: 80%;
	}
	.projects-carousel-slide-content p {
		font-size: 18px;
	}
}

/* Testimonials */
.testimonials {
	padding: 80px 0;
}
.testimonials-carousel p {
	font-size: 24px;
	font-weight: 300;
	text-align: center;
}
.testimonials-carousel p:nth-child(2) {
	font-size: 14px;
	line-height: 18px;
	margin-top: 16px;
}
.testimonials-carousel p:nth-child(2) span {
	text-transform: uppercase;
	letter-spacing: 2px;
	font-size: 12px;
	font-weight: 600;
	display: block;
	margin-bottom: 8px;
	background: linear-gradient(to left, #666666, #FFFFFF);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	text-fill-color: transparent;
}
@media (min-width: 1200px) {
	.testimonials {
		padding: 120px;
	}
	.testimonials-carousel p {
		font-size: 32px;
	}
}

/* Contact */
.contact {
	position: relative;
	height: 100vh;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	text-align: center;
}
.contact-bg {
	position: absolute;
	inset: 0;
	background: #222 url('../img/suminagashi.gif')no-repeat center top;
	background-size: 1920px auto;
	z-index: 0;
	background-blend-mode: multiply;
}
.contact h2 {
	padding: 0;
	text-align: center;
	position: relative;
	color: #fff;
	font-size: 48px;
	padding-top: 60px;
}
.contact p {
	font-size: 16px;
	margin: 16px auto 24px auto;
	max-width: 260px;
	text-align: center;
	font-weight: 300;
}
.contact a:not(.button) {
	color: #fff;
	background: url('../img/icon-whatsapp.svg')no-repeat right center;
	padding-right: 30px;
	display: inline-block;
}
@media (min-width: 1200px) {
	.contact-bg {
		background-attachment: fixed;
		image-rendering: pixelated;
		background-blend-mode: multiply;
	}
	.safari-ios .contact-bg {
		background-attachment: scroll!important;
	}
	.contact h2 {
		font-size: 72px;
		max-width: 80%;
		margin: 0 auto;
		padding-top: 160px;
	}
	.contact p {
		font-size: 24px;
		max-width: 400px;
		margin: 24px auto 40px auto;
	}
}

/* Shared */
.button {
	position: relative;
	display: inline-block;
	padding: 12px 20px;
	border-radius: 36px;
	overflow: hidden;
	text-decoration: none;
	color: #fff;
	font-size: 12px;
	letter-spacing: 1px;
	text-transform: uppercase;
	font-weight: 600;
	box-shadow: 0 3px 10px rgba(255,255,255,0.1),
							0 3px 20px rgba(255,255,255,0.05);
	background: none;
	will-change: transform;
	transform: translateZ(0);
}
.button-blur {
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0.1) 50%, rgba(255,255,255,0.05) 100% );
	background-size: 100% 300%;
	background-position: top;
	transition: background-position .3s ease-in-out;
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
	z-index: 0;
	box-shadow: 0 1.5px 1px rgba(255,255,255,0.3) inset,
							0 1px 4px rgba(255,255,255,0.04) inset,
							0 0 2px rgba(0,0,0,.4) inset;
	border-radius: 36px;
}
.button:hover .button-blur {
	background-position: bottom;
}
.button-label {
	position: relative;
	z-index: 1;
}
.button:after, .button:before {
	display: block;
	content: '';
	position: absolute;
	bottom: 0px;
	left: 0;
	right: 0;
	margin: auto;
	width: 50%;
	background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 50%, rgba(255, 255, 255, 0) 100%);
	height: 1px;
	filter: blur(1px);
	-webkit-filter: blur(1px);
	transition: all .3s ease-in-out;
}
.button:hover:after, .button:hover:before {
	width: 80%;
}
@media (min-width: 1200px) {
	.button {
		font-size: 16px;
		font-weight: 300;
		padding: 16px 32px;
	}
}

/* Misc */
.hidden-xs {
	display: none;
}
.parallax-item {
	position: absolute;
	will-change: transform;
}
@media (min-width: 1200px) {
	.hidden-xs {
		display: block;
	}
}

/* Carousel */
.projects-carousel > div {
	opacity: 0;
	transition: opacity 0.6s ease;
	position: absolute;
	width: 100%;
	top: 0;
	left: 0;
	pointer-events: none;
	height: 0;
}
.projects-carousel > div.active {
	opacity: 1;
	pointer-events: auto;
	position: relative;
	height: auto;
}
.projects-carousel {
	position: relative;
	min-height: 600px;
}
.carousel-dots {
	display: flex;
	justify-content: center;
	gap: 12px;
	margin-top: -16px;
	padding-bottom: 32px;
	z-index: 10;
	position: relative;
}
.carousel-dots button {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	border: none;
	background: #fff;
	cursor: pointer;
	padding: 0;
}
.carousel-dots button.active {
	background: url('../img/suminagashi.gif')no-repeat bottom center;
}

/* Privacy */
.page-content {
	padding-bottom: 200px;
}
.page-content h2, .page-content h3, .page-content h4 {
	margin-bottom: 15px;
}
.page-content h2 {
	font-size: 24px;
}
.page-content h3 {
	font-size: 21px;
}
.page-content h4 {
	font-size: 18px;
}
.page-content p {
	font-size: 16px;
	margin: 0;
}
.page-content p + p {
	margin-top: 20px;
}
.page-content p + h3, .page-content p + h2 {
	margin-top: 40px;
}
.page-content ul, .page-content ol {
	margin: 20px 0;
	line-height: 2;
}
.page-content li:before {
	content: '» ';
}
.page-content a:not(.button) {
	color: #eee;
	font-weight: bold;
	text-decoration: none;
	border-bottom: 2px solid #fff;
	display: inline-block;
}


/* Transitions */
.fade-on-scroll {
	opacity: 1;
}
[data-transition] {
	opacity: 0;
	transition: all 1s ease-in-out;
}
[data-transition].visible {
	opacity: 1;
}
[data-transition] .word {
	display: inline-block;
	white-space: nowrap;
}
[data-transition] .letter {
	display: inline-block;
	overflow: hidden;
	vertical-align: bottom;
}
[data-transition] .letter-inner {
	display: inline-block;
	transform: translateY(100%);
	transition: transform 1s ease;
}
[data-transition].visible .letter-inner {
	transform: translateY(0);
}