From 2db3c63e5abc52d33055c5478beb977702edad5f Mon Sep 17 00:00:00 2001 From: John Mizerek Date: Tue, 17 Mar 2026 19:28:20 -0700 Subject: [PATCH] Initial commit: WeedOps WordPress theme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Custom theme for weedops.site — front page, header, footer, functions, styles, and images. Co-Authored-By: Claude Opus 4.6 (1M context) --- footer.php | 15 + front-page.php | 341 +++++++++++++++ functions.php | 130 ++++++ header.php | 33 ++ images/favicon.svg | 4 + index.php | 26 ++ style.css | 1033 ++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 1582 insertions(+) create mode 100644 footer.php create mode 100644 front-page.php create mode 100644 functions.php create mode 100644 header.php create mode 100644 images/favicon.svg create mode 100644 index.php create mode 100644 style.css diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..194be17 --- /dev/null +++ b/footer.php @@ -0,0 +1,15 @@ + + +
+
+ + +
+
+ + + + diff --git a/front-page.php b/front-page.php new file mode 100644 index 0000000..70cb944 --- /dev/null +++ b/front-page.php @@ -0,0 +1,341 @@ + + + +
+
+
+ +

Your home. Your plants.
Our expertise. Your check.

+

California adults can legally grow cannabis at home. Almost none of them do. We built the company that changes that — and makes money at every step of the process.

+

$500,000 Convertible Notes — Private Party Round Now Open

+ +
+
+
+ + +
+
+ +
+

A category that doesn't exist yet. We're defining it.

+

Millions of California adults consume cannabis. A fraction grow it. The gap isn't desire — it's expertise, equipment, and time. WeedOps is the first company to solve all three with a fully managed, fully licensed, recurring service model.

+

This is not a dispensary. Not a delivery app. Not a brand.

+

This is infrastructure.

+
+
+
+ + +
+
+ +

Many adults want craft cannabis.
Almost none of them grow it.

+
+
+

The expertise gap

+

A successful home grow requires strain knowledge, lighting science, training techniques, and timing. Most adults never get past seed-to-sprout.

+
+
+

The time barrier

+

Daily monitoring. Biweekly maintenance. Processing at harvest. A full-time job on top of your actual job.

+
+
+

The equipment wall

+

A quality grow tent setup costs $800 - $2,000 upfront — before you've grown a single gram. Most people quit before they start.

+
+
+
+
+ + +
+
+ +

We bring the entire operation to your home.

+

WeedOps handles everything — equipment, setup, clones, biweekly visits, harvesting, and processing. You provide the space. We provide the rest.

+
+
+

Full equipment setup

+

We bring it. We install it. All of it.

+
+
+

Expert grow management

+

Biweekly site visits.

+
+
+

Monthly product supply

+

Your share, delivered.

+
+
+

Revenue share check

+

Every harvest cycle.

+
+
+
+
+ + +
+
+ +

Six steps from empty bedroom to monthly check.

+
+
+ 01 +

Register

+

Tell us about your space and household. We send a proposal.

+
+
+ 02 +

Setup Day

+

We arrive with all equipment. Full grow tent installed, clones planted.

+
+
+ 03 +

Biweekly Visits

+

Our tech stops by every two weeks — maintenance, monitoring, training if desired.

+
+
+ 04 +

Harvest

+

Every ~9 weeks. We take the product for processing. You watch if you want, get an estimate.

+
+
+ 05 +

Your Supply

+

Next week: 30-day supply for every registered adult — flower, edible, cart, extract. You choose your format.

+
+
+ 06 +

Your Check

+

Remaining product processed and sold on consignment. Revenue share check every cycle.

+
+
+
+
+ + +
+
+ +

You had a hand in growing it. That's the whole point.

+
+
+
$0
+
Out of Pocket
+

Refundable $500 deposit is the only ask. Equipment, clones, nutrients — all on us.

+
+
+
30
+
Day Supply / Mo
+

Every registered adult in the home gets their full monthly supply, first.

+
+
+
Revenue Share
+
Per Harvest
+

Your cut from processed excess, every ~9-week cycle. Passive income.

+
+
+

Optional webcam inside your grow. Video consultations. And a service you can learn to run yourself.

+
+
+ + +
+
+ +

The home service is the foundation. The Superstore is the destination.

+

This isn't a boutique. It's a floor. WeedOps Superstore is where serious growers come to outfit an operation — flat carts for 50-pound soil runs, shopping carts for accessories and nutrients, a full retail floor with every brand, format, and supply a home grower or commercial operation needs. Think Home Depot. Now think cannabis. Nobody has built it. That's the point.

+
+
+

Processing

+

Glass wall. Watch your product get made. Like a brewery.

+
+
+

Retail Store

+

WeedOps product + curated shelf. You know what's in it.

+
+
+

Farmers Market

+

Third-party growers. Community. Foot traffic engine.

+
+
+

2nd Floor

+

Indoor grow suites for lease. No home required.

+
+
+

Rooftop

+

Outdoor grow plots for lease. Seasonal. Instagrammable.

+
+
+

Supply Shop

+

All supplies available onsite. Everything a grower needs, where growers already are.

+
+
+

Superstore Floor

+

Flat carts. Shopping carts. Bulk supply. Full equipment. The complete grow operation, ready to walk out the door.

+
+
+

The cannabis superstore. Finally.

+
+
+ + +
+
+ +

This is not a single-product cannabis company.

+
+
+ Core +

Service Contracts

+

Monthly fee per home grow site. Predictable, recurring, scalable.

+
+
+ Margin +

Processing

+

Licensed processing of all harvested product.

+
+
+ Margin +

Distribution

+

Licensed distribution of processed product to retail.

+
+
+ Campus +

Campus Retail

+

WeedOps-branded product on our own shelf.

+
+
+ Campus +

Grow Suite Rental

+

Second floor and rooftop leasable grow spaces.

+
+
+ Campus +

Supply Sales

+

Equipment, nutrients, accessories sold where growers already are.

+
+
+
+
+ + +
+
+ +

First mover in distributed home cultivation services.

+
+
+

Greater LA launch

+

5M+ adults in the LA metro. Cannabis-normalized culture. Word travels fast in every neighborhood on the westside.

+
+
+

Fully licensed

+

Every required California license — cultivation, processing, distribution. 100% compliant. Taxes paid. Federal/state tension is real and acknowledged; our structure keeps commercial activity entirely within the state-licensed chain.

+
+
+

Referral flywheel

+

Happy growers share what they grew. That's the whole pitch deck at a dinner party.

+
+
+

First mover edge

+

Nobody has built this. The managed home grow service category doesn't exist yet. We're defining it.

+
+
+
+
+ + +
+
+ +
+
$500,000
+

Convertible Notes · Private Party · No VC

+

Individual investors only · No institutional money

+
+
+
+
40%
+

Licensing & Legal

+

All required CA licenses. Cannabis counsel.

+
+
+
30%
+

First Cohort Ops

+

Equipment for first 25 sites. Clones. Setup labor.

+
+
+
20%
+

Processing Setup

+

Licensed facility, equipment, first cycle.

+
+
+
10%
+

Technology & Brand

+

Customer portal. Ops dashboard. Marketing.

+
+
+
+
+ + +
+
+ +
+

Request received.

+

We'll send the full investor overview to your email shortly.

+
+ +

Interested in the round?

+

Request the full investor overview. This is a confidential offering to individual investors.

+ + +
+ + +
+ + + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ + +
+ + + +
+ +
+
+ + diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..24c96e9 --- /dev/null +++ b/functions.php @@ -0,0 +1,130 @@ + array( + 'secret' => WEEDOPS_TURNSTILE_SECRET_KEY, + 'response' => $token, + 'remoteip' => $_SERVER['REMOTE_ADDR'] ?? '', + ), + )); + + if (is_wp_error($response)) return false; + + $body = json_decode(wp_remote_retrieve_body($response), true); + return !empty($body['success']); +} + +// Handle deck request form submission (early, before headers sent) +function weedops_handle_deck_request_init() { + if (!isset($_POST['weedops_deck_request'])) return; + + // Verify nonce + if (!wp_verify_nonce($_POST['_wpnonce'] ?? '', 'weedops_deck_request')) { + set_transient('weedops_form_error_' . $_SERVER['REMOTE_ADDR'], 'Invalid request.', 60); + wp_redirect(home_url('/#deck')); + exit; + } + + // Verify Turnstile if configured + if (WEEDOPS_TURNSTILE_SITE_KEY && !weedops_verify_turnstile($_POST['cf-turnstile-response'] ?? '')) { + set_transient('weedops_form_error_' . $_SERVER['REMOTE_ADDR'], 'Verification failed. Please try again.', 60); + wp_redirect(home_url('/#deck')); + exit; + } + + $name = sanitize_text_field($_POST['name'] ?? ''); + $email = sanitize_email($_POST['email'] ?? ''); + $note = sanitize_textarea_field($_POST['note'] ?? ''); + + if (empty($name) || empty($email)) { + set_transient('weedops_form_error_' . $_SERVER['REMOTE_ADDR'], 'Name and email are required.', 60); + wp_redirect(home_url('/#deck')); + exit; + } + + // Send notification email + $to = 'john@weedops.site'; + $subject = 'WeedOps Deck Request: ' . $name; + $body = "Name: {$name}\nEmail: {$email}\n\nNote:\n{$note}"; + $headers = array('Reply-To: ' . $name . ' <' . $email . '>'); + + wp_mail($to, $subject, $body, $headers); + + set_transient('weedops_form_success_' . $_SERVER['REMOTE_ADDR'], true, 60); + wp_redirect(home_url('/#deck')); + exit; +} +add_action('template_redirect', 'weedops_handle_deck_request_init'); + +// Get form result from transient (after redirect) +function weedops_get_form_result() { + $ip = $_SERVER['REMOTE_ADDR']; + $success = get_transient('weedops_form_success_' . $ip); + if ($success) { + delete_transient('weedops_form_success_' . $ip); + return true; + } + $error = get_transient('weedops_form_error_' . $ip); + if ($error) { + delete_transient('weedops_form_error_' . $ip); + return $error; + } + return null; +} diff --git a/header.php b/header.php new file mode 100644 index 0000000..caaa66a --- /dev/null +++ b/header.php @@ -0,0 +1,33 @@ + +> + + + + + + + + +> + + + +
diff --git a/images/favicon.svg b/images/favicon.svg new file mode 100644 index 0000000..ba75a35 --- /dev/null +++ b/images/favicon.svg @@ -0,0 +1,4 @@ + + + W + diff --git a/index.php b/index.php new file mode 100644 index 0000000..ddaa176 --- /dev/null +++ b/index.php @@ -0,0 +1,26 @@ + + +
+
+

+
+
+ +
+
+ +
+
+ + diff --git a/style.css b/style.css new file mode 100644 index 0000000..153d5b9 --- /dev/null +++ b/style.css @@ -0,0 +1,1033 @@ +/* +Theme Name: WeedOps +Theme URI: https://weedops.site +Author: WeedOps +Description: Investor-facing landing page for WeedOps — managed home cannabis cultivation. +Version: 1.0 +License: Proprietary +Text Domain: weedops +*/ + +/* ======================================== + CSS Variables + ======================================== */ +:root { + --black: #0a0a0a; + --black-light: #111111; + --black-lighter: #1a1a1a; + --green: #22c55e; + --green-hover: #16a34a; + --green-dim: rgba(34, 197, 94, 0.1); + --green-glow: rgba(34, 197, 94, 0.15); + --white: #ffffff; + --gray: #a0a0a0; + --gray-dark: #666666; + --gray-light: #cccccc; + --border: #2a2a2a; + + --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; + --font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace; + --max-width: 1100px; + --nav-height: 72px; +} + +/* ======================================== + Reset & Base + ======================================== */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 16px; + scroll-behavior: smooth; +} + +body { + font-family: var(--font); + background: var(--black); + color: var(--white); + line-height: 1.6; + -webkit-font-smoothing: antialiased; +} + +a { + color: inherit; + text-decoration: none; +} + +img { + max-width: 100%; + height: auto; + display: block; +} + +/* ======================================== + Typography + ======================================== */ +h1, h2, h3, h4 { + font-weight: 600; + line-height: 1.2; +} + +h1 { + font-size: clamp(2.5rem, 6vw, 4rem); + letter-spacing: -0.03em; +} + +h2 { + font-size: clamp(1.75rem, 4vw, 2.5rem); + letter-spacing: -0.02em; +} + +h3 { + font-size: 1.25rem; +} + +p { + color: var(--gray); +} + +.subhead { + font-size: clamp(1.1rem, 2.5vw, 1.35rem); + color: var(--gray); + max-width: 600px; +} + +.section-label { + font-family: var(--font-mono); + font-size: 0.8rem; + font-weight: 600; + letter-spacing: 0.15em; + text-transform: uppercase; + color: var(--green); + margin-bottom: 16px; +} + +/* ======================================== + Layout + ======================================== */ +.container { + width: 100%; + max-width: var(--max-width); + margin: 0 auto; + padding: 0 24px; +} + +section { + padding: 120px 0; +} + +@media (max-width: 768px) { + section { + padding: 80px 0; + } +} + +/* ======================================== + Navigation + ======================================== */ +.site-header { + position: fixed; + top: 0; + left: 0; + right: 0; + height: var(--nav-height); + background: rgba(10, 10, 10, 0.95); + backdrop-filter: blur(12px); + z-index: 1000; + border-bottom: 1px solid var(--border); +} + +.nav-container { + display: flex; + align-items: center; + justify-content: space-between; + height: 100%; + max-width: var(--max-width); + margin: 0 auto; + padding: 0 24px; +} + +.logo { + font-size: 1.4rem; + font-weight: 700; + color: var(--white); + letter-spacing: -0.02em; +} + +.logo span { + color: var(--green); +} + +.nav-links { + display: flex; + align-items: center; + gap: 32px; + list-style: none; +} + +.nav-links a { + font-size: 0.95rem; + color: var(--gray); + transition: color 0.2s; +} + +.nav-links a:hover { + color: var(--white); +} + +.nav-links .btn-nav { + padding: 10px 20px; + background: var(--green); + color: var(--black); + border-radius: 8px; + font-weight: 600; + font-size: 0.9rem; + transition: all 0.2s; +} + +.nav-links .btn-nav:hover { + background: var(--green-hover); +} + +/* Mobile Nav */ +.nav-toggle { + display: none; + background: none; + border: none; + cursor: pointer; + padding: 8px; +} + +.nav-toggle span { + display: block; + width: 24px; + height: 2px; + background: var(--white); + margin: 6px 0; + transition: all 0.3s; +} + +@media (max-width: 768px) { + .site-header { + background: #0a0a0a; + backdrop-filter: none; + } + + .nav-toggle { + display: block; + } + + .nav-links { + position: fixed; + top: var(--nav-height); + right: 0; + flex-direction: column; + align-items: flex-end; + background: rgba(10, 10, 10, 0.95); + backdrop-filter: blur(12px); + border: 1px solid var(--border); + border-top: none; + border-radius: 0 0 0 12px; + padding: 24px 32px; + gap: 20px; + display: none; + z-index: 9999; + } + + .nav-links.active { + display: flex; + } + + .nav-links a { + font-size: 1.1rem; + color: var(--white); + } +} + +/* ======================================== + Buttons + ======================================== */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 16px 32px; + font-size: 1rem; + font-weight: 600; + border-radius: 10px; + cursor: pointer; + transition: all 0.2s; + border: none; +} + +.btn-primary { + background: var(--green); + color: var(--black); +} + +.btn-primary:hover { + background: var(--green-hover); + transform: translateY(-1px); +} + +.btn-secondary { + background: transparent; + color: var(--white); + border: 1px solid var(--border); +} + +.btn-secondary:hover { + background: var(--black-lighter); + border-color: var(--gray-dark); +} + +/* ======================================== + Hero Section + ======================================== */ +.hero { + min-height: 100vh; + display: flex; + align-items: center; + padding-top: var(--nav-height); + position: relative; + overflow: hidden; +} + +.hero::before { + content: ''; + position: absolute; + top: -50%; + right: -30%; + width: 800px; + height: 800px; + background: radial-gradient(circle, var(--green-glow) 0%, transparent 70%); + pointer-events: none; +} + +.hero-content { + position: relative; + z-index: 1; + max-width: 720px; +} + +.hero h1 { + margin-bottom: 24px; +} + +.hero h1 .green { + color: var(--green); +} + +.hero .subhead { + margin-bottom: 16px; +} + +.hero .hero-note { + font-size: 0.95rem; + color: var(--gray-dark); + margin-bottom: 40px; + font-style: italic; +} + +.hero-ctas { + display: flex; + gap: 16px; + flex-wrap: wrap; +} + +@media (max-width: 480px) { + .hero-ctas { + flex-direction: column; + } + + .hero-ctas .btn { + width: 100%; + } +} + +/* ======================================== + Opportunity Section + ======================================== */ +.opportunity { + background: var(--black-light); + border-top: 1px solid var(--border); +} + +.opportunity-content { + max-width: 720px; +} + +.opportunity-content h2 { + margin-bottom: 24px; +} + +.opportunity-content p { + font-size: 1.1rem; + line-height: 1.8; + margin-bottom: 16px; +} + +.opportunity-content .emphasis { + color: var(--white); + font-weight: 500; +} + +/* ======================================== + Problem Section + ======================================== */ +.problem-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 32px; + margin-top: 48px; +} + +@media (max-width: 768px) { + .problem-grid { + grid-template-columns: 1fr; + gap: 24px; + } +} + +.problem-card { + padding: 32px; + background: var(--black); + border: 1px solid var(--border); + border-radius: 16px; +} + +.problem-card h3 { + color: var(--white); + margin-bottom: 12px; +} + +.problem-card p { + font-size: 0.95rem; + line-height: 1.6; +} + +/* ======================================== + Solution Section + ======================================== */ +.solution-features { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 24px; + margin-top: 48px; +} + +@media (max-width: 600px) { + .solution-features { + grid-template-columns: 1fr; + } +} + +.solution-feature { + padding: 28px; + background: var(--black-light); + border: 1px solid var(--border); + border-radius: 12px; +} + +.solution-feature h3 { + color: var(--white); + margin-bottom: 8px; + font-size: 1.1rem; +} + +.solution-feature p { + font-size: 0.9rem; +} + +/* ======================================== + How It Works / Steps + ======================================== */ +.steps-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 32px; + margin-top: 48px; +} + +@media (max-width: 900px) { + .steps-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 600px) { + .steps-grid { + grid-template-columns: 1fr; + } +} + +.step-card { + padding: 32px; + background: var(--black); + border: 1px solid var(--border); + border-radius: 16px; + position: relative; +} + +.step-number { + font-family: var(--font-mono); + font-size: 0.85rem; + font-weight: 700; + color: var(--green); + margin-bottom: 16px; + display: block; +} + +.step-card h3 { + color: var(--white); + margin-bottom: 10px; +} + +.step-card p { + font-size: 0.95rem; +} + +/* ======================================== + WeedOpper Section (What You Get) + ======================================== */ +.weedopper-stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 32px; + margin-top: 48px; + margin-bottom: 32px; +} + +@media (max-width: 768px) { + .weedopper-stats { + grid-template-columns: 1fr; + gap: 24px; + } +} + +.stat-card { + padding: 32px; + background: var(--black-light); + border: 1px solid var(--border); + border-radius: 16px; + text-align: center; +} + +.stat-value { + font-size: clamp(2rem, 4vw, 2.5rem); + font-weight: 700; + color: var(--green); + line-height: 1; + margin-bottom: 8px; +} + +.stat-label { + font-size: 0.85rem; + font-weight: 600; + color: var(--white); + text-transform: uppercase; + letter-spacing: 0.05em; + margin-bottom: 12px; +} + +.stat-card p { + font-size: 0.9rem; + line-height: 1.5; +} + +/* ======================================== + Numbers / Unit Economics + ======================================== */ +.economics-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 48px; + margin-top: 48px; +} + +@media (max-width: 768px) { + .economics-grid { + grid-template-columns: 1fr; + gap: 32px; + } +} + +.economics-table { + width: 100%; + border-collapse: collapse; +} + +.economics-table th { + text-align: left; + font-size: 0.8rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--gray-dark); + padding: 12px 0; + border-bottom: 1px solid var(--border); +} + +.economics-table td { + padding: 14px 0; + border-bottom: 1px solid var(--border); + font-size: 0.95rem; +} + +.economics-table td:first-child { + color: var(--gray); +} + +.economics-table td:last-child { + text-align: right; + color: var(--white); + font-weight: 500; + font-family: var(--font-mono); +} + +.economics-table tr:last-child td { + border-bottom: none; + color: var(--green); + font-weight: 600; +} + +.scale-stats { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 20px; +} + +.scale-stat { + padding: 24px; + background: var(--black); + border: 1px solid var(--border); + border-radius: 12px; + text-align: center; +} + +.scale-stat .stat-value { + font-size: 1.5rem; + margin-bottom: 4px; +} + +.scale-stat .stat-label { + font-size: 0.8rem; + margin-bottom: 0; +} + +/* ======================================== + Campus Section + ======================================== */ +.campus-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 24px; + margin-top: 48px; +} + +@media (max-width: 768px) { + .campus-grid { + grid-template-columns: 1fr; + gap: 20px; + } +} + +.campus-card { + padding: 28px; + background: var(--black); + border: 1px solid var(--border); + border-radius: 16px; +} + +.campus-card h3 { + color: var(--green); + font-size: 0.85rem; + font-family: var(--font-mono); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + margin-bottom: 12px; +} + +.campus-card p { + font-size: 0.95rem; + line-height: 1.6; +} + +.campus-tagline { + margin-top: 48px; + font-size: 1.2rem; + color: var(--gray); + font-style: italic; + text-align: center; +} + +/* ======================================== + Revenue Streams + ======================================== */ +.streams-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 20px; + margin-top: 48px; +} + +@media (max-width: 600px) { + .streams-grid { + grid-template-columns: 1fr; + } +} + +.stream-card { + padding: 28px; + background: var(--black); + border: 1px solid var(--border); + border-radius: 12px; +} + +.stream-tag { + display: inline-block; + font-family: var(--font-mono); + font-size: 0.7rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + padding: 4px 10px; + border-radius: 4px; + margin-bottom: 12px; +} + +.stream-tag.core { + background: var(--green-dim); + color: var(--green); +} + +.stream-tag.margin { + background: rgba(59, 130, 246, 0.1); + color: #60a5fa; +} + +.stream-tag.campus { + background: rgba(168, 85, 247, 0.1); + color: #c084fc; +} + +.stream-card h3 { + color: var(--white); + margin-bottom: 8px; + font-size: 1.1rem; +} + +.stream-card p { + font-size: 0.9rem; +} + +/* ======================================== + Why Now Section + ======================================== */ +.why-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 32px; + margin-top: 48px; +} + +@media (max-width: 600px) { + .why-grid { + grid-template-columns: 1fr; + } +} + +.why-card { + padding: 32px; + background: var(--black); + border: 1px solid var(--border); + border-radius: 16px; +} + +.why-card h3 { + color: var(--white); + margin-bottom: 12px; +} + +.why-card p { + font-size: 0.95rem; + line-height: 1.6; +} + +/* ======================================== + Team Section + ======================================== */ +.team-content { + max-width: 720px; +} + +.team-content h3 { + color: var(--white); + font-size: 1.3rem; + margin-bottom: 20px; +} + +.team-bio { + list-style: none; + margin-top: 24px; +} + +.team-bio li { + padding: 10px 0; + padding-left: 24px; + position: relative; + color: var(--gray); + line-height: 1.7; +} + +.team-bio li::before { + content: ''; + position: absolute; + left: 0; + top: 20px; + width: 6px; + height: 6px; + background: var(--green); + border-radius: 50%; +} + +/* ======================================== + The Ask Section + ======================================== */ +.ask-section { + background: var(--black-light); + border-top: 1px solid var(--border); + border-bottom: 1px solid var(--border); +} + +.ask-headline { + text-align: center; + margin-bottom: 48px; +} + +.ask-headline .amount { + font-size: clamp(2.5rem, 6vw, 3.5rem); + font-weight: 700; + color: var(--green); + letter-spacing: -0.03em; +} + +.ask-headline .terms { + font-size: 1.1rem; + color: var(--gray); + margin-top: 8px; +} + +.ask-headline .terms-detail { + font-size: 0.9rem; + color: var(--gray-dark); + margin-top: 4px; +} + +.use-of-funds { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 24px; +} + +@media (max-width: 768px) { + .use-of-funds { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 480px) { + .use-of-funds { + grid-template-columns: 1fr; + } +} + +.fund-item { + text-align: center; + padding: 28px 20px; + background: var(--black); + border: 1px solid var(--border); + border-radius: 12px; +} + +.fund-percent { + font-size: 2rem; + font-weight: 700; + color: var(--green); + font-family: var(--font-mono); + line-height: 1; + margin-bottom: 12px; +} + +.fund-item h3 { + color: var(--white); + font-size: 1rem; + margin-bottom: 8px; +} + +.fund-item p { + font-size: 0.85rem; +} + +/* ======================================== + CTA / Deck Request + ======================================== */ +.cta-section { + text-align: center; + padding: 120px 0; +} + +.cta-section h2 { + margin-bottom: 16px; +} + +.cta-section .subhead { + margin: 0 auto 40px; +} + +/* Form */ +.deck-form { + max-width: 480px; + margin: 0 auto; + text-align: left; +} + +.form-group { + margin-bottom: 20px; +} + +.form-group label { + display: block; + font-size: 0.9rem; + color: var(--gray); + margin-bottom: 8px; +} + +.form-group input, +.form-group textarea { + width: 100%; + padding: 12px 16px; + background: var(--black-lighter); + border: 1px solid var(--border); + border-radius: 8px; + color: var(--white); + font-family: var(--font); + font-size: 1rem; + transition: border-color 0.2s; +} + +.form-group input:focus, +.form-group textarea:focus { + outline: none; + border-color: var(--green); +} + +.form-group input::placeholder, +.form-group textarea::placeholder { + color: var(--gray-dark); +} + +.form-row { + display: flex; + gap: 16px; +} + +.form-row .form-group { + flex: 1; +} + +@media (max-width: 480px) { + .form-row { + flex-direction: column; + gap: 0; + } +} + +.form-success { + background: var(--green-dim); + border: 1px solid var(--green); + border-radius: 12px; + padding: 32px; + text-align: center; + max-width: 480px; + margin: 0 auto; +} + +.form-success h3 { + color: var(--green); + margin-bottom: 8px; +} + +.form-success p { + color: var(--white); +} + +.form-error { + background: rgba(255, 100, 100, 0.1); + border: 1px solid #ff6464; + border-radius: 8px; + padding: 12px 16px; + color: #ff6464; + margin-bottom: 20px; +} + +/* ======================================== + Footer + ======================================== */ +.site-footer { + padding: 48px 0; + border-top: 1px solid var(--border); +} + +.footer-content { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 16px; +} + +.footer-location { + font-size: 0.95rem; + color: var(--gray); +} + +.footer-copy { + font-size: 0.85rem; + color: var(--gray-dark); +} + +.footer-disclaimer { + width: 100%; + text-align: center; + font-size: 0.8rem; + color: var(--gray-dark); + margin-top: 16px; + padding-top: 16px; + border-top: 1px solid var(--border); +} + +@media (max-width: 600px) { + .footer-content { + flex-direction: column; + text-align: center; + } +} + +/* ======================================== + Utilities + ======================================== */ +.text-center { text-align: center; } +.text-green { color: var(--green); } +.mt-16 { margin-top: 16px; } +.mt-24 { margin-top: 24px; } +.mt-32 { margin-top: 32px; } +.mt-48 { margin-top: 48px; } +.mb-16 { margin-bottom: 16px; } +.mb-24 { margin-bottom: 24px; } +.mb-32 { margin-bottom: 32px; }