/****************************************
  ==== RESETS
****************************************/
* { margin: 0; padding: 0; }
::-moz-selection { color: #333; text-shadow: none; }
::selection {  color: #333; text-shadow: none; }
.clear:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; }
.clear { display: inline-table; clear: both; }
/* Hides from IE-mac \*/ * html .clear { height: 1%; } .clear { display: block; } /* End hide from IE-mac */

/****************************************
	==== LAYOUT
****************************************/
body {
	background: #ED1C24;
	color: #fff;
	width: 100%;
	height: 100vh; 
	font-family: Abrade-medium, Arial, sans-serif;
	font-size: min(max(12px, 2vw), 16px);
	max-width: 1300px;
	margin: auto;
	overflow-x: hidden !important;
  	}
.trail {
	position: absolute;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: #ff69b4; /* Adjust color as needed */
	pointer-events: none;
	transition: transform 0.1s ease-out, opacity 0.4s;
	opacity: 0;
	}

/****************************************
	==== GENERAL
****************************************/
p{
	font-size: 1em;
	/*font-size: clamp(1em, 2vw, 1.25rem);*/
	line-height: 1.6;
	padding-bottom: 2em;
	}
a{
	color: #fff;
	text-decoration: none;
	}
a:hover{
	text-decoration: underline;
	}
ul{
	display: block;
	margin-inline-start: 0px;
	margin-inline-end: 0px;	
	unicode-bidi: isolate;
	}
li{
	line-height: 1.8;
	/*list-style-type: circle;*/
	list-style-type: disclosure-closed;
	position: relative;
	}
li p{
	font-size: 1.0rem;
	opacity: 0.8;
	}
h2 {
	font-family: Abrade-extrablack, Arial, sans-serif;
	/*font-size: min(max(1em, 3vw), 2em);*/
	text-align: left;
	margin: 0 0 1em 0;
	/*color: #FAC6C8;	*/
	font-weight: bold;
	text-transform: uppercase;
}
video {
	width: 100%;
	height: 100%;
	opacity: 1;
	transition: opacity 1s ease;
	}
video.show {
	opacity: 1;
	}
#showVideoLink {
	margin-bottom: 20px;
	cursor: pointer;
	}
.loadedVideo {
	opacity: 1;
	left: 0;
	object-fit: cover;
	margin: -4em 0 0 0;
	border-radius: 2em 0;
	}
.uppercase {
	text-transform: uppercase;
}
::selection {
  color: #ED1C24;  
  background: #FFF;
}
/****************************************
	==== HEADER
****************************************/
.header{
	margin: 7.5% 0vw;
	opacity: 1;
	transition: opacity 1s ease;
	}
.header.hide{
	opacity: 0.15;
	}
.header img{
	width:40%;
	min-width: 200px;
	margin: 0 auto;
	}
.header ul{
	float: right;
	}
.header li{
	list-style-type: none;
	}
.header a{	
	/*font-weight: bold;*/
}
.page-navi {
	line-height: 24px;
	font-size: 11px;
	position: relative;
	margin: 0 0 20px 0;
	}
.page-navi a {
	padding: 0px 10px;
	letter-spacing: 1px;
	color: #333;
	text-shadow: 0 -1px 0 #fff;
	display: inline-block;
	text-decoration:none;
	font: 400 12px/32px "Open Sans", sans-serif;
	color: #fff;
	}
.page-navi a:hover {
	background: rgba(255,255,255,0.8);
	color: #545454;
	}
.page-navi span.right {
	float: right;
	}
.page-navi span.right a {
	float: left;
	display: block;
	}
.active-link {
    text-decoration: underline;
    /* Optional: Add a smooth transition for visual effect */
    transition: text-decoration 0.3s ease; 
}
.redmode a{
	color:#ED1C24;
}
@media (max-width: 768px) {
	.header{
		padding: 0 20px;
	}
}

/****************************************
	==== TRIANGLE ANIMATION
****************************************/
.triangle {
	position: absolute;
	width: 0;
	height: 0;
	border-left: 10px solid transparent;
	border-right: 10px solid transparent;
	transition: transform 0.3s ease, opacity 2s ease;
	animation: fadeOut 2s forwards;
	z-index: -1;
	}
@keyframes fadeOut {
	0% { opacity: 1; }
	100% { opacity: 0; transform: scale(0.5); }
	}
.snowflake {
	position: absolute;
	pointer-events: none;
	background-image: url("../images/site/snowflake.png");
	background-size: contain;
	background-repeat: no-repeat;
  	background-position: center;
	opacity: 0.8;
	/*animation: fadeOut 2s linear forwards;*/
	/*animation: rotateCW 5s linear infinite, rotateACW 5s linear infinite, fadeOut 2s linear forwards;*/
	}
	@keyframes rotate {
		from {
		  transform: rotate(0deg);
		}
		to {
		  transform: rotate(360deg);
		}
	}
	@keyframes rotateCW {
		from {
			transform: rotate(0deg);
		}
		to {
			transform: rotate(360deg);
		}
	}	
	@keyframes rotateACW {
		from {
			transform: rotate(0deg);
		}
		to {
			transform: rotate(-360deg);
		}
	}
	@keyframes fadeOut {
		0% {
			opacity: 0.8;
		}
		100% {
			opacity: 0;
		}
	}

/****************************************
	==== COMPANY
****************************************/
.content {
	/*background-color: #e74c3c;*/
	width: 70%;
	height: 100%;
	}
.section{
	width:auto;
	margin: 8em 0vw;
	display: flex;
	}
.heading{
	width: 30%;
	height: 100%;
	min-width: 100px;
	/*background-color: #3498db;*/
	}
.number {
	color: #F68D91;
	}
.underlined{
	text-decoration: underline;
	}
#services li{
	font-size: 1.25em;
	margin-left: 22px;
	}
.background-video {
	position: absolute;
	top: 0;
	left: 0;
	object-fit: cover;
	z-index: -1; /* Place video behind content */
	}

.contact{
	border-top: 1px solid white;
	padding: 4em 0 0 0;
	text-align: center;
	margin: 0 1em;
	}
.contact h2{
	text-align: center;
	}
.shorter{
	height: 500px;
	}

/****************************************
	==== CLIENTS
****************************************/
#clients li{
	text-decoration: none;
	display: inline-flex;
	/*padding: 0 0 1em 0;*/
	}
#clients img{
	width: 10em;
	padding: 0 20px;
	}
.logos{
	overflow: hidden;
	white-space: nowrap;
	}
.logos:hover .logos-slide{
	animation-play-state: paused;
	}
.logos-slide{
	display: inline-block;
	animation: 45s slide linear infinite;
	}
.logos:before, .logos:after{
	position:absolute;
	width: 50px;
	height: 150px;
	content: "";
	z-index: 2;
	}
.logos:before{
	background: linear-gradient(to left, rgba(255,255,255,0), #ED1C24);
	}
/*.logos:after{
	right: 150px;
	background: linear-gradient(to right, rgba(255,255,255,0), #ED1C24);
	}*/
@keyframes slide {
		from{
			transform: translateX(0)
		}
		to{
			transform: translateX(-100%)
		}
	}

/****************************************
	==== CONTACT FORM
****************************************/
form{
	margin: 4em 0;
	}
input, textarea {
	background: transparent;/*background: #ED1C24;*/
    color: #fff;
    cursor: pointer;
	/*font-family: Abrade-medium, Arial, sans-serif;*/
    margin: 0 0 2em 0;
    padding: 1em;
    position: relative;
    display: inline-block;
    border: 1px solid #FFF;
    -webkit-transition: all 0.3s ease-in-out;
    transition: all 0.3s ease-in-out;
	width: 40rem;
	/*float: right;*/
	}
::placeholder { 
	color: #FFF;
	font-size: 1.5em;
	}
button{
	background: #FFF;
	padding: 1em;
	margin: 0 0 1em 0;
	width: auto;
	color: #ED1C24;
	font-weight: bold;
	border: 1px solid #FFF;
	}
button:hover{
	color: #FFF;
	background-color: #ED1C24;
	font-weight: bold;
	}
@media (max-width: 768px) {
    input, textarea {
        width: calc(100% - 2rem);
    }
}


/****************************************
	==== FOOTER
****************************************/
.footer a img{
	height:2em;
	width:2em;
	}
.footer{	
	padding-top: 3em;
    width: auto;	
    color: #fff;
    cursor: pointer;
	text-align: right;
	border-top: 1px solid white;
	margin: 3em 0vw;
	/*margin: 7.5% 1vw;*/
	}
.footer .links{
	text-align: left;
	float: left;
	}
.footer li{	
	list-style-type: none;
	}
.footer a{
	text-decoration: none;
	color: #fff;
	}
.footer p{
	padding-bottom: 0;
	margin-right: 1em;
	}
.footer .social {
	float: right;	
	}
.footer .social li{	
	float: right;
	margin: 0 0 0 0.5em;
	}
.footer .social a{
	display: block;
	}
.footer .social p{
	padding-top: 0.8em;
	}
data-sidedock{
	display: none;
	}
footer{
	margin-top: 4em;
	}
@media (max-width: 768px) {
	.footer{
		padding: 20px;
	}
}

/****************************************
	==== HOMEPAGE ICONS
****************************************/
.icons {
	display: block;
	width: 80px;
	height: 80px;
	margin-bottom: 1em;
	background-color: #ed1c2480;
	border-radius: 50%;
	color: #ED1C24;
	background-repeat: no-repeat; /* Prevents tiling */
	background-position: center; /* Centers the SVG inside the 80x80 circle */
	background-size: 75%; /* Scales the SVG to 60% of the container size (48x48px) */
	border: 2px solid white;
}
.icons svg{
	width: 100%;
	height: 100%;
	display:block;
}
.icon-realtime {
	background-image: url("../images/data/icons/realtime.svg");
}
.icon-geo {
	background-image: url("../images/data/icons/geo.svg");
}
.icon-api {
	background-image: url("../images/data/icons/api.svg");
}
.icon-large {
	background-image: url("../images/data/icons/large.svg");
}
.icon-dashboard {
	background-image: url("../images/data/icons/dashboard.svg");
}
.icon-interactive {
	background-image: url("../images/data/icons/interactive.svg");
}
.icon-abstract {
	background-image: url("../images/data/icons/abstract.svg");
}

/****************************************
	==== VIDEO LINKS (CAROUSEL)
****************************************/

/* --- Full-Width Carousel Container Styling --- */

.carousel, .image-grid {
	position: absolute;
	top: 50%;
	transform: translateY(-17%); /* (-20%); Centering the carousel */
	left: 0;
	width: 100%;
	
	/* CRITICAL: Adjusted height for 360px media + title height (~60px) */
	height: 650px;
	padding: 0 1px;
	box-sizing: border-box;
	z-index: 5;
	
	/* Layout: Force items onto one line */
	display: flex;
	flex-wrap: nowrap; /* CRITICAL: Ensures items stay in a single row */
	
	/* Scroll Behavior */
	scroll-behavior: auto !important;
	overflow-x: auto !important; /* CRITICAL: Enables horizontal scrolling */
	overflow-y: hidden;

	/* Optional: Hide scrollbar for a cleaner look */
	-ms-overflow-style: none; /* IE and Edge */
	scrollbar-width: none; /* Firefox */
	cursor: grab; /* Default cursor for drag capability */
}
.carousel::-webkit-scrollbar, .image-grid::-webkit-scrollbar {
	display: none; /* Chrome, Safari, Opera */
}
/* Cursor change when the mouse button is down (used in JS) */
.carousel.active-drag, .image-grid.active-drag {
	cursor: grabbing;
}
.carousel-spacer {
	min-height: 40rem;
	width: 100%;
}
.image-video-grid {	
	scroll-behavior: auto !important; /* === CRITICAL FIX: DISABLE SMOOTH SCROLLING === */
}
.grid-description {
	display: block;
	text-align: left;
	font-size: 0.9em;
	color: #fff;
	opacity: 0;
	transition: opacity 0.4s ease-in-out;
}
.grid-item:hover .grid-description {
	opacity: 1;
}
.grid-description .bulletpoints {
	list-style-position: inside;
	padding:10px;
}
.grid-item {
	position: relative;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	flex-shrink: 0;
	width: 800px; /*640px;*/
	height: auto;
	margin-right: 2px;
	box-shadow: none;
	transition: transform 0.3s ease;
}
.carousel-video, .carousel-image {
	position: relative;
	overflow: hidden;
	width: 100%;
	height: 450px; /*360px;*/
	box-shadow: 0 10px 20px rgba(0, 0, 0, 0.5);
}
.grid-item img, .item-video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	position: absolute;
	top: 0;
	left: 0;
}
.item-video {
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.4s ease-in-out;
}
.grid-item:hover .item-video {
	opacity: 1;
}
.grid-item:hover img {
	opacity: 0;
	transition: opacity 0.4s ease-in-out;
}
.grid-title-link {
	position: static;
	width: 100%;
	z-index: 15;
	text-decoration: none;
	cursor: pointer;
	background: transparent;
	padding: 10px 0;
}
.grid-title {
	display: block;
	padding: 0;
	font-size: 1.1em;
	font-weight: 700;
	color: #fff;
	background: transparent;
	text-align: left;
}
.grid-image-title{
	display: block;
	padding: 10px 0;
	font-size: 1.1em;
	font-weight: 700;
	color: #fff;
	background: transparent;
	text-align: left;
}
.grid-image-title:hover{
	text-decoration: underline;
}
.carousel .carousel-image{
	/*width: 640px;*/
	height: 450px; /*360px;*/
}
.carousel .carousel-image:hover {
	transform: none;
	/*box-shadow: none;*/
}
.carousel .grid-item:hover img {
	opacity: 1;
	transition: none;
}
.carousel-image{
	position: relative;
    height: 480px;
    width: 100%;
    background-color: #fff;
    overflow: hidden;
}
@media (max-width: 768px) {
    .clone {
        display: none !important;
    }
	.grid-description {
		opacity: 1;
	}
}

/****************************************
	==== GRIDS
****************************************/

.three-column-grid {
	display: grid;
	gap: 2rem; /* Spacing between columns */
	padding: 0 0 6rem 0;
}
.four-column-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr); /* 4 equal columns */
	gap: 4rem; /* Spacing between grid items */
	padding: 4rem 0;
	text-align: center; /* Center the grid items' content */
}
.description {
	display: flex;
	flex-direction: column;
	flex: 1;
	height: auto;
	position: relative;
	line-height: 1.5; /* Improved line height for readability */
	font-weight: 300; /* Lighter weight based on request */
	font-size: 1.25rem; /* x-large equivalent */
	margin-bottom: 0;
	text-align: left;
	max-width: 66%;
}
.grid-caption {
	display: flex;
	flex-direction: column;
	line-height: 1.5; /* Improved line height for readability */
	font-weight: 300; /* Lighter weight based on request */
	font-size: 1.25rem; /* x-large equivalent */
	color: #ffe9ea;
	align-items: center;
	border: 2px solid white;
	border-radius: 1em;
	padding: 1em;
	min-width: 230px;
	background-color: #f531388c;
	backdrop-filter: blur(3px);
}
/* Responsive adjustment for mobile: stack columns vertically */
@media (max-width: 768px) {
	.three-column-grid, .four-column-grid {
		flex-direction: column;
		gap: 1.5rem;
		grid-template-columns: 1fr; /* Switch to 1 column */
		padding: 2rem 1rem;
	}
}
/* Responsive adjustment for screens smaller than 1024px */
@media (max-width: 1024px) {
	.three-column-grid {
		grid-template-columns: repeat(2, 1fr); /* Switch to 2 columns */
		gap: 1.5rem;
	}
}
/* Responsive adjustment for screens smaller than 640px (Mobile) */
@media (max-width: 640px) {
	.three-column-grid {
		grid-template-columns: 1fr; /* Switch to 1 column */
		width: calc(100% - 2rem);;
	}
	.description {
		max-width: 100%;
	}
}

/****************************************
	==== GALLERY GRID
****************************************/

.grid-gallery {
	display: grid;
	flex-direction: column;
	grid-template-columns: repeat(3, 1fr);
	gap: 2em;
	min-width: 230px;
}
.grid-gallery .carousel-image {
	position: relative;
    overflow: hidden;
    width: 100%;
    height: 270px;
	transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
	cursor: pointer;
	box-shadow: none;
}
.grid-gallery .carousel-image:hover {
	transform: translateY(-5px);
	box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.grid-gallery img{
	width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
}
.content-wrapper{
	margin-bottom: 6em;
}
@media (max-width: 640px) {
	.grid-gallery {
		grid-template-columns: 1fr;
	}
}

/****************************************
  ==== LIGHTBOX
****************************************/
#lightbox {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 50;
	background-color: rgba(237, 28,36, 0.75);; /* bg-black bg-opacity-90 */
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem; /* p-4 */
	opacity: 1;
	transition: opacity 0.3s;
}
#lightbox.hidden {
	display: none;
	opacity: 0;
}
.lightbox-content {
	max-width: 95rem; /* max-w-6xl */
	width: 100%;
	max-height: 100%;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
}
.lightbox-content::-webkit-scrollbar {
	width: 0;
	height: 0;
}
.lightbox-content {
	scrollbar-width: none;
}
.imageLightbox .lightbox-content{
	width: auto;
}
#video-display-container {
	/*background-color: #FFF;*/
	/*box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);*/
	overflow: hidden;
    margin: 0;
    padding: 20px;
    border-radius: 10px;
    max-width: 90rem; /* Same as .lightbox-content max-width */
    width: 100%;
    aspect-ratio: 16 / 9;
    line-height: 0;
}
#image-display-container{
	background-color: #FFF;
	padding: 20px;
    border-radius: 10px;
}
#lightboxImage {
	max-width: 100%;
	height: auto;
	max-height: 80vh; /* max-h-[80vh] */
	object-fit: contain;
	cursor: zoom-out;	
	/*box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.9);*/
}
#lightboxCaption {
	color: #ED1C24;
	font-size: 1.125rem; /* text-lg */
	margin-top: 1rem; /* mt-4 */
	padding-left: 1rem;
	padding-right: 1rem;
	text-align: center;
}
/* Navigation Buttons */
.lightbox-button {
	position: absolute;
	color: white;
	font-size: 1.875rem; /* text-3xl */
	padding: 0.75rem; /* p-3 */
	background-color: rgba(17, 24, 39, 0.5); /* bg-gray-900 bg-opacity-50 */
	border-radius: 9999px; /* rounded-full */
	transition: background-color 0.3s;
	border: none;
	cursor: pointer;
	z-index: 50;
}
.lightbox-button:hover {
	background-color: rgba(17, 24, 39, 0.8); /* hover:bg-opacity-80 */
}
.lightbox-content iframe {
    /* Critical: Set dimensions to fill the lightbox-content */
    width: 100%;
    height: 100%;
    /* Optional: Ensure no unexpected border/margin */
    border: none;
    margin: 0;
    padding: 0;
    /* Optional: Aspect ratio to define the content size */
    aspect-ratio: 16 / 9; /* Standard video aspect ratio */
}
#prevButton, #nextButton, #closeButton {
    position: absolute;
    font-size: 1.25rem;	
	font-weight: bold;
    padding: 0.5em 0.85em;
    background-color: rgba(255, 255, 255, 1);
    color: #ED1C24; 
    border-radius: 50%;
    transition: background-color 0.3s;
    border: none;
    cursor: pointer;
    z-index: 55;
	display: flex;
	box-shadow: 3px 2px 10px rgba(0, 0, 0, 0.25);
}
#prevButton {
	transform: translate(-110%, -3.5rem);
}
#nextButton {
	transform: translate(10%, -3.5rem);
}
#closeButton {
	position: relative;
    right: 2%;
    top: -48%;
}
#closeButton:hover {
	opacity: 1;
}
.hidden{
	display: none;
}
/****************************************
	==== MEDIA QUERY: MOBILE GRID CONVERSION (max-width: 768px)
****************************************/
@media (max-width: 768px) {
    
	#image-display-container {
		padding: 0;
	}
	#lightboxCaption{
		padding-bottom: 3em;
	}
	#closeButton{
		position: absolute;
		right: 5%;
		top: 33%;
	}

    /* --- 1. Carousel Fix (Stops animation & removes duplicate) --- */
    .carousel .grid-item:nth-child(n + N_PLUS_1), 
    .image-grid .grid-item:nth-child(n + N_PLUS_1) {
        display: none !important; 
    }

    /* --- 2. Convert Image/Video Carousel to a Grid --- */
    .carousel, .grid-gallery{
        /* GRID LAYOUT */
        display: grid;
        grid-template-columns: 1fr; /* One column for mobile */
        gap: 1.5rem; 
		width: 100%;
        
        /* OVERRIDE CAROUSEL POSITIONING */
        position: relative; 
        top: auto;
        transform: none;
        height: auto; /* Height determined by content */
        padding: 2rem 1rem; /* Adjust padding for regular grid */
        
        /* OVERRIDE CAROUSEL FLOW */
        overflow-x: hidden !important; /* Disable horizontal scrolling */
        flex-wrap: wrap; 
        cursor: auto !important; /* Remove drag cursor */
    }

    /* --- 3. Grid Item Sizing --- */
    .grid-item {
        /* Override carousel flex properties */
        flex-shrink: 1; 
        width: auto;
        margin-right: 0;
		/*align-items: center;*/
    }

    /* --- 4. Responsive Media Aspect Ratio (More robust than fixed 360px) --- */
    .carousel-video, .carousel .carousel-image {
        height: 0; /* Remove the fixed 360px height */
        padding-bottom: 56.25%; /* Enforce a 16:9 Aspect Ratio */
    }
    
    /* --- 5. Remove the Spacer Element --- */
    .carousel-spacer {
        display: none;
    }
}

/****************************************
  ==== VIDEO BACKGROUND STYLES 
****************************************/
.video-background {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    z-index: -100;
	opacity: 0.4;
}
.video-background video {
    min-width: 100%; 
    min-height: 100%;
    width: auto;
    height: auto;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%); 
    object-fit: cover;
}
.video-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.4); 
}
