Regenerated site from SloanOps template
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
name: Deploy to Cloudflare Pages
|
||||
|
||||
# Preview deployments are created for pushes to any non-master branch.
|
||||
# Pushing to master creates the production deployment (served on custom domain).
|
||||
# Non-master branches get a unique preview URL for client review.
|
||||
|
||||
on:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
# These will be replaced during site creation
|
||||
CLOUDFLARE_PROJECT_NAME: birdops
|
||||
CLOUDFLARE_CUSTOM_DOMAIN: bird.ops
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
name: Deploy to Cloudflare Pages
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
|
||||
- name: Deploy to Cloudflare Pages (Direct Upload)
|
||||
run: npx wrangler pages deploy . --project-name=${{ env.CLOUDFLARE_PROJECT_NAME }} --branch=${GITHUB_REF#refs/heads/}
|
||||
env:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
||||
@@ -0,0 +1,64 @@
|
||||
# BirdOps
|
||||
|
||||
A professional website created for BirdOps using SloanOps template system.
|
||||
|
||||
## Overview
|
||||
|
||||
This site was generated using the SloanOps client onboarding system and is designed for deployment to Cloudflare Pages via Gitea Actions CI/CD.
|
||||
|
||||
## Customization
|
||||
|
||||
### Content Updates
|
||||
- Edit HTML files in the root directory to update page content
|
||||
- Modify images in the `images/` directory
|
||||
- Update text content directly in HTML files
|
||||
|
||||
### Styling
|
||||
- All colors, fonts, and spacing are controlled via CSS variables in `css/style.css`
|
||||
- To rebrand: modify the `:root` variables at the top of `css/style.css`
|
||||
- Font families can be changed in the HTML `<head>` section
|
||||
|
||||
### Deployment
|
||||
Pushes to the `master` branch trigger automatic deployment to Cloudflare Pages.
|
||||
Preview deployments are created for all other branches.
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
birdops/
|
||||
├── index.html # Home page
|
||||
├── about.html # About page (if included)
|
||||
├── services.html # Services page (if included)
|
||||
├── products.html # Products page (if included)
|
||||
├── contact.html # Contact page
|
||||
├── css/
|
||||
│ └── style.css # All styles with CSS variables
|
||||
├── js/
|
||||
│ └── main.js # Interactive components (mobile menu, etc.)
|
||||
├── images/ # Image assets
|
||||
└── .gitea/
|
||||
└── workflows/
|
||||
└── deploy.yml # Cloudflare Pages CI/CD configuration
|
||||
```
|
||||
|
||||
## Deployment Setup
|
||||
|
||||
1. Ensure Cloudflare API token and account ID are configured as secrets in your Gitea repository:
|
||||
- `CF_API_TOKEN`: Your Cloudflare API token
|
||||
- `CF_ACCOUNT_ID`: Your Cloudflare account ID
|
||||
|
||||
2. Push to the repository to trigger deployment:
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Initial commit"
|
||||
git push origin master
|
||||
```
|
||||
|
||||
3. The site will be available at: https://bird.ops
|
||||
|
||||
## Maintenance
|
||||
|
||||
- Update content by editing HTML files
|
||||
- Update styling by modifying CSS variables in `css/style.css`
|
||||
- Add new images to the `images/` directory and reference them in HTML
|
||||
- For structural changes, modify the appropriate HTML template
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="About BirdOps - ">
|
||||
<title>About | BirdOps</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter, sans-serif:wght@400;600;700&family=Inter, sans-serif:wght@400;500;600&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="logo" aria-label="BirdOps - Home">
|
||||
<span class="logo-text">BirdOps BirdUp</span>
|
||||
</a>
|
||||
<nav class="main-nav" aria-label="Main navigation">
|
||||
<button class="nav-toggle" aria-expanded="false" aria-controls="nav-menu" aria-label="Toggle navigation">
|
||||
<span class="hamburger"></span>
|
||||
</button>
|
||||
<ul id="nav-menu" class="nav-list">
|
||||
<li><a href="/" class="nav-link">Home</a></li>
|
||||
<li><a href="/about.html" class="nav-link active">About</a></li>
|
||||
<li><a href="/services.html" class="nav-link">Services</a></li>
|
||||
<li><a href="/products.html" class="nav-link">Products</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="site-main">
|
||||
<section class="page-hero" aria-labelledby="page-heading">
|
||||
<div class="container">
|
||||
<h1 id="page-heading">About BirdOps</h1>
|
||||
<p class="page-subheadline"></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="about-content" aria-labelledby="about-heading">
|
||||
<div class="container">
|
||||
<div class="about-grid">
|
||||
<div class="about-text">
|
||||
<h2 id="about-heading"></h2>
|
||||
<div class="about-body">
|
||||
</div>
|
||||
</div>
|
||||
<div class="about-image">
|
||||
<img src="images/" alt="" loading="lazy">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="values-section">
|
||||
<h2></h2>
|
||||
<div class="values-grid">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="team-section" aria-labelledby="team-heading">
|
||||
<h2 id="team-heading"></h2>
|
||||
<div class="team-grid">
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="site-footer" role="contentinfo">
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
<div class="footer-brand">
|
||||
<p class="footer-logo">BirdOps BirdUp</p>
|
||||
<p class="footer-tagline"></p>
|
||||
</div>
|
||||
<nav class="footer-nav" aria-label="Footer navigation">
|
||||
<h3>Quick Links</h3>
|
||||
<ul>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/about.html">About</a></li>
|
||||
<li><a href="/services.html">Services</a></li><li><a href="/products.html">Products</a></li> </ul>
|
||||
</nav>
|
||||
<address class="footer-contact" aria-label="Contact information">
|
||||
<h3>Contact</h3>
|
||||
<p>1000 business center drive</p>
|
||||
<p><a href="tel:4074562683">999-999-9999</a></p>
|
||||
<p><a href="mailto:nightehawk@gmail.com">nightehawk@gmail.com</a></p>
|
||||
</address>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BirdOps. All rights reserved.</p>
|
||||
<p class="footer-credits">Hosted by <a href="https://sloanops.com" target="_blank" rel="noopener">SloanOps</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Contact BirdOps - ">
|
||||
<title>Contact | BirdOps</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter, sans-serif:wght@400;600;700&family=Inter, sans-serif:wght@400;500;600&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="logo" aria-label="BirdOps - Home">
|
||||
<span class="logo-text">BirdOps BirdUp</span>
|
||||
</a>
|
||||
<nav class="main-nav" aria-label="Main navigation">
|
||||
<button class="nav-toggle" aria-expanded="false" aria-controls="nav-menu" aria-label="Toggle navigation">
|
||||
<span class="hamburger"></span>
|
||||
</button>
|
||||
<ul id="nav-menu" class="nav-list">
|
||||
<li><a href="/" class="nav-link">Home</a></li>
|
||||
<li><a href="/services.html" class="nav-link">Services</a></li><li><a href="/products.html" class="nav-link">Products</a></li> <li><a href="/contact.html" class="nav-link active">Contact</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="site-main">
|
||||
<section class="page-hero" aria-labelledby="page-heading">
|
||||
<div class="container">
|
||||
<h1 id="page-heading">Contact Us</h1>
|
||||
<p class="page-subheadline"></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="contact-section" aria-labelledby="contact-heading">
|
||||
<div class="container">
|
||||
<div class="contact-grid">
|
||||
<div class="contact-info">
|
||||
<h2 id="contact-heading"></h2>
|
||||
<p></p>
|
||||
|
||||
<div class="contact-methods">
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-form-wrapper">
|
||||
<h2></h2>
|
||||
<form id="contact-form" class="contact-form" action="https://n8n.sloanops.com/webhook/client-contact" method="POST">
|
||||
<input type="hidden" name="form_type" value="client-contact">
|
||||
<input type="hidden" name="site_key" value="birdops">
|
||||
<input type="hidden" name="_subject" value="BirdOps">
|
||||
<input type="hidden" name="_next" value="">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="name">Name <span class="required" aria-hidden="true">*</span></label>
|
||||
<input type="text" id="name" name="name" required autocomplete="name">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="email">Email <span class="required" aria-hidden="true">*</span></label>
|
||||
<input type="email" id="email" name="email" required autocomplete="email">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="phone">Phone</label>
|
||||
<input type="tel" id="phone" name="phone" autocomplete="tel">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="subject">Subject</label>
|
||||
<select id="subject" name="subject">
|
||||
<option value="">Select a topic</option>
|
||||
<option value="General Inquiry">General Inquiry</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="message">Message <span class="required" aria-hidden="true">*</span></label>
|
||||
<textarea id="message" name="message" rows="6" required placeholder="How can we help you?"></textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary btn-full-width">birdup</button>
|
||||
|
||||
<p class="form-note" aria-live="polite"></p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="site-footer" role="contentinfo">
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
<div class="footer-brand">
|
||||
<p class="footer-logo">BirdOps BirdUp</p>
|
||||
<p class="footer-tagline"></p>
|
||||
</div>
|
||||
<nav class="footer-nav" aria-label="Footer navigation">
|
||||
<h3>Quick Links</h3>
|
||||
<ul>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/services.html">Services</a></li><li><a href="/products.html">Products</a></li> <li><a href="/contact.html">Contact</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<address class="footer-contact" aria-label="Contact information">
|
||||
<h3>Contact</h3>
|
||||
<p>1000 business center drive</p>
|
||||
<p><a href="tel:4074562683">999-999-9999</a></p>
|
||||
<p><a href="mailto:nightehawk@gmail.com">nightehawk@gmail.com</a></p>
|
||||
</address>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BirdOps. All rights reserved.</p>
|
||||
<p class="footer-credits">Hosted by <a href="https://sloanops.com" target="_blank" rel="noopener">SloanOps</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
+1201
File diff suppressed because it is too large
Load Diff
+92
@@ -0,0 +1,92 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="BirdUp for BirdOps">
|
||||
<title>BirdOps</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter, sans-serif:wght@400;600;700&family=Inter, sans-serif:wght@400;500;600&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="logo" aria-label="BirdOps - Home">
|
||||
<span class="logo-text">BirdOps BirdUp</span>
|
||||
</a>
|
||||
<nav class="main-nav" aria-label="Main navigation">
|
||||
<button class="nav-toggle" aria-expanded="false" aria-controls="nav-menu" aria-label="Toggle navigation">
|
||||
<span class="hamburger"></span>
|
||||
</button>
|
||||
<ul id="nav-menu" class="nav-list">
|
||||
<li><a href="/" class="nav-link">Home</a></li>
|
||||
<li><a href="/services.html" class="nav-link">Services</a></li>
|
||||
<li><a href="/products.html" class="nav-link">Products</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="site-main">
|
||||
<!-- Hero Section -->
|
||||
<section class="hero" aria-labelledby="hero-heading">
|
||||
<div class="container">
|
||||
<h1 id="hero-heading">BirdUp with BirdOps</h1>
|
||||
<p class="hero-subheadline">Birds da word</p>
|
||||
<a href="" class="btn btn-primary">BirdOps</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Value Props / Features -->
|
||||
<section class="features" aria-labelledby="features-heading">
|
||||
<div class="container">
|
||||
<h2 id="features-heading" class="section-title"></h2>
|
||||
<div class="features-grid">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- About Preview -->
|
||||
|
||||
<!-- Testimonials -->
|
||||
<section class="testimonials" aria-labelledby="testimonials-heading">
|
||||
<div class="container">
|
||||
<h2 id="testimonials-heading" class="section-title">What Our Clients Say</h2>
|
||||
<div class="testimonials-grid">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="site-footer" role="contentinfo">
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
<div class="footer-brand">
|
||||
<p class="footer-logo">BirdOps BirdUp</p>
|
||||
<p class="footer-tagline"></p>
|
||||
</div>
|
||||
<nav class="footer-nav" aria-label="Footer navigation">
|
||||
<h3>Quick Links</h3>
|
||||
<ul>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/services.html">Services</a></li><li><a href="/products.html">Products</a></li> </ul>
|
||||
</nav>
|
||||
<address class="footer-contact" aria-label="Contact information">
|
||||
<h3>Contact</h3>
|
||||
<p>1000 business center drive</p>
|
||||
<p><a href="tel:4074562683">999-999-9999</a></p>
|
||||
<p><a href="mailto:nightehawk@gmail.com">nightehawk@gmail.com</a></p>
|
||||
</address>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BirdOps. All rights reserved.</p>
|
||||
<p class="footer-credits">Hosted by <a href="https://sloanops.com" target="_blank" rel="noopener">SloanOps</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
+153
@@ -0,0 +1,153 @@
|
||||
// Mobile Menu Toggle
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const navToggle = document.querySelector('.nav-toggle');
|
||||
const navMenu = document.getElementById('nav-menu');
|
||||
|
||||
if (navToggle && navMenu) {
|
||||
navToggle.addEventListener('click', function() {
|
||||
const expanded = this.getAttribute('aria-expanded') === 'true' || false;
|
||||
this.setAttribute('aria-expanded', !expanded);
|
||||
navMenu.classList.toggle('active');
|
||||
});
|
||||
}
|
||||
|
||||
// Close mobile menu when clicking outside
|
||||
document.addEventListener('click', function(event) {
|
||||
if (navToggle && navMenu) {
|
||||
const isClickInsideNav = navToggle.contains(event.target) || navMenu.contains(event.target);
|
||||
if (!isClickInsideNav && navMenu.classList.contains('active')) {
|
||||
navToggle.setAttribute('aria-expanded', 'false');
|
||||
navMenu.classList.remove('active');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// FAQ Accordion
|
||||
const faqItems = document.querySelectorAll('.faq-item');
|
||||
faqItems.forEach(item => {
|
||||
const question = item.querySelector('.faq-question');
|
||||
if (question) {
|
||||
question.addEventListener('click', () => {
|
||||
const isActive = item.classList.contains('active');
|
||||
// Close all items
|
||||
faqItems.forEach(i => i.classList.remove('active'));
|
||||
// Open clicked item if it wasn't active
|
||||
if (!isActive) {
|
||||
item.classList.add('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Smooth scrolling for anchor links
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function(e) {
|
||||
const target = document.querySelector(this.getAttribute('href'));
|
||||
if (target) {
|
||||
e.preventDefault();
|
||||
target.scrollIntoView({
|
||||
behavior: 'smooth',
|
||||
block: 'start'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Back to top button
|
||||
const backToTopButton = document.createElement('button');
|
||||
backToTopButton.innerHTML = '▲'; // Up arrow
|
||||
backToTopButton.className = 'back-to-top';
|
||||
backToTopButton.setAttribute('aria-label', 'Back to top');
|
||||
document.body.appendChild(backToTopButton);
|
||||
|
||||
backToTopButton.addEventListener('click', () => {
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
});
|
||||
|
||||
window.addEventListener('scroll', () => {
|
||||
if (window.pageYOffset > 300) {
|
||||
backToTopButton.classList.add('visible');
|
||||
} else {
|
||||
backToTopButton.classList.remove('visible');
|
||||
}
|
||||
});
|
||||
|
||||
// Send contact messages to the configured n8n webhook without exposing any mail credentials.
|
||||
const forms = document.querySelectorAll('.contact-form');
|
||||
forms.forEach(form => {
|
||||
form.addEventListener('submit', async function(e) {
|
||||
e.preventDefault();
|
||||
const formNote = this.querySelector('.form-note');
|
||||
const submitButton = this.querySelector('button[type="submit"]');
|
||||
if (submitButton) submitButton.disabled = true;
|
||||
if (formNote) formNote.textContent = 'Sending…';
|
||||
|
||||
try {
|
||||
const response = await fetch(this.action, {
|
||||
method: 'POST',
|
||||
body: new FormData(this),
|
||||
headers: { 'Accept': 'application/json' }
|
||||
});
|
||||
if (!response.ok) throw new Error('Webhook submission failed');
|
||||
if (formNote) {
|
||||
formNote.textContent = 'Thank you for your message! We will get back to you soon.';
|
||||
formNote.style.color = '#10b981';
|
||||
}
|
||||
this.reset();
|
||||
} catch (error) {
|
||||
if (formNote) {
|
||||
formNote.textContent = 'We could not send your message. Please try again or contact us directly.';
|
||||
formNote.style.color = '#dc2626';
|
||||
}
|
||||
} finally {
|
||||
if (submitButton) submitButton.disabled = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Tab functionality for product categories
|
||||
const tabButtons = document.querySelectorAll('.category-tab');
|
||||
tabButtons.forEach(button => {
|
||||
button.addEventListener('click', () => {
|
||||
const tabSlug = button.getAttribute('aria-controls');
|
||||
const tabPanel = document.getElementById(tabSlug);
|
||||
|
||||
// Remove active class from all tabs and panels
|
||||
tabButtons.forEach(btn => btn.classList.remove('active'));
|
||||
document.querySelectorAll('.category-panel').forEach(panel => panel.classList.remove('active'));
|
||||
|
||||
// Add active class to clicked tab and corresponding panel
|
||||
button.classList.add('active');
|
||||
if (tabPanel) {
|
||||
tabPanel.classList.add('active');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Header scroll effect
|
||||
const header = document.querySelector('.site-header');
|
||||
let lastScroll = 0;
|
||||
|
||||
window.addEventListener('scroll', () => {
|
||||
const currentScroll = window.pageYOffset;
|
||||
|
||||
if (currentScroll <= 0) {
|
||||
header.classList.remove('scroll-up');
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentScroll > lastScroll && !header.classList.contains('scroll-down')) {
|
||||
// Scrolling down
|
||||
header.classList.remove('scroll-up');
|
||||
header.classList.add('scroll-down');
|
||||
} else if (currentScroll < lastScroll && header.classList.contains('scroll-down')) {
|
||||
// Scrolling up
|
||||
header.classList.remove('scroll-down');
|
||||
header.classList.add('scroll-up');
|
||||
}
|
||||
lastScroll = currentScroll;
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="BirdOps Products - ">
|
||||
<title>Products | BirdOps</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter, sans-serif:wght@400;600;700&family=Inter, sans-serif:wght@400;500;600&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="logo" aria-label="BirdOps - Home">
|
||||
<span class="logo-text">BirdOps BirdUp</span>
|
||||
</a>
|
||||
<nav class="main-nav" aria-label="Main navigation">
|
||||
<button class="nav-toggle" aria-expanded="false" aria-controls="nav-menu" aria-label="Toggle navigation">
|
||||
<span class="hamburger"></span>
|
||||
</button>
|
||||
<ul id="nav-menu" class="nav-list">
|
||||
<li><a href="/" class="nav-link">Home</a></li>
|
||||
<li><a href="/services.html" class="nav-link">Services</a></li> <li><a href="/products.html" class="nav-link active">Products</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="site-main">
|
||||
<section class="page-hero" aria-labelledby="page-heading">
|
||||
<div class="container">
|
||||
<h1 id="page-heading">Our Products</h1>
|
||||
<p class="page-subheadline">birds for your needs</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="product-categories" aria-labelledby="categories-heading">
|
||||
<div class="container">
|
||||
<nav class="category-tabs" aria-label="Product categories">
|
||||
<h2 id="categories-heading" class="visually-hidden">Product Categories</h2>
|
||||
<ul role="tablist">
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="category-panels">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="site-footer" role="contentinfo">
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
<div class="footer-brand">
|
||||
<p class="footer-logo">BirdOps BirdUp</p>
|
||||
<p class="footer-tagline"></p>
|
||||
</div>
|
||||
<nav class="footer-nav" aria-label="Footer navigation">
|
||||
<h3>Quick Links</h3>
|
||||
<ul>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/services.html">Services</a></li> <li><a href="/products.html">Products</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<address class="footer-contact" aria-label="Contact information">
|
||||
<h3>Contact</h3>
|
||||
<p>1000 business center drive</p>
|
||||
<p><a href="tel:4074562683">999-999-9999</a></p>
|
||||
<p><a href="mailto:nightehawk@gmail.com">nightehawk@gmail.com</a></p>
|
||||
</address>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BirdOps. All rights reserved.</p>
|
||||
<p class="footer-credits">Hosted by <a href="https://sloanops.com" target="_blank" rel="noopener">SloanOps</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="BirdOps Services - ">
|
||||
<title>Services | BirdOps</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter, sans-serif:wght@400;600;700&family=Inter, sans-serif:wght@400;500;600&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="logo" aria-label="BirdOps - Home">
|
||||
<span class="logo-text">BirdOps BirdUp</span>
|
||||
</a>
|
||||
<nav class="main-nav" aria-label="Main navigation">
|
||||
<button class="nav-toggle" aria-expanded="false" aria-controls="nav-menu" aria-label="Toggle navigation">
|
||||
<span class="hamburger"></span>
|
||||
</button>
|
||||
<ul id="nav-menu" class="nav-list">
|
||||
<li><a href="/" class="nav-link">Home</a></li>
|
||||
<li><a href="/services.html" class="nav-link active">Services</a></li>
|
||||
<li><a href="/products.html" class="nav-link">Products</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="site-main">
|
||||
<section class="page-hero" aria-labelledby="page-heading">
|
||||
<div class="container">
|
||||
<h1 id="page-heading">Our Services</h1>
|
||||
<p class="page-subheadline"></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="services-list" aria-labelledby="services-heading">
|
||||
<div class="container">
|
||||
<h2 id="services-heading" class="section-title"></h2>
|
||||
<div class="services-grid">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="process-section" aria-labelledby="process-heading">
|
||||
<div class="container">
|
||||
<h2 id="process-heading" class="section-title"></h2>
|
||||
<div class="process-steps">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="site-footer" role="contentinfo">
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
<div class="footer-brand">
|
||||
<p class="footer-logo">BirdOps BirdUp</p>
|
||||
<p class="footer-tagline"></p>
|
||||
</div>
|
||||
<nav class="footer-nav" aria-label="Footer navigation">
|
||||
<h3>Quick Links</h3>
|
||||
<ul>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/services.html">Services</a></li>
|
||||
<li><a href="/products.html">Products</a></li> </ul>
|
||||
</nav>
|
||||
<address class="footer-contact" aria-label="Contact information">
|
||||
<h3>Contact</h3>
|
||||
<p>1000 business center drive</p>
|
||||
<p><a href="tel:4074562683">999-999-9999</a></p>
|
||||
<p><a href="mailto:nightehawk@gmail.com">nightehawk@gmail.com</a></p>
|
||||
</address>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BirdOps. All rights reserved.</p>
|
||||
<p class="footer-credits">Hosted by <a href="https://sloanops.com" target="_blank" rel="noopener">SloanOps</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user