@font-face {
	font-family: "ExatCYR";
	src: url("../../src/fonts/ExatCYR-Regular.woff2") format("woff2"),
		url("../../src/fonts/ExatCYR-Regular.woff") format("woff");
	font-weight: normal;
	font-style: normal;
	font-display: swap;
}

:root {
	--ff: "ExatCYR";

	--white: #ffffff;
	--black: #000000;
	--transparent-gray: rgba(0, 0, 0, 0.3);
	--border-gray: rgba(0, 0, 0, 0.15);

}

/* normalize HTML */
html {
	box-sizing: border-box;
	font-size: 6.944vw;
}
@media screen and (max-width: 768px) and (orientation: portrait) {
html {
		font-size: 26.667vw;
}
	}

*,
*:before,
*:after {
	box-sizing: inherit;
}

body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
ol,
ul {
	margin: 0;
	padding: 0;
	font-weight: normal;
}

ol,
ul {
	list-style: none;
}

img {
	max-width: 100%;
	height: auto;
}

a {
	color: inherit;
	text-decoration: none;
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	font-feature-settings: "liga" 1;
	font-family: var(--ff);
	font-size: 0.11rem;
	line-height: 110%;
	letter-spacing: -0.02em;
	font-weight: normal;
	font-style: normal;
	text-underline-position: from-font;
	text-decoration-skip-ink: none;
	position: relative;
	background-color: var(--white);
}

.body-bg {
	position: absolute;
	z-index: -1;
	width: 100%;
	height: 100%;
	background-color: var(--white);
}

/* Typography */

.fs-11 {
	font-size: 0.11rem;
	line-height: 110%;
	letter-spacing: -0.02em;
	font-weight: normal;
	font-style: normal;
}

.fs-22 {
	font-size: 0.22rem;
	line-height: 110%;
	letter-spacing: -0.02em;
	font-weight: normal;
	font-style: normal;
}

@media screen and (max-width: 768px) and (orientation: portrait) {

.fs-22 {
		font-size: 0.18rem;
}
	}

/* Layout */

.container {
	width: 100%;
	padding: 0 0.2rem;
	margin: 0 auto;
}

@media screen and (max-width: 768px) and (orientation: portrait) {

.container {
		padding: 0 0.05rem;
}
	}

/* Image with 'data' attribute is hidden */

img[data-lazy-src] {
	/* we set the opacity to 0 */
	opacity: 0;
}

/* Image without 'data' attribute is (or becomes) visible */

img.lazyloaded {
	/* prepare the future animation */
	-webkit-transition: opacity 0.5s linear 0.2s;
	-moz-transition: opacity 0.5s linear 0.2s;
	transition: opacity 0.5s linear 0.2s;
	/* we set the opacity to 1 to do the magic */
	opacity: 1;
}

section {
	position: relative;
	z-index: 20;
	background: transparent;
}

/* Page Header */

.page-header {
	position: relative;
	width: 100%;
	height: 2.94rem;
	overflow: hidden;
}

.page-header .black-bg {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 2.85rem;
		background-color: var(--black);
		z-index: 10;
		overflow: hidden;
	}

.page-header .header-inner {
		background-color: var(--white);
		padding: 0.2rem 0;
		height: 2.94rem;
		position: fixed;
		overflow: hidden;
		mask-image: url("../../assets/intro-mask.svg");
		-webkit-mask-image: url("../../assets/intro-mask.svg");
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		-webkit-mask-size: calc(100% - 4px) 100%;
		mask-size: calc(100% - 4px) 100%;
		-webkit-mask-position: 2px 0;
		mask-position: 2px 0;
		z-index: 30;
		width: calc(100% + 4px);
		left: -2px;
		top: 0;
	}

.page-header .header-content {
		position: relative;
		z-index: 40;
		padding: 0.2rem 0;
	}

:is(.page-header .header-content) .header-info {
			display: grid;
			grid-template-columns: repeat(5, 1fr);
			gap: 0.2rem;
		}

:is(:is(.page-header .header-content) .header-info) .name-wrap {
				grid-column: 1 / 3;
			}

:is(:is(.page-header .header-content) .header-info) .contact-wrap {
				grid-column: 3 / 5;
				display: grid;
				grid-template-columns: repeat(2, 1fr);
				gap: 0.2rem;
			}

@media screen and (max-width: 768px) and (orientation: portrait) {

.page-header {
		height: 0.7656rem;
}

		.page-header .black-bg {
			height: 0.74rem;
		}

		.page-header .header-inner {
			height: 0.7656rem;
			padding: 0;
		}

		.page-header .header-content {
			display: none;
		}
	}

/* Info Section */

.info-section {
	padding-bottom: 1rem;
}

.info-section .info-inner {
		display: grid;
		grid-template-columns: repeat(5, 1fr);
		gap: 0.2rem;
	}

:is(.info-section .info-inner) .text-wrap {
			grid-column: 1 / 3;
			max-width: 3.86rem;
			text-indent: 1.53rem;
			text-align: justify;
		}

:is(:is(.info-section .info-inner) .text-wrap) .title {
				display: none;
			}

:is(.info-section .info-inner) .list-wrap {
			grid-column: 3 / 5;
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			gap: 0.2rem;
		}

:is(:is(.info-section .info-inner) .list-wrap) ul {
				list-style: none;
				counter-reset: list;
				margin-left: -0.4rem;
			}

:is(:is(:is(.info-section .info-inner) .list-wrap) ul) li {
					counter-increment: list;
					position: relative;
					padding-left: 0.39rem;
				}

:is(:is(:is(:is(.info-section .info-inner) .list-wrap) ul) li)::before {
						content: "[0" counter(list) "]";
						position: absolute;
						right: calc(100% - 0.2rem);
						top: 0;
						text-align: right;
						font-variant-numeric: lining-nums tabular-nums;
					}

:is(:is(:is(:is(.info-section .info-inner) .list-wrap) ul) li) .role {
						color: var(--transparent-gray);
					}

:is(.info-section .info-inner) .link-wrap {
			grid-column: 5 / 6;
			text-align: right;
		}

:is(:is(.info-section .info-inner) .link-wrap) .contact-wrap {
				display: none;
			}

:is(:is(.info-section .info-inner) .link-wrap) a {
				text-decoration: underline;
				text-underline-offset: 0.02rem;
			}

@media screen and (max-width: 768px) and (orientation: portrait) {

.info-section {
		padding-top: 0.06rem;
}

		.info-section .info-inner {
			display: flex;
			flex-direction: column;
			gap: 0.4rem;
		}

			:is(.info-section .info-inner) .text-wrap {
				max-width: 100%;
				text-indent: unset;
				display: none;
			}

				:is(:is(.info-section .info-inner) .text-wrap) .title {
					display: inline;
					padding-right: 0.79rem;
				}

				:is(:is(.info-section .info-inner) .text-wrap) p {
					display: inline;
				}

			:is(.info-section .info-inner) .list-wrap {
				display: flex;
				gap: 0.2rem;
			}

				:is(:is(.info-section .info-inner) .list-wrap) ul {
					margin-left: 0;
				}

			:is(.info-section .info-inner) .link-wrap {
				display: flex;
				justify-content: space-between;
			}

				:is(:is(.info-section .info-inner) .link-wrap) .contact-wrap {
					display: flex;
					gap: 0.4rem;
				}

					:is(:is(:is(.info-section .info-inner) .link-wrap) .contact-wrap) a {
						text-decoration: none;
					}
	}

/* Image Grid */

.image-grid {
	padding-bottom: 3.51rem;
}

.image-grid .projects-count {
		margin-right: 0.2rem;
	}

.image-grid .grid-inner {
		display: grid;
		grid-template-columns: repeat(5, 1fr);
		gap: 0.2rem;
		row-gap: 0.4rem;
		margin-top: 0.1rem;
	}

:is(.image-grid .grid-inner) .grid-item {
			position: relative;
			width: 100%;
		}

:is(:is(.image-grid .grid-inner) .grid-item) img {
				width: 100%;
				height: auto;
				position: relative;
				display: block;

			}

:is(:is(.image-grid .grid-inner) .grid-item) .project-title {
				margin-top: 0.05rem;
				max-width: 1.7rem;
				/* display: flex;
				align-items: center;
				gap: 0.08rem; */
			}

:is(:is(:is(.image-grid .grid-inner) .grid-item) .project-title) .project-number {
					margin-right: 0.05rem;
					display: inline;
				}

:is(:is(:is(.image-grid .grid-inner) .grid-item) .project-title) .project-name {
					display: inline;
				}

@media screen and (max-width: 768px) and (orientation: portrait) {

.image-grid {
		padding-bottom: 1.27rem;
}

		.image-grid .grid-inner {
			grid-template-columns: repeat(2, 1fr);
			gap: 0.1rem;
			row-gap: 0.2rem;
		}
				:is(:is(.image-grid .grid-inner) .grid-item) .project-title {
					max-width: 100%;
				}
	}

/* Text Section */

.text-section {
	padding-bottom: 3.34rem;
}

.text-section .info-inner {
		display: flex;
		justify-content: space-between;
	}

:is(.text-section .info-inner) .name-contact-wrap {
			display: none;
		}

:is(.text-section .info-inner) .links-wrap {
			display: flex;
			justify-content: space-between;
			width: 8.32rem;
		}

:is(:is(.text-section .info-inner) .links-wrap) a {
				text-decoration: underline;
				text-underline-offset: 0.02rem;
			}

.text-section .section-inner {
		padding-top: 1.88rem;
		display: flex;
		justify-content: space-between;
		gap: 1rem;
	}

:is(:is(.text-section .section-inner) .logo-wrap) img {
				height: 0.66rem;
				width: auto;
				position: relative;
				display: block;
			}

:is(.text-section .section-inner) .text {
			width: 8.32rem;
		}

@media screen and (max-width: 768px) and (orientation: portrait) {

.text-section {
		padding-bottom: 1.27rem;
}

		.text-section .info-inner {
			display: flex;
			flex-direction: column;
			justify-content: space-between;
			gap: 0.2rem;
			padding-top: 0.06rem;
		}

			:is(.text-section .info-inner) .empty-space {
				display: none;
			}

			:is(.text-section .info-inner) .name-contact-wrap {
				display: flex;
				justify-content: space-between;
				width: 100%;
			}

				:is(:is(.text-section .info-inner) .name-contact-wrap) .contact-wrap {
					display: flex;
					gap: 0.39rem;
					width: 1.77rem;
				}

					:is(:is(:is(.text-section .info-inner) .name-contact-wrap) .contact-wrap) .info-title {
						width: unset;
						flex-grow: 1;
					}

			:is(.text-section .info-inner) .links-wrap {
				display: flex;
				justify-content: space-between;
				width: 100%;
			}

				:is(:is(.text-section .info-inner) .links-wrap) a {
					text-decoration: underline;
					text-underline-offset: 0.02rem;
				}

		.text-section .section-inner {
			padding-top: 1rem;
			flex-direction: column;
			gap: 0.5rem;
		}
				:is(:is(.text-section .section-inner) .logo-wrap) img {
					height: 0.44rem;
				}

			:is(.text-section .section-inner) .text {
				width: 100%;
				padding-right: 0.21rem;
			}
	}

/* Footer */

.page-footer {
	width: 100%;
	position: relative;
}

.page-footer .footer-info {
		border-top: 0.01rem solid var(--border-gray);
		display: grid;
		grid-template-columns: repeat(5, 1fr);
		gap: 0.2rem;
		padding-top: 0.06rem;
	}

:is(.page-footer .footer-info) .name-wrap {
			grid-column: 1 / 3;
		}

:is(.page-footer .footer-info) .contact-wrap {
			grid-column: 3 / 5;
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			gap: 0.2rem;
		}

:is(:is(.page-footer .footer-info) .contact-wrap) .info-title {
				width: 0.62rem;
			}

:is(.page-footer .footer-info) .location-wrap {
			display: none;
		}

:is(.page-footer .footer-info) .link-wrap {
			grid-column: 5 / 6;
			text-align: right;
		}

:is(:is(.page-footer .footer-info) .link-wrap) a {
				text-decoration: underline;
				text-underline-offset: 0.02rem;
			}

.page-footer .footer-bottom {
		padding-top: 3.53rem;
		padding-bottom: 0.2rem;
		display: grid;
		grid-template-columns: repeat(5, 1fr);
		gap: 0.2rem;
	}

:is(.page-footer .footer-bottom) .logo-wrap {
			grid-column: 1 / 3;
			display: flex;
			align-items: center;
			gap: 0.13rem;
		}

:is(:is(.page-footer .footer-bottom) .logo-wrap) img {
				height: 0.24rem;
				width: auto;
				position: relative;
				display: block;
			}

:is(.page-footer .footer-bottom) .location-wrap {
			grid-column: 3 / 5;
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			gap: 0.2rem;
		}

:is(:is(.page-footer .footer-bottom) .location-wrap) .info-title {
				width: 0.62rem;
			}

:is(.page-footer .footer-bottom) .copyright-wrap {
			grid-column: 5 / 6;
			text-align: right;
		}

@media screen and (max-width: 768px) and (orientation: portrait) {

		.page-footer .footer-info {
			display: flex;
			justify-content: flex-start;
			flex-wrap: wrap;
			gap: 0.4rem;
			row-gap: 0.2rem;
			padding-top: 0.05rem;
		}

			:is(.page-footer .footer-info) .name-wrap {
				flex-grow: 1;
				max-width: unset;
				width: 100%;
				order: 1;
			}

			:is(.page-footer .footer-info) .contact-wrap {
				display: flex;
				gap: 0.4rem;
				width: unset;
				order: 2;
			}

				:is(:is(.page-footer .footer-info) .contact-wrap) .info-title {
					width: unset;
					flex-grow: unset;
				}

			:is(.page-footer .footer-info) .location-wrap {
				display: flex;
				gap: 0.38rem;
				width: unset;
				order: 4;
			}

				:is(:is(.page-footer .footer-info) .location-wrap) .info-title {
					width: unset;
					flex-grow: unset;
				}

				:is(:is(.page-footer .footer-info) .location-wrap) .location {
					width: unset;
				}

			:is(.page-footer .footer-info) .link-wrap {
				min-width: 0.48rem;
				flex-grow: 1;
				order: 3;
			}

		.page-footer .footer-bottom {
			padding-bottom: 0.25rem;
			display: flex;
			flex-direction: column-reverse;
			justify-content: center;
			align-items: center;
			gap: 0.2rem;
		}

			:is(.page-footer .footer-bottom) .logo-wrap {
				justify-content: center;
			}

			:is(.page-footer .footer-bottom) .location-wrap {
				display: none;
			}
	}