/* Pagina /ordens/nova — calculadora B2B real (cotação automática).

   Comportamento:
   - User digita USDT → debounce 600ms → cota → atualiza BRL.
   - User digita BRL → debounce 600ms → calcula USDT estimado pela última
     cotação → cota com esse USDT → atualiza BRL com o valor real.
   - Auto-recota ao mudar side.
   - Cotação vale 30s (countdown na tela).
*/

const { useState, useEffect, useRef } = React;


function OrderNewPage() {
    const [side, setSide]           = useState('BUY');
    const MIN_BRL = 500;
    const [usdt, setUsdt]           = useState('100');
    const [brl, setBrl]             = useState('');
    const [quote, setQuote]         = useState(null);
    const [totp, setTotp]           = useState('');
    const [loading, setLoading]     = useState(false);
    const [error, setError]         = useState(null);
    const [success, setSuccess]     = useState(null);
    const [countdown, setCountdown] = useState(0);

    const last_edited_ref = useRef('usdt');   // 'usdt' | 'brl'
    const debounce_ref    = useRef(null);
    const countdown_ref   = useRef(null);
    const last_quote_ref  = useRef(null);     // pra converter BRL→USDT entre quotes

    // ─── Countdown ─────────────────────────────────────────────────────
    useEffect(() => {
        if (!quote) { setCountdown(0); return; }
        const exp = new Date(quote.valid_until).getTime();
        const tick = () => {
            const left = Math.max(0, Math.floor((exp - Date.now()) / 1000));
            setCountdown(left);
            if (left <= 0) clearInterval(countdown_ref.current);
        };
        tick();
        countdown_ref.current = setInterval(tick, 500);
        return () => clearInterval(countdown_ref.current);
    }, [quote]);

    // ─── Cota e atualiza ──────────────────────────────────────────────
    async function fetch_quote(side_arg, usdt_val, edited_field) {
        if (!usdt_val || Number(usdt_val) <= 0) return;
        setLoading(true);
        setError(null);
        try {
            const q = await window.C7_API.post('/b2b/orders/quote', {
                side: side_arg,
                valor_usdt: String(usdt_val),
            });
            setQuote(q);
            last_quote_ref.current = q;
            // Atualiza só o campo que o user NÃO está editando
            if (edited_field !== 'usdt') {
                setUsdt(String(q.valor_usdt));
            }
            if (edited_field !== 'brl') {
                setBrl(Number(q.total_brl).toFixed(2));
            }
        } catch (err) {
            setError(err.message || 'falha ao cotar');
            setQuote(null);
        } finally {
            setLoading(false);
        }
    }

    function schedule_quote(side_arg, usdt_val, edited_field) {
        if (debounce_ref.current) clearTimeout(debounce_ref.current);
        debounce_ref.current = setTimeout(() => {
            fetch_quote(side_arg, usdt_val, edited_field);
        }, 600);
    }

    // Carrega cotação inicial e ao mudar side
    useEffect(() => {
        last_edited_ref.current = 'usdt';
        const v = usdt && Number(usdt) > 0 ? usdt : '100';
        if (!usdt) setUsdt('100');
        fetch_quote(side, v, null);   // null = atualiza ambos
        // eslint-disable-next-line
    }, [side]);

    // Quando user digita USDT
    function on_usdt_change(v) {
        last_edited_ref.current = 'usdt';
        setUsdt(v);
        schedule_quote(side, v, 'usdt');
    }

    // Quando user digita BRL — estima USDT pela última cotação
    function on_brl_change(v) {
        last_edited_ref.current = 'brl';
        setBrl(v);
        const last_price = last_quote_ref.current && Number(last_quote_ref.current.preco_unit_brl);
        if (!last_price || !v || Number(v) <= 0) return;
        const estimated_usdt = Number(v) / last_price;
        if (estimated_usdt <= 0) return;
        // não atualiza o input de USDT enquanto user edita BRL
        schedule_quote(side, estimated_usdt.toFixed(3), 'brl');
    }

    async function on_confirmar() {
        if (!quote) return;
        setError(null);
        setLoading(true);
        try {
            const res = await window.C7_API.post('/b2b/orders', {
                side,
                valor_usdt:  String(quote.valor_usdt),
                cotacao_brl: String(quote.preco_unit_brl),
                totp_code:   totp.trim(),
            });
            setSuccess(res);
        } catch (err) {
            // Backend manda a mensagem certa em `detail` (que vira err.message).
            // Mantemos so override pra 401 (TOTP) que precisa de copy curto.
            if (err.status === 401) setError('Código 2FA inválido.');
            else                    setError(err.message || 'Falha ao criar ordem.');
        } finally {
            setLoading(false);
        }
    }

    function on_nova_cotacao() {
        // Re-cota com o valor USDT atual (ou usa o ultimo valor do quote)
        const v = (usdt || (quote && quote.valor_usdt) || '100').toString();
        if (Number(v) <= 0) return;
        setError(null);
        // fetch_quote ja gerencia setLoading internamente
        fetch_quote(side, v, null);
    }

    const quote_valid = quote && countdown > 0;
    const total_brl   = quote ? Number(quote.total_brl) : 0;
    const below_min   = total_brl > 0 && total_brl < MIN_BRL;
    const can_confirm = quote_valid && totp.trim().length >= 6 && !loading && !below_min;

    const { AppShell } = window.C7_Layout;

    if (success) {
        return <AppShell current_path="/ordens">
            <OrderCreatedSuccess data={success} />
        </AppShell>;
    }

    // Bloqueio: sem wallet cadastrada nao pode criar ordem BUY
    const user = window.C7_STORE.get().user || {};
    if (side === 'BUY' && !user.usdt_wallet_destino) {
        return (
            <AppShell current_path="/ordens">
                <div className="c-card" style={{maxWidth: 560, margin: '40px auto'}}>
                    <h3>Carteira não cadastrada</h3>
                    <p style={{color:'rgba(200,200,205,0.75)', lineHeight: 1.6}}>
                        Pra criar ordens de compra, você precisa primeiro cadastrar
                        a carteira USDT-TRC20 onde vai receber as criptomoedas.
                    </p>
                    {user.kyc_status !== 'approved' && (
                        <p style={{color:'rgba(255,200,87,0.85)', fontSize: 13}}>
                            ⚠ O cadastro de carteira é liberado apenas após aprovação
                            do KYC. Status atual: <strong>{window.C7_kycLabel(user.kyc_status)}</strong>.
                        </p>
                    )}
                    <a href="#/perfil" className="c-link-btn" style={{marginTop: 12, display: 'inline-block'}}>
                        Ir pro perfil
                    </a>
                </div>
            </AppShell>
        );
    }

    const fmt_pct = (n) => (Number(n) * 100).toFixed(2) + '%';

    return (
        <AppShell current_path="/ordens">
            <div className="qc-shell">
                <div className="qc-box">

                    {/* Tabs — pra reativar SELL, mude SELL_ENABLED pra true */}
                    <div className="qc-tabs">
                        {[
                            { k: 'BUY',  l: 'Comprar USDT', enabled: true },
                            { k: 'SELL', l: 'Vender USDT',  enabled: false },
                        ].map(o => (
                            <button key={o.k}
                                    onClick={() => o.enabled && setSide(o.k)}
                                    disabled={!o.enabled}
                                    title={o.enabled ? '' : 'Em breve'}
                                    className={'qc-tab'
                                        + (side === o.k ? ' active' : '')
                                        + (!o.enabled ? ' disabled' : '')}>
                                {o.l}
                                {!o.enabled && <span className="qc-tab-soon"> · em breve</span>}
                            </button>
                        ))}
                    </div>

                    {/* USDT */}
                    <div className="qc-block">
                        <label className="qc-label">
                            {side === 'BUY' ? 'Quero comprar' : 'Quero vender'} (USDT)
                        </label>
                        <div className="qc-input-wrap">
                            <input type="number" min="0" step="0.01"
                                   value={usdt}
                                   onChange={e => on_usdt_change(e.target.value)}
                                   className="qc-input" />
                            <span className="qc-unit">USDT</span>
                        </div>
                        <div className={'qc-min-hint' + (below_min ? ' qc-min-hint-err' : '')}>
                            {below_min
                                ? `↑ valor mínimo: R$ ${MIN_BRL.toFixed(2)} ` +
                                  `(seu pedido: R$ ${total_brl.toFixed(2)})`
                                : `mínimo: R$ ${MIN_BRL.toFixed(2)} por ordem`}
                        </div>
                    </div>

                    {/* BRL */}
                    <div className="qc-block">
                        <label className="qc-label">
                            {side === 'BUY' ? 'Você paga' : 'Você recebe'} (BRL) *
                        </label>
                        <div className="qc-input-wrap">
                            <input type="number" min="0" step="0.01"
                                   value={brl}
                                   onChange={e => on_brl_change(e.target.value)}
                                   className="qc-input" />
                            <span className="qc-unit">BRL</span>
                        </div>
                    </div>

                    {/* Grid 3 detalhes — Cotação + Taxa + Liquidação */}
                    <div className="qc-detail-grid">
                        <Detail label="Cotação"
                                value={quote ? 'R$ ' + Number(quote.preco_unit_brl).toFixed(3) : '—'} />
                        <Detail label="Taxa"
                                value={quote ? fmt_pct(quote.margem_user) : '—'} hidden disabled/>
                        <Detail label="Liquidação" value="~ 3 min" hidden disabled/>
                    </div>

                    {error && <div className="qc-warning">{error}</div>}

                    {/* Quando há cotação válida, mostra TOTP + Confirmar */}
                    {quote_valid && (
                        <div className="qc-confirm-block">
                            <div className="qc-countdown">
                                Cotação válida por mais <strong>{countdown}s</strong>
                            </div>
                            <label className="qc-label" style={{marginTop: 14}}>Código 2FA</label>
                            <input type="text" value={totp}
                                   onChange={e => setTotp(e.target.value)}
                                   pattern="[0-9A-Za-z_\-]{6,12}"
                                   inputMode="numeric"
                                   autoComplete="one-time-code"
                                   placeholder="000000"
                                   className="qc-input qc-input-otp" />
                            <button className="qc-cta" onClick={on_confirmar}
                                    disabled={!can_confirm}>
                                {loading ? 'confirmando…' : 'Confirmar ordem'} →
                            </button>
                        </div>
                    )}

                    {quote && !quote_valid && (
                        <div className="qc-expired-block">
                            <div className="qc-warning qc-warning-warn">
                                Cotação expirada.
                            </div>
                            <button className="qc-renew-btn"
                                    onClick={on_nova_cotacao}
                                    disabled={loading}>
                                {loading ? 'cotando…' : '↻ Nova cotação'}
                            </button>
                        </div>
                    )}

                    {!quote && loading && (
                        <div className="qc-countdown" style={{marginTop: 10}}>cotando…</div>
                    )}

                    <div className="qc-disclaimer">
                        * Taxa já incluída no preço de cotação. Cotação atualiza enquanto você digita
                        e fica travada por 30s ao validar. Pagamento PIX deve ser feito dentro de 15min
                        após confirmação.
                    </div>
                </div>
            </div>

            <style>{`
                .qc-shell { max-width: 540px; margin: 0 auto; padding: 20px 0; }
                .qc-box {
                    background: rgba(20,20,26,0.6);
                    border: 1px solid rgba(255,255,255,0.10);
                    backdrop-filter: blur(12px);
                    padding: 28px; border-radius: 4px;
                }
                .qc-tabs { display: flex; margin-bottom: 24px;
                           border-bottom: 1px solid rgba(255,255,255,0.08); }
                .qc-tab {
                    flex: 1; padding: 14px 16px;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
                    color: rgba(200,200,205,0.55);
                    background: transparent; border: none; cursor: pointer;
                    border-bottom: 2px solid transparent;
                    transition: all 0.3s;
                }
                .qc-tab.active { color: var(--c7-platinum);
                                 border-bottom-color: var(--c7-platinum); }
                .qc-tab:hover { color: var(--c7-platinum); }
                .qc-block { margin-bottom: 20px; }
                .qc-label {
                    display: block;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
                    color: rgba(200,200,205,0.55); margin-bottom: 8px;
                }
                .qc-input-wrap { position: relative; }
                .qc-input {
                    width: 100%; box-sizing: border-box;
                    background: rgba(0,0,0,0.4);
                    border: 1px solid rgba(255,255,255,0.10);
                    padding: 16px 18px;
                    font-family: var(--c7-font-display, 'Inter Tight', sans-serif);
                    font-size: 22px; font-weight: 500;
                    color: #fff; border-radius: 2px; outline: none;
                }
                .qc-input:focus { border-color: rgba(200,200,205,0.5); }
                .qc-unit {
                    position: absolute; right: 18px; top: 50%; transform: translateY(-50%);
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 11px; letter-spacing: 0.15em;
                    color: rgba(200,200,205,0.55);
                }
                .qc-detail-grid {
                    display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1px;
                    background: rgba(255,255,255,0.06);
                    margin-bottom: 24px;
                }
                .qc-detail { background: rgba(20,20,26,0.9); padding: 12px 14px; }
                .qc-detail .lbl {
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase;
                    color: rgba(200,200,205,0.5); margin-bottom: 4px;
                }
                .qc-detail .val {
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 14px; color: var(--c7-platinum);
                }
                .qc-cta {
                    width: 100%; padding: 16px 22px;
                    background: linear-gradient(180deg, #e6e6ea 0%, #c8c8cd 100%);
                    color: #0b0b0d;
                    border: 1px solid #c8c8cd; border-radius: 2px; cursor: pointer;
                    font-family: var(--c7-font-display, 'Inter Tight', sans-serif);
                    font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase;
                    font-weight: 500; transition: transform 0.2s ease;
                }
                .qc-cta:hover:not(:disabled) { transform: translateY(-1px); }
                .qc-cta:disabled { opacity: 0.35; cursor: not-allowed; }
                .qc-min-hint {
                    font-size: 11px;
                    color: rgba(200,200,205,0.55);
                    font-family: var(--c7-font-mono, monospace);
                    letter-spacing: 0.04em;
                    margin-top: 6px;
                }
                .qc-min-hint-err { color: #ff6b6b; }
                .qc-expired-block { margin-top: 14px; }
                .qc-renew-btn {
                    width: 100%; padding: 12px 18px; margin-top: 10px;
                    background: transparent;
                    color: var(--c7-platinum);
                    border: 1px solid rgba(200, 200, 205, 0.35);
                    border-radius: 2px; cursor: pointer;
                    font-family: var(--c7-font-display, 'Inter Tight', sans-serif);
                    font-size: 12px; letter-spacing: 0.15em; text-transform: uppercase;
                    font-weight: 500; transition: all 0.15s;
                }
                .qc-renew-btn:hover:not(:disabled) {
                    background: linear-gradient(180deg, #e6e6ea 0%, #c8c8cd 100%);
                    color: #0b0b0d; border-color: #c8c8cd;
                }
                .qc-renew-btn:disabled { opacity: 0.4; cursor: not-allowed; }
                .qc-confirm-block {
                    padding-top: 18px;
                    border-top: 1px solid rgba(255,255,255,0.08);
                }
                .qc-countdown {
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 11px; letter-spacing: 0.1em;
                    color: rgba(200,200,205,0.7);
                    text-align: center; margin-bottom: 6px;
                }
                .qc-input-otp {
                    letter-spacing: 6px;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 18px; text-align: center;
                    margin-top: 8px; margin-bottom: 14px;
                }
                .qc-warning {
                    margin-bottom: 14px; padding: 10px 14px;
                    background: rgba(220,80,60,0.08);
                    border: 1px solid rgba(220,80,60,0.35);
                    border-radius: 2px;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 11px; color: var(--c7-platinum);
                    letter-spacing: 0.05em; line-height: 1.5;
                }
                .qc-warning-warn {
                    background: rgba(255,200,87,0.08);
                    border-color: rgba(255,200,87,0.35);
                }
                .qc-disclaimer {
                    margin-top: 14px;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 10px; color: rgba(200,200,205,0.5);
                    letter-spacing: 0.05em; line-height: 1.5;
                }
            `}</style>
        </AppShell>
    );
}


function Detail({ label, value, hidden }) {
    if (hidden) return null;
    return (
        <div className="qc-detail">
            <div className="lbl">{label}</div>
            <div className="val">{value}</div>
        </div>
    );
}


function CopyBox({ value }) {
    const [copied, setCopied] = useState(false);
    async function on_copy() {
        try {
            await navigator.clipboard.writeText(String(value));
            setCopied(true);
            setTimeout(() => setCopied(false), 1500);
        } catch (e) {
            const ta = document.createElement('textarea');
            ta.value = String(value);
            document.body.appendChild(ta);
            ta.select();
            try { document.execCommand('copy'); setCopied(true); setTimeout(() => setCopied(false), 1500); }
            catch (e2) {}
            document.body.removeChild(ta);
        }
    }
    return (
        <div className="qc-copybox">
            <code>{value}</code>
            <button className="qc-copybtn" onClick={on_copy}>
                {copied
                    ? <><span>✓</span> copiado</>
                    : <><span style={{fontSize: 13}}>⧉</span></>}
            </button>
        </div>
    );
}


function OrderCreatedSuccess({ data }) {
    return (
        <div className="qc-shell">
            <div className="qc-box">
                <div className="qc-success-banner">
                    ✓ Ordem criada — <code>{data.order_id}</code>
                </div>
                <h3 style={{
                    fontFamily: 'var(--c7-font-mono, monospace)',
                    fontSize: 11, letterSpacing: '0.2em', textTransform: 'uppercase',
                    color: 'rgba(200,200,205,0.7)', margin: '0 0 14px',
                }}>Instruções de pagamento</h3>

                {data.pagamento.tipo === 'pix_in' && (
                    <div className="qc-paybox">
                        <div className="qc-pay-amount">R$ {Number(data.pagamento.valor_brl).toFixed(2)}</div>
                        <div className="qc-pay-sub">Pague via PIX dentro de 15 min</div>

                        {data.pagamento.pix_copy_paste ? (
                            <div className="qc-pix-qr-wrap">
                                <div className="qc-pix-qr">
                                    <window.C7_Forms.QRImage
                                        data={data.pagamento.pix_copy_paste}
                                        size={200} />
                                </div>
                                <div className="qc-pix-info">
                                    <div className="qc-pay-info" style={{marginTop: 0}}>
                                        <div className="lbl">PIX copia-e-cola</div>
                                    </div>
                                    <CopyBox value={data.pagamento.pix_copy_paste} />
                                </div>
                            </div>
                        ) : (
                            <div className="qc-pay-note">
                                ⚠ QR PIX indisponível no momento. Contate o suporte.
                            </div>
                        )}

                        {data.pagamento.wallet_destino_usdt && (
                            <>
                                <div className="qc-pay-info">
                                    <div className="lbl">USDT será creditado em (após pagamento)</div>
                                </div>
                                <CopyBox value={data.pagamento.wallet_destino_usdt} />
                            </>
                        )}
                    </div>
                )}
                {data.pagamento.tipo === 'usdt_in' && (
                    <div className="qc-paybox">
                        <div className="qc-pay-amount">{data.pagamento.valor_usdt} USDT</div>
                        <div className="qc-pay-sub">Envie pra este endereço ({data.pagamento.rede})</div>
                        <div style={{marginTop: 14}}>
                            <CopyBox value={data.pagamento.destino_usdt} />
                        </div>
                        <div className="qc-pay-note">{data.pagamento.obs}</div>
                    </div>
                )}

                <a href={'#/ordens/' + data.order_id}
                   className="qc-acompanhar-btn">
                    Acompanhar ordem →
                </a>
            </div>
            <style>{`
                .qc-acompanhar-btn {
                    display: block;
                    margin: 22px auto 0;
                    padding: 14px 32px;
                    background: linear-gradient(180deg, #e6e6ea 0%, #c8c8cd 100%);
                    color: #0b0b0d;
                    border: 1px solid #c8c8cd;
                    border-radius: 2px;
                    text-decoration: none;
                    text-align: center;
                    font-family: var(--c7-font-display, 'Inter Tight', sans-serif);
                    font-size: 12px; letter-spacing: 0.2em;
                    text-transform: uppercase; font-weight: 500;
                    transition: transform 0.2s ease;
                    width: fit-content;
                    min-width: 220px;
                }
                .qc-acompanhar-btn:hover { transform: translateY(-1px); }
                .qc-success-banner {
                    background: rgba(55,178,77,0.08);
                    border: 1px solid rgba(55,178,77,0.35);
                    color: #51cf66; padding: 10px 14px;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 11px; letter-spacing: 0.05em;
                    margin-bottom: 18px;
                }
                .qc-success-banner code { color: var(--c7-platinum); }
                .qc-paybox {
                    background: rgba(0,0,0,0.4);
                    border: 1px solid rgba(255,255,255,0.10);
                    border-radius: 2px; padding: 18px;
                }
                .qc-pay-amount {
                    font-family: var(--c7-font-display, 'Inter Tight', sans-serif);
                    font-size: 26px; font-weight: 500; color: #fff;
                }
                .qc-pay-sub {
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 11px; color: rgba(200,200,205,0.6);
                    letter-spacing: 0.05em; margin-top: 4px;
                }
                .qc-pay-note {
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 10px; color: rgba(200,200,205,0.45);
                    margin-top: 14px; line-height: 1.5;
                }
                .qc-pay-info { margin-top: 14px; padding-top: 14px;
                               border-top: 1px solid rgba(255,255,255,0.06); }
                .qc-pay-info .lbl {
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase;
                    color: rgba(200,200,205,0.5); margin-bottom: 6px;
                }
                .qc-pay-info code, .qc-pay-address {
                    display: block; padding: 10px 12px;
                    background: rgba(0,0,0,0.4);
                    border: 1px solid rgba(255,255,255,0.06);
                    border-radius: 2px;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 13px; color: var(--c7-platinum);
                    word-break: break-all;
                }
                .qc-pay-address { margin-top: 12px; }

                .qc-copybox {
                    display: flex; align-items: stretch;
                    background: rgba(0,0,0,0.4);
                    border: 1px solid rgba(255,255,255,0.10);
                    border-radius: 4px; overflow: hidden;
                    margin-top: 8px;
                    min-height: 44px;
                }
                .qc-copybox code {
                    flex: 1; min-width: 0;
                    padding: 12px 14px;
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 13px; color: var(--c7-platinum);
                    word-break: break-all; overflow-wrap: anywhere;
                    line-height: 1.3;
                    display: flex; align-items: center;
                }
                .qc-copybtn {
                    flex: 0 0 auto;
                    padding: 0 18px;
                    background: linear-gradient(180deg, rgba(200,200,205,0.18) 0%, rgba(200,200,205,0.08) 100%);
                    border: none;
                    border-left: 1px solid rgba(255,255,255,0.08);
                    color: var(--c7-platinum);
                    font-family: var(--c7-font-mono, monospace);
                    font-size: 11px; font-weight: 600;
                    letter-spacing: 0.15em; text-transform: uppercase;
                    cursor: pointer; transition: all 0.15s;
                    display: flex; align-items: center; gap: 6px;
                    white-space: nowrap;
                }
                .qc-copybtn:hover {
                    background: linear-gradient(180deg, rgba(200,200,205,0.32) 0%, rgba(200,200,205,0.2) 100%);
                    color: #fff;
                }
                .qc-copybtn:active { transform: scale(0.97); }

                .qc-pix-qr-wrap {
                    display: flex; gap: 16px; align-items: flex-start;
                    margin: 14px 0 8px;
                }
                .qc-pix-qr {
                    flex: 0 0 auto;
                    background: #fff; padding: 10px; border-radius: 4px;
                    line-height: 0;
                }
                .qc-pix-qr img { display: block; width: 200px; height: 200px; }
                .qc-pix-info { flex: 1; min-width: 0; }
                @media (max-width: 640px) {
                    .qc-pix-qr-wrap { flex-direction: column; align-items: stretch; }
                    .qc-pix-qr { align-self: center; }
                }
            `}</style>
        </div>
    );
}


window.C7_OrderNewPage = OrderNewPage;
