html {

	margin-top: 0 !important;

}



html:has(body.home),

html.is-cubo-home,

body.home {

	scrollbar-width: none;

}



html.is-scroll-locked,

html.is-scroll-locked body {

	overflow: hidden;

}



html:has(body.home)::-webkit-scrollbar,

html.is-cubo-home::-webkit-scrollbar,

body.home::-webkit-scrollbar {

	display: none;

}



body.home {

	padding-top: 0;

}



body.home.admin-bar {
	padding-top: 0;
}

.cubo-custom-button-colors,
.home-hero__button.cubo-custom-button-colors,
.home-intro__button.cubo-custom-button-colors,
.home-feature__button.cubo-custom-button-colors,
.home-reasons__button.cubo-custom-button-colors,
.home-videos__button.cubo-custom-button-colors {
	background: var(--cubo-button-bg, currentColor);
	color: var(--cubo-button-text, #fff);
	border-color: var(--cubo-button-bg, currentColor);
}

.cubo-custom-button-colors svg,
.cubo-custom-button-colors .page-contacts-section__button-arrow,
.cubo-custom-button-colors .page-company-highlight-section__button-arrow {
	color: currentColor;
}

.cubo-custom-button-colors:hover,
.cubo-custom-button-colors:focus,
.home-hero__button.cubo-custom-button-colors:hover,
.home-hero__button.cubo-custom-button-colors:focus,
.home-intro__button.cubo-custom-button-colors:hover,
.home-intro__button.cubo-custom-button-colors:focus,
.home-feature__button.cubo-custom-button-colors:hover,
.home-feature__button.cubo-custom-button-colors:focus,
.home-reasons__button.cubo-custom-button-colors:hover,
.home-reasons__button.cubo-custom-button-colors:focus,
.home-videos__button.cubo-custom-button-colors:hover,
.home-videos__button.cubo-custom-button-colors:focus {
	background: var(--cubo-button-hover-bg, var(--cubo-button-bg, currentColor));
	color: var(--cubo-button-hover-text, var(--cubo-button-text, #fff));
	border-color: var(--cubo-button-hover-bg, var(--cubo-button-bg, currentColor));
}

.home-hero {
	position: relative;
	min-height: 100vh;
	overflow: hidden;

	background-color: #122b44;

	background-position: center center;

	background-size: cover;

	color: #fff;

	touch-action: pan-y;

	overscroll-behavior-x: contain;

}



.home-hero__video {

	position: absolute;

	inset: 0;

	width: 100%;

	height: 100%;

	object-fit: cover;

}



.home-hero__overlay {

	position: absolute;

	inset: 0;

	background: rgba(0, 0, 0, 0.42);

}



.home-hero__slides,

.home-hero__slide {

	position: absolute;

	inset: 0;

}



.home-hero__slides {
	display: none;
	overflow: hidden;
	z-index: 0;
}

.home-hero--has-project-slider .home-hero__slides {
	display: block;
}


.home-hero__slide {

	background-color: #283643;

	background-position: center center;

	background-repeat: no-repeat;

	background-size: cover;

	transform: translateX(100%);

	transition: transform 500ms ease;

	will-change: transform;

}



.home-hero__content {

	position: absolute;

	left: 24px;

	bottom: 22px;

	z-index: 1;

	max-width: 880px;

}



.home-hero__title {
	margin: 0 0 24px;
	font-size: 60px;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0;
}

.home-hero__text {
	margin: 0 0 24px;
	max-width: 520px;
}

.home-hero__text,
.home-hero__text p {
	color: #fff;
	font-size: 18px;
	font-weight: 400;
	line-height: 1.3;
}

.home-hero__text p {
	margin: 0;
}


.home-hero__button {
	display: inline-flex;

	align-items: center;

	justify-content: space-between;

	width: 100%;

	max-width: 250px;

	min-width: 250px;

	min-height: 52px;

	padding: 14px 16px;
	box-sizing: border-box;

	border: 1px solid #153655;

	background: #153655;

	color: #fff;

	font-size: 16px;

	font-weight: 700;

	text-decoration: none;

	transition: background-color 300ms ease, color 300ms ease, border-color 300ms ease;
}



.home-hero__button:hover,

.home-hero__button:focus {

	background: #e3e3e3;

	color: #000;

	border-color: transparent;

}



.case-slider {

	position: absolute;

	right: 24px;

	bottom: 22px;

	z-index: 1;

	width: min(440px, calc(100vw - 48px));

	color: #fff;

}



.case-slider__header {

	position: relative;

	z-index: 2;

	display: flex;

	align-items: center;

	justify-content: space-between;

	gap: 18px;

	margin-bottom: 8px;

}



.case-slider__title-link {

	display: inline-block;

	color: inherit;

	text-decoration: none;

	font-size: 24px;

	font-weight: 500;

	line-height: 1;

	text-shadow: 0 1px 12px rgba(0, 0, 0, 0.45);

	pointer-events: none;

}



.case-slider__viewport {

	position: relative;

	overflow: hidden;

	aspect-ratio: 440 / 146;

	background: #6f767d;

}



.case-slider__preview-track {

	position: relative;

	width: 100%;

	height: 100%;

}



.case-slider__preview-image {

	position: absolute;

	inset: 0;

	width: 100%;

	height: 100%;

	background-position: center center;

	background-repeat: no-repeat;

	background-size: cover;

	transform: translateX(100%);

	transition: transform 520ms cubic-bezier(0.22, 1, 0.36, 1);

	will-change: transform;

}



.case-slider__preview-image.is-current {

	transform: translateX(0);

}



.case-slider__preview-image.is-next {

	transform: translateX(100%);

}



.case-slider__viewport.is-sliding .case-slider__preview-image.is-current {

	transform: translateX(-100%);

}



.case-slider__viewport.is-sliding .case-slider__preview-image.is-next {

	transform: translateX(0);

}



.case-slider__next {

	display: inline-flex;

	align-items: center;

	justify-content: center;

	flex: 0 0 auto;

	width: 32px;

	height: 20px;

	padding: 0;

	border: 0;

	background: transparent;

	color: #fff;

	cursor: pointer;

}



.case-slider__arrow {

	display: block;

	width: 24px;

	height: 16px;

}



.case-slider__progress {

	position: absolute;

	right: 0;

	bottom: 0;

	left: 0;

	height: 3px;

	overflow: hidden;

	background: rgba(255, 255, 255, 0.28);

}



.case-slider__progress span {

	display: block;

	width: 0;

	height: 100%;

	background: #00649a;

}



.case-slider.is-running .case-slider__progress span {

	animation: cuboCaseProgress 5000ms linear forwards;

}



.case-slider__counter {

	display: none;

	font-size: 18px;

	font-weight: 500;

	line-height: 1;

	white-space: nowrap;

}



.home-page-content {

	padding: 80px 24px;

}



.home-intro {

	display: grid;

	grid-template-columns: 1fr 1fr;

	height: 500px;

	border-bottom: 1px solid #000;

	background: #fff;

	color: #111;

}



.home-intro__media {

	display: flex;

	align-items: flex-end;

	padding: 20px 18px 18px;

	border-right: 1px solid #707b83;

}



.home-intro__image-wrap {

	position: relative;

	width: min(320px, 70%);

	aspect-ratio: 1;

	overflow: hidden;

}



.cubo-square-reveal::after {

	content: "";

	position: absolute;

	inset: -2px;

	z-index: 1;

	background: #fff;

	clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 0 100%, 0 100%, 0 100%);

	transition: clip-path 1500ms ease;

	pointer-events: none;

}



.is-visible .cubo-square-reveal::after {

	clip-path: polygon(0 0, 100% 0, 100% 100%, 100% 100%, 100% 0, 0 0, 0 100%, 0 100%);

}



.cubo-image-reveal {

	position: relative;

	overflow: hidden;

}



.cubo-image-reveal::after {

	content: "";

	position: absolute;

	inset: -2px;

	z-index: 1;

	background: #fff;

	clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 0 100%, 0 100%, 0 100%);

	transition: clip-path 1500ms ease;

	pointer-events: none;

}



.is-visible .cubo-image-reveal::after {

	clip-path: polygon(0 0, 100% 0, 100% 100%, 100% 100%, 100% 0, 0 0, 0 100%, 0 100%);

}



.home-intro__media img {

	display: block;

	width: 100%;

	height: 100%;

	object-fit: cover;

}



.home-intro__content {

	display: flex;

	flex-direction: column;

	justify-content: space-between;

	padding: 20px 18px 18px;

}



.home-intro__title {

	max-width: 500px;

	margin: 0;

	color: #2d82b2;

	font-size: 50px;

	font-weight: 500;

	line-height: 55px;

	letter-spacing: 0;

}



.home-intro__title,

.home-intro__text,

.home-intro__button {

	opacity: 0;

	transform: translateX(80px);

	transition: opacity 650ms ease, transform 650ms ease;

}



.home-intro__text {

	transition-delay: 140ms;

}



.home-intro__button {

	transition-delay: 280ms;

}



.home-intro.is-visible .home-intro__title,

.home-intro.is-visible .home-intro__text,

.home-intro.is-visible .home-intro__button {

	opacity: 1;

	transform: translateX(0);

}



.home-intro__bottom {

	display: grid;

	grid-template-columns: minmax(0, 1fr) 250px;

	align-items: end;

	gap: 40px;

}



.home-intro__text {

	font-size: 16px;

	font-weight: 500;

	line-height: 1;

}



.home-intro__text p {

	margin: 0;

}



.home-intro__text p + p {

	margin-top: 10px;

}



.home-intro__button {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	max-width: 250px;
	min-width: 250px;
	min-height: 48px;
	padding: 14px 16px;
	box-sizing: border-box;

	border: 1px solid #153655;

	background: #153655;

	color: #fff;

	font-size: 16px;

	font-weight: 700;

	text-decoration: none;

	transition: opacity 650ms ease 280ms, transform 650ms ease 280ms, background-color 300ms ease, color 300ms ease, border-color 300ms ease;
}



.home-intro__button:hover,

.home-intro__button:focus {

	background: #e3e3e3;

	color: #000;

	border-color: transparent;

}



.home-value {

	min-height: 100vh;

	background: #fff;

	color: #2d82b2;

}



.home-value__inner {

	position: relative;

	height: 100vh;

	min-height: 100vh;

	overflow: hidden;

}



.home-value__media {

	position: absolute;

	top: 50%;

	left: 50%;

	width: 450px;

	max-width: calc(100vw - 48px);

	aspect-ratio: 1.62;

	overflow: hidden;

	transform: translate(-50%, -50%) scale(var(--home-value-scale, 1));

	transform-origin: center;

	will-change: transform;

}



.home-value.is-pinned {

	overflow: hidden;

}



.home-value__media img,

.home-value__media video {

	display: block;

	width: 100%;

	height: 100%;

	object-fit: cover;

}



.home-value__text {

	position: absolute;

	z-index: 1;

}



.home-value__text p {

	margin: 0;

}



.home-value__text--left,

.home-value__text--right {

	color: #2d82b2;

	font-size: clamp(82px, 10vw, 160px);

	font-weight: 500;

	line-height: 0.9;

	letter-spacing: 0;

	opacity: 0;

	transition: opacity 700ms ease, transform 700ms ease;

}



.home-value__text--left {

	top: 32px;

	left: 12px;

	transform: translateX(80px);

}



.home-value__text--right {

	right: 12px;

	bottom: 70px;

	transform: translateX(-80px);

}



.home-value.is-visible .home-value__text--left,

.home-value__text--right.is-visible {

	opacity: 1;

	transform: translateX(0);

}



.home-value__text--body {

	left: var(--home-value-expanded-left, calc(50% - 365px));

	bottom: 70px;

	max-width: 360px;

	color: #153655;

	font-size: 32px;

	font-weight: 500;

	line-height: 1.08;

}



.home-value__text--body strong {

	color: #2d82b2;

	font-weight: 500;

}



.home-services {

	min-height: 100vh;

	border-top: 1px solid #000;

	background: #fff;

	color: #111;

}



.home-services__inner {

	position: relative;

	height: 100vh;

	min-height: 100vh;

	overflow: hidden;

	padding: 36px 18px 82px 0;

	box-sizing: border-box;

}



.home-services__title {

	position: absolute;

	top: 36px;

	left: 22px;

	margin: 0;

	color: #2d82b2;

	font-size: 52px;

	font-weight: 500;

	line-height: 1;

	letter-spacing: 0;
    width: calc(var(--home-value-expanded-left) - 60px);

}



.home-services__content {

	display: flex;

	flex-direction: column;

	height: 100%;

	margin-left: var(--home-value-expanded-left, calc(50% - 365px));

}



.home-services__intro {

	max-width: 820px;

	margin-bottom: 8px;

	font-size: 20px;

	font-weight: 500;

	line-height: 1.28;

}



.home-services__intro p {

	margin: 0;

}



.home-services-slider {

	position: relative;

	flex: 1 1 auto;

	min-height: 0;

	overflow: hidden;

	touch-action: pan-y;

	overscroll-behavior-x: contain;

}



.home-services-slider__track {

	display: flex;

	height: 100%;

	transform: translateX(calc(var(--home-services-index, 0) * -100%));

	transition: transform 620ms cubic-bezier(0.22, 1, 0.36, 1);

}



.home-services-slider__nav {

	display: none;

	position: absolute;

	top: 50%;

	z-index: 2;

	align-items: center;

	justify-content: center;

	width: 44px;

	height: 44px;

	transform: translateY(-50%);

	border: 0;

	border-radius: 50%;

	background: rgba(21, 54, 85, 0.55);

	color: #fff;

	cursor: pointer;

}



.home-services-slider__nav:disabled {

	opacity: 0.35;

	cursor: default;

}



.home-services-slider__nav--prev {

	left: 12px;

}



.home-services-slider__nav--next {

	right: 12px;

}



/* Sotto i 700px di altezza lo scroll-jacking viene disattivato in JS
   (shouldDisableServiceLock) perche' risultava instabile: la navigazione
   avviene tramite queste frecce e/o swipe touch. */
@media (max-height: 700px) {

	.home-services-slider__nav {

		display: flex;

	}

}



.home-services-slide {

	position: relative;

	flex: 0 0 100%;

	height: 100%;

}



.home-services-slide__image {

	display: block;

	width: 100%;

	height: 100%;

	object-fit: cover;

}



.home-services-slide__overlay {

	position: absolute;

	inset: 0;

	display: flex;

	flex-direction: column;

	justify-content: flex-end;

	padding: 0 24px 18px;

	background: linear-gradient(180deg, rgba(0, 0, 0, 0.08) 35%, rgba(0, 0, 0, 0.52) 100%);

	box-sizing: border-box;

	color: #fff;

}



.home-services-slide__title {

	margin: 0 0 34px;

	font-size: 85px;

	font-weight: 500;

	line-height: 1;

	letter-spacing: 0;

}



@media (min-width: 768px) and (max-width: 950px) {

	.home-services-slide__title {

		font-size: 60px;

	}

}



@media (min-width: 768px) and (max-height: 650px) {

	.home-services-slide__title {

		font-size: 60px;

	}

}



.home-services-slide__bottom {

	display: grid;

	grid-template-columns: minmax(0, 500px) 250px minmax(0, 1fr);

	align-items: end;

	gap: 36px;

}



.home-services-slide__bottom--no-text {

	grid-template-columns: 250px minmax(0, 1fr);

}



.home-services-slide__bottom--no-text .home-services-slide__button {

	grid-column: 1;

}



.home-services-slide__bottom--no-text .home-services-slide__index {

	grid-column: 2;

	justify-self: end;

}



.home-services-slide__text {

	max-width: 500px;

	font-size: 12px;

	font-weight: 500;

	line-height: 1.25;

}



.home-services-slide__text p {

	margin: 0;

}



.home-services-slide__button {

	display: flex;

	align-items: center;

	justify-content: space-between;

	width: 100%;

	max-width: 250px;

	min-width: 250px;

	min-height: 48px;

	padding: 0 10px 0 16px;

	box-sizing: border-box;

	border: 1px solid #153655;

	background: #153655;

	color: #fff;

	font-size: 16px;

	font-weight: 700;

	text-decoration: none;

	transition: background-color 300ms ease, color 300ms ease, border-color 300ms ease;
	justify-self: start;

}



.home-services-slide__button:hover,

.home-services-slide__button:focus {

	background: #e3e3e3;

	color: #000;

	border-color: transparent;

}



.home-services-slide__index {

	justify-self: end;

	font-size: 11px;

	font-weight: 500;

	line-height: 1;

	text-align: right;

}



.home-certifications {

	display: grid;

	grid-template-columns: var(--home-value-expanded-left, calc(50% - 365px)) minmax(0, 1fr);

	min-height: 620px;

	border-top: 1px solid #000;

	border-bottom: 1px solid #000;

	background: #fff;

	color: #111;

}



.home-certifications__left {

	border-right: 1px solid #707b83;

}



.home-certifications__right {

	min-width: 0;

}



.home-certifications__header {

	display: grid;

	grid-template-columns: calc(50vw - var(--home-value-expanded-left, calc(50% - 365px)) - 34px) minmax(360px, 1fr);

	gap: 34px;

	padding: 24px 0 8px;

}



.home-certifications__title {

	margin: 0;

	padding-left: 24px;

	color: #2d82b2;

	font-size: 36px;

	font-weight: 500;

	line-height: 1;

	letter-spacing: 0;

}



.home-certifications__intro {

	max-width: 720px;

	font-size: 16px;

	font-weight: 500;

	line-height: 1.28;

}



.home-certifications__intro p {

	margin: 0;

}



.home-certifications__accordion {

	margin-left: calc(50vw - var(--home-value-expanded-left, calc(50% - 365px)));

	border-top: 1px solid #2d82b2;

}



.home-certification-item {

	border-bottom: 1px solid #c3c3c3;

	color: #9c9c9c;

}



.home-certification-item.is-active {

	color: #2d82b2;

}



.home-certification-item__toggle {

	display: grid;

	grid-template-columns: 34px minmax(0, 1fr);

	align-items: center;

	width: 100%;

	padding: 16px 16px 14px 0;

	border: 0;

	background: transparent;

	color: inherit;

	font: inherit;

	text-align: left;

	cursor: pointer;

}



.home-certification-item__arrow {

	width: 16px;

	height: 16px;

	margin-left: 0;

	background:

		linear-gradient(currentColor, currentColor) right 0 top 0 / 11px 2px no-repeat,

		linear-gradient(currentColor, currentColor) right 0 top 0 / 2px 11px no-repeat,

		linear-gradient(135deg, transparent 0 calc(50% - 0.75px), currentColor calc(50% - 0.75px) calc(50% + 0.75px), transparent calc(50% + 0.75px) 100%) center / 16px 16px no-repeat;

}



.home-certification-item__title {

	font-size: 17px;

	font-weight: 700;

	line-height: 1.1;

}



.home-certification-item__panel {

	display: grid;

	grid-template-columns: minmax(0, 1fr) 260px;

	gap: 48px;

	max-height: 0;

	overflow: hidden;

	padding: 0 28px 0 34px;

	opacity: 0;

	transition: max-height 360ms ease, padding-bottom 360ms ease, opacity 260ms ease;

}



.home-certification-item.is-active .home-certification-item__panel {

	max-height: 260px;

	padding-bottom: 20px;

	opacity: 1;

}



.home-certification-item__text {

	max-width: 600px;

	font-size: 13px;

	font-weight: 500;

	line-height: 1.25;

}



.home-certification-item__text p {

	margin: 0;

}



.home-certification-item__image {

	align-self: center;

	justify-self: center;

	max-width: 240px;

	max-height: 96px;

	object-fit: contain;

}



.home-news {

	background: #fff;

	color: #111;

}



.home-news__grid {

	display: grid;

	grid-template-columns: repeat(2, minmax(0, 1fr));

	gap: 10px;

	min-height: 620px;

	padding: 18px 18px 60px;

	box-sizing: border-box;

}



.home-news-card {

	display: flex;

	flex-direction: column;

	align-self: end;

	min-width: 0;

}



.home-news-card:first-child {

	margin-top: 200px;

}



.home-news-card:nth-child(2) {

	align-self: start;

}



.home-news-card__image-link {

	display: block;

	overflow: hidden;

	color: inherit;

	text-decoration: none;

}



.home-news-card__image {

	display: block;

	width: 100%;

	aspect-ratio: 1.55;

	object-fit: cover;

}



.home-news-card__category {

	margin-top: 12px;

	font-size: 12px;

	font-weight: 700;

	line-height: 1;

}



.home-news-card__body {

	margin-top: 8px;

}



.home-news-card__title {

	max-width: 580px;

	margin: 0;

	color: #2d82b2;

	font-size: 28px;

	font-weight: 500;

	line-height: 1.12;

	letter-spacing: 0;

}



.home-news-card__title a,

.home-news-card__arrow {

	color: inherit;

	text-decoration: none;

}



.home-news-card__footer {

	display: grid;

	grid-template-columns: minmax(0, 1fr) 30px;

	align-items: center;

	gap: 18px;

	margin-top: 8px;

}



.home-news-card__arrow {

	display: inline-flex;

	align-items: center;

	justify-content: center;

	align-self: center;

	width: 30px;

	height: 30px;

	color: #153655;

}



.home-news-card__arrow span {

	display: block;

	width: 18px;

	height: 18px;

	background:

		linear-gradient(currentColor, currentColor) right 0 top 0 / 13px 2px no-repeat,

		linear-gradient(currentColor, currentColor) right 0 top 0 / 2px 13px no-repeat,

		linear-gradient(135deg, transparent 0 calc(50% - 0.75px), currentColor calc(50% - 0.75px) calc(50% + 0.75px), transparent calc(50% + 0.75px) 100%) center / 18px 18px no-repeat;

}



.home-news-card__excerpt {

	max-width: 540px;

	font-size: 11px;

	font-weight: 500;

	line-height: 1.25;

}



.home-feature {

	min-height: 720px;

	padding: 88px 18px 84px;

	background: #d2d2d2;

	color: #153655;

	box-sizing: border-box;

}



.home-feature__title {

	margin: 0 0 28px;

	font-size: clamp(92px, 11vw, 178px);

	font-weight: 500;

	line-height: 0.82;

	letter-spacing: 0;

	opacity: 0;

	transform: translateX(80px);

	transition: opacity 700ms ease, transform 700ms ease;

}



.home-feature.is-visible .home-feature__title {

	opacity: 1;

	transform: translateX(0);

}



.home-feature__grid {

	display: grid;

	grid-template-columns: minmax(320px, 32vw) minmax(0, 1fr);

	gap: clamp(80px, 17vw, 280px);

	align-items: stretch;

}



.home-feature__media-wrap {

	min-height: 300px;

	background: #000;

}



.home-feature__media {

	display: block;

	width: 100%;

	height: 100%;

	min-height: 300px;

	object-fit: cover;

}



.home-feature__content {

	display: flex;

	flex-direction: column;

	justify-content: space-between;

	min-height: 100%;

	padding-top: 0;

}



.home-feature__subtitle {

	max-width: 430px;

	margin: 0;

	font-size: 38px;

	font-weight: 700;

	line-height: 1.02;

	letter-spacing: 0;

}



.home-feature__bottom {

	display: grid;

	grid-template-columns: minmax(0, 1fr) minmax(0, 250px);

	align-items: end;

	gap: 70px;

}



.home-feature__text {

	max-width: 510px;

	font-size: 12px;

	font-weight: 500;

	line-height: 1.2;

}



.home-feature__text p {

	margin: 0;

}



.home-feature__button {
	display: flex;
	align-items: center;
	justify-content: space-between;
	justify-self: start;
	width: 100%;
	max-width: 250px;
	min-width: 250px;
	min-height: 48px;
	padding: 14px 16px;
	box-sizing: border-box;

	border: 1px solid #153655;

	background: #153655;

	color: #fff;

	font-size: 16px;

	font-weight: 700;

	text-decoration: none;

	transition: background-color 300ms ease, color 300ms ease, border-color 300ms ease;
}



.home-feature__button:hover,

.home-feature__button:focus {

	background: #e3e3e3;

	color: #000;

	border-color: transparent;

}



.home-reasons {

	display: grid;

	grid-template-columns: var(--home-value-expanded-left, calc(50% - 365px)) minmax(0, 1fr);

	min-height: 680px;

	border-bottom: 1px solid #000;

	background: #fff;

	color: #111;

}



.home-reasons__left {

	border-right: 1px solid #707b83;

}



.home-reasons__right {

	min-width: 0;

}



.home-reasons__header {

	display: grid;

	grid-template-columns: calc(50vw - var(--home-value-expanded-left, calc(50% - 365px)) - 34px) minmax(360px, 1fr);

	gap: 34px;

	padding: 54px 14px 40px 24px;

}



.home-reasons__title {

	margin: 0;

	color: #2d82b2;

	font-size: 38px;

	font-weight: 500;

	line-height: 1.08;

	letter-spacing: 0;

}



.home-reasons__content {

	min-width: 0;

}



.home-reasons__intro {

	max-width: 820px;

	font-size: 16px;

	font-weight: 500;

	line-height: 1.32;

}



.home-reasons__intro p {

	margin: 0 0 18px;

}



.home-reasons__intro p:last-child {

	margin-bottom: 0;

}



.home-reasons__accordion {

	margin-top: 18px;

	border-top: 1px solid #2d82b2;

}



.home-reason-item {

	border-bottom: 1px solid #c3c3c3;

	color: #9c9c9c;

}



.home-reason-item.is-active {

	color: #2d82b2;

}



.home-reason-item__toggle {

	display: grid;

	grid-template-columns: 34px minmax(0, 1fr);

	align-items: center;

	width: 100%;

	padding: 16px 16px 14px 0;

	border: 0;

	background: transparent;

	color: inherit;

	font: inherit;

	text-align: left;

	cursor: pointer;

}



.home-reason-item__arrow {

	width: 16px;

	height: 16px;

	margin-left: 0;

	background:

		linear-gradient(currentColor, currentColor) right 0 top 0 / 11px 2px no-repeat,

		linear-gradient(currentColor, currentColor) right 0 top 0 / 2px 11px no-repeat,

		linear-gradient(135deg, transparent 0 calc(50% - 0.75px), currentColor calc(50% - 0.75px) calc(50% + 0.75px), transparent calc(50% + 0.75px) 100%) center / 16px 16px no-repeat;

}



.home-reason-item__title {

	font-size: 17px;

	font-weight: 700;

	line-height: 1.1;

}



.home-reason-item__panel {

	max-height: 0;

	overflow: hidden;

	padding: 0 28px 0 34px;

	opacity: 0;

	transition: max-height 360ms ease, padding-bottom 360ms ease, opacity 260ms ease;

}



.home-reason-item.is-active .home-reason-item__panel {

	max-height: 180px;

	padding-bottom: 18px;

	opacity: 1;

}



.home-reason-item__text {

	font-size: 13px;

	font-weight: 500;

	line-height: 1.25;

}



.home-reason-item__text p {

	margin: 0;

}



.home-reasons__button {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 250px;
	min-width: 250px;
	min-height: 48px;
	margin: 36px 0 0 auto;
	padding: 14px 16px;
	box-sizing: border-box;

	border: 1px solid #153655;

	background: #153655;

	color: #fff;

	font-size: 16px;

	font-weight: 700;

	text-decoration: none;

	transition: background-color 300ms ease, color 300ms ease, border-color 300ms ease;
}



.home-reasons__button:hover,

.home-reasons__button:focus {

	background: #e3e3e3;

	color: #000;

	border-color: transparent;

}



.home-videos {

	display: grid;

	grid-template-columns: var(--home-value-expanded-left, calc(50% - 365px)) minmax(0, 1fr);

	min-height: 440px;

	background: #fff;

	color: #111;

}



.home-videos__left {

	padding: 78px 18px 40px;

}



.home-videos__title {

	margin: 0;

	color: #2d82b2;

	font-size: 38px;

	font-weight: 500;

	line-height: 1;

	letter-spacing: 0;

}



.home-videos__right {

	display: grid;

	grid-template-columns: minmax(320px, 36%) minmax(0, 1fr);

	grid-template-rows: auto 1fr;

	gap: 58px 48px;

	padding: 72px 14px 64px 0;

}



.home-videos__intro {

	max-width: 520px;

	font-size: 16px;

	font-weight: 500;

	line-height: 1.28;

}



.home-videos__intro p {

	margin: 0;

}



.home-videos__grid {

	display: grid;

	grid-template-columns: repeat(3, minmax(0, 1fr));

	gap: 18px;

	align-self: start;

}



.home-video-card__media {

	display: block;

	width: 100%;

	aspect-ratio: 1.75;

	overflow: hidden;

	background: #d8d8d8;

	text-decoration: none;

}



.home-video-card__media img,

.home-video-card__media video {

	display: block;

	width: 100%;

	height: 100%;

	object-fit: cover;

}



.home-video-card__placeholder {

	display: block;

	width: 100%;

	height: 100%;

	background: #d8d8d8;

}



.home-video-card__title {

	max-width: 280px;

	margin: 14px 0 0;

	font-size: 13px;

	font-weight: 700;

	line-height: 1.2;

	letter-spacing: 0;

}



.home-video-card__title a {

	color: inherit;

	text-decoration: none;

}



.home-videos__button {
	grid-column: 2;

	justify-self: end;

	align-self: end;

	display: flex;

	align-items: center;

	justify-content: space-between;

	width: 330px;
	min-width: 250px;
	min-height: 48px;
	padding: 14px 16px;
	box-sizing: border-box;

	border: 1px solid #153655;

	background: #153655;

	color: #fff;

	font-size: 16px;

	font-weight: 700;

	text-decoration: none;

	transition: background-color 300ms ease, color 300ms ease, border-color 300ms ease;
}



.home-videos__button:hover,

.home-videos__button:focus {

	background: #e3e3e3;

	color: #000;

	border-color: transparent;

}



.home-updates {

	padding: 54px 0 58px;

	background: #e3e3e3;

	color: #111;

}



.home-updates__inner {

	width: min(1250px, calc(100% - 36px));

	margin: 0 auto;

}



.home-updates__header {

	display: grid;

	grid-template-columns: repeat(2, minmax(0, 1fr));

	gap: 28px;

	margin-bottom: 32px;

}



.home-updates__title {

	margin: 0;

	color: #2d82b2;

	font-size: 38px;

	font-weight: 500;

	line-height: 1;

	letter-spacing: 0;

}



.home-updates__intro {

	grid-column: 2;

	font-size: 16px;

	font-weight: 500;

	line-height: 1.28;

}



.home-updates__intro p {

	margin: 0;

}



.home-updates__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 22px;
}

.home-updates-slider {
	display: grid;
	gap: 22px;
}

.home-updates-slider__header {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
}

.home-updates-slider__arrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 1px solid rgba(17, 17, 17, 0.3);
	border-radius: 5px;
	background: transparent;
	color: #111;
	cursor: pointer;
	transition: background-color 300ms ease, color 300ms ease, border-color 300ms ease, opacity 300ms ease;
}

.home-updates-slider__arrow:hover,
.home-updates-slider__arrow:focus-visible {
	border-color: #111;
	background: #111;
	color: #fff;
	outline: none;
}

.home-updates-slider__arrow[disabled] {
	opacity: 0.35;
	cursor: default;
}

.home-updates-slider__arrow span {
	display: block;
	width: 16px;
	height: 16px;
	border-top: 2px solid currentColor;
	border-right: 2px solid currentColor;
	transform: rotate(45deg);
}

.home-updates-slider__arrow--prev span {
	transform: rotate(-135deg);
}

.home-updates-slider__viewport {
	overflow: hidden;
}

.home-updates-slider__track {
	display: flex;
	transition: transform 400ms ease;
	will-change: transform;
}

.home-updates-slider__page {
	flex: 0 0 100%;
	min-width: 100%;
}

.home-updates-slider__dots {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
}

.home-updates-slider__dot {
	width: 12px;
	height: 12px;
	padding: 0;
	border: 1px solid #111;
	border-radius: 999px;
	background: transparent;
	cursor: pointer;
	transition: background-color 300ms ease, border-color 300ms ease, opacity 300ms ease;
}

.home-updates-slider__dot.is-active {
	background: #111;
}


.home-update-card {

	position: relative;

	display: grid;

	grid-template-columns: minmax(150px, 48%) minmax(0, 1fr) 34px;

	gap: 14px;

	align-items: end;

	padding-top: 18px;

	border-top: 1px solid #777;

}



.home-update-card__image {

	display: block;

	aspect-ratio: 1.55;

	overflow: hidden;

	background: #cfcfcf;

	text-decoration: none;

}



.home-update-card__image img {

	display: block;

	width: 100%;

	height: 100%;

	object-fit: cover;

}



.home-update-card__content {

	align-self: stretch;

	display: flex;

	flex-direction: column;

	justify-content: space-between;

	min-height: 124px;

}



.home-update-card__subtitle {

	color: #111;

	font-size: 11px;

	font-weight: 700;

	line-height: 1.15;

}



.home-update-card__title {

	max-width: 230px;

	margin: 0;

	color: #0d82bf;

	font-size: 17px;

	font-weight: 500;

	line-height: 1.16;

	letter-spacing: 0;

}



.home-update-card__title a {

	color: inherit;

	text-decoration: none;

}



.home-update-card__arrow {

	display: flex;

	align-items: flex-end;

	justify-content: center;

	width: 34px;

	height: 34px;

	color: #111;

	text-decoration: none;

}



.home-update-card__arrow span {

	display: block;

	width: 34px;

	height: 34px;

	background:

		linear-gradient(currentColor, currentColor) right 0 top 0 / 24px 2px no-repeat,

		linear-gradient(currentColor, currentColor) right 0 top 0 / 2px 24px no-repeat,

		linear-gradient(135deg, transparent 0 calc(50% - 0.75px), currentColor calc(50% - 0.75px) calc(50% + 0.75px), transparent calc(50% + 0.75px) 100%) center / 34px 34px no-repeat;

}



@keyframes cuboCaseProgress {

	from {

		width: 0;

	}



	to {

		width: 100%;

	}

}

@media (max-width: 1330px) {
	.home-services__title {
        position: static;
        margin-bottom: 24px;
        font-size: 42px;
        width: 100%;
    }
	.home-services__content {
        height: auto;
        margin-left: 0;
    }
	.home-services__inner {
        height: auto;
        min-height: 100vh;
        padding: 56px 24px;
    }
	.home-services-slide {
		height:60vh;
	}
}


@media (max-width: 1120px) {

	.home-hero__content {

		right: 24px;

		bottom: 220px;

	}



	.home-certification-item__panel {
        grid-template-columns: 1fr;
        gap: 20px;
        padding-left: 58px;
    }

	.home-certification-item__image {
        justify-self: start;
    }

}



@media (max-width: 1120px) {

	.case-slider {

		display: none;

	}

}

@media all and (max-height: 700px) and (min-width:800px) {

	.home-certifications__header {
        grid-template-columns: 1fr;
        gap: 20px;
        padding: 40px 24px 18px;
    }
	.home-certifications__title {
		padding-left: 0;
	}
	.home-certifications__accordion {
		margin-left: 0;
		border-top: 1px solid #2d82b2;
		padding-left: 24px;
	}
}


@media (max-width: 900px) {

	.home-intro {

		grid-template-columns: 1fr;

		height: auto;

	}



	.home-intro__media {

		min-height: 260px;

		border-right: 0;

		border-bottom: 0;

	}



	.home-intro__content {

		gap: 24px;

		padding: 20px 24px 32px;

	}



	.home-intro__bottom {

		grid-template-columns: 1fr;

		padding-right: 0;

	}



	.home-intro__button {

		width: 100%;

		max-width: 250px;

		margin-left: auto;

	}

}



@media (max-width: 767px) {

	.home-value {

		height: auto;

		min-height: 0;

	}



	.home-value__inner {

		position: relative;

		display: grid;

		grid-template-columns: 1fr;

		align-content: center;

		gap: 14px;

		height: auto;

		min-height: 0;

		padding: 48px 24px;

	}



	.home-value__media,

	.home-value__text {

		position: static;

		transform: none;

	}



	.home-value__media {

		width: 100%;

		max-width: 450px;

		margin: 0 auto;

	}



	.home-value__text--left,

	.home-value__text--right {

		font-size: 56px;

	}



	.home-value__text--left {

		order: 1;

	}



	.home-value__media {

		order: 2;

	}



	.home-value__text--right {

		order: 3;

		margin-bottom: 50px;

		text-align: right;

	}



	.home-value__text--body {

		order: 4;

		width: 100%;

		max-width: none;

		font-size: 24px;

	}



	.home-services__inner {

		height: auto;

		min-height: 100vh;

		padding: 56px 24px;

	}



	.home-services__title {

		position: static;

		margin-bottom: 24px;

		font-size: 42px;

		width:100%;

	}



	.home-services__content {

		height: auto;

		margin-left: 0;

	}



	.home-services__intro {

		font-size: 16px;

	}



	.home-services-slider {

		height: 68vh;

		min-height: 520px;

	}



	.home-services-slide__overlay {

		padding: 0 18px 18px;

	}



	.home-services-slide__title {

		font-size: 27px;

	}



	.home-services-slide__bottom {

		grid-template-columns: 1fr;

		gap: 16px;

	}



	.home-services-slide__text {

		grid-template-columns: 1fr;

		max-width: 500px;

	}



	.home-services-slide__button {

		width: 230px;

	}



	.home-services-slide__index {

		justify-self: start;

	}



	.home-certifications {

		display: block;

		min-height: 0;

	}



	.home-certifications__left {

		display: none;

	}



	.home-certifications__header {

		grid-template-columns: 1fr;

		gap: 20px;

		padding: 40px 24px 18px;

	}



	.home-certifications__accordion {

		margin-left: 0;

	}



	.home-certifications__title {

		font-size: 42px;

		padding-left: 0;

	}



	.home-certification-item__toggle {

		padding-left: 24px;

	}



	.home-certification-item__panel {

		grid-template-columns: 1fr;

		gap: 20px;

		padding-left: 58px;

	}



	.home-certification-item__image {

		justify-self: start;

	}



	.home-news__grid {

		grid-template-columns: 1fr;

		min-height: 0;

		padding: 40px 24px 60px;

	}



	.home-news-card,

	.home-news-card:nth-child(2) {

		align-self: auto;

	}



	.home-news-card:first-child {

		margin-top: 0;

	}



	.home-news-card__footer {

		grid-template-columns: minmax(0, 1fr) 30px;

	}



	.home-news-card__title {

		font-size: 24px;

	}



	.home-feature {

		min-height: 0;

		padding: 64px 24px;

	}



	.home-feature__title {

		font-size: 64px;

		line-height: 0.95;

	}



	.home-feature__grid,

	.home-feature__bottom {

		grid-template-columns: 1fr;

		gap: 32px;

	}



	.home-feature__bottom {

		padding-right: 0;

	}



	.home-feature__content {

		min-height: 0;

		gap: 64px;

	}



	.home-feature__subtitle {

		font-size: 34px;

	}



	.home-reasons {

		display: block;

		min-height: 0;

	}



	.home-reasons__left {

		display: none;

	}



	.home-reasons__header {

		grid-template-columns: 1fr;

		gap: 24px;

		padding: 48px 24px;

	}



	.home-reasons__title {

		font-size: 34px;

	}



	.home-reasons__button {

		margin-left: 0;

	}



	.home-videos {

		grid-template-columns: 1fr;

	}



	.home-videos__left {

		padding: 48px 24px 0;

		border-right: 0;

	}



	.home-videos__right {

		grid-template-columns: 1fr;

		gap: 32px;

		padding: 24px 24px 56px;

	}



	.home-videos__grid {

		grid-template-columns: 1fr;

	}



	.home-videos__button {

		grid-column: auto;

		justify-self: start;

		width: min(100%, 330px);

	}



	.home-updates {

		padding: 48px 24px 56px;

	}



	.home-updates__inner {

		width: 100%;

		margin: 0;

	}



	.home-updates__header,
	.home-updates__grid {
		grid-template-columns: 1fr;
	}

	.home-updates-slider {
		gap: 18px;
	}

	.home-update-card {
		grid-template-columns: minmax(130px, 42%) minmax(0, 1fr) 34px;
	}
}


@media (max-width: 767px) {

	.home-hero--has-project-slider .home-hero__video,

	.home-hero--has-project-slider > .home-hero__overlay {

		display: none;

	}



	.home-hero--has-project-slider .home-hero__slides {

		display: block;

	}



	.home-hero--has-project-slider .home-hero__slide {

		z-index: 0;

	}



	.home-hero--has-project-slider .home-hero__slides .home-hero__overlay {

		z-index: 0;

	}



	.case-slider {

		left: 18px;

		right: 18px;

		width: auto;

		max-width: none;

	}



	.case-slider__viewport,

	.case-slider__next {

		display: none;

	}



	.case-slider__header {

		display: flex;

		align-items: flex-end;

		justify-content: space-between;

		gap: 18px;

	}



	.case-slider__title-link {

		display: inline-block;

		font-size: 42px;

		line-height: 1;

		flex: 0 1 80%;

		max-width: 80%;

		pointer-events: auto;

	}



	.case-slider__counter {

		display: block;

		flex: 0 0 auto;

		align-self: flex-end;

		text-align: right;

	}

}



@media (prefers-reduced-motion: reduce) {

	.home-intro__title,

	.home-intro__text,

	.home-intro__button {

		opacity: 1;

		transform: none;

		transition: none;

	}



	.cubo-square-reveal::after {

		display: none;

	}

}



/* Fix: su viewport desktop con altezza ridotta (es. 1530x650) non c'e' spazio
   sufficiente per animare l'ingrandimento del media e il testo puo' sovrapporsi
   al media stesso. Lo scroll-jacking viene disattivato in JS per lo stesso
   range (vedi shouldDisableValueLock in home.js) e qui si applica un layout
   statico impilato, senza sovrapposizioni, analogo a quello mobile. */
@media all and (max-height: 700px) and (min-width: 1150px) {

	.home-value {

		height: auto;

		min-height: 100vh;

	}



	.home-value__inner {

		position: relative;

		display: grid;

		grid-template-columns: minmax(0, 1fr) minmax(0, 450px) minmax(0, 1fr);

		align-content: center;

		row-gap: 14px;

		column-gap: 24px;

		height: auto;

		min-height: 100vh;

		padding: 48px 24px;

	}



	.home-value__media,

	.home-value__text {

		position: static;

		transform: none;

	}



	.home-value__text--left,

	.home-value__text--right {

		opacity: 1;

		transform: none;

	}



	/* Riga 1: titolo sinistra, larghezza intera. */

	.home-value__text--left {

		grid-column: 1 / -1;

		grid-row: 1;

	}



	/* Riga 2: media da solo, nella colonna centrale (stessa larghezza usata
	   dal testo sotto, cosi' i bordi sinistri coincidono). Essendo su una
	   riga di griglia dedicata e separata, non puo' mai sovrapporsi al
	   testo della riga 3, qualunque sia la sua altezza. */
	.home-value__media {

		grid-column: 2;

		grid-row: 2;

		width: 100%;

		max-width: none;

		margin: 0;

	}



	/* Riga 3: testo "Un unico sistema..." e "Valore" sulla stessa riga,
	   il primo allineato a sinistra con il media (colonna 2), il secondo
	   nella colonna destra: risultano orizzontalmente allineati fra loro
	   e restano sotto il media, mai sovrapposti. */
	.home-value__text--body {

		grid-column: 2;

		grid-row: 3;

		align-self: end;

		left: auto;

		width: 100%;

		max-width: none;

		margin: 0;

	}



	.home-value__text--right {

		grid-column: 3;

		grid-row: 3;

		align-self: end;

		margin-bottom: 0;

		text-align: right;

	}

}



/* Stessa struttura a griglia di sopra, ma per 768-1149px di larghezza:
   il testo "Un unico sistema..." va allineato a sinistra con il titolo
   "Costruiamo" (non con il media) e "Valore" non deve mai debordare
   fuori dalla pagina. */
@media all and (max-height: 700px) and (min-width: 768px) and (max-width: 1149.98px) {

	.home-value {

		height: auto;

		min-height: 100vh;

	}



	.home-value__inner {

		position: relative;

		display: grid;

		/* La colonna 3 (dove sta "Valore") e' dimensionata sul contenuto
		   effettivo del testo (max-content): non si riduce mai sotto la
		   larghezza necessaria a mostrarlo per intero, qualunque sia il
		   font-size calcolato dal clamp(). La colonna del media (2) e la
		   colonna 1 si adattano di conseguenza allo spazio residuo. */
		grid-template-columns: minmax(0, 1fr) minmax(0, 450px) minmax(max-content, 1fr);

		align-content: center;

		row-gap: 14px;

		column-gap: 24px;

		height: auto;

		min-height: 100vh;

		padding: 48px 24px;

	}



	.home-value__media,

	.home-value__text {

		position: static;

		transform: none;

	}



	.home-value__text--left,

	.home-value__text--right {

		opacity: 1;

		transform: none;

	}



	.home-value__text--left {

		grid-column: 1 / -1;

		grid-row: 1;

	}



	/* Riga a piena larghezza, centrato con margin:auto: la centratura del
	   media non dipende piu' dalle colonne 1/3 (che per "Valore" possono
	   essere asimmetriche), quindi resta sempre al centro indipendentemente
	   da quanto spazio serve al testo sopra/sotto. */
	.home-value__media {

		grid-column: 1 / -1;

		grid-row: 2;

		width: 100%;

		max-width: 450px;

		margin: 0 auto;

	}



	/* Allineato a sinistra col titolo "Costruiamo" (colonna 1), esteso
	   fino al bordo destro del media (colonna 2) per avere spazio a
	   sufficienza; min-width:0 evita che la griglia si allarghi oltre
	   il previsto per via del contenuto testuale (grid blowout). */
	.home-value__text--body {

		grid-column: 1 / 3;

		grid-row: 3;

		align-self: end;

		left: auto;

		width: 100%;

		max-width: none;

		min-width: 0;

		margin: 0;

	}



	/* Stessa riga del testo sopra (allineamento verticale tra i due),
	   nella colonna 3: essendo quella colonna dimensionata su max-content
	   (vedi grid-template-columns), "Valore" non viene mai tagliato. */
	.home-value__text--right {

		grid-column: 3;

		grid-row: 3;

		align-self: end;

		margin-bottom: 0;

		text-align: right;

	}

}

