/* FrontCall Hub — owner app screens (Meu Agente, Configurações, Notificações, Cobrança). */

/* ---- small shared controls ---- */
function Toggle({ on, onChange }) {
  return (
    <button onClick={() => onChange(!on)} style={{
      width: 46, height: 27, borderRadius: "var(--radius-full)", border: "none", cursor: "pointer",
      padding: 3, background: on ? "var(--brand)" : "var(--gray-300)", flex: "none",
      transition: "background var(--dur-fast) var(--ease-standard)",
      display: "flex", justifyContent: on ? "flex-end" : "flex-start", alignItems: "center",
    }}>
      <span style={{ width: 21, height: 21, borderRadius: "var(--radius-full)", background: "#fff", boxShadow: "0 1px 3px rgba(20,37,63,.3)" }} />
    </button>
  );
}

function Pill({ icon, children, tone = "neutral" }) {
  const map = {
    neutral: { bg: "var(--surface-sunken)", fg: "var(--text-secondary)" },
    brand: { bg: "var(--surface-brand-subtle)", fg: "var(--brand)" },
  };
  const t = map[tone] || map.neutral;
  return (
    <span style={{ display: "inline-flex", alignItems: "center", gap: 5, background: t.bg, color: t.fg, borderRadius: "var(--radius-full)", padding: "5px 11px", fontSize: "var(--fs-caption)", fontWeight: "var(--fw-semibold)" }}>
      {icon}{children}
    </span>
  );
}

/* ============ MEU AGENTE ============ */
function ServiceCard({ s }) {
  return (
    <Card style={{ padding: 0, overflow: "hidden", border: s.popular ? "1px solid var(--brand)" : "1px solid var(--border-subtle)" }}>
      {s.popular && (
        <div style={{ background: "var(--brand)", color: "#fff", fontSize: "var(--fs-micro)", fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-eyebrow)", textTransform: "uppercase", padding: "6px 18px", display: "flex", alignItems: "center", gap: 6 }}>
          <Icon name="flame" size={13} color="#fff" /> Mais pedido
        </div>
      )}
      <div style={{ padding: "16px 18px" }}>
        <div style={{ display: "flex", justifyContent: "space-between", alignItems: "flex-start", gap: 12 }}>
          <div style={{ flex: 1, minWidth: 0 }}>
            <div style={{ fontSize: "var(--fs-body-lg)", fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)", color: "var(--text-strong)" }}>{s.name}</div>
            <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)", marginTop: 3, lineHeight: "var(--lh-normal)" }}>{s.tagline}</div>
          </div>
          <div style={{ flex: "none", textAlign: "right" }}>
            <div style={{ fontSize: "var(--fs-micro)", color: "var(--text-faint)", textTransform: "uppercase", letterSpacing: "var(--ls-eyebrow)", fontWeight: "var(--fw-bold)" }}>A partir de</div>
            <div style={{ fontSize: 26, fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)", color: "var(--brand)", lineHeight: 1.1 }}>${s.from}</div>
            <div style={{ fontSize: "var(--fs-micro)", color: "var(--text-muted)" }}>/{s.unit}</div>
          </div>
        </div>
        <div style={{ display: "flex", gap: 8, marginTop: 12, flexWrap: "wrap" }}>
          <Pill icon={<Icon name="clock" size={13} color="var(--text-secondary)" />}>{s.duration}</Pill>
          {s.recurring
            ? <Pill icon={<Icon name="repeat" size={13} color="var(--brand)" />} tone="brand">Recorrente</Pill>
            : <Pill icon={<Icon name="sparkles" size={13} color="var(--text-secondary)" />}>Avulso</Pill>}
        </div>
        <div style={{ marginTop: 14, display: "grid", gridTemplateColumns: "1fr 1fr", gap: "8px 14px" }}>
          {s.includes.map((it) => (
            <div key={it} style={{ display: "flex", alignItems: "center", gap: 7 }}>
              <Icon name="check" size={14} color="var(--success-600)" strokeWidth={2.6} />
              <span style={{ fontSize: "var(--fs-caption)", color: "var(--text-secondary)" }}>{it}</span>
            </div>
          ))}
        </div>
      </div>
    </Card>
  );
}

function AgentScreen({ go }) {
  const a = D.agent;
  const [testing, setTesting] = React.useState(false);
  return (
    <div style={{ padding: "16px 16px 28px", display: "flex", flexDirection: "column", gap: 22 }}>
      {/* persona hero */}
      <div style={{ background: "var(--blue-600)", borderRadius: "var(--radius-lg)", padding: "20px 20px", color: "#fff", boxShadow: "var(--shadow-brand)" }}>
        <div style={{ display: "flex", alignItems: "center", gap: 14 }}>
          <div style={{ width: 56, height: 56, borderRadius: "var(--radius-full)", background: "rgba(255,255,255,0.16)", display: "flex", alignItems: "center", justifyContent: "center", flex: "none" }}>
            <WaveBars active size={26} color="#fff" />
          </div>
          <div style={{ flex: 1, minWidth: 0 }}>
            <div style={{ display: "flex", alignItems: "center", gap: 8 }}>
              <span style={{ fontSize: "var(--fs-h3)", fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)" }}>{a.name}</span>
              <span style={{ display: "inline-flex", alignItems: "center", gap: 5, background: "rgba(255,255,255,0.18)", borderRadius: "var(--radius-full)", padding: "3px 9px", fontSize: "var(--fs-micro)", fontWeight: "var(--fw-bold)" }}>
                <span style={{ width: 7, height: 7, borderRadius: "50%", background: "var(--success-400, #4ade80)" }} /> No ar
              </span>
            </div>
            <div style={{ fontSize: "var(--fs-caption)", color: "rgba(255,255,255,0.85)", marginTop: 3 }}>{a.voice} · {a.language}</div>
          </div>
        </div>
        <div style={{ display: "flex", gap: 22, marginTop: 18 }}>
          <div>
            <div style={{ fontSize: 22, fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)" }}>{a.answeredPct}%</div>
            <div style={{ fontSize: "var(--fs-micro)", color: "rgba(255,255,255,0.7)", textTransform: "uppercase", letterSpacing: "var(--ls-eyebrow)" }}>Atendidas</div>
          </div>
          <div style={{ width: 1, background: "rgba(255,255,255,0.2)" }} />
          <div>
            <div style={{ fontSize: 22, fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)" }}>{a.avgAnswer}</div>
            <div style={{ fontSize: "var(--fs-micro)", color: "rgba(255,255,255,0.7)", textTransform: "uppercase", letterSpacing: "var(--ls-eyebrow)" }}>Resposta</div>
          </div>
          <div style={{ width: 1, background: "rgba(255,255,255,0.2)" }} />
          <div>
            <div style={{ fontSize: 22, fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)" }}>24/7</div>
            <div style={{ fontSize: "var(--fs-micro)", color: "rgba(255,255,255,0.7)", textTransform: "uppercase", letterSpacing: "var(--ls-eyebrow)" }}>Sempre</div>
          </div>
        </div>
      </div>

      {/* greeting / test */}
      <div>
        <SectionLabel>Como a Riley atende</SectionLabel>
        <Card>
          <p style={{ margin: 0, fontSize: "var(--fs-sm)", color: "var(--text-secondary)", lineHeight: "var(--lh-normal)" }}>{a.persona}</p>
          <div style={{ marginTop: 14, background: "var(--surface-sunken)", borderRadius: "var(--radius-md)", padding: "12px 14px", display: "flex", gap: 10, alignItems: "flex-start" }}>
            <Icon name="volume-2" size={18} color="var(--brand)" style={{ marginTop: 2, flexShrink: 0 }} />
            <div>
              <div style={{ fontSize: "var(--fs-micro)", color: "var(--text-faint)", textTransform: "uppercase", letterSpacing: "var(--ls-eyebrow)", fontWeight: "var(--fw-bold)", marginBottom: 4 }}>Saudação (em inglês)</div>
              <p style={{ margin: 0, fontSize: "var(--fs-sm)", color: "var(--text-strong)", fontStyle: "italic", lineHeight: "var(--lh-normal)" }}>"{a.greeting}"</p>
            </div>
          </div>
          <Button block size="lg" iconLeft={<Icon name={testing ? "pause" : "phone-outgoing"} size={18} color="#fff" />} onClick={() => setTesting((t) => !t)} style={{ marginTop: 14 }}>
            {testing ? "Ligando pra você…" : "Testar agora"}
          </Button>
          {testing && (
            <div style={{ display: "flex", alignItems: "center", justifyContent: "center", gap: 10, marginTop: 12, color: "var(--brand)" }}>
              <WaveBars active size={20} /> <span style={{ fontSize: "var(--fs-sm)", fontWeight: "var(--fw-semibold)" }}>Chamando {D.account.ownerPhone}…</span>
            </div>
          )}
        </Card>
      </div>

      {/* catalog */}
      <div>
        <SectionLabel action={<button style={{ border: "none", background: "none", color: "var(--text-link)", fontSize: "var(--fs-caption)", fontWeight: "var(--fw-semibold)", cursor: "pointer", display: "inline-flex", alignItems: "center", gap: 4 }}><Icon name="pencil" size={13} color="var(--text-link)" /> Editar</button>}>Catálogo &amp; preços</SectionLabel>
        <div style={{ display: "flex", flexDirection: "column", gap: 12 }}>
          {D.catalog.map((s) => <ServiceCard key={s.id} s={s} />)}
        </div>
      </div>

      {/* add-ons */}
      <div>
        <SectionLabel>Extras (add-ons)</SectionLabel>
        <Card inset>
          {D.addons.map((x, i) => (
            <div key={x.id} style={{ display: "flex", alignItems: "center", justifyContent: "space-between", padding: "13px 16px", borderBottom: i < D.addons.length - 1 ? "1px solid var(--border-subtle)" : "none" }}>
              <span style={{ fontSize: "var(--fs-sm)", color: "var(--text-strong)" }}>{x.label}</span>
              <span style={{ fontSize: "var(--fs-sm)", fontWeight: "var(--fw-bold)", color: "var(--brand)" }}>+${x.price}</span>
            </div>
          ))}
        </Card>
      </div>

      {/* hours */}
      <div>
        <SectionLabel>Horário de atendimento</SectionLabel>
        <Card style={{ display: "flex", alignItems: "center", gap: 14 }}>
          <div style={{ width: 42, height: 42, borderRadius: "var(--radius-full)", background: "var(--success-bg)", display: "flex", alignItems: "center", justifyContent: "center", flex: "none" }}>
            <Icon name="clock" size={20} color="var(--success-600)" />
          </div>
          <div style={{ flex: 1 }}>
            <div style={{ fontWeight: "var(--fw-semibold)", color: "var(--text-strong)", fontSize: "var(--fs-body)" }}>{a.hours}</div>
            <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)" }}>Riley nunca deixa o telefone tocar à toa</div>
          </div>
        </Card>
      </div>
    </div>
  );
}

/* ============ SettingRow + group ============ */
function SettingRow({ icon, label, value, onClick, last, danger }) {
  return (
    <div onClick={onClick} style={{ display: "flex", alignItems: "center", gap: 14, padding: "14px 16px", borderBottom: last ? "none" : "1px solid var(--border-subtle)", cursor: onClick ? "pointer" : "default" }}>
      <div style={{ width: 36, height: 36, borderRadius: "var(--radius-md)", background: danger ? "var(--danger-bg)" : "var(--surface-brand-subtle)", display: "flex", alignItems: "center", justifyContent: "center", flex: "none" }}>
        <Icon name={icon} size={18} color={danger ? "var(--danger-600)" : "var(--brand)"} />
      </div>
      <span style={{ flex: 1, fontSize: "var(--fs-body)", fontWeight: "var(--fw-medium)", color: danger ? "var(--danger-600)" : "var(--text-strong)" }}>{label}</span>
      {value && <span style={{ fontSize: "var(--fs-sm)", color: "var(--text-muted)", textAlign: "right" }}>{value}</span>}
      {onClick && <Icon name="chevron-right" size={18} color="var(--text-faint)" />}
    </div>
  );
}

/* ============ CONFIGURAÇÕES ============ */
/* Hora local do negócio, ao vivo (fuso IANA da conta). */
function TzLocalTime({ tz }) {
  const [now, setNow] = React.useState(() => new Date());
  React.useEffect(() => {
    const t = setInterval(() => setNow(new Date()), 30000);
    return () => clearInterval(t);
  }, []);
  let time = "";
  try { time = new Intl.DateTimeFormat("pt-BR", { hour: "2-digit", minute: "2-digit", hourCycle: "h23", timeZone: tz }).format(now); } catch (e) {}
  return time;
}

function SettingsScreen({ go }) {
  const ac = D.account;
  return (
    <div style={{ padding: "16px 16px 28px", display: "flex", flexDirection: "column", gap: 22 }}>
      {/* business card */}
      <Card>
        <div style={{ display: "flex", alignItems: "center", gap: 14 }}>
          <Avatar name={ac.owner} size={52} />
          <div style={{ flex: 1, minWidth: 0 }}>
            <div style={{ fontWeight: "var(--fw-bold)", color: "var(--text-strong)", fontSize: "var(--fs-body-lg)", letterSpacing: "var(--ls-tight)" }}>{ac.company}</div>
            <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)" }}>{ac.owner} · {ac.city}</div>
          </div>
          <Button size="sm" variant="secondary" iconLeft={<Icon name="pencil" size={15} color="var(--text-strong)" />}>Editar</Button>
        </div>
      </Card>

      {/* agent number */}
      <div>
        <SectionLabel>Número do agente</SectionLabel>
        <Card>
          <div style={{ display: "flex", alignItems: "center", gap: 12 }}>
            <div style={{ width: 42, height: 42, borderRadius: "var(--radius-full)", background: "var(--surface-brand-subtle)", display: "flex", alignItems: "center", justifyContent: "center", flex: "none" }}>
              <Icon name="phone-incoming" size={20} color="var(--brand)" />
            </div>
            <div style={{ flex: 1 }}>
              <div style={{ fontFamily: "var(--font-mono)", fontWeight: "var(--fw-bold)", color: "var(--text-strong)", fontSize: "var(--fs-body-lg)" }}>{ac.agentNumber}</div>
              <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)" }}>Riley atende este número</div>
            </div>
            <Badge tone="success" dot>Ativo</Badge>
          </div>
          <div style={{ marginTop: 14, paddingTop: 14, borderTop: "1px dashed var(--border-subtle)", display: "flex", alignItems: "center", gap: 12 }}>
            <Icon name="phone-forwarded" size={18} color="var(--text-muted)" />
            <div style={{ flex: 1 }}>
              <div style={{ fontSize: "var(--fs-sm)", color: "var(--text-strong)", fontWeight: "var(--fw-medium)" }}>Encaminhar pra você</div>
              <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)", fontFamily: "var(--font-mono)" }}>{ac.forward}</div>
            </div>
            <Toggle on={true} onChange={() => {}} />
          </div>
        </Card>
      </div>

      {/* timezone & contact window (read-only — concierge) */}
      <div>
        <SectionLabel>Fuso horário</SectionLabel>
        <Card>
          <div style={{ display: "flex", alignItems: "center", gap: 12 }}>
            <div style={{ width: 42, height: 42, borderRadius: "var(--radius-full)", background: "var(--surface-brand-subtle)", display: "flex", alignItems: "center", justifyContent: "center", flex: "none" }}>
              <Icon name="clock" size={20} color="var(--brand)" />
            </div>
            <div style={{ flex: 1, minWidth: 0 }}>
              <div style={{ fontSize: "var(--fs-sm)", fontWeight: "var(--fw-semibold)", color: "var(--text-strong)" }}>{ac.tzLabel}</div>
              <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)" }}>Agora <span style={{ fontFamily: "var(--font-mono)", fontWeight: "var(--fw-semibold)", color: "var(--text-secondary)" }}><TzLocalTime tz={ac.tz} /></span> no seu negócio</div>
            </div>
          </div>
          <div style={{ marginTop: 14, paddingTop: 14, borderTop: "1px dashed var(--border-subtle)", display: "flex", alignItems: "center", gap: 12 }}>
            <Icon name="message-circle" size={18} color="var(--text-muted)" />
            <div style={{ flex: 1, minWidth: 0 }}>
              <div style={{ fontSize: "var(--fs-sm)", color: "var(--text-strong)", fontWeight: "var(--fw-medium)" }}>Janela de contato</div>
              <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)" }}>SMS e follow-ups da Riley saem só nesse horário local</div>
            </div>
            <span style={{ fontFamily: "var(--font-mono)", fontSize: "var(--fs-sm)", fontWeight: "var(--fw-bold)", color: "var(--text-strong)", flex: "none" }}>{ac.contactWindow}</span>
          </div>
        </Card>
        <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-faint)", marginTop: 8, padding: "0 4px" }}>Definido no seu cadastro — manda mensagem pra equipe pra mudar.</div>
      </div>

      {/* preferences */}
      <div>
        <SectionLabel>Preferências</SectionLabel>
        <Card inset>
          <SettingRow icon="globe" label="Idioma do app" value="Português" />
          <SettingRow icon="mic" label="Idioma do agente" value="Inglês (US)" />
          <SettingRow icon="bell" label="Notificações" onClick={() => go("notifications")} />
          <SettingRow icon="credit-card" label="Plano &amp; cobrança" onClick={() => go("billing")} last />
        </Card>
      </div>

      {/* team */}
      <div>
        <SectionLabel action={<button onClick={() => go("team")} style={{ border: "none", background: "none", color: "var(--text-link)", fontSize: "var(--fs-caption)", fontWeight: "var(--fw-semibold)", cursor: "pointer" }}>Gerenciar</button>}>Equipe & acessos</SectionLabel>
        <Card inset>
          {D.team.map((m, i) => (
            <div key={m.id} onClick={() => go("team")} style={{ display: "flex", alignItems: "center", gap: 12, padding: "12px 16px", borderBottom: i < D.team.length - 1 ? "1px solid var(--border-subtle)" : "none", cursor: "pointer" }}>
              <Avatar name={m.name} size={38} />
              <div style={{ flex: 1, minWidth: 0 }}>
                <div style={{ fontSize: "var(--fs-sm)", fontWeight: "var(--fw-semibold)", color: "var(--text-strong)" }}>{m.name}</div>
                <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)", fontFamily: "var(--font-mono)" }}>{m.phone}</div>
              </div>
              {m.role === "dono" ? <Badge tone="brand">Dono</Badge> : m.role === "guest" ? <Badge tone="warning" dot>Convidada</Badge> : <Badge tone="neutral">Equipe</Badge>}
            </div>
          ))}
        </Card>
      </div>

      {/* security */}
      <Card inset>
        <SettingRow icon="shield" label="Privacidade &amp; segurança" onClick={() => {}} />
        <SettingRow icon="circle-help" label="Ajuda &amp; suporte" value="Português" onClick={() => {}} />
        <SettingRow icon="log-out" label="Sair" onClick={() => {}} last danger />
      </Card>

      <div style={{ textAlign: "center", fontSize: "var(--fs-caption)", color: "var(--text-faint)" }}>FrontCall Hub · v1.0.0</div>
    </div>
  );
}

/* ============ NOTIFICAÇÕES ============ */
function NotificationsScreen({ go }) {
  const [notes, setNotes] = React.useState(D.notifications);
  const channels = [
    { key: "push", label: "Push", icon: "bell" },
    { key: "sms", label: "SMS", icon: "message-circle" },
    { key: "email", label: "Email", icon: "mail" },
  ];
  const toggle = (id, ch) => setNotes((ns) => ns.map((n) => n.id === id ? { ...n, channels: { ...n.channels, [ch]: !n.channels[ch] } } : n));
  return (
    <div style={{ padding: "16px 16px 28px", display: "flex", flexDirection: "column", gap: 18 }}>
      <div style={{ background: "var(--surface-brand-subtle)", borderRadius: "var(--radius-md)", padding: "12px 16px", display: "flex", gap: 10, alignItems: "flex-start" }}>
        <Icon name="zap" size={18} color="var(--brand)" style={{ marginTop: 1, flexShrink: 0 }} />
        <p style={{ margin: 0, fontSize: "var(--fs-sm)", color: "var(--text-secondary)", lineHeight: "var(--lh-normal)" }}>Escolha como quer ser avisado. Pra <strong style={{ color: "var(--hot-500)" }}>lead quente</strong>, recomendamos deixar tudo ligado.</p>
      </div>
      {notes.map((n) => (
        <Card key={n.id}>
          <div style={{ marginBottom: 12 }}>
            <div style={{ fontSize: "var(--fs-body)", fontWeight: "var(--fw-bold)", color: "var(--text-strong)", display: "flex", alignItems: "center", gap: 8 }}>
              {n.id === "hot" && <Icon name="flame" size={16} color="var(--hot-500)" />}{n.label}
            </div>
            <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)", marginTop: 2 }}>{n.sub}</div>
          </div>
          <div style={{ display: "flex", flexDirection: "column", gap: 2 }}>
            {channels.map((c, i) => (
              <div key={c.key} style={{ display: "flex", alignItems: "center", gap: 10, padding: "10px 0", borderBottom: i < channels.length - 1 ? "1px dashed var(--border-subtle)" : "none" }}>
                <Icon name={c.icon} size={17} color="var(--text-muted)" />
                <span style={{ flex: 1, fontSize: "var(--fs-sm)", color: "var(--text-strong)" }}>{c.label}</span>
                <Toggle on={n.channels[c.key]} onChange={() => toggle(n.id, c.key)} />
              </div>
            ))}
          </div>
        </Card>
      ))}
    </div>
  );
}

/* ============ PLANO & COBRANÇA ============ */
function BillingScreen({ go }) {
  const p = D.plan;
  const pct = Math.round((p.minsUsed / p.minsTotal) * 100);
  return (
    <div style={{ padding: "16px 16px 28px", display: "flex", flexDirection: "column", gap: 22 }}>
      {/* current plan */}
      <div style={{ background: "var(--blue-600)", borderRadius: "var(--radius-lg)", padding: "20px", color: "#fff", boxShadow: "var(--shadow-brand)" }}>
        <div style={{ display: "flex", alignItems: "flex-start", justifyContent: "space-between" }}>
          <div>
            <div style={{ fontSize: "var(--fs-micro)", textTransform: "uppercase", letterSpacing: "var(--ls-eyebrow)", fontWeight: "var(--fw-bold)", color: "rgba(255,255,255,0.75)" }}>Plano atual</div>
            <div style={{ fontSize: "var(--fs-h2)", fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)", marginTop: 2 }}>{p.name}</div>
          </div>
          <div style={{ textAlign: "right" }}>
            <span style={{ fontSize: 30, fontWeight: "var(--fw-bold)", letterSpacing: "var(--ls-tight)" }}>${p.price}</span>
            <span style={{ fontSize: "var(--fs-sm)", color: "rgba(255,255,255,0.8)" }}>{p.cycle}</span>
          </div>
        </div>
        {/* usage */}
        <div style={{ marginTop: 18 }}>
          <div style={{ display: "flex", justifyContent: "space-between", fontSize: "var(--fs-caption)", color: "rgba(255,255,255,0.85)", marginBottom: 6 }}>
            <span>{p.minsUsed} de {p.minsTotal} min usados</span><span>{pct}%</span>
          </div>
          <div style={{ height: 8, borderRadius: "var(--radius-full)", background: "rgba(255,255,255,0.22)", overflow: "hidden" }}>
            <div style={{ width: `${pct}%`, height: "100%", background: "#fff", borderRadius: "var(--radius-full)" }} />
          </div>
          <div style={{ fontSize: "var(--fs-micro)", color: "rgba(255,255,255,0.7)", marginTop: 8 }}>Renova em {p.renews}</div>
        </div>
      </div>

      {/* perks */}
      <Card>
        <SectionLabel>O que está incluso</SectionLabel>
        <div style={{ display: "flex", flexDirection: "column", gap: 11 }}>
          {p.perks.map((perk) => (
            <div key={perk} style={{ display: "flex", alignItems: "center", gap: 10 }}>
              <Icon name="circle-check-big" size={18} color="var(--success-600)" />
              <span style={{ fontSize: "var(--fs-sm)", color: "var(--text-strong)" }}>{perk}</span>
            </div>
          ))}
        </div>
      </Card>

      <Button block variant="secondary" size="lg" iconLeft={<Icon name="trending-up" size={18} color="var(--brand)" />} style={{ color: "var(--brand)", borderColor: "var(--brand)" }}>Mudar de plano</Button>

      {/* payment method */}
      <div>
        <SectionLabel>Forma de pagamento</SectionLabel>
        <Card style={{ display: "flex", alignItems: "center", gap: 14 }}>
          <div style={{ width: 42, height: 42, borderRadius: "var(--radius-md)", background: "var(--surface-sunken)", display: "flex", alignItems: "center", justifyContent: "center", flex: "none" }}>
            <Icon name="credit-card" size={20} color="var(--text-strong)" />
          </div>
          <div style={{ flex: 1 }}>
            <div style={{ fontSize: "var(--fs-body)", fontWeight: "var(--fw-semibold)", color: "var(--text-strong)", fontFamily: "var(--font-mono)" }}>•••• 4242</div>
            <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)" }}>Visa · exp 08/27</div>
          </div>
          <Button size="sm" variant="ghost" style={{ color: "var(--text-link)" }}>Trocar</Button>
        </Card>
      </div>

      {/* invoices */}
      <div>
        <SectionLabel>Faturas</SectionLabel>
        <Card inset>
          {p.invoices.map((inv, i) => (
            <div key={i} style={{ display: "flex", alignItems: "center", gap: 12, padding: "13px 16px", borderBottom: i < p.invoices.length - 1 ? "1px solid var(--border-subtle)" : "none" }}>
              <Icon name="file-text" size={18} color="var(--text-muted)" />
              <div style={{ flex: 1 }}>
                <div style={{ fontSize: "var(--fs-sm)", color: "var(--text-strong)", fontWeight: "var(--fw-medium)" }}>{inv.date}</div>
                <div style={{ fontSize: "var(--fs-caption)", color: "var(--text-muted)" }}>${inv.amount}</div>
              </div>
              <Badge tone="success" dot>{inv.status}</Badge>
            </div>
          ))}
        </Card>
      </div>
    </div>
  );
}

Object.assign(window, { Toggle, Pill, ServiceCard, AgentScreen, SettingRow, SettingsScreen, NotificationsScreen, BillingScreen });
