#!/usr/bin/env python3
"""Morning Joe's Rundown — April 6, 2026"""

from docx import Document
from docx.shared import Pt, RGBColor, Inches, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_ALIGN_VERTICAL
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy

NAVY = RGBColor(0x1B, 0x34, 0x6B)
GOLD = RGBColor(0xC9, 0xA0, 0x2B)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_GRAY = RGBColor(0x40, 0x40, 0x40)
LIGHT_GOLD_BG = RGBColor(0xFF, 0xF8, 0xE7)

def set_cell_background(cell, hex_color):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    shd = OxmlElement('w:shd')
    shd.set(qn('w:val'), 'clear')
    shd.set(qn('w:color'), 'auto')
    shd.set(qn('w:fill'), hex_color)
    tcPr.append(shd)

def add_page_number(doc):
    """Add page numbers to footer"""
    section = doc.sections[0]
    footer = section.footer
    p = footer.paragraphs[0]
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run()
    run.font.size = Pt(9)
    run.font.color.rgb = DARK_GRAY
    run.text = "Morning Joe's Rundown  |  April 6, 2026  |  Page "
    
    fldChar = OxmlElement('w:fldChar')
    fldChar.set(qn('w:fldCharType'), 'begin')
    instrText = OxmlElement('w:instrText')
    instrText.text = 'PAGE'
    fldChar2 = OxmlElement('w:fldChar')
    fldChar2.set(qn('w:fldCharType'), 'end')
    run._r.append(fldChar)
    run._r.append(instrText)
    run._r.append(fldChar2)

def add_section_header(doc, text, number):
    """Bold navy heading with gold accent bar"""
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(14)
    p.paragraph_format.space_after = Pt(4)
    
    # Gold left bar via border
    pPr = p._p.get_or_add_pPr()
    pBdr = OxmlElement('w:pBdr')
    left = OxmlElement('w:left')
    left.set(qn('w:val'), 'single')
    left.set(qn('w:sz'), '24')
    left.set(qn('w:space'), '6')
    left.set(qn('w:color'), 'C9A02B')
    pBdr.append(left)
    pPr.append(pBdr)
    
    # Shading
    shd = OxmlElement('w:shd')
    shd.set(qn('w:val'), 'clear')
    shd.set(qn('w:color'), 'auto')
    shd.set(qn('w:fill'), 'EAF0FB')
    pPr.append(shd)
    
    run = p.add_run(f"  SECTION {number} — {text}")
    run.font.name = 'Calibri'
    run.font.size = Pt(13)
    run.font.bold = True
    run.font.color.rgb = NAVY

def add_bullet(doc, text, indent=0):
    p = doc.add_paragraph(style='List Bullet')
    p.paragraph_format.space_before = Pt(1)
    p.paragraph_format.space_after = Pt(1)
    if indent:
        p.paragraph_format.left_indent = Inches(indent * 0.25)
    run = p.add_run(text)
    run.font.name = 'Calibri'
    run.font.size = Pt(10)
    run.font.color.rgb = DARK_GRAY

def add_checkbox(doc, text, indent=0):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(1)
    p.paragraph_format.space_after = Pt(1)
    if indent:
        p.paragraph_format.left_indent = Inches(indent * 0.25)
    run = p.add_run(f"[ ]  {text}")
    run.font.name = 'Calibri'
    run.font.size = Pt(10)
    run.font.color.rgb = DARK_GRAY

def add_subheader(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(6)
    p.paragraph_format.space_after = Pt(2)
    run = p.add_run(text)
    run.font.name = 'Calibri'
    run.font.size = Pt(11)
    run.font.bold = True
    run.font.color.rgb = GOLD

def add_body(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(1)
    p.paragraph_format.space_after = Pt(2)
    run = p.add_run(text)
    run.font.name = 'Calibri'
    run.font.size = Pt(10)
    run.font.color.rgb = DARK_GRAY

def add_alert(doc, text, color=None):
    p = doc.add_paragraph()
    pPr = p._p.get_or_add_pPr()
    shd = OxmlElement('w:shd')
    shd.set(qn('w:val'), 'clear')
    shd.set(qn('w:color'), 'auto')
    shd.set(qn('w:fill'), 'FFF3CD')
    pPr.append(shd)
    run = p.add_run(f"  ⚡  {text}")
    run.font.name = 'Calibri'
    run.font.size = Pt(10)
    run.font.bold = True
    run.font.color.rgb = RGBColor(0x85, 0x50, 0x00)

# ─────────────────────────────────────────────
doc = Document()

# Page setup
section = doc.sections[0]
section.page_width = Inches(8.5)
section.page_height = Inches(11)
section.left_margin = Inches(0.85)
section.right_margin = Inches(0.85)
section.top_margin = Inches(0.75)
section.bottom_margin = Inches(0.75)

# Default style
style = doc.styles['Normal']
style.font.name = 'Calibri'
style.font.size = Pt(10)

# ── TITLE BLOCK ──────────────────────────────
title_p = doc.add_paragraph()
title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_p.paragraph_format.space_after = Pt(2)
tr = title_p.add_run("🦞  MORNING JOE'S RUNDOWN")
tr.font.name = 'Calibri'
tr.font.size = Pt(22)
tr.font.bold = True
tr.font.color.rgb = NAVY

sub_p = doc.add_paragraph()
sub_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
sub_p.paragraph_format.space_after = Pt(2)
sr = sub_p.add_run("Monday, April 6, 2026  |  6:00 AM ET  |  Market Holiday Edition")
sr.font.name = 'Calibri'
sr.font.size = Pt(10)
sr.font.italic = True
sr.font.color.rgb = GOLD

# Divider
div_p = doc.add_paragraph()
div_p.paragraph_format.space_after = Pt(6)
div_r = div_p.add_run("─" * 95)
div_r.font.size = Pt(7)
div_r.font.color.rgb = GOLD

# ═══════════════════════════════════════════
# SECTION 1 — WEATHER
# ═══════════════════════════════════════════
add_section_header(doc, "WEATHER", 1)

add_subheader(doc, "🏖️  Ship Bottom, NJ (Beach House)")
add_bullet(doc, "Now: 45°F, Partly Cloudy, WNW wind 16 mph — feels like 38°F")
add_bullet(doc, "Today: H 56°F / L 41°F  |  Sunny by afternoon  |  Sunrise 6:33 AM / Sunset 7:26 PM")
add_bullet(doc, "⚠️  Wind advisory: Gusts to 25 mph through midday — breezy beach conditions")
add_bullet(doc, "Tue: H 51°F / Sunny  |  Wed: H 44°F / Clear & cold")

add_subheader(doc, "🪵  Tuckerton, NJ (TLC Yard)")
add_bullet(doc, "Now: 45°F, Partly Cloudy, WNW wind 14 mph — feels like 39°F")
add_bullet(doc, "Today: H 59°F / L 38°F  |  Sunny afternoon — good delivery/yard day")
add_bullet(doc, "Tue: H 55°F / Sunny  |  Wed: H 49°F / Clear")

add_subheader(doc, "🏡  Chesterfield, NJ (Firehouse)")
add_bullet(doc, "Now: 43°F, Light Rain this morning — overcast 100%")
add_bullet(doc, "Today: H 57°F / L 36°F  |  Rain clearing by 9 AM → sunny afternoon")
add_bullet(doc, "Tue: H 51°F / Sunny  |  Wed: H 53°F / Sunny")

add_subheader(doc, "🎓  Columbia, SC (Bella — USC)")
add_bullet(doc, "Now: 56°F, Clear — pleasant morning")
add_bullet(doc, "Today: H 75°F / L 51°F  |  Sunny to partly cloudy — great spring day for Bella")

add_subheader(doc, "🏈  Tuscaloosa, AL (Jules — Alabama)")
add_bullet(doc, "Now: 52°F, Clear")
add_bullet(doc, "Today: H 76°F / L 47°F  |  Sunny — gorgeous spring day in T-town")

add_subheader(doc, "💙  Austin, TX (Danielle / In Memory of Robby)")
add_bullet(doc, "Now: 55°F, Clear")
add_bullet(doc, "Today: H 76°F / L 51°F  |  Sunny and beautiful — checking on Danielle's city")

# ═══════════════════════════════════════════
# SECTION 2 — MARKETS & INVESTMENTS
# ═══════════════════════════════════════════
add_section_header(doc, "MARKETS & INVESTMENTS", 2)

add_alert(doc, "MARKET HOLIDAY: NYSE & Nasdaq were CLOSED Friday April 3 (Good Friday). Last trade = Thursday April 2, 2026.")

add_subheader(doc, "📊  Indexes vs. Joe's March 25 Exit Baseline")
add_bullet(doc, "S&P 500 Exit Baseline:  6,591.90  (Mar 25, 2026)")
add_bullet(doc, "S&P 500 Last Close:      6,582.69  (Apr 2, 2026)  →  DOWN −9.21 pts (−0.14%)  ✅ Joe's exit STILL AHEAD")
add_bullet(doc, "Dow Jones Exit Baseline: 46,429.49  (Mar 25, 2026)")
add_bullet(doc, "Dow Jones Last Close:    46,504.67  (Apr 2, 2026)  →  UP +75.18 pts (+0.16%)  ⚠️ Dow recovered slightly above exit")
add_bullet(doc, "Nasdaq Last Close:       21,879.18  (Apr 2, 2026)  |  Market closed Apr 3 — Good Friday holiday")

add_body(doc, "📌 Bottom Line: Markets have been grinding sideways since Joe's exit. Five weeks of weakness followed by a modest Easter-week bounce. S&P is essentially flat vs. exit. Joe is in cash/treasuries — no regrets. The Apr 30 deployment is 24 days away.")

add_subheader(doc, "📅  Key Macro Context This Week")
add_bullet(doc, "Markets reopen MONDAY April 6 — first trading day after Good Friday")
add_bullet(doc, "Iran war concerns / oil volatility: oil prices elevated — watch energy sector")
add_bullet(doc, "Tariff backdrop still active — sweeping tariffs ongoing, midterm election year volatility expected")
add_bullet(doc, "Fed speaker schedule: monitor for rate commentary this week")

add_subheader(doc, "📋  Watchlist 3%+ Movers (Last Trading Day — Apr 2)")
add_bullet(doc, "No specific 3%+ single-stock moves confirmed from available data for Apr 2.")
add_bullet(doc, "April 30 target stocks to monitor this week: V, FICO, BABA, PGR, MELI, CSU")
add_bullet(doc, "Constellation Software (CSU) — watch for continued post-Mark-Leonard-exit volatility")
add_bullet(doc, "MercadoLibre (MELI) — was near 52-wk low ~$1,977; monitor for entry setup pre-Apr 30")

add_subheader(doc, "🏦  13F / Super Investor Watch")
add_bullet(doc, "Q4 2025 13F filings are the most current — Buffett, Li Lu, Pabrai, Akre, Guy Spier")
add_bullet(doc, "Q1 2026 13Fs due mid-May 2026 — first post-exit filings will be highly relevant for Apr 30 plan")
add_bullet(doc, "No new filings in the window — monitor mid-May for updated positioning")

add_subheader(doc, "📆  Earnings This Week (Apr 6–10)")
add_bullet(doc, "Markets resume Monday — first full week post-Easter. Earnings season kicks off.")
add_bullet(doc, "Major banks typically report early April — JPMorgan Chase (JPM), Wells Fargo (WFC), Citigroup (C) likely this week")
add_bullet(doc, "Check Seeking Alpha for exact dates — confirm your Apr 30 holdings' next earnings dates")

# ═══════════════════════════════════════════
# SECTION 3 — COMMODITY PRICES
# ═══════════════════════════════════════════
add_section_header(doc, "COMMODITY PRICES", 3)

add_subheader(doc, "🌲  Lumber & Building Materials")
add_bullet(doc, "Lumber Futures (CME): ~$606/MBF as of Apr 2, 2026  (per Business Insider)")
add_bullet(doc, "Range context: $450–$712/MBF since Aug 2022 — currently mid-range")
add_bullet(doc, "Feb 2026 high: $614.50 (3-month high) — pulled back since on weak housing data")
add_bullet(doc, "Framing lumber softwood: pricing in mid-range, stable heading into spring season")
add_bullet(doc, "Treated lumber / decking: spring demand window NOW — March–August is your margin capture period")
add_body(doc, "📌 TLC Implication: $606 lumber is workable. Not a crisis, not a windfall. Seasonal pricing strategy is active — maximize gross margin on residential through August. Confirm Epicor pricing tiers are live for treated/decking SKUs.")

add_subheader(doc, "🏗️  Other Notable Building Materials")
add_bullet(doc, "OSB / Plywood: no significant move reported — stable pricing")
add_bullet(doc, "Concrete / Rebar: construction input costs up ~4.1% YoY in South Jersey")
add_bullet(doc, "Tariff watch: 10% minimum tariff on imports active — monitor lumber/hardware cost pass-through")

# ═══════════════════════════════════════════
# SECTION 4 — LOCAL NEWS & ZONING
# ═══════════════════════════════════════════
add_section_header(doc, "LOCAL NEWS & ZONING", 4)

add_subheader(doc, "🏛️  Chesterfield Township / Firehouse")
add_bullet(doc, "No new zoning board activity confirmed — Easter holiday week, likely no meetings")
add_bullet(doc, "[ ] Certificate of Compliance application + $150 fee — still pending Joe's submission to Phil Reed")
add_bullet(doc, "[ ] Zoning compliance letter — tweak to make specific, request borough letterhead")
add_bullet(doc, "Firehouse marketing to developers/architects ongoing — central/south NJ, Princeton, Philadelphia area")
add_bullet(doc, "PMK Contractors Invoice #INV-000143 ($13,750): Joe directed Judy to cut check from JL&KL TD Bank account (Apr 1) — confirm payment processed")

add_subheader(doc, "🏖️  LBI / Ocean County")
add_bullet(doc, "LBI spring market: avg sale price $2.26M, +49.6% YoY — extraordinary market conditions")
add_bullet(doc, "Ocean County building permits +47% — strong construction pipeline for TLC")
add_bullet(doc, "LBI: 121 new builds in pipeline — direct Surf City yard revenue opportunity")
add_bullet(doc, "Corner Market Deal (275 W 9th St, Ship Bottom): 50/50 partnership — strategic relocation from Surf City — no update, monitor")
add_bullet(doc, "Keli LBI real estate: spring is HOT — make sure her social content is flowing")

add_subheader(doc, "🏗️  NJ Shore / Construction Industry")
add_bullet(doc, "South Jersey construction cost inflation: +4.1% YoY — supports pricing power at TLC")
add_bullet(doc, "Tariff impact on materials: monitor for downstream pricing pressure — opportunity to lock contractor pricing")
add_bullet(doc, "Surfbox: no local regulatory activity noted — Ocean County zoning appears stable")

# ═══════════════════════════════════════════
# SECTION 5 — TODAY'S SCHEDULE
# ═══════════════════════════════════════════
add_section_header(doc, "TODAY'S SCHEDULE", 5)

add_subheader(doc, "📅  Today — Monday, April 6, 2026")
add_bullet(doc, "6:00 AM — Morning Joe's Rundown delivered (this document) ✅")
add_bullet(doc, "Markets REOPEN today — first trading day after Good Friday/Easter weekend")
add_bullet(doc, "TLC resumes normal operations — post-Easter week, contractor season in full swing")
add_bullet(doc, "⚠️  EASTER TRIP RETURN: Joe & family returning from Charleston / Isle of Palms (Apr 2–6 trip)")
add_bullet(doc, "Surfbox April 30 social media go-live: T-24 days — final prep phase")
add_bullet(doc, "April 30 Portfolio Restructuring: T-24 days — 29-stock execution countdown")

add_subheader(doc, "📆  Coming Up This Week")
add_bullet(doc, "Monday Apr 6: Markets reopen — watch for tariff/Iran war volatility")
add_bullet(doc, "Week of Apr 6: Bank earnings season begins (JPM, WFC, C likely reporting)")
add_bullet(doc, "[ ] Frank Capecci (neighbor, Ship Bottom): Joe needs to reach out — wife passed away Dec 2025. Mobile: 973-229-9362")
add_bullet(doc, "[ ] Jersey Appliance (609-918-1830) — Thermador hood service (svc #275188): call to fix hood, door, racking")
add_bullet(doc, "[ ] Gio's $225 driveway work at Joe's parents — cash check still owed")
add_bullet(doc, "[ ] Gmail / email access setup (TONIGHT task from previous session)")
add_bullet(doc, "[ ] Switch back to Claude Max $200/mo plan on Mac (TONIGHT task)")
add_bullet(doc, "Friday Apr 10: Standard operating week — Surfbox/TLC check-in")

add_subheader(doc, "⚠️  PHISHING ALERT")
add_alert(doc, "Apr 5 email: Suspicious forwarded message claiming '$200 Claude AI credit at claude.ai/settings/usage' — this is LIKELY PHISHING. Do NOT click that link. Your billing is handled directly at $200/month Claude Max.")

# ═══════════════════════════════════════════
# SECTION 6 — ACTION CARD
# ═══════════════════════════════════════════
add_section_header(doc, "ACTION CARD", 6)

add_subheader(doc, "💻  Mac / Tech")
add_checkbox(doc, "Tonight: Switch back to Claude Max $200/month plan on Mac (check rob.lobster.claw@gmail.com for invoice)")
add_checkbox(doc, "Tonight: Set up Gmail send capability (rob.lobster.claw@gmail.com → jlynch@tlcnj.com ONLY)")
add_checkbox(doc, "Tonight: Gmail read-only API on josephfl12@gmail.com")
add_checkbox(doc, "Set up Outlook forwarding: Epicor/Surfbox reports → rob.lobster.claw@gmail.com")
add_checkbox(doc, "Set up ElevenLabs account + enable voice plugin on Mac")
add_checkbox(doc, "Set up Bella with her own OpenClaw Chief of Staff")

add_subheader(doc, "📞  Calls to Make")
add_checkbox(doc, "Frank Capecci — 973-229-9362 — neighbor in Ship Bottom, wife passed Dec 2025, check in on him")
add_checkbox(doc, "Jersey Appliance — 609-918-1830 — Thermador hood (svc #275188) — fix hood + door + racking")
add_checkbox(doc, "Robert MacArthur (CPA) — LLC distribution → W-2 salary restructuring for Roth 401(k) strategy")
add_checkbox(doc, "Joey Young — follow up on spreadsheet with commission/bonus calcs + inventory target ($325K/$3,500)")

add_subheader(doc, "🏚️  Firehouse (18 New St, Crosswicks)")
add_checkbox(doc, "Submit Certificate of Compliance application + $150 fee to Phil Reed")
add_checkbox(doc, "Tweak zoning compliance letter — make specific, request borough letterhead")
add_checkbox(doc, "Confirm PMK Contractors check ($13,750, Invoice #INV-000143) was cut by Judy from JL&KL TD account")
add_checkbox(doc, "Schedule Mike the plumber — Ship Bottom Code Official — walk-through plumbing renovation + HVAC")

add_subheader(doc, "🪵  TLC / Surfbox")
add_checkbox(doc, "Verify Epicor seasonal pricing tiers LIVE for treated lumber / decking (spring margin season is NOW)")
add_checkbox(doc, "Confirm Epicor credit card surcharge module status with Amanda")
add_checkbox(doc, "Surfbox social media: finalize content for April 30 go-live — T-24 days")
add_checkbox(doc, "Neal/Denise: Confirm priority prospecting calls — Amon, Pagnotta targets this week")
add_checkbox(doc, "Edwin: Confirm junior manager elevation status and communication to team")

add_subheader(doc, "🏠  Properties")
add_checkbox(doc, "Corner Market (275 W 9th, Ship Bottom): next step on 50/50 partnership discussion?")
add_checkbox(doc, "Keli social media: ensure spring LBI content is posting — market is HOT ($2.26M avg)")
add_checkbox(doc, "Property tax appeals: Chesterfield Block 301, Lots 10 & 12 — procedural violations strategy")

add_subheader(doc, "👨‍👩‍👧‍👧  Family / Personal")
add_checkbox(doc, "Confirm Easter trip return logistics — everyone safely home from Charleston/Isle of Palms?")
add_checkbox(doc, "Juliana confidence plan: discuss summer waitressing job (LBI restaurant or Chesterfield)")
add_checkbox(doc, "Bella AI education: follow up on OpenClaw setup for her — timing/logistics")
add_checkbox(doc, "Dictate Keli's full family history to Rob (when she's not nearby 😂)")
add_checkbox(doc, "Rob Lobster voice clone: gather Robby audio/video from Facebook — TALK TO RENEE FIRST")

add_subheader(doc, "🛒  Errands")
add_checkbox(doc, "Gio's $225 cash check — still owed for driveway work at Mom & Dad's house")
add_checkbox(doc, "Key ring organization project: 5 rings (Firehouse, TD Banks, Truist, Surf City, Tuckerton)")

add_subheader(doc, "📅  Coming Up This Week")
add_checkbox(doc, "April 30: Portfolio restructuring D-Day — 29 stocks, confirm order list ready, cash in position")
add_checkbox(doc, "April 30: Surfbox social media go-live — confirm all content pieces ready")
add_checkbox(doc, "Bank earnings: JPMorgan, WFC, Citi — monitor for macro signals relevant to Apr 30 deployment")
add_checkbox(doc, "TLC: Concrete drain installation — target completion before Easter (was this done?)")
add_checkbox(doc, "TLC: Forklift sourcing — one used diesel dually + one used low forklift for Tuckerton Yard")

# ═══════════════════════════════════════════
# SECTION 7 — SPORTS
# ═══════════════════════════════════════════
add_section_header(doc, "SPORTS", 7)

add_subheader(doc, "⚾  Yankees (MLB — April 5, 2026)")
add_bullet(doc, "Yankees 9 ✅ vs. Phillies 2 — Yankees WIN at home (6-11 home record)")
add_bullet(doc, "Phillies fall to 4-31 away record — rough road trip season")
add_bullet(doc, "Complete game from a Yankee pitcher noted — solid outing")

add_subheader(doc, "🏀  Knicks (NBA — April 3-5, 2026)")
add_bullet(doc, "Knicks 136 — Chicago Bulls 96 (Apr 3, 2026) — BLOWOUT, W by 40 points")
add_bullet(doc, "O.G. Anunoby notable — Knicks are rolling heading into final week of regular season")
add_bullet(doc, "Knicks playoff positioning: check seeding for first round matchup")
add_bullet(doc, "NBA regular season winding down — playoffs start mid-April")

add_subheader(doc, "⚽  Liverpool FC")
add_bullet(doc, "Liverpool 0 — Manchester City 4 (FA Cup, Apr 4, 2026) — Tough loss in FA Cup")
add_bullet(doc, "Liverpool previously beat Galatasaray 4-0 (Champions League, Mar 18) — secured quarterfinal spot")
add_bullet(doc, "Lost to Brighton 1-2 (Mar 21) — patchy form heading into Champions League quarters")
add_bullet(doc, "Champions League quarterfinals upcoming — watch for draw/schedule")

add_subheader(doc, "🏈  Steelers | USMNT")
add_bullet(doc, "NFL: Offseason — no games. Draft is April 23-25, 2026")
add_bullet(doc, "USMNT: No match this weekend — check FIFA international calendar for next fixture")

add_subheader(doc, "⚾  Phillies")
add_bullet(doc, "Phillies 2, Yankees 9 — L. Phillies road record 4-31 is concerning early in the season")
add_bullet(doc, "Justin Crawford walked off the Nationals 6-5 (different game) — Crawford is a bright spot")

# ═══════════════════════════════════════════
# SECTION 8 — TOKEN SPEND
# ═══════════════════════════════════════════
add_section_header(doc, "TOKEN SPEND", 8)

add_subheader(doc, "💰  Compute Spend Tracker")
add_bullet(doc, "Billing Model: Claude Max — $200/month flat rate (switched March 29, 2026)")
add_bullet(doc, "Daily morning rundown: ~1,500–2,000 tokens/section × 8 sections ≈ est. 15,000–20,000 tokens")
add_bullet(doc, "Total session context April 6: High (large MEMORY.md + weather + market data) — est. 30,000–40,000 tokens")
add_bullet(doc, "Under flat-rate Claude Max: Exact API cost tracking N/A — billed at $200/month regardless of volume")
add_bullet(doc, "Prior API key model: variable spend — Claude Max $200/month is the confirmed plan")
add_body(doc, "📌 Action: Compare month-end API billing (check rob.lobster.claw@gmail.com for Anthropic invoice) vs prior variable spend to confirm Max plan savings. Goal: validate $200/mo is optimal vs. API key model.")

# ── FOOTER DIVIDER ──────────────────────────
doc.add_paragraph()
div2 = doc.add_paragraph()
div2.paragraph_format.space_before = Pt(8)
div2r = div2.add_run("─" * 95)
div2r.font.size = Pt(7)
div2r.font.color.rgb = GOLD

close_p = doc.add_paragraph()
close_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
cr = close_p.add_run("Prepared by Rob Lobster 🦞  |  OpenClaw Chief of Staff  |  Make good decisions out there, Joe. 🤙")
cr.font.name = 'Calibri'
cr.font.size = Pt(9)
cr.font.italic = True
cr.font.color.rgb = NAVY

add_page_number(doc)

# Save
output_path = '/Users/joemac/.openclaw/workspace/projects/daily/morning-rundown-2026-04-06.docx'
doc.save(output_path)
print(f"✅ Saved: {output_path}")
