| name | acreage-farming |
| description | Use this plugin when the user wants a premium precision-farming / agritech landing page: dark/light alternating sections, a fullscreen hero video background, an animated stats grid, an infinite logo marquee, and image-backed service cards. Invoke for 'farming landing page', 'agritech marketing site', 'precision agriculture site', or when the user references the Acreage Farming template. |
| version | 0.1.0 |
| od | {"mode":"prototype","surface":"web","scenario":"design","preview":{"type":"html","entry":"example.html"},"design_system":{"requires":false}} |
Acreage Farming — Precision Agriculture Landing Page
Produce a premium precision-farming landing page with dark/light alternating sections, a fullscreen hero video background, an animated stats grid, an infinite logo marquee, and image-backed service cards. A complete, rendered reference implementation ships beside this skill at example.html — start from it. Copy example.html, then adjust copy and data; do not rewrite the CSS or invent a new visual language. The seed already encodes the exact tokens, layout, reveal animation, marquee, and responsive behavior below.
This is the authoritative build brief. Follow it exactly — the named colors, radii, fonts, and animations are locked.
Stack
- Default output: a single self-contained HTML file (the
example.html seed). It already includes everything inline.
- If the user explicitly asks for a React + TypeScript + Vite + Tailwind project, port the seed faithfully: same tokens, same section order, same markup structure. Map vanilla features back up: the
IntersectionObserver reveal → Framer-Motion whileInView; the passive scroll listener that toggles .scrolled on the nav → useScroll; the CSS marquee → a Framer-Motion loop or duplicated-track CSS keyframe. Do not change the design while porting.
- Motion loading (locked). If you emit a single self-contained inline-JSX file instead of the Vite project, Motion's React hooks (
useScroll, useTransform, useAnimationFrame, …) exist only in the React UMD build: load <script src="https://unpkg.com/framer-motion@11.11.13/dist/framer-motion.js"></script> and read them off window.Motion — never the vanilla https://unpkg.com/motion@.../dist/motion.js DOM bundle, which lacks useScroll and renders a blank page. (The Vite project imports from npm and is unaffected.)
Fonts
Load from Google Fonts: Manrope (weights 400, 500, 600, 700, 800) for UI/body and Instrument Serif (regular + italic) for editorial accent words. Manrope is the default body face; Instrument Serif italic is used only for the one or two emphasized words in the hero headline (<span class="serif italic">).
CSS Variables (:root) — locked
--bg-dark: #0d120e; --bg-darker: #080b09;
--bg-light: #f3f0e7; --bg-cream: #e9e4d6;
--green: #6b8e3a; --green-bright: #9ec94a; --green-deep: #2e3b22;
--soil: #c9a06a;
--text-light: #f3f0e7; --text-muted-light: rgba(243,240,231,0.6);
--text-dark: #1a1f17; --text-muted-dark: rgba(26,31,23,0.55);
--radius: 28px; --radius-lg: 40px;
--ease: cubic-bezier(0.22, 1, 0.36, 1);
--transition: all 0.5s cubic-bezier(0.22, 1, 0.36, 1);
Body: Manrope, background: var(--bg-dark), color: var(--text-light), overflow-x: hidden. html { scroll-behavior: smooth }. The page is dark by default; only the stats section uses the light/cream palette.
Sections (in order)
1. Nav (fixed)
Pill that shrinks on scroll. At top: transparent, max-width 1240px, padding 22px 32px. After scrollY > 40 it gets .scrolled: floats inward (top:14px; left:16px; right:16px), gains rgba(8,11,9,0.72) + backdrop-filter: blur(14px), a 1px rgba(243,240,231,0.08) border, and border-radius:100px. Left: brand = a 30px gradient-mark (linear-gradient(135deg, var(--green-bright), var(--green))) holding an inline wheat/sprout SVG + "Acreage". Center: nav-links (Platform, Data, Services, Pricing), hidden ≤980px. Right: green-bright pill CTA "Book a demo".
2. Hero (fullscreen, video background)
min-height:100vh, content bottom-aligned. A <video autoplay muted loop playsinline> fills inset:0 with object-fit:cover and a poster still. A gradient ::after (top transparent → bottom rgba(8,11,9,0.92)) keeps text legible. Headline: clamp(3rem, 8vw, 6.5rem), weight 800, letter-spacing:-0.03em, with one word in Instrument Serif italic ("every"). Sub-paragraph in --text-muted-light. Actions: green-bright primary button + ghost outline "Watch the film". Below: a hero-meta row of three big stats (2.4M+ acres, 31% yield lift, −40% water).
- Hero video:
https://plugin-assets.open-design.ai/plugins/aerocore/23211-720-e83442.mp4 (large stable CDN — keep as remote URL). Poster: an Unsplash aerial-field still (remote URL OK).
3. Logo marquee
Full-width band on --bg-darker, top+bottom hairline borders. Centered uppercase label, then an infinite horizontal marquee: a .marquee-track of duplicated partner logos animated translateX(0 → -50%) over 32s linear infinite, paused on hover, edge-masked with a linear-gradient CSS mask. The track is built in JS by duplicating an 8-name partner array, each rendered as an inline leaf SVG + name. Logos are text + inline SVG only — no remote logo images.
4. Stats (light section)
.section-light flips to the cream palette (--bg-light bg, --text-dark text, green eyebrow). Header row: eyebrow + big h2 on the left, descriptive paragraph on the right. Then a 4-column stat grid (repeat(4,1fr), gap 20px). Each .stat-card is white, rounded --radius, min-height 220px, with an icon chip (top), a big stat-num (3rem, weight 800, with a smaller .unit span for %/k) pushed to the bottom via margin-top:auto, and a label. The first card has .accent → --green-deep background, light text, tinted icon chip. Hover lifts cards translateY(-6px) with a soft shadow. Icons are inline SVG (refresh-cycle, trend-up, droplet, clock). Values: 98% coverage, 31% yield, 40% water, 11k autonomous hours.
5. Services (dark, image cards)
Back to --bg-dark. Centered head (eyebrow + h2 + paragraph). 3-column grid of .svc-card, each min-height:420px, --radius-lg, an absolutely-positioned .svc-bg image that scales 1.06 on hover, a bottom gradient scrim, and bottom-aligned body: a green-tinted .svc-tag chip, h3, paragraph, and a green-bright "arrow" link. Three cards: Sensing (satellite & drone scouting), Deciding (variable-rate prescriptions), Acting (autonomous machinery). Card background images are Unsplash farm stills (remote URLs OK — large stable CDN).
6. CTA
Band on --bg-darker containing a rounded-48px panel with a linear-gradient(135deg, var(--green-deep), #1c2616) fill, a green radial glow ::before, eyebrow, huge headline ("Put your fields on autopilot."), one line of copy, and a green-bright primary button.
7. Footer
--bg-darker, top hairline. Left: brand mark + one-line mission. Right: three link columns (Platform / Company / Resources). Bottom bar: copyright + legal links, separated by a hairline.
Animations
- Reveal: every
.reveal element starts opacity:0; translateY(34px) and transitions to visible over 0.9s var(--ease) when it enters the viewport. Implemented with one IntersectionObserver (threshold:0.15, rootMargin:'0px 0px -8% 0px', unobserve after firing). A small stagger is applied via transitionDelay = (index % 4) * 0.07s. In a React port this is whileInView + viewport={{ once: true }}.
- Nav shrink: passive
scroll listener toggles .scrolled at scrollY > 40.
- Marquee:
@keyframes scroll-x { translateX(0) → translateX(-50%) }, 32s linear infinite, animation-play-state: paused on :hover.
- Hover: buttons lift
translateY(-2/-3px) with green glow shadow; stat-cards and svc-cards lift translateY(-6px); service background images scale 1.06 over 0.8s.
- All interactive transitions use
--transition (0.5s cubic-bezier(0.22, 1, 0.36, 1)).
Assets / hosts
- Inline (do not fetch remote): all icons and partner logos are inline SVG. The brand mark, stat icons, service arrows, and marquee leaf are inline SVG. There are no avatar images in this template.
- Keep remote (large stable CDN): the hero
.mp4 on cdn.coverr.co, and the Unsplash hero poster + service-card stills on images.unsplash.com. These may stay as URLs.
- Never introduce
i.pravatar.cc, api.dicebear.com, or any remote avatar host — none are needed here and they 403 in the sandbox.
Responsive
- ≤980px: stats grid → 2 columns, services grid → 1 column, nav-links hidden.
- ≤620px:
.wrap padding 0 20px, stats grid → 1 column, tighter hero-meta gap, CTA panel padding reduced.
Color Rules — hard
Earthy agritech palette only: deep greens (--green, --green-bright #9ec94a, --green-deep), near-black greens (--bg-dark #0d120e, --bg-darker #080b09), warm cream/off-white (--bg-light #f3f0e7, --bg-cream), and a soil tan accent (--soil #c9a06a). --green-bright #9ec94a is the locked accent — do not substitute blue/teal/purple. Light text on dark, dark text on cream; all contrast-safe.