Sell More Units, Faster
Weâve Boosted Real Estate Developersâ Sales by over âŹ100M in Preconstruction Phase.
Let IRIS⢠help you be next.
IRIS⢠lets buyers explore an entire development â from building and surroundings to amenities, units, floor plans and interiors â within one seamless, interactive PropTech solution.
.typewrite-header {
display: inline-block;
}
.typewrite-header .letter {
display: inline-block;
opacity: 0;
transform: translateY(10px);
transition: opacity 0.3s ease, transform 0.3s ease;
}
.typewrite-header .letter.visible {
opacity: 1;
transform: translateY(0);
}
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
--cream: #f5f0e8;
--dark: #0f0e0c;
--accent: #e8431a;
}
/* ââ VIDEO POSTER WRAPPER ââ */
.hero__video-wrapper {
position: relative;
width: 100%;
margin: 0 auto;
overflow: hidden;
cursor: pointer;
opacity: 0;
animation: fadeUp 0.8s 0.8s forwards;
}
.hero__poster {
width: 100%;
aspect-ratio: 75/49.86;
object-fit: cover;
display: block;
transition: transform 0.5s ease, filter 0.4s ease;
}
.hero__video-wrapper::after {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.25);
transition: background 0.3s ease;
}
.hero__video-wrapper:hover::after {
background: rgba(0, 0, 0, 0.45);
}
.hero__video-wrapper:hover .hero__poster {
transform: scale(1.03);
}
/* ââ PLAY BUTTON ââ */
.btn-play {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
padding: 0;
}
.btn-play::before {
content: '';
position: absolute;
inset: -8px;
border-radius: 50%;
border: 1px solid rgba(255, 255, 255, 0.2);
animation: pulse 2.2s ease-in-out infinite;
}
.btn-play::after {
content: '';
position: absolute;
inset: -18px;
border-radius: 50%;
border: 1px solid rgba(255, 255, 255, 0.1);
animation: pulse 2.2s ease-in-out 0.6s infinite;
}
.btn-play img {
width: 30px;
height: 30px;
object-fit: contain;
margin-left: 4px;
pointer-events: none;
filter: brightness(0) invert(1);
}
.hero__video-wrapper:hover .btn-play {
transform: translate(-50%, -50%) scale(1.12);
}
/* ââ VIDEO MODAL ââ */
.video-modal {
position: fixed;
inset: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
padding: 1.5rem;
pointer-events: none;
opacity: 0;
transition: opacity 0.4s ease;
}
.video-modal.is-open {
pointer-events: all;
opacity: 1;
}
.video-modal__overlay {
position: absolute;
inset: 0;
background: rgba(10, 9, 8, 0.94);
backdrop-filter: blur(8px);
}
.video-modal__container {
position: relative;
z-index: 2;
width: 100%;
max-width: 960px;
transform: scale(0.92) translateY(20px);
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.video-modal.is-open .video-modal__container {
transform: scale(1) translateY(0);
}
.video-modal__inner {
position: relative;
width: 100%;
aspect-ratio: 16 / 9;
background: #000;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 40px 100px rgba(0,0,0,0.8), 0 0 0 1px rgba(255,255,255,0.06);
}
.video-modal__inner iframe {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border: none;
display: block;
}
.btn-close {
position: absolute;
top: -48px;
right: 0;
background: none;
border: none;
cursor: pointer;
color: var(--cream);
font-size: 0.8rem;
font-family: 'Outfit', sans-serif;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
display: flex;
align-items: center;
gap: 0.5rem;
opacity: 0.7;
transition: opacity 0.2s ease;
}
.btn-close:hover {
opacity: 1;
}
.btn-close svg {
width: 16px;
height: 16px;
stroke: currentColor;
stroke-width: 2;
}
/* ââ ANIMATIONS ââ */
@keyframes fadeUp {
from { opacity: 0; transform: translateY(24px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes pulse {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.3); opacity: 0; }
}
.logo-slider-wrapper {
overflow: hidden;
width: 100%;
max-width: 100vw;
mask-image: linear-gradient(to right, transparent, black 15%, black 85%, transparent);
-webkit-mask-image: linear-gradient(to right, transparent, black 15%, black 85%, transparent);
}
.logo-track {
display: flex;
align-items: center;
width: max-content;
animation: scroll-logos 30s linear infinite;
}
.logo-track img {
object-fit: contain;
transition: opacity 0.3s, filter 0.3s;
margin-right: 3rem;
}
@keyframes scroll-logos {
from { transform: translateX(0); }
to { transform: translateX(-50%); }
}