/* ------------ Base reset & palette ------------- */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; line-height: 1.4; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; } :root { --primary: #0d6efd; --dark: #121418; --light: #f5f7fa; --accent: #00c27a; --page-radius: 24px; --page-radius-lg: 32px; --page-bg: #ffffff; --body-bg1: #ffe1cf; --body-bg2: #ffd8c2; } /* Body background & responsive outer margin "margin zone" */ html, body { height: 100%; } body { background: url('background.jpg') center center / cover no-repeat fixed; padding: clamp(8px, 3vw, 48px); } body::before { content: ""; position: fixed; inset: 0; background: rgba(0,0,0,0.3); /* adjust opacity as needed */ z-index: -1; } /* The page surface */ .page-shell { background: var(--page-bg); border-radius: var(--page-radius); overflow: hidden; /* clip hero to rounded edges */ box-shadow: 0 0 0 1px rgba(0,0,0,.06), 0 10px 25px rgba(0,0,0,.08), 0 35px 80px rgba(0,0,0,.12); max-width: 1600px; margin-inline: auto; } @media (min-width: 768px) { .page-shell { border-radius: var(--page-radius-lg); } } /* ------------ Layout helpers ------------- */ .container { width: min(90%, 1100px); margin-inline: auto; } .section-title { margin-bottom: 1rem; font-size: 1.85rem; color: var(--primary); text-align: center; } /* ------------ Navbar ------------- */ .navbar { position: sticky; top: 0; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(6px); border-bottom: 1px solid #e1e5ea; z-index: 50; } .navbar .logo { font-size: 1.4rem; color: var(--dark); } .navbar .logo span { color: var(--primary); } .navbar nav ul { display: flex; gap: 1.2rem; list-style: none; } .navbar a { text-decoration: none; color: var(--dark); font-weight: 500; padding: 0.4rem 0.8rem; border-radius: 4px; transition: background-color 0.2s ease, color 0.2s ease; } .navbar a:hover { background-color: rgba(13, 110, 253, 0.1); color: var(--primary); } .navbar a:active { background-color: rgba(13, 110, 253, 0.2); color: var(--primary); } .navbar .container { display: flex; justify-content: space-between; align-items: center; padding: 0.7rem 0; } .navbar-nav { display: flex; align-items: center; justify-content: space-between; } .navbar-nav .nav-left ul { display: flex; gap: 1.2rem; list-style: none; margin: 0; padding: 0; } .navbar-nav .nav-left a { text-decoration: none; color: var(--dark); font-weight: 500; padding: 0.4rem 0.8rem; border-radius: 4px; transition: background-color 0.2s ease, color 0.2s ease; } .navbar-nav .nav-left a:hover { background-color: rgba(13, 110, 253, 0.1); color: var(--primary); } .email-icon { font-size: 1.8rem; text-decoration: none; color: var(--dark); margin-left: 1rem; transition: color 0.2s ease; } .email-icon:hover { color: var(--primary); } @media (max-width: 768px) { .navbar .container { flex-direction: column; align-items: flex-start; } .navbar-nav { flex-direction: column; width: 100%; } .navbar-nav .nav-left ul { flex-direction: column; gap: 0.5rem; width: 100%; } .navbar-nav .nav-left a { display: block; width: 100%; padding: 0.75rem; } .navbar .logo { margin-bottom: 0.5rem; } .email-icon { align-self: flex-end; margin: 0.5rem 0; } } /* ------------ Hero ------------- */ /* ------------ Hero (Layered Tech) ------------- */ .hero { position: relative; overflow: hidden; /* keeps layers inside rounded page-shell */ color: #fff; padding: 5rem 0 6rem; text-align: center; } /* Background image layer */ .hero::before { content: ""; position: absolute; inset: 0; background: url('hero-banner.jpg') center/cover no-repeat; /* replace w/ your image; falls back if missing */ filter: brightness(0.45) saturate(1.2); /* darken so text pops */ z-index: 0; } /* Animated gradient overlay layer */ .hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient( 135deg, rgba(13,110,253,0.85) 0%, rgba(77,141,255,0.65) 45%, rgba(0,194,122,0.70) 100% ); background-size: 200% 200%; animation: heroGradient 16s ease-in-out infinite alternate; mix-blend-mode: screen; /* try 'overlay' or 'soft-light' if you prefer */ z-index: 1; } @keyframes heroGradient { 0% { background-position: 0% 50%; } 100% { background-position: 100% 50%; } } /* Particle canvas sits above background layers, below content */ #hero-particles { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none; } /* Content on top */ .hero-content { position: relative; z-index: 3; } .hero h2 { font-size: 2.8rem; margin-bottom: 1rem; } .hero p { font-size: 1.2rem; margin-bottom: 2rem; max-width: 650px; margin-inline: auto; } .cta-btn { padding: 0.9rem 1.8rem; background: var(--accent); border: none; color: #fff; font-size: 1.05rem; border-radius: 6px; text-decoration: none; transition: transform 0.2s; } .cta-btn:hover { transform: translateY(-3px); } /* ------------ Services ------------- */ .services { padding: 4rem 0 2rem; background: var(--light); } .service-grid { display: grid; gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); } .service-grid article { background: #fff; padding: 1.8rem; border-radius: 8px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.05); transition: transform 0.25s; } .service-grid article:hover { transform: translateY(-6px); } .service-grid h4 { margin-bottom: 0.6rem; color: var(--primary); } .service-grid p { font-size: 0.95rem; } /* Service Icons */ .service-icon { width: 32px; height: 32px; margin-inline: auto; margin-bottom: 0.5rem; color: var(--primary); } .service-icon svg { width: 100%; height: 100%; display: block; } /* ------------ Why Us ------------- */ .why-us { padding: 4rem 0; } .why-list { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); list-style: none; font-size: 1.05rem; } .why-list li { padding-left: 1.3rem; position: relative; } .why-list li::before { content: "✓"; position: absolute; left: 0; color: var(--accent); } /* ------------ Testimonials ------------- */ .testimonials { padding: 4rem 0 5rem; background: var(--light); } blockquote { background: #fff; padding: 1.5rem 2rem; border-left: 4px solid var(--primary); margin: 1.2rem 0; border-radius: 6px; box-shadow: 0 3px 10px rgba(0, 0, 0, 0.04); } blockquote cite { display: block; margin-top: 0.8rem; font-style: normal; font-size: 0.9rem; color: #555; } /* ------------ Floating Contact Form ------------- */ :root { --flyout-right-margin: clamp(8px, 2vw, 24px); } /* … */ #contact-flyout { position: fixed; top: 25%; right: var(--flyout-right-margin); width: 320px; z-index: 100; animation: bob 3.6s ease-in-out infinite; } @keyframes bob { 0%, 100% { transform: translateY(-8px); } 50% { transform: translateY(8px); } } .contact-form { background: #fff; border: 2px solid var(--primary); border-right: none; padding: 1.5rem 1.2rem 1rem; border-radius: 8px 0 0 8px; box-shadow: -4px 6px 16px rgba(0, 0, 0, 0.08); width: 100%; } .contact-form h4 { margin-bottom: 0.8rem; color: var(--primary); } .contact-form label { display: block; margin-bottom: 1rem; font-size: 0.9rem; } .contact-form input, .contact-form textarea { width: 100%; padding: 0.55rem 0.6rem; font-size: 0.9rem; border: 1px solid #ccc; border-radius: 4px; } .submit-btn { display: block; width: 100%; margin-top: 0.4rem; padding: 0.7rem 0; border: none; background: var(--primary); color: #fff; font-weight: 600; border-radius: 4px; cursor: pointer; transition: background 0.2s; } .submit-btn:hover { background: #005be0; } #closeFlyout { position: absolute; top: 4px; left: -32px; background: var(--primary); color: #fff; border: none; border-radius: 50%; width: 28px; height: 28px; font-size: 0.9rem; cursor: pointer; } /* ------------ Footer ------------- */ .footer { background: var(--dark); color: #aaa; text-align: center; padding: 1.4rem 0; font-size: 0.85rem; } /* Respect motion preferences */ @media (prefers-reduced-motion: reduce) { .hero::after { animation: none !important; background-position: 50% 50% !important; } #hero-particles { display: none !important; } } /* wiggle effect for contact flyout */ #contact-flyout.wiggle { animation: wiggle 0.5s ease; } @keyframes wiggle { 0% { transform: translateY(0) rotate(0deg); } 15% { transform: translateY(-2px) rotate(-2deg); } 30% { transform: translateY(2px) rotate(2deg); } 45% { transform: translateY(-1px) rotate(-1deg); } 60% { transform: translateY(1px) rotate(1deg); } 75% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } } /* Submitting spinner */ .btn-spinner { border: 3px solid #f3f3f3; border-top: 3px solid var(--primary); border-radius: 50%; width: 16px; height: 16px; animation: spin 0.8s linear infinite; display: inline-block; vertical-align: middle; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Modal */ .form-modal { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 9999; } .form-modal.hidden { display: none; } .form-modal-content { background: #fff; padding: 1.5rem 2rem; border-radius: 8px; text-align: center; animation: popin 0.3s ease; } @keyframes popin { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } /* Wiggle (already in your CSS but repeated here for convenience) */ /* Wiggle */ #contact-flyout.wiggle { animation: wiggle 0.5s ease; } @keyframes wiggle { 0% { transform: translateY(0) rotate(0deg); } 15% { transform: translateY(-2px) rotate(-2deg); } 30% { transform: translateY(2px) rotate(2deg); } 45% { transform: translateY(-1px) rotate(-1deg); } 60% { transform: translateY(1px) rotate(1deg); } 75% { transform: translateY(-1px) rotate(-1deg); } 100% { transform: translateY(0) rotate(0deg); } } .btn-spinner { border: 3px solid #f3f3f3; border-top: 3px solid var(--primary); border-radius: 50%; width: 16px; height: 16px; animation: spin 0.8s linear infinite; display: inline-block; vertical-align: middle; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .form-modal { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 9999; } .form-modal.hidden { display: none; } .form-modal-content { background: #fff; padding: 1.5rem 2rem; border-radius: 8px; text-align: center; animation: popin 0.3s ease; } @keyframes popin { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } .honeypot { position: absolute; left: -9999px; top: -9999px; height: 0; width: 0; overflow: hidden; }