
<!doctype html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="keywords" content="海草小铺,Twitter账号,谷歌Gmail账号,Instagram账号,苹果礼品卡,Instagram涨粉,discord账号,苹果ID批发,苹果ID共享,美区ID"/>
    <meta name="description" content="海草小铺是一个虚拟物品24小时自动发货小店，主营各种社交媒体账号批发零售，社交媒体推广营销，ChatGPT Claude 等 AI 产品销售。欢迎您的光临！"/>
    <link href="/favicon.ico" rel="icon">
    <link rel="stylesheet" href="/assets/static/bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="/assets/static/font/font-awesome-4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="/assets/static/css/i.css?v=20260417.7">
    <link href="/app/View/User/Theme/Dream/Assets/Main.css?v=1.0.3?v=20260417.7" rel="stylesheet">
    <script src="/assets/static/jquery.min.js"></script>
    <script src="/assets/static/acg.js?v=1778007609"></script>
    <title>海草小铺 - 24小时自动发货的小店</title>
    <!--start::HOOK-->
        <!--end::HOOK-->
    <script>
        const cache_status = parseInt("1");
        const cache_expire = parseInt("20");
    </script>

    <script>
        window.DreamUi = window.DreamUi || (function () {
            function normalizeResponse(ret, fallbackMessage) {
                if (typeof ret !== 'string') {
                    return ret || {};
                }

                var text = $.trim(ret);
                if (!text) {
                    return {code: 500, msg: fallbackMessage || '服务器返回空响应'};
                }

                var candidates = [text];
                var jsonStart = text.indexOf('{');
                var jsonEnd = text.lastIndexOf('}');
                if (jsonStart !== -1 && jsonEnd > jsonStart) {
                    candidates.unshift(text.substring(jsonStart, jsonEnd + 1));
                }

                for (var i = 0; i < candidates.length; i += 1) {
                    try {
                        return JSON.parse(candidates[i]);
                    } catch (_error) {
                    }
                }

                var summary = '';
                var titleMatch = text.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
                if (titleMatch && titleMatch[1]) {
                    summary = $.trim(titleMatch[1].replace(/\s+/g, ' '));
                }
                if (!summary) {
                    summary = $.trim(
                        text
                            .replace(/<script[\s\S]*?<\/script>/ig, ' ')
                            .replace(/<style[\s\S]*?<\/style>/ig, ' ')
                            .replace(/<[^>]+>/g, ' ')
                            .replace(/\s+/g, ' ')
                    ).substring(0, 80);
                }

                return {
                    code: 500,
                    msg: summary ? ('服务端返回异常：' + summary) : (fallbackMessage || '保存失败，请查看服务端返回')
                };
            }

            function bindClipboardFeedback(selector, rowId, message) {
                var clipboard = new ClipboardJS(selector + rowId);
                clipboard.on('success', function () {
                    layer.msg(message || '复制成功');
                });
                return clipboard;
            }

            function renderDialogSummary(totalAmount, count, lines, compact) {
                var className = compact ? 'dream-dialog-summary dream-dialog-summary--compact' : 'dream-dialog-summary';
                return '<div class="' + className + '">' +
                    '<p class="dream-dialog-summary__title">共支付 <b class="dream-dialog-summary__value">￥' + totalAmount + '</b>，订单数：' + count + '</p>' +
                    '<textarea class="layui-input dream-dialog-summary__textarea">' + lines + '</textarea>' +
                    '</div>';
            }

            return {
                normalizeResponse: normalizeResponse,
                bindClipboardFeedback: bindClipboardFeedback,
                renderDialogSummary: renderDialogSummary
            };
        })();
    </script>

    <script>
        // 写入顶部导航高度到 CSS 变量，避免内容被固定导航遮挡（rAF 节流）
        (function () {
            let raf = 0;
            function apply() {
                raf = 0;
                const app = document.getElementById('app');
                if (!app) return;
                document.documentElement.style.setProperty('--dream-app-height', app.offsetHeight + 'px');
            }
            function schedule() {
                if (raf) return;
                raf = window.requestAnimationFrame(apply);
            }
            window.addEventListener('resize', schedule);
            window.addEventListener('load', schedule);
            document.addEventListener('DOMContentLoaded', schedule);
        })();
    </script>

</head>
<!--<body style="background: url('/assets/cache/images/202408070157141117545.jpeg') fixed no-repeat;background-size: cover;">-->
<body class="dream-theme-body dream-home-body">

<div id="app">
    <nav class="navbar navbar-expand-lg dream-navbar">
        <div class="container">
            <div class="dream-navbar-shell">
                <a class="dream-navbar-brand" href="/" aria-label="海草小铺">
                    <img src="/assets/cache/images/202603240325567074713.png" alt="海草小铺">
                </a>

                <div class="dream-navbar-nav">
                    <a class="nav-link" data-dream-nav="home" href="/"><i class="fa fa-home" aria-hidden="true"></i> 首页</a>
                    <a class="nav-link" data-dream-nav="query" href="/user/index/query"><i class="fa fa-file-text-o" aria-hidden="true"></i> 订单</a>
                                            <a class="nav-link dream-navbar-nav-extra" data-dream-nav="service" href="https://tawk.to/chat/6079721cf7ce1827093b12af/1f3d6bg9h" target="_blank"><i class="fa fa-life-ring" aria-hidden="true"></i> 客服</a>
                                                                            </div>

                <div class="dream-navbar-actions">
                    <div class="dream-navbar-search">
                        <i class="fa fa-search" aria-hidden="true"></i>
                        <input type="text" class="search-input" placeholder="搜索商品名称">
                        <button class="search-btn" type="button" aria-label="打开搜索" aria-expanded="false">搜索</button>
                    </div>

                    
                                            <a class="dream-navbar-user" href="/user/authentication/login" aria-label="登录">
                            <img src="/favicon.ico" alt="默认头像">
                        </a>
                                    </div>
            </div>
        </div>
    </nav>

</div>

<div class="dream-mobile-search-overlay" id="dreamMobileSearchOverlay" aria-hidden="true">
    <div class="dream-mobile-search-header">
        <a class="dream-mobile-search-brand" href="/" aria-label="海草小铺">
            <img src="/assets/cache/images/202603240325567074713.png" alt="海草小铺">
        </a>
        <button type="button" class="dream-mobile-search-close" id="dreamMobileSearchClose" aria-label="关闭搜索">
            <i class="fa fa-times" aria-hidden="true"></i>
        </button>
    </div>
    <div class="dream-mobile-search-panel" role="dialog" aria-modal="true" aria-label="搜索商品">
        <form class="dream-mobile-search-form" id="dreamMobileSearchForm">
            <i class="fa fa-search" aria-hidden="true"></i>
            <input type="text" class="dream-mobile-search-input" id="dreamMobileSearchInput" placeholder="寻找你的心仪好物..." autocomplete="off">
            <button type="submit" class="dream-mobile-search-submit">搜索</button>
        </form>
    </div>
</div>

<nav class="dream-mobile-tabbar" aria-label="底部导航">
    <a class="dream-mobile-tabbar-link" href="/"><i class="fa fa-th-large" aria-hidden="true"></i><span>首页</span></a>
    <a class="dream-mobile-tabbar-link" href="/user/index/query"><i class="fa fa-list-alt" aria-hidden="true"></i><span>订单</span></a>
    <a class="dream-mobile-tabbar-link dream-nav-cart-link" href="/user/index/cart"><i class="fa fa-shopping-bag" aria-hidden="true"></i><b class="cart-count is-empty">0</b><span>购物车</span></a>
    <a class="dream-mobile-tabbar-link" href="/user/authentication/login?goto=%2Fsitemap.xml"><i class="fa fa-user-o" aria-hidden="true"></i><span>我的</span></a>
</nav>

<div class="dream-toast-stack" id="dreamToastStack" aria-live="polite" aria-atomic="true"></div>

<script>
(function () {
    'use strict';

    var DREAM_CART_LOGIN_REQUIRED = false;
    var DREAM_CART_TRADE_VERIFICATION = 0 === 1;
    var DREAM_GUEST_ORDER_TIPS = "请先登录后再下单";
    var DREAM_CURRENT_BALANCE = "";
    var dreamCartState = {
        open: false,
        loading: false,
        selectedPayId: 0,
        payMenuOpen: false,
        payList: [],
        payListLoaded: false,
        latestData: {
            items: [],
            count: 0,
            total_amount: 0
        }
    };

    function showDreamToast(message, type) {
        var stack = document.getElementById('dreamToastStack');
        if (!stack || !message) {
            return;
        }

        var toast = document.createElement('div');
        toast.className = 'dream-toast' + (type ? ' is-' + type : '');
        toast.innerHTML = '<span class="dream-toast-icon">' + (type === 'error' ? '!' : '✓') + '</span><span>' + String(message) + '</span>';
        stack.appendChild(toast);

        window.requestAnimationFrame(function () {
            toast.classList.add('is-visible');
        });

        window.setTimeout(function () {
            toast.classList.remove('is-visible');
            window.setTimeout(function () {
                if (toast.parentNode) {
                    toast.parentNode.removeChild(toast);
                }
            }, 240);
        }, 2200);
    }

    async function copyDreamText(text, successMessage) {
        var value = String(text || '').trim();
        if (!value) {
            showDreamToast('没有可复制的内容', 'error');
            return false;
        }

        try {
            if (navigator.clipboard && navigator.clipboard.writeText) {
                await navigator.clipboard.writeText(value);
            } else {
                var input = document.createElement('input');
                input.value = value;
                document.body.appendChild(input);
                input.select();
                document.execCommand('copy');
                document.body.removeChild(input);
            }
            showDreamToast(successMessage || '已复制');
            return true;
        } catch (error) {
            showDreamToast('复制失败，请手动复制', 'error');
            return false;
        }
    }

    function escapeDreamHtml(text) {
        return String(text || '')
            .replace(/&/g, '&amp;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;')
            .replace(/"/g, '&quot;')
            .replace(/'/g, '&#39;');
    }

    function formatDreamMoney(value) {
        var amount = Number(value || 0);
        if (Number.isNaN(amount)) {
            amount = 0;
        }
        return amount.toFixed(2);
    }

    function getDreamCartNodes() {
        return {
            button: document.getElementById('dreamNavbarCartButton'),
            popover: document.getElementById('dreamNavbarCartPopover'),
            body: document.getElementById('dreamCartPopoverBody'),
            title: document.getElementById('dreamCartPopoverTitle')
        };
    }

    function updateDreamCartBadgeNodes(count) {
        var value = Math.max(0, Number(count || 0));
        document.querySelectorAll('.cart-count').forEach(function (node) {
            node.textContent = String(value);
            node.classList.toggle('is-empty', value <= 0);
        });
    }

    function updateDreamCartTitle(count) {
        var nodes = getDreamCartNodes();
        if (nodes.title) {
            nodes.title.textContent = '已选 ' + String(Math.max(0, Number(count || 0))) + ' 件商品';
        }
    }

    function normalizeDreamCartResponse(res) {
        var data = res && typeof res === 'object' && res.data && typeof res.data === 'object' ? res.data : {};
        return {
            items: Array.isArray(data.items) ? data.items : [],
            count: Number(data.count || 0),
            total_amount: Number(data.total_amount || 0)
        };
    }

    function dreamCartApi(path, data, success, error) {
        $.ajax({
            url: '/user/api/order/' + path,
            method: 'POST',
            dataType: 'json',
            data: data || {}
        }).done(function (res) {
            if (!res || Number(res.code) !== 200) {
                var message = res && res.msg ? res.msg : '请求失败';
                if (typeof error === 'function') {
                    error(message, res);
                    return;
                }
                showDreamToast(message, 'error');
                return;
            }
            if (typeof success === 'function') {
                success(res);
            }
        }).fail(function (_xhr) {
            if (typeof error === 'function') {
                error('网络异常，请稍后重试');
                return;
            }
            showDreamToast('网络异常，请稍后重试', 'error');
        });
    }

    function loadDreamCartPayList(done) {
        if (!DREAM_CART_LOGIN_REQUIRED) {
            if (typeof done === 'function') {
                done([]);
            }
            return;
        }

        if (dreamCartState.payListLoaded) {
            if (!dreamCartState.selectedPayId && dreamCartState.payList.length > 0) {
                dreamCartState.selectedPayId = Number(dreamCartState.payList[0].id || 0);
            }
            if (typeof done === 'function') {
                done(dreamCartState.payList);
            }
            return;
        }

        var commodityId = Number(window.acg && acg.property && acg.property.cache ? (acg.property.cache.currentCommodityId || 0) : 0);
        var payUrl = '/user/api/index/pay';
        if (commodityId > 0) {
            payUrl += '?commodityId=' + encodeURIComponent(String(commodityId));
        }

        $.ajax({
            url: payUrl,
            method: 'GET',
            dataType: 'json'
        }).done(function (res) {
            if (!res || Number(res.code) !== 200 || !Array.isArray(res.data)) {
                dreamCartState.payList = [];
                dreamCartState.payListLoaded = true;
                if (typeof done === 'function') {
                    done([]);
                }
                return;
            }
            dreamCartState.payList = res.data.map(function (item) {
                var extra = '';
                if (String(item.handle || '') === '#system' && DREAM_CURRENT_BALANCE) {
                    extra = '余额 ' + DREAM_CURRENT_BALANCE;
                }
                return {
                    id: Number(item.id || 0),
                    name: String(item.name || ''),
                    icon: String(item.icon || ''),
                    handle: String(item.handle || ''),
                    extra: extra
                };
            });
            dreamCartState.payListLoaded = true;
            if (!dreamCartState.selectedPayId && dreamCartState.payList.length > 0) {
                dreamCartState.selectedPayId = Number(dreamCartState.payList[0].id || 0);
            }
            if (typeof done === 'function') {
                done(dreamCartState.payList);
            }
        }).fail(function () {
            dreamCartState.payList = [];
            dreamCartState.payListLoaded = true;
            if (typeof done === 'function') {
                done([]);
            }
        });
    }

    function refreshDreamCartCaptcha() {
        if (!DREAM_CART_TRADE_VERIFICATION) {
            return;
        }
        var image = document.getElementById('dreamCartCaptchaImage');
        if (image) {
            image.src = '/user/captcha/image?action=trade&rand=' + Math.ceil(Math.random() * 100000);
        }
    }

    function getDreamSelectedPayMethod() {
        if (!dreamCartState.payList.length) {
            return null;
        }
        var current = dreamCartState.payList.find(function (item) {
            return Number(item.id) === Number(dreamCartState.selectedPayId);
        }) || null;
        if (!current) {
            current = dreamCartState.payList[0];
            dreamCartState.selectedPayId = Number(current.id || 0);
        }
        return current;
    }

    function renderDreamCartPayDropdown() {
        if (!dreamCartState.payList.length) {
            return '<div class="dream-cart-popover-empty-inline">当前没有可用支付方式</div>';
        }

        var current = getDreamSelectedPayMethod();
        var currentIcon = current && current.icon
            ? '<img src="' + escapeDreamHtml(current.icon) + '" alt="" onerror="this.onerror=null;this.src=\'/favicon.ico\';">'
            : '<i class="fa fa-credit-card" aria-hidden="true"></i>';
        var currentExtra = current && current.extra
            ? '<span class="dream-cart-pay-current-extra">' + escapeDreamHtml(current.extra) + '</span>'
            : '';

        return '<div class="dream-cart-pay-dropdown' + (dreamCartState.payMenuOpen ? ' is-open' : '') + '" id="dreamCartPayDropdown">' +
            '<button type="button" class="dream-cart-pay-trigger' + (current ? '' : ' is-disabled') + '" data-cart-action="toggle-pay-dropdown" aria-haspopup="listbox" aria-expanded="' + (dreamCartState.payMenuOpen ? 'true' : 'false') + '">' +
                '<span class="dream-cart-pay-current">' +
                    currentIcon +
                    '<span class="dream-cart-pay-current-text">' +
                        (current
                            ? '<span class="dream-cart-pay-current-name">' + escapeDreamHtml(current.name) + '</span>' + currentExtra
                            : '<span class="dream-cart-pay-placeholder">请选择支付方式</span>') +
                    '</span>' +
                '</span>' +
                '<span class="dream-cart-pay-caret"><i class="fa fa-angle-down" aria-hidden="true"></i></span>' +
            '</button>' +
            '<div class="dream-cart-pay-menu" role="listbox">' +
                dreamCartState.payList.map(function (item) {
                    var active = Number(item.id) === Number(dreamCartState.selectedPayId) ? ' active' : '';
                    var optionExtra = item.extra
                        ? '<span class="dream-cart-pay-option-extra">' + escapeDreamHtml(item.extra) + '</span>'
                        : '';
                    return '<button type="button" class="dream-cart-pay-option' + active + '" data-pay-id="' + escapeDreamHtml(String(item.id)) + '" role="option" aria-selected="' + (active ? 'true' : 'false') + '">' +
                        '<span class="dream-cart-pay-option-left">' +
                            (item.icon
                                ? '<img src="' + escapeDreamHtml(item.icon) + '" alt="" onerror="this.onerror=null;this.src=\'/favicon.ico\';">'
                                : '<i class="fa fa-credit-card" aria-hidden="true"></i>') +
                            '<span class="dream-cart-pay-option-text">' +
                                '<span class="dream-cart-pay-option-name">' + escapeDreamHtml(item.name) + '</span>' +
                                optionExtra +
                            '</span>' +
                        '</span>' +
                        '<span class="dream-cart-pay-option-check"></span>' +
                    '</button>';
                }).join('') +
            '</div>' +
        '</div>';
    }

    function renderDreamCartItemMeta(item) {
        var lines = [];
        if (item.race) {
            lines.push('<div class="dream-cart-popover-item-meta-line">套餐：' + escapeDreamHtml(item.race) + '</div>');
        }
        if (item.quantity_notice) {
            lines.push('<div class="dream-cart-popover-item-error">' + escapeDreamHtml(item.quantity_notice) + '</div>');
        }
        if (item.coupon) {
            lines.push(
                '<div class="dream-cart-popover-item-meta-line dream-cart-popover-item-meta-line--coupon">' +
                    '<span class="dream-cart-popover-meta-label">优惠券</span>' +
                    '<span class="dream-cart-popover-meta-value dream-cart-popover-meta-value--coupon">' + escapeDreamHtml(item.coupon) + '</span>' +
                '</div>'
            );
        }
        if (Array.isArray(item.widget_display) && item.widget_display.length) {
            item.widget_display.forEach(function (widget) {
                var label = widget.cn || widget.name || '';
                var value = widget.value || '';
                if (label || value) {
                    lines.push(
                        '<div class="dream-cart-popover-item-meta-line">' +
                            '<span class="dream-cart-popover-meta-label">' + escapeDreamHtml(label) + '</span>' +
                            '<span class="dream-cart-popover-meta-value">' + escapeDreamHtml(value) + '</span>' +
                        '</div>'
                    );
                }
            });
        }
        if (item.error) {
            lines.push('<div class="dream-cart-popover-item-error">' + escapeDreamHtml(item.error) + '</div>');
        }
        return lines.join('');
    }

    function getDreamCartQuantityMeta(item) {
        var quantity = Math.max(1, parseInt(item && item.num ? item.num : 1, 10) || 1);
        var max = Math.max(0, parseInt(item && item.quantity_max ? item.quantity_max : 0, 10) || 0);
        return {
            quantity: quantity,
            max: max,
            canIncrease: max <= 0 ? true : quantity < max
        };
    }

    function clampDreamCartQuantityValue(value, max) {
        var quantity = Math.max(1, parseInt(value || 1, 10) || 1);
        if (max > 0) {
            quantity = Math.min(quantity, max);
        }
        return quantity;
    }

    function syncDreamCartPayDropdownUi() {
        var dropdown = document.getElementById('dreamCartPayDropdown');
        if (!dropdown) {
            return;
        }
        dropdown.outerHTML = renderDreamCartPayDropdown();
    }

    function renderDreamCartPopover(data) {
        var nodes = getDreamCartNodes();
        if (!nodes.body) {
            return;
        }

        dreamCartState.latestData = data;
        updateDreamCartBadgeNodes(data.count);
        updateDreamCartTitle(data.count);

        if (!data.items.length) {
            nodes.body.innerHTML =
                '<div class="dream-cart-popover-empty">' +
                    '<div class="dream-cart-popover-empty-icon"><i class="fa fa-shopping-bag" aria-hidden="true"></i></div>' +
                    '<h4>购物车还是空的</h4>' +
                    '<p>先去挑几件商品，已加入的内容会在这里汇总结算。</p>' +
                    '<a class="dream-cart-popover-empty-link" href="/">去逛逛</a>' +
                '</div>';
            return;
        }

        nodes.body.innerHTML =
            '<div class="dream-cart-popover-list">' + data.items.map(function (item) {
                var cover = item.cover ? escapeDreamHtml(item.cover) : '/favicon.ico';
                var quantityMeta = getDreamCartQuantityMeta(item);
                var quantity = quantityMeta.quantity;
                var maxAttr = quantityMeta.max > 0 ? ' max="' + escapeDreamHtml(String(quantityMeta.max)) + '"' : '';
                var decreaseDisabled = quantity <= 1 ? ' disabled' : '';
                var increaseDisabled = quantityMeta.canIncrease ? '' : ' disabled';
                return '' +
                    '<article class="dream-cart-popover-item" data-cart-id="' + escapeDreamHtml(String(item.id || '')) + '">' +
                        '<div class="dream-cart-popover-item-cover">' +
                            '<img src="' + cover + '" alt="' + escapeDreamHtml(item.name || '') + '" onerror="this.onerror=null;this.src=\'/favicon.ico\';">' +
                        '</div>' +
                        '<div class="dream-cart-popover-item-main">' +
                            '<div class="dream-cart-popover-item-top">' +
                                '<h4>' + escapeDreamHtml(item.name || '') + '</h4>' +
                                '<button type="button" class="dream-cart-popover-remove" data-cart-action="remove" data-cart-id="' + escapeDreamHtml(String(item.id || '')) + '">删除</button>' +
                            '</div>' +
                            '<div class="dream-cart-popover-item-meta">' + renderDreamCartItemMeta(item) + '</div>' +
                            '<div class="dream-cart-popover-item-bottom">' +
                                '<div class="dream-cart-popover-qty">' +
                                    '<button type="button" data-cart-action="decrease" data-cart-id="' + escapeDreamHtml(String(item.id || '')) + '"' + decreaseDisabled + '><i class="fa fa-minus" aria-hidden="true"></i></button>' +
                                    '<input type="number" min="1"' + maxAttr + ' class="dream-cart-popover-qty-input" data-cart-action="input" data-cart-id="' + escapeDreamHtml(String(item.id || '')) + '" value="' + escapeDreamHtml(String(quantity)) + '">' +
                                    '<button type="button" data-cart-action="increase" data-cart-id="' + escapeDreamHtml(String(item.id || '')) + '"' + increaseDisabled + '><i class="fa fa-plus" aria-hidden="true"></i></button>' +
                                '</div>' +
                                '<div class="dream-cart-popover-price">￥' + formatDreamMoney(item.amount) + '</div>' +
                            '</div>' +
                        '</div>' +
                    '</article>';
            }).join('') + '</div>' +
            '<div class="dream-cart-popover-checkout">' +
                '<section class="dream-cart-popover-section">' +
                    '<div class="dream-cart-popover-section-head">' +
                        '<span>支付方式</span>' +
                        '<small>选择后可直接合并结算</small>' +
                    '</div>' +
                    renderDreamCartPayDropdown() +
                '</section>' +
                (DREAM_CART_TRADE_VERIFICATION
                    ? '<section class="dream-cart-popover-section">' +
                        '<div class="dream-cart-popover-section-head"><span>人机验证</span><small>提交前请先完成校验</small></div>' +
                        '<div class="dream-cart-popover-captcha">' +
                            '<input id="dreamCartCaptchaInput" class="acg-input" type="text" placeholder="输入验证码">' +
                            '<img id="dreamCartCaptchaImage" alt="验证码" src="" data-cart-action="captcha-refresh">' +
                        '</div>' +
                    '</section>'
                    : '') +
                '<div class="dream-cart-popover-footer">' +
                    '<div class="dream-cart-popover-total">' +
                        '<span>合计</span>' +
                        '<strong>￥' + formatDreamMoney(data.total_amount) + '</strong>' +
                    '</div>' +
                    '<div class="dream-cart-popover-actions">' +
                        '<button type="button" class="dream-cart-popover-btn is-ghost" data-cart-action="clear">清空</button>' +
                        '<button type="button" class="dream-cart-popover-btn is-primary" data-cart-action="checkout">一并付款</button>' +
                    '</div>' +
                '</div>' +
            '</div>';

        refreshDreamCartCaptcha();
    }

    function setDreamCartLoading(message) {
        var nodes = getDreamCartNodes();
        if (!nodes.body) {
            return;
        }
        nodes.body.innerHTML =
            '<div class="dream-cart-popover-loading">' +
                '<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>' +
                '<span>' + escapeDreamHtml(message || '正在同步购物车') + '</span>' +
            '</div>';
    }

    function syncDreamCartData(options) {
        var opts = options || {};
        if (!DREAM_CART_LOGIN_REQUIRED) {
            updateDreamCartBadgeNodes(0);
            updateDreamCartTitle(0);
            return;
        }

        if (dreamCartState.loading && !opts.force) {
            return;
        }

        dreamCartState.loading = true;
        if (dreamCartState.open && !opts.silent) {
            setDreamCartLoading(opts.message || '正在同步购物车');
        }

        dreamCartApi('cartList', {}, function (res) {
            var data = normalizeDreamCartResponse(res);
            dreamCartState.loading = false;
            dreamCartState.latestData = data;
            updateDreamCartBadgeNodes(data.count);
            updateDreamCartTitle(data.count);

            if (!dreamCartState.open) {
                return;
            }

            loadDreamCartPayList(function () {
                renderDreamCartPopover(data);
            });
        }, function (message) {
            dreamCartState.loading = false;
            if (dreamCartState.open) {
                setDreamCartLoading(message || '购物车同步失败');
            }
            showDreamToast(message || '购物车同步失败', 'error');
        });
    }

    function setDreamCartPopoverOpen(isOpen) {
        var nodes = getDreamCartNodes();
        if (!nodes.button || !nodes.popover) {
            return;
        }
        dreamCartState.open = Boolean(isOpen);
        if (!dreamCartState.open) {
            dreamCartState.payMenuOpen = false;
        }
        nodes.button.setAttribute('aria-expanded', dreamCartState.open ? 'true' : 'false');
        nodes.popover.classList.toggle('is-open', dreamCartState.open);
        nodes.popover.setAttribute('aria-hidden', dreamCartState.open ? 'false' : 'true');
        if (dreamCartState.open) {
            syncDreamCartData({
                force: true,
                message: '正在载入购物车'
            });
        }
    }

    function dreamOpenCart() {
        if (!DREAM_CART_LOGIN_REQUIRED) {
            showDreamToast(DREAM_GUEST_ORDER_TIPS, 'error');
            window.setTimeout(function () {
                window.location.href = '/user/authentication/login?goto=' + encodeURIComponent(window.location.pathname + window.location.search);
            }, 480);
            return;
        }
        setDreamCartPopoverOpen(!dreamCartState.open);
    }

    function updateDreamCartItemQuantity(id, value) {
        var root = id ? document.querySelector('[data-cart-id="' + String(id).replace(/"/g, '\\"') + '"]') : null;
        var input = root ? root.querySelector('.dream-cart-popover-qty-input') : null;
        var max = input ? Math.max(0, parseInt(input.getAttribute('max') || '0', 10) || 0) : 0;
        var quantity = clampDreamCartQuantityValue(value, max);
        if (input) {
            input.value = String(quantity);
        }
        dreamCartApi('cartUpdate', {id: id, num: quantity}, function () {
            syncDreamCartData({
                force: true,
                silent: true
            });
        });
    }

    function removeDreamCartItem(id) {
        dreamCartApi('cartRemove', {id: id}, function (res) {
            var count = res && res.data ? Number(res.data.count || 0) : 0;
            updateDreamCartBadgeNodes(count);
            syncDreamCartData({
                force: true,
                message: '正在更新购物车'
            });
        });
    }

    function clearDreamCart() {
        dreamCartApi('cartClear', {}, function () {
            showDreamToast('购物车已清空');
            syncDreamCartData({
                force: true,
                message: '正在清空购物车'
            });
        });
    }

    function checkoutDreamCart() {
        if (!dreamCartState.selectedPayId) {
            showDreamToast('请选择支付方式', 'error');
            return;
        }

        var payload = {
            pay_id: dreamCartState.selectedPayId,
            from: window.localStorage && window.localStorage.getItem('from_id') ? window.localStorage.getItem('from_id') : 0
        };

        if (DREAM_CART_TRADE_VERIFICATION) {
            var captchaInput = document.getElementById('dreamCartCaptchaInput');
            payload.captcha = captchaInput ? String(captchaInput.value || '').trim() : '';
        }

        dreamCartApi('cartCheckout', payload, function (res) {
            var data = res && res.data ? res.data : {};
            updateDreamCartBadgeNodes(0);
            if (data.url) {
                window.location.href = data.url;
                return;
            }
            showDreamToast('结算成功');
            syncDreamCartData({
                force: true,
                message: '正在刷新购物车'
            });
            if (window.layer && Array.isArray(data.orders) && data.orders.length) {
                var lines = data.orders.map(function (item) {
                    return String(item.tradeNo || '') + '    ￥' + formatDreamMoney(item.amount);
                }).join('\n');
                window.layer.open({
                    type: 1,
                    title: '支付成功',
                    area: ['520px', '420px'],
                    content: '<div class="dream-dialog-summary"><p class="dream-dialog-summary__title">共支付 <b class="dream-dialog-summary__value">￥' + formatDreamMoney(data.total_amount) + '</b>，订单数：' + escapeDreamHtml(String(data.count || 0)) + '</p><textarea class="layui-input dream-dialog-summary__textarea">' + escapeDreamHtml(lines) + '</textarea></div>'
                });
            }
        }, function (message) {
            refreshDreamCartCaptcha();
            showDreamToast(message || '结算失败', 'error');
        });
    }

    function bindDreamHeaderInteractions() {
        function syncDreamMobileTabbar() {
            var desktopNav = document.querySelector('.dream-navbar-nav');
            var mobileTabbar = document.querySelector('.dream-mobile-tabbar');
            var footer = document.querySelector('.custom-footer-container');
            var icp = document.querySelector('.content-icp');
            var isMobile = window.matchMedia('(max-width: 991px)').matches;

            if (mobileTabbar && mobileTabbar.parentNode !== document.body) {
                document.body.appendChild(mobileTabbar);
            }

            if (!mobileTabbar) {
                return;
            }

            if (isMobile) {
                if (desktopNav) {
                    desktopNav.style.display = 'none';
                }
                if (footer) {
                    footer.style.display = 'none';
                }
                if (icp) {
                    icp.style.display = 'none';
                }
                mobileTabbar.style.display = 'grid';
                mobileTabbar.style.position = 'fixed';
                mobileTabbar.style.left = '0';
                mobileTabbar.style.right = '0';
                mobileTabbar.style.bottom = '0';
                mobileTabbar.style.zIndex = '3000';
                return;
            }

            if (desktopNav) {
                desktopNav.style.display = '';
            }
            if (footer) {
                footer.style.display = '';
            }
            if (icp) {
                icp.style.display = '';
            }
            mobileTabbar.style.display = 'none';
            mobileTabbar.style.position = '';
            mobileTabbar.style.left = '';
            mobileTabbar.style.right = '';
            mobileTabbar.style.bottom = '';
            mobileTabbar.style.zIndex = '';
        }

        var dreamPrefetchedUrls = {};

        function prefetchDreamUrl(url) {
            var href = String(url || '').trim();
            if (!href || dreamPrefetchedUrls[href]) {
                return;
            }
            if (/^(javascript:|#|mailto:|tel:)/i.test(href)) {
                return;
            }
            try {
                var parsed = new URL(href, window.location.origin);
                if (parsed.origin !== window.location.origin) {
                    return;
                }
                var link = document.createElement('link');
                link.rel = 'prefetch';
                link.href = parsed.href;
                link.as = 'document';
                document.head.appendChild(link);
                dreamPrefetchedUrls[href] = true;
            } catch (_error) {}
        }

        function bindDreamPrefetch(selector) {
            document.querySelectorAll(selector).forEach(function (node) {
                var href = node.getAttribute('href');
                if (!href) {
                    return;
                }
                var triggerPrefetch = function () {
                    prefetchDreamUrl(href);
                };
                node.addEventListener('touchstart', triggerPrefetch, { passive: true });
                node.addEventListener('mouseenter', triggerPrefetch, { passive: true });
                node.addEventListener('focus', triggerPrefetch, { passive: true });
            });
        }

        function bindDreamPressState(selector) {
            document.querySelectorAll(selector).forEach(function (node) {
                var clearState = function () {
                    node.classList.remove('is-pressing');
                };
                node.addEventListener('touchstart', function () {
                    node.classList.add('is-pressing');
                }, { passive: true });
                node.addEventListener('touchend', clearState, { passive: true });
                node.addEventListener('touchcancel', clearState, { passive: true });
                node.addEventListener('pointerdown', function () {
                    node.classList.add('is-pressing');
                });
                node.addEventListener('pointerup', clearState);
                node.addEventListener('pointercancel', clearState);
                node.addEventListener('blur', clearState);
            });
        }

        function centerDreamActiveItem(container) {
            if (!container || !window.matchMedia('(max-width: 991px)').matches) {
                return;
            }
            var activeItem = container.querySelector('.is-active');
            if (!activeItem || typeof container.scrollTo !== 'function') {
                return;
            }
            var containerRect = container.getBoundingClientRect();
            var itemRect = activeItem.getBoundingClientRect();
            var offset = itemRect.left - containerRect.left - (containerRect.width - itemRect.width) / 2;
            container.scrollTo({
                left: Math.max(0, container.scrollLeft + offset),
                behavior: 'smooth'
            });
        }

        syncDreamMobileTabbar();
        window.addEventListener('resize', syncDreamMobileTabbar);
        window.setTimeout(syncDreamMobileTabbar, 1800);
        window.setTimeout(syncDreamMobileTabbar, 3600);
        bindDreamPrefetch('.dream-mobile-tabbar-link, .dream-user-sidebar-link');
        bindDreamPressState('.dream-mobile-tabbar-link, .dream-user-sidebar-link');
        window.requestAnimationFrame(function () {
            centerDreamActiveItem(document.querySelector('.dream-user-sidebar-nav'));
        });

            var searchWrap = document.querySelector('.dream-navbar-search');
        if (searchWrap) {
            var input = searchWrap.querySelector('.search-input');
            var button = searchWrap.querySelector('.search-btn');
            var mobileSearchOverlay = document.getElementById('dreamMobileSearchOverlay');
            var mobileSearchClose = document.getElementById('dreamMobileSearchClose');
            var mobileSearchForm = mobileSearchOverlay ? mobileSearchOverlay.querySelector('#dreamMobileSearchForm') : null;
            var mobileSearchInput = mobileSearchOverlay ? mobileSearchOverlay.querySelector('#dreamMobileSearchInput') : null;
            if (input && button) {
                function isMobileSearchMode() {
                    return window.matchMedia('(max-width: 991px)').matches;
                }

                function executeSearch(keyword) {
                    var value = (keyword || '').trim();
                    input.value = value;
                    if (window.location.pathname === '/' && typeof window.performDreamSearch === 'function') {
                        window.performDreamSearch(value);
                        return;
                    }
                    window.location.href = value === '' ? '/' : '/?search=' + encodeURIComponent(value);
                }

                function closeMobileSearchOverlay() {
                    if (!mobileSearchOverlay) {
                        return;
                    }
                    mobileSearchOverlay.classList.remove('is-open');
                    searchWrap.classList.remove('is-open');
                    document.body.classList.remove('dream-mobile-search-open');
                    mobileSearchOverlay.setAttribute('aria-hidden', 'true');
                    button.setAttribute('aria-expanded', 'false');
                    button.setAttribute('aria-label', '打开搜索');
                }

                function openMobileSearchOverlay() {
                    if (!mobileSearchOverlay) {
                        return;
                    }
                    if (mobileSearchInput) {
                        mobileSearchInput.value = (input.value || '').trim();
                    }
                    mobileSearchOverlay.classList.add('is-open');
                    searchWrap.classList.add('is-open');
                    document.body.classList.add('dream-mobile-search-open');
                    mobileSearchOverlay.setAttribute('aria-hidden', 'false');
                    button.setAttribute('aria-expanded', 'true');
                    button.setAttribute('aria-label', '关闭搜索');
                    if (mobileSearchInput) {
                        window.setTimeout(function () {
                            mobileSearchInput.focus();
                            mobileSearchInput.select();
                        }, 120);
                    }
                }

                function toggleMobileSearchOverlay() {
                    if (!mobileSearchOverlay) {
                        executeSearch((input.value || '').trim());
                        return;
                    }
                    if (mobileSearchOverlay.classList.contains('is-open')) {
                        closeMobileSearchOverlay();
                        return;
                    }
                    openMobileSearchOverlay();
                }

                button.addEventListener('click', function (e) {
                    if (isMobileSearchMode()) {
                        e.preventDefault();
                        toggleMobileSearchOverlay();
                        return;
                    }
                    executeSearch((input.value || '').trim());
                });

                input.addEventListener('keypress', function (e) {
                    if (e.key === 'Enter') {
                        e.preventDefault();
                        executeSearch((input.value || '').trim());
                    }
                });

                if (mobileSearchForm && mobileSearchInput) {
                    mobileSearchForm.addEventListener('submit', function (e) {
                        e.preventDefault();
                        var keyword = (mobileSearchInput.value || '').trim();
                        closeMobileSearchOverlay();
                        executeSearch(keyword);
                    });

                    mobileSearchOverlay.addEventListener('click', function (e) {
                        if (e.target === mobileSearchOverlay) {
                            closeMobileSearchOverlay();
                        }
                    });

                    if (mobileSearchClose) {
                        mobileSearchClose.addEventListener('click', function () {
                            closeMobileSearchOverlay();
                        });
                    }

                    document.addEventListener('keydown', function (e) {
                        if (e.key === 'Escape' && mobileSearchOverlay.classList.contains('is-open')) {
                            closeMobileSearchOverlay();
                        }
                    });

                    window.addEventListener('resize', function () {
                        if (!isMobileSearchMode()) {
                            closeMobileSearchOverlay();
                        }
                    });
                }
            }
        }

        var userMenu = document.querySelector('.dream-navbar-user-menu');
        if (userMenu) {
            var userButton = userMenu.querySelector('.dream-navbar-user');
            if (userButton) {
                userButton.addEventListener('click', function (e) {
                    e.preventDefault();
                    e.stopPropagation();
                    userMenu.classList.toggle('open');
                });
            }
            document.addEventListener('click', function () {
                userMenu.classList.remove('open');
            });
            userMenu.addEventListener('mouseleave', function () {
                userMenu.classList.remove('open');
            });
            userMenu.addEventListener('mouseenter', function () {
                userMenu.classList.add('open');
            });
            userMenu.addEventListener('click', function (e) {
                e.stopPropagation();
            });
        }

        var cartNodes = getDreamCartNodes();
        if (cartNodes.button && cartNodes.popover) {
            cartNodes.button.addEventListener('click', function (e) {
                e.preventDefault();
                e.stopPropagation();
                dreamOpenCart();
            });

            cartNodes.popover.addEventListener('click', function (e) {
                e.stopPropagation();

                var actionNode = e.target.closest('[data-cart-action]');
                if (actionNode) {
                    var action = actionNode.getAttribute('data-cart-action');
                    var cartId = actionNode.getAttribute('data-cart-id') || '';
                    var itemRoot = cartId ? cartNodes.popover.querySelector('[data-cart-id="' + cartId.replace(/"/g, '\\"') + '"]') : null;
                    var input = itemRoot ? itemRoot.querySelector('.dream-cart-popover-qty-input') : null;

                    if (action === 'close') {
                        setDreamCartPopoverOpen(false);
                        return;
                    }
                    if (action === 'toggle-pay-dropdown') {
                        dreamCartState.payMenuOpen = !dreamCartState.payMenuOpen;
                        syncDreamCartPayDropdownUi();
                        return;
                    }
                    if (action === 'remove') {
                        removeDreamCartItem(cartId);
                        return;
                    }
                    if (action === 'clear') {
                        clearDreamCart();
                        return;
                    }
                    if (action === 'checkout') {
                        checkoutDreamCart();
                        return;
                    }
                    if (action === 'captcha-refresh') {
                        refreshDreamCartCaptcha();
                        return;
                    }
                    if (!input) {
                        return;
                    }
                    if (action === 'decrease') {
                        input.value = String(clampDreamCartQuantityValue(parseInt(input.value || 1, 10) - 1, Math.max(0, parseInt(input.getAttribute('max') || '0', 10) || 0)));
                        updateDreamCartItemQuantity(cartId, input.value);
                        return;
                    }
                    if (action === 'increase') {
                        var current = Math.max(1, parseInt(input.value || 1, 10) || 1);
                        var max = Math.max(0, parseInt(input.getAttribute('max') || '0', 10) || 0);
                        var nextValue = clampDreamCartQuantityValue(current + 1, max);
                        if (max > 0 && nextValue === current) {
                            return;
                        }
                        input.value = String(nextValue);
                        updateDreamCartItemQuantity(cartId, input.value);
                    }
                    return;
                }

                var payButton = e.target.closest('[data-pay-id]');
                if (payButton) {
                    dreamCartState.selectedPayId = Number(payButton.getAttribute('data-pay-id') || 0);
                    dreamCartState.payMenuOpen = false;
                    syncDreamCartPayDropdownUi();
                    return;
                }
            });

            cartNodes.popover.addEventListener('change', function (e) {
                var input = e.target.closest('.dream-cart-popover-qty-input');
                if (!input) {
                    return;
                }
                updateDreamCartItemQuantity(input.getAttribute('data-cart-id') || '', clampDreamCartQuantityValue(input.value, Math.max(0, parseInt(input.getAttribute('max') || '0', 10) || 0)));
            });

            document.addEventListener('click', function () {
                setDreamCartPopoverOpen(false);
            });

            document.addEventListener('keydown', function (e) {
                if (e.key === 'Escape') {
                    setDreamCartPopoverOpen(false);
                }
            });
        }
    }

    function refreshDreamCartBadge(count) {
        if (!document.querySelectorAll('.cart-count').length) {
            return;
        }

        if (typeof count === 'number') {
            updateDreamCartBadgeNodes(count);
            return;
        }

        if (!DREAM_CART_LOGIN_REQUIRED) {
            updateDreamCartBadgeNodes(0);
            return;
        }

        syncDreamCartData({
            force: true,
            silent: !dreamCartState.open
        });
    }

    window.dreamToast = showDreamToast;
    window.dreamCopy = copyDreamText;
    window.refreshDreamCartBadge = refreshDreamCartBadge;
    window.dreamOpenCart = dreamOpenCart;
    window.refreshDreamCartView = function () {
        syncDreamCartData({
            force: true,
            silent: !dreamCartState.open
        });
    };

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', function () {
            bindDreamHeaderInteractions();
            refreshDreamCartBadge();
        });
    } else {
        bindDreamHeaderInteractions();
        refreshDreamCartBadge();
    }
})();
</script>

<style>
.dream-home-page .dream-product-badges {
    gap: 3px;
}

.dream-home-page .dream-product-badge {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: 11px;
    line-height: 1.2;
    white-space: nowrap;
}

.dream-home-page .dream-product-badge.stock-ok,
.dream-home-page .dream-product-badge.stock-warn,
.dream-home-page .dream-product-badge.stock-empty {
    color: #335e50;
    background: rgba(51, 94, 80, 0.12);
    box-shadow: inset 0 0 0 1px rgba(51, 94, 80, 0.18);
}

.dream-home-page .dream-product-badge.sold {
    color: #b45309;
    background: rgba(180, 83, 9, 0.12);
    box-shadow: inset 0 0 0 1px rgba(180, 83, 9, 0.18);
}

@media (min-width: 992px) {
    .dream-home-page .dream-product-panel {
        max-width: 100%;
    }

    .dream-home-page .dream-product-grid,
    .dream-home-page.dream-home-grid-view .dream-product-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 8px;
    }

    .dream-home-page .dream-product-card,
    .dream-home-page.dream-home-grid-view .dream-product-card {
        border-radius: 16px;
    }

    .dream-home-page .dream-product-content,
    .dream-home-page.dream-home-grid-view .dream-product-content {
        height: 102px;
        min-height: 102px;
        gap: 6px;
        padding: 10px;
    }

    .dream-home-page .dream-product-name,
    .dream-home-page.dream-home-grid-view .dream-product-name {
        font-size: 12px;
        line-height: 1.35;
    }

    .dream-home-page .dream-product-price,
    .dream-home-page.dream-home-grid-view .dream-product-price {
        font-size: 16px;
    }

    .dream-home-grid-view .dream-product-badges {
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: flex-start;
        gap: 4px;
    }

    .dream-home-grid-view .dream-product-badge {
        padding: 3px 8px;
        font-size: 10px;
        line-height: 1.15;
    }

    .dream-home-grid-view .dream-product-badge.sold {
        margin-left: 0;
    }
}

.dream-product-cover {
    position: relative;
}

.dream-product-recommend-badge {
    position: absolute;
    top: 0;
    right: 0;
    width: 88px;
    height: 88px;
    overflow: hidden;
    z-index: 2;
    pointer-events: none;
}

.dream-product-recommend-badge::before {
    content: "";
    position: absolute;
    top: -2px;
    right: -2px;
    width: 0;
    height: 0;
    border-top: 92px solid rgba(255, 102, 46, 0.98);
    border-left: 92px solid transparent;
}

.dream-product-recommend-badge::after {
    content: "{"code":500,"msg":"Call to undefined function lang()","data":{"file":"/www/wwwroot/haicao666.com/app/View/User/Theme/Dream/Index/Index.php","line":117}}