=== FILE: php/theme.php === === FILE: php/layout.php === Morning Brew Admin
=== FILE: php/rail.php ===
=== FILE: php/navbar.php === === FILE: php/dashboard.php ===
Debug Panel
Current theme: (loading)
Background mode: (loading)
Frame mode: (loading)

Business news that’s actually enjoyable.

Get the daily email that makes reading the news fun.

FEATURED

AI CEOs call for development slowdown

Anthropic CEO urges pacing frontier innovation to balance progress and safety.

CLIMATE
Boozier Champagne

Heat waves hit French winemakers hard.

BUSINESS
Work trials rising

Companies want role-play before hiring.

The Latest

AI upends hiring

Hiring looks nothing like it used to.

Today • 5 min read
Markets snapshot

S&P, NASDAQ, and DOW in focus.

Today • 3 min read
Friday news quiz

Test your knowledge of the week.

Friday • 4 min play

Wedges Practice Area

=== FILE: php/footer.php === === FILE: php/wedges-dashboard.php ===
Lighting Zones

Three-zone LED layout for evening practice.

Landscaping Plan

Native plants, low maintenance, drought tolerant.

Elevation Map

Graded slopes for realistic wedge shot practice.

=== FILE: php/wedges-layout.php === Wedges Practice Area

Wedges Practice Area (Standalone)

=== FILE: css/morningbrew.css === /* CONTINUED FROM PART 1 — FULL FILE INCLUDED HERE */ :root { --mb-navy: #0b1020; --mb-blue: #2563eb; --mb-blue-light: #e0edff; --mb-gray: #f8fafc; --mb-border: #e2e8f0; --mb-text-secondary: #6b7280; --bg-light: #ffffff; --bg-dark: #020617; } /* Base */ body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } /* Background mode */ body[data-bgmode="light"] { background-color: var(--bg-light) !important; } body[data-bgmode="dark"] { background-color: var(--bg-dark) !important; color: #f8fafc !important; } /* FRAME SYSTEM */ /* B1 — Thin border */ body[data-frame="b1"] .mb-frame { border: 1px solid var(--mb-border); padding: 0; min-height: 100vh; box-sizing: border-box; } /* B2 — Thick padded frame */ body[data-frame="b2"] .mb-frame { border: 12px solid var(--mb-border); padding: 12px; min-height: 100vh; box-sizing: border-box; background: var(--mb-gray); } /* B3 — Shadowed container */ body[data-frame="b3"] .mb-frame { padding: 24px; min-height: 100vh; box-sizing: border-box; background: var(--mb-gray); } body[data-frame="b3"] .mb-frame > .wrapper { background: #fff; border-radius: 18px; box-shadow: 0 10px 40px rgba(0,0,0,0.12); overflow: hidden; } /* Icon rail */ .mb-icon-rail { width: 56px; background: var(--mb-navy); color: #cbd5e1; padding: 12px 0; position: sticky; top: 0; height: 100vh; } .mb-rail-icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; margin: 6px 0; border-radius: 999px; color: #cbd5e1; text-decoration: none; } .mb-rail-icon.active, .mb-rail-icon:hover { background: rgba(255,255,255,0.15); color: #fff; } /* Main page */ .main-page { min-height: 100vh; } /* Navbar */ .mb-navbar { background: #ffffff; border-bottom: 1px solid var(--mb-border); } .mb-navbar .nav-link { color: #0f172a; } .mb-navbar .nav-link:hover { color: var(--mb-blue); } .btn-mb-subscribe { background: var(--mb-blue); color: #fff; border-radius: 999px; padding: 8px 18px; font-weight: 600; } .btn-mb-subscribe:hover { background: #1d4ed8; color: #fff; } /* Page container */ .mb-page { padding: 24px; } /* Section frame */ .mb-section-frame { border: 1px solid var(--mb-border); border-radius: 18px; padding: 24px; background: #fff; margin-bottom: 32px; } /* Debug panel */ .mb-debug-panel { border: 1px dashed var(--mb-border); border-radius: 12px; padding: 12px 16px; font-size: 0.85rem; background: #f9fafb; } .mb-debug-panel h6 { margin-bottom: 8px; font-weight: 600; } /* Hero */ .mb-hero { background: var(--mb-blue); color: #fff; border-radius: 18px; padding: 32px 28px; } .mb-hero-title { font-size: 2.1rem; } .mb-hero-subtitle { font-size: 1rem; max-width: 420px; } .mb-hero-form input { border-radius: 999px; } .btn-mb-hero { background: #0f172a; color: #fff; border-radius: 999px; padding: 10px 22px; font-weight: 600; } .btn-mb-hero:hover { background: #020617; } /* Feature cards */ .mb-feature-card { background: #fff; border-radius: 18px; border: 1px solid var(--mb-border); overflow: hidden; } .mb-feature-image { height: 220px; background: linear-gradient(135deg, #2563eb, #0f172a); } .mb-feature-image.small { height: 140px; } .mb-feature-body { padding: 16px 18px; } .mb-tag { font-size: .75rem; font-weight: 700; color: var(--mb-blue); letter-spacing: .08em; text-transform: uppercase; } /* Latest cards */ .mb-latest-card { background: #fff; border-radius: 14px; border: 1px solid var(--mb-border); padding: 12px 14px; } /* Wedges section */ .mb-wedges .card-wedge { background: #fff; border: 1px solid var(--mb-border); border-radius: 14px; padding: 16px; margin-bottom: 16px; } /* Footer */ .mb-footer { background: var(--mb-blue-light); border-top: 1px solid var(--mb-border); } .mb-footer-list li a { color: #0f172a; text-decoration: none; font-size: 0.9rem; } .mb-footer-list li a:hover { color: var(--mb-blue); } /* Theme switching */ body[data-theme="default"] .mb-hero { background: #0f172a; } body[data-theme="default"] .mb-navbar { background: #f8fafc; } body[data-theme="default"] .mb-icon-rail { background: #111827; } === FILE: docs/tasks.md === # Tasks - Implement Morning Brew layout (navbar, hero, grid, footer). - Add fixed left icon rail (Font Awesome). - Implement frame system (B1/B2/B3) with B1 default. - Wrap dashboard and wedges in section frames. - Implement theme switching (Morning Brew / Default). - Implement background mode (Light / Dark). - Add debug panel to show current theme, background mode, and frame mode. - Verify CSS loads correctly from `../css/morningbrew.css`. - Verify PHP helpers (`theme.php`) set initial theme, background mode, and frame mode. - Test layout in desktop and mobile breakpoints. === FILE: docs/requirements.md === # Requirements - Use Bootstrap 5.3.3 CDN for layout and components. - Use Font Awesome 6.x CDN for icon rail. - All custom styles must live in `../css/morningbrew.css`. - PHP entry point: `php/layout.php`. - Theme, background mode, and frame mode must persist via `localStorage` and cookies. - Layout must match Morning Brew’s UX: white navbar, blue hero, two-column content, multi-column footer. - Icon rail must be fixed on the left and push content to the right. - Wedges section must appear inline below main content grid, inside a section frame. - Frame system must support: - B1: Thin border - B2: Thick padded frame - B3: Shadowed container === FILE: docs/ux.md === # UX Notes - **Navbar:** White, full-width, centered navigation, subscribe button on the right. - **Hero:** Blue banner with large headline and email signup form. - **Content Grid:** Two columns — left for featured stories, right for “The Latest”. - **Icon Rail:** Minimal vertical rail with icons only, navy background, active highlight. - **Wedges:** Inline cards that visually match Morning Brew’s card style, inside a section frame. - **Footer:** Light blue background, four columns of links, small legal text. - **Theme Switcher:** Accessible via Settings dropdown in navbar. - **Background Mode:** Light and dark modes for overall page background. - **Frame System:** User-selectable via Settings → Layout Frame (B1/B2/B3). - **Debug Panel:** Small panel at top of content showing current theme, background mode, and frame mode.