{"title":"July General Preorder 26 (Coming Soon Pre-selecting)","description":"\u003cbody\u003e\n\n\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\"\u003e\n    \u003ctitle\u003eJuly General Preorder 26 | OrchidMart\u003c\/title\u003e\n    \u003cstyle\u003e\n        * { margin: 0; padding: 0; box-sizing: border-box; }\n        body {\n            font-family: 'Segoe UI', 'Helvetica Neue', system-ui, -apple-system, sans-serif;\n            background: white;\n            color: #1e2b3c;\n            line-height: 1.5;\n            padding: 1.2rem 1rem;\n        }\n        .preorder-container {\n            width: 100%;\n            margin: 0 auto;\n            background: #ffffff;\n            border-radius: 20px;\n            box-shadow: 0 12px 30px rgba(0,0,0,0.06);\n            padding: 1.8rem 1.5rem;\n        }\n        .preorder-header { border-bottom: 2px solid #e9edf4; padding-bottom: 1rem; margin-bottom: 1.2rem; }\n        .preorder-header h1 {\n            font-size: 1.6rem; font-weight: 700; color: #0b2b44;\n            margin-bottom: 0.6rem; display: flex; align-items: center;\n            gap: 0.8rem; flex-wrap: wrap;\n        }\n        .current-status-badge {\n            font-size: 0.85rem; font-weight: 500; background: #e9f0f5;\n            padding: 0.2rem 0.8rem; border-radius: 20px; color: #1e4660;\n            display: inline-flex; align-items: center; gap: 6px;\n        }\n        .current-status-badge span:first-child { font-weight: 600; }\n        .preorder-meta {\n            display: flex; flex-wrap: wrap; gap: 0.8rem 1.5rem;\n            font-size: 0.9rem; color: #2c3e50; background: #f4f7fb;\n            padding: 0.7rem 1rem; border-radius: 12px; align-items: center;\n        }\n        .preorder-meta span { display: flex; align-items: center; gap: 0.3rem; }\n        .alert { border-left: 6px solid; padding: 1rem 1.2rem; border-radius: 12px; margin: 1.2rem 0; font-size: 0.95rem; }\n        .alert-danger { background: #fff5f5; border-color: #c92a2a; color: #8b1a1a; }\n        .alert-danger strong { display: block; font-size: 1.1rem; margin-bottom: 0.3rem; }\n        .compare-table {\n            width: 100%; border-collapse: collapse; margin: 1rem 0;\n            font-size: 0.85rem; background: #fff; border-radius: 14px;\n            overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n        }\n        .compare-table th, .compare-table td { border: 1px solid #e9edf4; padding: 0.7rem 0.6rem; vertical-align: top; }\n        .compare-table th:first-child, .compare-table td:first-child {\n            text-align: center; background-color: #fafcfd; width: 18%; font-weight: 600; color: #2c3e50;\n        }\n        .compare-table td:first-child { font-weight: 600; background: #f8fafc; }\n        .category-header { text-align: center; font-weight: 700; font-size: 1rem; }\n        .standard-bg { background-color: #c0392b; color: white; }\n        .priority-bg { background-color: #e67e73; color: white; }\n        .bulk-bg     { background-color: #f5b0b5; color: white; }\n        .badge-light {\n            background: rgba(255,255,255,0.25); padding: 0.1rem 0.5rem;\n            border-radius: 20px; font-size: 0.7rem; font-weight: 500; margin-left: 0.4rem;\n        }\n        .clickable-header { cursor: pointer; user-select: none; }\n        .clickable-header:hover { background-color: #f0f2f5; }\n        .coming-soon { color: #999; font-style: italic; text-align: center; display: block; }\n        .note-box {\n            background: #f8fafd; border-radius: 12px; padding: 0.8rem 1rem;\n            margin: 1rem 0; font-size: 0.9rem; display: flex;\n            align-items: flex-start; gap: 0.5rem; border: 1px solid #dfe7ef;\n        }\n        .note-box a { color: #1a56a8; font-weight: 600; text-decoration: underline; }\n        .inline-code {\n            background: #eef2f6; padding: 0.15rem 0.5rem; border-radius: 6px;\n            font-weight: 600; font-size: 0.85rem; display: inline-block;\n        }\n        .inline-code a { background: transparent; padding: 0; color: #1a56a8; text-decoration: underline; }\n        .read-more-btn {\n            display: inline-flex; align-items: center; justify-content: center;\n            gap: 8px; background: #c92a2a; color: white; border: none;\n            padding: 8px 20px; font-size: 0.9rem; font-weight: 600;\n            border-radius: 40px; cursor: pointer; margin: 12px 0 6px; transition: background 0.2s;\n        }\n        .read-more-btn:hover { background: #a51d1d; }\n        .toggle-symbol { font-size: 1.1rem; font-weight: bold; }\n        .hidden-content { display: none; }\n        .hidden-content.show { display: block; }\n        \/* Progress tracker *\/\n        .tracker-module {\n            margin: 1.5rem 0 1.2rem 0; background: #ffffff;\n            box-shadow: 0 4px 16px rgba(0,0,0,0.05); padding: 1rem 1rem 1.2rem 1rem;\n            border-radius: 0; border: 1px solid #e9edf4;\n        }\n        .steps-wrapper { overflow-x: auto; padding: 6px 0; }\n        .steps-row { display: flex; align-items: stretch; gap: 6px; min-width: 900px; }\n        .step-card {\n            flex: 1; text-align: center; padding: 8px 4px; border-radius: 16px;\n            background: #f9f9f9; transition: background 0.3s ease;\n            display: flex; flex-direction: column; justify-content: space-between;\n            min-height: 118px; cursor: help; position: relative;\n        }\n        .step-card.active { background: #fff6e0; animation: softBgPulse 2.5s infinite ease-in-out; }\n        .step-icon {\n            width: 52px; height: 52px; background: #e2e8f0; border-radius: 50%;\n            display: flex; align-items: center; justify-content: center;\n            font-size: 26px; margin: 0 auto 8px;\n            box-shadow: 0 2px 6px rgba(0,0,0,0.1); transition: box-shadow 0.2s;\n        }\n        .step-card.active .step-icon { animation: softIconGlow 2.5s infinite ease-in-out; }\n        .grayscale .step-icon { filter: grayscale(1); opacity: 0.6; }\n        .step-name { font-size: 0.72rem; font-weight: 700; margin: 5px 0 3px; word-break: break-word; padding: 0 2px; }\n        .step-est {\n            font-size: 0.62rem; color: #2c5282; background: #e9f0f9;\n            display: inline-block; padding: 2px 6px; border-radius: 20px; white-space: nowrap;\n        }\n        .step-line { width: 20px; height: 3px; background: #ccc; border-radius: 3px; align-self: center; }\n        .step-line.completed { background: #2b9348; }\n        .custom-tooltip {\n            position: fixed; background: #1e293b; color: #f1f5f9;\n            padding: 8px 14px; border-radius: 12px; font-size: 0.8rem; line-height: 1.4;\n            max-width: 260px; width: max-content; min-width: 160px;\n            word-wrap: break-word; white-space: normal; z-index: 1000;\n            box-shadow: 0 8px 20px rgba(0,0,0,0.2); pointer-events: none;\n            transition: opacity 0.15s; font-weight: 400; border: 1px solid #475569;\n        }\n        @keyframes softBgPulse {\n            0%   { background-color: #fff6e0; }\n            50%  { background-color: #ffe6b3; }\n            100% { background-color: #fff6e0; }\n        }\n        @keyframes softIconGlow {\n            0%   { box-shadow: 0 0 0 4px rgba(255,215,0,0.3), 0 0 0 8px rgba(255,215,0,0.1); transform: scale(1); }\n            50%  { box-shadow: 0 0 0 6px rgba(255,200,0,0.5), 0 0 0 12px rgba(255,200,0,0.2); transform: scale(1.02); }\n            100% { box-shadow: 0 0 0 4px rgba(255,215,0,0.3), 0 0 0 8px rgba(255,215,0,0.1); transform: scale(1); }\n        }\n        @media (max-width: 800px) {\n            .step-icon { width: 46px; height: 46px; font-size: 22px; }\n            .step-name { font-size: 0.68rem; }\n            .step-est { font-size: 0.58rem; white-space: normal; }\n            .custom-tooltip { max-width: 220px; font-size: 0.75rem; padding: 6px 12px; }\n        }\n    \u003c\/style\u003e\n\n\n\u003cdiv class=\"preorder-container\"\u003e\n    \u003cdiv class=\"preorder-header\"\u003e\n        \u003ch1\u003e\n            🌱 July General Preorder 26\n            \u003cspan class=\"current-status-badge\" id=\"currentStatusBadge\"\u003e\n                \u003cspan\u003e✨ Current status:\u003c\/span\u003e \u003cspan id=\"currentStatusText\"\u003ePre-selecting\u003c\/span\u003e\n            \u003c\/span\u003e\n        \u003c\/h1\u003e\n        \u003cdiv class=\"preorder-meta\"\u003e\n            \u003cspan\u003e🛒 \u003cstrong\u003ePreorder Sale:\u003c\/strong\u003e July 1–30, 2026 \u003cem\u003e(Orders collected first, then import)\u003c\/em\u003e\u003c\/span\u003e\n            \u003cspan\u003e📦 \u003cstrong\u003eExpected Arrival:\u003c\/strong\u003e End of August – first week of September\u003c\/span\u003e\n            \u003cspan\u003e📍 \u003cstrong\u003ePlace of Import:\u003c\/strong\u003e Thailand\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"tracker-module\"\u003e\n        \u003cdiv class=\"steps-wrapper\"\u003e\n            \u003cdiv class=\"steps-row\" id=\"stepsRow\"\u003e\u003c\/div\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"alert alert-danger\" style=\"text-align: center;\"\u003e\n        \u003cstrong\u003e⚠️ PREORDER ITEMS ARE NOT IN STOCK.\u003c\/strong\u003e All preorder plants are ordered specifically for you and require a significant waiting period before they ship.\n    \u003c\/div\u003e\n\n    \u003cdiv style=\"text-align: center;\"\u003e\n        \u003cbutton class=\"read-more-btn\" id=\"mainReadMoreBtn\"\u003e\n            \u003cspan\u003e📖 Please read our instructions before making a purchase.\u003c\/span\u003e\n            \u003cspan class=\"toggle-symbol\" id=\"mainToggleSymbol\"\u003e+\u003c\/span\u003e\n        \u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv id=\"mainPreorderContent\" class=\"hidden-content\"\u003e\n        \u003ch2\u003e📊 Preorder Options\u003c\/h2\u003e\n        \u003ctable class=\"compare-table\" id=\"preorderCompareTable\"\u003e\n            \u003cthead class=\"clickable-header\" id=\"tableHeaderPre\"\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e📋 Read more\u003c\/th\u003e\n                    \u003cth class=\"category-header standard-bg\"\u003e🌱 Standard Preorder \u003cspan class=\"badge-light\"\u003eBare-Root Challenge\u003c\/span\u003e\n\u003c\/th\u003e\n                    \u003cth class=\"category-header priority-bg\"\u003e⚡ Priority Preorder \u003cspan class=\"badge-light\"\u003eNot yet open\u003c\/span\u003e\n\u003c\/th\u003e\n                    \u003cth class=\"category-header bulk-bg\"\u003e👥 Bulk \/ Group Preorder \u003cspan class=\"badge-light\"\u003eNot yet open\u003c\/span\u003e\n\u003c\/th\u003e\n                \u003c\/tr\u003e\n            \u003c\/thead\u003e\n            \u003ctbody id=\"tableBodyPre\" style=\"display: none;\"\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e💰 Price \u0026amp; Grade\u003c\/th\u003e\n                    \u003ctd\u003e\n                        \u003cstrong\u003e25% off regular price\u003c\/strong\u003e\u003cbr\u003e\n                        🔴 \u003cstrong\u003eGrade C – Bare-Root Import\u003c\/strong\u003e\n                    \u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e👤 Suitable For\u003c\/th\u003e\n                    \u003ctd\u003e\n                        \u003cstrong\u003eAdvanced Growers\u003c\/strong\u003e\u003cbr\u003e\n                        • Experts who understand the proper care and treatment of bare-root orchids\u003cbr\u003e\n                        (These are imported orchids typically intended for nurseries to establish and cultivate before resale — you are buying at the same stage the pros do!)\u003cbr\u003e\n                        • Collectors exploring unusual and exciting finds.\u003cbr\u003e\n                        \u003cem\u003eNot suitable for:\u003c\/em\u003e Beginners new to growing (though you are welcome to try, with the understanding that extra care is required); gifts or direct retail resale.\n                    \u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e⏳ Waiting Time\u003c\/th\u003e\n                    \u003ctd\u003e30–45 days after the preorder period ends (subject to unforeseen delays)\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e🌿 Plant Condition\u003c\/th\u003e\n                    \u003ctd\u003eSold as-is upon arrival. Common bare-root issues may be present. Exact quality and size are not guaranteed — we provide estimates based on supplier information. Expect 10–20% imperfections (e.g. leaf damage, dehydration).\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e✨ Benefits\u003c\/th\u003e\n                    \u003ctd\u003e\n                        • Be part of our import process!\u003cbr\u003e\n                        • Enjoy the lowest prices through our group import discount.\u003cbr\u003e\n                        • We share the risk — but also the reward if plants arrive with more growths, more maturity, or in exceptional condition, at no extra cost.\u003cbr\u003e\n                        • First selection — we pick the best plants to ship first.\u003cbr\u003e\n                        • Guaranteed allocation — your order is secured with no need to rush.\u003cbr\u003e\n                        • Early access to rare finds that often sell out or fall outside standard supply lists.\u003cbr\u003e\n                        \u003cem\u003eNote:\u003c\/em\u003e Should a shipment arrive entirely damaged or a supplier cancel, we will provide a full refund or offer a substitute.\n                    \u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e🛡️ Core Guarantee\u003c\/th\u003e\n                    \u003ctd\u003e\n                        • Live arrival — arrives alive or free replacement\u003cbr\u003e\n                        • First-aid guidance — we walk you through early care\u003cbr\u003e\n                        • Quality check — we may cancel and fully refund if plants arrive damaged or not as described\u003cbr\u003e\n                        • Cancel anytime before arrival for a full refund\n                    \u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n                \u003ctr\u003e\n                    \u003cth\u003e🎁 Value-Added Service\u003c\/th\u003e\n                    \u003ctd\u003e\n                        • First-aid treatment pack\u003cbr\u003e\n                        • Bare-Root Growing Guide\u003cbr\u003e\n                        • Customer support\n                    \u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                    \u003ctd\u003e\u003cspan class=\"coming-soon\"\u003eComing soon\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n            \u003c\/tbody\u003e\n        \u003c\/table\u003e\n\n        \u003chr\u003e\n\n        \u003cdiv class=\"note-box\"\u003e\n            \u003cspan style=\"font-size: 1.2rem;\"\u003e📌\u003c\/span\u003e\n            \u003cspan\u003e\u003cstrong\u003ePreorder items have their own processing and shipping timeline\u003c\/strong\u003e, entirely separate from in-stock items. For estimated arrival dates, always check our \u003cspan class=\"inline-code\"\u003e\u003ca href=\"https:\/\/orchidmart.ca\/pages\/preorder-status-tracking\" rel=\"noopener noreferrer\" target=\"_blank\"\u003ePreorder Status Tracking\u003c\/a\u003e\u003c\/span\u003e.\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"note-box\"\u003e\n            \u003cspan style=\"font-size: 1.2rem;\"\u003e📌\u003c\/span\u003e\n            \u003cspan\u003eNew to preordering? Please read \u003ca href=\"https:\/\/orchidmart.ca\/pages\/about-our-preorder\" rel=\"noopener noreferrer\" target=\"_blank\"\u003eAbout Our Preorder\u003c\/a\u003e and, if you are a first-time buyer or beginner, read our \u003ca href=\"https:\/\/orchidmart.ca\/pages\/first-time-order\" rel=\"noopener noreferrer\" target=\"_blank\"\u003eInstructions\u003c\/a\u003e before placing an order.\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"note-box\"\u003e\n            \u003cspan style=\"font-size: 1.2rem;\"\u003e⚠️\u003c\/span\u003e\n            \u003cspan\u003eWe recommend not mixing preorder items with in-stock items, as preorders generally take longer to process. During this time, in-stock items may no longer be in their originally described condition. If you choose to place a mixed-item order, we will hold the shipment and dispatch everything only after the last item has arrived.\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"note-box\"\u003e\n            \u003cspan style=\"font-size: 1.2rem;\"\u003e📦\u003c\/span\u003e\n            \u003cspan\u003e\u003cstrong\u003eCombined shipment:\u003c\/strong\u003e If you need to add items to an existing order (up to 3 items), please contact us with your order number and we will adjust it manually. For more than 3 items, please place a new order with shipping — we will combine all available items and refund any shipping overage.\u003c\/span\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"height: 50px; clear: both;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\n\u003cscript\u003e\n    const steps = [\n        { name: \"Pre-selecting\",         emoji: \"🔍\", est: \"Est. 7–10d\",  color: \"#E0F2FE\" },\n        { name: \"Preorder Ongoing\",      emoji: \"📋\", est: \"Est. 30d\",    color: \"#DCFCE7\" },\n        { name: \"Preparing Import\",      emoji: \"📦\", est: \"Est. 3–5d\",   color: \"#FEF9C3\" },\n        { name: \"Intl. Order Submitted\", emoji: \"🌍\", est: \"Est. 7–14d\",  color: \"#FFE4E6\" },\n        { name: \"Waiting Permit\",        emoji: \"📑\", est: \"Est. 20–30d\", color: \"#E0E7FF\" },\n        { name: \"Flight Booked\",         emoji: \"🛫\", est: \"Est. 3–5d\",   color: \"#D1FAE5\" },\n        { name: \"Arrived\",               emoji: \"📍\", est: \"Est. 3–5d\",   color: \"#FFEDD5\" },\n        { name: \"Ready for Pickup\",      emoji: \"🚚\", est: \"Est. 3–5d\",   color: \"#E9D8FD\" }\n    ];\n\n    let activeIndex = 0;\n\n    function getTooltipText(stepName) {\n        if (stepName === \"Waiting Permit\") {\n            return \"We begin working on export documents from the day we start preparing the import. Some CITES permits may take longer. We will account for any special cases as needed.\";\n        }\n        return stepName;\n    }\n\n    const container = document.getElementById(\"stepsRow\");\n    const currentStatusSpan = document.getElementById(\"currentStatusText\");\n    let tooltipEl = null;\n\n    function ensureTooltipElement() {\n        if (!tooltipEl) {\n            tooltipEl = document.createElement('div');\n            tooltipEl.className = 'custom-tooltip';\n            tooltipEl.style.opacity = '0';\n            tooltipEl.style.transition = 'opacity 0.15s';\n            document.body.appendChild(tooltipEl);\n        }\n        return tooltipEl;\n    }\n\n    function positionTooltip(event) {\n        if (!tooltipEl) return;\n        let left = event.clientX + 15;\n        let top  = event.clientY + 15;\n        const rect = tooltipEl.getBoundingClientRect();\n        if (left + rect.width  \u003e window.innerWidth  - 10) left = event.clientX - rect.width  - 10;\n        if (top  + rect.height \u003e window.innerHeight - 10) top  = event.clientY - rect.height - 10;\n        tooltipEl.style.left = left + 'px';\n        tooltipEl.style.top  = top  + 'px';\n    }\n\n    function showTooltip(event, text) {\n        const tooltip = ensureTooltipElement();\n        tooltip.innerText = text;\n        tooltip.style.opacity = '1';\n        positionTooltip(event);\n    }\n\n    function hideTooltip() {\n        if (tooltipEl) tooltipEl.style.opacity = '0';\n    }\n\n    function renderProgress() {\n        if (!container) return;\n        container.innerHTML = \"\";\n        for (let i = 0; i \u003c steps.length; i++) {\n            const s = steps[i];\n            const isCompleted = i \u003c= activeIndex;\n            const isActive    = i === activeIndex;\n\n            const stepDiv = document.createElement(\"div\");\n            stepDiv.className = \"step-card\";\n            if (isActive)     stepDiv.classList.add(\"active\");\n            if (!isCompleted) stepDiv.classList.add(\"grayscale\");\n\n            const tipText = getTooltipText(s.name);\n            stepDiv.addEventListener('mouseenter', (e) =\u003e showTooltip(e, tipText));\n            stepDiv.addEventListener('mousemove',  (e) =\u003e { if (tooltipEl \u0026\u0026 tooltipEl.style.opacity === '1') positionTooltip(e); });\n            stepDiv.addEventListener('mouseleave', hideTooltip);\n\n            const iconDiv = document.createElement(\"div\");\n            iconDiv.className = \"step-icon\";\n            iconDiv.style.backgroundColor = s.color;\n            iconDiv.innerText = s.emoji;\n\n            const nameDiv = document.createElement(\"div\");\n            nameDiv.className = \"step-name\";\n            nameDiv.innerText = s.name;\n\n            const estDiv = document.createElement(\"div\");\n            estDiv.className = \"step-est\";\n            estDiv.innerText = s.est;\n\n            stepDiv.appendChild(iconDiv);\n            stepDiv.appendChild(nameDiv);\n            stepDiv.appendChild(estDiv);\n            container.appendChild(stepDiv);\n\n            if (i \u003c steps.length - 1) {\n                const line = document.createElement(\"div\");\n                line.className = \"step-line\";\n                if (i \u003c activeIndex) line.classList.add(\"completed\");\n                container.appendChild(line);\n            }\n        }\n        if (currentStatusSpan) currentStatusSpan.innerText = steps[activeIndex].name;\n    }\n\n    renderProgress();\n\n    (function () {\n        const readMoreBtn  = document.getElementById('mainReadMoreBtn');\n        const toggleSymbol = document.getElementById('mainToggleSymbol');\n        const contentDiv   = document.getElementById('mainPreorderContent');\n        const tableHeader  = document.getElementById('tableHeaderPre');\n        const tableBody    = document.getElementById('tableBodyPre');\n\n        if (readMoreBtn \u0026\u0026 contentDiv) {\n            readMoreBtn.addEventListener('click', function () {\n                const isShown = contentDiv.classList.contains('show');\n                contentDiv.classList.toggle('show');\n                if (toggleSymbol) toggleSymbol.innerText = isShown ? '+' : '−';\n            });\n        }\n        if (tableHeader \u0026\u0026 tableBody) {\n            tableHeader.addEventListener('click', function () {\n                tableBody.style.display =\n                    (tableBody.style.display === 'none' || tableBody.style.display === '')\n                        ? 'table-row-group' : 'none';\n            });\n        }\n    })();\n\u003c\/script\u003e\n\n\u003c\/body\u003e","products":[{"product_id":"dendrophylax-lindenii-鬼兰","title":"[Bare-root][Import AS-IS] Dendrophylax lindenii 鬼蘭 [2.4 BS][July Preorder]","description":"\u003cp\u003e\u003cmeta charset=\"UTF-8\"\u003e \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n    \/* 保持原有的商店卡片設計 *\/\n    .product-card {\n        background: white;\n        border-radius: 28px;\n        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05);\n        padding: 1.8rem;\n        margin: 1rem 0;\n        font-family: system-ui, -apple-system, 'Segoe UI', 'Roboto', 'Helvetica Neue', sans-serif;\n        color: #1e2a2e;\n        line-height: 1.5;\n    }\n    \n    \/* 純單欄直向佈局 *\/\n    .spec-list {\n        background: #f8faf6;\n        border-radius: 24px;\n        padding: 1.2rem 1.5rem;\n        margin: 1rem 0 1.2rem 0;\n        display: flex;\n        flex-direction: column;\n        gap: 0.75rem;\n    }\n    \n    .spec-item {\n        display: flex;\n        flex-direction: column;\n        gap: 0.25rem;\n    }\n    \n    .spec-label {\n        font-weight: 700;\n        color: #2b5e3c;\n    }\n    \n    .spec-value {\n        color: #1e2a2e;\n        line-height: 1.6; \/* 確保文字換行時有舒適且正確的間距 *\/\n    }\n\n    \/* 修正後的等級區塊樣式：確保內容垂直排列，絕不重疊 *\/\n    .grade-detail-block {\n        display: block;\n        width: 100%;\n        margin-bottom: 0.75rem;\n        line-height: 1.6;\n    }\n\n    \/* 如果有用到紅點標籤，確保它是行內區塊且有正確的右側間距 *\/\n    .grade-detail-block span {\n        display: inline-block;\n        margin-right: 0.25rem;\n    }\n\n    @media (max-width: 550px) {\n        .product-card {\n            padding: 1.2rem;\n        }\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"product-card\"\u003e\n\u003cdiv class=\"spec-list\"\u003e\n\u003c!-- Type --\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-label\"\u003eType\u003c\/div\u003e\n\u003cdiv class=\"spec-value\"\u003eSpecies\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Fragrant --\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-label\"\u003eFragrant\u003c\/div\u003e\n\u003cdiv class=\"spec-value\"\u003eYes, fragrant at night and have a fruity, apple-like scent\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Plant Size --\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-label\"\u003ePlant Size\u003c\/div\u003e\n\u003cdiv class=\"spec-value\"\u003e2.5\" Mount on Board \/ 1 Growth \/ \u003cstrong\u003e Est. Blooming Size\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Grade C Section (已清除會造成重疊的錯誤空標籤與無效 class) --\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-value\"\u003e\n\u003cdiv class=\"grade-detail-block\"\u003e\n\u003cspan\u003e🔴\u003c\/span\u003e\u003cstrong\u003eGrade C – Bare‑Root Import (25% off)\u003c\/strong\u003e\u003cbr\u003e\u003cspan\u003eBare-rooted plants are imported without pots or growing medium and may experience post-import or travel-related stress, may lose its roots and bottom leaves. Recommended for experienced growers familiar with the care of bare-rooted orchids.\u003c\/span\u003e \u003ca href=\"https:\/\/orchidmart.ca\" rel=\"noopener noreferrer\" target=\"_blank\"\u003eLearn more →\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"grade-detail-block\"\u003e\n\u003cspan\u003e🔴\u003c\/span\u003e\u003cstrong\u003eBare-rooted  Dendrophylax \u003c\/strong\u003e\u003cbr\u003e\u003cspan\u003eMay expect some roots received dry. This is not a perfect specimen. \u003c\/span\u003e\u003cstrong\u003e\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Peloric Phalaenopsis Section --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Orchidmart","offers":[{"title":"Default Title","offer_id":42479773941804,"sku":null,"price":118.5,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0362\/1948\/6252\/files\/F60.jpg?v=1706101751"},{"product_id":"bare-rootimport-as-is-cattleya-jongheana-1-7-nbsjuly-preorder","title":"[Bare-root][Import AS-IS] Cattleya jongheana [1.7\" NBS][July Preorder]","description":"\u003cp\u003e\u003cmeta charset=\"UTF-8\"\u003e \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n        \/* Same styling as before – consistent with your store *\/\n        .product-card {\n            background: white;\n            border-radius: 28px;\n            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05);\n            padding: 1.8rem;\n            margin: 1rem 0;\n            font-family: system-ui, -apple-system, 'Segoe UI', 'Roboto', 'Helvetica Neue', sans-serif;\n            color: #1e2a2e;\n            line-height: 1.5;\n        }\n        .product-card h2 {\n            font-size: 1.7rem;\n            font-weight: 600;\n            margin-top: 0;\n            margin-bottom: 0.5rem;\n            color: #1f4f3b;\n            border-left: 4px solid #2b7a4b;\n            padding-left: 1rem;\n        }\n        .badge-group {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 0.6rem;\n            margin: 1rem 0 1.2rem 0;\n        }\n        .badge-warning {\n            background: #fff0db;\n            color: #b45f06;\n            padding: 0.3rem 0.9rem;\n            border-radius: 40px;\n            font-size: 0.8rem;\n            font-weight: 600;\n            display: inline-flex;\n            align-items: center;\n            gap: 0.3rem;\n            border: 1px solid #ffe0b5;\n        }\n        \/* 改为纯一列布局 *\/\n        .spec-list {\n            background: #f8faf6;\n            border-radius: 24px;\n            padding: 1.2rem 1.5rem;\n            margin: 1rem 0 1.2rem 0;\n            display: flex;\n            flex-direction: column;\n            gap: 0.75rem;\n        }\n        \/* 每个条目独立一行，标签和值上下排列（一列效果） *\/\n        .spec-item {\n            display: flex;\n            flex-direction: column;\n            gap: 0.25rem;\n        }\n        .spec-label {\n            font-weight: 700;\n            color: #2b5e3c;\n        }\n        .spec-value {\n            color: #1e2a2e;\n        }\n        .grade-highlight {\n            background: #f1f3ea;\n            border-radius: 20px;\n            padding: 1rem 1.4rem;\n            margin: 1.2rem 0;\n        }\n        .warning-box {\n            background: #fef3e2;\n            border-left: 5px solid #e6b12e;\n            border-radius: 20px;\n            padding: 1rem 1.4rem;\n            margin: 1.5rem 0;\n        }\n        .full-details-link {\n            margin-top: 1.5rem;\n            text-align: center;\n            padding-top: 1rem;\n            border-top: 1px solid #e2e8e0;\n        }\n        .btn-link {\n            display: inline-block;\n            background: #eef2ec;\n            color: #2b5e3c;\n            text-decoration: none;\n            padding: 0.6rem 1.2rem;\n            border-radius: 40px;\n            font-weight: 500;\n            font-size: 0.9rem;\n            transition: background 0.2s;\n        }\n        .btn-link:hover {\n            background: #e0e8dc;\n        }\n        hr {\n            margin: 1rem 0;\n            border: none;\n            border-top: 1px solid #e2e8e0;\n        }\n        .small-note {\n            font-size: 0.85rem;\n            color: #6a7a6f;\n            margin-top: 1rem;\n        }\n        @media (max-width: 550px) {\n            .product-card {\n                padding: 1.2rem;\n            }\n        }\n    \u003c\/style\u003e\n\u003cdiv class=\"product-card\"\u003e\n\u003c!-- ================= PRODUCT-SPECIFIC SECTION ================= --\u003e \u003c!-- 内容改为一列：每个 .spec-item 内，标签在上，值在下 --\u003e\n\u003cdiv class=\"spec-list\"\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-label\"\u003eType\u003c\/div\u003e\n\u003cdiv class=\"spec-value\"\u003eSpecies \/ Division \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-label\"\u003eFragrant\u003c\/div\u003e\n\u003cdiv class=\"spec-value\"\u003eYes\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-label\"\u003ePlant Size\u003c\/div\u003e\n\u003cdiv class=\"spec-value\"\u003e1.7\" Pot \/ 2-3 Growths \/ \u003cstrong\u003e⚠️ Est. Near Blooming Size\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-label\"\u003eGrade\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-item\"\u003e\n\u003cdiv class=\"spec-value\"\u003e\n\u003cdiv class=\"spec-value\"\u003e\n\u003cspan class=\"grade-dot dot-fresh\"\u003e\u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- =========== END PRODUCT-SPECIFIC SECTION =========== --\u003e\n\u003c\/div\u003e","brand":"Orchidmart","offers":[{"title":"Default Title","offer_id":45706570268716,"sku":null,"price":51.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0362\/1948\/6252\/files\/61905.jpg?v=1782380660"}],"url":"https:\/\/orchidmart.ca\/collections\/july-general-preorder-26.oembed","provider":"Orchidmart","version":"1.0","type":"link"}