Files
claudetools/projects/radio-show/website/src/components/home/HeroSection.astro
Mike Swanson 2c3036a0c9 Reorganize repo: compartmentalize scripts by client/project
Move 150+ scripts from root and scripts/ into client/project directories:
- clients/dataforth/scripts/ (110 files: AD2, sync, SSH, DB, DOS scripts)
- clients/bg-builders/scripts/ (14 files: Lesley mgmt, Exchange, termination)
- clients/internal-infrastructure/scripts/ (10 files: GDAP, Gitea, backups)
- projects/msp-tools/scripts/ (9 files: CIPP, MSP onboarding, Datto)
- projects/gururmm-agent/scripts/ (3 files: API test, JWT, record counts)
- clients/glaztech/scripts/ (1 file: CentraStage removal)

Also reorganized:
- VPN scripts → infrastructure/vpn-configs/
- Retrieved API/JS files → api/
- Forum posts → projects/community-forum/forum-posts/
- SSH docs → clients/internal-infrastructure/docs/
- NWTOC/CTONW docs → projects/wrightstown-smarthome/docs/
- ACG website files → projects/internal/acg-website-2025/
- Dataforth docs → clients/dataforth/docs/
- schema-retrieved.sql → docs/database/

Deleted 24 tmp_*.ps1 one-off debug scripts (preserved in git history).
Root reduced from 220+ files to 62 items (docs + directories only).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:15:07 -07:00

340 lines
8.6 KiB
Plaintext

---
---
<section class="hero">
<div class="hero-bg-effects">
<div class="hero-glow hero-glow--primary"></div>
<div class="hero-glow hero-glow--secondary"></div>
<div class="hero-ring"></div>
</div>
<div class="hero-content container">
<span class="badge hero-badge">Returning 2026</span>
<h1 class="hero-title">
<span class="hero-title__line hero-title__line--1">The Computer</span>
<span class="hero-title__line hero-title__line--2">Guru Show</span>
</h1>
<p class="hero-tagline">Helping you deal with all of your technology needs while treating you like a person in the process.</p>
<p class="hero-description">
Straight answers without the jargon or the drama. Hosted by Mike Swanson
from Tucson, Arizona -- over 20 years of solving tech problems for home users
and businesses alike. Tune in Saturdays at 9am on KVOI or call in at 520-790-2040.
</p>
<div class="hero-actions">
<a href="/episodes" class="btn btn--primary btn--lg">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"></circle>
<polygon points="10 8 16 12 10 16 10 8" fill="currentColor" stroke="none"></polygon>
</svg>
Browse Episodes
</a>
<a href="/subscribe" class="btn btn--outline btn--lg">Subscribe</a>
</div>
</div>
<div class="hero-scroll-hint" aria-hidden="true">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="7 13 12 18 17 13"></polyline>
<polyline points="7 6 12 11 17 6"></polyline>
</svg>
</div>
</section>
<style>
.hero {
min-height: calc(100vh - 64px);
display: flex;
align-items: center;
position: relative;
overflow: hidden;
background:
linear-gradient(135deg, hsl(220 30% 6% / 0.95), hsl(200 40% 8% / 0.9)),
radial-gradient(ellipse at 20% 50%, hsl(200 85% 55% / 0.12), transparent 50%),
radial-gradient(ellipse at 80% 20%, hsl(270 60% 50% / 0.08), transparent 50%);
}
[data-theme="light"] .hero {
background:
linear-gradient(135deg, hsl(220 20% 95% / 0.95), hsl(200 30% 92% / 0.9)),
radial-gradient(ellipse at 20% 50%, hsl(200 85% 55% / 0.08), transparent 50%),
radial-gradient(ellipse at 80% 20%, hsl(270 60% 50% / 0.05), transparent 50%);
}
/* Background effects */
.hero-bg-effects {
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
}
.hero-glow {
position: absolute;
border-radius: 50%;
filter: blur(80px);
opacity: 0.4;
}
.hero-glow--primary {
width: 600px;
height: 600px;
top: -200px;
right: -100px;
background: radial-gradient(circle, hsl(200 85% 55% / 0.15), transparent 70%);
animation: glowDrift 8s ease-in-out infinite alternate;
}
.hero-glow--secondary {
width: 400px;
height: 400px;
bottom: -100px;
left: -50px;
background: radial-gradient(circle, hsl(270 60% 50% / 0.1), transparent 70%);
animation: glowDrift 10s ease-in-out infinite alternate-reverse;
}
.hero-ring {
position: absolute;
width: 500px;
height: 500px;
top: 50%;
right: 5%;
transform: translate(0, -50%);
border: 1px solid hsl(200 85% 55% / 0.08);
border-radius: 50%;
animation: ringPulse 4s ease-in-out infinite;
}
.hero-ring::before {
content: '';
position: absolute;
inset: 40px;
border: 1px solid hsl(200 85% 55% / 0.06);
border-radius: 50%;
animation: ringPulse 4s ease-in-out infinite 0.5s;
}
.hero-ring::after {
content: '';
position: absolute;
inset: 80px;
border: 1px solid hsl(200 85% 55% / 0.04);
border-radius: 50%;
animation: ringPulse 4s ease-in-out infinite 1s;
}
[data-theme="light"] .hero-glow--primary {
background: radial-gradient(circle, hsl(200 85% 55% / 0.08), transparent 70%);
}
[data-theme="light"] .hero-glow--secondary {
background: radial-gradient(circle, hsl(270 60% 50% / 0.06), transparent 70%);
}
[data-theme="light"] .hero-ring {
border-color: hsl(200 85% 55% / 0.12);
}
[data-theme="light"] .hero-ring::before {
border-color: hsl(200 85% 55% / 0.08);
}
[data-theme="light"] .hero-ring::after {
border-color: hsl(200 85% 55% / 0.05);
}
/* Content */
.hero-content {
position: relative;
z-index: 1;
max-width: 720px;
}
.hero-badge {
animation: fadeSlideIn 0.6s ease-out both;
}
.hero-title {
margin-top: var(--space-6);
display: flex;
flex-direction: column;
gap: 0;
}
.hero-title__line {
display: block;
font-size: clamp(2.5rem, 6vw, 5rem);
font-weight: 800;
line-height: 1.05;
background: linear-gradient(135deg, hsl(220 10% 92%) 30%, var(--color-accent) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-title__line--1 {
animation: fadeSlideIn 0.6s ease-out 0.15s both;
}
.hero-title__line--2 {
animation: fadeSlideIn 0.6s ease-out 0.3s both;
background: linear-gradient(135deg, var(--color-accent) 0%, hsl(220 70% 65%) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
[data-theme="light"] .hero-title__line {
background: linear-gradient(135deg, hsl(220 20% 15%) 30%, hsl(200 85% 35%) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
[data-theme="light"] .hero-title__line--2 {
background: linear-gradient(135deg, hsl(200 85% 35%) 0%, hsl(220 70% 40%) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
[data-theme="light"] .hero-tagline {
color: hsl(200 85% 35%);
}
[data-theme="light"] .hero-description {
color: hsl(220 15% 35%);
}
.hero-tagline {
font-size: var(--text-xl);
color: var(--color-accent);
font-weight: 600;
margin-top: var(--space-4);
animation: fadeSlideIn 0.6s ease-out 0.45s both;
letter-spacing: 0.02em;
}
.hero-description {
font-size: var(--text-lg);
color: var(--color-text-secondary);
margin-top: var(--space-4);
line-height: 1.7;
max-width: 560px;
animation: fadeSlideIn 0.6s ease-out 0.6s both;
}
.hero-actions {
display: flex;
gap: var(--space-4);
margin-top: var(--space-8);
flex-wrap: wrap;
animation: fadeSlideIn 0.6s ease-out 0.75s both;
}
.btn--lg {
padding: var(--space-4) var(--space-8);
font-size: var(--text-base);
}
.btn--outline {
background: transparent;
color: hsl(220 10% 92%);
border: 1.5px solid hsl(200 85% 55% / 0.5);
transition: all var(--transition-fast);
}
.btn--outline:hover {
border-color: var(--color-accent);
color: var(--color-accent);
background: hsl(200 85% 55% / 0.08);
}
[data-theme="light"] .btn--outline {
color: hsl(220 20% 25%);
border-color: hsl(200 85% 42% / 0.5);
}
[data-theme="light"] .btn--outline:hover {
border-color: hsl(200 85% 42%);
color: hsl(200 85% 42%);
background: hsl(200 85% 42% / 0.08);
}
/* Scroll hint */
.hero-scroll-hint {
position: absolute;
bottom: var(--space-8);
left: 50%;
transform: translateX(-50%);
color: var(--color-text-muted);
animation: bounceDown 2s ease-in-out infinite;
z-index: 1;
}
/* Keyframes */
@keyframes fadeSlideIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes glowDrift {
from {
transform: translate(0, 0) scale(1);
}
to {
transform: translate(30px, -20px) scale(1.1);
}
}
@keyframes ringPulse {
0%, 100% {
opacity: 0.3;
transform: translate(0, -50%) scale(1);
}
50% {
opacity: 0.6;
transform: translate(0, -50%) scale(1.05);
}
}
@keyframes bounceDown {
0%, 100% {
transform: translateX(-50%) translateY(0);
opacity: 0.4;
}
50% {
transform: translateX(-50%) translateY(8px);
opacity: 0.8;
}
}
@media (max-width: 768px) {
.hero {
min-height: auto;
padding-block: var(--space-16) var(--space-24);
}
.hero-ring {
width: 300px;
height: 300px;
right: -80px;
opacity: 0.5;
}
.hero-scroll-hint {
display: none;
}
}
@media (max-width: 480px) {
.hero-title__line {
font-size: clamp(2rem, 10vw, 3rem);
}
}
</style>