<?php

declare(strict_types=1);

error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', __DIR__ . '/../storage/logs/checkout_errors.log');

require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../config/session.php';

$db = getDB();

if (empty($_SESSION['csrf_checkout'])) {
    $_SESSION['csrf_checkout'] = bin2hex(random_bytes(32));
}

$erro = $_GET['erro'] ?? '';

$mensagensErro = [
    'missing'         => 'Por favor, preencha todos os campos.',
    'email_invalido'  => 'O e-mail informado é inválido.',
    'cpf_invalido'    => 'O CPF/CNPJ informado é inválido. Verifique e tente novamente.',
    'asaas_cliente'   => 'Não foi possível processar seus dados. Tente novamente.',
    'asaas_pagamento' => 'Não foi possível gerar o pagamento. Tente novamente.',
    'csrf'            => 'Sua sessão expirou. Recarregue a página e tente novamente.',
];

$stmt = $db->prepare("
    SELECT pp.id, pp.name, pp.price, pp.duration_days, pp.access_level
    FROM product_plans pp
    JOIN products p ON p.id = pp.product_id
    WHERE p.slug = 'metodo-sg' AND pp.is_active = 1
    ORDER BY pp.price ASC
");
$stmt->execute();
$plans = $stmt->fetchAll(PDO::FETCH_ASSOC);

?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Checkout — Método SG | Alícia Academy</title>
    <link rel="stylesheet" href="/assets/css/academy.css">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;600;700;800&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
    <style>
        /* Tokens que o academy.css não define — sem auto-referência */
        .checkout-page {
            --sp-xs: 4px;
            --sp-sm: 8px;
            --sp-md: 16px;
            --sp-lg: 24px;
            --sp-xl: 32px;
            --sp-2xl: 48px;
            --rad-sm: 8px;
            --rad-lg: 16px;
            --shadow-md: 0 8px 30px rgba(0,0,0,0.06);
        }

        body {
            background: var(--bg-primary);
            padding-top: 40px;
        }

        .checkout-page {
            max-width: 900px;
            margin: 0 auto;
            padding: var(--sp-2xl) var(--sp-lg) 80px;
        }

        .checkout-header {
            text-align: center;
            margin-bottom: var(--sp-2xl);
        }

        .checkout-title {
            font-family: var(--font-heading);
            font-size: clamp(28px, 4vw, 40px);
            font-weight: 700;
            letter-spacing: -0.03em;
            margin-bottom: var(--sp-sm);
        }

        .checkout-subtitle {
            color: var(--text-secondary);
            font-size: 15px;
        }

        .alerta-erro {
            background: #FDECEC;
            color: #A32E2E;
            border: 1px solid #F3C9C9;
            padding: var(--sp-md) var(--sp-lg);
            border-radius: var(--rad-sm);
            margin-bottom: var(--sp-lg);
            max-width: 500px;
            margin-left: auto;
            margin-right: auto;
            text-align: center;
            font-size: 14px;
        }

        .plans-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
            gap: var(--sp-lg);
            margin-bottom: var(--sp-2xl);
        }

        .plan-card {
            background: var(--bg-surface);
            border: 1px solid var(--border);
            border-radius: var(--rad-lg);
            padding: var(--sp-xl);
            text-align: center;
            transition: all 0.3s ease;
        }

        .plan-card:hover {
            box-shadow: var(--shadow-md);
            transform: translateY(-4px);
        }

        .plan-card.featured {
            border-color: var(--gold);
            border-width: 2px;
        }

        .plan-name {
            font-family: var(--font-heading);
            font-size: 18px;
            font-weight: 600;
            margin-bottom: var(--sp-sm);
        }

        .plan-price {
            font-size: 34px;
            font-weight: 700;
            color: var(--gold);
            margin-bottom: var(--sp-xs);
            letter-spacing: -0.02em;
        }

        .plan-duration {
            color: var(--text-secondary);
            font-size: 13px;
            margin-bottom: var(--sp-lg);
        }

        .btn-select {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-height: 44px;
            background: var(--text-primary);
            color: #FFFFFF;
            padding: 0 var(--sp-xl);
            border-radius: 999px;
            font-weight: 600;
            font-size: 14px;
            text-decoration: none;
            transition: all 0.2s ease;
        }

        .btn-select:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 24px rgba(0,0,0,0.15);
        }

        .form-checkout {
            background: var(--bg-surface);
            border: 1px solid var(--border);
            border-radius: var(--rad-lg);
            padding: var(--sp-2xl);
            max-width: 480px;
            margin: 0 auto;
        }

        .form-checkout h2 {
            text-align: center;
            margin-bottom: var(--sp-lg);
            font-family: var(--font-heading);
            font-size: 20px;
            font-weight: 600;
        }

        .form-group { margin-bottom: var(--sp-md); }

        .form-group label {
            display: block;
            font-size: 13px;
            font-weight: 600;
            margin-bottom: var(--sp-xs);
            color: var(--text-primary);
        }

        .form-group input {
            width: 100%;
            min-height: 44px;
            padding: 0 var(--sp-md);
            border: 1px solid var(--border);
            border-radius: var(--rad-sm);
            font-family: var(--font-body);
            font-size: 15px;
            background: var(--bg-primary);
            color: var(--text-primary);
        }

        .form-group input:focus {
            outline: none;
            border-color: var(--gold);
        }

        .btn-submit {
            width: 100%;
            min-height: 48px;
            background: var(--gold);
            color: #FFFFFF;
            border: none;
            border-radius: 999px;
            font-weight: 700;
            font-size: 15px;
            cursor: pointer;
            margin-top: var(--sp-sm);
            transition: all 0.2s ease;
        }

        .btn-submit:hover { background: var(--gold-hover); }
        .btn-submit:disabled { opacity: 0.6; cursor: not-allowed; }
    </style>
</head>
<body>

<div class="checkout-page">
    <div class="checkout-header">
        <h1 class="checkout-title">Escolha seu plano</h1>
        <p class="checkout-subtitle">Método SG — Mentoria Sistêmica para Salão de Beleza</p>
    </div>

    <?php if ($erro !== '' && isset($mensagensErro[$erro])): ?>
        <div class="alerta-erro" role="alert">
            <?= htmlspecialchars($mensagensErro[$erro]) ?>
        </div>
    <?php endif; ?>

    <div class="plans-grid">
        <?php foreach ($plans as $plan): ?>
            <div class="plan-card <?= $plan['access_level'] === 'avancado' ? 'featured' : '' ?>">
                <div class="plan-name"><?= htmlspecialchars($plan['name']) ?></div>
                <div class="plan-price">R$ <?= number_format((float) $plan['price'], 2, ',', '.') ?></div>
                <div class="plan-duration"><?= (int) $plan['duration_days'] ?> dias de acesso</div>
                <a href="/checkout.php?plan_id=<?= (int) $plan['id'] ?>&form=1" class="btn-select">Quero este plano</a>
            </div>
        <?php endforeach; ?>
    </div>

    <?php if (isset($_GET['form']) && (int) ($_GET['plan_id'] ?? 0) > 0): ?>
        <?php
        $selectedPlanId
