[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"prompt-818-Anti-Design":3},"# CODING AGENT PROMPT — Build a Complete \"Anti-Design\" (Brutalist) Landing Page\n\n**Role:** Act as a Senior Frontend Engineer and Expert UI Designer. Produce the complete, production-ready landing page in your first response — full HTML, full CSS, full JS. No placeholders, no TODOs, no truncation.\n\n---\n\n## 0. PROJECT BRIEF & THEME DIRECTION\n\n- **Theme:** Anti-Design (claude-artisan\u002Fbrutalist), 2016–present. A reaction against polished \"design-by-committee\" minimalism.\n- **Keywords:** Anti-Design, ugly design, undesign, deliberate rule-breaking, clashing type, misalignment, default\u002Fsystem styling embraced, rejection of visual hierarchy conventions, provocative, expressive, DIY, brutalist.\n- **Visual Direction:** Balenciaga site experiments; art\u002Ffashion microsites.\n- **Signature Moves (apply everywhere):** hard offset double drop-shadows in clashing colors (mis-registered print plates), slight rotation on every surface via `--tilt-a` \u002F `--tilt-b`, 0px border radius, mixed default system fonts, dashed focus outlines, abrupt `steps(1)` transitions, exaggerated default-browser type sizes.\n- **Color Palette (Light):** bg `#ffe600`, surface `#ff00ff`, surface-strong `#00ffff`, border `#000000`, text `#000000`, text-muted `#1a1a1a`, primary `#0000ff`, accent `#ff0000`.\n- **Light\u002FDark:** The source does not declare modes; you must define, implement, and validate both light and dark before publishing (see Rule 1.3).\n- **Mandatory Sections (in this order):** Sticky Nav (with theme toggle), Hero, Features (3 cards), How It Works (3 steps), Testimonials (3 quotes), Pricing (3 tiers), FAQ (5–6 items, accordion), Final CTA (email capture), Footer with secondary links.\n- **Copy:** All user-facing copy in **English**. Write original, provocative, DIY-voice copy for a coherent fictional product (e.g., a \"deliberately unpolished\" tool\u002Fservice). Lorem ipsum is forbidden.\n- **Aesthetic Guardrail (non-negotiable):** The provocation lives **only in decoration** — tilts, clashing shadows, mixed type, hard borders, misregistered offsets. It must never damage usability: body text contrast ≥ 4.5:1 in both modes, interactive targets ≥ 44×44px, full keyboard operability, logical DOM\u002Freading order. Intentional misalignment is achieved **only via `transform`** (rotate\u002Ftranslate) — never by breaking the flex model, document flow, or semantic order.\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- Target everything via class\u002FID selectors. Keep HTML semantic and style-agnostic.\n- Adopt the provided base component classes (`.nav`, `.btn`, `.card`, `.input`, `.badge`) verbatim as your foundation, then extend them with BEM modifiers (`.btn--primary`, `.card--feature`, `.faq__item`, etc.).\n\n**1.2 CSS Variables & Theme Tokens**\nStore all tokens in `:root`. Start from this block and extend it with the mandatory canonical aliases:\n\n```css\n\u002F* Anti-Design — design tokens *\u002F\n\u002F* 2016–present | Reaction against polished 'design-by-committee' minimalism *\u002F\n\u002F* Reference specification: references\u002F00-flagship-implementation-specs\u002Fanti-design.md *\u002F\n:root {\n  \u002F* color *\u002F\n  --color-bg: #ffe600;\n  --color-surface: #ff00ff;\n  --color-surface-strong: #00ffff;\n  --color-border: #000000;\n  --color-text: #000000;\n  --color-text-muted: #1a1a1a;\n  --color-primary: #0000ff;\n  --color-accent: #ff0000;\n\n  \u002F* mandatory canonical aliases *\u002F\n  --primary: var(--color-primary);\n  --secondary: var(--color-accent);\n  --bg-primary: var(--color-bg);\n  --bg-secondary: var(--color-surface);\n  --text-primary: var(--color-text);\n  --text-secondary: var(--color-text-muted);\n  --text-success: #006400;   \u002F* must validate ≥4.5:1 on every surface it renders on *\u002F\n  --text-error: #b30000;     \u002F* decorative #ff0000 is reserved for borders\u002Fshadows\u002Flarge display text only *\u002F\n  --border-default: var(--color-border);\n  --border-error: #b30000;\n  --border-success: #006400;\n  --focus-color: #0000ff;    \u002F* redefined in dark mode — see 1.3 *\u002F\n\n  \u002F* radius: none, deliberately harsh defaults *\u002F\n  --radius-sm: 0px; --radius-md: 0px; --radius-lg: 0px; --radius-pill: 0px;\n\n  \u002F* shadow: clashing double offset, mimicking mis-registered print *\u002F\n  --shadow-sm: 3px 3px 0 #ff0000;\n  --shadow-md: 5px 5px 0 #0000ff, -3px -3px 0 #00ffff;\n  --shadow-lg: 8px 8px 0 #ff0000, -5px -5px 0 #0000ff;\n\n  \u002F* font: deliberately clashing default-browser choices *\u002F\n  --font-sans: 'Times New Roman', Times, serif;\n  --font-display: 'Comic Sans MS', 'Chalkboard SE', cursive;\n  --font-mono: 'Courier New', monospace;\n  --font-base: var(--font-sans);\n\n  \u002F* text: default browser sizes exaggerated *\u002F\n  --text-xs: 0.7rem; --text-sm: 0.9rem; --text-base: 1rem; --text-lg: 1.2rem;\n  --text-xl: 1.6rem; --text-2xl: 2.1rem; --text-3xl: 2.8rem;\n  --text-4xl: 3.6rem; --text-5xl: 4.8rem;\n\n  \u002F* space *\u002F\n  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;\n  --space-6: 24px; --space-8: 32px; --space-12: 48px; --space-16: 64px; --space-24: 96px;\n  --spacing-gap: var(--space-4);\n\n  \u002F* transitions: abrupt, no easing — but durations exist so state changes are perceivable *\u002F\n  --transition-fast: 60ms; --transition-normal: 120ms; --ease-standard: steps(1);\n\n  \u002F* elevation\u002Fstacking *\u002F\n  --z-dropdown: 1000; --z-modal: 1100; --z-toast: 1200;\n\n  \u002F* intentional misregistration rotation *\u002F\n  --tilt-a: rotate(-1.6deg);\n  --tilt-b: rotate(1.1deg);\n}\n```\n\n- **Contrast Pairing:** Every light background token pairs with dark text and vice versa — enforce for **both** themes, not just the default. Neon surfaces (`#ff00ff`, `#00ffff`) pair with `#000000` text (validated: 6.7:1 and ~16.7:1); the yellow bg pairs with `#000000` (~16.5:1).\n- **Light Mode Background:** The theme bg is `#ffe600` — never pure white. Where a near-white surface is needed (inputs), use **`#fefefe`, not `#ffffff`** — correct the provided `.input` rule accordingly.\n- **Success\u002FError tokens:** Body-size feedback text must pass 4.5:1 against the surface it renders on. The raw `#ff0000` accent fails 4.5:1 on `#ffe600` for body text — use the darker `--text-error` for messages and keep `#ff0000` for decorative borders\u002Fshadows\u002Flarge display type. Validate every token\u002Fsurface pair and document values in CSS comments.\n\n**1.3 Mandatory Dark Mode**\n- Dark Mode **must always be defined**, even though the source theme did not declare it.\n- Implement token overrides under both `@media (prefers-color-scheme: dark)` (for `:root` without an explicit user class) **and** a `.dark` class on `\u003Chtml>`, so variables switch with zero HTML restructuring. Set the `color-scheme` property per mode so native form controls match.\n- **Suggested dark palette (validate before publishing):** `--color-bg: #1a1a1a`, `--color-text: #ffffff`, `--color-text-muted: #d9d9d9`, `--color-border: #fefefe` (black borders would vanish on a dark page — borders on neon surfaces may stay `#000000` where contrast validates), `--focus-color: #ffff00`, `--text-success: #00ff00`, `--text-error: #ff4d4d`. Neon surfaces keep their `#000000` text pairing in both modes.\n- **Persistence:** Read the user's choice from `localStorage` (falling back to `prefers-color-scheme` on first visit), apply it before first paint to avoid a flash, and expose a visible toggle in the nav: a real `\u003Cbutton>` with `aria-pressed` and `aria-label` (\"Toggle dark mode\"), a Google Material icon (`dark_mode` \u002F `light_mode`) swapped via CSS classes, and a perceivable pressed state in both themes.\n\n**1.4 Flexbox Layout & Mobile-First Alignment**\n- Build all layout structures with Flexbox.\n- **Default Alignment Rule:** every flex container defaults to `align-items: center` unless there is an explicitly justified exception. **Exception clause (theme-specific):** card rows (Features, Testimonials, Pricing) may use `align-items: flex-start` so tilted cards of differing heights don't stretch — document each exception in a CSS comment.\n- **Misalignment exception:** all \"broken grid\" effects come from `transform: var(--tilt-a|b)` and offset shadows — never from mixed `align-items`\u002F`justify-content` chaos or negative-margin flow breaks.\n- **Mobile-first:** rows collapse to columns below ~640px; nothing may cause horizontal scrolling. Because rotated surfaces can overflow, set `overflow-x: clip` on `body`\u002F`main` and keep tilts contained within section padding.\n- The sticky nav must stay fully usable on mobile (flex-wrap, no horizontal scroll, no hidden links).\n\n**1.5 Framework Default**\n- Implement with clean custom CSS in `style.css` driven by the token block above (Tailwind is acceptable only if all utilities map back to these variables via `@theme`\u002F`@layer`\u002F`@apply`). Every reusable pattern must resolve to a generic class (`.btn`, `.card`, `.input-group`, `.badge`, `.toast`).\n\n**1.6 Typography & Icons (Google Fonts Mandatory)**\n- **Icons:** Google Material Symbols only. Include the Material Symbols stylesheet and use `\u003Cspan class=\"material-symbols-rounded\">…\u003C\u002Fspan>`. Raw inline SVGs and local icon files are **forbidden**.\n- **Fonts:** Include Google Fonts `\u003Clink>` tags. **Exception clause:** the theme's system-font stacks (`'Times New Roman'`, `'Comic Sans MS'`\u002F`'Chalkboard SE'`, `'Courier New'`) are the *deliberate* Anti-Design choice and take precedence — but the Google Fonts link must still be included, loading fallback faces slotted *inside* those stacks (e.g., a clashing display face and a mono face appended after the system fonts) so typography never silently breaks on platforms lacking Comic Sans\u002FTimes.\n\n---\n\n## 2. COMPONENT DESIGN SPECIFICATIONS\n\n**2.1 Buttons — every state styled via CSS classes**\n- **Default:** `display: flex; align-items: center; justify-content: center; gap: 0.5rem;` bold `--font-display`, 3px solid border, `--shadow-sm`, `transform: var(--tilt-b)`, minimum touch target 44×44px.\n- **Hover:** background shift (`#d0d0d0`) **and** `transform: rotate(0deg)` (the button \"straightens out\" — the theme's signature hover), `cursor: pointer`.\n- **Focus:** `.btn:focus-visible` renders `outline: 4px dashed var(--focus-color); outline-offset: 4px;` — visible in both modes (the offset renders the ring against the page background, where it passes 3:1).\n- **Active:** `box-shadow: none; transform: translate(3px, 3px);` — the mis-registered print plate \"presses in\".\n- **Loading (`.btn--loading`):** pointer-events disabled, double-click prevented, a Google Material icon (`progress`) spinning via CSS keyframes **without changing button dimensions** (reserve the icon space; under `prefers-reduced-motion`, replace the spin with a static \"LOADING…\" text label or opacity pulse so the state stays perceivable).\n- **Disabled:** `opacity: 0.5`, grayscale filter, `cursor: not-allowed`, no hover transform.\n- **Success\u002FError (`.btn--success`, `.btn--error`):** temporary feedback styles driven by `--text-success`\u002F`--text-error` and `--border-success`\u002F`--border-error`, paired with icon + text (never color alone).\n- **Danger (`.btn--danger`):** define it even if unused — visually distinct in **both** themes (red border + validated red text pairing on its actual surface).\n\n**2.2 Cards — Features, Testimonials, Pricing tiers**\n- **Default:** flex column layout, `--bg-secondary` (or `--surface-strong` for the highlighted pricing tier) with `#000000` text pairing, 3px border, `--shadow-lg`, alternating `--tilt-a`\u002F`--tilt-b` between siblings.\n- **Hover:** visible shift — the tilt inverts or straightens and the shadow offsets grow (e.g., `9px 9px 0`), no soft blur, `transition: var(--transition-normal) var(--ease-standard)`.\n- **Focus-within:** when a child link\u002Fbutton receives focus, the card border switches to `--focus-color` (dashed) so keyboard users see which card holds focus.\n- **Loading (`.card--skeleton`):** hard-edged stepped shimmer (animated `repeating-linear-gradient`, no blur) that preserves exact layout dimensions; disabled under `prefers-reduced-motion`.\n- **Empty (`.card--empty`):** fallback layout with a Material icon and clear guidance copy — define the class in CSS even if unused.\n\n**2.3 Forms & Inputs — Final CTA email capture**\n- **Structure:** `.input-group` flex container wrapping a `\u003Clabel>`, the `.input` field, and a dedicated `.input-error` container with `aria-live=\"polite\"`.\n- **States (all as classes):** empty, focus (4px dashed `--focus-color` outline), filled, valid (`--border-success` + check Material icon), invalid (`--border-error`, error text in `--text-error`, error icon), disabled, read-only.\n- **Input background must be `#fefefe`**, never `#ffffff`. Placeholder: italic, `--text-secondary`.\n- **JS behavior (in `script.js`):** on submit — prevent default, validate email format, render the inline error into the aria-live container on failure, set `.input--valid`\u002F`.input--invalid`, drive the button through loading → success\u002Ferror states, and fire a toast (below). Prevent double submission; never rely on color alone (icon + message always accompany state).\n\n**2.4 Toast (feedback surface) & Modal (conditional)**\n- **Toast:** a single fixed-position `role=\"status\"` \u002F `aria-live=\"polite\"` region that always exists in the DOM, shown\u002Fhidden via a class, stacked at `--z-toast`, dismissible, auto-hiding (~4s), with success and error variants using validated token pairings in both modes.\n- **Modal (only if you add one, e.g., a \"Why does it look like this?\" explainer from the Hero):** states opening\u002Fopen\u002Floading\u002Fsuccess\u002Fclosing animated with `steps(1)` easing; centered flex overlay (`align-items: center`) with backdrop at `--z-modal`; Google Material icon close button; keyboard focus trap; closable via `Esc` and overlay click; content hidden from AT when closed.\n\n**2.5 FAQ Accordion**\n- Build with native `\u003Cdetails>`\u002F`\u003Csummary>` or a `button[aria-expanded]` + panel pattern — either way: fully keyboard operable, visible dashed focus ring on the trigger, closed content truly hidden from assistive tech, and open\u002Fclose animation respecting `prefers-reduced-motion`.\n\n---\n\n## 3. SECTION-BY-SECTION BUILD REQUIREMENTS\n\n- **Nav (sticky):** `.nav` per the base spec — `#00ffff` surface, 3px border, `--shadow-md`, `--tilt-a`. Contains the fictional product wordmark (deliberately clashing `--font-display`), anchor links to every section, and the theme toggle. `z-index: var(--z-dropdown)`.\n- **Hero:** oversized `--font-display` headline (clamp up to `--text-5xl`), a subline in `--font-mono`, a tilted `.badge`, two CTAs (`.btn--primary` + `.btn`), a deliberately \"broken\" decorative frame built from surface colors + clashing shadows, and a CSS-animated marquee strip of repeated uppercase mono text (duplicate content `aria-hidden=\"true\"`; animation stops under reduced motion). Semantic `\u003Csection aria-labelledby>`.\n- **Features (3 cards):** flex row → column on mobile; each `.card--feature` has a Material icon, `\u003Ch3>`, and copy; alternate tilts and shadow directions between cards.\n- **How It Works (3 steps):** semantic `\u003Col>` with three `\u003Cli>` steps; oversized `--font-display` numerals that overlap their edges **via transform only**; `--font-mono` step titles; DOM order remains 1 → 2 → 3.\n- **Testimonials (3 quotes):** `.card--testimonial` with `\u003Cblockquote>` + `\u003Ccite>`, tilted `.badge` author chips, alternating tilts. Demonstrate or define `.card--skeleton` for these cards.\n- **Pricing (3 tiers):** flex row → column; middle tier highlighted with `--surface-strong` bg and a tilted \"MOST POPULAR\" `.badge`; huge clashing prices; feature lists using check\u002Fclose Material icons **paired with text** (never icon-only); each tier ends in a CTA button (`.btn--primary` on the highlighted tier).\n- **FAQ:** 5–6 genuine Q&A pairs in the product's DIY voice, accordion per 2.5, dashed borders and mono numbering.\n- **Final CTA:** giant tilted display headline + the email capture form per 2.3, with toast feedback per 2.4.\n- **Footer:** semantic `\u003Cfooter>`; flex layout with grouped secondary links (Product \u002F Company \u002F Legal) collapsing to a column on mobile; muted text at validated contrast; every link keyboard-focusable with a dashed underline focus style.\n\n---\n\n## 4. CORE UX & MICRO-INTERACTION RULES\n\n- **Responsive by default:** fluid type via `clamp()`, breakpoints without horizontal overflow (tilts contained per 1.4).\n- **Transitions:** every state change uses `transition: var(--transition-fast|normal) var(--ease-standard)` — **exception clause:** abrupt `steps(1)` easing is the theme's deliberate signature and replaces smooth easing, but every hover\u002Ffocus\u002Factive\u002Fsubmission **must still produce a clearly perceivable change**. `prefers-reduced-motion: reduce` disables marquee, shimmer, spin, and animated transforms (static tilts may remain; loading feedback switches to a text\u002Fopacity alternative).\n- **Accessibility:** sufficient contrast in both Light and Dark modes (validate every text\u002Fborder\u002Ffocus token against every surface it renders on); semantic HTML5 landmarks; correct ARIA roles\u002Flabels on the toggle, accordion, toast, and any modal; logical focus order; full keyboard operability; `aria-live` regions for form errors, toasts, and loading; state is never communicated by color alone.\n- **Mandatory visual feedback:** every click, hover, focus, and submission triggers a visible state change.\n- **Destructive\u002Fdistinct actions:** `.btn--danger` is distinct in both themes.\n\n---\n\n## 5. DELIVERABLES & OUTPUT FORMAT\n\n- **Files:** `index.html`, `style.css`, `script.js` — three separate files. No inline `style` attributes. No inline `\u003Cscript>` blocks beyond the single deferred `script.js` reference.\n- **Naming:** one consistent BEM convention across the entire deliverable (base blocks `.nav`, `.btn`, `.card`, `.input`, `.badge`, `.toast`; modifiers like `.btn--primary`, `.card--feature`, `.faq__item`). Never mix conventions.\n- **JS scope (in `script.js` only):** theme init\u002Fpersist\u002Ftoggle, FAQ accordion behavior (if JS-enhanced), CTA form validation + loading\u002Fsuccess\u002Ferror flow, toast manager. Nothing else.\n- **Copy:** real, original English copy everywhere — no lorem ipsum, no placeholder text.\n- **Completeness:** output the entire landing page in one response — complete HTML, complete CSS, complete JS. No omissions, no \"rest follows the same pattern\" shortcuts.\n",1791954993399]