[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"prompt-377-Kawaii-Doodle-Art":3},"# Build Specification — \"Kawaii Doodle Art\" Landing Page (Single-Attempt, Production-Ready)\n\n**Role:** Act as a Senior Frontend Engineer and Expert UI Designer. Generate the final, complete code for the landing page below in one attempt, immediately, without asking clarifying questions. Where anything is unspecified, make a reasonable decision that stays strictly on-theme.\n\n---\n\n## 1. Project Brief & Theme Direction\n\n**1.1 Theme — Kawaii Doodle Art**\nCute, playful, hand-drawn Japanese pop aesthetic (1970s–present). Keywords: kawaii, cute, doodle, hand-drawn, pastel, Japanese pop, chibi, stickers, sparkles, rounded. Output category: Playful & Youth. Every pixel must feel cute, friendly, and hand-crafted — never corporate, never sterile.\n\n**1.2 Product Concept & Copy**\nInvent ONE coherent product concept fitting the theme (e.g., \"a kawaii sticker & doodle studio app\") and write all copy around it. All user-facing copy is in **English**, playful and bubbly in tone (sparkly, friendly, youthful) and grammatically clean. No lorem ipsum anywhere — write real headlines, subcopy, feature descriptions, testimonial quotes, pricing details, and FAQ answers.\n\n**1.3 Page Structure (in this exact order)**\n1. Sticky header — logo, anchor navigation, theme toggle (required to house the visible dark mode control)\n2. Hero\n3. Features — 3 cards\n4. How It Works — 3 steps\n5. Testimonials\n6. Pricing — 3 tiers\n7. FAQ — accordion\n8. Final CTA (contains the email capture form)\n9. Footer with secondary link columns\n\n**1.4 Kawaii Visual Language (apply globally)**\n- **Hand-drawn doodle borders:** `border: 3px solid var(--border-default)` combined with organic asymmetric radii, e.g. `border-radius: 255px 20px 225px 20px \u002F 20px 225px 20px 255px;` plus a mirrored variant for variety.\n- **Sticker look:** cards, badges, and buttons = pastel fill + 3px ink border + hard offset shadow `var(--shadow-sticker)`, reading as stickers peeled onto the page.\n- **Sparkles & stars:** decorative Google Material Symbols (`auto_awesome`, `star`, `favorite`, `cloud`) as `aria-hidden=\"true\"` spans or pseudo-elements, with gentle float\u002Fwobble animations.\n- **Bouncy interactions:** hover = `transform: scale(1.05) rotate(2deg)` over `var(--transition-normal)` with `var(--ease-standard)`; active = `scale(0.97)`.\n- **Subtle wobble:** decorative elements idle-wobble ±2° on a 3–4s loop with staggered delays:\n\n```css\n@keyframes wobble { 0%, 100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }\n@keyframes float  { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }\n```\n\n- **Pastel gradients:** hero and final CTA panels use `var(--bg-gradient)`; the page base stays softly pastel-tinted.\n- **Rounded everything:** 20–30px radii via `--radius-md` \u002F `--radius-lg`; pill-shaped buttons.\n\n**1.5 Mandatory Exception Clause (inline SVG)**\nException: the source art direction requested chibi-style inline SVG illustrations and wavy SVG border filters; inline SVG is forbidden in this project — all illustration and doodle effects must be recreated with pure CSS (pseudo-elements, organic border-radius, gradients, clip-path shapes) and Google Material Symbols only.\n\n---\n\n## 2. Strict Rules & Architecture\n\n**2.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 via class\u002FID selectors only.\n- HTML stays semantic and styling-agnostic: re-theming the page must require edits to `style.css` only, never the markup.\n\n**2.2 CSS Variables & Theme Tokens**\nDefine every token in `:root` and re-declare the dark set under `.dark`. Required baseline (extend as needed):\n\n```css\n:root {\n  \u002F* Palette *\u002F\n  --primary: #FFB7C5;        \u002F* Sakura Pink *\u002F\n  --secondary: #89CFF0;      \u002F* Baby Blue *\u002F\n  --accent-mint: #98FB98;\n  --accent-lavender: #E6E6FA;\n  --accent-peach: #FFDAB9;\n  --accent-lemon: #FFFACD;\n  --accent-coral: #FF7F7F;\n  --accent-lilac: #DDA0DD;\n\n  \u002F* Surfaces & text (light) *\u002F\n  --bg-primary: #FFF8FB;     \u002F* sakura-tinted page base — never #ffffff *\u002F\n  --bg-secondary: #FEFEFE;  \u002F* card\u002Fsticker surfaces *\u002F\n  --text-primary: #4A3B52;   \u002F* deep plum ink *\u002F\n  --text-secondary: #7A6B85;\n  --text-on-accent: #4A3B52; \u002F* text on pastel fills — constant in BOTH themes *\u002F\n  --text-success: #2E7D5B;\n  --text-error: #C9384E;\n\n  \u002F* Borders *\u002F\n  --border-default: #4A3B52; \u002F* hand-drawn ink outline *\u002F\n  --border-error: #FF7F7F;\n  --border-success: #6FBF8F;\n\n  \u002F* Shape, depth, motion *\u002F\n  --radius-sm: 14px; --radius-md: 20px; --radius-lg: 28px;\n  --shadow-sm: 0 2px 6px rgba(74, 59, 82, 0.08);\n  --shadow-md: 0 6px 18px rgba(74, 59, 82, 0.14);\n  --shadow-sticker: 3px 3px 0 var(--border-default);\n  --spacing-gap: 1.5rem;\n  --transition-fast: 150ms; --transition-normal: 300ms;\n  --ease-standard: cubic-bezier(0.34, 1.56, 0.64, 1); \u002F* bouncy back-out *\u002F\n  --z-dropdown: 1000; --z-modal: 2000; --z-toast: 3000;\n\n  \u002F* Type *\u002F\n  --font-base: 'Nunito', sans-serif;\n  --font-display: 'Quicksand', sans-serif;\n\n  \u002F* Pastel gradients *\u002F\n  --bg-gradient: linear-gradient(135deg, #FFD9E8 0%, #D9EEFF 50%, #DFF7E6 100%);\n  --bg-gradient-soft: linear-gradient(180deg, #FFF3F7 0%, #F3F9FF 100%);\n}\n```\n\n- **Contrast pairing (mandatory in every theme):** light background tokens pair with dark text tokens and vice versa. Pastel accent fills always carry `--text-on-accent` text in both themes. Verify WCAG AA: 4.5:1 for body text, 3:1 for large text and UI borders in both modes.\n- Never use `#ffffff`; use `#FEFEFE` where a near-white is required.\n\n**2.3 Mandatory Dark Mode — \"Kawaii Night\"**\n- Dark tokens live under a `.dark` class on `\u003Chtml>` (single source of truth):\n\n```css\n.dark {\n  --bg-primary: #2B2337;    \u002F* deep plum *\u002F\n  --bg-secondary: #382E4A;\n  --text-primary: #FFF0F6;\n  --text-secondary: #C9BBD6;\n  --text-success: #7FD9A2;\n  --text-error: #FF9AA5;\n  --border-default: #F2DCE8; \u002F* light pastel ink = sticker outline on dark *\u002F\n  --border-error: #FF9AA5;\n  --border-success: #7FD9A2;\n  --shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.35);\n  --shadow-md: 0 6px 18px rgba(0, 0, 0, 0.45);\n  --shadow-sticker: 3px 3px 0 #1C1528;\n  --bg-gradient: linear-gradient(135deg, #352A4D 0%, #2B2337 50%, #2F2B45 100%);\n  --bg-gradient-soft: linear-gradient(180deg, #2E2540 0%, #2B2337 100%);\n}\n```\n\n- Pastel accents (`--primary`, `--secondary`, mint, lavender, etc.) stay light in dark mode so they pop; anything filled with them keeps `--text-on-accent` text.\n- **Theme switching:** `script.js` applies `.dark` based on `localStorage('theme')`, falling back to `prefers-color-scheme` on first visit; run this logic in the first lines of the deferred entry script to avoid a flash of the wrong theme. The header contains a visible toggle button with correct `aria-pressed` and `aria-label` (\"Switch to dark mode\" \u002F \"Switch to light mode\"), swapping Material Symbols `light_mode` \u002F `dark_mode`. Switching must require zero HTML restructuring.\n\n**2.4 Flexbox Layout & Mobile-First**\n- Build all layout structures with Flexbox (Tailwind `flex` utilities or custom flex classes).\n- Every flex container defaults to `align-items: center` unless an exception is explicitly justified in a CSS comment.\n- Mobile-first: rows become columns on small viewports; no horizontal scrolling at any width; fluid typography via `clamp()`.\n\n**2.5 Framework — Tailwind CSS**\n- Include Tailwind via the CDN `\u003Cscript src=\"https:\u002F\u002Fcdn.tailwindcss.com\">\u003C\u002Fscript>` (external reference only — no inline Tailwind config script).\n- Use Tailwind utilities strictly for structure: layout, spacing, and responsive breakpoints.\n- Every kawaii visual property (colors, borders, radii, shadows, fonts, animations) comes from custom BEM classes in `style.css` driven by the CSS variables above. No raw hex values inside class attributes.\n\n**2.6 Typography & Icons (Google Only)**\n- Load Google Fonts **Quicksand** (500–700; display\u002Fheadings) and **Nunito** (400–800; body) via `\u003Clink>`; bind to `--font-display` \u002F `--font-base`. Headings are bubbly and rounded; eyebrow labels use uppercase with letter-spacing.\n- Load Google Material Symbols (**Rounded** variant, prefer FILL 1 for extra cuteness where supported) via `\u003Clink>`. All icons come from Material Symbols. Inline SVGs, local icon files, and emoji-as-functional-icons are forbidden (see exception clause 1.5).\n\n---\n\n## 3. Component Design Specifications\n\n**3.1 Buttons (`.btn`, `.btn--primary`, `.btn--secondary`, `.btn--ghost`, `.btn--danger`)**\n- **Default:** `display: flex; align-items: center; justify-content: center; gap: 0.5rem;` minimum touch target 44×44px, pill or `--radius-md` radius, 3px ink border, sticker shadow, bold `--font-base`. Primary = Sakura fill + `--text-on-accent`; Secondary = Baby Blue fill + `--text-on-accent`; Ghost = transparent + ink border; Danger = Coral treatment, visually distinct in both themes.\n- **Hover:** bouncy `scale(1.05) rotate(2deg)` with the sticker shadow growing (e.g., 5px 5px 0), `cursor: pointer`.\n- **Focus:** `:focus-visible` shows a dashed ink ring — `outline: 3px dashed var(--border-default); outline-offset: 3px;` — hand-drawn and keyboard-friendly.\n- **Active\u002FPressed:** `transform: scale(0.97)`.\n- **Loading (`.is-loading`):** interactions disabled, double-clicks prevented, dimension-stable CSS spinner (rotating dashed circle) or pulsing Material Symbol; no layout shift.\n- **Disabled:** `opacity: 0.5`, greyscale filter, `cursor: not-allowed`, hover transforms removed.\n- **Success\u002FError (`.is-success`, `.is-error`):** temporary feedback styles using `--text-success` \u002F `--text-error` with matching border and icon — never color alone.\n\n**3.2 Cards (`.card` + modifiers)**\n- **Default:** flex column, `align-items: center`, `--bg-secondary` surface, 3px ink border, doodle (organic) border-radius, sticker shadow, comfortable padding.\n- **Hover (interactive cards):** `translateY(-2px)` combined with `scale(1.03) rotate(-1deg)` and a larger sticker shadow.\n- **Focus-within:** border shifts to `--primary` and the shadow glows when a child link\u002Fbutton receives focus.\n- **Loading (`.is-loading`):** shimmer skeleton overlay defined in CSS (`@keyframes shimmer`), preventing layout jumps.\n- **Empty state:** centered Google Icon + short guidance text fallback pattern.\n\n**3.3 Forms & Inputs (`.input-group`)**\n- Used for the email capture in the Final CTA.\n- **Structure:** flex container wrapping `\u003Clabel>`, `\u003Cinput>`, and a dedicated error\u002Fsuccess message container with `aria-live=\"polite\"`.\n- **States:** empty; focused (dashed ink ring); filled; valid (success border + `check_circle` icon + message); invalid (error border, `--text-error` message, `error` icon — icon AND text, never color alone); disabled; read-only.\n- Validate the email in `script.js`; on success show a success message and button success state. Never use blocking `alert()`.\n\n**3.4 FAQ Accordion**\n- Each item: `\u003Cbutton class=\"faq__question\" aria-expanded=\"false\" aria-controls=\"...\">` plus an answer region; a plus Material icon rotates on open.\n- Animated open\u002Fclose via CSS (`grid-template-rows` or `max-height` transition) using `var(--transition-normal)`.\n- Fully keyboard operable; choose one behavior (single-open or multi-open) and keep it consistent.\n- **Modals:** none are required for this page. If any overlay\u002Fdialog is added, it must be a centered flex container (`align-items: center`) with a backdrop, focus trapping, Esc + overlay-click close, and CSS-animated opening\u002Fopen\u002Floading\u002Fsuccess\u002Fclosing states.\n\n---\n\n## 4. Page Section Specifications\n\n**4.1 Header (sticky)**\n- Translucent pastel surface with `backdrop-filter: blur`, ink bottom border; gains `--shadow-sm` after scroll. Stacking must not exceed `--z-dropdown`; the mobile nav panel uses `--z-dropdown`.\n- Flex row: logo (sparkle Material icon + Quicksand wordmark), anchor nav links, theme toggle. Mobile: nav collapses behind a `menu` icon button (`aria-expanded`, `aria-controls`); links stack vertically; menu closes on link click.\n- Include a visually hidden \"Skip to main content\" link as the first focusable element.\n\n**4.2 Hero**\n- Full-width `var(--bg-gradient)` background, floating sparkle\u002Fstar\u002Fheart decorations (aria-hidden, staggered `float`\u002F`wobble` animations), soft CSS cloud shapes.\n- Eyebrow sticker label (small pill, lemon or lavender fill, ink border), giant bubbly `--font-display` headline with one word highlighted (pastel highlighter background or squiggle underline), friendly subcopy, two CTAs (`.btn--primary` + `.btn--ghost`), and a trust row (CSS avatar circles + star icons + short text).\n- Centered flex column, `align-items: center`.\n\n**4.3 Features — 3 cards**\n- Section heading with a doodle underline (pseudo-element squiggle).\n- Three `.card` stickers in a responsive flex row (column on mobile), equal heights. Each: Material icon inside a pastel blob (organic border-radius, alternating accent colors), bold title, 2–3 lines of copy. Bouncy hover per 3.2.\n\n**4.4 How It Works — 3 steps**\n- Desktop: three steps in a flex row connected by a dashed ink line (pseudo-element). Each step: numbered circle badge (ink border, sticker shadow, alternating pastel fill, `--text-on-accent` number), Material icon, title, copy.\n- Mobile: vertical stack with a dashed rail on the left.\n\n**4.5 Testimonials**\n- Three quote cards with alternating tiny rotations (`rotate(-1deg)` \u002F `rotate(1deg)`) for a hand-placed sticker feel.\n- Each: oversized decorative quote mark (pseudo-element), quote copy, star rating (Material `star` icons + visually hidden \"Rated 5 out of 5\" text), CSS avatar (pastel circle + Material `face` icon or initials), name + role.\n\n**4.6 Pricing — 3 tiers**\n- Responsive flex row (column on mobile). Middle tier featured: slightly larger, thicker ink border or accent-filled header, rotated \"Most Popular\" sticker badge (coral\u002Flilac tag).\n- Each card: tier name, price (large `--font-display`, currency as `\u003Csup>`), short description, feature list with `check_circle` icons, CTA (`.btn--primary` on featured, `.btn--ghost` elsewhere).\n\n**4.7 FAQ**\n- Five to six on-theme Q&As in the accordion pattern from 3.4, inside a doodle-bordered container.\n\n**4.8 Final CTA**\n- Large doodle-bordered panel with `var(--bg-gradient)`, sparkle decorations, headline, subcopy, and the email `.input-group` + `.btn--primary` submit.\n\n**4.9 Footer**\n- `--bg-secondary` surface (or deep plum with light text in light mode — either is acceptable as long as contrast pairing holds), ink top border.\n- Flex\u002Fgrid layout: mini logo + tagline, 2–3 secondary link columns (Product, Company, Support), social icon buttons (Material Symbols, 44px targets, `aria-label` per network), copyright line.\n- All links are real in-page anchors or `href=\"#\"` with visible `:hover` \u002F `:focus-visible` feedback.\n\n---\n\n## 5. Core UX & Micro-Interaction Rules\n\n- **Responsive by default:** fluid `clamp()` typography, breakpoints without horizontal overflow, `scroll-margin-top` on sections for the sticky header, `scroll-behavior: smooth`.\n- **Smooth animations:** every state change transitions with `var(--transition-normal)`; hover micro-interactions use `var(--transition-fast)`.\n- **Reduced motion:** `@media (prefers-reduced-motion: reduce)` disables all animations, transforms, floats, and smooth scroll; content must never remain hidden due to an animation state.\n- **Accessibility:** AA contrast in both themes; never color-only state communication; semantic HTML5 landmarks (`header`, `nav`, `main`, `section`, `footer`); correct ARIA on the accordion, mobile nav, and theme toggle; logical DOM\u002Ffocus order; full keyboard operability; `aria-live` regions for form feedback; decorative elements marked `aria-hidden`.\n- **Mandatory visual feedback:** every click, hover, focus, and submission produces a visible state change.\n- **Scroll reveal (optional):** IntersectionObserver adds `.is-visible`; hide-before-reveal styles must apply only when JS is active (gated behind an `html.js` class) so content is never lost without JavaScript.\n\n---\n\n## 6. Deliverable & Output Format\n\n- **Files:** separate `index.html`, `style.css`, and `script.js`. The only JavaScript references are the Tailwind CDN and a single deferred `\u003Cscript src=\"script.js\" defer>` — no inline script code, no inline styles, anywhere.\n- **Naming convention:** BEM for every custom class (`card__title`, `btn--primary`); Tailwind utilities restricted to layout\u002Fspacing\u002Fresponsive structure. Never mix conventions.\n- **JS scope (vanilla only, no libraries):** theme toggle with `localStorage` + `prefers-color-scheme` fallback; mobile nav; FAQ accordion; email validation with inline `aria-live` feedback; optional scroll reveal. No `alert()` \u002F `confirm()`.\n- **Quality bar:** valid semantic HTML, zero console errors, fully usable at 320px width, every interactive state implemented, and both light (\"Sakura Day\") and dark (\"Kawaii Night\") themes fully polished. Generate the final code immediately.\n",1791954985754]