FarmFreshPickup — Landing

:root{ –bg:#070A0F; –fg:#EAF2FF; –muted:rgba(234,242,255,.72); –muted2:rgba(234,242,255,.55); –line:rgba(234,242,255,.10); –glass:rgba(255,255,255,.06); –shadow: 0 10px 30px rgba(0,0,0,.45); –r: 20px; –max: 1160px; –grad: conic-gradient(from 180deg at 50% 50%, #8B5CF6, #22C55E, #06B6D4, #F59E0B, #EF4444, #8B5CF6); } *{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:var(–bg);color:var(–fg);font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, “Apple Color Emoji”,”Segoe UI Emoji”; line-height:1.5; overflow-x:hidden} a{color:inherit;text-decoration:none} /* — ambient background — */ .ffp-wrap{position:relative;min-height:100vh;isolation:isolate} .ffp-bg{position:absolute;inset:-20vh -20vw;z-index:-2;pointer-events:none;opacity:.9} .ffp-noise{position:absolute;inset:0;z-index:-1;pointer-events:none;mix-blend-mode:overlay;opacity:.25} .ffp-noise::before{content:””;position:absolute;inset:0;background-image:radial-gradient(circle at 20% 10%, rgba(255,255,255,.20) 0 1px, transparent 1px),radial-gradient(circle at 80% 40%, rgba(255,255,255,.12) 0 1px, transparent 1px),radial-gradient(circle at 40% 90%, rgba(255,255,255,.10) 0 1px, transparent 1px);background-size: 280px 280px, 340px 340px, 420px 420px;filter: blur(.2px);animation: ffp-drift 18s linear infinite} @keyframes ffp-drift{to{transform:translate3d(120px,-80px,0)}} /* — layout — */ .ffp{max-width:var(–max);margin:0 auto;padding:28px 18px 120px} .ffp-topbar{position:sticky;top:0;z-index:50;backdrop-filter:saturate(120%) blur(12px);background:linear-gradient(to bottom, rgba(7,10,15,.78), rgba(7,10,15,.25));border-bottom:1px solid var(–line)} .ffp-topbar .ffp{padding:14px 18px} .ffp-nav{display:flex;align-items:center;justify-content:space-between;gap:18px} .ffp-brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.2px} .ffp-mark{width:34px;height:34px;border-radius:12px;background:var(–grad);filter:saturate(125%);box-shadow: 0 12px 35px rgba(139,92,246,.25)} .ffp-links{display:flex;gap:14px;flex-wrap:wrap;align-items:center} .ffp-links a{padding:10px 10px;border-radius:12px;color:var(–muted);border:1px solid transparent;transition:.2s ease} .ffp-links a:hover{color:var(–fg);border-color:var(–line);background:rgba(255,255,255,.04)} .ffp-cta{display:flex;gap:10px;align-items:center} .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:12px 14px;border-radius:14px;border:1px solid var(–line);background:rgba(255,255,255,.04);color:var(–fg);box-shadow:none;transition:.22s ease;white-space:nowrap} .btn:hover{transform:translateY(-1px);background:rgba(255,255,255,.07)} .btn-primary{border-color:transparent;background:var(–grad);color:#081018;box-shadow: 0 18px 55px rgba(34,197,94,.18)} .btn-primary:hover{filter:saturate(120%);transform:translateY(-1px) scale(1.01)} .btn svg{width:16px;height:16px;opacity:.9} /* — hero — */ .hero{padding:78px 0 44px;display:grid;grid-template-columns: 1.1fr .9fr;gap:34px;align-items:center} @media (max-width: 980px){.hero{grid-template-columns:1fr;gap:22px;padding-top:52px}} .kicker{display:inline-flex;gap:10px;align-items:center;padding:10px 12px;border-radius:999px;border:1px solid var(–line);background:rgba(255,255,255,.04);color:var(–muted);font-size:13px} .kicker b{color:var(–fg)} .h1{font-size:clamp(38px,4.6vw,64px);line-height:1.02;margin:14px 0 12px;letter-spacing:-.03em} .h1 .shine{background:var(–grad);-webkit-background-clip:text;background-clip:text;color:transparent;filter:saturate(135%);animation: hue 9s linear infinite} @keyframes hue{to{filter:hue-rotate(360deg) saturate(135%)}} .sub{font-size:18px;color:var(–muted);max-width:56ch} .hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0 0} .mini{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px;color:var(–muted2);font-size:13px} .mini span{display:inline-flex;gap:8px;align-items:center;padding:8px 10px;border:1px dashed rgba(234,242,255,.18);border-radius:999px;background:rgba(255,255,255,.03)} .mini svg{width:14px;height:14px;opacity:.9} /* — right hero panel — */ .panel{position:relative;border-radius:var(–r);border:1px solid var(–line);background:linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.03));box-shadow:var(–shadow);overflow:hidden} .panel::before{content:””;position:absolute;inset:-80px;background:radial-gradient(circle at 30% 20%, rgba(34,197,94,.20), transparent 55%),radial-gradient(circle at 70% 30%, rgba(139,92,246,.20), transparent 55%),radial-gradient(circle at 55% 80%, rgba(6,182,212,.16), transparent 60%);filter:blur(10px);animation: floaty 12s ease-in-out infinite} @keyframes floaty{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(18px,-14px,0)}} .panel-inner{position:relative;padding:18px} .ticker{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 12px;border-radius:16px;border:1px solid rgba(234,242,255,.14);background:rgba(7,10,15,.35);backdrop-filter: blur(8px)} .ticker .dot{width:10px;height:10px;border-radius:999px;background:#22C55E;box-shadow: 0 0 0 6px rgba(34,197,94,.14)} .ticker .label{font-size:12px;color:var(–muted)} .grid{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:12px} @media (max-width: 520px){.grid{grid-template-columns:1fr}} .card{padding:14px;border-radius:18px;border:1px solid rgba(234,242,255,.12);background:rgba(7,10,15,.34);backdrop-filter: blur(10px);transition:.22s ease} .card:hover{transform:translateY(-2px);border-color:rgba(234,242,255,.22)} .card h3{margin:0 0 8px;font-size:14px;letter-spacing:.2px} .card p{margin:0;color:var(–muted);font-size:13px} .metric{display:flex;align-items:baseline;gap:10px;margin-top:10px} .metric b{font-size:28px;letter-spacing:-.02em} .metric i{font-style:normal;color:var(–muted2);font-size:12px} /* — sections — */ .section{margin-top:54px} .section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap} .section h2{font-size:clamp(24px,2.6vw,34px);margin:0;letter-spacing:-.02em} .section .lead{color:var(–muted);max-width:70ch;margin:10px 0 0} .features{margin-top:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px} @media (max-width: 980px){.features{grid-template-columns:1fr 1fr}} @media (max-width: 620px){.features{grid-template-columns:1fr}} .feature{padding:18px;border-radius:var(–r);border:1px solid var(–line);background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02));position:relative;overflow:hidden} .feature::after{content:””;position:absolute;inset:-2px;background:radial-gradient(circle at var(–x, 30%) var(–y, 20%), rgba(255,255,255,.12), transparent 55%);opacity:.0;transition:.22s ease} .feature:hover::after{opacity:.9} .feature h3{margin:0 0 10px;font-size:16px} .feature p{margin:0;color:var(–muted)} .icon{width:40px;height:40px;border-radius:14px;background:rgba(255,255,255,.06);border:1px solid rgba(234,242,255,.14);display:grid;place-items:center;margin-bottom:12px} .icon svg{width:20px;height:20px} /* pricing */ .pricing{margin-top:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px} @media (max-width: 980px){.pricing{grid-template-columns:1fr}} .price{padding:20px;border-radius:var(–r);border:1px solid var(–line);background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02));position:relative;overflow:hidden} .price.pop{border-color:rgba(34,197,94,.35)} .badge{position:absolute;top:14px;right:14px;font-size:12px;color:#081018;background:#22C55E;padding:8px 10px;border-radius:999px;box-shadow:0 16px 45px rgba(34,197,94,.22)} .price h3{margin:0 0 6px;font-size:18px} .price .p{color:var(–muted);margin:0 0 14px} .price .amt{display:flex;align-items:baseline;gap:8px;margin:12px 0 14px} .price .amt b{font-size:40px;letter-spacing:-.03em} .price .amt span{color:var(–muted2)} .ul{margin:0;padding:0;list-style:none;display:grid;gap:10px;color:var(–muted)} .ul li{display:flex;gap:10px;align-items:flex-start} .ul svg{width:18px;height:18px;margin-top:2px} /* testimonials + FAQ */ .split{margin-top:18px;display:grid;grid-template-columns: 1fr 1fr;gap:12px} @media (max-width: 980px){.split{grid-template-columns:1fr}} .quote{padding:18px;border-radius:var(–r);border:1px solid var(–line);background:rgba(255,255,255,.04)} .quote p{margin:0;color:var(–muted)} .quote b{display:block;margin-top:12px} .details{border:1px solid var(–line);border-radius:var(–r);background:rgba(255,255,255,.03);overflow:hidden} .details summary{cursor:pointer;list-style:none;padding:16px 18px;display:flex;justify-content:space-between;gap:10px} .details summary::-webkit-details-marker{display:none} .details .ans{padding:0 18px 16px;color:var(–muted)} .details summary span{color:var(–muted2)} /* final cta */ .final{margin-top:54px;padding:24px;border-radius:calc(var(–r) + 6px);border:1px solid rgba(234,242,255,.14);background:linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.02));position:relative;overflow:hidden} .final::before{content:””;position:absolute;inset:-60px;background:var(–grad);opacity:.22;filter:blur(18px);animation: floaty 10s ease-in-out infinite} .final-inner{position:relative;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap} .final h2{margin:0;font-size:clamp(24px,3vw,38px)} .final p{margin:8px 0 0;color:var(–muted);max-width:60ch} /* accessibility */ @media (prefers-reduced-motion: reduce){ *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important} html{scroll-behavior:auto} }
Local harvest → picked up the way you live

Pick up food where it’s grown.

A weekly box of peak-season produce from nearby farms. Customize in minutes, pick up on your schedule, and taste the difference—without subscriptions that trap you.

Pause anytime Seasonal & local Swap items

How it works

A frictionless loop—from field to pickup—designed for busy schedules.

1) Choose your rhythm

Weekly, biweekly, or whenever. Pause or skip with one tap—no guilt, no calls.

2) Customize the box

Swap items you don’t love. Add eggs, bread, or pantry staples when available.

3) Pick up, eat better

Grab your box at a nearby pickup spot. Fresh meals start feeling effortless.

Built for taste—and time

Awwwards-level polish, but the real flex is how easy it feels to keep going.

“I stopped guessing at grocery produce. Now I cook what’s in season, and it actually tastes like something.”

— A happy pickup regular

“The swap feature is the killer. We never end up with random extras we won’t use.”

— A family of four

Local by default

Shorter supply chains mean fresher food and stronger communities.

Flexible spending

Start small, scale up, or pause. It’s your life—your plan should follow.

Pickup-perfect

Skip delivery fees. Get a dependable window and a quick handoff.

Plans that don’t box you in

Use these as placeholders—swap pricing and plan names anytime.

Starter

For 1–2 people who cook a few nights a week.

$25/ week
  • 7 seasonal items
  • Swap 2 items
  • Pause anytime
Most popular

Family

For families and meal-preppers who want reliable variety.

$39/ week
  • 10 seasonal items
  • Swap 4 items
  • Priority pickup slot

Chef

For serious cooks chasing peak-season ingredients.

$55/ week
  • 12–14 items
  • Unlimited swaps
  • Seasonal add-ons

FAQ

Keep it simple, keep it honest.

Can I skip a week? Yes
Yep—skip or pause anytime. Your plan bends around your calendar.
What if I don’t like an item? Swap it
Swap within your box window. We keep substitutions seasonally aligned.
Is this a CSA? CSA-inspired
It’s the best parts of a CSA—fresh + local—without the rigid commitment.
Where do I pick up? Nearby spots
Pickup locations and windows are set at checkout. We prioritize convenience and speed.
Do you deliver? Pickup-first
This page is designed for pickup-first. If you add delivery later, we can adapt the layout.
Can you match my brand? Absolutely
We can update color tokens, typography, and motion to match your brand system.

Make fresh the default.

Use this page as your high-converting landing. Next step: wire the buttons to your checkout / signup flow.

Tip: If your WordPress editor strips <style> or <svg>, enable unfiltered HTML for admins or move the CSS into Appearance → Customize → Additional CSS. I can do that too.

// subtle spotlight on feature cards (no libs) (function(){ const cards = document.querySelectorAll(‘.feature’); const set = (el, e)=>{ const r = el.getBoundingClientRect(); const x = ((e.clientX – r.left) / r.width) * 100; const y = ((e.clientY – r.top) / r.height) * 100; el.style.setProperty(‘–x’, x + ‘%’); el.style.setProperty(‘–y’, y + ‘%’); }; cards.forEach(el=>{ el.addEventListener(‘pointermove’, e=>set(el,e)); }); })();