#!/usr/bin/env python3
"""Genera Agenda DOCX + HTML Dashboard para Bruna Peru Weekly Review — 08 Jun 2026"""

import sys
sys.path.insert(0, '/home/node/.hermes/venv/lib/python3.13/site-packages')

from docx import Document
from docx.shared import Pt, RGBColor, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
import datetime, os

FECHA = "08 de junio, 2026"
FECHA_FILE = "2026-06-08"
OUTPUT_DIR = "/home/node/workspace/bruna-peru/outputs"
os.makedirs(OUTPUT_DIR, exist_ok=True)

# ─── Colores ──────────────────────────────────────────────────────────
NAVY   = RGBColor(0x1B, 0x4F, 0x72)
ACCENT = RGBColor(0x2E, 0x86, 0xC1)
RED    = RGBColor(0xC0, 0x39, 0x2B)
ORANGE = RGBColor(0xE6, 0x7E, 0x22)
GREEN  = RGBColor(0x27, 0xAE, 0x60)
PURPLE = RGBColor(0x8E, 0x44, 0xAD)
YELLOW = RGBColor(0xF1, 0xC4, 0x0F)
GRAY   = RGBColor(0x95, 0xA5, 0xA6)
DARK   = RGBColor(0x2C, 0x3E, 0x50)

STATUS_COLORS = {
    "HECHO": GREEN,
    "AVANZADO": YELLOW,
    "NO AVANZADO": RED,
    "VERIFICAR": ORANGE,
    "NUEVO": PURPLE,
}

def add_heading(doc, text, level=1, color=NAVY):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(12 if level == 1 else 8)
    p.paragraph_format.space_after = Pt(4)
    run = p.add_run(text)
    run.bold = True
    run.font.size = Pt(18 if level == 1 else 13 if level == 2 else 11)
    run.font.color.rgb = color
    return p

def add_status_item(doc, text, status, responsible="", indent_in=0.3):
    p = doc.add_paragraph()
    p.paragraph_format.left_indent = Inches(indent_in)
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after = Pt(2)
    badge = p.add_run(f"[{status}] ")
    badge.bold = True
    badge.font.color.rgb = STATUS_COLORS.get(status, DARK)
    badge.font.size = Pt(10)
    main = p.add_run(text)
    main.font.size = Pt(10)
    if responsible:
        rr = p.add_run(f"  \u2192 {responsible}")
        rr.font.color.rgb = ACCENT
        rr.font.size = Pt(9)
    return p

def add_divider(doc):
    p = doc.add_paragraph("\u2500" * 80)
    p.paragraph_format.space_before = Pt(4)
    p.paragraph_format.space_after = Pt(4)
    p.runs[0].font.color.rgb = ACCENT
    p.runs[0].font.size = Pt(7)

def add_bullet(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.left_indent = Inches(0.4)
    p.paragraph_format.space_before = Pt(2)
    p.paragraph_format.space_after = Pt(2)
    run = p.add_run(f"\u2022 {text}")
    run.font.size = Pt(10)
    return p

# ─── Datos actualizados al 08-Jun-2026 ─────────────────────────────────

# FUENTE: Read AI reunion "PLAN DE TRABAJO" Jun 5, 2026 (4 asistentes, Teams)
# Incorporacion Carlos Calderon. Muestras Jenny en 1-2 semanas. OPP Films target.
# Google Alerts TiO2: Tronox TROX down 7.2%. Ilmenite: HK Gold Impairment + Jazan Port +44% Q1.
# Bruna Brain Jun 2 (sesion 6): N8n bloqueado. API Penta pendiente Carlos. Reunion → jueves 10 AM.

pendientes = {
    "Victor Alfaro": {
        "rol": "Gerente General Lima",
        "items": [
            ("Revisar y aprobar prospectos marcados como deal activos en Prospectus/Teams", "VERIFICAR"),
            ("Aprobar contactos y registros creados en Apollo/HubSpot para continuar flujo", "VERIFICAR"),
            ("Follow-up Mineria (Oscar Rosas) — confirmar status reunion y propuesta", "VERIFICAR"),
            ("Qroma (Baldion) — neopreno, caucho clorado, parafina: primer contacto", "NO AVANZADO"),
        ]
    },
    "Jennifer Segura": {
        "rol": "Lider Mercado Peru",
        "items": [
            ("Preparar lista completa de productos disponibles para Carlos Calderon — NUEVA TAREA Jun 5", "VERIFICAR"),
            ("Enviar fichas tecnicas y preparar muestras (plazo: ~2 semanas a partir Jun 5)", "AVANZADO"),
            ("Cotizacion formal Daryza (lista 30+ MPs de Urbina recibida 11 mar) — OVERDUE 13 sem", "NO AVANZADO"),
            ("Seguimiento Aurora Paint (resinas epoxicas VYTA BPA) — reportar respuesta o silencio", "VERIFICAR"),
            ("Universal Colors — TiO2 588 y oxidos hierro: update Erika/Murillo", "VERIFICAR"),
            ("Coordinar reunion de seguimiento (semana del 9 jun) con todos participantes", "VERIFICAR"),
        ]
    },
    "Andres Bruna": {
        "rol": "Director Nuevos Mercados",
        "items": [
            ("Identificar candidatos con nombre/apellido para abordajes comerciales inmediatos", "VERIFICAR"),
            ("Subir articulo de orquestacion al repositorio de Teams (Bruna Brain)", "VERIFICAR"),
            ("Crear repositorio de presupuesto con licencias y costos del proyecto", "VERIFICAR"),
            ("Validar costos y cargas de API en Penta Peru con Steve", "VERIFICAR"),
            ("Status Oral Care — tubos, formula, equipos, Ruby", "VERIFICAR"),
            ("Propuesta tecnica compacta para OPP Films (gerente planta: Eligero Valdion)", "NUEVO"),
        ]
    },
    "Carlos Calderon": {
        "rol": "Nuevo — Comercial (OMIA / Pinturas)",
        "items": [
            ("Enviar lista de productos identificados y especificaciones para cruce con portafolio", "VERIFICAR"),
            ("Explicar trayectoria y experiencia al equipo en detalle", "VERIFICAR"),
            ("Disponibilidad urgente: nitrocelulosa, titanio, resinas epoxicas", "NUEVO"),
        ]
    },
    "Jorge Bruna": {
        "rol": "Empaques",
        "items": [
            ("Confirmar status liner y si persisten problemas de produccion (Romex/Nico)", "VERIFICAR"),
            ("Update mecanica tubos y empaque Oral Care", "VERIFICAR"),
        ]
    },
    "Carlos Artavia": {
        "rol": "Logistica / SPU",
        "items": [
            ("Hablar con Ileana — confirmar pago de impuestos y liberacion de carga", "NO AVANZADO"),
            ("CargoFlex: 1ra entrega 5,400 kg — coordinar 6,600 kg restantes", "AVANZADO"),
            ("PO Norway — inventario status (OVERDUE 7 sem)", "VERIFICAR"),
        ]
    },
    "Vanessa Garcia": {
        "rol": "BDU",
        "items": [
            ("Org chart actualizado Grupo Romero + costos reales Policloropreno", "VERIFICAR"),
            ("Subir factura al sistema — agilizar recepcion", "VERIFICAR"),
        ]
    },
    "Edwin Viales / Stiff Fernandez": {
        "rol": "Bruna Brain (Tech)",
        "items": [
            ("Desbloquear API Penta — contacto con Carlos (ya pactada llamada)", "VERIFICAR"),
            ("Subir credenciales de acceso (.txt) a carpeta Teams", "VERIFICAR"),
            ("Activar N8n una vez disponible conexion API", "VERIFICAR"),
            ("Publicar al menos 1 pieza validada en redes sociales", "VERIFICAR"),
            ("Subir documentacion de flujo a GitHub y compartir acceso al equipo", "VERIFICAR"),
        ]
    },
}

cuentas = [
    ("Alicorp / Grupo Romero", "VERIFICAR", [
        ("Lufarol, CaCO3, 12 productos aprobados — status muestras + homologacion", "Jennifer Segura", "P1"),
        ("Org chart actualizado + costos reales Policloropreno", "Vanessa Garcia", "P2"),
        ("Deal activos Apollo/HubSpot — aprobacion pendiente Victor", "Victor Alfaro", "P1"),
    ]),
    ("Cafetal (K2CO3 oral)", "AVANZADO", [
        ("CargoFlex: 1ra entrega 5,400 kg coordinada; 6,600 kg restantes sin confirmar", "Carlos Artavia", "P1"),
        ("Confirmar pago impuestos + liberacion de carga con Ileana", "Carlos Artavia", "P1"),
    ]),
    ("Romex / Nico", "VERIFICAR", [
        ("Verificar status liner y problemas de produccion (chat tecnico)", "Jorge Bruna", "P1"),
        ("Update tapas y liners", "Jorge Bruna", "P2"),
    ]),
    ("Daryza", "NO AVANZADO", [
        ("Lista 30+ MPs recibida de Urbina (11 mar) — cotizacion formal PENDIENTE 13 semanas", "Jennifer Segura", "P1"),
        ("MPs prioritarias: Lauril Eter Sulfato 82t, Ac. Sulfonico 58t, NaOH 50% 46t, PEAD 38t", "", "P1"),
        ("Confirmar meeting de seguimiento con Urbina", "Jennifer Segura", "P1"),
    ]),
    ("Aurora Paint", "VERIFICAR", [
        ("Seguimiento resinas epoxicas VYTA BPA — reportar respuesta esta semana", "Jennifer Segura", "P1"),
    ]),
    ("Universal Colors", "VERIFICAR", [
        ("TiO2 Alert (8 jun): Tronox TROX -7.2% desde ultimo reporte earnings", "", "P2"),
        ("Ilmenite Alert: impairment HK Gold, puerto Jazan +44% Q1 — monitorear precio", "", "P3"),
        ("Erika/Murillo — TiO2 588 y oxidos de hierro: update esta semana", "Jennifer Segura", "P1"),
    ]),
    ("Qroma", "NO AVANZADO", [
        ("Carlos Baldion — neopreno, caucho clorado, parafina: Carlos Calderon puede abrir puerta", "Victor Alfaro", "P2"),
    ]),
    ("Prospectos Pintura", "VERIFICAR", [
        ("Anipsa, Perupaint, Soprint, Interpaint — Carlos Calderon tiene leads en pinturas/construccion", "Carlos Calderon", "P2"),
        ("OPP Films — alto volumen titanio y polimeros; propuesta tecnica para Eligero Valdion", "Andres Bruna", "P1"),
    ]),
    ("Plasticos", "VERIFICAR", [
        ("Tigre, Andinaplast, Inproplast, Nicoll — cera PE, TiO2, masterbatch", "Victor Alfaro", "P3"),
    ]),
    ("Mineria", "VERIFICAR", [
        ("Oscar Rosas — confirmar status reunion y propuesta MIBC/xantatos", "Victor Alfaro", "P1"),
        ("MIBC, xantatos, lubricantes — ficha tecnica + pricing listo?", "Andres Bruna", "P2"),
    ]),
    ("Oral Care", "VERIFICAR", [
        ("Status tubos, formula, equipos — Ruby / referidos", "Andres Bruna", "P1"),
        ("Jorge Bruna — update empaque y mecanica tubos", "Jorge Bruna", "P2"),
    ]),
    ("Alimentos", "VERIFICAR", [
        ("Pursuit, JAVA, Creafoods — pipeline status acidos y especialidades", "Victor Alfaro", "P2"),
        ("Reunion pendiente de seguimiento — agendar esta semana", "Andres Bruna", "P2"),
    ]),
]

# ─── DOCX ──────────────────────────────────────────────────────────────
doc = Document()
for section in doc.sections:
    section.top_margin = Inches(0.8)
    section.bottom_margin = Inches(0.8)
    section.left_margin = Inches(1.0)
    section.right_margin = Inches(1.0)

# Titulo
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("AGENDA REVISION SEMANAL — BRUNA PERU")
run.bold = True
run.font.size = Pt(20)
run.font.color.rgb = NAVY

p2 = doc.add_paragraph()
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
r2 = p2.add_run(f"Semana del {FECHA}  |  VCB S.A.C.")
r2.bold = True
r2.font.size = Pt(13)
r2.font.color.rgb = ACCENT

p3 = doc.add_paragraph()
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
r3 = p3.add_run("Confidencial — Uso Interno")
r3.italic = True
r3.font.size = Pt(9)
r3.font.color.rgb = GRAY

add_divider(doc)

# PARTE 0 — INTEL SEMANA
add_heading(doc, "PARTE 0 — NOVEDADES CLAVE DE LA SEMANA (2-8 Jun)", level=1, color=NAVY)

add_heading(doc, "Reunion PLAN DE TRABAJO — Jun 5, 2026 (Teams, 4 asistentes)", level=2, color=PURPLE)
add_bullet(doc, "Carlos Calderon se incorpora al equipo comercial. Experiencia: OMIA, pinturas y construccion.")
add_bullet(doc, "Escasez urgente en mercado: nitrocelulosa, TiO2 y resinas epoxicas — oportunidad de margen con stock.")
add_bullet(doc, "OPP Films identificado como target estrategico (alto volumen titanio + polimeros). Contacto: Eligero Valdion, gerente de planta.")
add_bullet(doc, "Flujo comercial acordado: ficha tecnica → aprobacion tecnica → muestra → seguimiento intensivo.")
add_bullet(doc, "Victor: crear grupo WhatsApp con Carlos para coordinacion rapida.")
add_bullet(doc, "Reunion de seguimiento pactada para semana del 9 jun. Jenny coordina.")

add_heading(doc, "Bruna Brain — Sesion 6 — Jun 2, 2026 (Teams)", level=2, color=PURPLE)
add_bullet(doc, "Arquitectura: M1 (ingestión/filtrado) + M2 (scoring/publicacion). SupaBase con RUC para matching.")
add_bullet(doc, "BLOQUEADO: N8n y todo el flujo dependen del API de Penta. Carlos (Penta) ya fue contactado; llamada pactada con Stiff.")
add_bullet(doc, "Cambio de horario: reunion semanal ahora JUEVES 10 AM (antes lunes).")
add_bullet(doc, "Pendiente Andres: subir articulo de orquestacion a Teams + crear repositorio de presupuesto.")
add_bullet(doc, "Publicar al menos 1 pieza en redes esta semana (Edwin).")

add_heading(doc, "Market Intel — Google Alerts", level=2, color=ACCENT)
add_bullet(doc, "TiO2 (8 jun): Tronox (TROX) down 7.2% desde ultimo earnings report. Volumen de ventas TiO2 + zircon al alza pero precio presionado.")
add_bullet(doc, "Ilmenite (8 jun): Hong Kong Gold Industry impairment RMB 50.9M en activos mineros de ilmenite. Puerto Jazan +44% Q1 en volumen cargo (incluye ilmenite).")
add_bullet(doc, "Kronos/Lomon: alertas activas esta semana — monitorear cotizaciones para Universal Colors y pinturas.")

add_divider(doc)

# PARTE 1
add_heading(doc, "PARTE 1 — REVISION PENDIENTES (semana anterior)", level=1, color=NAVY)
doc.add_paragraph("Fuente: Read AI Jun 5 + Jun 2, emails Himalaya 2-8 jun.").runs[0].font.size = Pt(9)

for persona, data in pendientes.items():
    add_heading(doc, f"  {persona}  |  {data['rol']}", level=2, color=ACCENT)
    for tarea, status in data["items"]:
        add_status_item(doc, tarea, status, indent_in=0.5)

add_divider(doc)

# PARTE 2
add_heading(doc, "PARTE 2 — AGENDA POR CUENTA (12 cuentas)", level=1, color=NAVY)

for i, (nombre, status, items) in enumerate(cuentas, 1):
    add_heading(doc, f"  {i}. {nombre}", level=2, color=ACCENT)
    sp = doc.add_paragraph()
    sp.paragraph_format.left_indent = Inches(0.4)
    sr = sp.add_run(f"Status: [{status}]")
    sr.bold = True
    sr.font.size = Pt(10)
    sr.font.color.rgb = STATUS_COLORS.get(status, DARK)

    for tarea, responsable, prioridad in items:
        p_color = RED if prioridad == "P1" else ORANGE if prioridad == "P2" else GRAY
        p = doc.add_paragraph()
        p.paragraph_format.left_indent = Inches(0.6)
        p.paragraph_format.space_before = Pt(2)
        p.paragraph_format.space_after = Pt(2)
        pr = p.add_run(f"[{prioridad}] ")
        pr.font.color.rgb = p_color
        pr.bold = True
        pr.font.size = Pt(10)
        tr = p.add_run(tarea)
        tr.font.size = Pt(10)
        if responsable:
            rr = p.add_run(f"  \u2192 {responsable}")
            rr.font.color.rgb = ACCENT
            rr.font.size = Pt(9)

add_divider(doc)

# PARTE 3 — PROYECTOS ESTRATEGICOS
add_heading(doc, "PARTE 3 — PROYECTOS ESTRATEGICOS", level=1, color=NAVY)

proyectos = [
    ("OPP Films (NUEVO)", PURPLE, [
        "Target prioritario: alto volumen titanio + polimeros",
        "Contacto clave: Eligero Valdion (gerente de planta)",
        "Andres: preparar propuesta tecnica compacta esta semana",
        "Carlos Calderon: aportar contexto de mercado pinturas/polimeros",
    ]),
    ("Mineria — Oscar Rosas", PURPLE, [
        "Victor: confirmar status reunion y propuesta",
        "Portfolio: MIBC, xantatos, lubricantes",
        "Preparar ficha tecnica + pricing",
    ]),
    ("Oral Care", PURPLE, [
        "Andres: status tubos / formula / equipos — Ruby",
        "Jorge Bruna: mecanica tubos y empaque",
    ]),
    ("Bruna Brain (Tech)", PURPLE, [
        "Stiff: desbloquear API Penta con Carlos (llamada pactada)",
        "Edwin: credenciales Teams, activar N8n, publicar 1 pieza redes",
        "Andres: articulo orquestacion + repositorio presupuesto",
        "Proxima revision: JUEVES 10 AM",
    ]),
    ("Daryza — OVERDUE CRITICO", RED, [
        "Cotizacion formal pendiente 13 semanas (recibida 11 mar)",
        "Prioridad maxima Jenny esta semana — no puede pasar otra semana",
        "Volumen principal: Lauril Eter Sulfato 82 t/ano",
    ]),
]

for nombre, color, items in proyectos:
    add_heading(doc, f"  {nombre}", level=2, color=color)
    for item in items:
        add_bullet(doc, item)

add_divider(doc)

# RESUMEN EJECUTIVO
add_heading(doc, "RESUMEN EJECUTIVO", level=1, color=NAVY)

add_heading(doc, "HOY (lun 8 jun) — Urgente", level=2, color=RED)
urgentes = [
    ("Jennifer Segura: Cotizacion Daryza — 13 semanas overdue, enviar esta semana sin falta", "NO AVANZADO", "Jennifer Segura"),
    ("Victor Alfaro: Aprobar prospectos deal activos en Prospectus/Teams para desbloquear flujo", "VERIFICAR", "Victor Alfaro"),
    ("Carlos Artavia: Confirmar pago impuestos + liberacion carga con Ileana", "NO AVANZADO", "Carlos Artavia"),
    ("Andres Bruna: Propuesta OPP Films (Eligero Valdion) — empresa grande, empezar hoy", "NUEVO", "Andres Bruna"),
    ("Stiff/Edwin: Llamada con Carlos (Penta) — desbloquear API para activar N8n y flujo Brain", "VERIFICAR", "Stiff / Edwin"),
]
for item in urgentes:
    add_status_item(doc, item[0], item[1], indent_in=0.4)

add_heading(doc, "ESTA SEMANA (8-13 jun)", level=2, color=ORANGE)
semana_items = [
    "Jenny: Fichas tecnicas + muestras listas (plazo acordado Jun 5: ~2 semanas)",
    "Jenny: Seguimiento Aurora Paint (resinas epoxicas VYTA BPA)",
    "Jenny: Universal Colors — update TiO2 588 y oxidos hierro",
    "Carlos Calderon: Enviar lista productos + specs para cruce con portafolio",
    "Victor: Crear grupo WhatsApp con Carlos Calderon",
    "Victor: Follow-up Mineria (Oscar Rosas) — propuesta MIBC/xantatos",
    "Andres: Validar API Penta Peru con Steve (costos y cargas)",
    "Edwin: Publicar 1 pieza en redes sociales para 'calentar' cuentas",
    "Jorge: Status liner Romex/Nico — confirmar problemas produccion",
    "Carlos A: Coordinar 6,600 kg restantes CargoFlex",
    "REUNION SEGUIMIENTO: jueves 10 AM (Brain) + nueva reunion PLAN TRABAJO",
]
for item in semana_items:
    add_status_item(doc, item, "VERIFICAR", indent_in=0.4)

add_heading(doc, "OVERDUE CRONICO", level=2, color=RED)
overdue = [
    ("Cotizacion Daryza (lista recibida 11 mar)", "Jennifer Segura", 13),
    ("PO Norway inventario", "Carlos Artavia", 7),
    ("Org chart Alicorp actualizado", "Vanessa Garcia", 8),
]
for tarea, resp, sem in overdue:
    p = doc.add_paragraph()
    p.paragraph_format.left_indent = Inches(0.4)
    pr = p.add_run(f"[{sem} sem OVERDUE] ")
    pr.bold = True
    pr.font.color.rgb = RED
    pr.font.size = Pt(10)
    tr = p.add_run(f"{tarea}  -> {resp}")
    tr.font.size = Pt(10)

add_divider(doc)

# Footer
fp = doc.add_paragraph()
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fr = fp.add_run(f"Generado por Causita (Hermes Agent) | {FECHA} | Confidencial — Bruna Peru / VCB S.A.C.")
fr.font.size = Pt(8)
fr.font.color.rgb = GRAY
fr.italic = True

docx_path = f"{OUTPUT_DIR}/Agenda_BrunaPeru_{FECHA_FILE}.docx"
doc.save(docx_path)
print(f"DOCX saved: {docx_path}")

# ─── HTML ──────────────────────────────────────────────────────────────
def badge(status):
    cls = status.replace(" ", "-")
    return f'<span class="badge badge-{cls}">{status}</span>'

def prio_badge(p):
    return f'<span class="badge badge-{p}">{p}</span>'

cards_html = ""
for i, (nombre, status, items) in enumerate(cuentas, 1):
    items_html = ""
    for tarea, responsable, prioridad in items:
        resp_html = f'<br><span class="item-resp">&rarr; {responsable}</span>' if responsable else ""
        items_html += f'<li>{prio_badge(prioridad)} <div><span class="item-text">{tarea}</span>{resp_html}</div></li>\n'
    cards_html += f'''
  <div class="card">
    <div class="card-title">{i}. {nombre} {badge(status)}</div>
    <ul class="item-list">{items_html}</ul>
  </div>
'''

resp_sections_html = ""
for persona, data in pendientes.items():
    items_html = ""
    for tarea, status in data["items"]:
        items_html += f'<li><div class="checkbox"></div><div><span class="item-text">{tarea}</span> {badge(status)}</div></li>\n'
    resp_sections_html += f'''
<div class="resp-section">
  <div class="resp-name">{persona}</div>
  <div class="resp-rol">{data["rol"]}</div>
  <ul class="resp-items">{items_html}</ul>
</div>
'''

# Intel cards
intel_items = [
    ("🔴 OVERDUE 13 SEM", "Cotizacion Daryza", "Lista 30+ MPs recibida 11 mar. Jenny debe enviar esta semana.", "card-urgent"),
    ("🟡 NUEVO", "Carlos Calderon incorporado", "Experiencia OMIA + pinturas. Trae leads. Muestras en ~2 sem.", "card-new"),
    ("🟡 NUEVO", "OPP Films — Target Prioritario", "Alto volumen TiO2 + polimeros. Contacto: Eligero Valdion. Propuesta: Andres.", "card-new"),
    ("🔴 BLOQUEADO", "Bruna Brain / N8n", "Bloqueado por API Penta. Stiff/Edwin deben desbloquear con Carlos esta semana.", "card-urgent"),
    ("📉 MERCADO", "Tronox (TROX) -7.2%", "Volumen TiO2+zircon al alza pero precio presionado. Ventana para Universal Colors.", "card-market"),
    ("📦 LOGISTICA", "CargoFlex 5,400 kg", "Primera entrega coordinada. 6,600 kg restantes sin confirmar. Carlos Artavia.", "card-info"),
]

intel_html = ""
for tag, title, desc, cls in intel_items:
    intel_html += f'''
  <div class="card {cls}">
    <div class="intel-tag">{tag}</div>
    <div class="intel-title">{title}</div>
    <div class="intel-desc">{desc}</div>
  </div>
'''

html = f"""<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dashboard Bruna Peru - 08 Jun 2026</title>
<style>
  * {{ box-sizing: border-box; margin: 0; padding: 0; }}
  body {{ font-family: 'Segoe UI', Arial, sans-serif; background: #0d1b2a; color: #e8edf2; min-height: 100vh; }}
  .header {{ background: linear-gradient(135deg, #1B4F72 0%, #0d2d44 100%); padding: 24px 32px; border-bottom: 3px solid #2E86C1; }}
  .header h1 {{ font-size: 1.7rem; font-weight: 700; color: #fff; }}
  .header .sub {{ color: #85c1e9; font-size: 0.9rem; margin-top: 4px; }}
  .header .meta {{ color: #7fb3d3; font-size: 0.78rem; margin-top: 8px; }}
  .conf {{ display: inline-block; background: #c0392b; color: #fff; padding: 2px 10px; border-radius: 3px; font-size: 0.72rem; font-weight: 700; margin-top: 8px; }}
  .container {{ max-width: 1400px; margin: 0 auto; padding: 24px 16px; }}
  .section-title {{ font-size: 1.15rem; font-weight: 700; color: #2E86C1; border-left: 4px solid #2E86C1; padding-left: 12px; margin: 28px 0 14px; }}
  .grid {{ display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }}
  .grid-3 {{ display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 14px; }}
  .card {{ background: #1a2a3a; border-radius: 10px; padding: 14px; border: 1px solid #243647; }}
  .card-urgent {{ border-left: 4px solid #c0392b; }}
  .card-new {{ border-left: 4px solid #8e44ad; }}
  .card-market {{ border-left: 4px solid #2980b9; }}
  .card-info {{ border-left: 4px solid #27ae60; }}
  .card-title {{ font-size: 0.95rem; font-weight: 700; color: #85c1e9; margin-bottom: 8px; }}
  .intel-tag {{ font-size: 0.75rem; font-weight: 700; color: #aaa; margin-bottom: 4px; }}
  .intel-title {{ font-size: 0.95rem; font-weight: 700; color: #fff; margin-bottom: 4px; }}
  .intel-desc {{ font-size: 0.82rem; color: #b0c4d8; }}
  .item-list {{ list-style: none; margin-top: 6px; }}
  .item-list li {{ display: flex; align-items: flex-start; gap: 6px; margin-bottom: 5px; font-size: 0.84rem; }}
  .item-text {{ color: #c8d8e8; }}
  .item-resp {{ color: #5dade2; font-size: 0.78rem; }}
  .badge {{ display: inline-block; padding: 1px 7px; border-radius: 3px; font-size: 0.72rem; font-weight: 700; white-space: nowrap; }}
  .badge-HECHO {{ background: #1e8449; color: #fff; }}
  .badge-AVANZADO {{ background: #b7950b; color: #fff; }}
  .badge-NO-AVANZADO {{ background: #922b21; color: #fff; }}
  .badge-VERIFICAR {{ background: #935116; color: #fff; }}
  .badge-NUEVO {{ background: #6c3483; color: #fff; }}
  .badge-P1 {{ background: #c0392b; color: #fff; }}
  .badge-P2 {{ background: #e67e22; color: #fff; }}
  .badge-P3 {{ background: #566573; color: #fff; }}
  .resp-section {{ background: #1a2a3a; border-radius: 8px; padding: 12px 14px; margin-bottom: 12px; border: 1px solid #243647; }}
  .resp-name {{ font-size: 1rem; font-weight: 700; color: #fff; }}
  .resp-rol {{ font-size: 0.78rem; color: #5dade2; margin-bottom: 8px; }}
  .resp-items {{ list-style: none; }}
  .resp-items li {{ display: flex; align-items: flex-start; gap: 8px; margin-bottom: 5px; font-size: 0.83rem; color: #c8d8e8; }}
  .checkbox {{ width: 14px; height: 14px; border: 2px solid #2E86C1; border-radius: 2px; flex-shrink: 0; margin-top: 1px; }}
  .overdue-item {{ background: #1f0a0a; border: 1px solid #922b21; border-radius: 6px; padding: 8px 12px; margin-bottom: 6px; }}
  .overdue-weeks {{ font-size: 0.8rem; font-weight: 700; color: #e74c3c; }}
  .overdue-text {{ font-size: 0.85rem; color: #e0b0b0; }}
  .overdue-resp {{ font-size: 0.78rem; color: #888; }}
  .footer {{ text-align: center; padding: 24px; color: #4a6174; font-size: 0.78rem; margin-top: 32px; }}
</style>
</head>
<body>

<div class="header">
  <h1>🇵🇪 CAUSITA — Weekly Review | Bruna Peru / VCB S.A.C.</h1>
  <div class="sub">Semana del {FECHA} &nbsp;|&nbsp; Lima, Perú</div>
  <div class="meta">Generado: lunes 08 Jun 2026 14:00 PET &nbsp;|&nbsp; Fuente: Read AI + Himalaya + Google Alerts</div>
  <div class="conf">⚠ CONFIDENCIAL — USO INTERNO</div>
</div>

<div class="container">

  <div class="section-title">⚡ INTEL SEMANA (2–8 Jun)</div>
  <div class="grid">{intel_html}</div>

  <div class="section-title">📋 CUENTAS (12)</div>
  <div class="grid">{cards_html}</div>

  <div class="section-title">⏰ OVERDUE CRONICO</div>
  <div style="max-width: 700px;">
    <div class="overdue-item">
      <div class="overdue-weeks">⚠ 13 SEMANAS</div>
      <div class="overdue-text">Cotizacion Daryza — lista 30+ MPs recibida 11 mar</div>
      <div class="overdue-resp">→ Jennifer Segura</div>
    </div>
    <div class="overdue-item">
      <div class="overdue-weeks">⚠ 8 SEMANAS</div>
      <div class="overdue-text">Org chart Alicorp actualizado + costos reales Policloropreno</div>
      <div class="overdue-resp">→ Vanessa Garcia</div>
    </div>
    <div class="overdue-item">
      <div class="overdue-weeks">⚠ 7 SEMANAS</div>
      <div class="overdue-text">PO Norway — inventario status</div>
      <div class="overdue-resp">→ Carlos Artavia</div>
    </div>
  </div>

  <div class="section-title">👥 RESPONSABLES — Pendientes semana</div>
  <div class="grid-3">{resp_sections_html}</div>

</div>

<div class="footer">
  Causita · Weekly Review · Bruna Peru / VCB S.A.C. · {FECHA} · Confidencial
</div>
</body>
</html>"""

html_path = f"{OUTPUT_DIR}/Dashboard_BrunaPeru_{FECHA_FILE}.html"
with open(html_path, "w", encoding="utf-8") as f:
    f.write(html)
print(f"HTML saved: {html_path}")
