|
Server IP : 217.21.85.138 / Your IP : 216.73.216.103 Web Server : LiteSpeed System : Linux in-mum-web906.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64 User : u915722082 ( 915722082) PHP Version : 7.4.33 Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail MySQL : OFF | cURL : ON | WGET : ON | Perl : OFF | Python : OFF Directory (0755) : /home/u915722082/.nvm/../public_html/rkeventandmedia/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<!DOCTYPE html>
<html lang="zxx">
<head>
<!-- Meta Tags -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<meta name="description" content="RK MEDIA Photography Agency">
<meta name="author" content="">
<!-- Favicon and touch Icons -->
<!-- <link href="./assets/img/favicon.png" rel="shortcut icon" type="image/png">
<link href="./assets/img/apple-touch-icon.html" rel="apple-touch-icon">
<link href="./assets/img/apple-touch-icon-72x72.html" rel="apple-touch-icon" sizes="72x72">
<link href="./assets/img/apple-touch-icon-114x114.html" rel="apple-touch-icon" sizes="114x114">
<link href="./assets/img/apple-touch-icon-144x144.html" rel="apple-touch-icon" sizes="144x144"> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.1.1/assets/owl.carousel.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.1.1/assets/owl.theme.default.min.css"> -->
<!-- Page Title -->
<title>RK Media & Events</title>
<!-- Styles Include -->
<link rel="stylesheet" href="./assets/css/main.css">
<style>
/* Basic styling for the testimonials */
.slider-container {
position: fixed; /* Fix it so it doesn't move */
top: 50%;
left: 0;
width: 100vw;
height: 300px;
display: flex;
align-items: center;
overflow: hidden;
background: #f5f5f5;
}
.slider {
display: flex;
gap: 20px;
width: max-content;
transition: transform 0.3s ease-out;
}
.slide {
width: 250px;
height: 250px;
background-size: cover;
background-position: center;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
.room-card {
width: 100%;
height: 500px;
background: white;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
position: absolute;
transform-origin: center bottom;
backface-visibility: hidden;
transition: transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1),
opacity 0.8s cubic-bezier(0.215, 0.610, 0.355, 1);
overflow: hidden;
will-change: transform, opacity;
}
/* Enhance drop shadow for better stacking visual */
.room-card {
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15),
0 2px 8px rgba(0, 0, 0, 0.1),
0 0 1px rgba(0, 0, 0, 0.2);
}
.room-image-container {
position: relative;
height: 55%;
overflow: hidden;
}
.room-image {
width: 100%;
height: 100%;
object-fit: cover;
}
.room-title {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background: linear-gradient(to top, rgba(0,0,0,0.7), transparent);
color: white;
padding: 15px;
margin: 0;
font-size: 22px;
}
.room-description {
padding: 20px;
height: 35%;
}
.room-description p {
color: #666;
font-size: 14px;
line-height: 1.5;
}
.know-more {
display: inline-block;
margin: 0 20px 20px;
color: #b90808;
text-decoration: none;
font-weight: bold;
font-size: 14px;
}
@media (min-width: 768px) {
.hotel-slider-container.mobile-only {
display: none;
}
}
</style>
</head>
<body class="theme-style--light">
<!-- Preloader -->
<!-- <div id="preloader">
<div class="preloader-inner">
<div class="spinner">
<img src="./assets/img/preloader-logo.svg" alt="img">
<img src="./assets/img/preloader-wheel.svg" alt="img" class="wheel">
</div>
</div>
</div> -->
<!-- pointer start -->
<div class="pointer bnz-pointer" id="bnz-pointer"></div>
<div class="grid_lines">
<div class="grid_line"></div>
<div class="grid_line"></div>
<div class="grid_line"></div>
<div class="grid_line"></div>
<div class="grid_line"></div>
<div class="grid_line"></div>
<div class="grid_line"></div>
</div>
<!-- Main Header -->
<header class="header color-fixed">
<!-- Lower Bar -->
<div class="header-inner">
<div class="container-fluid pe-0">
<div class="d-flex align-items-center justify-content-between">
<!-- Left Part -->
<div class="header_left_part d-flex align-items-center">
<div class="logo">
<!-- <a href="#" class="light_logo"><img src="./assets/img/logo.svg" alt="logo"></a>
<a href="#" class="dark_logo"><img src="./assets/img/logo-dark.svg" alt="logo"></a> -->
<a href="index.html" class="light_logo" style="color: #fff;">RK MEDIA</a>
<!-- <a href="#" class="dark_logo">RK MEDIA</a> -->
</div>
</div>
<!-- Center Part -->
<div class="header_center_part d-none d-xl-block">
<div class="mainnav">
<ul class="main-menu">
<li class="menu-item menu-item-has-children active"><a href="#">Our Work</a>
<ul class="sub-menu" data-lenis-prevent="">
<li class="menu-item"><a href="wedding.html">Wedding</a></li>
<li class="menu-item"><a href="event.html">Event</a></li>
<li class="menu-item"><a href="commercial.html">Commercial</a></li>
</ul>
</li>
<li class="menu-item"><a href="#"><i class="bi bi-instagram" style="color: #B90808;"></i> Instagram</a></li>
<li class="menu-item "><a href="contact.html">Contact us</a>
</li>
</ul>
</div>
</div>
<div class="header_right_part d-flex align-items-center">
<div class="aside_open wptb-element">
<div class="aside-open--inner">
<span></span>
<span></span>
<span></span>
</div>
</div>
<button type="button" class="mr_menu_toggle wptb-element d-xl-none">
<i class="bi bi-list"></i>
</button>
</div>
</div>
</div>
</div>
</header>
<div class="mr_menu" data-lenis-prevent>
<button type="button" class="mr_menu_close"><i class="bi bi-x-lg"></i></button>
<div class="logo"></div>
<h6>Menu</h6>
<div class="mr_navmenu"></div>
<h6>Contact Us</h6>
<div class="wptb-icon-box1 style2">
<div class="wptb-item--inner flex-start">
<div class="wptb-item--icon"><i class="bi bi-envelope"></i></div>
<div class="wptb-item--holder">
<p class="wptb-item--description"><a href="mailto:rkmedia@gmail.com">rkmedia@gmail.com</a></p>
</div>
</div>
</div>
<div class="wptb-icon-box1 style2">
<div class="wptb-item--inner flex-start">
<div class="wptb-item--icon"><i class="bi bi-geo-alt"></i></div>
<div class="wptb-item--holder">
<p class="wptb-item--description"><a href="#">Lorem ipsum dolor sit.</a></p>
</div>
</div>
</div>
<div class="wptb-icon-box1 style2">
<div class="wptb-item--inner flex-start">
<div class="wptb-item--icon"><i class="bi bi-phone"></i></div>
<div class="wptb-item--holder">
<p class="wptb-item--description"><a href="tel:+1234567899">+91 123 4567 889</a></p>
</div>
</div>
</div>
<h6>Find Our Page</h6>
<div class="social-box">
<ul>
<li><a href="#"><i class="bi bi-facebook"></i></a></li>
<li><a href="#"><i class="bi bi-instagram"></i></a></li>
<li><a href="#"><i class="bi bi-linkedin"></i></a></li>
<li><a href="#"><i class="bi bi-youtube"></i></a></li>
</ul>
</div>
</div>
<div class="aside_info_wrapper" data-lenis-prevent>
<button class="aside_close">Close <i class="bi bi-x-lg"></i></button>
<div class="aside_logo logo">
<a href="#" class="light_logo">RK MEDIA</a>
<a href="#" class="dark_logo">RK MEDIA</a>
</div>
<div class="aside_info_inner">
<h6> Instagram</h6>
<div class="insta-logo">
<i class="bi bi-instagram"></i>Lorem, ipsum.
</div>
<div class="wptb-instagram--gallery">
<div class="wptb-item--inner d-flex align-items-center justify-content-center flex-wrap">
<div class="wptb-item">
<div class="wptb-item--image">
<img src="./assets/images/rk-weds-insta-01.png" alt="instagram-gallery-img">
</div>
</div>
<div class="wptb-item">
<div class="wptb-item--image">
<img src="./assets/images/rk-weds-insta-02.png" alt="instagram-gallery-img">
</div>
</div>
<div class="wptb-item">
<div class="wptb-item--image">
<img src="./assets/images/rk-weds-brand-insta-03.png" alt="instagram-gallery-img">
</div>
</div>
<div class="wptb-item">
<div class="wptb-item--image">
<img src="./assets/images/rk-weds-brand-insta-04.png" alt="instagram-gallery-img">
</div>
</div>
<div class="wptb-item">
<div class="wptb-item--image">
<img src="./assets/images/rk-weds-brand-insta-05.png" alt="instagram-gallery-img">
</div>
</div>
<div class="wptb-item">
<div class="wptb-item--image">
<img src="./assets/images/rk-weds-brand-insta-06.png" alt="instagram-gallery-img">
</div>
</div>
</div>
</div>
<div class="wptb-icon-box1 style2">
<div class="wptb-item--inner flex-start">
<div class="wptb-item--icon"><i class="bi bi-envelope"></i></div>
<div class="wptb-item--holder">
<p class="wptb-item--description"><a href="mailto:rkmedia@gmail.com">rkmedia@gmail.com</a></p>
</div>
</div>
</div>
<div class="wptb-icon-box1 style2">
<div class="wptb-item--inner flex-start">
<div class="wptb-item--icon"><i class="bi bi-geo-alt"></i></div>
<div class="wptb-item--holder">
<p class="wptb-item--description"><a href="#">28 Street, ABC colony</a></p>
</div>
</div>
</div>
<div class="wptb-icon-box1 style2">
<div class="wptb-item--inner flex-start">
<div class="wptb-item--icon"><i class="bi bi-phone"></i></div>
<div class="wptb-item--holder">
<p class="wptb-item--description"><a href="tel:+1234567890">+1234567890</a></p>
</div>
</div>
</div>
<h6>Follow Us</h6>
<div class="social-box style-square">
<ul>
<li><a href="#"><i class="bi bi-facebook"></i></a></li>
<li><a href="#"><i class="bi bi-instagram"></i></a></li>
<li><a href="#"><i class="bi bi-linkedin"></i></a></li>
<li><a href="#"><i class="bi bi-youtube"></i></a></li>
</ul>
</div>
</div>
</div>
<!-- Modal Search -->
<div class="search-modal">
<div class="modal fade" id="modalSearch">
<div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content">
<div class="search_overlay">
<form class="credential-form" method="post">
<div class="form-group">
<input type="text" name="search" class="keyword form-control" placeholder="Search Here">
</div>
<button type="submit" class="btn-search">
<span class="text-first"> <i class="bi bi-arrow-right"></i> </span>
</button>
</form>
</div>
</div>
</div>
</div>
</div>
<main class="wrapper">
<!-- <section class="wptb-slider style19 position-relative overflow-hidden">
<div class="localvideo-bg">
<video autoplay muted loop playsinline>
<source src="./assets/images/3.mp4" type="video/mp4">
</video>
</div>
<div class="wptb-heading-banner">
<h1 class="wptb-title text-white">Capturing Wedding</h1>
</div>
</section> -->
<header class="hero-commercial">
<div class="hero__container">
<div class="hero__visual">
<img class="hero__featured"
src="https://images.unsplash.com/photo-1600210492486-724fe5c67fb0?ixlib=rb-4.0.3&auto=format&fit=crop&w=2000&q=80"
alt="Modern interior living room with large windows overlooking nature">
<div class="slider__details">
<a class="label" href="#">Photography</a>
<div class="editor editor--hero editor--light">
<h1>Residence S10 by<br>Studio Asker</h1>
</div>
<a class="banner-btn btn--light" href="#" title="View work">View Work</a>
</div>
</div>
<div class="hero__body">
<div class="editor editor--hero">
<h2>Capture your space through expert photography and film</h2>
</div>
<button class=" banner-right-btn" onclick="openBookingModal()">Book a Shoot</button>
</div>
</div>
</header>
<!-- <script>
// Simple booking modal functionality
function openBookingModal() {
alert('Booking system would open here. This is a demo implementation.');
}
// Smooth scroll effect for better UX
document.addEventListener('DOMContentLoaded', function() {
// Add loading class removal after page load
window.addEventListener('load', function() {
document.body.classList.add('loaded');
});
// Intersection Observer for scroll animations (if extending the page)
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver(function(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('animate-in');
}
});
}, observerOptions);
// Observe elements for future sections
document.querySelectorAll('.animate-on-scroll').forEach(el => {
observer.observe(el);
});
});
// Handle keyboard navigation
document.addEventListener('keydown', function(e) {
if (e.key === 'Enter' || e.key === ' ') {
if (e.target.classList.contains('btn')) {
e.preventDefault();
e.target.click();
}
}
});
// Add subtle parallax effect on scroll
window.addEventListener('scroll', function() {
const scrolled = window.pageYOffset;
const featured = document.querySelector('.hero__featured');
if (featured && scrolled < window.innerHeight) {
featured.style.transform = `translateY(${scrolled * 0.5}px) scale(1)`;
}
});
</script> -->
<section class="pt-200px overtext-area sm-pt-70px sm-pb-0px" style="background-color: #F7F7F7;">
<div class="rk-commercial-about container">
<div class=" wptb-heading text-center"><h2 data-w-id="4dca7924-df5b-ffba-c165-7c96a7b329ca" class="big-title wptb-item--title text-dark" >Featured on</h2></div>
<div class="about__text pt-150px">
<div class="about__text-img-wrap">
<img class="about__text-img"
src="./assets/images/rk-weds-brand-04.png"
alt="Wedding Photography">
</div>
<div class="about__text-info">
<div class="about__text-paragraph">
<p>Documenting your vibrant and invaluable story reveals not only the values and memories of your shared journey but also the roots and heritage that bind you. These layers of connection shine with the richness of natural photography, capturing the depth and beauty of your emotions in a truly sublime way.</p>
<p>We create wedding images bathed in light to preserve the essence of this momentous day—a celebration of love, trust, and the unwavering belief in life's best days, which form the foundation of all your tomorrows.</p>
<p>Amid the whirlwind of grand moments, your impeccable taste deserves simplicity, over excess. Like the diamond on your finger, our imagery is carefully crafted to make your love shine brilliantly.</p>
</div>
<p class="about__text-quote">We simply delight in the possibility of you.</p>
<div class="about__text-title">
<p>That is why we've</p>
<p>turned our love of</p>
<p>beauty into an</p>
<p>exquisite life, that of</p>
<p>your wedding</p>
<p>photographers.</p>
</div>
</div>
</div>
</div>
<!-- Scroll Progress Indicator -->
<div class="scroll-indicator" style="display: none;">
<div>Scroll Progress: <span id="progress">0%</span></div>
<div>Circle Scale: <span id="circle-scale">0.2</span></div>
<div>Clip Path: <span id="clip-path">2%</span></div>
</div>
<!-- Animation container for sticky behavior -->
<div class="animation-container" style="background-color: #F7F7F7;">
<!-- Main Circle Scale Component -->
<div class="c-circle-scale js-c-circle-scale" id="circleScale">
<div class="c-circle-scale__wrapper">
<!-- White mask that expands -->
<div class="c-circle-scale__mask" id="circleMask"></div>
<!-- Rotating SVG circle -->
<div class="c-circle-scale__box-circle-svg" style="display: none;">
<div class="c-circle-scale__wrapper-circle-svg" id="svgWrapper">
<div class="c-circle-scale__inner-circle-svg">
<!-- Using a CSS-created circular text instead of SVG for demo -->
<div >
<svg width="500" height="500" viewBox="0 0 500 500" class="c-circle-scale__circle-svg" id="roundaboutSvg">
<defs>
<path id="circle-path" d="M 250,250 m -200,0 a 200,200 0 1,1 400,0 a 200,200 0 1,1 -400,0"/>
</defs>
<text font-family="Arial" font-size="24" font-weight="300" fill="#666" text-anchor="middle">
<textPath href="#circle-path" startOffset="0%">
ROUNDABOUTS
</textPath>
</text>
<circle cx="250" cy="250" r="15" fill="#000"/>
</svg>
</div>
</div>
</div>
</div>
<!-- Video container -->
<div class="c-circle-scale__box-video">
<div class="c-circle-scale__wrapper-video" id="videoWrapper">
<div class="video-placeholder">
<div>
<h2 style="display: none;">LEXUS ROUNDABOUTS</h2>
<p class="video-big-text">RK EVENT AND MEDIA</p>
</div>
</div>
</div>
<!-- Video mask overlay -->
<div class="c-circle-scale__box-video-mask" id="videoMask"></div>
<!-- Play button -->
<div class="c-circle-scale__box-play-icon" style="display: none;">
<div class="c-circle-scale__wrapper-play-icon" id="playIconWrapper">
<svg class="c-circle-scale__play-icon" width="82" height="82" viewBox="0 0 82 82" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M74.0473 36.2858L28.3869 8.35338C27.6171 7.88198 26.7354 7.62464 25.8329 7.60793C24.9304 7.59121 24.0397 7.81573 23.253 8.2583C22.4737 8.694 21.8246 9.32939 21.3723 10.0991C20.9201 10.8689 20.681 11.7452 20.6797 12.638V68.4965C20.6856 69.8357 21.223 71.1177 22.1738 72.0608C23.1246 73.0039 24.411 73.5309 25.7502 73.5258C26.685 73.5254 27.6016 73.2678 28.3996 72.7811L74.0473 44.8487C74.781 44.4015 75.3874 43.773 75.8082 43.0238C76.229 42.2746 76.45 41.4297 76.45 40.5704C76.45 39.7111 76.229 38.8662 75.8082 38.117C75.3874 37.3678 74.781 36.7394 74.0473 36.2921V36.2858ZM25.7502 68.4363V12.6792L71.3313 40.5672L25.7502 68.4363Z" fill="#fff"></path>
</svg>
</div>
</div>
</div>
<!-- Discover text -->
<div class="c-circle-scale__box-discover" id="discoverText">
<div class="c-circle-scale__wrapper-discover">
<div class="c-circle-scale__discover">Swipe and discover</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Main sticky container -->
<section class="">
<!-- Video section -->
<div class="video-section" id="videoSection" style="position: relative;">
<div class="video-holder">
<video autoplay="" muted="" loop="" playsinline="">
<source src="./assets/images/659843afc5bbc220dd3fbe0f_about-page-prints-transcode.mp4" type="video/mp4">
</video>
<div class="play-btn" id="playVideo">
<svg xmlns="http://www.w3.org/2000/svg" width="248" height="248" viewBox="0 0 248 248" fill="none">
<circle cx="124" cy="124" r="110.5" stroke="white"></circle>
<g filter="url(#filter0_d_66_184)">
<path d="M94 72.0385L184 124L94 175.962L94 72.0385Z" stroke="white" shape-rendering="crispEdges"></path>
</g>
<defs>
<filter id="filter0_d_66_184" x="89.5" y="71.1725" width="99.5" height="113.655" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix>
<feOffset dy="4"></feOffset>
<feGaussianBlur stdDeviation="2"></feGaussianBlur>
<feComposite in2="hardAlpha" operator="out"></feComposite>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"></feColorMatrix>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_66_184"></feBlend>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_66_184" result="shape"></feBlend>
</filter>
</defs>
</svg>
</div>
</div>
</div>
</section>
<section class="gallery-section pt-200px pb-200px" id="gallery" style="background-color: unset !important;">
<div class="container">
<h2 class="gallery-title">Wedding Gallery</h2>
<!-- Filter Controls -->
<div class="filter-container">
<button class="filter-btn active" data-filter="all">
All <span class="filter-count">11</span>
</button>
<button class="filter-btn" data-filter="ceremony">
Ceremony <span class="filter-count">3</span>
</button>
<button class="filter-btn" data-filter="reception">
Reception <span class="filter-count">3</span>
</button>
<button class="filter-btn" data-filter="portraits">
Portraits <span class="filter-count">3</span>
</button>
<button class="filter-btn" data-filter="details">
Details <span class="filter-count">2</span>
</button>
</div>
<div class="gallery-grid ">
<div class="gallery-item" data-category="ceremony">
<img src="assets/images/rk-wedding-g-01.png" alt="Wedding ceremony">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">👰</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="portraits">
<img src="assets/images/rk-wedding-g-11.png" alt="Couple portrait">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">💕</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="reception">
<img src="assets/images/rk-wedding-g-03.png" alt="Wedding reception">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">🎉</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="details">
<img src="assets/images/rk-wedding-g-10.png" alt="Wedding rings">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">💍</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="ceremony">
<img src="assets/images/rk-wedding-g-02.png" alt="Bridal party">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">👰</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="details">
<img src="assets/images/rk-wedding-g-04.png" alt="Wedding flowers">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">🌸</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="reception">
<img src="assets/images/rk-wedding-g-07.png" alt="Wedding dance">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">💃</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="reception">
<img src="assets/images/rk-wedding-g-06.png" alt="Wedding dance">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">🎉</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="portraits">
<img src="assets/images/rk-wedding-g-08.png" alt="Wedding details">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">💕</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
<div class="gallery-item" data-category="ceremony">
<img src="assets/images/rk-wedding-g-09.png" alt="Happy couple">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">👰</div> -->
<div class="overlay-category">Ceremony</div>
</div>
</div>
<div class="gallery-item" data-category="portraits">
<img src="assets/images/Rk-wedding-10.png" alt="Happy couple">
<div class="gallery-overlay">
<!-- <div class="overlay-icon">💕</div> -->
<div class="overlay-category">lorem</div>
</div>
</div>
</div>
</div>
</section>
<!-- Lightbox Modal -->
<div class="lightbox-modal" id="lightboxModal">
<div class="lightbox-content">
<button class="lightbox-close" id="lightboxClose">×</button>
<button class="lightbox-nav lightbox-prev" id="lightboxPrev">
<svg class="wedding-carousel-arrow" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path>
</svg>
</button>
<div class="lightbox-loading" id="lightboxLoading" style="display: none;">
<div class="loading-spinner"></div>
</div>
<img class="lightbox-image" id="lightboxImage" src="" alt="">
<button class="lightbox-nav lightbox-next" id="lightboxNext">
<svg class="wedding-carousel-arrow" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path>
</svg>
</button>
<div class="lightbox-counter" id="lightboxCounter">1 / 11</div>
<div class="lightbox-info" id="lightboxInfo" style="display: none;">
<span class="lightbox-category-icon">👰</span>
<span class="lightbox-category-text">Ceremony</span>
</div>
</div>
</div>
<script>
// Gallery filtering functionality
class GalleryFilter {
constructor() {
this.filterButtons = document.querySelectorAll('.filter-btn');
this.galleryItems = document.querySelectorAll('.gallery-item');
this.currentFilter = 'all';
// Initialize lightbox
this.lightbox = new LightboxGallery(this.galleryItems);
this.init();
}
init() {
// Add click event listeners to filter buttons
this.filterButtons.forEach(btn => {
btn.addEventListener('click', (e) => {
const filter = e.target.dataset.filter;
this.filterGallery(filter);
this.updateActiveButton(e.target);
});
});
// Initialize intersection observer for animations
this.initIntersectionObserver();
}
filterGallery(filter) {
this.currentFilter = filter;
// First, fade out items that will be hidden
const itemsToHide = [];
const itemsToShow = [];
this.galleryItems.forEach(item => {
const category = item.dataset.category;
if (filter === 'all' || category === filter) {
itemsToShow.push(item);
} else {
itemsToHide.push(item);
}
});
// Fade out items that need to be hidden
itemsToHide.forEach(item => {
item.classList.add('filter-fade-out');
});
// After fade out animation, hide them completely and show filtered items
setTimeout(() => {
itemsToHide.forEach(item => {
item.classList.add('filtered-out');
item.classList.remove('filter-fade-out');
});
itemsToShow.forEach((item, index) => {
item.classList.remove('filtered-out', 'filter-fade-out');
// Add fade in animation with stagger
setTimeout(() => {
item.classList.add('filter-fade-in');
}, index * 50);
// Remove animation class after animation completes
setTimeout(() => {
item.classList.remove('filter-fade-in');
}, 600 + (index * 50));
});
// Update counts after layout change
this.updateFilterCounts();
// Update lightbox with current visible items
this.lightbox.updateVisibleItems();
}, 200);
}
updateActiveButton(activeBtn) {
this.filterButtons.forEach(btn => {
btn.classList.remove('active');
});
activeBtn.classList.add('active');
}
updateFilterCounts() {
const counts = {
all: this.galleryItems.length,
ceremony: 0,
reception: 0,
portraits: 0,
details: 0
};
this.galleryItems.forEach(item => {
const category = item.dataset.category;
if (counts.hasOwnProperty(category)) {
counts[category]++;
}
});
this.filterButtons.forEach(btn => {
const filter = btn.dataset.filter;
const countSpan = btn.querySelector('.filter-count');
if (countSpan && counts.hasOwnProperty(filter)) {
countSpan.textContent = counts[filter];
}
});
}
initIntersectionObserver() {
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry, index) => {
if (entry.isIntersecting && !entry.target.classList.contains('filtered-out')) {
setTimeout(() => {
entry.target.classList.add('animate');
}, index * 100);
observer.unobserve(entry.target);
}
});
}, observerOptions);
this.galleryItems.forEach(item => {
observer.observe(item);
});
}
}
// Lightbox Gallery Class
class LightboxGallery {
constructor(galleryItems) {
this.galleryItems = Array.from(galleryItems);
this.currentIndex = 0;
this.visibleItems = [...this.galleryItems];
// DOM elements
this.modal = document.getElementById('lightboxModal');
this.image = document.getElementById('lightboxImage');
this.closeBtn = document.getElementById('lightboxClose');
this.prevBtn = document.getElementById('lightboxPrev');
this.nextBtn = document.getElementById('lightboxNext');
this.counter = document.getElementById('lightboxCounter');
this.info = document.getElementById('lightboxInfo');
this.loading = document.getElementById('lightboxLoading');
this.categoryIcons = {
ceremony: '👰',
portraits: '💕',
reception: '🎉',
details: '💍'
};
this.init();
}
init() {
// Add click listeners to gallery items
this.galleryItems.forEach((item, index) => {
item.addEventListener('click', () => {
this.openLightbox(index);
});
});
// Modal controls
this.closeBtn.addEventListener('click', () => this.closeLightbox());
this.prevBtn.addEventListener('click', () => this.showPrevious());
this.nextBtn.addEventListener('click', () => this.showNext());
// Keyboard navigation
document.addEventListener('keydown', (e) => {
if (this.modal.classList.contains('active')) {
switch(e.key) {
case 'Escape':
this.closeLightbox();
break;
case 'ArrowLeft':
this.showPrevious();
break;
case 'ArrowRight':
this.showNext();
break;
}
}
});
// Close on backdrop click
this.modal.addEventListener('click', (e) => {
if (e.target === this.modal) {
this.closeLightbox();
}
});
}
updateVisibleItems() {
this.visibleItems = this.galleryItems.filter(item =>
!item.classList.contains('filtered-out')
);
}
openLightbox(index) {
// Find the actual index in visible items
const clickedItem = this.galleryItems[index];
this.currentIndex = this.visibleItems.indexOf(clickedItem);
if (this.currentIndex === -1) {
// Item is not visible, use first visible item
this.currentIndex = 0;
}
this.showImage();
this.modal.classList.add('active');
document.body.style.overflow = 'hidden';
}
closeLightbox() {
this.modal.classList.remove('active');
document.body.style.overflow = '';
}
showPrevious() {
this.currentIndex = (this.currentIndex - 1 + this.visibleItems.length) % this.visibleItems.length;
this.showImage();
}
showNext() {
this.currentIndex = (this.currentIndex + 1) % this.visibleItems.length;
this.showImage();
}
showImage() {
const currentItem = this.visibleItems[this.currentIndex];
const img = currentItem.querySelector('img');
const category = currentItem.dataset.category;
// Show loading
this.loading.style.display = 'block';
this.image.style.opacity = '0';
// Create new image to preload
const newImg = new Image();
newImg.onload = () => {
this.image.src = img.src;
this.image.alt = img.alt;
this.loading.style.display = 'none';
this.image.style.opacity = '1';
};
newImg.src = img.src;
// Update counter
this.counter.textContent = `${this.currentIndex + 1} / ${this.visibleItems.length}`;
// Update info
const categoryIcon = this.info.querySelector('.lightbox-category-icon');
const categoryText = this.info.querySelector('.lightbox-category-text');
categoryIcon.textContent = this.categoryIcons[category] || '📸';
categoryText.textContent = category.charAt(0).toUpperCase() + category.slice(1);
// Update navigation button states
this.updateNavigationState();
}
updateNavigationState() {
// Show/hide navigation buttons based on number of items
const hasMultipleItems = this.visibleItems.length > 1;
this.prevBtn.style.display = hasMultipleItems ? 'flex' : 'none';
this.nextBtn.style.display = hasMultipleItems ? 'flex' : 'none';
}
}
// Initialize gallery filter when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
new GalleryFilter();
});
</script>
<section class="pt-200px pb-0px sm-pt-100px sm-pb-0px" style="background-color: #F7F7F7;">
<div class="container-fluid">
<div class=" ">
<!-- <span class="photo-text sm-mb-none">
<i class="fa-solid fa-circle"></i>
Available for Freelance
</span> -->
<div class="wptb-item--inner wptb-top text-center md-position-top">
<div class="wptb-heading mb-0 ">
<div class="wptb-item--inner ">
<!-- <h6 class="wptb-item--subtitle"><span>02 //</span> Photo Albums</h6> -->
<div class="hero-photostudio__info1">
<span class="photo-text1">
<i class="fa-solid fa-circle"></i>
Lorem ipsum dolor
</span>
</div>
</div>
</div>
<!-- <h1 class="wptb-item--title ">Rk Media captures all of your <br> <span>beautiful memories </span></h1> -->
<div class="wptb-heading pt-100px pb-100px sm-pt-20px sm-pb-20px">
<h1 class="big-title wptb-item--title">Case Studies </h1>
</div>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vel autem laudantium similique nobis <br> suscipit ratione reiciendis laboriosam, officiis eveniet deleniti?</p>
</div>
<!-- <span class="photo-text sm-mb-none">
<i class="fa-solid fa-circle"></i>
Located in London, UK
</span> -->
</div>
</div>
<style>
.wedding-card-content {
/* padding: 1.5rem; */
padding-top: 1.5rem;
flex-grow: 1;
}
.wedding-card {
border-radius: 0px !important;
box-shadow: none !important;
background-color: unset !important;
}
.wedding-card-image img {
width: 100%;
height: 100%;
border-radius: 7px;
object-fit: cover;
object-position: center;
}
</style>
<div class="sticky_parent">
<div class="sticky">
<div class="wedding-carousel-wrapper">
<!-- Item 1 -->
<div class="wedding-carousel-item">
<div class="wedding-card">
<div class="wedding-card-image">
<img src="assets/images/rk-wedding-m-01.png" alt="services-image">
</div>
<div class="wedding-card-content text-center justify-content-center">
<h3 class="wedding-card-title">Lorem ipsum dolor sit.</h3>
<p class="wedding-card-description">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minus provident officia beatae vitae ex. Dolores nostrum, provident alias ab expedita recusandae. Minus, veniam.</p>
<div class=" col-lg-12 d-flex text-center justify-content-center">
<a href="#" class="know-more m-0">View More</a>
</div>
</div>
</div>
</div>
<!-- Item 2 -->
<div class="wedding-carousel-item">
<div class="wedding-card">
<div class="wedding-card-image">
<img src="assets/images/rk-wedding-m-02.png" alt="services-image">
</div>
<div class="wedding-card-content text-center justify-content-center">
<h3 class="wedding-card-title">Lorem ipsum dolor sit.</h3>
<p class="wedding-card-description">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minus provident officia beatae vitae ex. Dolores nostrum, provident alias ab expedita recusandae. Minus, veniam.</p>
<div class=" col-lg-12 d-flex text-center justify-content-center">
<a href="#" class="know-more m-0">View More</a>
</div>
</div>
</div>
</div>
<!-- Item 3 -->
<div class="wedding-carousel-item">
<div class="wedding-card">
<div class="wedding-card-image">
<img src="assets/images/rk-wedding-m-03.png" alt="services-image">
</div>
<div class="wedding-card-content text-center justify-content-center">
<h3 class="wedding-card-title">Lorem ipsum dolor sit.</h3>
<p class="wedding-card-description">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minus provident officia beatae vitae ex. Dolores nostrum, provident alias ab expedita recusandae. Minus, veniam.</p>
<div class=" col-lg-12 d-flex text-center justify-content-center">
<a href="#" class="know-more m-0">View More</a>
</div>
</div>
</div>
</div>
<!-- Item 4 -->
<div class="wedding-carousel-item">
<div class="wedding-card">
<div class="wedding-card-image">
<img src="assets/images/rk-wedding-m-04.png" alt="services-image">
</div>
<div class="wedding-card-content text-center justify-content-center">
<h3 class="wedding-card-title">Lorem ipsum dolor sit.</h3>
<p class="wedding-card-description">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minus provident officia beatae vitae ex. Dolores nostrum, provident alias ab expedita recusandae. Minus, veniam.</p>
<div class=" col-lg-12 d-flex text-center justify-content-center">
<a href="#" class="know-more m-0">View More</a>
</div>
</div>
</div>
</div>
<!-- Item 5 -->
<div class="wedding-carousel-item">
<div class="wedding-card">
<div class="wedding-card-image">
<img src="assets/images/rk-wedding-m-05.png" alt="services-image">
</div>
<div class="wedding-card-content text-center justify-content-center">
<h3 class="wedding-card-title">Lorem ipsum dolor sit.</h3>
<p class="wedding-card-description">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minus provident officia beatae vitae ex. Dolores nostrum, provident alias ab expedita recusandae. Minus, veniam.</p>
<div class=" col-lg-12 d-flex text-center justify-content-center">
<a href="#" class="know-more m-0">View More</a>
</div>
</div>
</div>
</div>
<!-- Item 6 -->
<div class="wedding-carousel-item">
<div class="wedding-card">
<div class="wedding-card-image">
<img src="assets/images/rk-wedding-m-06.png" alt="services-image">
</div>
<div class="wedding-card-content text-center justify-content-center">
<h3 class="wedding-card-title">Lorem ipsum dolor sit.</h3>
<p class="wedding-card-description">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Minus provident officia beatae vitae ex. Dolores nostrum, provident alias ab expedita recusandae. Minus, veniam.</p>
<div class=" col-lg-12 d-flex text-center justify-content-center">
<a href="#" class="know-more m-0">View More</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<style>
.testimonial-content {
background-color: #ffffff !important;
padding: 50px;}
.couple-name {
color: #000 !important;
font-family: var(--bs-body-font-family);
}
</style>
<section class="wptb-testimonial-one position-relative overflow-hidden" style="background-color: #F7F7F7;padding-top: 0 !important;">
<div class="container">
<div class="row">
<div class="testimonial-showcase">
<div class="testimonial-track">
<!-- Panel 1 -->
<div class="testimonial-panel active">
<div class="panel-section testimonial-content">
<h2 style="color: #000;">KIND WORDS</h2>
<img src="assets/images/NEW_IMAGE/SMALL_TESTIM_01.png" alt="wedding-testimonial-image" class="couple-portrait">
<p class="client-quote">Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet nam perspiciatis veniam, magnam aperiam vitae deserunt reprehenderit praesentium minus. Pariatur!</p>
<h3 class="couple-name">Lorem ipsum</h3>
</div>
<div class="panel-section">
<img src="assets/images/NEW_IMAGE/Rk-testimonial-01.png" alt="wedding-testimonial-image" class="wedding-photo">
</div>
</div>
<!-- Panel 2 -->
<div class="testimonial-panel">
<div class="panel-section testimonial-content">
<h2 style="color: #000;">TESTIMONIALS</h2>
<img src="assets/images/NEW_IMAGE/Rk-testimonial-02.png" alt="wedding-testimonial-image" class="couple-portrait">
<p class="client-quote">Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet nam perspiciatis veniam, magnam aperiam vitae deserunt reprehenderit praesentium minus. Pariatur!</p>
<h3 class="couple-name">Lorem ipsum</h3>
</div>
<div class="panel-section">
<img src="assets/images/NEW_IMAGE/TESTMONIAL_02.png" alt="wedding-testimonial-image" class="wedding-photo">
</div>
</div>
<!-- Panel 3 -->
<div class="testimonial-panel">
<div class="panel-section testimonial-content">
<h2 style="color:#000;">LOVE STORIES</h2>
<img src="assets/images/NEW_IMAGE/Rk-testimonial-03.png" alt="wedding-testimonial-image" class="couple-portrait">
<p class="client-quote">Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet nam perspiciatis veniam, magnam aperiam vitae deserunt reprehenderit praesentium minus. Pariatur!</p>
<h3 class="couple-name">Lorem ipsum</h3>
</div>
<div class="panel-section">
<img src="assets/images/NEW_IMAGE/TESTMONIAL_03.png" alt="wedding-testimonial-image" class="wedding-photo">
</div>
</div>
<!-- Panel 4 -->
<!-- <div class="testimonial-panel">
<div class="panel-section testimonial-content">
<h2 style="color: white;">MOMENTS</h2>
<img src="assets/images/NEW_IMAGE/SMALL_TESTIM_01.png" alt="wedding-testimonial-image" class="couple-portrait">
<p class="client-quote">Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet nam perspiciatis veniam, magnam aperiam vitae deserunt reprehenderit praesentium minus. Pariatur!</p>
<h3 class="couple-name">Lorem ipsum</h3>
</div>
<div class="panel-section">
<img src="assets/images/NEW_IMAGE/TESTMONIAL_02.png" alt="wedding-testimonial-image" class="wedding-photo">
</div>
</div> -->
</div>
<div class="testimonial-controls">
<button class="control-btn prev-btn"><svg class="wedding-carousel-arrow" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
</svg></button>
<button class="control-btn next-btn"><svg class="wedding-carousel-arrow" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/>
</svg></button>
</div>
</div>
</div>
</div>
</section>
<style>
/* Main section styling */
.cta-footer {
position: relative;
width: 100%;
max-width: 2500px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1rem;
/* padding: 0 1rem; */
min-height: 50vmax;
background: white;
color: black;
overflow: hidden;
}
@media (min-width: 1024px) {
.cta-footer {
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: 1.5rem;
padding: 0 1.5rem;
}
}
/* CTA Button */
.cta-link {
position: relative;
height: 100%;
width: 100%;
grid-column: span 2;
min-height: 25rem;
z-index: 50;
display: flex;
align-items: center;
text-decoration: none;
}
@media (min-width: 768px) {
.cta-link {
grid-column: 3 / span 2;
}
}
@media (min-width: 1024px) {
.cta-link {
grid-column: 9 / span 5;
}
}
.tile-item {
position: absolute;
height: 100%;
width: 100%;
display: flex;
flex-direction: column-reverse;
align-items: center;
justify-content: center;
gap: 2.5rem;
border-radius: 0.125rem;
/* border-bottom: 4px solid #312114; */
/* padding: 2.5rem; */
text-align: center;
transition: all 0.7s cubic-bezier(0.19, 1, 0.22, 1);
background-color: #B90808;
color: white;
max-width: 35rem;
max-height: 30rem;
}
/* @media (min-width: 1024px) {
.tile-item {
border-radius: 0.375rem;
gap: 5rem;
}
} */
.tile-item:hover {
border-bottom: 0;
border-bottom-color: transparent;
}
.arrow-icon {
position: absolute;
right: 3vw;
top: 3vw;
width: 25px;
height: 25px;
transform: rotate(-45deg);
stroke: currentColor;
stroke-width: 2;
fill: none;
}
.icon-image {
height: 8rem;
width: 8rem;
max-height: 15rem;
max-width: 15rem;
}
.icon-image svg{
height: 30px;
width: 30px;
}
@media (min-width: 1024px) {
.icon-image {
height: 13vw;
width: 13vw;
}
}
.headline-xl {
font-family: serif;
font-size: clamp(2rem, 4vw, 3rem);
line-height: 1.2;
letter-spacing: -0.04em;
text-transform: uppercase;
max-width: 6em;
white-space: pre-wrap;
}
.text-large {
font-size: 1.125rem;
line-height: 1.2;
letter-spacing: -0.02em;
text-transform: uppercase;
font-weight: bold;
}
/* Cream overlay */
.cream-overlay {
position: absolute;
inset: 0;
z-index: 20;
background-color: #fff;
mix-blend-mode: multiply;
}
/* Text container */
.text-container {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
justify-content: center;
padding: 2rem 0;
transform: translateX(-1%);
}
@media (min-width: 768px) {
.text-container {
justify-content: center;
padding: 0;
}
}
.headline-5xl {
/* font-family: serif; */
font-family: var(--font-family-base);
font-size: clamp(4rem, 10vw, 20rem);
line-height: 0.88;
letter-spacing: -0.09em;
text-transform: uppercase;
white-space: nowrap;
width: 100vw;
font-weight: 700;
color: black;
transition: transform 0.1s ease-out;
}
/* Media frame */
.media-frame {
position: absolute;
inset: 0;
z-index: 10;
/* z-index: 999; */
grid-column: span 6;
height: 100%;
width: 100%;
mix-blend-mode: screen;
}
.media-content {
position: absolute;
inset: 0;
z-index: 20;
height: 100%;
width: 100%;
object-fit: cover;
}
.video-container {
position: absolute;
height: 100%;
width: 100%;
overflow: hidden;
}
.video-wrapper {
position: absolute;
z-index: -1;
width: 100%;
height: 120%;
transform: translateY(-10.79%);
}
.video-overlay {
position: absolute;
inset: 0;
z-index: 20;
height: 100%;
width: 100%;
background-color: black;
object-fit: cover;
opacity: 0.2;
}
.video-element {
position: absolute;
inset: 0;
z-index: 10;
height: 100%;
width: 100%;
object-fit: cover;
}
.fallback-image {
position: absolute;
inset: 0;
z-index: 0;
height: 100%;
width: 100%;
object-fit: cover;
}
/* Noise animation */
.noise {
position: absolute;
inset: 0;
height: 100%;
width: 100%;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><defs><filter id="noise"><feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="4" stitchTiles="stitch"/><feColorMatrix type="saturate" values="0"/></filter></defs><rect width="100%" height="100%" filter="url(%23noise)" opacity="0.4"/></svg>');
opacity: 0.1;
pointer-events: none;
z-index: 9999;
background-repeat: repeat;
background-position: 0% 0%;
animation: noise 2s steps(3) infinite;
}
@keyframes noise {
0% { background-position: 0% 0%; }
33% { background-position: 11.67% 1%; }
66% { background-position: 23.33% 6%; }
100% { background-position: 35% 2%; }
}
/* Letter animation styles */
.letter {
display: inline-block;
position: relative;
}
</style>
<section class="cta-footer sm-pt-70px" id="cta-footer">
<a href="#" class="cta-link">
<div class="tile-item">
<svg class="arrow-icon" xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25" fill="none">
<path stroke="currentColor" stroke-width="2" d="M.87 12.314h21.757m0 0L11.314 1m11.313 11.314L11.314 23.627"></path>
</svg>
<div class="icon-image" style="width: 8rem; height: 8rem; background: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 2rem; color: #8a2432;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M20 15.5c-1.25 0-2.45-.2-3.57-.57a1.02 1.02 0 00-1.02.24l-2.2 2.2a15.045 15.045 0 01-6.59-6.59l2.2-2.21a.96.96 0 00.25-1A11.36 11.36 0 018.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z"></path>
</svg>
</div>
<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem;">
<p class="headline-xl">Inquire Today</p>
</div>
<p class="text-large">Let's Talk</p>
</div>
</a>
<div class="cream-overlay"></div>
<div class="text-container">
<p class="headline-5xl" id="moments">
<span class="word" data-word="Moments">
<span class="letter" data-letter="M">M</span>
<span class="letter" data-letter="o">o</span>
<span class="letter" data-letter="m">m</span>
<span class="letter" data-letter="e">e</span>
<span class="letter" data-letter="n">n</span>
<span class="letter" data-letter="t">t</span>
<span class="letter" data-letter="s">s</span>
</span>
</p>
<p class="headline-5xl" id="start">
<span class="word" data-word="Start">
<span class="letter" data-letter="S">S</span>
<span class="letter" data-letter="t">t</span>
<span class="letter" data-letter="a">a</span>
<span class="letter" data-letter="r">r</span>
<span class="letter" data-letter="t">t</span>
</span>
</p>
<p class="headline-5xl" id="here">
<span class="word" data-word="Here">
<span class="letter" data-letter="H">H</span>
<span class="letter" data-letter="e">e</span>
<span class="letter" data-letter="r">r</span>
<span class="letter" data-letter="e">e</span>
</span>
</p>
</div>
<div class="media-frame">
<div class="media-content">
<div class="video-container">
<div class="video-wrapper">
<div style="position: absolute; inset: 0;">
<div class="video-overlay"></div>
<video class="video-element" autoplay loop muted playsinline>
<source src="./assets/images/Footer Peak 15s (1)--final.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div style="position: absolute; inset: 0; z-index: 0; height: 100%; width: 100%;">
<img class="fallback-image" src="https://via.placeholder.com/1920x1080/333333/ffffff?text=Video+Background" alt="Background">
</div>
</div>
</div>
</div>
</div>
<div class="noise"></div>
</div>
</section>
<script>
function initScrollAnimation() {
const section = document.getElementById('cta-footer');
const headlines = document.querySelectorAll('.headline-5xl');
function updateTextPosition() {
const rect = section.getBoundingClientRect();
const windowHeight = window.innerHeight;
const sectionHeight = rect.height;
// Calculate scroll progress through the section
let scrollProgress = 0;
if (rect.top <= windowHeight && rect.bottom >= 0) {
const visibleTop = Math.max(0, windowHeight - rect.top);
const visibleHeight = Math.min(visibleTop, sectionHeight);
scrollProgress = visibleHeight / sectionHeight;
}
// Calculate translateX based on scroll progress
// Start at 0% and move to 20.4135% as example
const maxTranslateX = 20.4135;
const translateX = scrollProgress * maxTranslateX;
headlines.forEach((headline) => {
headline.style.transform = `translateX(${translateX}%) translateY(0em) scale(1) translateZ(0px)`;
headline.style.opacity = '1';
});
}
// Throttled scroll handler
let ticking = false;
function handleScroll() {
if (!ticking) {
requestAnimationFrame(() => {
updateTextPosition();
ticking = false;
});
ticking = true;
}
}
// Initialize and add event listener
updateTextPosition();
window.addEventListener('scroll', handleScroll, { passive: true });
window.addEventListener('resize', updateTextPosition);
}
// Initialize when DOM is loaded
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initScrollAnimation);
} else {
initScrollAnimation();
}
</script>
</div>
</main>
<!-- Footer -->
<!-- Footer -->
<footer class="footer style1 bg-image-2 footer__common footer-area before-shape" style="z-index: 0 !important;">
<div class="footer-top">
<div class="container">
<div class="footer--inner">
<div class=" widget-left-area">
<div class="widget-left-title">
<h3>@inforkmedia.com</h3>
</div>
<div class="wptb-instagram--gallery ">
<div class="wptb-item--inner d-flex align-items-center justify-content-center flex-wrap flex-md-nowrap">
<div class="wptb-item">
<div class="wptb-item--image2">
<img src="assets/images/NEW_IMAGE/Rk-insta-01.png" alt="img">
</div>
</div>
<div class="wptb-item">
<div class="wptb-item--image2">
<img src="assets/images/NEW_IMAGE/Rk-insta-02.png" alt="img">
</div>
</div>
<div class="wptb-item">
<div class="wptb-item--image2">
<img src="assets/images/NEW_IMAGE/Rk-insta-03.png" alt="img">
</div>
</div>
</div>
<div class="wptb-item--button">
<a class="btn btn-two" href="#" style="background: none !important;">
<span class="btn-wrap">
<span class="text-first" style="height: 50px;">Follow Us on Instagram</span>
<span class="text-second"> <i class="bi bi-instagram"></i> <i class="bi bi-instagram"></i> </span>
</span>
</a>
</div>
</div>
</div>
<div class="">
<div class=" footer-center-block mb-5 mb-md-0 order-1 order-md-0">
<div class="footer-widget ">
<div class="logo mr-bottom-20">
<!-- <a href="#" class=""><img src="./assets/img/logo.svg" alt="logo"></a> -->
<a href="#" class="" style="color: #FFF;font-family: var(--font-family-base);
font-size: 40px;">RK MEDIA</a>
</div>
<div class="hero-photostudio__info " style="display: block !important;">
<div class="mr-bottom-20 ">
<div class="wptb-item--inner ">
<div class="hero-photostudio__info2">
<span class="photo-text text-white">
<i class="fa-solid fa-circle"></i>
Lorem ipsum
</span>
</div>
</div>
</div>
</div>
<h6 class="widget-title">Sign up for all the latest <br> news and offers </h6>
<div class="col-md-12">
<div class="row">
<!-- <div class="col-md-3"></div> -->
<div class="col-md-12">
<form class="newsletter-form" method="post">
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Enter your email" required>
</div>
<button type="submit" class="btn btn-two" style="border: 0 !important;">
<span class="btn-wrap">
<span class="text-first">Subscribe</span>
<span class="text-second"><i class="bi bi-arrow-up-right"></i> <i class="bi bi-arrow-up-right"></i></span>
</span>
</button>
</form>
</div>
<!-- <div class="col-md-3"></div> -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Footer Bottom Part -->
<div class="footer-bottom">
<div class="container">
<div class="footer-bottom-inner">
<div class="copyright">
<p >RK Media All Rights Reserved.Designed with <i class="fa fa-heart" style="color:red !important;"></i> by <a href="https://thedotstudios.com/" class=" text-primary-hover" target="_blank">TheDotStudios.com</a> </p>
</div>
<div class="social-box social-mb style-oval">
<ul>
<li><a href="#">Our Work</a></li>
<li><a href="#">Instagram</a></li>
<li><a href="#">Contact us</a></li>
</ul>
</div>
</div>
</div>
</div>
</footer>
<div class="totop">
<a href="#"><i class="bi bi-chevron-up"></i></a>
</div>
<!-- Core JS -->
<script src="./assets/js/jquery-3.6.0.min.js"></script>
<!-- Framework -->
<script src="./assets/js/bootstrap.min.js"></script>
<!-- WOW Scroll Effect -->
<script src="./plugins/wow/wow.min.js"></script>
<!-- Swiper Slider -->
<script src="./plugins/swiper/swiper-bundle.min.js"></script>
<script src="./plugins/swiper/swiper-gl.min.js"></script>
<!-- Odometer Counter -->
<!-- <script src="./plugins/odometer/appear.js"></script>
<script src="./plugins/odometer/odometer.js"></script> -->
<!-- Projects -->
<script src="./plugins/isotope/isotope.pkgd.min.js"></script>
<script src="./plugins/isotope/imagesloaded.pkgd.min.js"></script>
<script src="./plugins/isotope/tilt.jquery.js"></script>
<script src="./plugins/isotope/isotope-init.js"></script>
<!-- Fancybox -->
<!-- <script src="./plugins/fancybox/jquery.fancybox.min.js"></script> -->
<!-- Flatpickr -->
<!-- <script src="./plugins/flatpickr/flatpickr.min.js"></script> -->
<!-- Nice Select -->
<script src="./plugins/nice-select/jquery.nice-select.min.js"></script>
<script src="./assets/js/smooth-s.js"></script>
<!-- Cursor Effect -->
<script src="./plugins/cursor-effect/cursor-effect.js"></script>
<!-- Theme Custom JS -->
<script src="./assets/js/theme.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.4.2/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.1.1/owl.carousel.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/ScrollTrigger.min.js"></script>
<!-- Swiper JS -->
<script>
document.addEventListener('DOMContentLoaded', function() {
function initializeResortSlider() {
if (window.innerWidth >= 768) {
if (!window.resortSwiper) {
window.resortSwiper = new Swiper(".resort-swiper", {
slidesPerView: 3,
spaceBetween: 20,
loop: true,
speed: 1200,
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
effect: "slide"
});
}
document.querySelector(".resort-slider-container").style.display = "block";
} else {
if (window.resortSwiper && window.resortSwiper.destroy) {
window.resortSwiper.destroy(true, true);
window.resortSwiper = null;
}
document.querySelector(".resort-slider-container").style.display = "none";
}
}
initializeResortSlider();
window.addEventListener("resize", initializeResortSlider);
});
</script>
<script>
document.addEventListener("DOMContentLoaded", () => {
const carouselWrapper = document.querySelector(".wedding-carousel-wrapper");
const stickyParent = document.querySelector(".sticky_parent");
// Get all carousel items
const carouselItems = document.querySelectorAll(".wedding-carousel-item");
const isMobile = () => window.innerWidth < 768;
const itemWidth = () => isMobile() ? 315 : 420; // 300px + 15px margin for mobile, 400px + 20px for desktop
// Calculate total scroll width
const getTotalScrollWidth = () => carouselItems.length * itemWidth();
let isScrolling = false;
let ticking = false;
function updateScroll() {
if (!ticking) {
requestAnimationFrame(() => {
const stickyRect = stickyParent.getBoundingClientRect();
const stickyStart = Math.max(0, -stickyRect.top);
const stickyHeight = stickyParent.offsetHeight - window.innerHeight;
// Calculate scroll progress (0 to 1)
const scrollProgress = Math.min(1, stickyStart / stickyHeight);
// Calculate maximum scroll distance
const maxScrollDistance = getTotalScrollWidth() - window.innerWidth + (isMobile() ? 50 : 100);
// Direct linear mapping - no smoothing to prevent glitches
const targetPosition = scrollProgress * maxScrollDistance;
// Apply transform directly
carouselWrapper.style.transform = `translateX(${-targetPosition}px)`;
ticking = false;
});
ticking = true;
}
}
function updateStickyParentHeight() {
if (isMobile()) {
stickyParent.style.height = "3000px";
} else {
stickyParent.style.height = "2500px";
}
}
// Throttled scroll event
let scrollTimeout;
function handleScroll() {
isScrolling = true;
clearTimeout(scrollTimeout);
updateScroll();
scrollTimeout = setTimeout(() => {
isScrolling = false;
}, 100);
}
// Initial setup
updateStickyParentHeight();
carouselWrapper.style.width = `${getTotalScrollWidth()}px`;
// Add scroll listener
window.addEventListener("scroll", handleScroll, { passive: true });
// Handle window resize
let resizeTimeout;
window.addEventListener("resize", () => {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(() => {
// Reset and recalculate
carouselWrapper.style.transform = 'translateX(0)';
updateStickyParentHeight();
carouselWrapper.style.width = `${getTotalScrollWidth()}px`;
updateScroll();
}, 250);
});
// Initial scroll update
updateScroll();
});
</script>
<script>
// Intersection Observer for viewport detection
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry, index) => {
if (entry.isIntersecting) {
// Add a small delay for staggered effect
setTimeout(() => {
entry.target.classList.add('animate');
}, index * 100);
// Stop observing once animated
observer.unobserve(entry.target);
}
});
}, observerOptions);
// Observe all gallery items
document.addEventListener('DOMContentLoaded', () => {
const galleryItems = document.querySelectorAll('.gallery-item');
galleryItems.forEach(item => {
observer.observe(item);
});
});
// Optional: Click handler for gallery items
document.querySelectorAll('.gallery-item').forEach(item => {
item.addEventListener('click', () => {
// You can add lightbox functionality here
console.log('Gallery item clicked!');
});
});
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const panels = document.querySelectorAll('.testimonial-panel');
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');
let currentPanel = 0;
const maxPanels = panels.length - 1;
function showPanel(panelIndex) {
// Hide all panels
panels.forEach(panel => {
panel.classList.remove('active');
});
// Show the current panel
panels[panelIndex].classList.add('active');
}
function goToPanel(panelIndex) {
if (panelIndex < 0) {
panelIndex = maxPanels;
} else if (panelIndex > maxPanels) {
panelIndex = 0;
}
currentPanel = panelIndex;
showPanel(currentPanel);
}
prevBtn.addEventListener('click', () => {
goToPanel(currentPanel - 1);
});
nextBtn.addEventListener('click', () => {
goToPanel(currentPanel + 1);
});
let panelInterval = setInterval(() => {
goToPanel(currentPanel + 1);
}, 6000);
panels.forEach(panel => {
panel.addEventListener('mouseenter', () => {
clearInterval(panelInterval);
});
panel.addEventListener('mouseleave', () => {
panelInterval = setInterval(() => {
goToPanel(currentPanel + 1);
}, 6000);
});
});
let touchStartX = 0;
let touchEndX = 0;
panels.forEach(panel => {
panel.addEventListener('touchstart', (e) => {
touchStartX = e.touches[0].clientX;
clearInterval(panelInterval);
}, false);
panel.addEventListener('touchend', (e) => {
touchEndX = e.changedTouches[0].clientX;
handleSwipe();
panelInterval = setInterval(() => {
goToPanel(currentPanel + 1);
}, 6000);
}, false);
});
function handleSwipe() {
if (touchEndX < touchStartX - 50) {
// Swipe left
goToPanel(currentPanel + 1);
}
if (touchEndX > touchStartX + 50) {
// Swipe right
goToPanel(currentPanel - 1);
}
}
});
</script>
<script>
// Animation control variables
let animationId = null;
// Get elements
const circleScale = document.getElementById('circleScale');
const circleMask = document.getElementById('circleMask');
const svgWrapper = document.getElementById('svgWrapper');
const roundaboutSvg = document.getElementById('roundaboutSvg');
const videoWrapper = document.getElementById('videoWrapper');
const videoMask = document.getElementById('videoMask');
const playIconWrapper = document.getElementById('playIconWrapper');
const discoverText = document.getElementById('discoverText');
// Progress indicators
const progressSpan = document.getElementById('progress');
const circleScaleSpan = document.getElementById('circle-scale');
const clipPathSpan = document.getElementById('clip-path');
function updateAnimation() {
// Get the animation container and its bounds
const animationContainer = document.querySelector('.animation-container');
const containerRect = animationContainer.getBoundingClientRect();
const containerHeight = animationContainer.offsetHeight;
// Calculate progress based on how much of the animation container has been scrolled
// When container top = 0 (at top of viewport), progress = 0
// When container top = -containerHeight + viewport height, progress = 1
const viewportHeight = window.innerHeight;
const scrolledDistance = Math.max(0, -containerRect.top);
const maxScrollDistance = containerHeight - viewportHeight;
const animationProgress = Math.min(scrolledDistance / maxScrollDistance, 1);
// Use easing function for smoother animation
const easedProgress = easeInOutCubic(animationProgress);
// Update CSS custom property
const cpValue = 2 + (easedProgress * 100); // From 2% to 50%
circleScale.style.setProperty('--cp', `${cpValue}%`);
// Update circle mask scale
const maskScale = easedProgress * 0.5; // Scale from 0 to 0.5
circleMask.style.transform = `translate(-50%, -50%) scale(${maskScale})`;
// Update SVG wrapper scale
const svgScale = 0.2 + (easedProgress * 0.3); // From 0.2 to 0.5
svgWrapper.style.transform = `translate3d(0px, 0px, 0px) scale(${svgScale}, ${svgScale})`;
// Update SVG rotation (slower rotation)
const rotation = easedProgress * 180; // Half rotation for smoother feel
roundaboutSvg.style.transform = `translate3d(0px, 0px, 0px) rotate(${rotation}deg)`;
// Update video clip-path
const clipRadius = 4 + (easedProgress * 100); // From 2% to 50%
videoWrapper.style.clipPath = `circle(${clipRadius}%)`;
// Update video mask opacity (slower fade)
const maskOpacity = Math.max(0, 1 - (easedProgress * 1.5)); // Slower fade out
videoMask.style.opacity = maskOpacity;
videoMask.style.visibility = maskOpacity > 0 ? 'inherit' : 'hidden';
// Update play icon scale (slower scale down)
const playIconScale = Math.max(0, 1 - (easedProgress * 1.2)); // Slower scale down
playIconWrapper.style.transform = `translate3d(0px, 0px, 0px) scale(${playIconScale}, ${playIconScale})`;
// Update discover text opacity (slower fade)
const discoverOpacity = Math.max(0, 1 - (easedProgress * 1.8));
discoverText.style.opacity = discoverOpacity;
discoverText.style.visibility = discoverOpacity > 0 ? 'inherit' : 'hidden';
// Update progress indicators
progressSpan.textContent = `${Math.round(animationProgress * 100)}%`;
circleScaleSpan.textContent = svgScale.toFixed(3);
clipPathSpan.textContent = `${clipRadius.toFixed(1)}%`;
}
// Easing function for smoother animation
function easeInOutCubic(t) {
return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
}
// Optimized scroll handler with requestAnimationFrame
function handleScroll() {
if (animationId === null) {
animationId = requestAnimationFrame(() => {
updateAnimation();
animationId = null;
});
}
}
// Event listeners
window.addEventListener('scroll', handleScroll, { passive: true });
window.addEventListener('resize', updateAnimation);
// Initialize animation
updateAnimation();
// Play button click handler
document.querySelector('.c-circle-scale__box-play-icon').addEventListener('click', () => {
alert('Play button clicked! In a real implementation, this would start the video.');
});
</script>
</body>
</html>