pricing-page-saas
the brief, redacted

Build a complete three-tier pricing page as one self-contained HTML document. Tests layout, typographic hierarchy, and restraint under a familiar brief.

504 chars · 76 words · fingerprint a8a380793653

raw output — byte exact

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pricing - DevFlow</title>
    <style>
        :root {
            --bg-color: #0f172a;
            --card-bg: #1e293b;
            --card-bg-featured: #263548;
            --text-main: #f8fafc;
            --text-muted: #94a3b8;
            --accent: #38bdf8;
            --accent-hover: #0ea5e9;
            --border: #334155;
            --border-featured: #38bdf8;
            --radius: 12px;
        }

        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
            background-color: var(--bg-color);
            color: var(--text-main);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 40px 20px;
            line-height: 1.5;
        }

        header {
            text-align: center;
            margin-bottom: 50px;
            max-width: 600px;
        }

        h1 {
            font-size: 2.5rem;
            font-weight: 800;
            margin-bottom: 12px;
            letter-spacing: -0.025em;
        }

        header p {
            color: var(--text-muted);
            font-size: 1.125rem;
        }

        .pricing-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 24px;
            width: 100%;
            max-width: 1100px;
            align-items: stretch;
        }

        .pricing-card {
            background-color: var(--card-bg);
            border: 1px solid var(--border);
            border-radius: var(--radius);
            padding: 32px;
            display: flex;
            flex-direction: column;
            position: relative;
            transition: transform 0.2s ease, border-color 0.2s ease;
        }

        .pricing-card:hover {
            border-color: var(--text-muted);
        }

        /* Visually emphasize the middle tier (Pro) without a garish badge */
        .pricing-card.featured {
            background-color: var(--card-bg-featured);
            border-color: var(--border-featured);
            box-shadow: 0 0 40px rgba(56, 189, 248, 0.1);
            transform: scale(1.03);
            z-index: 10;
        }

        .pricing-card.featured:hover {
            border-color: var(--accent);
        }

        .tier-name {
            font-size: 1.25rem;
            font-weight: 700;
            margin-bottom: 8px;
        }

        .tier-description {
            color: var(--text-muted);
            font-size: 0.875rem;
            min-height: 40px;
            margin-bottom: 24px;
        }

        .price-container {
            margin-bottom: 24px;
            display: flex;
            align-items: baseline;
            gap: 4px;
        }

        .price {
            font-size: 2.5rem;
            font-weight: 800;
            letter-spacing: -0.025em;
        }

        .period {
            color: var(--text-muted);
            font-size: 0.875rem;
        }

        .cta-button {
            width: 100%;
            background-color: transparent;
            color: var(--text-main);
            border: 1px solid var(--border);
            border-radius: calc(var(--radius) - 4px);
            padding: 12px 20px;
            font-size: 0.875rem;
            font-weight: 600;
            cursor: pointer;
            transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
            margin-bottom: 32px;
            text-align: center;
            text-decoration: none;
        }

        .cta-button:hover {
            background-color: rgba(255, 255, 255, 0.05);
            border-color: var(--text-main);
        }

        .pricing-card.featured .cta-button {
            background-color: var(--accent);
            color: #0f172a;
            border-color: var(--accent);
        }

        .pricing-card.featured .cta-button:hover {
            background-color: var(--accent-hover);
            border-color: var(--accent-hover);
        }

        .features-list {
            list-style: none;
            display: flex;
            flex-direction: column;
            gap: 12px;
            margin-top: auto;
        }

        .features-list li {
            font-size: 0.875rem;
            color: var(--text-muted);
            display: flex;
            align-items: flex-start;
            gap: 10px;
        }

        .pricing-card.featured .features-list li {
            color: var(--text-main);
        }

        .features-list li::before {
            content: "✓";
            color: var(--accent);
            font-weight: bold;
            flex-shrink: 0;
        }

        /* Responsive Design */
        @media (max-width: 900px) {
            .pricing-grid {
                grid-template-columns: 1fr;
                max-width: 450px;
            }

            .pricing-card.featured {
                transform: none;
                box-shadow: none;
            }

            body {
                padding: 20px 16px;
            }

            h1 {
                font-size: 2rem;
            }
        }
    </style>
</head>
<body>

    <header>
        <h1>Simple, predictable pricing</h1>
        <p>Choose the plan that fits your workflow. Upgrade or downgrade at any time.</p>
    </header>

    <main class="pricing-grid">
        <!-- Hobby Tier -->
        <div class="pricing-card">
            <div class="tier-name">Hobby</div>
            <div class="tier-description">For side projects, learners, and personal experimentation.</div>
            <div class="price-container">
                <span class="price">$0</span>
                <span class="period">/ forever</span>
            </div>
            <a href="#" class="cta-button">Get Started</a>
            <ul class="features-list">
                <li>Up to 3 private repositories</li>
                <li>Community support</li>
                <li>Standard build speeds</li>
                <li>1GB artifact storage</li>
            </ul>
        </div>

        <!-- Pro Tier (Featured) -->
        <div class="pricing-card featured">
            <div class="tier-name">Pro</div>
            <div class="tier-description">For professional developers building production applications.</div>
            <div class="price-container">
                <span class="price">$20</span>
                <span class="period">/ month</span>
            </div>
            <a href="#" class="cta-button">Start Free Trial</a>
            <ul class="features-list">
                <li>Unlimited private repositories</li>
                <li>Priority email support</li>
                <li>5x faster build runners</li>
                <li>50GB artifact storage</li>
                <li>Advanced security scanning</li>
            </ul>
        </div>

        <!-- Team Tier -->
        <div class="pricing-card">
            <div class="tier-name">Team</div>
            <div class="tier-description">For growing engineering teams requiring enterprise-grade control.</div>
            <div class="price-container">
                <span class="price">$60</span>
                <span class="period">/ seat / month</span>
            </div>
            <a href="#" class="cta-button">Contact Sales</a>
            <ul class="features-list">
                <li>Everything in Pro</li>
                <li>Dedicated support & SLA</li>
                <li>Custom SSO & audit logs</li>
                <li>Unlimited artifact storage</li>
                <li>Role-based access control</li>
            </ul>
        </div>
    </main>

</body>
</html>
```

request envelope — prompt redacted

{
  "model": "google/gemini-3.5-flash-lite",
  "system": "Respond with a single complete, self-contained HTML document and nothing else. No markdown fences, no explanation. Inline all CSS and JavaScript. Do not reference any external resource — no CDN scripts, no external stylesheets, no remote fonts or images. The document must render correctly offline.",
  "messages": [
    {
      "role": "user",
      "content": "«REDACTED — 81 words, 504 chars»"
    }
  ],
  "maxOutputTokens": 32000,
  "gatewayStringId": "8491f856-2274-4cba-9747-9c6bc0f0c4ae"
}