:root {
--td-color-primary: #7c9082;
--td-color-secondary: #d9e2d5;
--td-color-background: #fdfcfb;
--td-color-text: #4a4a4a;
--td-color-heading: #2d312d;
--td-color-link: #7c9082;
--td-color-link-hover: #5d6d62;
--td-color-btn-primary-bg: #2d312d;
--td-color-btn-primary-text: #ffffff;
--td-color-btn-primary-hover: #4a4a4a;
--td-color-header-bg: #fdfcfb;
--td-color-header-text: #2d312d;
--td-color-footer-bg: #2d312d;
--td-color-footer-text: #fdfcfb;
--td-font-body: 'Lora', serif;
--td-font-heading: 'Playfair Display', serif;
--td-font-size-base: 18px;
}
body {
margin: 0;
padding: 0;
font-family: var(--td-font-body);
background-color: var(--td-color-background);
color: var(--td-color-text);
line-height: 1.8;
}
h1, h2, h3, h4 {
font-family: var(--td-font-heading);
color: var(--td-color-heading);
font-weight: 400;
margin: 0 0 1rem;
letter-spacing: -0.02em;
}
.fse-group {
max-width: 1100px;
margin: 0 auto;
padding: 0 40px;
}
.fse-section {
padding: 120px 0;
position: relative;
}
/* Premium Grain Overlay */
.fse-section::after {
content: '';
position: absolute;
top: 0; left: 0; width: 100%; height: 100%;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");
pointer-events: none;
z-index: 1;
}
/* Header Styling */
.fse-header {
padding: 20px 0;
background: var(--td-color-header-bg);
border-bottom: 1px solid rgba(0,0,0,0.05);
position: sticky;
top: 0;
z-index: 1000;
}
.fse-header-content {
display: flex;
justify-content: space-between;
align-items: center;
max-width: 1200px;
}
.fse-header-left { display: flex; align-items: center; gap: 20px; }
.fse-header-right { display: flex; align-items: center; gap: 40px; }
.fse-site-title {
font-family: var(--td-font-heading);
font-size: 1.4rem;
letter-spacing: -0.01em;
}
.fse-nav-menu {
display: flex;
gap: 35px;
list-style: none;
margin: 0;
padding: 0;
}
.fse-nav-menu a {
text-decoration: none;
color: var(--td-color-header-text);
font-size: 0.95rem;
text-transform: uppercase;
letter-spacing: 0.1em;
font-weight: 500;
transition: opacity 0.3s;
}
.fse-nav-menu a:hover { opacity: 0.6; }
/* Hero Styling */
.fse-hero {
min-height: 85vh;
display: flex;
align-items: center;
text-align: center;
background: radial-gradient(circle at center, #fdfcfb 0%, #eef1ed 100%);
padding: 100px 0;
}
.fse-hero-inner { max-width: 800px; margin: 0 auto; }
.hero-subtitle {
text-transform: uppercase;
letter-spacing: 0.3em;
font-size: 0.8rem;
margin-bottom: 2rem;
color: var(--td-color-primary);
}
.hero-title {
font-size: clamp(2.5rem, 6vw, 5rem);
line-height: 1.1;
margin-bottom: 1.5rem;
}
.hero-description {
font-size: 1.25rem;
max-width: 600px;
margin: 0 auto 3rem;
opacity: 0.8;
}
/* Section Components */
.section-title {
font-size: clamp(2rem, 4vw, 3rem);
margin-bottom: 4rem;
}
.text-center { text-align: center; }
.fse-centered-container { max-width: 800px; text-align: center; }
.fse-services-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 40px;
}
.service-card {
text-align: left;
transition: transform 0.4s ease;
}
.fse-image-container {
aspect-ratio: 3/4;
overflow: hidden;
border-radius: 4px;
margin-bottom: 2rem;
box-shadow: 0 10px 40px rgba(0,0,0,0.05);
}
.fse-image-container img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.service-card:hover img { transform: scale(1.05); }
.card-title { font-size: 1.5rem; margin-top: 1rem; }
/* Stats Banner */
.fse-stats-banner {
background-color: var(--td-color-secondary);
padding: 80px 0;
}
.stat-number {
display: block;
font-family: var(--td-font-heading);
font-size: 3rem;
color: var(--td-color-heading);
}
.stat-label {
text-transform: uppercase;
letter-spacing: 0.1em;
font-size: 0.8rem;
opacity: 0.7;
}
/* Testimonials */
.fse-testimonials-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 60px;
}
.testimonial-card {
background: #fff;
padding: 50px;
border-radius: 12px;
box-shadow: 0 10px 50px rgba(0,0,0,0.03);
}
.italic-quote {
font-size: 1.25rem;
font-style: italic;
margin-bottom: 2.5rem;
color: #333;
}
.testimonial-meta {
display: flex;
align-items: center;
gap: 15px;
}
.avatar {
width: 50px;
height: 50px;
border-radius: 50%;
object-fit: cover;
}
.author-name {
font-size: 0.9rem;
font-weight: 600;
color: var(--td-color-primary);
}
/* Buttons */
.fse-button {
display: inline-block;
padding: 16px 40px;
text-decoration: none;
font-weight: 600;
border-radius: 50px;
transition: all 0.3s ease;
letter-spacing: 0.05em;
font-size: 0.9rem;
text-transform: uppercase;
}
.fse-button-primary {
background: var(--td-color-btn-primary-bg);
color: var(--td-color-btn-primary-text);
}
.fse-button-primary:hover {
filter: brightness(1.2);
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
/* Footer */
.fse-footer {
background: var(--td-color-footer-bg);
color: var(--td-color-footer-text);
padding: 100px 0 40px;
}
.fse-footer-columns {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
gap: 80px;
margin-bottom: 80px;
}
.fse-footer h4 {
color: var(--td-color-footer-text);
font-size: 1.1rem;
margin-bottom: 2rem;
}
.fse-footer-menu {
list-style: none;
padding: 0;
}
.fse-footer-menu li { margin-bottom: 12px; }
.fse-footer-menu a {
color: inherit;
text-decoration: none;
opacity: 0.7;
transition: opacity 0.3s;
}
.fse-footer-menu a:hover { opacity: 1; }
.fse-contact-list {
list-style: none;
padding: 0;
}
.fse-contact-list li {
display: flex;
gap: 15px;
margin-bottom: 15px;
opacity: 0.8;
}
.fse-footer-bottom {
border-top: 1px solid rgba(255,255,255,0.1);
padding-top: 40px;
text-align: center;
font-size: 0.9rem;
opacity: 0.6;
}
/* Responsive */
@media (max-width: 992px) {
.fse-services-grid { grid-template-columns: repeat(2, 1fr); }
.fse-footer-columns { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
.fse-section { padding: 80px 0; }
.fse-services-grid, .fse-testimonials-grid, .fse-footer-columns { grid-template-columns: 1fr; }
.fse-header-right { gap: 20px; }
.fse-toggle-button { display: block; }
.fse-main-nav, .fse-header-actions { display: none; }
.fse-columns { flex-direction: column; }
}
/* Scroll Animations */
.animate-on-scroll { opacity: 0; transform: translateY(30px); transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.animate-on-scroll.visible { opacity: 1; transform: translateY(0); }
/* === Scroll Reveal Animation System === */
@keyframes fadeSlideUp {
from { opacity: 0; transform: translateY(30px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeSlideLeft {
from { opacity: 0; transform: translateX(-30px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes fadeSlideRight {
from { opacity: 0; transform: translateX(30px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes scaleIn {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
.animate-on-scroll { opacity: 0; }
.animate-slide-left { opacity: 0; }
.animate-slide-right { opacity: 0; }
.animate-scale { opacity: 0; }
.animate-on-scroll.visible { animation: fadeSlideUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.animate-slide-left.visible { animation: fadeSlideLeft 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.animate-slide-right.visible { animation: fadeSlideRight 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.animate-scale.visible { animation: scaleIn 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
/* Hover micro-interactions — buttons only lighten slightly, no underline, no text color change */
.fse-button { transition: transform 0.3s ease, box-shadow 0.3s ease, filter 0.2s ease; }
.fse-button:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,0.15); filter: brightness(1.1); text-decoration: none !important; }
.fse-button:hover * { text-decoration: none !important; color: inherit !important; }
/* Editor-only — keeps scroll-reveal content visible while editing in Elementor */
body.elementor-editor-active .animate-on-scroll,
body.elementor-editor-active [class*="animate-slide-"],
body.elementor-editor-active .animate-scale {
opacity: 1 !important;
transform: none !important;
}
/* PressMeGPT Header 3-Zone Layout */
.fse-header-content{
display:flex!important;align-items:center!important;justify-content:space-between!important;flex-wrap:nowrap!important;padding:20px 15px;box-sizing:border-box;
}
.fse-header{display:flex;align-items:center;justify-content:space-between;padding:20px 15px;box-sizing:border-box;}
.fse-header-left{display:flex!important;align-items:center!important;gap:10px;flex:0 1 auto;min-width:0;}
.fse-header-center{display:none;flex:1 1 auto;justify-content:center;}
.fse-header-right{display:flex!important;align-items:center!important;gap:10px;flex:0 0 auto;margin-left:auto;}
/* Ensure CTA stays visible on all viewports in exported themes */
.fse-header-actions{display:flex!important;align-items:center!important;gap:8px;}
/* Strip button styling from hamburger. Color is forced from the design's header text
token (--td-color-header-text) so the icon stays visible when the Elementor header
is imported into a third-party WP theme whose body color would otherwise cascade. */
.fse-toggle-button,span.fse-toggle-button,[class*="fse-toggle"]{background:none!important;border:none!important;box-shadow:none!important;outline:none!important;cursor:pointer;padding:4px!important;font-size:18px;color:#2d312d!important;display:inline-flex;align-items:center;}
/* Hide inline nav (lives in overlay now) */
.fse-main-nav{display:none!important;}
/* Suppress fallback WP menu-toggle */
.theme-designer-header .menu-toggle{display:none!important;}
/* Overlay styles */
.pmgpt-menu-overlay-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:99998;opacity:0;visibility:hidden;transition:opacity 0.3s,visibility 0.3s;}
.pmgpt-menu-overlay-backdrop.open{opacity:1;visibility:visible;}
.pmgpt-menu-overlay{position:fixed;top:0;right:0;bottom:0;width:280px;max-width:85vw;background:#fff;z-index:99999;transform:translateX(100%);transition:transform 0.3s ease;box-shadow:-4px 0 20px rgba(0,0,0,0.15);display:flex;flex-direction:column;}
.pmgpt-menu-overlay.open{transform:translateX(0);}
.pmgpt-menu-overlay-header{display:flex;align-items:center;justify-content:flex-end;padding:16px 20px;border-bottom:1px solid rgba(128,128,128,0.15);}
.pmgpt-menu-overlay-close{background:none;border:none;font-size:24px;cursor:pointer;padding:4px;color:#2d312d!important;line-height:1;}
.pmgpt-menu-overlay-links{flex:1;overflow-y:auto;padding:8px 0;}
/* Customizer: breakpoint mode */
@media(min-width:769px){
body.pmgpt-mobile-breakpoint .fse-toggle-button{display:none!important;}
body.pmgpt-mobile-breakpoint .fse-header-center{display:flex!important;}
body.pmgpt-mobile-breakpoint .fse-main-nav{display:flex!important;position:static!important;box-shadow:none!important;padding:0!important;}
body.pmgpt-mobile-breakpoint .fse-main-nav ul{flex-direction:row!important;gap:0!important;}
}
/* Customizer: never mode */
body.pmgpt-mobile-never .fse-toggle-button{display:none!important;}
body.pmgpt-mobile-never .fse-header-center{display:flex!important;}
body.pmgpt-mobile-never .fse-main-nav{display:flex!important;position:static!important;box-shadow:none!important;padding:0!important;}
body.pmgpt-mobile-never .fse-main-nav ul{flex-direction:row!important;gap:0!important;}
(function(){
document.addEventListener('DOMContentLoaded',function(){
var toggle=document.querySelector('.fse-toggle-button');
if(!toggle){toggle=document.querySelector('[aria-label="Menu"]');}
var backdrop=document.getElementById('pmgpt-menu-backdrop');
var panel=document.getElementById('pmgpt-menu-panel');
var closeBtn=document.getElementById('pmgpt-menu-close');
if(!toggle||!backdrop||!panel) return;
function openMenu(){backdrop.classList.add('open');panel.classList.add('open');toggle.setAttribute('aria-expanded','true');}
function closeMenu(){backdrop.classList.remove('open');panel.classList.remove('open');toggle.setAttribute('aria-expanded','false');}
toggle.addEventListener('click',function(e){e.preventDefault();e.stopPropagation();panel.classList.contains('open')?closeMenu():openMenu();});
if(closeBtn) closeBtn.addEventListener('click',closeMenu);
backdrop.addEventListener('click',closeMenu);
});
})();