[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"prompt-058-Flat-Design-Financeiro-Seguro":3},"# SYSTEM PROMPT — CODING AGENT\n\n**Role:** Act as a Senior Frontend Engineer and Expert UI Designer. Your task is to code a complete, production-ready landing page on the first attempt — no TODOs, no partial builds, no stub sections. The page markets a personal finance management SaaS and must feel secure, efficient, intuitive, clean, modern, trustworthy, and organized (Corporate & SaaS tone).\n\n---\n\n## 0. PROJECT BRIEF & THEME DEFINITION\n\n- **Theme Name:** Secure Finance Flat Design (translated from source: \"Flat Design Financeiro Seguro\")\n- **Type:** Secure, Efficient, Intuitive\n- **Keywords:** personal finance, money management, flat design, secure, efficient, intuitive, clean, modern, trustworthy, organized\n- **Era:** 2026+ Personal Finance\n- **Light\u002FDark:** Full light + dark mode support — dark mode is mandatory\n- **Visual Direction:** Flat UI elements with clear data charts; status-indicating colors (green = positive, red = negative); legible sans-serif typography; simple security icons; balance\u002Fsway micro-interactions with visible feedback; fast, functional element transitions (~0.2s ease-in-out)\n- **Mandatory custom classes (verbatim from the theme spec, required exceptions to the naming convention):** `.data-chart-flat`, `.status-indicator`, `.security-icon-simple`\n- **Brand:** Use one consistent fictional product name throughout (suggested: \"FinSecure\"). All user-facing copy must be written in English.\n- **Iconography & imagery:** Google Material Symbols only. No inline SVGs, no local icon files, no external raster images. Build the hero dashboard mockup, charts, and avatars with pure CSS flat shapes, Material Symbols, and typography.\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.\n- **Class\u002FID Selectors Only:** All design properties, layout rules, and states must be targeted via class or ID selectors in `style.css`.\n- **Minimal HTML Modifications:** HTML must remain clean, semantic, and style-agnostic — retheming the site must require editing only the CSS file, never the markup.\n\n**1.2 CSS Variables (`var(--...)`) & Theme Tokens**\nStore every visual token in `:root` (light) and `.dark` (dark) using exactly these values:\n\n- **Light theme (`:root`):**\n  - Brand: `--primary: #005691` (Deep Blue — main actions, links, active nav), `--primary-hover: #00477F`, `--primary-bright: #005691` (focus rings\u002Faccents), `--secondary: #2ECC40` (Emerald Green — positive status, success fills, highlights), `--secondary-hover: #26B238`\n  - Accents: `--accent-gold: #FFD700`, `--accent-orange: #FF8C00`, `--accent-purple: #9370DB` (chart series\u002Fgraphics only — never body text)\n  - Backgrounds: `--bg-primary: #F0F0F0`, `--bg-secondary: #FEFEFE`, `--bg-tertiary: #E4E4E4` (chart tracks, inset panels)\n  - Text: `--text-primary: #333333`, `--text-secondary: #555555`, `--text-on-primary: #FFFFFF` (pairs with `--primary` fills), `--text-on-secondary: #0A3D12` (pairs with `--secondary` fills), `--text-success: #1B7A2A`, `--text-error: #C0392B`\n  - Status: `--status-positive: #2ECC40`, `--status-negative: #E74C3C`\n  - Borders: `--border-default: #D6D6D6`, `--border-strong: #333333`, `--border-success: #2ECC40`, `--border-error: #E74C3C`\n  - Shape\u002Fmotion\u002Fdepth: `--radius-sm: 4px`, `--radius-md: 8px`, `--radius-lg: 12px`, `--shadow-sm: 3px 3px 0 rgba(51,51,51,0.10)`, `--shadow-md: 5px 5px 0 rgba(51,51,51,0.14)`, `--spacing-gap: 1.5rem`, `--transition-fast: 0.15s ease-in-out`, `--transition-normal: 0.2s ease-in-out`, `--ease-standard: ease-in-out`, `--z-dropdown: 100`, `--z-modal: 200`, `--z-toast: 300`, `--font-base: \"Inter\", sans-serif`\n- **Dark theme (`.dark`):** `--primary: #0E6FA8`, `--primary-hover: #1581C4`, `--primary-bright: #5AA9E6`, `--secondary: #3DDC55`, `--secondary-hover: #55E56E`, `--accent-gold: #FFD700`, `--accent-orange: #FF9F3E`, `--accent-purple: #B39DDE`, `--bg-primary: #0D1B26`, `--bg-secondary: #14293A`, `--bg-tertiary: #1B3548`, `--text-primary: #F2F6F9`, `--text-secondary: #A8BACC`, `--text-on-primary: #FFFFFF`, `--text-on-secondary: #062D10`, `--text-success: #3DDC55`, `--text-error: #FF6B6B`, `--status-positive: #3DDC55`, `--status-negative: #FF6B6B`, `--border-default: #2A4356`, `--border-strong: #A8BACC`, `--border-success: #3DDC55`, `--border-error: #FF6B6B`, `--shadow-sm: 3px 3px 0 rgba(0,0,0,0.40)`, `--shadow-md: 5px 5px 0 rgba(0,0,0,0.50)` (all other tokens unchanged)\n- **Contrast Pairing (mandatory in both themes):** Light backgrounds (`--bg-primary`, `--bg-secondary`) pair only with dark text tokens; dark backgrounds pair only with light text tokens. `--primary` fills pair with `--text-on-primary`; `--secondary` (emerald) fills pair with `--text-on-secondary` — never white text on emerald. Warm accent fills (gold, orange) pair with `--text-primary` in light mode. `body` must bind `background`, `color`, and `font-family` to the tokens.\n- **Exception clause (background):** The source palette lists #FFFFFF; per the background standard, the page background must be `--bg-primary: #F0F0F0` and elevated surfaces `--bg-secondary: #FEFEFE` — #FFFFFF must never be used as a background fill.\n- **Exception clause (flat shadows):** The source spec demands `box-shadow: none`; for this flat theme, `--shadow-sm`\u002F`--shadow-md` must resolve to the hard-edged solid offsets specified above (zero blur), and soft\u002Fblurred shadows are forbidden.\n- **Exception clause (borders):** The source's `border: none` applies to UA default borders only; flat 1px solid borders via `--border-default` are the required separation and elevation device.\n\n**1.3 Mandatory Dark Mode Support**\n- **Implementation:** Define the dark token set under both a `.dark` class selector and `@media (prefers-color-scheme: dark)` (no-JS fallback), with a `.light` class override for explicit light selection.\n- **Theme Switching:** Background and text variables must swap seamlessly with zero HTML restructuring. Apply the stored preference before first paint to prevent a flash of the wrong theme.\n- **Persistence:** Persist the user's choice via `localStorage`, falling back to `prefers-color-scheme` on first visit. Include a visible toggle in the header with correct `aria-pressed` and `aria-label` (\"Switch to dark mode\" \u002F \"Switch to light mode\") and a Material Symbol icon (`dark_mode` \u002F `light_mode`).\n\n**1.4 Flexbox Layout & Mobile-First Alignment**\n- **Default Alignment Rule:** 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 (e.g., `stretch` for equal-height card grids).\n- **Mobile-Friendly First:** All flex rows must collapse to columns below ~768px; the page must never scroll horizontally at any viewport width from 320px up. Use a single max-width container (~1140px) with section padding built from `--spacing-gap` multiples.\n\n**1.5 Framework Default & Styling Approach**\n- Use hand-authored, clean custom CSS in `style.css` organized with Tailwind-style `@layer base, components, utilities` discipline (or include Tailwind and use it only for flex\u002Fspacing utilities). All component styling must live in `style.css` bound to the CSS variables, exposed through generic reusable classes: `.btn`, `.card`, `.input-group`.\n\n**1.6 Typography & Icons (Google Fonts Mandatory)**\n- **Text:** Include the Google Fonts `\u003Clink>` for Inter (weights 400, 500, 600, 700, 800) and bind it to `--font-base`. Base body size ≥16px, generous line-height, clear h1–h4 hierarchy, exactly one `\u003Ch1>`.\n- **Icons:** Use Google Material Symbols (Rounded or Outlined) loaded via `\u003Clink>`. Forbidden: raw inline SVGs, emoji as UI icons, local icon files.\n\n---\n\n## 2. COMPONENT DESIGN SPECIFICATIONS\n\n**2.1 Button Component Requirements** — base `.btn` class with BEM variants\n- **Default:** `display: flex; align-items: center; justify-content: center; gap: 0.5rem;` minimum touch target 44×44px, `--radius-md`, Inter 600. Variants: `.btn--primary` (deep blue fill + `--text-on-primary`), `.btn--secondary` (flat outline: 2px `--border-strong`, transparent background), `.btn--ghost`, `.btn--danger` (flat red fill + white text), `.btn--success`.\n- **Hover:** Darkened hover token or brightness shift plus `--shadow-sm` hard offset; `cursor: pointer`.\n- **Focus:** Distinct `:focus-visible` ring — 2px solid `--primary-bright` with 2px offset, clearly visible in both themes.\n- **Active\u002FPressed:** `transform: scale(0.97)` click feedback.\n- **Loading:** `.is-loading` class — CSS border spinner, button dimensions preserved, `aria-busy=\"true\"`, pointer-events disabled to prevent double-clicks.\n- **Disabled:** `[disabled]` — `opacity: 0.5`, grayscale filter, `cursor: not-allowed`.\n- **Success\u002FError:** Temporary feedback classes swapping background to `--text-success`\u002F`--text-error` tokens with a check\u002Ferror Material Symbol, without layout shift.\n\n**2.2 Card Component Requirements**\n- **Default:** Flexible flex-column layout, `--bg-secondary` background, 1px `--border-default` border, `--radius-lg`, token-driven padding.\n- **Hover:** `transform: translateY(-2px)` plus `--shadow-sm` hard offset (interactive cards only).\n- **Focus-within:** Card border highlights to `--primary` when a child link\u002Fbutton receives focus.\n- **Loading (Skeleton):** `.card--skeleton` flat shimmer — a two-tone opacity pulse between flat grays (no gradient glow) — reserving final dimensions to prevent layout jumps.\n- **Empty State:** `.card--empty` fallback layout with a Material Symbol and short guidance text.\n\n**2.3 Form & Input Requirements** — used in the Final CTA email capture\n- **States:** Empty, Focused (2px `--primary-bright` ring), Filled, Valid (`--border-success` + check icon), Invalid (`--border-error` + error icon + message, `aria-invalid`, `aria-describedby`), Disabled, Read-only.\n- **Structure:** `.input-group` flex-column wrapper containing a `\u003Clabel>`, the input, and a dedicated error-feedback container announced via `aria-live=\"polite\"`. Never rely on color alone — every error pairs an icon with text.\n\n**2.4 Modal \u002F Popup Requirements** — apply to any dialog implemented; at minimum define the styles\n- **States:** Opening, Open, Loading, Success\u002FError, Closing — all animated with `--transition-normal`.\n- **UX Features:** Centered flex overlay (`align-items: center`) with backdrop, Material Symbol close button, keyboard focus trap, `role=\"dialog\"` + `aria-modal` + `aria-labelledby`, body scroll lock, close via `Esc` and overlay click, `--z-modal` stacking. The FAQ must be an accordion, not a modal.\n\n**2.5 Theme-Specific Components (mandatory)**\n- **`.data-chart-flat`:** Pure-CSS flat charts — flex bar charts built from divs (with visible value and month labels), donut charts via `conic-gradient`. Bars colored `--status-positive`\u002F`--status-negative` by data meaning; never color-only. Bars grow in (scaleY from the bottom) on scroll into view, disabled under reduced motion.\n- **`.status-indicator`:** Flat chip = colored dot + Material Symbol (`trending_up` \u002F `trending_down` \u002F `trending_flat`) + text with explicit sign (e.g., \"+$2,450 this month\" green, \"−$860 overspend\" red). AA contrast in both themes.\n- **`.security-icon-simple`:** Flat square tile (`--radius-sm`, 2px solid border or flat fill) containing exactly one Material Symbol (`lock`, `shield`, `verified_user`, `key`, `https`, `sync_lock`). Hover triggers the sway animation (Section 3).\n\n---\n\n## 3. CORE UX & MICRO-INTERACTION RULES\n\n- **Responsive by Default:** Fluid type and spacing; breakpoints without horizontal overflow.\n- **Smooth, Fast Animations:** Every state change uses `var(--transition-normal)` (0.2s ease-in-out) or `var(--transition-fast)`, honoring the source spec's timing; transition explicit properties rather than `all` where performance matters.\n- **Sway\u002FBalance Micro-interactions:** Define `@keyframes sway` (rotate −1.5° → 1.5° → 0) applied on hover\u002Ffocus to `.security-icon-simple` tiles, feature icons, and the hero mockup. Every click, hover, and submission must produce visible feedback (button press scale, chip pulse, chart bar growth, price change).\n- **Reduced Motion:** Wrap sway, grow, and reveal animations in `@media (prefers-reduced-motion: reduce)` and replace with instant or opacity-only changes.\n- **Accessibility (a11y):** WCAG AA contrast in both themes; semantic landmarks (`header`, `nav`, `main`, `section`, `footer`) plus a skip-to-content link; logical DOM\u002Ffocus order; full keyboard operability for nav, accordion, toggles, and forms; `aria-live` regions for form feedback and pricing updates; never communicate state by color alone; visible focus on every interactive element.\n- **Mandatory Visual Feedback:** No interaction may occur without a perceivable state change.\n- **Destructive Actions:** `.btn--danger` must be visually distinct in both light and dark themes.\n- **Sticky Header:** Solid `--bg-secondary` with a 1px bottom border (no blur), stacked below `--z-dropdown`\u002F`--z-modal`\u002F`--z-toast`.\n\n---\n\n## 4. DELIVERABLE & OUTPUT FORMAT\n\n- **File Structure:** Separate `index.html`, `style.css`, and `script.js`. No inline `\u003Cscript>` blocks beyond a single `\u003Cscript src=\"script.js\" defer>` entry point; no inline styles.\n- **Naming Convention:** BEM (`block__element--modifier`) for every custom class, used consistently — never mix conventions. The three spec-mandated classes (`.data-chart-flat`, `.status-indicator`, `.security-icon-simple`) are the only verbatim exceptions.\n- **Copy:** Write real, polished English copy in a corporate-SaaS voice. Lorem ipsum is forbidden. Only genuinely unspecified link destinations may use `href=\"#\"` with descriptive accessible labels.\n- **JS Scope (script.js only):** Theme toggle + `localStorage` persistence + `prefers-color-scheme` fallback; mobile nav open\u002Fclose; smooth scrolling (respect reduced motion); pricing billing toggle; FAQ accordion; email form validation with simulated submit (loading → success); IntersectionObserver reveal animations. No additional libraries or frameworks beyond Google Fonts\u002FIcons and optional Tailwind.\n- **Completeness:** Deliver the entire page — all sections, all component states, both themes — in one response on the first attempt.\n\n---\n\n## 5. LANDING PAGE SECTION-BY-SECTION SPECIFICATION\n\nPage order: Sticky Header → Hero → Features → How It Works → Testimonials → Pricing → FAQ → Final CTA → Footer.\n\n**5.1 Sticky Header**\nLogo (Material Symbol `savings` or `account_balance` + wordmark), anchor nav (Features, How It Works, Testimonials, Pricing, FAQ), theme toggle (per 1.3), and a `.btn--primary` \"Get Started\" CTA. Mobile: hamburger button (`aria-expanded`, `aria-controls`, `menu`\u002F`close` symbols) opening a flat slide-down panel; `Esc` closes; focus is managed.\n\n**5.2 Hero**\nTwo-column flex layout (stacks below ~960px). Left: eyebrow badge (`.security-icon-simple` with `lock` + \"Bank-Grade Security\"), H1 (e.g., \"Manage your money with total security\"), supporting subheadline, CTA row (`.btn--primary` \"Start Free Today\" + `.btn--secondary` \"See How It Works\"), and a trust row of three `.security-icon-simple` items (\"256-Bit Encryption\" · \"Read-Only Bank Sync\" · \"2FA Protection\"). Right: a flat dashboard mockup `.card` containing a `.data-chart-flat` bar chart (7 bars, mixed green\u002Fred, labeled months and values), two `.status-indicator` chips (one positive, one negative), and a balance headline. Entrance uses fade\u002Fslide-up reveals; the mockup sways subtly on hover.\n\n**5.3 Features (3 cards)**\nSection header (eyebrow, H2, subcopy) followed by a 3-column grid (1 column on mobile). Card 1: **Bank-Grade Security** (`shield`) — 256-bit encryption, read-only bank connections, 2FA. Card 2: **Effortless Budgeting** (`account_balance_wallet`) — auto-categorized transactions, smart overspend alerts. Card 3: **Intuitive Insights** (`monitoring`) — flat charts and green\u002Fred status at a glance. Each card: icon tile, H3, copy, one `.status-indicator` or micro-detail; hover\u002Ffocus states per 2.2.\n\n**5.4 How It Works (3 steps)**\nThree `.card` steps with large flat number badges (01\u002F02\u002F03) and Material Symbols (`account_balance` → `tune` → `trending_up`): \"Connect your accounts securely\" (read-only, encrypted sync) → \"Set smart budgets\" (automatic categorization) → \"Track and grow\" (real-time status indicators). Desktop: horizontal flex row joined by a flat CSS connector line\u002Farrow; mobile: vertical stack with a left connector line.\n\n**5.5 Testimonials**\nThree `.card` quotes: a 5-star rating (repeated `star` symbols with `aria-label=\"Rated 5 out of 5\"`), the quote, a flat avatar circle with the person's initials (flat palette fill with correctly paired text), name and role. Write realistic quotes about security, savings, and clarity. Optionally add a stat strip (\"120,000+ users · $2.1B tracked · 4.9\u002F5 rating\") with count-up on reveal (reduced-motion safe).\n\n**5.6 Pricing (3 tiers)**\nMonthly\u002FYearly segmented toggle (`aria-pressed`, \"Save 20%\" on yearly) — prices update with `aria-live=\"polite\"` and a fast transition. Tiers: **Starter** $0 (2 connected accounts, basic flat charts, monthly report); **Pro** — highlighted with a \"Most Popular\" badge (gold `--accent-gold` fill with `--text-primary` text) and emerald top border — $9\u002Fmo · $86\u002Fyr (unlimited accounts, budgets, goals, alerts, priority support); **Premium** $19\u002Fmo · $182\u002Fyr (investment tracking, family sharing, exports, advisor chat). Feature lists use `check_circle` icons; each card has a CTA (`.btn--primary` on Pro, `.btn--secondary` on others). The middle card is flat-elevated on desktop (2px border + `--shadow-md` + `translateY(-4px)`).\n\n**5.7 FAQ**\nAccessible accordion with 5–6 items (Is my bank data safe? · Do you sell my data? · Which banks are supported? · Is there a free plan? · Can I cancel anytime? · How does yearly billing work?). Question buttons carry `aria-expanded` + `aria-controls`; the `expand_more` chevron rotates 180°; panels animate height over 0.2s; fully keyboard operable; multiple panels may stay open; first item open by default.\n\n**5.8 Final CTA**\nFull-width flat panel: `--primary` deep blue background with `--text-on-primary` heading (\"Your money, secured. Your future, organized.\") and subcopy — dark background paired with light text in both themes (in dark mode, use `--bg-tertiary` with a `--primary-bright` border to preserve contrast). Centered email-capture `.input-group` (label, email input, `.btn--primary` \"Create Free Account\" with loading → success states, inline validation, `aria-live` status region) plus microcopy with a `lock` icon: \"No credit card required · Cancel anytime\".\n\n**5.9 Footer with Secondary Links**\nTop row: brand block (logo, one-line tagline, and an \"All systems secure\" `.status-indicator`) beside link columns — **Product** (Features, Pricing, Security), **Company** (About, Careers, Contact), **Resources** (Help Center, Blog, API), **Legal** (Privacy Policy, Terms of Service, Cookie Policy). If social\u002Fcontact links are included, use available Material Symbols (e.g., `mail`, `rss_feed`, `chat`) with `aria-label`s — never inline SVG brand logos. Bottom bar: \"© 2026 [Brand] — Built for secure money management.\"\n\n---\n\n## 6. ACCEPTANCE CHECKLIST (self-verify before delivering)\n\n- Zero inline styles; single deferred script; tokens implemented exactly as specified in 1.2.\n- Both themes render with AA contrast; toggle persists via `localStorage` with `prefers-color-scheme` fallback and correct ARIA state.\n- No horizontal scrolling from 320px up; every flex container defaults to `align-items: center` unless commented otherwise.\n- All states from 2.1–2.3 are implemented; `.data-chart-flat`, `.status-indicator`, `.security-icon-simple` all present and used.\n- FAQ accordion, pricing toggle, theme toggle, and email form are fully keyboard operable with visible focus and `aria-live` feedback.\n- Sway\u002Fgrow\u002Freveal animations respect `prefers-reduced-motion`.\n- All copy is real English in a corporate-SaaS voice; no lorem ipsum; BEM naming is consistent throughout.\n",1791954980714]