<?php
declare(strict_types=1);
session_start();

require_once __DIR__ . '/config/db.php';
require_once __DIR__ . '/config/quote_helpers.php';

function post(string $key, string $default = ''): string
{
    return trim((string) ($_POST[$key] ?? $default));
}

function validStep(int $step): int
{
    return max(1, min(5, $step));
}

function redirectStep(int $step, array $query = []): void
{
    $params = $query ? ('&' . http_build_query($query)) : '';
    header('Location: wizard.php?step=' . validStep($step) . $params);
    exit;
}

function currentBudgetNumber(): string
{
    return $_SESSION['professional']['numero_orcamento'] ?? ('ORC-' . date('Ymd-His'));
}

function getPreviewConfig(): array
{
    $session = $_SESSION['preview'] ?? [];
    $model = (string) ($session['model'] ?? ($_SESSION['model'] ?? 'template1'));
    if (!in_array($model, ['template1', 'template2', 'template3'], true)) {
        $model = 'template1';
    }
    $color = (string) ($session['custom_color'] ?? '#1e3a5f');
    if (!preg_match('/^#[0-9a-fA-F]{6}$/', $color)) {
        $color = '#1e3a5f';
    }
    $intensity = (int) ($session['intensity'] ?? 100);
    $intensity = max(30, min(100, $intensity));
    return ['model' => $model, 'custom_color' => $color, 'intensity' => $intensity];
}

function renderQuotePreview(array $professional, array $payment, array $services, string $selectedModel, string $customColor, int $intensity): string
{
    [$normalizedServices, $total] = q_calc_services($services);

    $payment['formas_legenda'] = !empty($payment['formas_pagamento']) ? implode(', ', $payment['formas_pagamento']) : '-';

    $valorAvista = q_parse_money((string) ($payment['valor_avista'] ?? ''));
    $valorParcelado = q_parse_money((string) ($payment['valor_parcelado'] ?? ''));
    $entradaFechamento = q_parse_money((string) ($payment['entrada_fechamento'] ?? ''));
    $restanteEntrega = q_parse_money((string) ($payment['restante_entrega'] ?? ''));
    $parcelasTexto = trim((string) ($payment['parcelas'] ?? ''));
    $parcelasCount = q_parse_installment_count($parcelasTexto);

    $payment['valor_avista_fmt'] = $valorAvista > 0 ? q_money($valorAvista) : '';
    $payment['valor_parcelado_fmt'] = $valorParcelado > 0 ? q_money($valorParcelado) : '';
    $payment['entrada_fechamento_fmt'] = $entradaFechamento > 0 ? q_money($entradaFechamento) : '';
    $payment['restante_entrega_fmt'] = $restanteEntrega > 0 ? q_money($restanteEntrega) : '';

    if ($valorParcelado > 0) {
        if ($parcelasCount > 1) {
            $payment['parcelado_legenda'] = $parcelasCount . 'x de ' . q_money($valorParcelado / $parcelasCount);
        } else {
            $payment['parcelado_legenda'] = q_money($valorParcelado);
        }
    } else {
        $payment['parcelado_legenda'] = '';
    }

    $themeBase = q_mix_color_with_white($customColor, $intensity);
    $theme = [
        'base' => $themeBase,
        'light' => q_rgba($themeBase, 0.22),
        'soft' => q_rgba($themeBase, 0.10),
    ];

    ob_start();
    $services = $normalizedServices;
    require __DIR__ . '/templates/' . $selectedModel . '.php';
    return (string) ob_get_clean();
}

$step = validStep((int) ($_GET['step'] ?? 1));
$errors = [];

$_SESSION['model'] ??= 'template1';
$_SESSION['preview'] ??= ['model' => $_SESSION['model'], 'custom_color' => '#1e3a5f', 'intensity' => 100];
$_SESSION['professional'] ??= [];
$_SESSION['payment'] ??= [];
$_SESSION['services'] ??= [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $formStep = (int) ($_POST['form_step'] ?? $step);

    switch ($formStep) {
        case 1:
            $selectedModel = post('selected_model');
            if (!in_array($selectedModel, ['template1', 'template2', 'template3'], true)) {
                $errors[] = 'Selecione um modelo válido.';
                $step = 1;
                break;
            }
            $_SESSION['model'] = $selectedModel;
            $_SESSION['preview']['model'] = $selectedModel;
            redirectStep(2);

        case 2:
            $professional = [
                'nome_profissional' => post('nome_profissional'),
                'telefone_profissional' => post('telefone_profissional'),
                'cidade_profissional' => post('cidade_profissional'),
                'email_profissional' => post('email_profissional'),
                'nome_cliente' => post('nome_cliente'),
                'telefone_cliente' => post('telefone_cliente'),
                'endereco_cliente' => post('endereco_cliente'),
                'cidade_cliente' => post('cidade_cliente'),
                'observacoes_cliente' => post('observacoes_cliente'),
                'numero_orcamento' => post('numero_orcamento', currentBudgetNumber()),
                'data_orcamento' => post('data_orcamento', date('Y-m-d')),
                'validade_orcamento' => post('validade_orcamento', '7 dias'),
            ];

            if ($professional['nome_profissional'] === '' || $professional['telefone_profissional'] === '') {
                $errors[] = 'Preencha nome e telefone do profissional.';
            }
            if ($professional['nome_cliente'] === '') {
                $errors[] = 'Preencha o nome do cliente.';
            }

            $allowedImageTypes = ['image/png', 'image/jpeg', 'image/webp', 'image/gif'];
            if (!empty($_FILES['logo']['name'] ?? '')) {
                if (!in_array($_FILES['logo']['type'] ?? '', $allowedImageTypes, true)) {
                    $errors[] = 'Logo inválida. Envie PNG, JPG, WEBP ou GIF.';
                } elseif (($_FILES['logo']['size'] ?? 0) > 3 * 1024 * 1024) {
                    $errors[] = 'A logo deve ter no máximo 3 MB.';
                } elseif (is_uploaded_file($_FILES['logo']['tmp_name'])) {
                    $content = file_get_contents($_FILES['logo']['tmp_name']);
                    if ($content !== false) {
                        $professional['logo_data_uri'] = 'data:' . ($_FILES['logo']['type'] ?? 'image/png') . ';base64,' . base64_encode($content);
                        $professional['logo_name'] = basename((string) $_FILES['logo']['name']);
                    }
                }
            } elseif (!empty($_SESSION['professional']['logo_data_uri'])) {
                $professional['logo_data_uri'] = $_SESSION['professional']['logo_data_uri'];
                $professional['logo_name'] = $_SESSION['professional']['logo_name'] ?? '';
            }

            $_SESSION['professional'] = array_merge($_SESSION['professional'], $professional);
            if ($errors) {
                $step = 2;
                break;
            }
            upsertProfessional($professional['nome_profissional'], $professional['telefone_profissional']);
            redirectStep(3);

        case 3:
            $names = $_POST['service_name'] ?? [];
            $descriptions = $_POST['service_description'] ?? [];
            $quantities = $_POST['service_quantity'] ?? [];
            $unitPrices = $_POST['service_unit_price'] ?? [];
            $services = [];
            foreach ($names as $index => $name) {
                $serviceName = trim((string) $name);
                $serviceDescription = trim((string) ($descriptions[$index] ?? ''));
                $serviceQuantity = trim((string) ($quantities[$index] ?? '1'));
                $serviceUnitPrice = trim((string) ($unitPrices[$index] ?? '0,00'));
                if ($serviceName === '' && $serviceDescription === '' && $serviceQuantity === '' && $serviceUnitPrice === '') {
                    continue;
                }
                $services[] = [
                    'name' => $serviceName,
                    'description' => $serviceDescription,
                    'quantity' => $serviceQuantity !== '' ? $serviceQuantity : '1',
                    'unit_price' => $serviceUnitPrice !== '' ? $serviceUnitPrice : '0,00',
                ];
            }
            if (!$services) {
                $errors[] = 'Adicione pelo menos um serviço.';
                $step = 3;
                break;
            }
            $_SESSION['services'] = $services;
            redirectStep(4);

        case 4:
            $allowedMethods = ['Pix', 'Dinheiro', 'Cartão de crédito', 'Cartão de débito', 'Transferência bancária'];
            $selectedMethods = array_values(array_intersect($allowedMethods, array_map('strval', $_POST['formas_pagamento'] ?? [])));
            $_SESSION['payment'] = [
                'valor_avista' => post('valor_avista'),
                'valor_parcelado' => post('valor_parcelado'),
                'parcelas' => post('parcelas'),
                'entrada_fechamento' => post('entrada_fechamento'),
                'restante_entrega' => post('restante_entrega'),
                'formas_pagamento' => $selectedMethods,
                'garantia' => post('garantia', '30 dias'),
                'observacoes' => post('observacoes'),
            ];
            redirectStep(5);

        case 5:
            $newModel = post('preview_model', $_SESSION['model']);
            $newColor = post('preview_color', '#1e3a5f');
            $newIntensity = (int) post('preview_intensity', '100');
            if (!in_array($newModel, ['template1', 'template2', 'template3'], true)) {
                $newModel = $_SESSION['model'];
            }
            if (!preg_match('/^#[0-9a-fA-F]{6}$/', $newColor)) {
                $newColor = '#1e3a5f';
            }
            $_SESSION['preview'] = [
                'model' => $newModel,
                'custom_color' => $newColor,
                'intensity' => max(30, min(100, $newIntensity)),
            ];
            $_SESSION['model'] = $newModel;
            redirectStep(5);
    }
}

$selectedModel = $_SESSION['model'];
$professional = $_SESSION['professional'];
$payment = $_SESSION['payment'];
$services = $_SESSION['services'];
$preview = getPreviewConfig();
$servicesJson = json_encode($services, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

$stepNames = [1 => 'Modelo', 2 => 'Dados', 3 => 'Serviços', 4 => 'Pagamento', 5 => 'Prévia'];
$colorPresets = [
    ['name' => 'Verde', 'value' => '#16a34a'],
    ['name' => 'Vermelho', 'value' => '#dc2626'],
    ['name' => 'Amarelo', 'value' => '#ca8a04'],
    ['name' => 'Preto', 'value' => '#1a1a1a'],
    ['name' => 'Cinza', 'value' => '#475569'],
    ['name' => 'Laranja', 'value' => '#ea580c'],
    ['name' => 'Azul', 'value' => '#1e3a5f'],
];

$previewHtml = $step === 5 ? renderQuotePreview($professional, $payment, $services, $preview['model'], $preview['custom_color'], $preview['intensity']) : '';
?>
<!doctype html>
<html lang="pt-br">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Gerador de Orçamento Climatiza</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="assets/css/style.css">
</head>
<body>
<div class="page-shell">
    <header class="topbar">
        <div>
            <p class="eyebrow">Gerador de Orçamento</p>
            <h1>Monte seu orçamento profissional</h1>
        </div>
        <span class="tiny-pill"><?php echo q_e($stepNames[$step]); ?></span>
    </header>

    <section class="progress-card">
        <div class="stepper">
            <?php for ($i = 1; $i <= 5; $i++): ?>
                <div class="step-item <?php echo $i < $step ? 'completed' : ($i === $step ? 'active' : ''); ?>">
                    <div class="step-indicator"><?php echo $i < $step ? '✓' : $i; ?></div>
                    <div class="step-text">
                        <strong><?php echo q_e($stepNames[$i]); ?></strong>
                        <span>Etapa <?php echo $i; ?></span>
                    </div>
                    <?php if ($i < 5): ?><div class="step-connector"></div><?php endif; ?>
                </div>
            <?php endfor; ?>
        </div>
    </section>

    <?php if ($errors): ?>
        <div class="alert alert-error">
            <?php foreach ($errors as $error): ?><div><?php echo q_e($error); ?></div><?php endforeach; ?>
        </div>
    <?php endif; ?>

    <?php if ($step === 1): ?>
        <form method="post" class="card wizard-card">
            <input type="hidden" name="form_step" value="1">
            <div class="section-title">
                <h2>Escolha o modelo</h2>
                <p>Selecione o layout que melhor combina com o seu tipo de orçamento.</p>
            </div>
            <div class="template-grid">
                <?php
                $templates = [
                    'template1' => ['img' => 'assets/img/template-clean.svg', 'title' => 'Clean Simples', 'desc' => 'Layout minimalista, ideal para envio rápido via WhatsApp.', 'features' => ['Fundo branco', 'Cabeçalho simples', 'Linhas finas', 'Visual limpo']],
                    'template2' => ['img' => 'assets/img/template-profissional.svg', 'title' => 'Profissional Elegante', 'desc' => 'Layout sofisticado, com destaque para identidade visual.', 'features' => ['Cabeçalho com cor', 'Destaque para logo', 'Separadores elegantes', 'Visual corporativo']],
                    'template3' => ['img' => 'assets/img/template-comercial.svg', 'title' => 'Comercial com Destaque', 'desc' => 'Layout ideal para apresentar pacotes e valores com destaque.', 'features' => ['Destaque para valores', 'Tabela chamativa', 'Foco comercial', 'Visual impactante']],
                ];
                foreach ($templates as $key => $tpl): ?>
                    <label class="template-card <?php echo $selectedModel === $key ? 'selected' : ''; ?>">
                        <input type="radio" name="selected_model" value="<?php echo q_e($key); ?>" <?php echo $selectedModel === $key ? 'checked' : ''; ?>>
                        <img src="<?php echo q_e($tpl['img']); ?>" alt="<?php echo q_e($tpl['title']); ?>">
                        <div class="template-content">
                            <h3><?php echo q_e($tpl['title']); ?></h3>
                            <p><?php echo q_e($tpl['desc']); ?></p>
                            <ul class="feature-list"><?php foreach ($tpl['features'] as $feature): ?><li><?php echo q_e($feature); ?></li><?php endforeach; ?></ul>
                        </div>
                    </label>
                <?php endforeach; ?>
            </div>
            <div class="actions"><button type="submit" class="btn btn-primary">Usar este modelo</button></div>
        </form>

    <?php elseif ($step === 2): ?>
        <form method="post" enctype="multipart/form-data" class="card wizard-card">
            <input type="hidden" name="form_step" value="2">
            <div class="section-title">
                <h2>Dados do orçamento</h2>
                <p>Preencha as informações do profissional, cliente e dados principais do orçamento.</p>
            </div>

            <section class="form-section">
                <h3>Dados do Profissional</h3>
                <div class="logo-uploader">
                    <div class="logo-drop">
                        <?php if (!empty($professional['logo_data_uri'])): ?>
                            <img src="<?php echo q_e($professional['logo_data_uri']); ?>" alt="Logo atual">
                        <?php else: ?>
                            <span>Logo</span>
                        <?php endif; ?>
                    </div>
                    <div class="form-grid">
                        <div class="field field-span-2">
                            <label>Upload da logo</label>
                            <input type="file" name="logo" accept="image/*">
                            <?php if (!empty($professional['logo_name'])): ?><small class="helper">Arquivo atual: <?php echo q_e($professional['logo_name']); ?></small><?php endif; ?>
                        </div>
                        <div class="field field-span-2">
                            <label>Nome da empresa ou profissional</label>
                            <input type="text" name="nome_profissional" value="<?php echo q_e($professional['nome_profissional'] ?? ''); ?>" placeholder="Ex: João Refrigeração" required>
                        </div>
                        <div class="field">
                            <label>Telefone / WhatsApp</label>
                            <input type="text" name="telefone_profissional" class="phone-mask" inputmode="numeric" value="<?php echo q_e($professional['telefone_profissional'] ?? ''); ?>" placeholder="(00) 00000-0000" required>
                        </div>
                        <div class="field">
                            <label>Cidade</label>
                            <input type="text" name="cidade_profissional" value="<?php echo q_e($professional['cidade_profissional'] ?? ''); ?>" placeholder="Ex: São Paulo - SP">
                        </div>
                        <div class="field field-span-2">
                            <label>Email (opcional)</label>
                            <input type="email" name="email_profissional" value="<?php echo q_e($professional['email_profissional'] ?? ''); ?>" placeholder="email@exemplo.com">
                        </div>
                    </div>
                </div>
            </section>

            <section class="form-section">
                <h3>Dados do Cliente</h3>
                <div class="form-grid">
                    <div class="field"><label>Nome do cliente</label><input type="text" name="nome_cliente" value="<?php echo q_e($professional['nome_cliente'] ?? ''); ?>" placeholder="Nome completo" required></div>
                    <div class="field"><label>Telefone do cliente</label><input type="text" name="telefone_cliente" class="phone-mask" inputmode="numeric" value="<?php echo q_e($professional['telefone_cliente'] ?? ''); ?>" placeholder="(00) 00000-0000"></div>
                    <div class="field"><label>Endereço</label><input type="text" name="endereco_cliente" value="<?php echo q_e($professional['endereco_cliente'] ?? ''); ?>" placeholder="Rua, número, bairro"></div>
                    <div class="field"><label>Cidade</label><input type="text" name="cidade_cliente" value="<?php echo q_e($professional['cidade_cliente'] ?? ''); ?>" placeholder="Ex: São Paulo - SP"></div>
                    <div class="field field-span-2"><label>Observações</label><textarea name="observacoes_cliente" rows="4" placeholder="Informações adicionais sobre o cliente..."><?php echo q_e($professional['observacoes_cliente'] ?? ''); ?></textarea></div>
                </div>
            </section>

            <section class="form-section">
                <h3>Informações do Orçamento</h3>
                <div class="form-grid form-grid-3">
                    <div class="field"><label>Número do orçamento</label><input type="text" name="numero_orcamento" value="<?php echo q_e($professional['numero_orcamento'] ?? currentBudgetNumber()); ?>"></div>
                    <div class="field"><label>Data</label><input type="date" name="data_orcamento" value="<?php echo q_e($professional['data_orcamento'] ?? date('Y-m-d')); ?>"></div>
                    <div class="field"><label>Validade</label><select name="validade_orcamento"><?php foreach (['7 dias', '10 dias', '15 dias', '30 dias'] as $validade): ?><option value="<?php echo q_e($validade); ?>" <?php echo (($professional['validade_orcamento'] ?? '7 dias') === $validade) ? 'selected' : ''; ?>><?php echo q_e($validade); ?></option><?php endforeach; ?></select></div>
                </div>
            </section>
            <div class="actions between"><a href="wizard.php?step=1" class="btn btn-secondary">Voltar</a><button type="submit" class="btn btn-primary">Continuar</button></div>
        </form>

    <?php elseif ($step === 3): ?>
        <form method="post" class="card wizard-card" id="services-form">
            <input type="hidden" name="form_step" value="3">
            <input type="hidden" id="services-json" value='<?php echo q_e((string) $servicesJson); ?>'>
            <div class="section-title">
                <h2>Serviços</h2>
                <p>Adicione os serviços do orçamento. Os subtotais e o total geral são calculados automaticamente.</p>
            </div>
            <div class="services-toolbar">
                <div></div>
                <button type="button" class="btn btn-primary" id="add-service-btn">Adicionar serviço</button>
            </div>
            <div id="services-wrapper"></div>
            <div class="total-box"><span>Total Geral</span><strong id="grand-total"><?php echo q_money(0); ?></strong></div>
            <div class="actions between"><a href="wizard.php?step=2" class="btn btn-secondary">Voltar</a><button type="submit" class="btn btn-primary">Continuar</button></div>
        </form>

    <?php elseif ($step === 4): ?>
        <form method="post" class="card wizard-card">
            <input type="hidden" name="form_step" value="4">
            <div class="section-title">
                <h2>Pagamento e condições</h2>
                <p>Defina as formas de pagamento, garantia e observações finais.</p>
            </div>
            <section class="form-section">
                <h3>Condições de Pagamento</h3>
                <div class="form-grid form-grid-3">
                    <div class="field"><label>Valor total à vista (R$)</label><input type="text" name="valor_avista" class="money-mask" inputmode="decimal" value="<?php echo q_e($payment['valor_avista'] ?? ''); ?>" placeholder="R$ 0,00"></div>
                    <div class="field"><label>Valor parcelado (R$)</label><input type="text" name="valor_parcelado" class="money-mask" inputmode="decimal" value="<?php echo q_e($payment['valor_parcelado'] ?? ''); ?>" placeholder="R$ 0,00"></div>
                    <div class="field"><label>Parcelas</label><select name="parcelas"><?php foreach (['1x', '2x', '3x', '4x', '5x', '6x'] as $parcela): ?><option value="<?php echo q_e($parcela); ?>" <?php echo (($payment['parcelas'] ?? '1x') === $parcela) ? 'selected' : ''; ?>><?php echo q_e($parcela); ?></option><?php endforeach; ?></select></div>
                    <div class="field"><label>Entrada no fechamento (R$)</label><input type="text" name="entrada_fechamento" class="money-mask" inputmode="decimal" value="<?php echo q_e($payment['entrada_fechamento'] ?? ''); ?>" placeholder="R$ 0,00"></div>
                    <div class="field"><label>Restante na entrega (R$)</label><input type="text" name="restante_entrega" class="money-mask" inputmode="decimal" value="<?php echo q_e($payment['restante_entrega'] ?? ''); ?>" placeholder="R$ 0,00"></div>
                </div>
            </section>
            <section class="form-section">
                <h3>Formas de Pagamento</h3>
                <div class="checkbox-grid">
                    <?php $methods = ['Pix', 'Dinheiro', 'Cartão de crédito', 'Cartão de débito', 'Transferência bancária']; $selectedMethods = $payment['formas_pagamento'] ?? []; foreach ($methods as $method): ?>
                        <label class="checkbox-item"><input type="checkbox" name="formas_pagamento[]" value="<?php echo q_e($method); ?>" <?php echo in_array($method, $selectedMethods, true) ? 'checked' : ''; ?>><span><?php echo q_e($method); ?></span></label>
                    <?php endforeach; ?>
                </div>
            </section>
            <section class="form-section">
                <h3>Garantia e Observações</h3>
                <div class="form-grid">
                    <div class="field"><label>Garantia do serviço</label><select name="garantia"><?php foreach (['30 dias', '60 dias', '90 dias'] as $garantia): ?><option value="<?php echo q_e($garantia); ?>" <?php echo (($payment['garantia'] ?? '30 dias') === $garantia) ? 'selected' : ''; ?>><?php echo q_e($garantia); ?></option><?php endforeach; ?></select></div>
                    <div class="field field-span-2"><label>Observações finais</label><textarea name="observacoes" rows="5" placeholder="Material incluso&#10;Horário sujeito a agendamento&#10;Valores válidos por X dias"><?php echo q_e($payment['observacoes'] ?? ''); ?></textarea></div>
                </div>
            </section>
            <div class="actions between"><a href="wizard.php?step=3" class="btn btn-secondary">Voltar</a><button type="submit" class="btn btn-primary">Continuar</button></div>
        </form>

    <?php else: ?>
        <div class="preview-layout">
            <form method="post" class="control-panel" id="preview-config-form">
                <input type="hidden" name="form_step" value="5">
                                <div class="section-title">
                    <h2>Seu orçamento está pronto</h2>
                    <p>Antes de imprimir ou baixar, você pode ajustar o modelo e a cor base do orçamento.</p>
                </div>
                <div class="control-grid">
                    <div class="field">
                        <label>Modelo</label>
                        <select id="preview_model" name="preview_model">
                            <option value="template1" <?php echo $preview['model'] === 'template1' ? 'selected' : ''; ?>>Clean Simples</option>
                            <option value="template2" <?php echo $preview['model'] === 'template2' ? 'selected' : ''; ?>>Profissional Elegante</option>
                            <option value="template3" <?php echo $preview['model'] === 'template3' ? 'selected' : ''; ?>>Comercial com Destaque</option>
                        </select>
                    </div>
                    <div class="field">
                        <label>Cor base</label>
                        <div class="color-controls">
                            <input id="preview_color" name="preview_color" class="color-picker hidden-color-picker" type="color" value="<?php echo q_e($preview['custom_color']); ?>">
                            <div class="preset-list">
                                <?php foreach ($colorPresets as $preset): ?>
                                    <button type="button" class="color-preset <?php echo strtolower($preset['value']) === strtolower($preview['custom_color']) ? 'active' : ''; ?>" data-color="<?php echo q_e($preset['value']); ?>" title="<?php echo q_e($preset['name']); ?>" style="background: <?php echo q_e($preset['value']); ?>;"></button>
                                <?php endforeach; ?>
                                <button type="button" class="color-preset color-more" id="color-more-btn" title="Escolher outra cor">+</button>
                            </div>
                        </div>
                    </div>
                    <div class="field">
                        <label>Intensidade da cor</label>
                        <div class="intensity-wrap">
                            <input id="preview_intensity" name="preview_intensity" type="range" min="30" max="100" step="1" value="<?php echo q_e((string) $preview['intensity']); ?>">
                            <div class="color-swatch" id="preview_swatch"></div>
                        </div>
                    </div>
                </div>
                <div class="actions" style="margin-top:18px;justify-content:flex-start"><button type="button" class="btn btn-secondary" id="apply-preview-btn">Aplicar visual</button></div>
            </form>

            <section class="preview-shell">
                <div class="quote-stage">
                    <div class="quote-canvas">
                        <?php echo $previewHtml; ?>
                    </div>
                </div>
                <div class="preview-note">A impressão e o PDF usam o mesmo layout e as mesmas cores da pré-visualização.</div>
                <div class="preview-action-row">
                    <div class="left-actions"><a href="wizard.php?step=2" class="btn btn-secondary">Editar orçamento</a></div>
                    <div class="right-actions">
                        <a href="generate_pdf.php?model=<?php echo q_e($preview['model']); ?>&color=<?php echo q_e($preview['custom_color']); ?>&intensity=<?php echo q_e((string) $preview['intensity']); ?>" class="btn btn-primary">Baixar orçamento em PDF</a>
                        <button type="button" class="btn btn-secondary" onclick="window.print()">Imprimir</button>
                    </div>
                </div>
            </section>
        </div>
    <?php endif; ?>
</div>
<script src="assets/js/script.js"></script>
</body>
</html>
