Previous card attempt used padding: 3rem 3.5rem which overrode the
container's padding-inline and shrank the text area from 652px to 568px,
making the heading clip worse and the card look too narrow to read.
Two fixes:
- max-width: 780px + padding: 3rem 2.5rem gives 730px text area,
comfortably containing the heading at any viewport size
- heading clamp changed from (2.4rem, 6vw, 4rem) to (2.2rem, 4.5vw, 3.25rem)
so the max rendered size stays well within the card width
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
The hero gradient (navy→blue→teal) used the same colors as the gradient
text (teal→blue), making the heading dissolve into the background.
Two fixes:
- hero__content now has a dark semi-transparent card (rgba 72% opacity)
with blur backdrop, keeping the animated gradient background visible
around it while text sits on a dark, readable surface
- --grad-text changed from teal→blue to orange→teal so the gradient
heading contrasts against the card and visually pops
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
Remove all ISP-subscriber framing (coverage areas, residential plans,
500+ customers, backbone capacity) and replace with accurate positioning
as a custom networking and managed services company.
Key changes:
- Hero: new headline and CTA focused on custom solutions
- Stats bar: Deployments, Uptime SLA, 24/7 support, response time
- Services cards: Mesh Networking, Managed Services, Access Control, IP Cameras
- Why section: founding story (tornado relief, tent deployment, charity event)
- CTA band: contact-focused instead of address lookup form
- Services page: expanded to 5 service areas with real content cards;
removed Residential/Business internet sections
- About page: full founding story, mission statement, 4-step approach
- Portfolio page: repurposed from Coverage Map; shows deployment types
including the disaster relief origin story
- Nav: Coverage → Portfolio, Get Connected → Request a Quote
- Footer: updated service links and tagline
- Router: coverage route renamed to portfolio
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
/mnt/user is a FUSE filesystem on Unraid that is unavailable inside
Docker containers. The container sees an empty /var/www/html, Apache
finds no index.php, and returns 403 because Options -Indexes is set.
All volume mount paths and git clone instructions updated to use the
cache drive path (/mnt/cache/appdata/alwisp) directly. Added an
explanatory warning note in Step 1.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
Unraid Container Builder creates directories at mount points by default,
which fails when the container already has a file at that path. Moving
000-default.conf from a bind-mount to a COPY in the Dockerfile avoids
the OCI runtime error and is the correct pattern — config files belong
in the image, only persistent data should be mounted as volumes.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
Add --pull=never to Extra Parameters so Unraid doesn't try to pull
alwisp_web:latest from Docker Hub. The image is built locally in Step 2
and only exists on the host — without this flag the container fails to
start with 'pull access denied'.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
Replace Docker Compose Manager steps with per-container Container Builder
setup. Each container (web, db, pma) gets its own fixed LAN IP via br0,
removing the need for port mapping. DB_HOST env var now points to the
database container's br0 IP instead of the internal Docker hostname.
https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd