{"id":43766,"date":"2026-05-13T23:57:10","date_gmt":"2026-05-13T13:57:10","guid":{"rendered":"https:\/\/staging.ebaoguo.com\/shipping-calculator-en\/"},"modified":"2026-05-18T07:19:28","modified_gmt":"2026-05-18T05:19:28","slug":"shipping-calculator-en","status":"publish","type":"page","link":"https:\/\/ebaoguo.com\/en\/shipping-calculator-en\/","title":{"rendered":"International Shipping Calculator"},"content":{"rendered":"\n<section style=\"background:linear-gradient(135deg,#0f172a 0%,#1e3a5f 60%,#116ebf 100%);padding:48px 24px 40px;text-align:center;color:#fff\">\n<p style=\"font-size:13px;font-weight:700;letter-spacing:2px;color:#93c5fd;text-transform:uppercase;margin:0 0 10px\">Ebaoguo &#8211; Ship from 8 Global Warehouses<\/p>\n<h2 style=\"font-size:34px;font-weight:800;margin:0 0 12px;line-height:1.2\">International Shipping Rate Calculator<\/h2>\n<p style=\"font-size:16px;color:#cbd5e1;max-width:600px;margin:0 auto 6px\">Pick origin warehouse and destination country, enter weight and package type &#8211; get instant multi-carrier quotes with full cost breakdown. No hidden fees.<\/p>\n<p style=\"font-size:13px;color:#64748b;margin:0\">Live quotes from api.ebaoguo.com &#8211; No hidden charges<\/p>\n<\/section>\n\n\n<div class=\"ecv2-root\" data-rest=\"https:\/\/ebaoguo.com\/en\/wp-json\/ebg\/v1\/calc\" data-lang=\"en\"><\/div><style>\n.ecv2-root{font-family:'Plus Jakarta Sans','Noto Sans SC',-apple-system,BlinkMacSystemFont,'Helvetica Neue',sans-serif;max-width:1000px;margin:clamp(-18px,-2vw,-14px) auto 0;padding:0 clamp(14px,3vw,40px) 60px;}\n.ecv2-card{background:#fff;border-radius:22px;box-shadow:0 20px 60px rgba(16,50,61,.10);padding:clamp(24px,4vw,44px);position:relative;}\n.ecv2-hdr{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px;margin-bottom:28px;}\n.ecv2-title{font-size:clamp(20px,2.8vw,28px);font-weight:800;letter-spacing:-.01em;margin:0;color:#102a3f;}\n.ecv2-langbtn{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:#48606b;border:1px solid #e3eaed;border-radius:999px;padding:7px 13px;cursor:pointer;background:#fff;font-family:inherit;user-select:none;flex:none;}\n.ecv2-langbtn:hover{background:#f5f9fb;}\n.ecv2-step-lbl{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:18px;margin-bottom:14px;color:#102a3f;}\n.ecv2-step-num{width:24px;height:24px;border-radius:7px;background:#ffe8da;color:#e85500;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex:none;}\n.ecv2-step-desc{font-size:13.5px;line-height:1.6;color:#6b7a86;margin:0 0 18px;max-width:760px;}\n.ecv2-wh-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:30px;}\n.ecv2-wh-grp{background:#f8fafb;border:1px solid #eef2f5;border-radius:14px;padding:13px 13px 8px;}\n.ecv2-wh-grp-hdr{display:flex;align-items:center;gap:9px;margin-bottom:10px;padding:0 2px;}\n.ecv2-wh-flag{font-size:21px;line-height:1;}\n.ecv2-wh-cname{font-weight:800;font-size:14.5px;color:#102a3f;}\n.ecv2-wh-items{display:flex;flex-direction:column;gap:8px;}\n.ecv2-wh-item{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:11px;padding:11px 13px;border:1px solid #e8eef0;background:#fff;transition:border-color .14s,background .14s;}\n.ecv2-wh-item:hover{border-color:#f2651b;background:#fff8f5;}\n.ecv2-wh-item.sel{background:linear-gradient(135deg,#fff3ec,#ffe7d8);border:1.5px solid #f2651b;}\n.ecv2-wh-name{font-weight:700;font-size:13.5px;color:#102a3f;line-height:1.3;}\n.ecv2-wh-addr{font-size:11.5px;color:#8a98a0;margin-top:1px;}\n.ecv2-wh-check{color:#f2651b;font-weight:800;font-size:14px;display:none;flex:none;}\n.ecv2-wh-item.sel .ecv2-wh-check{display:block;}\n.ecv2-sep{height:1px;background:#eef2f5;margin:0 0 26px;}\n.ecv2-row2{display:grid;grid-template-columns:1.5fr 1fr;gap:12px;margin-bottom:30px;max-width:600px;}\n@media(max-width:480px){.ecv2-row2{grid-template-columns:1fr;}}\n.ecv2-field{display:flex;flex-direction:column;gap:6px;}\n.ecv2-flbl{font-size:12.5px;color:#6b7a86;font-weight:600;}\n.ecv2-sw{position:relative;}\n.ecv2-sw::after{content:'\u25be';position:absolute;right:14px;top:50%;transform:translateY(-50%);color:#9fb0bc;pointer-events:none;font-size:13px;}\n.ecv2-sel,.ecv2-inp{width:100%;border:1.5px solid #e3eaed;border-radius:12px;padding:13px 15px;font-size:15px;color:#102a3f;background:#f8fafb;font-family:inherit;box-sizing:border-box;outline:none;appearance:none;-webkit-appearance:none;}\n.ecv2-sel{padding-right:36px;}\n.ecv2-sel:focus,.ecv2-inp:focus{border-color:#f2651b;}\n.ecv2-decl-wrap{display:flex;align-items:stretch;max-width:320px;margin-bottom:30px;border:1.5px solid #e3eaed;border-radius:12px;overflow:hidden;background:#f8fafb;}\n.ecv2-cur{display:flex;align-items:center;padding:0 14px;background:#f1f5f6;color:#48606b;font-weight:700;font-size:14px;border-right:1px solid #e3eaed;white-space:nowrap;}\n.ecv2-decl-inp{flex:1;border:none;padding:13px 15px;font-size:15px;color:#102a3f;background:transparent;outline:none;font-family:inherit;}\n.ecv2-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}\n.ecv2-chip{cursor:pointer;font-size:12.5px;font-weight:600;color:#48606b;background:#f3f7f8;border:1px solid #e3eaed;border-radius:999px;padding:8px 14px;white-space:nowrap;font-family:inherit;}\n.ecv2-chip:hover{background:#ffe8da;border-color:#f2651b;color:#e85500;}\n.ecv2-pkgs{display:flex;flex-direction:column;gap:12px;margin-bottom:12px;}\n.ecv2-pkg{background:#f8fafb;border:1px solid #e8eef0;border-radius:14px;padding:14px;}\n.ecv2-pkg-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}\n.ecv2-pkg-no{font-weight:800;font-size:14px;color:#0a8f9e;}\n.ecv2-pkg-btns{display:flex;gap:8px;}\n.ecv2-btn-copy{cursor:pointer;font-size:12px;font-weight:700;color:#e85500;border:1px solid #f7cdb0;background:#fff3ec;padding:5px 12px;border-radius:8px;font-family:inherit;}\n.ecv2-btn-del{cursor:pointer;font-size:12px;font-weight:700;color:#d6455d;border:1px solid #f3ccd4;background:#fdeef1;padding:5px 12px;border-radius:8px;font-family:inherit;}\n.ecv2-btn-del:disabled{color:#c2ccd1;border-color:#eef2f5;background:#f6f8f9;cursor:not-allowed;}\n.ecv2-pkg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px;}\n.ecv2-pkg-field{display:flex;flex-direction:column;gap:5px;}\n.ecv2-plbl{font-size:11px;color:#8a98a0;}\n.ecv2-pinp{width:100%;border:1.5px solid #e3eaed;border-radius:9px;padding:10px;font-size:14px;background:#fff;color:#102a3f;font-family:inherit;box-sizing:border-box;outline:none;}\n.ecv2-pinp:focus{border-color:#f2651b;}\n.ecv2-psel-w{position:relative;}\n.ecv2-psel-w::after{content:'\u25be';position:absolute;right:8px;top:50%;transform:translateY(-50%);color:#9fb0bc;pointer-events:none;font-size:11px;}\n.ecv2-psel{width:100%;border:1.5px solid #e3eaed;border-radius:9px;padding:10px 24px 10px 10px;font-size:13.5px;background:#fff;color:#102a3f;font-family:inherit;box-sizing:border-box;outline:none;appearance:none;-webkit-appearance:none;}\n.ecv2-psel:focus{border-color:#f2651b;}\n.ecv2-add-pkg{cursor:pointer;display:inline-block;margin-top:2px;font-size:13.5px;font-weight:700;color:#e85500;border:1.5px dashed #f7cdb0;background:#fff3ec;padding:11px 18px;border-radius:11px;font-family:inherit;}\n.ecv2-add-pkg:hover{background:#ffe0cc;}\n.ecv2-sub-wrap{text-align:center;margin-top:28px;}\n.ecv2-sub-btn{cursor:pointer;font-weight:800;font-size:16px;padding:15px 52px;border-radius:12px;border:none;font-family:inherit;transition:opacity .15s;}\n.ecv2-sub-btn.rdy{background:linear-gradient(135deg,#ff7a33,#f2651b);color:#fff;box-shadow:0 12px 26px rgba(242,101,27,.34);}\n.ecv2-sub-btn.off{background:#e8edef;color:#a9b6bc;cursor:not-allowed;}\n.ecv2-warn{font-size:12px;color:#b1306f;background:#fdecf3;border:1px solid #f7cfe0;border-radius:11px;padding:12px 16px;margin-top:22px;line-height:1.55;text-align:left;}\n.ecv2-status{padding:12px 16px;border-radius:10px;margin-top:14px;font-size:14px;display:none;}\n.ecv2-status.err{background:#fdeef1;color:#c0392b;display:block;}\n.ecv2-status.inf{background:#e8f4fd;color:#0a8f9e;display:block;}\n.ecv2-results{margin-top:34px;padding-top:28px;border-top:1px solid #eef2f5;}\n.ecv2-res-hdr{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:18px;}\n.ecv2-res-title{font-weight:800;font-size:19px;color:#102a3f;}\n.ecv2-rc{background:#fff;border:1px solid #e8eef0;border-radius:16px;overflow:hidden;box-shadow:0 10px 28px rgba(16,50,61,.05);margin-bottom:14px;}\n.ecv2-rc.rec{border-color:#f7b98a;}\n.ecv2-rc.chp{border-color:#bfe2e8;}\n.ecv2-rc-head{background:#f5fbfc;border-bottom:1px solid #e6eff1;padding:14px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}\n.ecv2-rc-info{display:flex;align-items:center;gap:11px;}\n.ecv2-rc-icon{font-size:22px;line-height:1;}\n.ecv2-rc-name{font-weight:800;font-size:16.5px;color:#102a3f;}\n.ecv2-badge{font-size:11px;font-weight:800;padding:3px 10px;border-radius:7px;}\n.ecv2-badge.rec{color:#fff;background:linear-gradient(135deg,#ff7a33,#f2651b);}\n.ecv2-badge.chp{color:#0a8f9e;background:#dff1f4;border:1px solid #b9e2e8;}\n.ecv2-rc-total{text-align:right;}\n.ecv2-rc-total-lbl{font-size:12px;color:#9aa8b0;}\n.ecv2-rc-total-num{font-weight:800;font-size:22px;color:#102a3f;line-height:1.1;}\n.ecv2-rc-body{padding:16px 20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px 22px;font-size:13px;}\n.ecv2-rc-field-lbl{color:#9aa8b0;margin-bottom:3px;}\n.ecv2-rc-field-val{font-weight:700;color:#102a3f;}\n.ecv2-rc-field-val.ddp{color:#0a8f9e;}\n.ecv2-rc-field-val.ddu{color:#e85500;}\n.ecv2-rc-foot{background:#fafcfc;border-top:1px solid #eef3f4;padding:12px 20px;display:flex;gap:20px;flex-wrap:wrap;font-size:12.5px;color:#6b7a86;}\n.ecv2-rc-foot b{color:#102a3f;}\n.ecv2-cw{color:#e85500;font-weight:700;}\n.ecv2-rc-bd{border-top:1px solid #eef3f4;padding:12px 20px;}\n.ecv2-bd-row{display:flex;justify-content:space-between;padding:3px 0;font-size:13px;color:#4a5a68;}\n.ecv2-disc{font-size:12px;color:#9aa8b0;text-align:center;margin-top:18px;}\n<\/style>\n<script>\n(function(){\n'use strict';\n\n\/\/ \u2500\u2500 LANGUAGE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _lang = (function(){\n  \/\/ 1. WP page context (WPML) takes highest priority\n  var el = document.querySelector('.ecv2-root');\n  if (el && el.dataset && \/^(zh|zht|en)$\/.test(el.dataset.lang)) return el.dataset.lang;\n  \/\/ 2. User manually switched language (localStorage)\n  var s = localStorage.getItem('ecv2_lang');\n  if (s && \/^(zh|zht|en)$\/.test(s)) return s;\n  \/\/ 3. Browser language fallback\n  var n = (navigator.language || navigator.userLanguage || 'zh').toLowerCase();\n  if (\/^zh-(tw|hk|hant)\/.test(n)) return 'zht';\n  if (\/^zh\/.test(n)) return 'zh';\n  return 'en';\n})();\n\n\/\/ \u2500\u2500 I18N \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _i18n = {\n  zh: {\n    title:'\u6b22\u8fce\u4f7f\u7528\u6211\u4eec\u7684\u8fd0\u8d39\u8ba1\u7b97',langLbl:'\u7b80\u4f53\u4e2d\u6587',\n    step1:'\u60a8\u5c06\u4ece\u6211\u4eec\u7684\u54ea\u4e2a\u4ed3\u5e93\u5bc4\u9001\u5305\u88f9',\n    step1desc:'\u4e3a\u4e86\u83b7\u5f97\u66f4\u51c6\u786e\u7684\u8d39\u7528\u4f30\u7b97\uff0c\u8bf7\u8f93\u5165\u5305\u88f9\u91cd\u91cf\u3001\u5c3a\u5bf8\u548c\u5185\u5bb9\u3002\u90e8\u5206\u7ebf\u8def\u4e0d\u5305\u62ec\u5173\u7a0e\u548c\u8fdb\u53e3\u7a0e\u91d1\uff0c\u8bf7\u7559\u610f\u3002',\n    step2:'\u5305\u88f9\u5c06\u88ab\u5bc4\u5f80\u54ea\u91cc',destPH:'\u8bf7\u9009\u62e9\u56fd\u5bb6\/\u5730\u533a',pcPH:'\u90ae\u653f\u7f16\u7801\uff08\u9009\u586b\uff09',\n    step3:'\u4ea7\u54c1\u8d2d\u4e70\u4ef7\u683c',step3opt:'\u9009\u586b',declPH:'\u8bf7\u586b\u5199\u7533\u62a5\u4ef7\u503c',\n    step4:'\u5305\u88f9\u4fe1\u606f',chipsHint:'\u5feb\u901f\u9009\u62e9\u5e38\u89c1\u8d27\u7269:',\n    pkgNo:'\u5305\u88f9 #',copyLbl:'\u590d\u5236',delLbl:'\u5220\u9664',\n    qty:'\u6570\u91cf',weight:'\u91cd\u91cf kg',len:'\u957f cm',wid:'\u5bbd cm',ht:'\u9ad8 cm',attr:'\u5c5e\u6027',\n    addPkg:'\uff0b \u589e\u52a0\u53e6\u4e00\u4e2a\u5305\u88f9',calc:'\u8fd0\u8d39\u4f30\u7b97',\n    warn:'\u26a0 \u76ee\u524d\u5927\u90e8\u5206\u56fd\u5bb6\u548c\u5730\u533a\u7684\u56fd\u9645\u7269\u6d41\u6709\u53d1\u751f\u5ef6\u8fdf\uff0c\u5b9e\u9645\u914d\u9001\u65e5\u6570\u4f1a\u6bd4\u9884\u4f30\u66f4\u957f\uff0c\u656c\u8bf7\u7406\u89e3\u3002',\n    noRoute:'\u8be5\u8def\u7ebf\u6682\u65e0\u53ef\u7528\u8fd0\u8f93\u65b9\u6848\uff0c\u8bf7\u68c0\u67e5\u8def\u7ebf\u8bbe\u7f6e\u3002',\n    netErr:'\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002',loading:'\u6b63\u5728\u8ba1\u7b97\u4e2d\u2026',\n    resTitle:'\u53ef\u9009\u6e20\u9053',curLbl:'\u5f53\u524d\u5e01\u79cd\uff1a',\n    transit:'\u53c2\u8003\u65f6\u6548',billing:'\u8ba1\u8d39\u65b9\u5f0f',taxLbl:'\u5173\u7a0e\u53ca\u6d77\u5173\u8d39\u7528',handling:'\u914d\u8d39',\n    ddp:'\u2713 \u5df2\u5305\u542b\uff08DDP\uff09',ddu:'\u6536\u4ef6\u4eba\u53e6\u4ed8\uff08DDU\uff09',\n    actualW:'\u5b9e\u9645\u91cd\u91cf',volW:'\u4f53\u79ef\u91cd\u91cf',chargeW:'\u8ba1\u8d39\u91cd\u91cf',total:'\u5408\u8ba1\u8d39\u7528',\n    recBadge:'\u63a8\u8350',cheapBadge:'\u6700\u4fbf\u5b9c',\n    disc:'\u62a5\u4ef7\u4ec5\u4f9b\u53c2\u8003\uff0c\u4ee5\u5b9e\u9645\u627f\u8fd0\u4ef7\u76ee\u4e3a\u51c6\u3002',\n    cats:{general:'\u666e\u901a\u8d27\u7269',health:'\u5065\u5eb7\u8425\u517b\u54c1',clothing:'\u8863\u5e3d\u978b\u5305',\n          'elec-batt':'\u7535\u5b50\u4ea7\u54c1\uff08\u542b\u7535\u6c60\uff09','elec-nobatt':'\u7535\u5b50\u4ea7\u54c1\uff08\u4e0d\u542b\u7535\u6c60\uff09',\n          liquid:'\u7cbe\u6cb9 \/ \u6db2\u4f53',food:'\u98df\u54c1',auto:'\u6c7d\u8f66\u914d\u4ef6',luggage:'\u4e2a\u4eba\u884c\u674e'},\n    wh:{au:'\u6fb3\u6d32\u4ed3',cn:'\u4e2d\u56fd\u4ed3\uff08\u4f5b\u5c71\uff09',my:'\u9a6c\u6765\u897f\u4e9a\u4ed3',jp_ems:'\u65e5\u672c\u4ed3\uff08EMS\uff09',\n        jp_mytw:'\u65e5\u672c\u4ed3\uff08MY & TW\uff09',tw_air:'\u53f0\u6e7e\u4ed3\uff08\u7a7a\u8fd0\uff09',tw_sea:'\u53f0\u6e7e\u4ed3\uff08\u6d77\u8fd0\uff09',\n        hk:'\u9999\u6e2f\u4ed3',us:'\u7f8e\u56fd\u4ed3',nz:'\u65b0\u897f\u5170\u4ed3'},\n    whc:{au:'\u6fb3\u6d32',cn:'\u4e2d\u56fd',my:'\u9a6c\u6765\u897f\u4e9a',jp:'\u65e5\u672c',tw:'\u53f0\u6e7e',hk:'\u9999\u6e2f',us:'\u7f8e\u56fd',nz:'\u65b0\u897f\u5170'},\n    dest:{cn:'\u4e2d\u56fd\u5927\u9646',au:'\u6fb3\u6d32',nz:'\u65b0\u897f\u5170',my:'\u9a6c\u6765\u897f\u4e9a',hk:'\u9999\u6e2f',tw:'\u53f0\u6e7e',\n          sg:'\u65b0\u52a0\u5761',jp:'\u65e5\u672c',kr:'\u97e9\u56fd',th:'\u6cf0\u56fd',id:'\u5370\u5ea6\u5c3c\u897f\u4e9a',\n          vn:'\u8d8a\u5357',us:'\u7f8e\u56fd',uk:'\u82f1\u56fd',ca:'\u52a0\u62ff\u5927'},\n  },\n  zht: {\n    title:'\u6b61\u8fce\u4f7f\u7528\u6211\u5011\u7684\u904b\u8cbb\u8a08\u7b97',langLbl:'\u7e41\u9ad4\u4e2d\u6587',\n    step1:'\u60a8\u5c07\u5f9e\u6211\u5011\u7684\u54ea\u500b\u5009\u5eab\u5bc4\u9001\u5305\u88f9',\n    step1desc:'\u70ba\u4e86\u7372\u5f97\u66f4\u6e96\u78ba\u7684\u8cbb\u7528\u4f30\u7b97\uff0c\u8acb\u8f38\u5165\u5305\u88f9\u91cd\u91cf\u3001\u5c3a\u5bf8\u548c\u5167\u5bb9\u3002\u90e8\u5206\u7dda\u8def\u4e0d\u5305\u62ec\u95dc\u7a05\u548c\u9032\u53e3\u7a05\u91d1\uff0c\u8acb\u7559\u610f\u3002',\n    step2:'\u5305\u88f9\u5c07\u88ab\u5bc4\u5f80\u54ea\u88cf',destPH:'\u8acb\u9078\u64c7\u570b\u5bb6\/\u5730\u5340',pcPH:'\u90f5\u905e\u5340\u865f\uff08\u9078\u586b\uff09',\n    step3:'\u7522\u54c1\u8cfc\u8cb7\u50f9\u683c',step3opt:'\u9078\u586b',declPH:'\u8acb\u586b\u5beb\u7533\u5831\u50f9\u503c',\n    step4:'\u5305\u88f9\u4fe1\u606f',chipsHint:'\u5feb\u901f\u9078\u64c7\u5e38\u898b\u8ca8\u7269:',\n    pkgNo:'\u5305\u88f9 #',copyLbl:'\u8907\u88fd',delLbl:'\u522a\u9664',\n    qty:'\u6578\u91cf',weight:'\u91cd\u91cf kg',len:'\u9577 cm',wid:'\u5bec cm',ht:'\u9ad8 cm',attr:'\u5c6c\u6027',\n    addPkg:'\uff0b \u589e\u52a0\u53e6\u4e00\u500b\u5305\u88f9',calc:'\u904b\u8cbb\u4f30\u7b97',\n    warn:'\u26a0 \u76ee\u524d\u5927\u90e8\u5206\u570b\u5bb6\u548c\u5730\u5340\u7684\u570b\u969b\u7269\u6d41\u6709\u767c\u751f\u5ef6\u9072\uff0c\u5be6\u969b\u914d\u9001\u65e5\u6578\u6703\u6bd4\u9810\u4f30\u66f4\u9577\uff0c\u656c\u8acb\u7406\u89e3\u3002',\n    noRoute:'\u8a72\u8def\u7dda\u66ab\u7121\u53ef\u7528\u904b\u8f38\u65b9\u6848\uff0c\u8acb\u6aa2\u67e5\u8def\u7dda\u8a2d\u7f6e\u3002',\n    netErr:'\u7db2\u7d61\u932f\u8aa4\uff0c\u8acb\u7a0d\u5f8c\u518d\u8a66\u3002',loading:'\u6b63\u5728\u8a08\u7b97\u4e2d\u2026',\n    resTitle:'\u53ef\u9078\u6e20\u9053',curLbl:'\u7576\u524d\u5e63\u7a2e\uff1a',\n    transit:'\u53c3\u8003\u6642\u6548',billing:'\u8a08\u8cbb\u65b9\u5f0f',taxLbl:'\u95dc\u7a05\u53ca\u6d77\u95dc\u8cbb\u7528',handling:'\u914d\u8cbb',\n    ddp:'\u2713 \u5df2\u5305\u542b\uff08DDP\uff09',ddu:'\u6536\u4ef6\u4eba\u53e6\u4ed8\uff08DDU\uff09',\n    actualW:'\u5be6\u969b\u91cd\u91cf',volW:'\u9ad4\u7a4d\u91cd\u91cf',chargeW:'\u8a08\u8cbb\u91cd\u91cf',total:'\u5408\u8a08\u8cbb\u7528',\n    recBadge:'\u63a8\u85a6',cheapBadge:'\u6700\u4fbf\u5b9c',\n    disc:'\u5831\u50f9\u50c5\u4f9b\u53c3\u8003\uff0c\u4ee5\u5be6\u969b\u627f\u904b\u50f9\u76ee\u70ba\u6e96\u3002',\n    cats:{general:'\u666e\u901a\u8ca8\u7269',health:'\u5065\u5eb7\u71df\u990a\u54c1',clothing:'\u8863\u5e3d\u978b\u5305',\n          'elec-batt':'\u96fb\u5b50\u7522\u54c1\uff08\u542b\u96fb\u6c60\uff09','elec-nobatt':'\u96fb\u5b50\u7522\u54c1\uff08\u4e0d\u542b\u96fb\u6c60\uff09',\n          liquid:'\u7cbe\u6cb9 \/ \u6db2\u9ad4',food:'\u98df\u54c1',auto:'\u6c7d\u8eca\u914d\u4ef6',luggage:'\u500b\u4eba\u884c\u674e'},\n    wh:{au:'\u6fb3\u6d32\u5009',cn:'\u4e2d\u570b\u5009\uff08\u4f5b\u5c71\uff09',my:'\u99ac\u4f86\u897f\u4e9e\u5009',jp_ems:'\u65e5\u672c\u5009\uff08EMS\uff09',\n        jp_mytw:'\u65e5\u672c\u5009\uff08MY & TW\uff09',tw_air:'\u81fa\u7063\u5009\uff08\u7a7a\u904b\uff09',tw_sea:'\u81fa\u7063\u5009\uff08\u6d77\u904b\uff09',\n        hk:'\u9999\u6e2f\u5009',us:'\u7f8e\u570b\u5009',nz:'\u7d10\u897f\u862d\u5009'},\n    whc:{au:'\u6fb3\u6d32',cn:'\u4e2d\u570b',my:'\u99ac\u4f86\u897f\u4e9e',jp:'\u65e5\u672c',tw:'\u81fa\u7063',hk:'\u9999\u6e2f',us:'\u7f8e\u570b',nz:'\u7d10\u897f\u862d'},\n    dest:{cn:'\u4e2d\u570b\u5927\u9678',au:'\u6fb3\u6d32',nz:'\u7d10\u897f\u862d',my:'\u99ac\u4f86\u897f\u4e9e',hk:'\u9999\u6e2f',tw:'\u81fa\u7063',\n          sg:'\u65b0\u52a0\u5761',jp:'\u65e5\u672c',kr:'\u97d3\u570b',th:'\u6cf0\u570b',id:'\u5370\u5c3c',\n          vn:'\u8d8a\u5357',us:'\u7f8e\u570b',uk:'\u82f1\u570b',ca:'\u52a0\u62ff\u5927'},\n  },\n  en: {\n    title:'Shipping Rate Calculator',langLbl:'English',\n    step1:'Which warehouse will you ship from?',\n    step1desc:'For a more accurate estimate, enter the package weight, dimensions, and item type. Some services may not include duties and import taxes.',\n    step2:'Where is the package going?',destPH:'Select destination country',pcPH:'Postcode (optional)',\n    step3:'Declared value',step3opt:'optional',declPH:'Enter declared value',\n    step4:'Package details',chipsHint:'Quick-select common item types:',\n    pkgNo:'Package #',copyLbl:'Copy',delLbl:'Delete',\n    qty:'Qty',weight:'Weight kg',len:'Length cm',wid:'Width cm',ht:'Height cm',attr:'Type',\n    addPkg:'+ Add another package',calc:'Calculate shipping',\n    warn:'\u26a0 International shipments are currently experiencing delays in most countries. Actual transit times may be longer than estimated.',\n    noRoute:'No shipping options available for this route.',\n    netErr:'Network error. Please try again.',loading:'Calculating\u2026',\n    resTitle:'Available options',curLbl:'Currency: ',\n    transit:'Est. transit',billing:'Billing',taxLbl:'Duties & taxes',handling:'Handling fee',\n    ddp:'\u2713 Included (DDP)',ddu:'Payable by recipient (DDU)',\n    actualW:'Actual weight',volW:'Vol. weight',chargeW:'Chargeable',total:'Total',\n    recBadge:'Recommended',cheapBadge:'Cheapest',\n    disc:'Rates are estimates only. Actual charges apply at time of shipment.',\n    cats:{general:'General goods',health:'Health supplements',clothing:'Clothing & shoes',\n          'elec-batt':'Electronics (with battery)','elec-nobatt':'Electronics (no battery)',\n          liquid:'Liquids & oils',food:'Food & dried goods',auto:'Auto parts',luggage:'Personal luggage'},\n    wh:{au:'Australia',cn:'China (Foshan)',my:'Malaysia',jp_ems:'Japan (EMS)',\n        jp_mytw:'Japan (MY & TW)',tw_air:'Taiwan (Air)',tw_sea:'Taiwan (Sea)',\n        hk:'Hong Kong',us:'United States',nz:'New Zealand'},\n    whc:{au:'Australia',cn:'China',my:'Malaysia',jp:'Japan',tw:'Taiwan',hk:'Hong Kong',us:'United States',nz:'New Zealand'},\n    dest:{cn:'Mainland China',au:'Australia',nz:'New Zealand',my:'Malaysia',hk:'Hong Kong',tw:'Taiwan',\n          sg:'Singapore',jp:'Japan',kr:'South Korea',th:'Thailand',id:'Indonesia',\n          vn:'Vietnam',us:'United States',uk:'United Kingdom',ca:'Canada'},\n  }\n};\nfunction t(k){ return (_i18n[_lang]||_i18n.zh)[k] || (_i18n.zh)[k] || k; }\nfunction tc(k){ var c=(_i18n[_lang]||_i18n.zh).cats; return (c&&c[k])||(_i18n.zh.cats[k])||k; }\nfunction tw(k){ var w=(_i18n[_lang]||_i18n.zh).wh; return (w&&w[k])||k; }\nfunction twc(k){ var w=(_i18n[_lang]||_i18n.zh).whc; return (w&&w[k])||k; }\nfunction td(k){ var d=(_i18n[_lang]||_i18n.zh).dest; return (d&&d[k])||k; }\nfunction getLangFlag(){ return {zh:'\ud83c\udde8\ud83c\uddf3',zht:'\ud83c\uddf9\ud83c\uddfc',en:'\ud83c\uddec\ud83c\udde7'}[_lang]||'\ud83c\udf10'; }\nfunction getApiLang(){ return {zh:'cn',zht:'tw',en:'en'}[_lang]||'cn'; }\n\n\/\/ \u2500\u2500 WAREHOUSE DATA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar WH_GROUPS = [\n  {flag:'\ud83c\udde6\ud83c\uddfa', key:'au',  items:[{key:'au',      storeId:1,  originCid:13,  curId:3,  curSym:'AU$'}]},\n  {flag:'\ud83c\udde8\ud83c\uddf3', key:'cn',  items:[{key:'cn',      storeId:2,  originCid:44,  curId:55, curSym:'\u00a5'}]},\n  {flag:'\ud83c\uddf2\ud83c\uddfe', key:'my',  items:[{key:'my',      storeId:3,  originCid:132, curId:4,  curSym:'RM'}]},\n  {flag:'\ud83c\uddef\ud83c\uddf5', key:'jp',  items:[\n    {key:'jp_ems',  storeId:8,  originCid:109, curId:57, curSym:'\u00a5', addr:'Adachi-ku \u00b7 123-0874 Tokyo'},\n    {key:'jp_mytw', storeId:16, originCid:109, curId:57, curSym:'\u00a5', addr:'Chuo-ku \u00b7 103-0024 Tokyo'}\n  ]},\n  {flag:'\ud83c\uddf9\ud83c\uddfc', key:'tw',  items:[\n    {key:'tw_air',  storeId:5,  originCid:214, curId:7,  curSym:'NT$', addr:'Songshan \u00b7 105 Taipei'},\n    {key:'tw_sea',  storeId:15, originCid:214, curId:7,  curSym:'NT$', addr:'Taiwan 407 \u00b7 Taichung'}\n  ]},\n  {flag:'\ud83c\udded\ud83c\uddf0', key:'hk',  items:[{key:'hk', storeId:11, originCid:98,  curId:56, curSym:'HK$', addr:'Hong Kong'}]},\n  {flag:'\ud83c\uddfa\ud83c\uddf8', key:'us',  items:[{key:'us', storeId:18, originCid:231, curId:60, curSym:'US$', addr:'Portland OR 97223'}]},\n  {flag:'\ud83c\uddf3\ud83c\uddff', key:'nz',  items:[{key:'nz', storeId:13, originCid:157, curId:6,  curSym:'NZ$', addr:'Christchurch 8011'}]},\n];\n\/\/ Default addresses where not set above\nvar WH_ADDR = {\n  au:'Truganina VIC 3029', cn:'Foshan 528284 Guangdong',\n  my:'Subang Jaya 47600 Selangor', jp_ems:'Adachi-ku 123-0874 Tokyo',\n  jp_mytw:'Chuo-ku 103-0024 Tokyo', tw_air:'Songshan 105 Taipei',\n  tw_sea:'Taiwan 407 Taichung', hk:'Hong Kong', us:'Portland OR 97223', nz:'Christchurch 8011'\n};\n\n\/\/ \u2500\u2500 DESTINATION DATA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar DESTS = [\n  {iso:'cn',cid:44, sym:'\u00a5'},  {iso:'au',cid:13, sym:'AU$'},{iso:'nz',cid:157,sym:'NZ$'},\n  {iso:'my',cid:132,sym:'RM'}, {iso:'hk',cid:98, sym:'HK$'},{iso:'tw',cid:214,sym:'NT$'},\n  {iso:'sg',cid:196,sym:'S$'}, {iso:'jp',cid:109,sym:'\u00a5'},  {iso:'kr',cid:116,sym:'\u20a9'},\n  {iso:'th',cid:217,sym:'\u0e3f'},  {iso:'id',cid:102,sym:'Rp'}, {iso:'vn',cid:238,sym:'\u20ab'},\n  {iso:'us',cid:231,sym:'US$'},{iso:'uk',cid:230,sym:'\u00a3'},  {iso:'ca',cid:38, sym:'C$'},\n];\n\n\/\/ \u2500\u2500 CATEGORIES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar CATS = ['general','health','clothing','elec-batt','elec-nobatt','liquid','food','auto','luggage'];\nvar CAT_KW = {\n  'general':    ['\u666e\u901a\u8d27','\u666e\u901a\u8ca8','general goods','\u666e\u901a','\u4e00\u822c'],\n  'health':     ['\u5065\u5eb7','\u8425\u517b','\u8425\u990a','\u4fdd\u5065','supplement','vitamin','nutrition','health'],\n  'clothing':   ['\u670d\u88c5','\u670d\u88dd','\u8863','\u978b','\u5e3d','clothing','apparel','shoes','fashion'],\n  'elec-batt':  ['\u542b\u7535\u6c60','\u542b\u96fb\u6c60','with battery','batteries','\u7535\u5b50\u4ea7\u54c1\uff08\u542b','\u96fb\u5b50\u7522\u54c1\uff08\u542b'],\n  'elec-nobatt':['\u4e0d\u542b\u7535\u6c60','\u4e0d\u542b\u96fb\u6c60','without battery','no battery','\u7535\u5b50\u4ea7\u54c1\uff08\u4e0d','\u96fb\u5b50\u7522\u54c1\uff08\u4e0d'],\n  'liquid':     ['\u6db2\u4f53','\u6db2\u9ad4','\u7cbe\u6cb9','\u5316\u5986\u54c1','\u5316\u599d\u54c1','liquid','cosmetic','oil'],\n  'food':       ['\u98df\u54c1','\u98df\u7269','\u5e72\u8d27','food','dried','tea','seafood'],\n  'auto':       ['\u6c7d\u8f66','\u6c7d\u8eca','automotive','car','vehicle','auto'],\n  'luggage':    ['\u884c\u674e','luggage','personal baggage']\n};\n\n\/\/ \u2500\u2500 QUICK CHIPS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar CHIPS = [\n  {cat:'health',     weight:2,  L:30,W:20,H:15},\n  {cat:'clothing',   weight:2,  L:40,W:30,H:20},\n  {cat:'elec-batt',  weight:3,  L:35,W:25,H:20},\n  {cat:'liquid',     weight:3,  L:30,W:20,H:15},\n  {cat:'food',       weight:8,  L:40,W:30,H:25},\n  {cat:'elec-nobatt',weight:5,  L:40,W:30,H:25},\n  {cat:'auto',       weight:10, L:50,W:40,H:30},\n  {cat:'luggage',    weight:15, L:65,W:45,H:30},\n];\n\n\/\/ \u2500\u2500 HTML HELPERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction esc(s){ return String(s==null?'':s).replace(\/[&<>\"']\/g,function(c){return{'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c];}); }\nfunction el(tag,props,children){\n  var e=document.createElement(tag);\n  Object.keys(props||{}).forEach(function(k){\n    if(k==='class')e.className=props[k];\n    else if(k==='style')e.style.cssText=props[k];\n    else if(k.slice(0,2)==='on')e.addEventListener(k.slice(2),props[k]);\n    else e.setAttribute(k,props[k]);\n  });\n  (children||[]).forEach(function(c){ if(c) e.appendChild(typeof c==='string'?document.createTextNode(c):c); });\n  return e;\n}\nfunction div(cls,style){ var d=document.createElement('div');if(cls)d.className=cls;if(style)d.style.cssText=style;return d; }\nfunction html(e,s){ e.innerHTML=s; }\n\n\/\/ \u2500\u2500 INIT EACH ROOT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\ndocument.querySelectorAll('.ecv2-root').forEach(function(root){\n  initCalc(root);\n});\n\nfunction initCalc(root) {\n  var REST  = root.dataset.rest;\n\n  \/\/ Per-instance state\n  var S = {\n    origin: null,   \/\/ WH item object\n    dest:   null,   \/\/ DEST object\n    postcode:'',\n    declared:'',\n    pkgs: [{qty:1,weight:'',L:'',W:'',H:'',cat:'general'}],\n    stateId: '',\n    apiTags: [],    \/\/ loaded tags for current store (language=cn)\n    results: null,\n    totalActual: 0,\n    totalVol: 0,\n  };\n\n  \/\/ Read URL params\n  var up = new URLSearchParams(window.location.search);\n  var pFrom   = (up.get('from')||'').toLowerCase();\n  var pTo     = (up.get('to')||'').toLowerCase();\n  var pWeight = up.get('weight')||'';\n  var pType   = (up.get('type')||'').toLowerCase();\n\n  if (pFrom) {\n    WH_GROUPS.forEach(function(g){ g.items.forEach(function(it){\n      if (!S.origin && (it.key===pFrom || it.key.indexOf(pFrom)===0)) S.origin=it;\n    }); });\n  }\n  if (pTo) DESTS.forEach(function(d){ if(d.iso===pTo) S.dest=d; });\n  if (pWeight) S.pkgs[0].weight = pWeight;\n  if (pType) {\n    var tm = {'general':'general','health':'health','clothing':'clothing','food':'food',\n              'auto':'auto','luggage':'luggage','liquid':'liquid',\n              'batt':'elec-batt','nobatt':'elec-nobatt','electronics':'elec-batt'};\n    var matchedCat = null;\n    Object.keys(tm).forEach(function(k){ if(!matchedCat&&pType.indexOf(k)!==-1) matchedCat=tm[k]; });\n    if (pType.indexOf('no')!==-1||(pType.indexOf('elec')!==-1&&pType.indexOf('nobatt')!==-1)) matchedCat='elec-nobatt';\n    if (matchedCat) S.pkgs[0].cat = matchedCat;\n  }\n\n  \/\/ DOM refs\n  var card, whGrid, destSel, pcInp, curSym, declInp, pkgsCont, addPkgBtn, subBtn, statusEl, resDiv;\n\n  render();\n  if (S.origin) apiLoadTags(S.origin.storeId);\n\n  function render() {\n    root.className = 'ecv2-root';\n    root.innerHTML = '';\n    card = div('ecv2-card'); root.appendChild(card);\n\n    \/\/ Header\n    var hdr = div('ecv2-hdr'); card.appendChild(hdr);\n    var titleEl = document.createElement('h1');\n    titleEl.className = 'ecv2-title'; titleEl.textContent = t('title'); hdr.appendChild(titleEl);\n    var langBtn = el('button',{class:'ecv2-langbtn'},[ document.createTextNode(getLangFlag()+' '+t('langLbl')+' \u25be') ]);\n    langBtn.addEventListener('click',function(){\n      var order=['zh','zht','en']; _lang=order[(order.indexOf(_lang)+1)%3];\n      localStorage.setItem('ecv2_lang',_lang); render();\n      if(S.origin) apiLoadTags(S.origin.storeId);\n    });\n    hdr.appendChild(langBtn);\n\n    \/\/ Step 1\n    card.appendChild(stepLbl(1, t('step1')));\n    var desc=div('',''); desc.className='ecv2-step-desc'; desc.textContent=t('step1desc'); card.appendChild(desc);\n    whGrid = div('ecv2-wh-grid'); card.appendChild(whGrid);\n    renderWarehouses();\n\n    card.appendChild(sep());\n\n    \/\/ Step 2\n    card.appendChild(stepLbl(2, t('step2')));\n    var row2 = div('ecv2-row2'); card.appendChild(row2);\n    \/\/ dest\n    var df = div('ecv2-field'); row2.appendChild(df);\n    df.appendChild(fieldLabel(t('step2')));\n    var sw = div('ecv2-sw'); df.appendChild(sw);\n    destSel = document.createElement('select'); destSel.className='ecv2-sel';\n    var ph = document.createElement('option'); ph.value=''; ph.textContent=t('destPH'); destSel.appendChild(ph);\n    DESTS.forEach(function(d){\n      var o=document.createElement('option'); o.value=d.iso; o.textContent=td(d.iso);\n      if(S.dest&&S.dest.iso===d.iso) o.selected=true; destSel.appendChild(o);\n    });\n    destSel.addEventListener('change', function(){\n      S.dest = DESTS.find(function(d){return d.iso===destSel.value;})||null;\n      updateCurSym(); updateSubBtn();\n      if(S.dest) apiLoadStates(S.dest.cid);\n    });\n    sw.appendChild(destSel);\n    \/\/ postcode\n    var pf = div('ecv2-field'); row2.appendChild(pf);\n    pf.appendChild(fieldLabel(t('pcPH')));\n    pcInp = el('input',{class:'ecv2-inp',type:'text',placeholder:t('pcPH')});\n    pcInp.value = S.postcode||''; pf.appendChild(pcInp);\n    var pcTimer;\n    pcInp.addEventListener('input',function(){ S.postcode=pcInp.value; clearTimeout(pcTimer);\n      pcTimer=setTimeout(function(){ if(S.dest&&S.postcode.length>=3) apiPostcodeLookup(); },500); });\n\n    card.appendChild(sep());\n\n    \/\/ Step 3\n    var s3lbl = t('step3')+' <span style=\"font-size:13px;color:#9aa8b0;font-weight:600;\">('+t('step3opt')+')<\/span>';\n    card.appendChild(stepLblHtml(3, s3lbl));\n    var dw = div('ecv2-decl-wrap'); card.appendChild(dw);\n    curSym = div('ecv2-cur'); curSym.textContent = getOriginCurSym(); dw.appendChild(curSym);\n    declInp = el('input',{class:'ecv2-decl-inp',type:'number',min:'0',placeholder:t('declPH')});\n    declInp.value = S.declared||'';\n    declInp.addEventListener('input',function(){ S.declared=declInp.value; }); dw.appendChild(declInp);\n\n    card.appendChild(sep());\n\n    \/\/ Step 4\n    card.appendChild(stepLbl(4, t('step4')));\n    \/\/ chips\n    var chipsDiv = div('ecv2-chips'); card.appendChild(chipsDiv);\n    var chHint=div('','font-size:13px;color:#8a98a0;margin-bottom:10px;width:100%;');\n    chHint.textContent=t('chipsHint'); chipsDiv.appendChild(chHint);\n    CHIPS.forEach(function(ch){\n      var btn=el('button',{class:'ecv2-chip'},[document.createTextNode(tc(ch.cat)+' '+ch.weight+'kg')]);\n      btn.addEventListener('click',function(){\n        var row={qty:1,weight:ch.weight,L:ch.L,W:ch.W,H:ch.H,cat:ch.cat};\n        if(S.pkgs.length===1&&!S.pkgs[0].weight) S.pkgs[0]=row; else S.pkgs.push(row);\n        renderPkgs();\n      }); chipsDiv.appendChild(btn);\n    });\n\n    pkgsCont = div('ecv2-pkgs'); card.appendChild(pkgsCont);\n    renderPkgs();\n\n    addPkgBtn = el('button',{class:'ecv2-add-pkg'},[document.createTextNode(t('addPkg'))]);\n    addPkgBtn.addEventListener('click',function(){\n      S.pkgs.push({qty:1,weight:'',L:'',W:'',H:'',cat:'general'}); renderPkgs();\n    }); card.appendChild(addPkgBtn);\n\n    \/\/ Submit\n    var subWrap = div('ecv2-sub-wrap'); card.appendChild(subWrap);\n    subBtn = el('button',{class:'ecv2-sub-btn off'},[document.createTextNode(t('calc'))]);\n    subBtn.addEventListener('click',function(){ if(!subBtn.disabled) calculate(); }); subWrap.appendChild(subBtn);\n    statusEl = div('ecv2-status'); subWrap.appendChild(statusEl);\n    var warnEl = div('ecv2-warn'); warnEl.textContent=t('warn'); subWrap.appendChild(warnEl);\n    updateSubBtn();\n\n    \/\/ Results\n    resDiv = div('ecv2-results','display:none'); card.appendChild(resDiv);\n    if (S.results) renderResults(S.results);\n  }\n\n  function sep(){ var d=div('ecv2-sep'); return d; }\n  function stepLbl(n, txt){ var d=div('ecv2-step-lbl'); d.innerHTML='<span class=\"ecv2-step-num\">'+n+'<\/span>'+esc(txt); return d; }\n  function stepLblHtml(n, html){ var d=div('ecv2-step-lbl'); d.innerHTML='<span class=\"ecv2-step-num\">'+n+'<\/span>'+html; return d; }\n  function fieldLabel(txt){ var l=div('ecv2-flbl'); l.textContent=txt; return l; }\n\n  function renderWarehouses(){\n    whGrid.innerHTML = '';\n    WH_GROUPS.forEach(function(g){\n      var gDiv = div('ecv2-wh-grp'); whGrid.appendChild(gDiv);\n      var gHdr = div('ecv2-wh-grp-hdr');\n      gHdr.innerHTML = '<span class=\"ecv2-wh-flag\">'+esc(g.flag)+'<\/span><span class=\"ecv2-wh-cname\">'+esc(twc(g.key))+'<\/span>';\n      gDiv.appendChild(gHdr);\n      var items = div('ecv2-wh-items'); gDiv.appendChild(items);\n      g.items.forEach(function(it){\n        var iDiv = div('ecv2-wh-item'+(S.origin&&S.origin.key===it.key?' sel':''));\n        iDiv.innerHTML = '<div><div class=\"ecv2-wh-name\">'+esc(tw(it.key))+'<\/div>'\n          +'<div class=\"ecv2-wh-addr\">'+esc(WH_ADDR[it.key]||it.addr||'')+'<\/div><\/div>'\n          +'<span class=\"ecv2-wh-check\">\u2714<\/span>';\n        iDiv.addEventListener('click', function(){\n          S.origin=it; S.apiTags=[]; renderWarehouses(); updateCurSym(); updateSubBtn(); apiLoadTags(it.storeId);\n        }); items.appendChild(iDiv);\n      });\n    });\n  }\n\n  function renderPkgs(){\n    pkgsCont.innerHTML='';\n    S.pkgs.forEach(function(pkg,idx){\n      var pDiv=div('ecv2-pkg'); pkgsCont.appendChild(pDiv);\n      var ph=div('ecv2-pkg-hdr');\n      var pno=div('ecv2-pkg-no'); pno.textContent=t('pkgNo')+(idx+1); ph.appendChild(pno);\n      var pb=div('ecv2-pkg-btns');\n      var copyB=el('button',{class:'ecv2-btn-copy'},[document.createTextNode(t('copyLbl'))]);\n      copyB.addEventListener('click',function(){ S.pkgs.splice(idx+1,0,JSON.parse(JSON.stringify(pkg))); renderPkgs(); }); pb.appendChild(copyB);\n      var delB=el('button',{class:'ecv2-btn-del'},[document.createTextNode(t('delLbl'))]);\n      delB.disabled=(S.pkgs.length<=1);\n      delB.addEventListener('click',function(){ if(S.pkgs.length>1){S.pkgs.splice(idx,1);renderPkgs();} }); pb.appendChild(delB);\n      ph.appendChild(pb); pDiv.appendChild(ph);\n\n      var pg=div('ecv2-pkg-grid'); pDiv.appendChild(pg);\n      var numFlds=[\n        {key:'qty',lbl:t('qty'),min:'1'},\n        {key:'weight',lbl:t('weight'),min:'0'},\n        {key:'L',lbl:t('len'),min:'0'},\n        {key:'W',lbl:t('wid'),min:'0'},\n        {key:'H',lbl:t('ht'),min:'0'},\n      ];\n      numFlds.forEach(function(f){\n        var fd=div('ecv2-pkg-field'); pg.appendChild(fd);\n        var lbl=div('ecv2-plbl'); lbl.textContent=f.lbl; fd.appendChild(lbl);\n        var inp=el('input',{class:'ecv2-pinp',type:'number',min:f.min||'0',placeholder:''});\n        inp.value=pkg[f.key]||'';\n        inp.addEventListener('input',function(){ S.pkgs[idx][f.key]=inp.value; updateSubBtn(); }); fd.appendChild(inp);\n      });\n      \/\/ Category\n      var cfd=div('ecv2-pkg-field'); pg.appendChild(cfd);\n      var clbl=div('ecv2-plbl'); clbl.textContent=t('attr'); cfd.appendChild(clbl);\n      var csw=div('ecv2-psel-w'); cfd.appendChild(csw);\n      var csel=document.createElement('select'); csel.className='ecv2-psel'; csw.appendChild(csel);\n      CATS.forEach(function(ck){\n        var o=document.createElement('option'); o.value=ck; o.textContent=tc(ck);\n        if(pkg.cat===ck) o.selected=true; csel.appendChild(o);\n      });\n      csel.addEventListener('change',function(){ S.pkgs[idx].cat=csel.value; });\n    });\n    updateSubBtn(); \/\/ add\/copy\/delete\/chip actions all funnel through renderPkgs(); keep button state in sync\n  }\n\n  function updateCurSym(){\n    if(!curSym) return;\n    curSym.textContent = getOriginCurSym();\n  }\n  function getOriginCurSym(){\n    if(S.origin) return S.origin.curSym;\n    if(S.dest)   return S.dest.sym;\n    return 'AU$';\n  }\n\n  function updateSubBtn(){\n    if(!subBtn) return;\n    var ready = S.origin && S.dest && S.pkgs.some(function(p){return parseFloat(p.weight)>0;});\n    subBtn.disabled = !ready;\n    subBtn.className = 'ecv2-sub-btn '+(ready?'rdy':'off');\n  }\n\n  \/\/ \u2500\u2500 API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function fetchJ(path,opts){\n    opts=opts||{}; opts.headers=opts.headers||{};\n    if(opts.body&&typeof opts.body!=='string'){opts.headers['Content-Type']='application\/json';opts.body=JSON.stringify(opts.body);}\n    return fetch(REST+path,opts).then(function(r){return r.json();});\n  }\n\n  function apiLoadTags(storeId){\n    fetchJ('\/tags?store_id='+storeId+'&language=cn').then(function(res){\n      S.apiTags = (res&&res.data&&Array.isArray(res.data)) ? res.data : [];\n    }).catch(function(){});\n  }\n\n  function apiLoadStates(cid){\n    fetchJ('\/states?country_id='+cid).then(function(res){\n      S._states = (res&&res.code===200&&res.data) ? res.data : [];\n    }).catch(function(){});\n  }\n\n  function apiPostcodeLookup(){\n    if(!S.dest||!S.postcode) return;\n    fetchJ('\/postcode?country_id='+S.dest.cid+'&postcode='+encodeURIComponent(S.postcode)).then(function(res){\n      if(res&&res.code===200&&res.data&&res.data.length) S.stateId=res.data[0].state_id||'';\n    }).catch(function(){});\n  }\n\n  function findTagId(catKey){\n    if(!S.apiTags.length) return 14; \/\/ AU\u666e\u901a\u8d27 fallback\n    var kws=CAT_KW[catKey]||CAT_KW['general'];\n    for(var i=0;i<S.apiTags.length;i++){\n      var name=(S.apiTags[i].name||'').toLowerCase();\n      for(var j=0;j<kws.length;j++){\n        if(name.indexOf(kws[j].toLowerCase())!==-1) return S.apiTags[i].tags_id;\n      }\n    }\n    var fb=null; for(var k=0;k<S.apiTags.length;k++){if(!\/(\u8fdd\u7981|\u9055\u7981|prohibit)\/i.test(S.apiTags[k].name)){fb=S.apiTags[k];break;}}\n    return fb ? fb.tags_id : (S.apiTags[0]?S.apiTags[0].tags_id:14);\n  }\n\n  function setStatus(msg,kind){\n    if(!statusEl) return;\n    statusEl.textContent=msg; statusEl.className='ecv2-status'+(msg?' '+(kind||'inf'):'');\n  }\n\n  \/\/ Phase 1b (2026-09-25)\uff1a\u62a5\u4ef7 API \u56de\u8c03\u540e\u5e7f\u64ad ebg:quote\uff08ebg-analytics.php \u8f6c GA4 quote_success\/quote_failed\uff09\n  function quoteEvent(status,list,payload,code){\n    try{\n      var o=String((S.origin&&S.origin.key)||'').slice(0,2).toUpperCase(), d=String((S.dest&&S.dest.iso)||'').toUpperCase();\n      var det={quote_source:'ebg_calc_v2',origin:o,destination:d,route:o+'_'+d,package_type:String((S.pkgs&&S.pkgs[0]&&S.pkgs[0].cat)||'').slice(0,30),\n               quote_result_status:status,api_code:code||0,page_path:location.pathname,warehouse:String((S.origin&&S.origin.key)||'')};\n      if(S.totalActual>0) det.weight_kg=Math.round(S.totalActual*100)\/100;\n      if(status==='success'&&list&&list.length){\n        var ests=list.map(function(i){return parseFloat(i.estimation);}).filter(function(x){return !isNaN(x);});\n        det.options_count=list.length; if(ests.length) det.estimation_total=Math.min.apply(null,ests); det.currency=String(list[0].currency_name||'');\n      }\n      document.dispatchEvent(new CustomEvent('ebg:quote',{detail:det}));\n    }catch(e){}\n  }\n\n  function calculate(){\n    if(!S.origin||!S.dest) return;\n    var pkgArr=[]; S.totalActual=0; S.totalVol=0;\n    S.pkgs.forEach(function(p){\n      var qty=Math.max(1,parseInt(p.qty)||1);\n      var w=parseFloat(p.weight)||0; if(w<=0) return;\n      var L=parseFloat(p.L)||0,W=parseFloat(p.W)||0,H=parseFloat(p.H)||0;\n      var tagId=findTagId(p.cat);\n      for(var q=0;q<qty;q++) pkgArr.push({qty:1,weight:w,length:L,width:W,height:H,tags_ids:tagId});\n      S.totalActual+=w*qty; S.totalVol+=(L*W*H\/5000)*qty;\n    });\n    if(!pkgArr.length){ setStatus(t('warn'),'err'); return; }\n    var payload={\n      area:'0', country_id:S.dest.cid, country_id_from:S.origin.originCid,\n      store_id:S.origin.storeId, language:getApiLang(),\n      declare_value:S.declared||'', currency_id:S.origin.curId,\n      weight_unit:'kg', length_unit:'cm',\n      postcode:S.postcode||'', state:S.stateId||'', suburb:'',\n      package:pkgArr\n    };\n    subBtn.disabled=true; subBtn.className='ecv2-sub-btn off';\n    setStatus(t('loading'),'inf');\n    fetchJ('\/quote',{method:'POST',body:payload}).then(function(res){\n      subBtn.disabled=false; updateSubBtn();\n      if(!res||res.code!==200||!res.data||!res.data.length){ setStatus(t('noRoute'),'err'); quoteEvent(!res?'network':(res.code!==200?'error':'empty'),[],payload,res?res.code:0); return; }\n      setStatus('');\n      S.results=res.data;\n      resDiv.style.display='';\n      renderResults(res.data);\n      resDiv.scrollIntoView({behavior:'smooth',block:'start'});\n      quoteEvent('success',res.data,payload,200);   \/\/ Phase 1b\uff1a\u771f\u5b9e\u62a5\u4ef7 API \u6210\u529f\u56de\u8c03 \u2192 quote_success\n    }).catch(function(){ subBtn.disabled=false; updateSubBtn(); setStatus(t('netErr'),'err'); quoteEvent('network',[],payload,0); });\n  }\n\n  function renderResults(list){\n    resDiv.innerHTML='';\n    var rhdr=div('ecv2-res-hdr'); resDiv.appendChild(rhdr);\n    var rtitle=div('ecv2-res-title');\n    rtitle.textContent=(S.origin?tw(S.origin.key):'?')+' \u2192 '+(S.dest?td(S.dest.iso):'?')+' \u00b7 '+t('resTitle');\n    rhdr.appendChild(rtitle);\n    var curlbl=div('','font-size:13px;color:#48606b;');\n    var sorted=list.slice().sort(function(a,b){return parseFloat(a.estimation||9999)-parseFloat(b.estimation||9999);});\n    var minTotal=sorted.length?parseFloat(sorted[0].estimation||0):0;\n    var cur=sorted.length?(sorted[0].currency_name||''):' ';\n    curlbl.innerHTML=esc(t('curLbl'))+'<b style=\"color:#102a3f;\">'+esc(cur)+'<\/b>'; rhdr.appendChild(curlbl);\n\n    sorted.forEach(function(item,idx){\n      var isRec=!!(item.name&&item.name.indexOf('\u5305\u7a0e')!==-1&&!item.unableSelect);\n      var isCheap=!isRec&&parseFloat(item.estimation||0)===minTotal;\n      var rc=div('ecv2-rc'+(isRec?' rec':isCheap?' chp':'')); resDiv.appendChild(rc);\n\n      var rh=div('ecv2-rc-head'); rc.appendChild(rh);\n      var ri=div('ecv2-rc-info');\n      ri.innerHTML='<span class=\"ecv2-rc-icon\">'+(isRec?'\ud83d\udce6':isCheap?'\ud83d\udcee':'\u2708\ufe0f')+'<\/span>'\n        +'<span class=\"ecv2-rc-name\">'+esc(item.name||'')+'<\/span>';\n      if(isRec||isCheap){\n        var badge=div('ecv2-badge '+(isRec?'rec':'chp'));\n        badge.textContent=isRec?t('recBadge'):t('cheapBadge'); ri.appendChild(badge);\n      }\n      rh.appendChild(ri);\n      var rtot=div('ecv2-rc-total');\n      rtot.innerHTML='<div class=\"ecv2-rc-total-lbl\">'+esc(t('total'))+'<\/div>'\n        +'<div class=\"ecv2-rc-total-num\">'+esc(item.currency_name||'')+'&nbsp;'+esc(item.estimation||'\u2014')+'<\/div>';\n      rh.appendChild(rtot);\n\n      var rb=div('ecv2-rc-body'); rc.appendChild(rb);\n      function bodyField(lbl,val,cls){\n        var d=div(''); d.innerHTML='<div class=\"ecv2-rc-field-lbl\">'+esc(lbl)+'<\/div>'\n          +'<div class=\"ecv2-rc-field-val'+(cls?' '+cls:'')+'\">'+esc(val)+'<\/div>'; rb.appendChild(d);\n      }\n      bodyField(t('transit'), item.duration||'\u2014');\n      bodyField(t('billing'), item.weight_calc_type_text||'\u2014');\n      var taxNote=item.include_tax_note||'';\n      var isDDP=taxNote&&(taxNote.indexOf('\u5305\u542b')!==-1||taxNote.indexOf('Inc')!==-1||taxNote.indexOf('DDP')!==-1||taxNote.indexOf('\u5305\u7a0e')!==-1);\n      bodyField(t('taxLbl'), isDDP?t('ddp'):(taxNote||t('ddu')), isDDP?'ddp':'ddu');\n      var ff=parseFloat(item.fullfillment_fee||0); if(ff>0) bodyField(t('handling'),(item.currency_name||'')+' '+item.fullfillment_fee);\n\n      \/\/ Weight footer\n      var rf=div('ecv2-rc-foot'); rc.appendChild(rf);\n      var cw=item.parcel_cost&&item.parcel_cost[0]?item.parcel_cost[0].chargeable_weight:null;\n      rf.innerHTML='<span>'+esc(t('actualW'))+' <b>'+Math.round(S.totalActual*100)\/100+' kg<\/b><\/span>'\n        +'<span>'+esc(t('volW'))+' <b>'+Math.round(S.totalVol*100)\/100+' kg<\/b><\/span>'\n        +(cw?'<span>'+esc(t('chargeW'))+' <b class=\"ecv2-cw\">'+esc(cw)+' kg<\/b><\/span>':'');\n\n      \/\/ Fee breakdown\n      var bdRows=[];\n      if(item.estimation_sub&&parseFloat(item.estimation_sub)>0) bdRows.push({lbl:(_lang==='en'?'Shipping':'\u8fd0\u8d39'),amt:item.estimation_sub});\n      if(item.extra_fee&&parseFloat(item.extra_fee)>0){\n        var ef=item.extra_fee_detail&&item.extra_fee_detail[0];\n        bdRows.push({lbl:(ef&&ef.name)||(_lang==='en'?'Surcharge':'\u9644\u52a0\u8d39'),amt:item.extra_fee});\n      }\n      if(item.tax_fee&&parseFloat(item.tax_fee)>0) bdRows.push({lbl:(_lang==='en'?'Tax':'\u7a0e\u8d39'),amt:item.tax_fee});\n      if(bdRows.length){\n        var bd=div('ecv2-rc-bd'); rc.appendChild(bd);\n        bdRows.forEach(function(r){\n          var row=div('ecv2-bd-row');\n          row.innerHTML='<span>'+esc(r.lbl)+'<\/span><span>'+esc(item.currency_name||'')+' '+esc(r.amt)+'<\/span>'; bd.appendChild(row);\n        });\n      }\n    });\n\n    var disc=div('ecv2-disc'); disc.textContent=t('disc'); resDiv.appendChild(disc);\n  }\n}\n\n})();\n<\/script>\n\n\n\n\n<div style=\"max-width:880px;margin:16px auto 0;padding:0 24px\">\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:24px\">\n<div style=\"background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px\"><div style=\"font-size:22px;margin-bottom:6px\">&#127981;<\/div><div style=\"font-weight:700;font-size:14px;color:#0f172a;margin-bottom:4px\">8 Warehouses Worldwide<\/div><div style=\"font-size:13px;color:#64748b\">Australia &#8211; China &#8211; Malaysia &#8211; Japan &#8211; Taiwan &#8211; Hong Kong &#8211; New Zealand &#8211; USA<\/div><\/div>\n<div style=\"background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px\"><div style=\"font-size:22px;margin-bottom:6px\">&#127757;<\/div><div style=\"font-weight:700;font-size:14px;color:#0f172a;margin-bottom:4px\">15+ Destinations<\/div><div style=\"font-size:13px;color:#64748b\">Southeast Asia &#8211; Northeast Asia &#8211; Oceania &#8211; Europe &#8211; Americas<\/div><\/div>\n<div style=\"background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px\"><div style=\"font-size:22px;margin-bottom:6px\">&#128176;<\/div><div style=\"font-weight:700;font-size:14px;color:#0f172a;margin-bottom:4px\">Full Cost Breakdown<\/div><div style=\"font-size:13px;color:#64748b\">Freight + fuel + handling + estimated duties &#8211; all itemised<\/div><\/div>\n<\/div>\n<p style=\"font-size:13px;color:#94a3b8;text-align:center;margin:0 0 40px\">Indicative quotes only &#8211; final price confirmed at checkout &#8211; <a href=\"https:\/\/dashboard.ebaoguo.com\/register\" style=\"color:#116ebf\" target=\"_blank\">Register free<\/a> to get your warehouse address<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ebaoguo &#8211; Ship from 8 Global Warehouses International Shipping Rate Calculator Pick origin warehouse and destination country, enter weight and [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-43766","page","type-page","status-publish","hentry"],"acf":[],"spectra_custom_meta":{"_betterdocs_reusable_block_ids":["a:0:{}"],"_uag_css_file_name":["uag-css-43766.css"],"_ebg_geo_score":["15"],"_ebg_geo_details":["a:10:{s:12:\"answer_first\";b:0;s:7:\"has_faq\";b:0;s:8:\"has_list\";b:0;s:9:\"ext_links\";i:1;s:9:\"int_links\";i:0;s:10:\"word_count\";i:96;s:6:\"has_h2\";b:1;s:7:\"has_img\";b:0;s:8:\"rm_title\";b:0;s:7:\"rm_desc\";b:0;}"],"_ebg_geo_scored_at":["1783063878"],"_uag_page_assets":["a:9:{s:3:\"css\";s:260:\".uag-blocks-common-selector{z-index:var(--z-index-desktop) !important}@media(max-width: 976px){.uag-blocks-common-selector{z-index:var(--z-index-tablet) !important}}@media(max-width: 767px){.uag-blocks-common-selector{z-index:var(--z-index-mobile) !important}}\";s:2:\"js\";s:0:\"\";s:18:\"current_block_list\";a:3:{i:0;s:9:\"core\/html\";i:1;s:14:\"core\/shortcode\";i:2;s:12:\"core\/heading\";}s:8:\"uag_flag\";b:0;s:11:\"uag_version\";s:10:\"1790918205\";s:6:\"gfonts\";a:0:{}s:10:\"gfonts_url\";s:0:\"\";s:12:\"gfonts_files\";a:0:{}s:14:\"uag_faq_layout\";b:0;}"]},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"ctl_avatar":false,"1536x1536":false,"2048x2048":false,"betterdocs-category-thumb":false},"uagb_author_info":{"display_name":"","author_link":"https:\/\/ebaoguo.com\/en\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"Ebaoguo &#8211; Ship from 8 Global Warehouses International Shipping Rate Calculator Pick origin warehouse and destination country, enter weight and [&hellip;]","_links":{"self":[{"href":"https:\/\/ebaoguo.com\/en\/wp-json\/wp\/v2\/pages\/43766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebaoguo.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ebaoguo.com\/en\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/ebaoguo.com\/en\/wp-json\/wp\/v2\/comments?post=43766"}],"version-history":[{"count":0,"href":"https:\/\/ebaoguo.com\/en\/wp-json\/wp\/v2\/pages\/43766\/revisions"}],"wp:attachment":[{"href":"https:\/\/ebaoguo.com\/en\/wp-json\/wp\/v2\/media?parent=43766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}