[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"prompt-191-Blueprint-Technical-Drawing":3},"# BUILD PROMPT — Complete Landing Page: \"Blueprint \u002F Technical Drawing\" Theme (Data & Engineering)\n\n**Your Role:** You are a Senior Frontend Engineer and Expert UI Designer. Your task is to code a complete, production-quality landing page on the first attempt. You write all HTML, CSS, and JS yourself, in full, immediately. Where any habit or convenience conflicts with a rule below, the rule wins.\n\n**Project Brief:**\n- **Product (invented, realistic):** \"DraftLine\" — a data-pipeline design, versioning, and observability platform for data engineering teams. Output category: Data & Engineering.\n- **Copy Language:** All user-facing copy must be written in **English**. Write realistic, specific product copy — real feature names, plausible metrics, real-sounding testimonials and FAQs. Lorem ipsum is forbidden anywhere in the deliverable.\n- **Theme:** Blueprint \u002F Technical Drawing — drafting heritage. White line-work on a cyan\u002Fblue ground, grid paper, dimension lines, callouts, monospace annotations. Precise, technical, honest. Straight edges (0px radius), hairline dashed \"dimension\" borders, and uppercase monospace callout labels repeated across nav, cards, and inputs.\n- **Required sections:** Hero, Features (3 cards), How It Works (3 steps), Testimonials, Pricing (3 tiers), FAQ, Final CTA, Footer with secondary links.\n\n---\n\n## 1. STRICT RULES & ARCHITECTURE\n\n### 1.1 CSS-First Architecture & Zero Inline CSS\n- **No Inline CSS:** The `style=\"...\"` attribute is forbidden anywhere in the HTML. No `\u003Cstyle>` blocks in the HTML.\n- **Class\u002FID Selectors Only:** All design properties, layout rules, and states are targeted via class or ID selectors in `style.css`.\n- **Minimal HTML Modifications:** HTML must remain clean, semantic, and style-agnostic — re-theming the site requires editing only `style.css`, never the markup.\n- **CSS-Only Decoration:** All blueprint flourishes (corner crosshair ticks, dimension-line arrowheads, connector lines, grid overlays) must be built with pseudo-elements and CSS backgrounds — never extra DOM nodes, never inline SVG.\n\n### 1.2 CSS Variables & Theme Tokens\nStore all visual tokens in `:root` (light theme) with dark-theme overrides (see 1.3). Use these **canonical names and values**:\n\n**Light theme — \"Drafting Paper\" (default, `:root`):**\n- `--bg-primary: #f2f7fc` (cool drafting paper; never `#ffffff`), `--bg-secondary: #e6eff9`, `--bg-elevated: #dcebf8`\n- `--primary: #0d3b66`, `--secondary: #8a5a00` (accessible amber ink), `--accent: #ffb703` (decorative line-work only, never for text on light surfaces)\n- `--text-primary: #0d3b66`, `--text-secondary: #33597e`, `--text-success: #0e7a3f`, `--text-error: #b3261e`\n- `--border-default: #135a96`, `--border-success: #0e7a3f`, `--border-error: #b3261e`\n- `--grid-line: rgba(13,59,102,0.10)`, `--card-bg: rgba(254,254,254,0.7)`\n- Shadows: `--shadow-sm: 0 1px 0 rgba(13,59,102,0.18)`, `--shadow-md: 0 2px 8px rgba(13,59,102,0.16)`, `--shadow-lg: 0 6px 18px rgba(13,59,102,0.20)`\n\n**Dark theme — \"Cyanotype\" (`.dark` class + `prefers-color-scheme: dark`):**\n- `--bg-primary: #0d3b66`, `--bg-secondary: #0f4a7d`, `--bg-elevated: #135a96`\n- `--primary: #ffffff`, `--secondary: #ffb703`, `--accent: #ffb703`\n- `--text-primary: #eaf4ff`, `--text-secondary: #9fc4e6`, `--text-success: #7be3a2`, `--text-error: #ff8f8f`\n- `--border-default: #bcd9f0`, `--border-success: #7be3a2`, `--border-error: #ff8f8f`\n- `--grid-line: rgba(234,244,255,0.14)`, `--card-bg: rgba(255,255,255,0.03)`\n- Shadows: `--shadow-sm: 0 1px 0 rgba(255,255,255,0.15)`, `--shadow-md: 0 2px 8px rgba(0,0,0,0.35)`, `--shadow-lg: 0 6px 18px rgba(0,0,0,0.4)`\n\n**Shared tokens (both themes):**\n- `--radius-sm: 0px; --radius-md: 0px; --radius-lg: 0px; --radius-pill: 2px` (drafting is all straight edges)\n- `--spacing-gap: 1rem`, plus the full reference scale `--space-1` (4px) through `--space-24` (96px)\n- `--transition-fast: 120ms; --transition-normal: 200ms; --ease-standard: linear` (per the theme's drafting aesthetic)\n- `--z-dropdown: 100; --z-modal: 200; --z-toast: 300`\n- Type scale: `--text-xs` (0.75rem) through `--text-5xl` (4rem) exactly as in the reference token block\n- `--dim-line: 1px dashed var(--text-secondary)` and `--bg-grid` (two `linear-gradient` layers over `--grid-line`), applied to `body` as grid paper at `background-size: 24px 24px`; an optional stronger major grid line every 120px is encouraged\n- **Contrast Pairing:** Every light surface token pairs with dark ink tokens and every dark surface with light ink tokens — verify WCAG AA in both themes. Where a near-white surface is needed, use `#fefefe`, never `#ffffff`.\n\n### 1.3 Mandatory Dual-Mode Theming (Light + Dark)\nThe source specification does not declare modes; you must implement and validate **both** before publishing:\n- **Implementation:** Light tokens in `:root`; dark overrides defined in **both** `@media (prefers-color-scheme: dark)` and a `.dark` class on `\u003Chtml>` (the class always wins). Provide a `.light` class that forces light mode.\n- **Theme Switching:** Background, text, border, grid, and shadow variables must flip seamlessly with zero HTML restructuring. Both modes must preserve the blueprint language: light = blue ink line-work on drafting paper; dark = white line-work on cyanotype blue.\n- **Persistence:** Store the user's choice in `localStorage` (key `theme`: `\"light\"` | `\"dark\"`); on first visit, fall back to `prefers-color-scheme`. All logic lives in the single deferred `script.js` — no inline scripts.\n- **Toggle Control:** A visible button in the nav using Material Symbols (`light_mode` \u002F `dark_mode`) with correct `aria-pressed` state and a dynamic `aria-label` (\"Switch to dark theme\" \u002F \"Switch to light theme\").\n\n### 1.4 Flexbox Layout & Mobile-First Alignment\n- Build all layout structures with **Flexbox**. Every flex container **must default to `align-items: center`** unless an exception is explicitly justified in a CSS comment.\n- **Mobile-Friendly First:** Single-column layouts by default; multi-column arrangements at `≥768px` and `≥1024px` via flex-wrap and media queries. No horizontal scrolling at any viewport width from 320px up.\n- Card grids (Features, Testimonials, Pricing): flex with wrap — 1 column mobile → 3 columns desktop.\n\n### 1.5 CSS Approach\n- Use **clean custom CSS** in `style.css` (no Tailwind build step, no CSS frameworks, no CDN stylesheets). Organize the file: tokens → base → components → sections → utilities.\n- Port the reference base classes (`.nav`, `.btn`, `.btn--primary`, `.card`, `.input`, `.badge`) to the canonical token names above, then extend them with BEM elements\u002Fmodifiers. No one-off styles.\n\n### 1.6 Typography & Icons (Google Fonts Mandatory)\n- **Text:** Load **Archivo** (400\u002F500\u002F600\u002F700\u002F800) and **IBM Plex Mono** (400\u002F500\u002F600) from Google Fonts via `\u003Clink>` with `preconnect`. Bind `--font-base`\u002F`--font-display` to Archivo and `--font-mono` to IBM Plex Mono.\n- **Icons:** Use **Google Material Symbols (Outlined)** only. Raw inline SVGs, local icon files, and emoji-as-icons are forbidden.\n- **Type roles:** Headings = Archivo, bold, tight tracking (H1 via `clamp()` from `--text-3xl` mobile to `--text-5xl` desktop). Labels, callouts, annotations, buttons, nav wordmark, and card titles = IBM Plex Mono, uppercase, letter-spacing 0.06–0.08em. Body = Archivo at `--text-base`, line-height 1.6.\n\n---\n\n## 2. COMPONENT DESIGN SPECIFICATIONS\n\n### 2.1 Button Component (`.btn`, `.btn--primary`, `.btn--danger`)\nStyle every state via CSS classes:\n- **Default:** `display: flex; align-items: center; justify-content: center; gap: 0.5rem`; mono font, uppercase; minimum touch target 44×44px; 1px solid border; `border-radius: var(--radius-pill)`; transparent background; `transition: background-color var(--transition-fast) var(--ease-standard), color var(--transition-fast) var(--ease-standard)`.\n- **`.btn--primary`:** Filled with `var(--primary)`, text in `var(--bg-primary)` — white-on-blue in dark mode, blue-on-paper in light mode.\n- **Hover:** Background overlay shift (e.g., `rgba(255,255,255,0.08)` dark \u002F `rgba(13,59,102,0.06)` light) with `cursor: pointer`.\n- **Focus-visible:** `outline: 2px solid var(--secondary); outline-offset: 2px`.\n- **Active\u002FPressed:** `transform: scale(0.97)`.\n- **Loading (`.is-loading`):** Disables pointer events and prevents double-clicks; renders a CSS ring spinner (or rotating Material Symbol) inside a fixed-size box so button dimensions never change; announced to assistive tech when the action is async.\n- **Disabled:** `opacity: 0.5`, greyscale, `cursor: not-allowed`.\n- **Success\u002FError (`.is-success` \u002F `.is-error`):** Temporary feedback state tinting border and text with `--text-success` \u002F `--text-error`, reverting after ~2s.\n- **`.btn--danger`:** Visually distinct in both themes via `--border-error`\u002F`--text-error`; define it even if the landing page currently has no destructive action.\n\n### 2.2 Card Component (`.card`)\n- **Default:** `border: var(--dim-line)`, `border-radius: 0`, `padding: var(--space-6)`, `background: var(--card-bg)`, `position: relative`; corner crosshair \"+\" tick marks via `::before`\u002F`::after`. Card titles in mono uppercase per the reference.\n- **Hover (interactive cards):** `transform: translateY(-2px)` plus a shadow shift.\n- **Focus-within:** Border color shifts to `var(--secondary)` when a child link\u002Fbutton receives focus.\n- **Loading (Skeleton):** `.card--skeleton` shimmer blocks that match final content dimensions (no layout jump), `aria-busy=\"true\"` while loading; shimmer animation disabled under `prefers-reduced-motion`.\n- **Empty State (`.card--empty`):** Structured fallback layout with a Material Symbol icon and clear guidance text; define the class in CSS with a usage comment for future empty lists.\n\n### 2.3 Form & Input Requirements (`.field`, `.input`)\n- **Structure:** A flex `.field` container wrapping a `\u003Clabel>`, the `\u003Cinput class=\"input\">`, and a dedicated `.field__error` message container.\n- **States:** Empty; Focused (accent border + `box-shadow: 0 0 0 1px var(--secondary)` ring per the reference); Filled; Valid (success border + Material Symbol `check` — never color alone, always icon + text); Invalid (error border, `--text-error` message, error icon, message exposed via `aria-live=\"polite\"`); Disabled; Read-only.\n- **Final CTA email form:** Client-side validation, inline errors, loading button state, and a success message region (`aria-live`). No backend — simulate submission with a short timeout.\n\n### 2.4 Modal \u002F Popup (conditional — only if you add one, e.g., a \"View full plan details\" dialog in Pricing)\n- **States:** Opening, Open, Loading, Success\u002FError, Closing — all animated via CSS transitions using the transition tokens.\n- **UX:** Centered flex overlay (`align-items: center`) with backdrop; Material Symbol close button; keyboard focus trapping; close via `Esc` and overlay click; stacked at `--z-modal`; focus returns to the trigger on close.\n\n### 2.5 FAQ Accordion\n- Trigger buttons with `aria-expanded` + `aria-controls`; panels with `role=\"region\"` and `aria-labelledby`; Material Symbol `expand_more` chevron rotating 180°; CSS-animated expand\u002Fcollapse (`grid-template-rows` or `max-height`) at `var(--transition-normal)`; fully keyboard operable; dashed separators between items.\n\n---\n\n## 3. CORE UX & MICRO-INTERACTION RULES\n\n- **Responsive by Default:** Fluid sizing via `clamp()` where helpful; zero horizontal overflow; verify at 320px.\n- **Smooth Animations:** CSS transitions on all state changes using the tokens; `--ease-standard: linear` per the drafting aesthetic. **`prefers-reduced-motion: reduce` must disable transforms, shimmer, smooth scrolling, and accordion animation.**\n- **Accessibility (a11y):** AA contrast in both Light and Dark modes; never rely on color alone to communicate state; semantic HTML5 (`header`, `nav`, `main`, `section`, `footer`), exactly one `\u003Ch1>` with logical heading order; a skip link; visible focus on every interactive element; full keyboard operability (no mouse-only interactions); `aria-live` regions for form feedback and dynamic price changes.\n- **Mandatory Visual Feedback:** Every click, hover, and submission triggers a visible state change.\n- **Sticky header:** `--z-dropdown` stacking, semi-transparent theme-tinted background with blur, dashed bottom border; anchor navigation uses smooth scrolling (respecting reduced motion) with `scroll-margin-top` on sections.\n\n---\n\n## 4. PAGE SECTION SPECIFICATIONS\n\nGlobal pattern: every section opens with a monospace index label (e.g., `SEC. 01 — HERO`) over a dashed rule; vertical rhythm of `--space-24` between sections; content container max-width ~1200px.\n\n### 4.1 Nav + Hero\n- **Nav:** Mono wordmark \"DRAFTLINE\"; anchor links (Features, How It Works, Testimonials, Pricing, FAQ); theme toggle (per 1.3); primary CTA \"Start Drafting\"; mobile hamburger disclosure (`aria-expanded`, panel at `--z-dropdown`, closes on `Esc` and link click).\n- **Hero:** Two-column desktop, stacked mobile. Left: mono callout eyebrow (\"DWG NO. 001 — DATA INFRASTRUCTURE\"), H1 (e.g., \"Draft your data pipelines like blueprints.\"), subcopy, primary + secondary CTAs, and a mono annotation line (\"SCALE 1:1 · REV A · SHEET 1\u002F1\").\n- **Right:** A CSS-only schematic illustration — a pipeline diagram (INGEST → TRANSFORM → SERVE nodes) drawn with dashed borders, grid alignment, dimension lines with arrowheads, and mono callout labels, built entirely from divs and pseudo-elements. No images, no SVG.\n- Optional trust strip: \"TRUSTED BY DATA TEAMS AT\" with monospace text wordmarks.\n\n### 4.2 Features — 3 Cards\n- Section label \"SEC. 02 — FEATURES\", H2, one-line intro.\n- Three `.card` items, each with a Material Symbol icon in a dashed square (e.g., `schema`, `account_tree`, `monitoring`), mono uppercase title, body copy, and a mono \"FIG. 0X\" callout. Suggested features: version-controlled schemas, end-to-end lineage, live pipeline telemetry.\n- Cards render in skeleton state on first paint (~600ms) before revealing content; hover lift and focus-within highlight per 2.2.\n\n### 4.3 How It Works — 3 Steps\n- Section label \"SEC. 03 — HOW IT WORKS\". Steps: `01 DRAFT`, `02 REVIEW`, `03 DEPLOY` — mono step numbers in dashed squares, titles, short copy.\n- Desktop: horizontal layout with dashed dimension-line connectors (with arrowheads) between steps; mobile: vertical layout with a vertical dashed connector. Connectors are pseudo-elements only.\n\n### 4.4 Testimonials\n- Section label \"SEC. 04 — FIELD REPORTS\". Three quote `.card` items: quote text, optional Material Symbol `format_quote`, mono attribution (\"— NAME · ROLE, COMPANY\"), optional five-star row using `star` symbols. Quotes must contain plausible data-engineering outcomes (migration time cut, incident resolution, audit readiness).\n\n### 4.5 Pricing — 3 Tiers\n- Section label \"SEC. 05 — PRICING\". A monthly\u002Fannual segmented-control toggle (`aria-pressed`, prices update with an `aria-live` announcement).\n- Tiers: DRAFT (free), STUDIO (featured), ENTERPRISE. The featured tier gets an accent dashed border, a `.badge` reading \"RECOMMENDED SPEC\", and slight elevation.\n- Each card: mono tier name, price, feature list with Material Symbol `check` icons, and a CTA (`.btn--primary` on the featured tier). Annual prices show the discount.\n\n### 4.6 FAQ\n- Section label \"SEC. 06 — FAQ\". Five to six realistic Q&As (data residency, integrations, schema versioning, pricing, onboarding, SLAs) as an accessible accordion per 2.5.\n\n### 4.7 Final CTA\n- Section label \"SEC. 07 — START DRAFTING\". A panel styled as an engineering drawing's **title block**: dashed grid rows of mono metadata (PROJECT \u002F DATE \u002F REV \u002F SHEET) framing an H2, supporting copy, and the email capture form per 2.3 with full empty\u002Ffocus\u002Ffilled\u002Fvalid\u002Finvalid\u002Floading\u002Fsuccess states.\n\n### 4.8 Footer\n- Multi-column flex layout: brand block with mono tagline; secondary link groups (Product, Company, Resources — use meaningful in-page anchors where targets exist; `href=\"#\"` is acceptable only for pages not yet built); social links as Material Symbols with `aria-label`s.\n- Bottom bar: `© 2025 DRAFTLINE`, mono \"REV A\" annotation, and legal links.\n\n---\n\n## 5. DELIVERABLE & OUTPUT FORMAT\n\n- **File Structure:** Separate `index.html`, `style.css`, and `script.js`. Exactly one `\u003Cscript src=\"script.js\" defer>\u003C\u002Fscript>` — no other script tags, no inline JavaScript, no inline styles.\n- **Naming Convention:** BEM only (`block__element--modifier`), consistent across the entire deliverable (`.nav__link`, `.btn--primary`, `.card__title`, `.field__error`). Never mix conventions.\n- **script.js scope:** theme init\u002Fpersistence\u002Ftoggle, mobile menu, accordion, pricing toggle, form validation + simulated submit states, skeleton reveal. No external libraries.\n- **No Unrequested Placeholders:** Realistic English copy everywhere; placeholder text is permitted only for link targets whose pages genuinely do not exist yet.\n- **Pre-publication validation (both themes):** contrast check, keyboard-only pass, logical focus order, 320px width check, and reduced-motion pass. Do not declare the build complete until all pass.\n",1791954982781]