diff --git a/assets/css/custom.css b/assets/css/custom.css new file mode 100644 index 0000000..8c54725 --- /dev/null +++ b/assets/css/custom.css @@ -0,0 +1,118 @@ +/* Agency Theme */ +:root { + --primary: #4A90E2; + --secondary: #50E3C2; + --background: #F4F7F6; + --surface: #FFFFFF; + --text-color: #333333; + --heading-font: 'Poppins', sans-serif; + --body-font: 'Open Sans', sans-serif; + --border-radius: 0.5rem; +} + +body { + font-family: var(--body-font); + background-color: var(--background); + color: var(--text-color); +} + +h1, h2, h3, h4, h5, h6 { + font-family: var(--heading-font); + font-weight: 600; +} + +.btn-primary { + background-color: var(--primary); + border-color: var(--primary); + border-radius: var(--border-radius); + padding: 0.75rem 1.5rem; + font-weight: 600; + transition: all 0.3s ease; +} + +.btn-primary:hover { + background-color: #357ABD; + border-color: #357ABD; + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0,0,0,0.1); +} + +.btn-secondary { + background-color: var(--secondary); + border-color: var(--secondary); + color: #fff; + border-radius: var(--border-radius); + padding: 0.75rem 1.5rem; + font-weight: 600; + transition: all 0.3s ease; +} + +.btn-secondary:hover { + background-color: #45C4A7; + border-color: #45C4A7; + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0,0,0,0.1); +} + +.navbar { + background-color: var(--surface); + box-shadow: 0 2px 4px rgba(0,0,0,0.05); +} + +.hero { + background: linear-gradient(135deg, rgba(74, 144, 226, 0.9), rgba(80, 227, 194, 0.9)), url('https://picsum.photos/seed/hero/1600/900'); + background-size: cover; + background-position: center; + color: white; + padding: 8rem 0; + text-align: center; +} + +.hero h1 { + font-size: 3.5rem; + font-weight: 700; +} + +.section { + padding: 5rem 0; +} + +.card { + border: none; + border-radius: var(--border-radius); + box-shadow: 0 4px 12px rgba(0,0,0,0.08); + transition: all 0.3s ease; +} + +.card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 16px rgba(0,0,0,0.1); +} + +.service-icon { + width: 64px; + height: 64px; + color: var(--primary); +} + +.form-control { + border-radius: var(--border-radius); +} + +.form-control:focus { + border-color: var(--primary); + box-shadow: 0 0 0 0.25rem rgba(74, 144, 226, 0.25); +} + +.footer { + background-color: var(--surface); + padding: 2rem 0; + border-top: 1px solid #e9ecef; +} + +.toast-container { + position: fixed; + top: 20px; + right: 20px; + z-index: 1055; +} \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..dd9e2ae --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,54 @@ +document.addEventListener('DOMContentLoaded', function () { + const urlParams = new URLSearchParams(window.location.search); + const status = urlParams.get('status'); + + if (status) { + let message = ''; + let type = 'success'; + let title = 'Success!'; + + if (status === 'success') { + message = 'Your message has been sent successfully. We will get back to you shortly.'; + } else if (status === 'error') { + message = 'There was an error sending your message. Please try again.'; + type = 'danger'; + title = 'Error!'; + } else if (status === 'validation_error') { + message = 'Please fill out all fields correctly.'; + type = 'warning'; + title = 'Validation Error'; + } + + if (message) { + showToast(title, message, type); + // Clean the URL + window.history.replaceState({}, document.title, window.location.pathname); + } + } +}); + +function showToast(title, message, type = 'success') { + const toastContainer = document.getElementById('toast-container'); + if (!toastContainer) return; + + const toastId = 'toast-' + Date.now(); + const toastHTML = ` + + `; + + toastContainer.insertAdjacentHTML('beforeend', toastHTML); + const toastElement = document.getElementById(toastId); + const toast = new bootstrap.Toast(toastElement, { delay: 5000 }); + toast.show(); + toastElement.addEventListener('hidden.bs.toast', () => { + toastElement.remove(); + }); +} \ No newline at end of file diff --git a/contact.php b/contact.php new file mode 100644 index 0000000..fe40c41 --- /dev/null +++ b/contact.php @@ -0,0 +1,64 @@ +exec("CREATE TABLE IF NOT EXISTS contact_submissions ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + email VARCHAR(255) NOT NULL, + message TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )"); + + // Insert the new submission + $stmt = $pdo->prepare("INSERT INTO contact_submissions (name, email, message) VALUES (?, ?, ?)"); + $stmt->execute([$name, $email, $message]); + + // --- Email Notification --- + // The recipient email address. If null, MailService will use MAIL_TO from .env + $recipient = null; + $subject = "New Contact Form Submission from " . htmlspecialchars($name); + + $mailResult = MailService::sendContactMessage($name, $email, $message, $recipient, $subject); + + if (!empty($mailResult['success'])) { + header('Location: index.php?status=success#contact'); + } else { + // Log error if you have a logging system + // error_log("Mail sending failed: " . $mailResult['error']); + header('Location: index.php?status=error#contact'); + } + +} catch (PDOException $e) { + // Log database error + // error_log("Database error: " . $e->getMessage()); + header('Location: index.php?status=error#contact'); + exit; +} catch (Exception $e) { + // Log other errors (e.g., mailer) + // error_log("General error: " . $e->getMessage()); + header('Location: index.php?status=error#contact'); + exit; +} diff --git a/index.php b/index.php index 6f7ffab..d579de1 100644 --- a/index.php +++ b/index.php @@ -1,131 +1,160 @@ - - + - - - New Style - - - - + + + Creative Agency - Driving Growth Through Digital Experiences + + + + + + + + + + + + + + + + + + + + + + + + + + + -
-
-

Analyzing your requirements and generating your website…

-
- Loading… -
-

AI is collecting your requirements and applying the first changes.

-

This page will update automatically as the plan is implemented.

-

Runtime: PHP — UTC

-
-
- + + +
+ + + + + +
+
+
+
+

Digital Experiences That Drive Growth

+

We are a creative agency that builds beautiful, functional websites and crafts digital strategies that deliver measurable results.

+ Get a Free Quote +
+
+
+
+ +
+ +
+
+
+

Our Services

+

We offer a complete suite of digital services.

+
+
+ +
+
+
+
+

Web Design

+

Stunning, user-centric designs that capture your brand and engage your audience. Mobile-first and responsive.

+ A close-up of a user interface design on a tablet. +
+
+
+ +
+
+
+
+

Web Development

+

Clean, scalable, and performant code. From landing pages to complex web applications, we build solutions that work.

+ Code on a computer screen representing web development. +
+
+
+ +
+
+
+
+

Digital Strategy

+

Data-driven strategies to boost your online presence. SEO, content marketing, and analytics to help you grow.

+ A chart showing upward trends, representing business growth. +
+
+
+
+
+
+ + +
+
+
+
+

Ready to Start a Project?

+

Let's talk about your ideas. Fill out the form below and we'll be in touch.

+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+ + + + + + + + + - + \ No newline at end of file