[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"prompt-140-Risograph-Zine-Aesthetic":3},"# Landing Page Build Specification — \"Risograph Zine Aesthetic\"\n\n**Role & Objective:** You are a Senior Frontend Engineer and Expert UI Designer. Build a complete, production-quality, single-page marketing site on the first attempt. Every rule below is mandatory unless explicitly marked as an exception clause. All user-facing copy must be written in English.\n\n---\n\n## 0. Project Brief & Creative Direction\n\n**0.1 Theme & Brand**\n- **Aesthetic:** Risograph Zine — tactile, retro-intellectual, approachable. Indie-print era. Keywords: risograph, zine, print, overlay, texture, grain, multiply, ink.\n- **Fictional product:** Brand the page as \"MISPRINT CLUB\" — a risograph print studio and zine-making community. Keep the name, voice, and imagery coherent across every section. Tone: witty, warm, print-nerdy.\n\n**0.2 Required Sections (in this order)**\n1. Sticky Header (wordmark, anchor nav, theme toggle, CTA button)\n2. Hero\n3. Features (3 cards)\n4. How It Works (3 steps)\n5. Testimonials (3 quotes)\n6. Pricing (3 tiers)\n7. FAQ (accordion)\n8. Final CTA (email capture form)\n9. Footer with secondary links\n\n**0.3 Copy Rules**\n- Write real, on-theme English copy for every section — headlines, body text, feature descriptions, testimonial quotes, pricing details, FAQ questions\u002Fanswers, footer labels. Lorem ipsum is forbidden.\n\n**0.4 Signature Riso Techniques (all implemented in CSS — no images, no SVG markup)**\n- **Offset misregistration:** Display headlines get a 2–3px offset duplicate \"ink pass\" via `text-shadow` in Riso Blue at 50–65% opacity.\n- **Multiply blending:** Overlapping decorative ink layers use `mix-blend-mode: multiply` (light theme) — switched to `screen` in dark mode so inks stay visible on dark stock.\n- **Coarse paper grain:** Full-viewport fixed texture overlay at 4–6% opacity (implementation defined in 2.1).\n- **Ink bleed:** Decorative shapes are built as two stacked layers — a blurred, slightly larger, lower-opacity \"bleed\" pass beneath a crisp shape.\n- **Rough stamp edges:** Wobbly hand-drawn corners via `--radius-stamp`, 2px solid ink borders, and slight rotations (−2° to 2°) on cards, badges, and stickers.\n- **Print filter:** `filter: contrast(120%) brightness(90%)` applies to decorative artwork layers only — never to containers holding body text.\n\n---\n\n## 1. Strict Rules & Architecture\n\n**1.1 CSS-First Architecture & Zero Inline CSS**\n- All styling lives in `style.css`. The `style=\"...\"` attribute is forbidden anywhere in the HTML.\n- All design properties, layout rules, and states are applied exclusively via class or ID selectors.\n- HTML remains semantic and style-agnostic: retheming the entire site must require editing `style.css` only, never the markup.\n\n**1.2 CSS Variables & Theme Tokens**\nDefine all tokens in `:root`, then override under `.dark`:\n\n| Token | Light \"Paper\" | Dark \"Night Press\" | Usage |\n|---|---|---|---|\n| `--bg-primary` | `#FDFBF6` | `#14143A` | Page background (never `#ffffff`) |\n| `--bg-secondary` | `#F7F1E4` | `#1D1D4A` | Cards, panels |\n| `--text-primary` | `#1C1C5E` | `#FDFBF6` | Headings, body |\n| `--text-secondary` | `#4B4B8F` | `#C9C6F0` | Supporting copy |\n| `--primary` | `#E63E85` | `#FF6FA5` | Accent ink — display text ≥24px, borders, decoration |\n| `--primary-deep` | `#C2186D` | `#FF6FA5` | Filled buttons, small accent text (AA-safe) |\n| `--secondary` | `#0078BF` | `#4FC3FF` | Links, focus rings, misregistration pass |\n| `--riso-yellow` | `#FFE800` | `#FFE800` | Fill chips\u002Fhighlights paired with `--text-primary`; never text on light backgrounds |\n| `--riso-mint` | `#00A95C` | `#3DDC84` | Decorative ink |\n| `--text-success` | `#006B39` | `#3DDC84` | Success text |\n| `--text-error` | `#C0272D` | `#FF7A70` | Error text |\n| `--border-default` | `#1C1C5E` | `#FDFBF6` | 2px ink borders |\n| `--border-success` \u002F `--border-error` | `#006B39` \u002F `#C0272D` | `#3DDC84` \u002F `#FF7A70` | State borders |\n| `--shadow-ink` \u002F `--shadow-ink-accent` | `#0078BF` \u002F `#E63E85` | `#4FC3FF` \u002F `#FF6FA5` | Hard offset shadow colors |\n\n- **Non-color tokens:** `--font-base: 'Work Sans'`; `--font-display: 'Archivo Black'`; `--radius-sm: 2px`; `--radius-md: 4px`; `--radius-lg: 10px`; `--radius-stamp: 255px 15px 225px 15px \u002F 15px 225px 15px 255px`; `--shadow-sm: 3px 3px 0 var(--shadow-ink)`; `--shadow-md: 6px 6px 0 var(--shadow-ink)` (hard offset \"misprint\" shadows only — no blur on component shadows); `--spacing-gap: 1.5rem`; `--transition-fast: 120ms`; `--transition-normal: 240ms`; `--ease-standard: cubic-bezier(0.22, 0.61, 0.36, 1)`; `--ease-stamp: cubic-bezier(0.34, 1.56, 0.64, 1)`; `--z-dropdown: 1000`; `--z-modal: 2000`; `--z-toast: 3000`; `--z-grain: 4000`.\n- **Contrast pairing (enforced in both themes):** Yellow is never used as text on light backgrounds. Pink `#E63E85` on light paper is reserved for display text ≥24px (or ≥18.66px bold), borders, and decoration; small text and filled buttons use `--primary-deep`. Every light background token pairs with dark text and vice versa.\n- Set `color-scheme: light` \u002F `dark` per theme so native controls match.\n\n**1.3 Mandatory Dark Mode — \"Night Press\" Edition**\n- Dark mode must be fully defined via both `@media (prefers-color-scheme: dark)` and a `.dark` class on `\u003Chtml>`, with all tokens from 1.2 overridden.\n- **Toggle:** A visible header button using Material Symbols (`dark_mode` \u002F `light_mode`) with correct `aria-pressed` and `aria-label`. Choice persists via `localStorage`, falling back to `prefers-color-scheme` on first visit. All logic lives in `script.js`.\n- **Blend-mode inversion:** Under `.dark`, decorative layers switch `mix-blend-mode: multiply` → `screen`.\n- **Exception clause:** The source style specification requests a light-only experience; therefore the light \"Paper\" theme is the default and primary look, and dark mode is delivered as the \"Night Press\" variant (dark indigo stock, fluorescent inks) rather than omitted.\n\n**1.4 Flexbox Layout & Mobile-First Alignment**\n- Build all layout structures with Flexbox (Tailwind flex utilities or custom flex classes).\n- Every flex container defaults to `align-items: center` (`items-center`) unless an exception is explicitly justified in a CSS comment.\n- Mobile-first: multi-column rows collapse to single columns at breakpoints; zero horizontal scrolling at any viewport from 320px up.\n\n**1.5 Framework Default: Tailwind CSS**\n- Use Tailwind CSS with custom component classes defined via `@layer components` and `@apply`, all mapping back to the CSS variables above. Reusable classes required: `.btn` (+ `.btn-primary`, `.btn-secondary`, `.btn-ghost`, `.btn-danger`), `.card`, `.input-group`, `.badge-stamp`, `.section`, `.container-zine`.\n- Repeated visual patterns must become component classes — no one-off utility soup.\n\n**1.6 Typography & Icons (Google Fonts Mandatory)**\n- Load via Google Fonts `\u003Clink>`: **Work Sans** (400, 500, 700, 900) as `--font-base` for body copy; **Archivo Black** (400) as `--font-display` for zine masthead headlines.\n- Icons: Google Material Symbols (Rounded style). Inline `\u003Csvg>` elements and local icon files are forbidden.\n- Decorative riso shapes (circles, halftone dot fields, ink blobs, stamps) must be drawn with CSS only (gradients, `border-radius`, pseudo-elements, `box-shadow`).\n- **Exception clause:** The paper-grain texture may use a single `feTurbulence` SVG data-URI assigned as a `background-image` inside `style.css` (a CSS background, not DOM markup); otherwise grain is pure CSS halftone gradients.\n\n---\n\n## 2. Component & Section Design Specifications\n\n**2.1 Global Riso Treatment**\n- Body base: `background-color: var(--bg-primary); color: var(--text-primary); font-family: var(--font-base)`.\n- **Grain overlay:** fixed, full-viewport, `pointer-events: none`, `z-index: var(--z-grain)`, 4–6% opacity, implemented per 1.6 — it must never intercept clicks.\n- **Halftone fields:** `repeating-radial-gradient` dot patterns in ink colors as section backgrounds and accents.\n- Display headings: Archivo Black with the blue misregistration `text-shadow` from 0.4.\n- Cards\u002Fbadges carry slight rotations; they straighten to 0° on hover\u002Ffocus for tactile feedback.\n\n**2.2 Button Component**\nAll states as CSS classes:\n- **Default:** `display: flex; align-items: center; justify-content: center; gap: 0.5rem;` minimum 44×44px touch target, 2px solid ink border, hard offset shadow, bold Work Sans label.\n- **Hover:** shadow offset grows (3px → 6px) with `translate(-2px, -2px)`; `cursor: pointer`.\n- **Focus:** distinct 3px outline in `--secondary` with 2px offset, visible in both themes.\n- **Active\u002FPressed:** `transform: scale(0.97)`; shadow collapses to zero offset.\n- **Loading:** `aria-busy=\"true\"`, interactions blocked to prevent double-clicks, Material Symbol `progress_activity` rotating via CSS animation — button dimensions must not change.\n- **Disabled:** `opacity: 0.5`, grayscale filter, `cursor: not-allowed`.\n- **Success\u002FError:** temporary state classes driven by `--text-success` \u002F `--text-error`, announced via `aria-live`.\n\n**2.3 Card Component (Features, Testimonials, Pricing)**\n- **Default:** `--bg-secondary` paper, 2px `--border-default` border, `--shadow-sm` hard offset, `--radius-stamp` or `--radius-md`, slight rotation.\n- **Hover:** `translateY(-2px)`, rotation → 0°, shadow offset grows.\n- **Focus-within:** border shifts to `--secondary` when a child link\u002Fbutton receives focus.\n- **Loading:** CSS shimmer skeleton that prevents layout jumps.\n- **Empty state:** Material Symbol plus clear guidance text.\n\n**2.4 Form & Input (Final CTA email capture)**\n- **Structure:** `.input-group` flex container wrapping `\u003Clabel>`, `\u003Cinput type=\"email\">`, and a dedicated error feedback element with `aria-live=\"polite\"`.\n- **States:** empty, focused (outline ring in `--secondary`), filled, valid (`--border-success` + check icon), invalid (`--border-error`, error icon, error message text), disabled, read-only.\n- **Behavior:** `script.js` validates on submit (email pattern), prevents page reload, shows inline errors and a success confirmation in an `aria-live` region.\n\n**2.5 Modal \u002F Popup (if any interactive detail view is used, e.g., pricing details)**\n- **States:** opening, open, loading, success\u002Ferror, closing — all animated via CSS transitions (scale + fade).\n- **UX:** centered flex container (`align-items: center; justify-content: center`), backdrop overlay, Material Symbol `close` button, keyboard focus trapping, focus returned to trigger, closable via `Esc` and backdrop click, `role=\"dialog\"`, `aria-modal`, `aria-labelledby`.\n\n**2.6 Section-by-Section Specifications**\n- **Header:** sticky, paper background, bottom ink border; wordmark in `--font-display`; anchor links (Features, How It Works, Testimonials, Pricing, FAQ); theme toggle per 1.3; \"Start Printing\" `.btn-primary`. Mobile: Material Symbol `menu` disclosure nav — keyboard operable, closes on link click and `Esc`.\n- **Hero:** masthead composition — oversized Archivo Black headline with misregistration, subcopy, dual CTAs (`.btn-primary` + `.btn-secondary`), and a CSS-only riso artwork (overlapping circles, halftone fields, and blobs in pink\u002Fblue\u002Fyellow with multiply blending and bleed underlayers), plus a rotated stamp badge. Optional ink ticker strip below the hero (repeating tagline separated by Material Symbol glyphs) — must be static or paused under `prefers-reduced-motion`.\n- **Features:** 3 cards; each with a Material Symbol inside a rotated riso ink chip (yellow, blue, pink respectively), a title, and 2–3 lines of copy; alternating card rotations.\n- **How It Works:** 3 steps with oversized misregistered display numerals (01\u002F02\u002F03), a dashed ink connector line (horizontal on desktop, vertical on mobile), step titles and copy.\n- **Testimonials:** 3 zine-clipping style cards (`--radius-stamp`, tape\u002Fstamp visuals via CSS), oversized quote glyph, quote, attribution with initials in an ink circle plus role.\n- **Pricing:** 3 tiers with themed names (e.g., Single Sheet \u002F Stapled Zine \u002F Full Press Run); middle tier featured on a yellow ink panel with a rotated \"BEST VALUE\" stamp badge and larger shadow; each tier lists features with Material Symbol `check` in mint and a CTA (`.btn-primary` featured, `.btn-secondary` others).\n- **FAQ:** accessible accordion — `\u003Cbutton aria-expanded>` + controlled region, Material Symbol `expand_more` rotating 180°, CSS height transition, full keyboard operability; 5–6 real questions (turnaround, paper stocks, ink colors, file prep, bulk pricing, shipping).\n- **Final CTA:** full-bleed layered ink panel (pink + blue multiply layers), display headline, email capture per 2.4 with visible success\u002Ferror feedback.\n- **Footer:** indigo ink block with cream text in light mode (tokens inverted correctly in dark); columns of secondary links (About, Workshops, Stockists, Careers, Contact, Privacy, Terms); social icons as labeled Material Symbols; copyright line. All links show visible focus states and hover feedback.\n\n---\n\n## 3. Core UX & Micro-Interaction Rules\n\n- **Responsive by default:** fluid type via `clamp()`, standard breakpoints, zero horizontal overflow from 320px up.\n- **Smooth animations:** CSS transitions on all state changes using the transition tokens; under `prefers-reduced-motion`, disable the ticker, rotations, shimmer, and non-essential motion while keeping instant state changes.\n- **Accessibility:** AA contrast in both themes per the pairing rules in 1.2; never rely on color alone — pair every state with an icon and\u002For text; semantic HTML5 landmarks (`header`, `nav`, `main`, `section`, `footer`); logical DOM\u002Ffocus order; full keyboard operability for nav, accordion, modal, and forms; a skip-to-content link; `aria-live` regions for form feedback and any toasts.\n- **Mandatory visual feedback:** every click, hover, and submission triggers a visible state change.\n- **Destructive actions:** any delete\u002Fdanger action uses `.btn-danger` in riso red, visually distinct in both themes.\n\n---\n\n## 4. Deliverables & Output Format\n\n- **Files:** separate `index.html`, `style.css`, and `script.js`. A single `\u003Cscript src=\"script.js\" defer>` reference in the HTML; no inline script logic, no inline styles anywhere.\n- **Naming convention:** BEM (`block__element--modifier`) applied consistently across HTML, CSS, and JS hooks — never mix conventions.\n- **Copy:** real English copy for every section per 0.3; placeholders only for genuinely unspecified content, clearly marked.\n- **Completeness:** deliver all sections, all component states, and both themes in this single response — no stubs, no \"to be continued.\"\n",1791954982153]