rawreel/index.html

418 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Raw Reel Social</title>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<style>
/* RESET & BOX-SIZING */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* BASIC BODY SETUP: BLACK BACKDROP */
html, body {
width: 100%;
height: 100%;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: #fff;
background: #000; /* Plain black base */
}
body {
position: relative;
z-index: 0;
}
/* STARFIELD: behind the grid (z-index: 0) */
#starfield {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
background: transparent;
}
/*
PINK GRID: body::before at z-index: 1
- sized at 300% so it always fully covers the screen, even when rotated.
- 0.5px line thickness
- "scrollGrid" (moves background up)
- "waveGrid" (gentle 3D rocking motion)
*/
body::before {
content: "";
position: fixed;
top: 0;
left: 0;
width: 300%;
height: 300%;
z-index: 1;
pointer-events: none;
/* Pink lines at 0.5px thickness, spaced every 50px */
background:
repeating-linear-gradient(
0deg,
rgba(255,0,212,1) 0px,
rgba(255,0,212,1) 0.5px,
transparent 0.5px,
transparent 50px
),
repeating-linear-gradient(
90deg,
rgba(255,0,212,1) 0px,
rgba(255,0,212,1) 0.5px,
transparent 0.5px,
transparent 50px
);
background-size: 100% 100%, 100% 100%;
/* Well rotate it a bit and shift it so the grid lines fill everything */
transform-origin: center center;
/* Combine two animations: upward scroll + wave rocking */
animation:
scrollGrid 30s linear infinite,
waveGrid 6s ease-in-out infinite;
}
/* Scroll upward (adjust 1200 if you want it faster/slower) */
@keyframes scrollGrid {
0% { background-position: 0 0, 0 0; }
100% { background-position: 0 -1200px, 0 -1200px; }
}
/*
Wave effect:
- we use perspective so the rotateX/rotateZ appear more “3D”.
- at 50% we tilt the grid more aggressively, then return at 100%.
*/
@keyframes waveGrid {
0% {
transform: perspective(800px)
rotate(-15deg)
translate(-50%, -50%)
rotateX(0deg)
rotateZ(0deg);
}
50% {
transform: perspective(800px)
rotate(-15deg)
translate(-50%, -50%)
rotateX(15deg)
rotateZ(12deg);
}
100% {
transform: perspective(800px)
rotate(-15deg)
translate(-50%, -50%)
rotateX(0deg)
rotateZ(0deg);
}
}
/* MAIN CONTAINER on top of everything */
.container {
position: relative;
z-index: 2;
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
width: 100%;
height: 100vh; /* Full viewport */
text-align: center;
padding: 1rem;
}
/* LOGO */
.logo {
max-width: 90%;
max-height: 200px;
transition: transform 0.4s ease;
filter: drop-shadow(0 0 10px rgba(255,255,255,0.5));
}
.logo:hover {
transform: scale(1.05);
}
/* TAGLINE */
.tagline {
font-size: 2rem;
font-weight: 700;
line-height: 1.2;
text-shadow: 0 0 5px #fff, 0 0 10px magenta, 0 0 15px cyan;
animation: flicker 3s infinite;
margin: 0 0 0.5rem;
}
@keyframes flicker {
0% { opacity: 1; }
20% { opacity: 0.8; }
22% { opacity: 1; }
63% { opacity: 1; }
64% { opacity: 0.9; }
65% { opacity: 1; }
80% { opacity: 1; }
82% { opacity: 0.8; }
83% { opacity: 1; }
100% { opacity: 1; }
}
/* VIDEO */
.video-container {
width: 80%;
max-width: 800px;
max-height: 50vh;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 8px 20px rgba(0,0,0,0.5), 0 0 10px rgba(255,255,255,0.2);
}
.video-container video {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
border-radius: 12px;
}
/* CONTACT INFO */
.contact-info {
line-height: 1.4;
}
.contact-info h2,
.contact-info h3 {
margin: 0.2rem 0;
text-shadow: 0 0 3px #fff, 0 0 5px magenta;
}
/* CTA BUTTON */
.cta-btn {
display: inline-block;
text-decoration: none;
color: #fff;
background: linear-gradient(45deg, #ff00d4, #00f0ff);
border: none;
padding: 1rem 1.5rem;
font-size: 1rem;
font-weight: 600;
border-radius: 30px;
cursor: pointer;
box-shadow: 0 0 10px rgba(255,0,212,0.7), 0 0 20px rgba(0,240,255,0.5);
transition: transform 0.3s ease, box-shadow 0.3s ease, opacity 0.3s ease;
}
.cta-btn:hover {
transform: scale(1.05);
box-shadow: 0 0 15px rgba(255,0,212,1), 0 0 30px rgba(0,240,255,0.8);
opacity: 0.9;
}
/* CTA SECTION HEADING */
.cta-heading {
font-size: 1.5rem;
margin: 1.5rem 0 0.5rem;
text-shadow: 0 0 5px #fff, 0 0 10px magenta;
}
/*
CTA BUTTONS
- .cta-btn is the shared style
- .call-btn has the phone shape
- .mail-btn has the circle+envelope shape
*/
.cta-buttons {
display: flex;
gap: 1rem;
flex-wrap: wrap; /* so they wrap on small screens */
justify-content: center;
align-items: center;
}
.cta-btn {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
color: #fff;
background: linear-gradient(45deg, #ff00d4, #00f0ff);
border: none;
padding: 1rem 2.5rem 1rem 3rem; /* extra left padding for icon space */
font-size: 1rem;
font-weight: 600;
border-radius: 30px;
cursor: pointer;
box-shadow: 0 0 10px rgba(255,0,212,0.7), 0 0 20px rgba(0,240,255,0.5);
transition: transform 0.3s ease, box-shadow 0.3s ease, opacity 0.3s ease;
}
.cta-btn:hover {
transform: scale(1.05);
box-shadow: 0 0 15px rgba(255,0,212,1), 0 0 30px rgba(0,240,255,0.8);
opacity: 0.9;
}
/* PHONE BUTTON: add a phone icon via the :before pseudo-element */
.call-btn::before {
content: "";
position: absolute;
left: 1rem; /* place icon near left padding */
width: 16px;
height: 16px;
background: transparent;
border: 2px solid #fff;
border-radius: 2px 2px 12px 2px; /* shape the handset corners */
transform: rotate(-45deg);
box-shadow:
0 4px 0 0 #fff, /* mouthpiece & earpiece lumps via shadow */
0 -4px 0 0 #fff;
}
/* EMAIL BUTTON: circle with envelope inside */
.mail-btn::before {
/* Circle (black fill + white border) */
content: "";
position: absolute;
left: 1rem;
top: 50%;
transform: translateY(-50%);
width: 20px;
height: 20px;
background: #000; /* black interior */
border-radius: 50%;
border: 2px solid #fff; /* white ring */
}
.mail-btn::after {
/* White envelope drawn inside the black circle */
content: "";
position: absolute;
left: calc(1rem + 4px); /* a bit right of circle edge */
top: calc(50% - 4px); /* roughly center the envelope vertically */
width: 12px;
height: 8px;
background: transparent;
border: 2px solid #fff;
border-radius: 2px;
box-sizing: border-box;
/*
Use two inset shadows to draw the diagonal lines from the top corners
down to the bottom center, forming an envelope "flap."
*/
box-shadow:
inset -5px -3px 0 0 #fff, /* left diagonal */
inset 5px -3px 0 0 #fff; /* right diagonal */
}
/* MOBILE TWEAKS */
@media (max-width: 480px) {
.tagline {
font-size: 1.4rem;
}
.video-container {
width: 90%;
max-height: 40vh;
}
.cta-btn {
width: auto;
font-size: 0.9rem;
}
}
</style>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4G8P6QXLEH"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-4G8P6QXLEH');
</script>
</head>
<body>
<!-- STARFIELD (z-index: 0) -->
<canvas id="starfield"></canvas>
<div class="container">
<img src="logo.png" alt="Raw Reel Social Logo" class="logo" />
<h1 class="tagline">Scroll-Stopping Videos That Electrify Your Brand.</h1>
<div class="video-container">
<video
src="https://storage.googleapis.com/rawreelsocial-videos/teaser.mp4"
controls>
</video>
</div>
<!-- CTA Heading and Buttons -->
<h2 class="cta-heading">Let's Get In Touch</h2>
<div class="cta-buttons">
<!-- Phone Button: "tel:" link -->
<a href="tel:+17734401040" class="cta-btn call-btn">Call Me</a>
<!-- Email Button: "mailto:" link -->
<a href="mailto:rawreelsocial@gmail.com" class="cta-btn mail-btn">Email Me</a>
</div>
</div>
<script>
/* STARFIELD: animates white stars drifting downward. */
const canvas = document.getElementById('starfield');
const ctx = canvas.getContext('2d');
let stars = [];
const STAR_COUNT = 120;
let w, h;
function initStarfield() {
resizeCanvas();
stars = [];
for (let i = 0; i < STAR_COUNT; i++) {
stars.push({
x: Math.random() * w,
y: Math.random() * h,
speed: 0.5 + Math.random() * 0.5, // star vertical speed
size: Math.random() * 2.5 // star radius
});
}
}
function resizeCanvas() {
w = canvas.width = window.innerWidth;
h = canvas.height = window.innerHeight;
}
function update() {
// Clear to transparent so the pink grid behind is visible
ctx.clearRect(0, 0, w, h);
// Move & redraw stars
for (const s of stars) {
s.y += s.speed;
// If star goes off bottom, respawn at a random top position
if (s.y > h) {
s.y = 0;
s.x = Math.random() * w;
}
ctx.beginPath();
ctx.arc(s.x, s.y, s.size, 0, 2 * Math.PI);
ctx.fillStyle = "#fff";
ctx.fill();
}
requestAnimationFrame(update);
}
window.addEventListener('resize', initStarfield);
window.addEventListener('load', () => {
initStarfield();
update();
});
</script>
</body>
</html>