Real AI-built site, untouched

Basil & Ember

Run 1 · Nov 4, 2026 · 115 min · 132 steps · 21 pages · Vite + React 18

It's my Basil & Ember pizza site for customers ordering in a hurry. They get stuck in navigation, and I want a completely new look with 3D pizzas and toppings in the background.

The owner’s brief

Found
18and 6 suggestions
Fixed and verified
1
Rolled back
11
Spent on models
$3.33386 calls

18 findings shown: 1 fixed and verified, 11 rolled back, 6 open.

What Fitts understood

I'm testing Basil & Ember, a fictional neighborhood wood-fired pizza restaurant in Maplewood, and the people coming here want to order pickup or book one of its twelve tables. It's a Vite + React app with react-router pages and plain CSS custom properties, no backend and no login anywhere. All 17 menu dishes live in code, the cart persists in localStorage, and checkout, reservations, and the contact form are validated demo flows that don't send or charge anything. I need to remember that confirmation only works right after checkout in the same tab, since the order sits in sessionStorage.

From the code at commit 8c525b009f0b, read by a model.

Journeys

  • Order a pizza for pickup done
  • Book a table by the fire done
  • Find a dish that fits my diet done
  • Change how many pizzas I'm getting done
  • Check when they're open done

Screens checked

Reflow · 320×640 iPhone · 390×844 iPhone landscape · 844×390 Just under the breakpoint · 859×1117 At the breakpoint · 860×1118 Just under the breakpoint · 759×987 At the breakpoint · 760×988 Laptop · 1280×800 Text at 200% · 1280 wide Text spacing · 1280 wide

Tried 138 of 167 controls over 132 steps.

App Map

8 pages, grouped by address: what each does, what Fitts found there and what it fixed.

Findings

Shown because the evidence was strong enough: a measurement, or reviewers agreeing. Most serious first.

Sev 4 · Catastrophic Accessibility Rolled back

Elements must have their visible text as part of their accessible name

On /, and 13 other pages: /menu /menu/margherita /cart /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/components/Layout.tsx:21

Elements must have their visible text as part of their accessible name (axe rule label-content-name-mismatch). People using a screen reader, a keyboard or zoom run into this.

The fix Fitts suggests: Fix the markup so the "label-content-name-mismatch" rule passes: elements must have their visible text as part of their accessible name.

Close up

The whole page

Who flagged it

one of Fitts’s own measurements

What Fitts noticed

  • Noticed Elements must have their visible text as part of their accessible name (axe) step 0 · /
  • Noticed header.header > div.wrap.header-in > a.brand shows no focus when tabbed to step 0 · /
  • Noticed Heading levels should only increase by one (axe) step 1 · /menu
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 1 · /menu
  • Noticed Heading levels should only increase by one (axe) step 2 · /menu/margherita
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 2 · /menu/margherita
22 more lines
  • Noticed Heading levels should only increase by one (axe) step 5 · /cart
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 5 · /cart
  • Noticed Heading levels should only increase by one (axe) step 6 · /checkout
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 6 · /checkout
  • Noticed Heading levels should only increase by one (axe) step 10 · /confirmation
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 10 · /confirmation
  • Noticed Heading levels should only increase by one (axe) step 11 · /reserve
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 11 · /reserve
  • Noticed Heading levels should only increase by one (axe) step 23 · /menu/burrata
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 23 · /menu/burrata
  • Noticed Heading levels should only increase by one (axe) step 24 · /about
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 24 · /about
  • Noticed Heading levels should only increase by one (axe) step 62 · /menu/caesar
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 62 · /menu/caesar
  • Noticed Heading levels should only increase by one (axe) step 67 · /menu/funghi
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 67 · /menu/funghi
  • Noticed Heading levels should only increase by one (axe) step 77 · /menu/verde
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 77 · /menu/verde
  • Noticed Heading levels should only increase by one (axe) step 84 · /menu/rigatoni
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 84 · /menu/rigatoni
  • Noticed Heading levels should only increase by one (axe) step 87 · /menu/diavola
  • Noticed Elements must have their visible text as part of their accessible name (axe) step 87 · /menu/diavola

Evidence

  • Elements must have their visible text as part of their accessible name (expected passes the axe rule)

See it yourself

Start at http://localhost:5176/ on desktop. Replayed and seen again

    Expected
    Passes the axe rule
    Actual
    Elements must have their visible text as part of their accessible name
    Environment
    Chromium 156 · 1536×864 · mouse · light · 100%
    WCAG
    2.5.3 Label in Name
    axe rule
    label-content-name-mismatch
    The Playwright test Fitts wrote
    // Elements must have their visible text as part of their accessible name
    // Fitts repro · Chromium 156 · 1536×864 · mouse · light · 100% · no automatic check
    // Steps: open the page
    import { expect, test } from '@playwright/test';
    
    test("Elements must have their visible text as part of their accessible name", async ({ page }) => {
      await page.goto("http://localhost:5176/");
      // Expected: Passes the axe rule
      // Actual: Elements must have their visible text as part of their accessible name
      // Fitts has no automatic oracle for this one: check it by eye, then replace this line.
      test.fixme(true, 'check by eye');
    });
    

    The fix Rolled back

    • Rolled back: No fix job run-1/run. The code went back to the last good commit.

    Cost $0.0025

    Sev 4 · Catastrophic H1 · Visibility of system status Accessibility Rolled back

    No visible focus when using the keyboard

    On /, and 13 other pages: /menu /menu/margherita /cart /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/components/Layout.tsx:21

    Tabbing through the page shows no focus outline, so keyboard users can’t tell where they are.

    The fix Fitts suggests: Remove the global outline: none and style :focus-visible instead.

    Close up

    The whole page

    Who flagged it

    4 of 5 reviewers (Novice, Accessibility, Power user, Trust & ethics), and one of Fitts’s own measurements

    What Fitts noticed

    • Noticed div.wrap.header-in > nav.nav > a.active shows no focus when tabbed to step 0 · /
    • Noticed div.wrap.header-in > nav.nav > a shows no focus when tabbed to step 0 · /
    • Noticed header.header > div.wrap.header-in > a.cart-btn shows no focus when tabbed to step 0 · /
    • Noticed div.wrap > div.filters > input.search shows no focus when tabbed to step 1 · /menu
    • Noticed div.filters > div.chip-row > button.chip.on shows no focus when tabbed to step 1 · /menu
    • Noticed div.filters > div.chip-row > button.chip shows no focus when tabbed to step 1 · /menu
    69 more lines
    • Noticed section.section > div.wrap > a shows no focus when tabbed to step 2 · /menu/margherita
    • Noticed div.radio-row > label.radio-pill > input shows no focus when tabbed to step 2 · /menu/margherita
    • Noticed div.check-row > label > input shows no focus when tabbed to step 2 · /menu/margherita
    • Noticed "Add to cart · $14.00" is hidden while focused (0% visible) step 2 · /menu/margherita
    • Noticed "Full menu" is hidden while focused (0% visible) step 2 · /menu/margherita
    • Noticed "Reserve a table" is hidden while focused (0% visible) step 2 · /menu/margherita
    • Noticed "Your cart" is hidden while focused (0% visible) step 2 · /menu/margherita
    • Noticed "Our story" is hidden while focused (0% visible) step 2 · /menu/margherita
    • Noticed 6 navigation links before the content, no skip link step 2 · /menu/margherita
    • Noticed div > span.qty > button shows no focus when tabbed to step 5 · /cart
    • Noticed div > div > button shows no focus when tabbed to step 5 · /cart
    • Noticed div.two-col > div.panel > button shows no focus when tabbed to step 5 · /cart
    • Noticed div.two-col > div.panel > a.btn.btn-ember shows no focus when tabbed to step 5 · /cart
    • Noticed div.two-col > div.panel > a shows no focus when tabbed to step 5 · /cart
    • Noticed 6 navigation links before the content, no skip link step 5 · /cart
    • Noticed input#co-name shows no focus when tabbed to step 6 · /checkout
    • Noticed input#co-phone shows no focus when tabbed to step 6 · /checkout
    • Noticed select#co-time shows no focus when tabbed to step 6 · /checkout
    • Noticed div.two-col > div.panel > button.btn.btn-ember shows no focus when tabbed to step 6 · /checkout
    • Noticed div.two-col > div.panel > a shows no focus when tabbed to step 6 · /checkout
    • Noticed Full menu shows no focus when tabbed to step 6 · /checkout
    • Noticed div.wrap > div > a.btn.btn-dark shows no focus when tabbed to step 10 · /confirmation
    • Noticed div.wrap > div > a.btn.btn-ghost shows no focus when tabbed to step 10 · /confirmation
    • Noticed Full menu shows no focus when tabbed to step 10 · /confirmation
    • Noticed Reserve a table shows no focus when tabbed to step 10 · /confirmation
    • Noticed Your cart shows no focus when tabbed to step 10 · /confirmation
    • Noticed Our story shows no focus when tabbed to step 10 · /confirmation
    • Noticed "Full menu" is hidden while focused (0% visible) step 10 · /confirmation
    • Noticed "Reserve a table" is hidden while focused (0% visible) step 10 · /confirmation
    • Noticed 6 navigation links before the content, no skip link step 10 · /confirmation
    • Noticed input#rv-name shows no focus when tabbed to step 11 · /reserve
    • Noticed input#rv-phone shows no focus when tabbed to step 11 · /reserve
    • Noticed input#rv-date shows no focus when tabbed to step 11 · /reserve
    • Noticed "Full menu" is hidden while focused (0% visible) step 11 · /reserve
    • Noticed 6 navigation links before the content, no skip link step 11 · /reserve
    • Noticed section.section > div.wrap > a shows no focus when tabbed to step 23 · /menu/burrata
    • Noticed div.check-row > label > input shows no focus when tabbed to step 23 · /menu/burrata
    • Noticed "Full menu" is hidden while focused (0% visible) step 23 · /menu/burrata
    • Noticed "Reserve a table" is hidden while focused (0% visible) step 23 · /menu/burrata
    • Noticed "Your cart" is hidden while focused (0% visible) step 23 · /menu/burrata
    • Noticed 6 navigation links before the content, no skip link step 23 · /menu/burrata
    • Noticed Basil and Ember home shows no focus when tabbed to step 24 · /about
    • Noticed Home shows no focus when tabbed to step 24 · /about
    • Noticed Menu shows no focus when tabbed to step 24 · /about
    • Noticed Reservations shows no focus when tabbed to step 24 · /about
    • Noticed About & Contact shows no focus when tabbed to step 24 · /about
    • Noticed Cart shows no focus when tabbed to step 24 · /about
    • Noticed section.section > div.wrap > a shows no focus when tabbed to step 62 · /menu/caesar
    • Noticed div.check-row > label > input shows no focus when tabbed to step 62 · /menu/caesar
    • Noticed "Full menu" is hidden while focused (0% visible) step 62 · /menu/caesar
    • Noticed "Reserve a table" is hidden while focused (0% visible) step 62 · /menu/caesar
    • Noticed "Your cart" is hidden while focused (0% visible) step 62 · /menu/caesar
    • Noticed "Our story" is hidden while focused (0% visible) step 62 · /menu/caesar
    • Noticed 6 navigation links before the content, no skip link step 62 · /menu/caesar
    • Noticed section.section > div.wrap > a shows no focus when tabbed to step 67 · /menu/funghi
    • Noticed div.radio-row > label.radio-pill > input shows no focus when tabbed to step 67 · /menu/funghi
    • Noticed div.check-row > label > input shows no focus when tabbed to step 67 · /menu/funghi
    • Noticed section.section > div.wrap > a shows no focus when tabbed to step 77 · /menu/verde
    • Noticed div.radio-row > label.radio-pill > input shows no focus when tabbed to step 77 · /menu/verde
    • Noticed div.check-row > label > input shows no focus when tabbed to step 77 · /menu/verde
    • Noticed section.section > div.wrap > a shows no focus when tabbed to step 84 · /menu/rigatoni
    • Noticed div.check-row > label > input shows no focus when tabbed to step 84 · /menu/rigatoni
    • Noticed "Full menu" is hidden while focused (0% visible) step 84 · /menu/rigatoni
    • Noticed "Reserve a table" is hidden while focused (0% visible) step 84 · /menu/rigatoni
    • Noticed "Your cart" is hidden while focused (0% visible) step 84 · /menu/rigatoni
    • Noticed 6 navigation links before the content, no skip link step 84 · /menu/rigatoni
    • Noticed section.section > div.wrap > a shows no focus when tabbed to step 87 · /menu/diavola
    • Noticed div.radio-row > label.radio-pill > input shows no focus when tabbed to step 87 · /menu/diavola
    • Noticed div.check-row > label > input shows no focus when tabbed to step 87 · /menu/diavola

    Evidence

    • no visible change when focused with Tab (expected a visible focus indicator)
    • section.section > div.wrap > a shows no focus when tabbed to
    • "Add to cart · $14.00" is hidden while focused (0% visible)

    See it yourself

    Start at http://localhost:5176/ on desktop. Replayed and seen again

    1. Press Tab from the top of the page
    2. Tab through Back to menu, Size and toppings to Add to cart
    Expected
    A visible focus indicator
    Actual
    No visible change when focused with Tab
    Environment
    Chromium 156 · 1536×864 · mouse · light · 100%
    WCAG
    2.4.7 Focus Visible
    The Playwright test Fitts wrote
    // No visible focus when using the keyboard
    // Fitts repro · Chromium 156 · 1536×864 · mouse · light · 100%
    // Steps: Press Tab from the top of the page → Tab through Back to menu, Size and toppings to Add to cart
    import { expect, test } from '@playwright/test';
    
    test("No visible focus when using the keyboard", async ({ page }) => {
      await page.goto("http://localhost:5176/");
      // By hand: Press Tab from the top of the page
      // By hand: Tab through Back to menu, Size and toppings to Add to cart
      // Focus is visible (WCAG 2.4.7): focusing changes how the element looks.
      const el = page.getByTestId("e1");
      const before = await el.evaluate((e) => { const s = getComputedStyle(e); return [s.outlineStyle, s.outlineWidth, s.boxShadow, s.borderColor, s.backgroundColor].join('|'); });
      await el.focus();
      const after = await el.evaluate((e) => { const s = getComputedStyle(e); return [s.outlineStyle, s.outlineWidth, s.boxShadow, s.borderColor, s.backgroundColor].join('|'); });
      expect(after).not.toBe(before);
    });
    

    The fix Rolled back

    • Rolled back: No fix job run-1/run. The code went back to the last good commit.

    Cost $0.0025

    Sev 4 · Catastrophic H7 · Flexibility and efficiency of use Usability Open: not fixed in this run

    No pickup time to choose

    On /menu/margherita, and 9 other pages: /cart /checkout /confirmation /menu/burrata /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/App.test.tsx:32

    You can build the Margherita and add it to cart, but you are never asked when you will pick it up. For a rushed pickup order this leaves you unsure when to arrive.

    The fix Fitts suggests: Add a pickup time picker to the builder and carry it through to the cart.

    Who flagged it

    5 of 5 reviewers (Novice, Power user, Accessibility, Trust & ethics, Visual design)

    What Fitts noticed

    • Tapped Pickup time · nothing changed on screen step 55 · /checkout

    Evidence

    • Controls are only Size, Add toppings, Notes, Quantity, Add to cart
    • Page says 'Pickup only. Pay at the counter' with no time choice
    • Build yours panel shows Size, Add toppings, Notes for the kitchen, Quantity

    See it yourself

    Start at http://localhost:5176/menu/margherita on desktop. Seen once during the run

      Expected
      A pickup time can be chosen while building a pickup order
      Actual
      There is no time field anywhere on the builder or cart confirmation
      Environment
      Chromium 156 · 1536×864 · mouse · light · 100%
      The Playwright test Fitts wrote
      // No pickup time to choose
      // Fitts repro · Chromium 156 · 1536×864 · mouse · light · 100% · no automatic check
      // Steps: open the page
      import { expect, test } from '@playwright/test';
      
      test("No pickup time to choose", async ({ page }) => {
        await page.goto("http://localhost:5176/menu/margherita");
        // Expected: A pickup time can be chosen while building a pickup order
        // Actual: There is no time field anywhere on the builder or cart confirmation
        // Fitts has no automatic oracle for this one: check it by eye, then replace this line.
        test.fixme(true, 'check by eye');
      });
      

      Sev 3 · Major H4 · Consistency and standards Look & feel Verified

      Too many text sizes

      On /, and 13 other pages: /menu /menu/margherita /cart /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/pages/AboutPage.tsx:34

      The site uses 16 font sizes; more than about 6 makes the hierarchy hard to read.

      The fix Fitts suggests: Settle on a type scale of about 6 sizes and use them throughout.

      Close up

      The whole page

      Who flagged it

      1 of 5 reviewers (Visual design), and one of Fitts’s own measurements

      What Fitts noticed

      • Noticed 16 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 76px, 18px, 15px, 13px, 17px, 13.5px, 44px, 16px, 20px, 19px, 42px step 0 · /
      • Noticed the page is 354px wide at 360px step 0 · /
      • Noticed 9 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 56px, 16px, 20px, 13px step 1 · /menu
      • Noticed 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px step 2 · /menu/margherita
      • Noticed 10 font sizes: 22px, 12px, 14.5px, 14px, 50px, 16px, 18px, 17px, 15px, 13px step 5 · /cart
      • Noticed 10 font sizes: 22px, 12px, 14.5px, 14px, 50px, 16px, 13px, 13.5px, 15px, 18px step 6 · /checkout
      21 more lines
      • Noticed spacing off the grid: padding-top 3px step 6 · /checkout
      • Noticed spacing off the grid: margin-bottom 6px step 6 · /checkout
      • Noticed spacing off the grid: padding-top 7px step 6 · /checkout
      • Noticed spacing off the grid: padding-top 9px step 6 · /checkout
      • Noticed spacing off the grid: row-gap 10px step 6 · /checkout
      • Noticed spacing off the grid: padding-top 13px step 6 · /checkout
      • Noticed 13 font sizes: 22px, 12px, 14.5px, 14px, 30px, 48px, 17px, 21px, 16px, 13.5px, 15px, 18px, 13px step 10 · /confirmation
      • Noticed 10 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 52px, 16px, 19px, 15px, 13px step 11 · /reserve
      • Noticed 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px step 23 · /menu/burrata
      • Noticed 13 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 56px, 17px, 24px, 15px, 16px, 30px, 19px, 13px step 24 · /about
      • Noticed 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px step 62 · /menu/caesar
      • Noticed 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px step 67 · /menu/funghi
      • Noticed 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px step 77 · /menu/verde
      • Noticed spacing off the grid: margin-top 3px step 77 · /menu/verde
      • Noticed spacing off the grid: margin-left 5px step 77 · /menu/verde
      • Noticed spacing off the grid: row-gap 6px step 77 · /menu/verde
      • Noticed spacing off the grid: padding-top 9px step 77 · /menu/verde
      • Noticed spacing off the grid: row-gap 10px step 77 · /menu/verde
      • Noticed spacing off the grid: padding-top 11px step 77 · /menu/verde
      • Noticed 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px step 84 · /menu/rigatoni
      • Noticed 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px step 87 · /menu/diavola

      Evidence

      • 16 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 76px, 18px, 15px, 13px, 17px, 13.5px, 44px, 16px, 20px, 19px, 42px (expected at most 6 sizes)
      • 9 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 56px, 16px, 20px, 13px (expected at most 6 sizes)
      • 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px (expected at most 6 sizes)
      • 11 font sizes: 22px, 12px, 14.5px, 14px, 15px, 50px, 17px, 18.72px, 16px, 20px, 13px

      See it yourself

      Start at http://localhost:5176/ on desktop. Replayed and seen again

        Expected
        At most 6 sizes
        Actual
        16 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 76px, 18px, 15px, 13px, 17px, 13.5px, 44px, 16px, 20px, 19px, 42px
        Environment
        Chromium 156 · 1536×864 · mouse · light · 100%
        The Playwright test Fitts wrote
        // Too many text sizes
        // Fitts repro · Chromium 156 · 1536×864 · mouse · light · 100% · no automatic check
        // Steps: open the page
        import { expect, test } from '@playwright/test';
        
        test("Too many text sizes", async ({ page }) => {
          await page.goto("http://localhost:5176/");
          // Expected: At most 6 sizes
          // Actual: 16 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 76px, 18px, 15px, 13px, 17px, 13.5px, 44px, 16px, 20px, 19px, 42px
          // Fitts has no automatic oracle for this one: check it by eye, then replace this line.
          test.fixme(true, 'check by eye');
        });
        

        The fix Verified

        • Re-checked on the fix branch’s own dev server: “Too many text sizes” is gone, and no new problems at severity 2 or higher appeared on /.
        • The project’s own tests and CI checks, where it has them, still passed before the change was committed.
        • Before the fix: 16 font sizes: 22px, 12px, 14.5px, 14px, 12.5px, 76px, 18px, 15px, 13px, 17px, 13.5px, 44px, 16px, 20px, 19px, 42px (expected at most 6 sizes).

        Cost $1.87 · branch fitts/run-run-1 · commit db31363

        The diff, in src/components/Layout.tsx, src/components/MenuCard.tsx, src/index.css, src/pages/AboutPage.tsx

        removed:               <p style={{ margin: 0, lineHeight: 1.6, fontSize: 14.5 }}>Wood-fired pies, small plates, and a room that feels like Sunday at your favorite neighbor&apos;s house.</p>
        added:               <p style={{ margin: 0, lineHeight: 1.6, fontSize: 'var(--text-sm)' }}>Wood-fired pies, small plates, and a room that feels like Sunday at your favorite neighbor&apos;s house.</p>
        removed:             <div><h4>Visit</h4><p style={{ margin: 0, lineHeight: 1.7, fontSize: 14.5 }}>128 Fournier Street<br />Maplewood, OH 45240<br />(513) 555-0148</p></div>
        removed:             <div><h4>Hours</h4><p style={{ margin: 0, lineHeight: 1.7, fontSize: 14.5 }}>Tue–Thu · 4pm–10pm<br />Fri–Sat · 12pm–11pm<br />Sun · 12pm–9pm<br />Mon · Closed</p></div>
        added:             <div><h4>Visit</h4><p style={{ margin: 0, lineHeight: 1.7, fontSize: 'var(--text-sm)' }}>128 Fournier Street<br />Maplewood, OH 45240<br />(513) 555-0148</p></div>
        added:             <div><h4>Hours</h4><p style={{ margin: 0, lineHeight: 1.7, fontSize: 'var(--text-sm)' }}>Tue–Thu · 4pm–10pm<br />Fri–Sat · 12pm–11pm<br />Sun · 12pm–9pm<br />Mon · Closed</p></div>
        removed:           <p style={{ borderTop: '1px solid rgba(255,255,255,.12)', marginTop: 36, paddingTop: 18, fontSize: 13 }}>© {new Date().getFullYear()} Basil &amp; Ember. Demo site — no real orders or payments.</p>
        added:           <p style={{ borderTop: '1px solid rgba(255,255,255,.12)', marginTop: 36, paddingTop: 18, fontSize: 'var(--text-sm)' }}>© {new Date().getFullYear()} Basil &amp; Ember. Demo site — no real orders or payments.</p>
        removed:         <div className="card-foot"><span className="price">{fmt(item.price)}</span><span style={{ fontWeight: 700, fontSize: 14 }}>Customize →</span></div>
        added:         <div className="card-foot"><span className="price">{fmt(item.price)}</span><span style={{ fontWeight: 700, fontSize: 'var(--text-sm)' }}>Customize →</span></div>
        added:   --text-xs: 12px;
        added:   --text-sm: 14px;
        added:   --text-base: 16px;
        added:   --text-lg: 20px;
        added:   --text-xl: 32px;
        added:   --text-display: 48px;
        removed: body { margin: 0; font-family: "DM Sans", system-ui, sans-serif; color: var(--ink); background: #fff; -webkit-font-smoothing: antialiased; }
        added: body { margin: 0; font-family: "DM Sans", system-ui, sans-serif; font-size: var(--text-base); color: var(--ink); background: #fff; -webkit-font-smoothing: antialiased; }
        added: h1 { font-size: var(--text-display); }
        added: h2 { font-size: var(--text-xl); }
        added: h3 { font-size: var(--text-lg); }
        added: h4 { font-size: var(--text-base); }
        removed: .brand b { font-family: "Fraunces", serif; font-size: 22px; letter-spacing: .2px; }
        removed: .brand span { color: var(--gold); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; }
        added: .brand b { font-family: "Fraunces", serif; font-size: var(--text-lg); letter-spacing: .2px; }
        added: .brand span { color: var(--gold); font-size: var(--text-xs); letter-spacing: .14em; text-transform: uppercase; }
        removed: .nav a { text-decoration: none; padding: 8px 12px; border-radius: 999px; font-size: 14.5px; color: #d9cfbd; }
        added: .nav a { text-decoration: none; padding: 8px 12px; border-radius: 999px; font-size: var(--text-sm); color: #d9cfbd; }
        removed: .cart-btn { position: relative; text-decoration: none; background: #f5efe4; color: var(--ink); padding: 9px 16px; border-radius: 999px; font-weight: 700; font-size: 14px; }
        removed: .cart-count { position: absolute; top: -7px; right: -5px; background: var(--ember); color: #fff; border: 2px solid var(--ink); min-width: 22px; height: 22px; border-radius: 999px; display: grid; place-items: center; font-size: 12px; padding: 0 4px; }
        added: .cart-btn { position: relative; text-decoration: none; background: #f5efe4; color: var(--ink); padding: 9px 16px; border-radius: 999px; font-weight: 700; font-size: var(--text-sm); }
        added: .cart-count { position: absolute; top: -7px; right: -5px; background: var(--ember); color: #fff; border: 2px solid var(--ink); min-width: 22px; height: 22px; border-radius: 999px; display: grid; place-items: center; font-size: var(--text-xs); padding: 0 4px; }
        removed: .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 999px; padding: 13px 24px; font-weight: 700; font-size: 15px; text-decoration: none; transition: background .15s ease, transform .15s ease; }
        added: .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 999px; padding: 13px 24px; font-weight: 700; font-size: var(--text-base); text-decoration: none; transition: background .15s ease, transform .15s ease; }
        removed: .btn-sm { padding: 9px 16px; font-size: 14px; }
        added: .btn-sm { padding: 9px 16px; font-size: var(--text-sm); }
        removed: .hero h1 { font-size: clamp(44px, 6vw, 76px); line-height: .98; margin: 14px 0 18px; font-weight: 600; }
        added: .hero h1 { font-size: var(--text-display); line-height: .98; margin: 14px 0 18px; font-weight: 600; }
        removed: .hero p.lede { font-size: 18px; line-height: 1.65; color: #cfc3ad; max-width: 52ch; margin: 0 0 28px; }
        added: .hero p.lede { font-size: var(--text-lg); line-height: 1.65; color: #cfc3ad; max-width: 52ch; margin: 0 0 28px; }

        Sev 3 · Major H8 · Aesthetic and minimalist design Look & feel Rolled back

        Spacing is inconsistent and off-grid

        On /, and 13 other pages: /menu /menu/margherita /cart /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/components/Layout.tsx:44

        Padding and margins use odd values (padding-top 3px), so spacing looks uneven from one element to the next.

        The fix Fitts suggests: Use spacing tokens on a 4px grid.

        Close up

        The whole page

        Who flagged it

        1 of 5 reviewers (Visual design), and one of Fitts’s own measurements

        What Fitts noticed

        • Noticed spacing off the grid: padding-top 3px step 0 · /
        • Noticed spacing off the grid: padding-top 5px step 0 · /
        • Noticed spacing off the grid: margin-top 6px step 0 · /
        • Noticed spacing off the grid: padding-top 7px step 0 · /
        • Noticed spacing off the grid: padding-top 9px step 0 · /
        • Noticed spacing off the grid: row-gap 10px step 0 · /
        67 more lines
        • Noticed spacing off the grid: padding-top 3px step 1 · /menu
        • Noticed spacing off the grid: padding-top 5px step 1 · /menu
        • Noticed spacing off the grid: row-gap 6px step 1 · /menu
        • Noticed spacing off the grid: padding-top 9px step 1 · /menu
        • Noticed spacing off the grid: row-gap 10px step 1 · /menu
        • Noticed spacing off the grid: padding-top 13px step 1 · /menu
        • Noticed spacing off the grid: margin-top 3px step 2 · /menu/margherita
        • Noticed spacing off the grid: padding-top 5px step 2 · /menu/margherita
        • Noticed spacing off the grid: row-gap 6px step 2 · /menu/margherita
        • Noticed spacing off the grid: padding-top 9px step 2 · /menu/margherita
        • Noticed spacing off the grid: row-gap 10px step 2 · /menu/margherita
        • Noticed spacing off the grid: padding-top 11px step 2 · /menu/margherita
        • Noticed spacing off the grid: margin-top 3px step 5 · /cart
        • Noticed spacing off the grid: margin-bottom 6px step 5 · /cart
        • Noticed spacing off the grid: padding-top 7px step 5 · /cart
        • Noticed spacing off the grid: padding-top 9px step 5 · /cart
        • Noticed spacing off the grid: row-gap 10px step 5 · /cart
        • Noticed spacing off the grid: padding-top 13px step 5 · /cart
        • Noticed 13 font sizes: 22px, 12px, 14.5px, 14px, 30px, 48px, 17px, 21px, 16px, 13.5px, 15px, 18px, 13px step 10 · /confirmation
        • Noticed spacing off the grid: padding-top 3px step 10 · /confirmation
        • Noticed spacing off the grid: padding-top 7px step 10 · /confirmation
        • Noticed spacing off the grid: padding-top 9px step 10 · /confirmation
        • Noticed spacing off the grid: row-gap 10px step 10 · /confirmation
        • Noticed spacing off the grid: padding-top 13px step 10 · /confirmation
        • Noticed spacing off the grid: row-gap 14px step 10 · /confirmation
        • Noticed spacing off the grid: padding-top 3px step 11 · /reserve
        • Noticed spacing off the grid: margin-bottom 6px step 11 · /reserve
        • Noticed spacing off the grid: padding-top 9px step 11 · /reserve
        • Noticed spacing off the grid: row-gap 10px step 11 · /reserve
        • Noticed spacing off the grid: padding-top 13px step 11 · /reserve
        • Noticed spacing off the grid: padding-right 14px step 11 · /reserve
        • Noticed spacing off the grid: margin-top 3px step 23 · /menu/burrata
        • Noticed spacing off the grid: row-gap 6px step 23 · /menu/burrata
        • Noticed spacing off the grid: padding-top 9px step 23 · /menu/burrata
        • Noticed spacing off the grid: row-gap 10px step 23 · /menu/burrata
        • Noticed spacing off the grid: padding-top 11px step 23 · /menu/burrata
        • Noticed spacing off the grid: padding-top 13px step 23 · /menu/burrata
        • Noticed spacing off the grid: padding-top 3px step 24 · /about
        • Noticed spacing off the grid: margin-bottom 6px step 24 · /about
        • Noticed spacing off the grid: padding-top 7px step 24 · /about
        • Noticed spacing off the grid: padding-top 9px step 24 · /about
        • Noticed spacing off the grid: row-gap 10px step 24 · /about
        • Noticed spacing off the grid: padding-top 13px step 24 · /about
        • Noticed spacing off the grid: margin-top 3px step 62 · /menu/caesar
        • Noticed spacing off the grid: row-gap 6px step 62 · /menu/caesar
        • Noticed spacing off the grid: padding-top 9px step 62 · /menu/caesar
        • Noticed spacing off the grid: row-gap 10px step 62 · /menu/caesar
        • Noticed spacing off the grid: padding-top 11px step 62 · /menu/caesar
        • Noticed spacing off the grid: padding-top 13px step 62 · /menu/caesar
        • Noticed spacing off the grid: margin-top 3px step 67 · /menu/funghi
        • Noticed spacing off the grid: margin-left 5px step 67 · /menu/funghi
        • Noticed spacing off the grid: row-gap 6px step 67 · /menu/funghi
        • Noticed spacing off the grid: padding-top 9px step 67 · /menu/funghi
        • Noticed spacing off the grid: row-gap 10px step 67 · /menu/funghi
        • Noticed spacing off the grid: padding-top 11px step 67 · /menu/funghi
        • Noticed spacing off the grid: margin-top 3px step 84 · /menu/rigatoni
        • Noticed spacing off the grid: row-gap 6px step 84 · /menu/rigatoni
        • Noticed spacing off the grid: padding-top 9px step 84 · /menu/rigatoni
        • Noticed spacing off the grid: row-gap 10px step 84 · /menu/rigatoni
        • Noticed spacing off the grid: padding-top 11px step 84 · /menu/rigatoni
        • Noticed spacing off the grid: padding-top 13px step 84 · /menu/rigatoni
        • Noticed spacing off the grid: margin-top 3px step 87 · /menu/diavola
        • Noticed spacing off the grid: padding-top 5px step 87 · /menu/diavola
        • Noticed spacing off the grid: row-gap 6px step 87 · /menu/diavola
        • Noticed spacing off the grid: padding-top 9px step 87 · /menu/diavola
        • Noticed spacing off the grid: row-gap 10px step 87 · /menu/diavola
        • Noticed spacing off the grid: padding-top 11px step 87 · /menu/diavola

        Evidence

        • padding-top 3px (expected a multiple of 4px)
        • padding-top 5px (expected a multiple of 4px)
        • margin-top 6px (expected a multiple of 4px)
        • spacing values in use: 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 24, 26, 28, 32, 36, 40, 56, 72px
        • margin-top 3px

        See it yourself

        Start at http://localhost:5176/ on desktop. Replayed and seen again

          Expected
          A multiple of 4px
          Actual
          Padding-top 3px
          Environment
          Chromium 156 · 1536×864 · mouse · light · 100%
          The Playwright test Fitts wrote
          // Spacing is inconsistent and off-grid
          // Fitts repro · Chromium 156 · 1536×864 · mouse · light · 100% · no automatic check
          // Steps: open the page
          import { expect, test } from '@playwright/test';
          
          test("Spacing is inconsistent and off-grid", async ({ page }) => {
            await page.goto("http://localhost:5176/");
            // Expected: A multiple of 4px
            // Actual: Padding-top 3px
            // Fitts has no automatic oracle for this one: check it by eye, then replace this line.
            test.fixme(true, 'check by eye');
          });
          

          The fix Rolled back

          • Rolled back: no change made: No fix job run-1/run. The code went back to the last good commit.

          Cost $0.011

          Sev 3 · Major H8 · Aesthetic and minimalist design Ergonomics Rolled back

          Page scrolls sideways on small screens

          On /, and 13 other pages: /menu /menu/margherita /cart /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · seen at iPhone · 390×844 · in src/pages/AboutPage.tsx:34

          At narrow widths the page is wider than the screen (page is 354px wide at 360px).

          The fix Fitts suggests: Let content wrap and size to the viewport.

          Close up

          The whole page

          Who flagged it

          5 of 5 reviewers (Novice, Power user, Accessibility, Visual design, Trust & ethics), and one of Fitts’s own measurements

          What Fitts noticed

          • Noticed the page is 354px wide at 360px step 1 · /menu
          • Noticed the page is 354px wide at 360px step 2 · /menu/margherita
          • Noticed the page is 359px wide at 360px step 5 · /cart
          • Noticed the page is 359px wide at 360px step 6 · /checkout
          • Noticed the page is 354px wide at 360px step 10 · /confirmation
          • Noticed the page is 379px wide at 360px step 11 · /reserve
          14 more lines
          • Noticed the page is 354px wide at 360px step 23 · /menu/burrata
          • Noticed the page is 354px wide at 360px step 24 · /about
          • Noticed the page is 359px wide at 360px step 62 · /menu/caesar
          • Noticed the page is 359px wide at 360px step 67 · /menu/funghi
          • Noticed the page is 359px wide at 360px step 77 · /menu/verde
          • Noticed the page is 359px wide at 360px step 84 · /menu/rigatoni
          • Noticed the page is 359px wide at 360px step 87 · /menu/diavola
          • Noticed the page is 359px wide at 320px step 101 · /menu/margherita
          • Noticed the page is 359px wide at 320px step 101 · /menu/burrata
          • Noticed the page is 359px wide at 320px step 101 · /menu/verde
          • Noticed the page is 359px wide at 320px step 101 · /menu/rigatoni
          • Noticed the page is 1522px wide at 860px step 101 · /menu/rigatoni
          • Noticed the page is 1522px wide at 860px step 101 · /menu/diavola
          • Noticed the page is 1426px wide at 759px step 101 · /menu/burrata

          Evidence

          • page is 354px wide at 360px (expected no sideways scrolling at 360px)
          • page is 354px wide at 360px
          • page is 359px wide at 320px

          The fix Rolled back

          • Rolled back: No fix job run-1/run. The code went back to the last good commit.

          Cost $0.0025

          Sev 3 · Major H7 · Flexibility and efficiency of use Accessibility Rolled back

          The focused control is hidden

          On /, and 12 other pages: /menu /menu/margherita /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/pages/Home.tsx:36

          "See full menu" is hidden while focused (40% visible): keyboard users can't see where they are.

          The fix Fitts suggests: Leave room for sticky headers (scroll-padding-top) and keep focused controls in view.

          Close up

          The whole page

          Who flagged it

          4 of 5 reviewers (Power user, Accessibility, Novice, Trust & ethics), and one of Fitts’s own measurements

          What Fitts noticed

          • Noticed "See full menu" is hidden while focused (40% visible) step 0 · /
          • Noticed "Neighborhood favorite Margherita Classic" is hidden while focused (0% visible) step 0 · /
          • Noticed "Neighborhood favorite Ember Pepperoni C" is hidden while focused (0% visible) step 0 · /
          • Noticed "Neighborhood favorite Diavola Spicy sop" is hidden while focused (40% visible) step 0 · /
          • Noticed "Start an order" is hidden while focused (0% visible) step 0 · /
          • Noticed "Hours & directions" is hidden while focused (0% visible) step 0 · /
          45 more lines
          • Noticed "Pizza Verde Basil pesto, zucchini ribbo" is hidden while focused (0% visible) step 1 · /menu
          • Noticed "Neighborhood favorite Diavola Spicy sop" is hidden while focused (0% visible) step 1 · /menu
          • Noticed "Burrata & Prosciutto Creamy Puglian bur" is hidden while focused (40% visible) step 1 · /menu
          • Noticed "Ember Arancini Crisp saffron risotto, s" is hidden while focused (40% visible) step 1 · /menu
          • Noticed "Sunday Meatballs Beef and pork meatball" is hidden while focused (40% visible) step 1 · /menu
          • Noticed "Little Gem Caesar Little gem lettuce, w" is hidden while focused (0% visible) step 1 · /menu
          • Noticed "Add to cart · $14.00" is hidden while focused (0% visible) step 2 · /menu/margherita
          • Noticed 6 navigation links before the content, no skip link step 2 · /menu/margherita
          • Noticed "Full menu" is hidden while focused (40% visible) step 6 · /checkout
          • Noticed "Reserve a table" is hidden while focused (0% visible) step 6 · /checkout
          • Noticed "Your cart" is hidden while focused (0% visible) step 6 · /checkout
          • Noticed 6 navigation links before the content, no skip link step 6 · /checkout
          • Noticed "Full menu" is hidden while focused (0% visible) step 10 · /confirmation
          • Noticed 6 navigation links before the content, no skip link step 10 · /confirmation
          • Noticed "Full menu" is hidden while focused (0% visible) step 11 · /reserve
          • Noticed 6 navigation links before the content, no skip link step 11 · /reserve
          • Noticed "Full menu" is hidden while focused (0% visible) step 23 · /menu/burrata
          • Noticed 6 navigation links before the content, no skip link step 23 · /menu/burrata
          • Noticed "input#ct-name" is hidden while focused (0% visible) step 24 · /about
          • Noticed "input#ct-email" is hidden while focused (0% visible) step 24 · /about
          • Noticed "textarea#ct-msg" is hidden while focused (0% visible) step 24 · /about
          • Noticed "Send message" is hidden while focused (0% visible) step 24 · /about
          • Noticed "Full menu" is hidden while focused (0% visible) step 24 · /about
          • Noticed "Reserve a table" is hidden while focused (0% visible) step 24 · /about
          • Noticed "Full menu" is hidden while focused (0% visible) step 62 · /menu/caesar
          • Noticed 6 navigation links before the content, no skip link step 62 · /menu/caesar
          • Noticed "−" is hidden while focused (0% visible) step 67 · /menu/funghi
          • Noticed "Add to cart · $18.00" is hidden while focused (0% visible) step 67 · /menu/funghi
          • Noticed "Full menu" is hidden while focused (0% visible) step 67 · /menu/funghi
          • Noticed "Reserve a table" is hidden while focused (0% visible) step 67 · /menu/funghi
          • Noticed "Your cart" is hidden while focused (0% visible) step 67 · /menu/funghi
          • Noticed "Our story" is hidden while focused (0% visible) step 67 · /menu/funghi
          • Noticed "Add to cart · $16.00" is hidden while focused (0% visible) step 77 · /menu/verde
          • Noticed "Full menu" is hidden while focused (0% visible) step 77 · /menu/verde
          • Noticed "Reserve a table" is hidden while focused (0% visible) step 77 · /menu/verde
          • Noticed "Your cart" is hidden while focused (0% visible) step 77 · /menu/verde
          • Noticed "Our story" is hidden while focused (0% visible) step 77 · /menu/verde
          • Noticed 6 navigation links before the content, no skip link step 77 · /menu/verde
          • Noticed "Full menu" is hidden while focused (0% visible) step 84 · /menu/rigatoni
          • Noticed 6 navigation links before the content, no skip link step 84 · /menu/rigatoni
          • Noticed "Add to cart · $18.00" is hidden while focused (0% visible) step 87 · /menu/diavola
          • Noticed "Full menu" is hidden while focused (0% visible) step 87 · /menu/diavola
          • Noticed "Reserve a table" is hidden while focused (0% visible) step 87 · /menu/diavola
          • Noticed "Your cart" is hidden while focused (0% visible) step 87 · /menu/diavola
          • Noticed 6 navigation links before the content, no skip link step 87 · /menu/diavola

          Evidence

          • "See full menu" is hidden while focused (40% visible) (expected the focused control in view)
          • "Neighborhood favorite Margherita Classic" is hidden while focused (0% visible) (expected the focused control in view)
          • "Neighborhood favorite Ember Pepperoni C" is hidden while focused (0% visible) (expected the focused control in view)
          • "Add to cart · $14.00" is hidden while focused (0% visible)
          • 6 navigation links before the content, no skip link

          The fix Rolled back

          • Rolled back: No fix job run-1/run. The code went back to the last good commit.

          Cost $0

          Sev 3 · Major H7 · Flexibility and efficiency of use Ergonomics Rolled back

          Page scrolls sideways on small screens on a phone

          On /menu, and 7 other pages: /menu/margherita /menu/burrata /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · seen at Reflow · 320×640 · in src/components/Layout.tsx:21

          At narrow widths the page is wider than the screen (page is 359px wide at 320px).

          The fix Fitts suggests: Let content wrap and size to the viewport.

          Who flagged it

          1 of 5 reviewers (Power user), and one of Fitts’s own measurements

          What Fitts noticed

          • Noticed the page is 359px wide at 320px step 101 · /menu
          • Noticed the page is 359px wide at 320px step 101 · /menu/caesar
          • Noticed the page is 359px wide at 320px step 101 · /menu/funghi
          • Noticed the page is 359px wide at 320px step 101 · /menu/verde
          • Noticed the page is 359px wide at 320px step 101 · /menu/rigatoni
          • Noticed the page is 359px wide at 320px step 101 · /menu/diavola
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu

          Evidence

          • page is 359px wide at 320px on Reflow · 320×640 (expected no sideways scrolling at 320px)
          • page is 359px wide at 320px
          • page is 1426px wide at 759px

          How Fitts got there

          1. Tapped “Order pickup” → /menu

          The fix Rolled back

          • Rolled back: No fix job run-1/run. The code went back to the last good commit.

          Cost $0

          Sev 3 · Major H1 · Visibility of system status Accessibility Open: not fixed in this run

          Text breaks with wider spacing on Text spacing · 1280 wide

          On /menu, and 7 other pages: /menu/margherita /menu/burrata /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · seen at Text spacing · 1280 wide · in src/components/Layout.tsx:21

          With WCAG’s text spacing applied (1.5 line height, wider letters and words), text overlaps the text below it with wider spacing.

          The fix Fitts suggests: Let text containers grow with their content; avoid fixed heights and overflow: hidden on text.

          Who flagged it

          2 of 5 reviewers (Accessibility, Visual design), and one of Fitts’s own measurements

          What Fitts noticed

          • Noticed text overlaps the text below it with wider spacing step 101 · /menu
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu/margherita
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu/burrata
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu/caesar
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu/funghi
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu/verde
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu/rigatoni
          • Noticed text overlaps the text below it with wider spacing step 101 · /menu/diavola

          Evidence

          • text overlaps the text below it with wider spacing on Text spacing · 1280 wide (expected text that keeps its room at 1.5 line height)
          • text overlaps the text below it with wider spacing

          How Fitts got there

          1. Tapped “Order pickup” → /menu

          Sev 3 · Major Accessibility Rolled back

          Heading levels should only increase by one

          On /menu, and 12 other pages: /menu/margherita /cart /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/components/MenuCard.tsx:7

          Heading levels should only increase by one (axe rule heading-order). People using a screen reader, a keyboard or zoom run into this.

          The fix Fitts suggests: Fix the markup so the "heading-order" rule passes: heading levels should only increase by one.

          Close up

          The whole page

          Who flagged it

          one of Fitts’s own measurements

          Evidence

          • Heading levels should only increase by one (expected passes the axe rule)

          How Fitts got there

          1. Tapped “Order pickup” → /menu
          2. Tapped “View Margherita Classica” → /menu/margherita

          The fix Rolled back

          • Rolled back: No fix job run-1/run. The code went back to the last good commit.

          Cost $0

          Sev 3 · Major H7 · Flexibility and efficiency of use Ergonomics Rolled back

          Tap target is too small

          On /cart, and 1 other page: /checkout · in src/pages/CartPage.tsx:44

          This control is 66×20px, smaller than the 24×24px minimum, so it's easy to miss.

          The fix Fitts suggests: Give it at least 44×44px of tappable area (padding counts).

          Close up

          The whole page

          Who flagged it

          5 of 5 reviewers (Novice, Power user, Accessibility, Trust & ethics, Visual design), and one of Fitts’s own measurements

          What Fitts noticed

          • Noticed div > div > button is small to tap: 66×20px (needs at least 24×24px) step 5 · /cart
          • Noticed div.two-col > div.panel > a is small to tap: 388×18px (needs at least 24×24px) step 5 · /cart
          • Noticed div.two-col > div.panel > a is small to tap: 388×18px (needs at least 24×24px) step 6 · /checkout
          • Noticed Remove is small to tap: 66×20px (needs at least 24×24px) step 30 · /cart
          • Noticed Add more from the menu is small to tap: 388×18px (needs at least 24×24px) step 30 · /cart
          • Noticed Back to cart is far and small for a primary action: ID 5.1 bits (580px away, 18px wide) step 57 · /checkout

          Evidence

          • 66×20px (expected at least 24×24px)
          • 388×18px (expected at least 24×24px)
          • Remove is small to tap: 66×20px (needs at least 24×24px)
          • 13 more targets are under the comfortable 44px for touch
          • Remove is small to tap: 66x20px (needs at least 24x24px)

          How Fitts got there

          1. Tapped “View cart & checkout” → /cart

          The fix Rolled back

          • Rolled back: No fix job run-1/run. The code went back to the last good commit.

          Cost $0

          Sev 3 · Major H7 · Flexibility and efficiency of use Usability Open: not fixed in this run

          No way to set pickup time

          On /checkout · in src/pages/CartPage.tsx:58

          When filling out a pickup order on checkout, there is no way to enter a pickup time, which makes scheduling pickup difficult.

          The fix Fitts suggests: Add a pickup time input to the pickup checkout flow.

          Who flagged it

          1 of 1 reviewers (You)

          Evidence

          • You said: “When you were filling out a pickup order, you should have been able to put in a pickup time.”

          See it yourself

          Start at http://localhost:5176/checkout on desktop. Reported by the owner

            Expected
            Actual
            When filling out a pickup order on checkout, there is no way to enter a pickup time, which makes scheduling pickup difficult.
            Environment
            Chromium 156 · 1536×864 · mouse · light · 100%
            The Playwright test Fitts wrote
            // No way to set pickup time
            // Fitts repro · Chromium 156 · 1536×864 · mouse · light · 100% · no automatic check
            // Steps: open the page
            import { expect, test } from '@playwright/test';
            
            test("No way to set pickup time", async ({ page }) => {
              await page.goto("http://localhost:5176/checkout");
              // Expected: Add a pickup time input to the pickup checkout flow.
              // Actual: When filling out a pickup order on checkout, there is no way to enter a pickup time, which makes scheduling pickup difficult.
              // Fitts has no automatic oracle for this one: check it by eye, then replace this line.
              test.fixme(true, 'check by eye');
            });
            

            Sev 3 · Major H3 · User control and freedom Usability Open: not fixed in this run

            No back or cancel in this flow

            On /checkout, and 3 other pages: /menu /menu/funghi /menu/diavola · in src/pages/ItemPage.tsx:41

            There’s no back or cancel control on /menu, so people who change their mind are stuck.

            The fix Fitts suggests: Add a Back link (and Cancel) on every step.

            Who flagged it

            3 of 5 reviewers (Power user, Trust & ethics, Novice), and one of Fitts’s own measurements

            What Fitts noticed

            • Noticed going back lost what I typed: no back or cancel control on /menu step 48 · /checkout
            • Noticed going back lost what I typed: no back or cancel control on /menu/ember-pepperoni step 59 · /menu
            • Noticed going back lost what I typed: no back or cancel control on /menu step 75 · /menu/funghi
            • Noticed going back lost what I typed: no back or cancel control on /menu step 95 · /menu/diavola

            Evidence

            • no back or cancel control on /menu (expected a visible way back that keeps what was entered)
            • no back or cancel control on /menu/ember-pepperoni (expected a visible way back that keeps what was entered)
            • Noticed going back lost what I typed: no back or cancel control on /menu
            • no back or cancel control on /menu
            • going back lost what I typed

            How Fitts got there

            1. Tapped “Continue to pickup details” → /checkout

            Sev 3 · Major H4 · Consistency and standards Content Open: not fixed in this run

            No lunch reservation times offered

            On /reserve · in src/pages/ReservePage.tsx:61

            You cannot book a lunch table even though the site says it opens at 12pm Fri-Sun. Midday visitors have no way to reserve.

            The fix Fitts suggests: Generate Time options from the Hours for the selected date, including 12pm slots Fri-Sun.

            Close up

            The whole page

            Who flagged it

            2 of 5 reviewers (Novice, Trust & ethics)

            Evidence

            • Time shows "7:00 PM" with options 5:00 PM to 9:00 PM
            • Footer Hours: Fri-Sat 12pm-11pm / Sun 12pm-9pm
            • You're booked, fitts-test. Table for 2 ... We'll text 5550100

            How Fitts got there

            1. Tapped “Reserve a table for next time” → /reserve

            Sev 3 · Major H8 · Aesthetic and minimalist design Ergonomics Rolled back

            Page scrolls sideways on small screens on Just under the breakpoint · 759×987

            On /menu/burrata, and 5 other pages: /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · seen at Just under the breakpoint · 759×987 · in src/components/Layout.tsx:21

            At narrow widths the page is wider than the screen (page is 1426px wide at 759px).

            The fix Fitts suggests: Let content wrap and size to the viewport.

            Who flagged it

            1 of 5 reviewers (Visual design), and one of Fitts’s own measurements

            What Fitts noticed

            • Noticed the page is 1426px wide at 759px step 101 · /menu/burrata
            • Noticed the page is 1426px wide at 759px step 101 · /menu/funghi
            • Noticed the page is 1426px wide at 759px step 101 · /menu/rigatoni
            • Noticed the page is 1426px wide at 759px step 101 · /menu/diavola
            • Noticed text overlaps the text below it with wider spacing step 101 · /menu/burrata

            Evidence

            • page is 1426px wide at 759px on Just under the breakpoint · 759×987 (expected no sideways scrolling at 759px)
            • page is 1426px wide at 759px
            • page is 359px wide at 320px

            How Fitts got there

            1. Tapped “View Burrata & Prosciutto” → /menu/burrata

            The fix Rolled back

            • Rolled back: No fix job run-1/run. The code went back to the last good commit.

            Cost $0

            Sev 3 · Major H8 · Aesthetic and minimalist design Ergonomics Rolled back

            Page scrolls sideways on small screens on At the breakpoint · 860×1118

            On /menu/caesar, and 4 other pages: /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · seen at At the breakpoint · 860×1118 · in src/components/Layout.tsx:21

            At narrow widths the page is wider than the screen (page is 1522px wide at 860px).

            The fix Fitts suggests: Let content wrap and size to the viewport.

            Who flagged it

            2 of 5 reviewers (Accessibility, Trust & ethics), and one of Fitts’s own measurements

            What Fitts noticed

            • Noticed the page is 359px wide at 360px step 62 · /menu/caesar
            • Noticed the page is 1522px wide at 860px step 101 · /menu/caesar
            • Noticed the page is 1522px wide at 860px step 101 · /menu/funghi
            • Noticed the page is 1522px wide at 860px step 101 · /menu/verde
            • Noticed the page is 1426px wide at 759px step 101 · /menu/caesar
            • Noticed the page is 1426px wide at 759px step 101 · /menu/verde
            • Noticed text overlaps the text below it with wider spacing step 101 · /menu/caesar

            Evidence

            • page is 1522px wide at 860px on At the breakpoint · 860×1118 (expected no sideways scrolling at 860px)
            • page is 359px wide at 360px
            • page is 1522px wide at 860px

            How Fitts got there

            1. Tapped “View Little Gem Caesar” → /menu/caesar

            The fix Rolled back

            • Rolled back: No fix job run-1/run. The code went back to the last good commit.

            Cost $0

            Sev 1 · Cosmetic Accessibility Rolled back

            No way to skip the navigation

            On /, and 13 other pages: /menu /menu/margherita /cart /checkout /confirmation /reserve /menu/burrata /about /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola

            6 navigation links before the content, no skip link, so keyboard users tab through all of it on every page.

            The fix Fitts suggests: Add a "Skip to content" link as the first focusable element.

            Who flagged it

            1 of 5 reviewers (Accessibility), and one of Fitts’s own measurements

            What Fitts noticed

            • Noticed 6 navigation links before the content, no skip link step 5 · /cart

            Evidence

            • 6 navigation links before the content, no skip link (expected a "Skip to content" link first)
            • 6 navigation links before the content, no skip link

            The fix Rolled back

            • Rolled back: No fix job run-1/run. The code went back to the last good commit.

            Cost $0

            Sev 1 · Cosmetic H7 · Flexibility and efficiency of use Ergonomics Open: not fixed in this run

            Main action is hard to reach

            On /menu/margherita, and 7 other pages: /about /checkout /menu/caesar /menu/funghi /menu/verde /menu/rigatoni /menu/diavola · in src/pages/ItemPage.tsx:41

            Reaching it takes ID 4.1 bits (729px away, 46px wide).

            The fix Fitts suggests: Make it bigger and put it near where the previous step ended.

            Close up

            The whole page

            Who flagged it

            4 of 5 reviewers (Power user, Novice, Accessibility, Visual design), and one of Fitts’s own measurements

            What Fitts noticed

            • Noticed Add to cart · $14.00 is far and small for a primary action: ID 4.1 bits (729px away, 46px wide) step 28 · /menu/margherita
            • Noticed Send message is far and small for a primary action: ID 4.2 bits (808px away, 46px wide) step 32 · /about
            • Noticed Add to cart · $11.00 is far and small for a primary action: ID 4.1 bits (729px away, 46px wide) step 63 · /menu/caesar
            • Noticed ← Back to menu is far and small for a primary action: ID 5.3 bits (698px away, 18px wide) step 66 · /menu/caesar
            • Noticed ← Back to menu is far and small for a primary action: ID 5.4 bits (743px away, 18px wide) step 75 · /menu/funghi
            • Noticed Add to cart · $16.00 is far and small for a primary action: ID 4.1 bits (729px away, 46px wide) step 78 · /menu/verde
            6 more lines
            • Noticed ← Back to menu is far and small for a primary action: ID 5.4 bits (743px away, 18px wide) step 82 · /menu/verde
            • Noticed Add to cart · $17.00 is far and small for a primary action: ID 4.1 bits (729px away, 46px wide) step 85 · /menu/rigatoni
            • Noticed ← Back to menu is far and small for a primary action: ID 5.6 bits (877px away, 18px wide) step 95 · /menu/diavola
            • Noticed About & Contact is far and small for a primary action: ID 4.5 bits (755px away, 34px wide) step 102 · /menu/diavola
            • Noticed About & Contact is far and small for a primary action: ID 4.5 bits (755px away, 34px wide) step 106 · /checkout
            • Noticed Back to cart is far and small for a primary action: ID 5.1 bits (580px away, 18px wide) step 123 · /checkout

            Evidence

            • ID 4.1 bits (729px away, 46px wide) (expected at most 4 bits for a main action)
            • ID 4.2 bits (808px away, 46px wide) (expected at most 4 bits for a main action)
            • Add to cart · $14.00 is far and small for a primary action: ID 4.1 bits (729px away, 46px wide)
            • Send message is far and small for a primary action: ID 4.2 bits (808px away, 46px wide)
            • ID 4.2 bits (808px away, 46px wide)

            How Fitts got there

            1. Tapped “Clear filters”
            2. Typed in “Search menu”
            3. Tapped “View Burrata & Prosciutto” → /menu/burrata
            4. Opened /about
            5. Opened /about
            6. Opened /menu
            7. Tapped “View Margherita Classica” → /menu/margherita
            8. Tapped “Add to cart · $14.00”

            Suggestions

            Not enough evidence to show as findings. Listed so nothing is hidden.

            • Sev 3 · Major Same links named differently on /confirmation
              The same destinations are named differently in header, body, and footer, forcing hurried mobile users to pause and guess.
            • Sev 3 · Major Keyboard focus invisible, links off-screen on /menu/burrata
              A keyboard user cannot see where they are because focus has no indicator and footer links receive focus while off-screen, with no skip link to bypass navigation.
            • Sev 3 · Major Keyboard tabbing loses your place on /about
              Keyboard power users lose their place tabbing this page: there is no focus ring and the form controls scroll out of view with focus jumping backwards.
            • Sev 3 · Major No map next to address and hours on /about
              People trying to line up the address against opening hours find no map, so they bounce between Cart and About and give up.
            • Sev 2 · Minor Menu link named three different ways on /reserve
              A repeat customer scanning fast sees three different labels for the same place and must hesitate to be sure.
            • Sev 2 · Minor Cart called different names on /menu/verde
              The cart is called Cart in the header, Your cart in the footer, and View cart & checkout after adding, so a repeat user must re-learn the same action.

            Which models did what

            Every model call in this run, grouped by model. The model that writes a fix never grades it.

            ModelIts jobs hereCallsTokens in / outCost
            Muse Spark 1.3Metathe interview, choosing what to try, the theme check, reviewing pages2561.2M / 203.1k$2.17
            ElevenLabs Flash v2.5ElevenLabsspeaking970 / 0$0.888
            Muse Wonder 1.0Metareading the code139.7k / 4.5k$0.249
            SAM 3.1Metaoutlining elements50 / 0$0.013
            Muse Voice Transcribe 1.0Metahearing the owner270 / 0$0.0071

            Cost per model call

            $3.33 in all (the run’s cap was $8.00). Time is minutes into the run.

            #TimeForModelInOutCostTookFinding
            10:00speakingElevenLabs Flash v2.500$0.0091
            20:00speakingElevenLabs Flash v2.500$0.0091
            30:19hearing the ownerMuse Voice Transcribe 1.000$0.0006
            40:24the interviewMuse Spark 1.33.6k284$0.00574.0 s
            50:24speakingElevenLabs Flash v2.500$0.012
            60:35hearing the ownerMuse Voice Transcribe 1.000$0.0003
            70:43the interviewMuse Spark 1.33.7k389$0.00627.0 s
            80:43speakingElevenLabs Flash v2.500$0.013
            90:52the interviewMuse Spark 1.33.7k484$0.00675.8 s
            100:52speakingElevenLabs Flash v2.500$0.022
            110:57reading the codeMuse Wonder 1.039.7k4.5k$0.249
            120:59the interviewMuse Spark 1.33.8k408$0.00655.1 s
            130:59speakingElevenLabs Flash v2.500$0.011
            141:22speakingElevenLabs Flash v2.500$0.0087
            151:24choosing what to tryMuse Spark 1.35.0k (4.3k cached)108$0.00201.7 s
            161:24speakingElevenLabs Flash v2.500$0.0072
            171:30choosing what to tryMuse Spark 1.33.5k232$0.00532.5 s
            181:39choosing what to tryMuse Spark 1.33.8k319$0.00613.6 s
            191:53choosing what to tryMuse Spark 1.33.6k757$0.007710.2 s
            201:58choosing what to tryMuse Spark 1.33.6k167$0.00522.9 s
            212:02choosing what to tryMuse Spark 1.33.6k148$0.00523.1 s
            222:07choosing what to tryMuse Spark 1.33.4k107$0.00471.5 s
            232:15choosing what to tryMuse Spark 1.33.4k425$0.00614.3 s
            242:22choosing what to tryMuse Spark 1.33.4k383$0.00595.4 s
            252:32choosing what to tryMuse Spark 1.33.4k761$0.00758.9 s
            262:35choosing what to tryMuse Spark 1.33.4k161$0.00502.3 s
            272:35speakingElevenLabs Flash v2.500$0.014
            282:44speakingElevenLabs Flash v2.500$0.0048
            292:54choosing what to tryMuse Spark 1.33.4k646$0.00707.0 s
            302:54speakingElevenLabs Flash v2.500$0.0051
            312:57choosing what to tryMuse Spark 1.35.4k105$0.00722.4 s
            322:57speakingElevenLabs Flash v2.500$0.0057
            332:59choosing what to tryMuse Spark 1.33.3k158$0.00482.4 s
            343:06choosing what to tryMuse Spark 1.33.4k251$0.00533.1 s
            353:16choosing what to tryMuse Spark 1.33.4k672$0.00719.1 s
            363:22choosing what to tryMuse Spark 1.33.4k435$0.00615.5 s
            373:26choosing what to tryMuse Spark 1.33.4k137$0.00481.8 s
            383:30choosing what to tryMuse Spark 1.33.3k324$0.00553.4 s
            393:30speakingElevenLabs Flash v2.500$0.0050
            403:32choosing what to tryMuse Spark 1.35.4k (4.3k cached)99$0.00241.9 s
            413:32speakingElevenLabs Flash v2.500$0.0075
            423:36choosing what to tryMuse Spark 1.33.7k232$0.00572.7 s
            433:40choosing what to tryMuse Spark 1.33.4k296$0.00563.0 s
            443:44choosing what to tryMuse Spark 1.33.4k201$0.00522.9 s
            453:52hearing the ownerMuse Voice Transcribe 1.000$0.0004
            463:54choosing what to tryMuse Spark 1.33.4k717$0.00748.6 s
            473:55the interviewMuse Spark 1.31.1k147$0.00202.3 s
            483:55speakingElevenLabs Flash v2.500$0.010
            494:08choosing what to tryMuse Spark 1.33.4k1.0k$0.008713.3 s
            504:13choosing what to tryMuse Spark 1.33.8k (1.1k cached)360$0.00504.0 s
            514:18choosing what to tryMuse Spark 1.33.5k (1.1k cached)245$0.00413.1 s
            524:27choosing what to tryMuse Spark 1.33.5k (1.1k cached)419$0.00495.4 s
            534:27speakingElevenLabs Flash v2.500$0.0055
            544:30choosing what to tryMuse Spark 1.35.5k166$0.00752.4 s
            554:30speakingElevenLabs Flash v2.500$0.0051
            564:40choosing what to tryMuse Spark 1.33.3k528$0.00646.8 s
            574:44choosing what to tryMuse Spark 1.33.3k306$0.00543.1 s
            584:44speakingElevenLabs Flash v2.500$0.0048
            594:46choosing what to tryMuse Spark 1.35.5k148$0.00752.2 s
            604:51choosing what to tryMuse Spark 1.33.7k217$0.00563.7 s
            614:55choosing what to tryMuse Spark 1.33.6k242$0.00552.4 s
            624:58choosing what to tryMuse Spark 1.33.6k146$0.00512.8 s
            635:02choosing what to tryMuse Spark 1.33.4k103$0.00462.4 s
            645:08choosing what to tryMuse Spark 1.33.4k358$0.00574.6 s
            655:12choosing what to tryMuse Spark 1.33.4k (3.3k cached)342$0.00204.1 s
            665:12speakingElevenLabs Flash v2.500$0.0060
            675:15choosing what to tryMuse Spark 1.35.5k123$0.00743.1 s
            685:15speakingElevenLabs Flash v2.500$0.0059
            695:21choosing what to tryMuse Spark 1.31.2k326$0.00293.8 s
            705:26choosing what to tryMuse Spark 1.31.2k267$0.00264.3 s
            715:30the theme checkMuse Spark 1.35.7k1.0k$0.01114.1 s
            725:33choosing what to tryMuse Spark 1.31.1k240$0.00253.3 s
            735:38choosing what to tryMuse Spark 1.31.1k (881 cached)241$0.00152.8 s
            745:40hearing the ownerMuse Voice Transcribe 1.000$0.0005
            755:42choosing what to tryMuse Spark 1.35.5k (4.3k cached)186$0.00293.2 s
            765:44the interviewMuse Spark 1.31.1k277$0.00263.1 s
            775:44speakingElevenLabs Flash v2.500$0.012
            785:46choosing what to tryMuse Spark 1.33.3k127$0.00472.4 s
            795:53choosing what to tryMuse Spark 1.33.3k (1.1k cached)525$0.00516.6 s
            805:58choosing what to tryMuse Spark 1.33.3k (1.1k cached)141$0.00352.5 s
            816:09choosing what to tryMuse Spark 1.33.3k796$0.00769.9 s
            826:14choosing what to tryMuse Spark 1.33.4k (1.1k cached)289$0.00423.7 s
            836:18choosing what to tryMuse Spark 1.33.4k261$0.00533.2 s
            846:18speakingElevenLabs Flash v2.500$0.014
            856:22speakingElevenLabs Flash v2.500$0.0048
            866:25choosing what to tryMuse Spark 1.33.3k (1.1k cached)189$0.00372.7 s
            876:32hearing the ownerMuse Voice Transcribe 1.000$0.0001
            886:33choosing what to tryMuse Spark 1.33.3k (3.2k cached)322$0.00207.6 s
            896:33speakingElevenLabs Flash v2.500$0.011
            906:36the interviewMuse Spark 1.31.1k186$0.00222.9 s
            916:36speakingElevenLabs Flash v2.500$0.012
            926:36choosing what to tryMuse Spark 1.35.6k227$0.00803.3 s
            936:39choosing what to tryMuse Spark 1.31.1k158$0.00212.1 s
            946:41choosing what to tryMuse Spark 1.31.1k (1.0k cached)151$0.00092.0 s
            956:44choosing what to tryMuse Spark 1.35.6k (4.5k cached)190$0.00292.4 s
            966:47choosing what to tryMuse Spark 1.31.1k122$0.00191.7 s
            976:47hearing the ownerMuse Voice Transcribe 1.000$0.0004
            986:50choosing what to tryMuse Spark 1.35.6k (4.3k cached)154$0.00291.9 s
            996:51the interviewMuse Spark 1.31.2k237$0.00243.5 s
            1006:51speakingElevenLabs Flash v2.500$0.012
            1016:54choosing what to tryMuse Spark 1.31.1k280$0.00263.4 s
            1026:59choosing what to tryMuse Spark 1.35.6k (4.5k cached)304$0.00343.4 s
            1037:02hearing the ownerMuse Voice Transcribe 1.000$0.0001
            1047:06reviewing pagesMuse Spark 1.3575632$0.00347.3 s
            1057:06speakingElevenLabs Flash v2.500$0.0028
            1067:06speakingElevenLabs Flash v2.500$0.0090
            1077:06the interviewMuse Spark 1.31.1k254$0.00253.7 s
            1087:06speakingElevenLabs Flash v2.500$0.012
            1097:11choosing what to tryMuse Spark 1.35.6k302$0.00834.5 s
            1107:11speakingElevenLabs Flash v2.500$0.0045
            1117:13choosing what to tryMuse Spark 1.33.2k179$0.00482.4 s
            1127:17choosing what to tryMuse Spark 1.33.7k (1.1k cached)248$0.00452.7 s
            1137:22choosing what to tryMuse Spark 1.33.5k154$0.00513.6 s
            1147:24choosing what to tryMuse Spark 1.33.6k109$0.00491.8 s
            1157:28choosing what to tryMuse Spark 1.33.3k (1.1k cached)231$0.00392.4 s
            1167:32choosing what to tryMuse Spark 1.33.3k (1.1k cached)291$0.00423.5 s
            1177:38choosing what to tryMuse Spark 1.33.4k (1.1k cached)423$0.00474.7 s
            1187:42speakingElevenLabs Flash v2.500$0.0032
            1197:43choosing what to tryMuse Spark 1.33.4k391$0.00594.4 s
            1207:55speakingElevenLabs Flash v2.500$0.096
            1217:58choosing what to tryMuse Spark 1.35.6k193$0.00792.8 s
            1227:58speakingElevenLabs Flash v2.500$0.0057
            1238:02choosing what to tryMuse Spark 1.31.1k (881 cached)379$0.00214.6 s
            1248:05choosing what to tryMuse Spark 1.35.7k168$0.00782.1 s
            1258:09choosing what to tryMuse Spark 1.31.6k (881 cached)186$0.00182.6 s
            1268:13choosing what to tryMuse Spark 1.31.6k165$0.00272.6 s
            1278:18choosing what to tryMuse Spark 1.31.4k263$0.00283.5 s
            1288:22choosing what to tryMuse Spark 1.31.3k (881 cached)258$0.00173.5 s
            1298:25hearing the ownerMuse Voice Transcribe 1.000$0.0002
            1308:30the interviewMuse Spark 1.31.5k295$0.00314.4 s
            1318:30speakingElevenLabs Flash v2.500$0.016
            1328:32choosing what to tryMuse Spark 1.35.7k (4.5k cached)291$0.00344.6 s
            1338:32speakingElevenLabs Flash v2.500$0.0065
            1348:36choosing what to tryMuse Spark 1.31.3k226$0.00253.6 s
            1358:40choosing what to tryMuse Spark 1.31.2k276$0.00273.3 s
            1368:45choosing what to tryMuse Spark 1.31.2k281$0.00274.2 s
            1378:50choosing what to tryMuse Spark 1.31.5k231$0.00293.5 s
            1388:58choosing what to tryMuse Spark 1.31.3k (881 cached)203$0.00153.0 s
            1399:03choosing what to tryMuse Spark 1.31.3k (881 cached)250$0.00174.2 s
            1409:09choosing what to tryMuse Spark 1.31.3k (881 cached)383$0.00235.0 s
            1419:14choosing what to tryMuse Spark 1.31.3k (881 cached)202$0.00152.7 s
            1429:18choosing what to tryMuse Spark 1.31.2k230$0.00253.0 s
            1439:24choosing what to tryMuse Spark 1.31.2k (881 cached)356$0.00214.4 s
            1449:29choosing what to tryMuse Spark 1.31.2k (881 cached)364$0.00214.5 s
            1459:34choosing what to tryMuse Spark 1.35.7k203$0.00793.1 s
            1469:38choosing what to tryMuse Spark 1.31.5k (881 cached)226$0.00192.9 s
            1479:47choosing what to tryMuse Spark 1.31.3k269$0.00273.8 s
            1489:51choosing what to tryMuse Spark 1.31.3k303$0.00293.6 s
            1499:55choosing what to tryMuse Spark 1.31.2k (881 cached)196$0.00142.8 s
            15010:00hearing the ownerMuse Voice Transcribe 1.000$0.0002
            15110:00choosing what to tryMuse Spark 1.31.2k (881 cached)317$0.00194.3 s
            15210:03the interviewMuse Spark 1.31.5k (625 cached)159$0.00193.1 s
            15310:03speakingElevenLabs Flash v2.500$0.012
            15410:08choosing what to tryMuse Spark 1.35.7k (4.5k cached)443$0.00416.5 s
            15510:11choosing what to tryMuse Spark 1.31.5k (881 cached)215$0.00182.8 s
            15610:14choosing what to tryMuse Spark 1.31.3k (881 cached)230$0.00162.5 s
            15710:24choosing what to tryMuse Spark 1.31.3k (881 cached)411$0.00244.7 s
            15810:28choosing what to tryMuse Spark 1.31.5k (881 cached)244$0.00193.1 s
            15910:38choosing what to tryMuse Spark 1.31.3k (881 cached)309$0.00193.8 s
            16010:43choosing what to tryMuse Spark 1.31.2k (881 cached)308$0.00194.2 s
            16110:49choosing what to tryMuse Spark 1.31.2k401$0.00325.6 s
            16210:55choosing what to tryMuse Spark 1.31.2k (881 cached)342$0.00204.7 s
            16311:00choosing what to tryMuse Spark 1.31.2k (881 cached)367$0.00214.4 s
            16411:07choosing what to tryMuse Spark 1.31.2k (881 cached)250$0.00153.5 s
            16511:11choosing what to tryMuse Spark 1.35.7k229$0.00803.4 s
            16611:14choosing what to tryMuse Spark 1.31.1k (1.0k cached)192$0.00112.8 s
            16711:15hearing the ownerMuse Voice Transcribe 1.000$0.0007
            16811:16speakingElevenLabs Flash v2.500$0.0065
            16911:18the interviewMuse Spark 1.31.6k167$0.00272.2 s
            17011:18speakingElevenLabs Flash v2.500$0.013
            17111:20choosing what to tryMuse Spark 1.35.7k (4.3k cached)283$0.00354.5 s
            17211:25choosing what to tryMuse Spark 1.31.2k (881 cached)372$0.00214.5 s
            17311:30choosing what to tryMuse Spark 1.35.7k491$0.00924.9 s
            17411:30speakingElevenLabs Flash v2.500$0.0090
            17511:36choosing what to tryMuse Spark 1.35.8k (4.5k cached)435$0.00425.2 s
            17611:40choosing what to tryMuse Spark 1.35.9k (4.3k cached)346$0.00404.9 s
            17711:40speakingElevenLabs Flash v2.500$0.0076
            17811:44choosing what to tryMuse Spark 1.33.5k (1.1k cached)305$0.00443.7 s
            17911:47choosing what to tryMuse Spark 1.33.5k155$0.00511.9 s
            18011:51choosing what to tryMuse Spark 1.33.3k (1.1k cached)166$0.00362.8 s
            18111:56choosing what to tryMuse Spark 1.33.3k299$0.00543.5 s
            18212:02choosing what to tryMuse Spark 1.33.3k284$0.00545.0 s
            18312:03speakingElevenLabs Flash v2.500$0.016
            18412:05speakingElevenLabs Flash v2.500$0.0032
            18512:07choosing what to tryMuse Spark 1.35.9k362$0.00894.4 s
            18612:13speakingElevenLabs Flash v2.500$0.026
            18712:20choosing what to tryMuse Spark 1.35.9k472$0.00936.9 s
            18812:20hearing the ownerMuse Voice Transcribe 1.000$0.0001
            18912:22choosing what to tryMuse Spark 1.35.9k168$0.00802.6 s
            19012:23the interviewMuse Spark 1.31.3k151$0.00222.2 s
            19112:23speakingElevenLabs Flash v2.500$0.012
            19212:39hearing the ownerMuse Voice Transcribe 1.000$0.0002
            19312:40speakingElevenLabs Flash v2.500$0.0065
            19412:43the interviewMuse Spark 1.31.2k222$0.00253.2 s
            19512:43speakingElevenLabs Flash v2.500$0.010
            19612:53speakingElevenLabs Flash v2.500$0.0032
            19713:08speakingElevenLabs Flash v2.500$0.0040
            19813:40choosing what to tryMuse Spark 1.35.9k269$0.00853.6 s
            19913:40speakingElevenLabs Flash v2.500$0.0081
            20013:46choosing what to tryMuse Spark 1.33.6k424$0.00625.3 s
            20113:53choosing what to tryMuse Spark 1.33.4k417$0.00605.6 s
            20213:56choosing what to tryMuse Spark 1.33.6k205$0.00532.9 s
            20314:01choosing what to tryMuse Spark 1.33.4k (1.1k cached)327$0.00433.5 s
            20414:07choosing what to tryMuse Spark 1.33.4k390$0.00595.2 s
            20514:12hearing the ownerMuse Voice Transcribe 1.000$0.0002
            20614:12choosing what to tryMuse Spark 1.33.4k307$0.00554.1 s
            20714:15the interviewMuse Spark 1.31.1k188$0.00223.0 s
            20814:15speakingElevenLabs Flash v2.500$0.012
            20914:21choosing what to tryMuse Spark 1.33.6k678$0.00747.4 s
            21014:26choosing what to tryMuse Spark 1.33.4k330$0.00564.4 s
            21114:31choosing what to tryMuse Spark 1.33.6k (1.1k cached)391$0.00493.7 s
            21214:36choosing what to tryMuse Spark 1.33.4k471$0.00624.7 s
            21314:48choosing what to tryMuse Spark 1.33.4k (1.1k cached)940$0.007011.0 s
            21414:57choosing what to tryMuse Spark 1.33.4k694$0.00727.6 s
            21515:01choosing what to tryMuse Spark 1.33.7k176$0.00532.5 s
            21615:01hearing the ownerMuse Voice Transcribe 1.000$0.0004
            21715:07the interviewMuse Spark 1.31.1k300$0.00274.0 s
            21815:07speakingElevenLabs Flash v2.500$0.015
            21915:10choosing what to tryMuse Spark 1.33.4k (1.1k cached)770$0.00638.7 s
            22015:13hearing the ownerMuse Voice Transcribe 1.000$0.0000
            22115:16choosing what to tryMuse Spark 1.33.5k (1.3k cached)331$0.00434.9 s
            22215:17speakingElevenLabs Flash v2.500$0.015
            22315:20the interviewMuse Spark 1.31.1k (625 cached)159$0.00142.7 s
            22415:20speakingElevenLabs Flash v2.500$0.012
            22515:22choosing what to tryMuse Spark 1.36.0k391$0.00915.3 s
            22615:22speakingElevenLabs Flash v2.500$0.0076
            22715:25choosing what to tryMuse Spark 1.33.6k (1.1k cached)189$0.00402.5 s
            22815:29choosing what to tryMuse Spark 1.33.3k270$0.00533.5 s
            22915:35choosing what to tryMuse Spark 1.33.6k373$0.00614.4 s
            23015:39choosing what to tryMuse Spark 1.33.4k (1.1k cached)351$0.00443.4 s
            23115:44choosing what to tryMuse Spark 1.33.6k305$0.00583.8 s
            23215:51choosing what to tryMuse Spark 1.33.4k (1.1k cached)457$0.00496.3 s
            23315:57choosing what to tryMuse Spark 1.33.4k367$0.00584.4 s
            23416:04choosing what to tryMuse Spark 1.33.6k514$0.00676.0 s
            23516:09choosing what to tryMuse Spark 1.33.4k331$0.00573.9 s
            23616:13choosing what to tryMuse Spark 1.33.4k254$0.00533.4 s
            23716:15hearing the ownerMuse Voice Transcribe 1.000$0.0003
            23816:19the interviewMuse Spark 1.31.2k226$0.00243.3 s
            23916:19speakingElevenLabs Flash v2.500$0.012
            24016:20choosing what to tryMuse Spark 1.33.6k (1.1k cached)580$0.00586.2 s
            24116:27choosing what to tryMuse Spark 1.33.4k (1.1k cached)436$0.00495.6 s
            24216:35choosing what to tryMuse Spark 1.33.4k562$0.00677.4 s
            24316:48choosing what to tryMuse Spark 1.33.7k (1.3k cached)923$0.007111.8 s
            24416:56choosing what to tryMuse Spark 1.33.7k (1.1k cached)644$0.00617.8 s
            24517:01choosing what to tryMuse Spark 1.33.4k351$0.00583.9 s
            24617:02speakingElevenLabs Flash v2.500$0.015
            24717:06choosing what to tryMuse Spark 1.36.0k317$0.00884.4 s
            24817:10choosing what to tryMuse Spark 1.33.3k (1.1k cached)300$0.00413.6 s
            24917:14hearing the ownerMuse Voice Transcribe 1.000$0.0004
            25017:18choosing what to tryMuse Spark 1.33.5k (1.3k cached)573$0.00547.3 s
            25117:18speakingElevenLabs Flash v2.500$0.0087
            25217:21choosing what to tryMuse Spark 1.36.0k (4.5k cached)155$0.00323.2 s
            25317:28the interviewMuse Spark 1.31.2k146$0.00212.4 s
            25417:28speakingElevenLabs Flash v2.500$0.011
            25517:43choosing what to tryMuse Spark 1.35.9k (4.5k cached)168$0.00322.8 s
            25617:45choosing what to tryMuse Spark 1.35.9k (4.8k cached)184$0.00282.6 s
            25717:53hearing the ownerMuse Voice Transcribe 1.000$0.0002
            25817:57the interviewMuse Spark 1.31.2k (625 cached)144$0.00142.0 s
            25917:57speakingElevenLabs Flash v2.500$0.0087
            26018:07speakingElevenLabs Flash v2.500$0.0015
            26118:09speakingElevenLabs Flash v2.500$0.0020
            26218:32hearing the ownerMuse Voice Transcribe 1.000$0.0003
            26318:37hearing the ownerMuse Voice Transcribe 1.000$0.0001
            26418:45the interviewMuse Spark 1.31.2k (625 cached)160$0.00152.7 s
            26518:45speakingElevenLabs Flash v2.500$0.0072
            26618:58speakingElevenLabs Flash v2.500$0.0037
            26719:00speakingElevenLabs Flash v2.500$0.0021
            26819:12hearing the ownerMuse Voice Transcribe 1.000$0.0002
            26919:16the interviewMuse Spark 1.31.1k (625 cached)161$0.00143.1 s
            27019:16speakingElevenLabs Flash v2.500$0.0076
            27119:26hearing the ownerMuse Voice Transcribe 1.000$0.0001
            27219:31the interviewMuse Spark 1.31.1k183$0.00224.9 s
            27319:31speakingElevenLabs Flash v2.500$0.012
            27419:46hearing the ownerMuse Voice Transcribe 1.000$0.0003
            27519:51the interviewMuse Spark 1.31.1k252$0.00254.2 s
            27619:51speakingElevenLabs Flash v2.500$0.019
            27720:10hearing the ownerMuse Voice Transcribe 1.000$0.0004
            27820:10speakingElevenLabs Flash v2.500$0.0069
            27920:14the interviewMuse Spark 1.31.2k315$0.00283.7 s
            28020:14speakingElevenLabs Flash v2.500$0.017
            28120:25choosing what to tryMuse Spark 1.36.0k (4.5k cached)749$0.00579.9 s
            28220:34reviewing pagesMuse Spark 1.35.5k657$0.00978.6 s
            28320:37reviewing pagesMuse Spark 1.318.0k745$0.02611.7 s
            28420:43speakingElevenLabs Flash v2.500$0.0037
            28520:56reviewing pagesMuse Spark 1.311.7k1.2k$0.02013.7 s
            28620:59reviewing pagesMuse Spark 1.310.5k1.3k$0.01916.1 s
            28721:03reviewing pagesMuse Spark 1.310.5k1.5k$0.02020.3 s
            28821:09reviewing pagesMuse Spark 1.311.8k (241 cached)2.0k$0.02326.8 s
            28921:10reviewing pagesMuse Spark 1.311.7k1.9k$0.02327.0 s
            29021:12reviewing pagesMuse Spark 1.311.7k2.2k$0.02429.6 s
            29121:13reviewing pagesMuse Spark 1.311.8k2.3k$0.02429.9 s
            29221:14reviewing pagesMuse Spark 1.310.5k2.6k$0.02431.8 s
            29321:17reviewing pagesMuse Spark 1.310.6k (241 cached)2.6k$0.02433.9 s
            29421:18reviewing pagesMuse Spark 1.310.6k (241 cached)2.9k$0.02535.8 s
            29521:35reviewing pagesMuse Spark 1.36.9k1.3k$0.01417.0 s
            29621:38reviewing pagesMuse Spark 1.312.3k1.7k$0.02320.1 s
            29721:39reviewing pagesMuse Spark 1.36.9k (241 cached)1.5k$0.01520.2 s
            29821:44reviewing pagesMuse Spark 1.312.3k2.1k$0.02425.9 s
            29921:46reviewing pagesMuse Spark 1.312.3k (1.0k cached)2.1k$0.02327.3 s
            30021:48reviewing pagesMuse Spark 1.36.9k2.3k$0.01829.2 s
            30121:48reviewing pagesMuse Spark 1.36.9k2.4k$0.01929.7 s
            30221:48reviewing pagesMuse Spark 1.36.9k (241 cached)2.4k$0.01829.7 s
            30321:48reviewing pagesMuse Spark 1.312.3k2.5k$0.02629.8 s
            30421:50reviewing pagesMuse Spark 1.312.2k2.7k$0.02731.1 s
            30522:10reviewing pagesMuse Spark 1.36.9k1.8k$0.01620.8 s
            30622:17reviewing pagesMuse Spark 1.36.9k1.8k$0.01627.2 s
            30722:17reviewing pagesMuse Spark 1.36.1k2.1k$0.01727.8 s
            30822:18reviewing pagesMuse Spark 1.36.1k (241 cached)2.1k$0.01628.0 s
            30922:19reviewing pagesMuse Spark 1.36.9k (241 cached)2.4k$0.01829.1 s
            31022:21reviewing pagesMuse Spark 1.36.9k2.5k$0.01931.4 s
            31122:25reviewing pagesMuse Spark 1.36.1k2.8k$0.02035.6 s
            31222:27reviewing pagesMuse Spark 1.36.9k3.1k$0.02237.0 s
            31322:29reviewing pagesMuse Spark 1.36.1k3.3k$0.02239.4 s
            31422:34reviewing pagesMuse Spark 1.36.1k (241 cached)3.9k$0.02444.6 s
            31522:52reviewing pagesMuse Spark 1.39.6k (241 cached)1.3k$0.01717.6 s
            31623:00reviewing pagesMuse Spark 1.39.6k (241 cached)2.1k$0.02126.0 s
            31723:05reviewing pagesMuse Spark 1.39.6k2.5k$0.02330.7 s
            31823:06reviewing pagesMuse Spark 1.39.6k (241 cached)2.8k$0.02332.0 s
            31923:08reviewing pagesMuse Spark 1.39.6k2.6k$0.02334.2 s
            32023:09reviewing pagesMuse Spark 1.38.4k2.6k$0.02235.1 s
            32123:10reviewing pagesMuse Spark 1.38.4k3.1k$0.02435.9 s
            32223:12reviewing pagesMuse Spark 1.38.4k (241 cached)2.6k$0.02137.6 s
            32323:14reviewing pagesMuse Spark 1.38.4k (1.0k cached)2.9k$0.02239.7 s
            32423:16reviewing pagesMuse Spark 1.38.4k2.9k$0.02342.1 s
            32523:35reviewing pagesMuse Spark 1.38.8k (241 cached)1.5k$0.01719.2 s
            32623:39reviewing pagesMuse Spark 1.38.8k (241 cached)1.9k$0.01923.2 s
            32723:44reviewing pagesMuse Spark 1.38.8k (241 cached)2.5k$0.02127.7 s
            32823:45reviewing pagesMuse Spark 1.38.6k (241 cached)2.5k$0.02128.3 s
            32923:46reviewing pagesMuse Spark 1.38.6k (241 cached)2.5k$0.02129.6 s
            33023:46reviewing pagesMuse Spark 1.38.8k (241 cached)2.6k$0.02230.1 s
            33123:47reviewing pagesMuse Spark 1.38.6k (241 cached)2.4k$0.02130.7 s
            33223:49reviewing pagesMuse Spark 1.38.6k (241 cached)2.9k$0.02333.1 s
            33323:51reviewing pagesMuse Spark 1.38.6k (241 cached)2.6k$0.02134.6 s
            33423:52reviewing pagesMuse Spark 1.38.8k (241 cached)3.1k$0.02435.6 s
            33524:13reviewing pagesMuse Spark 1.310.8k (241 cached)1.7k$0.02121.6 s
            33624:14reviewing pagesMuse Spark 1.310.8k (241 cached)1.9k$0.02122.0 s
            33724:14reviewing pagesMuse Spark 1.310.8k (241 cached)1.9k$0.02122.2 s
            33824:14reviewing pagesMuse Spark 1.38.2k (241 cached)1.6k$0.01722.2 s
            33924:15reviewing pagesMuse Spark 1.38.2k (1.0k cached)2.0k$0.01823.1 s
            34024:19reviewing pagesMuse Spark 1.310.8k (241 cached)2.1k$0.02227.5 s
            34124:21reviewing pagesMuse Spark 1.38.2k (241 cached)2.4k$0.02029.4 s
            34224:23reviewing pagesMuse Spark 1.310.8k (241 cached)2.6k$0.02431.6 s
            34324:24reviewing pagesMuse Spark 1.38.2k (241 cached)2.7k$0.02232.1 s
            34424:31reviewing pagesMuse Spark 1.38.2k3.3k$0.02439.6 s
            34524:31speakingElevenLabs Flash v2.500$0.0021
            34624:32outlining elementsSAM 3.100$0.00250.9 sfinding
            34724:34outlining elementsSAM 3.100$0.00251.0 sfinding
            34824:34speakingElevenLabs Flash v2.500$0.0040
            34924:34outlining elementsSAM 3.100$0.00250.9 sfinding
            35024:35outlining elementsSAM 3.100$0.00250.9 sfinding
            35124:36outlining elementsSAM 3.100$0.00250.7 sfinding
            35224:37speakingElevenLabs Flash v2.500$0.0077
            35324:41speakingElevenLabs Flash v2.500$0.0044
            35424:43speakingElevenLabs Flash v2.500$0.0042
            35524:45speakingElevenLabs Flash v2.500$0.0032
            35624:48speakingElevenLabs Flash v2.500$0.0032
            35724:49speakingElevenLabs Flash v2.500$0.0046
            35824:52speakingElevenLabs Flash v2.500$0.0025
            35924:53speakingElevenLabs Flash v2.500$0.0031
            36024:55speakingElevenLabs Flash v2.500$0.0033
            36124:57speakingElevenLabs Flash v2.500$0.0054
            36225:00speakingElevenLabs Flash v2.500$0.0077
            36325:05speakingElevenLabs Flash v2.500$0.0085
            36425:11speakingElevenLabs Flash v2.500$0.0064
            36525:16speakingElevenLabs Flash v2.500$0.0026
            36625:17speakingElevenLabs Flash v2.500$0.0037
            36792:37speakingElevenLabs Flash v2.500$0.0013
            36892:46choosing what to tryMuse Spark 1.35.9k691$0.0108.4 s
            36992:49choosing what to tryMuse Spark 1.35.9k176$0.00812.9 s
            37092:49speakingElevenLabs Flash v2.500$0.0064
            37192:49speakingElevenLabs Flash v2.500$0.0020
            37299:40hearing the ownerMuse Voice Transcribe 1.000$0.0001
            37399:44the interviewMuse Spark 1.31.3k259$0.00272.9 s
            37499:44speakingElevenLabs Flash v2.500$0.017
            37599:45choosing what to tryMuse Spark 1.35.9k245$0.00843.6 s
            37699:45speakingElevenLabs Flash v2.500$0.0088
            377100:09hearing the ownerMuse Voice Transcribe 1.000$0.0002
            378100:14the interviewMuse Spark 1.31.3k314$0.00294.2 s
            379100:14speakingElevenLabs Flash v2.500$0.017
            380100:30hearing the ownerMuse Voice Transcribe 1.000$0.0002
            381100:38the interviewMuse Spark 1.31.3k307$0.00295.1 s
            382100:38speakingElevenLabs Flash v2.500$0.017
            383100:38choosing what to tryMuse Spark 1.35.9k (4.5k cached)366$0.00405.4 s
            384100:38speakingElevenLabs Flash v2.500$0.0069
            385102:42speakingElevenLabs Flash v2.500$0.0037
            386102:46speakingElevenLabs Flash v2.500$0.0015