- Docker Compose orchestrating PHP 8.2/Apache web container and MySQL 8.0 - Dockerfile with GD, PDO, MySQLi extensions and security hardening - Apache vhost with mod_rewrite, deflate, expires, and security headers - PHP config with OPcache enabled and display_errors off - MySQL init schema (contacts, coverage_zones tables) - Front-controller PHP router (index.php → pages/) - Responsive homepage: hero, stats bar, services cards, why section, coverage CTA - Stub pages: services, coverage, about, contact (with working form skeleton), 404 - CSS design system using brand palette from logo (navy #0d1b3e → teal #00bcd4 + orange #f57c00 accents) - JS: nav scroll/mobile toggle, IntersectionObserver counter animation, scroll reveal https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
46 lines
2.2 KiB
PHP
46 lines
2.2 KiB
PHP
<!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="Alabama WISP – Mesh Network Solutions. High-speed wireless internet and enterprise networking for rural and underserved communities.">
|
||
<title>ALWISP – Mesh Network Solutions</title>
|
||
|
||
<!-- Preconnect for performance -->
|
||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
|
||
<!-- Google Fonts: Inter (body) + Space Grotesk (headings) -->
|
||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
|
||
|
||
<link rel="stylesheet" href="/css/style.css">
|
||
<link rel="icon" href="/assets/favicon.ico" type="image/x-icon">
|
||
</head>
|
||
<body>
|
||
|
||
<!-- ===================== NAV ===================== -->
|
||
<header class="site-header" id="site-header">
|
||
<nav class="nav container">
|
||
<a href="/" class="nav__logo" aria-label="ALWISP Home">
|
||
<img src="/assets/logo-condensed.png" alt="ALWISP Logo" class="nav__logo-img" onerror="this.style.display='none'">
|
||
<span class="nav__logo-text">AL<span class="accent">WISP</span></span>
|
||
</a>
|
||
|
||
<button class="nav__toggle" id="nav-toggle" aria-label="Open menu" aria-expanded="false" aria-controls="nav-menu">
|
||
<span class="nav__toggle-bar"></span>
|
||
<span class="nav__toggle-bar"></span>
|
||
<span class="nav__toggle-bar"></span>
|
||
</button>
|
||
|
||
<ul class="nav__menu" id="nav-menu" role="menubar">
|
||
<li role="none"><a href="/" class="nav__link" role="menuitem">Home</a></li>
|
||
<li role="none"><a href="/services" class="nav__link" role="menuitem">Services</a></li>
|
||
<li role="none"><a href="/coverage" class="nav__link" role="menuitem">Coverage</a></li>
|
||
<li role="none"><a href="/about" class="nav__link" role="menuitem">About</a></li>
|
||
<li role="none"><a href="/contact" class="nav__link nav__link--cta" role="menuitem">Get Connected</a></li>
|
||
</ul>
|
||
</nav>
|
||
</header>
|
||
|
||
<main id="main-content">
|