{"id":12147,"date":"2025-02-16T07:35:26","date_gmt":"2025-02-15T23:35:26","guid":{"rendered":"https:\/\/stooper.co\/?page_id=12147"},"modified":"2025-12-07T12:22:44","modified_gmt":"2025-12-07T04:22:44","slug":"incoterms-tools","status":"publish","type":"page","link":"https:\/\/stooper.co\/zh\/incoterms-tools\/","title":{"rendered":"Incoterms\u5de5\u5177\uff0c\u5e2e\u52a9\u9009\u62e9\u5408\u9002\u7684\u8fd0\u8f93\u6761\u6b3e"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"12147\" class=\"elementor elementor-12147\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ae32bce e-con-full e-flex e-con e-parent\" data-id=\"ae32bce\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2addd96 e-flex e-con-boxed e-con e-parent\" data-id=\"2addd96\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-73eeb6c e-flex e-con-boxed e-con e-child\" data-id=\"73eeb6c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bf9df1e elementor-widget elementor-widget-heading\" data-id=\"bf9df1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"> Incoterms\u5de5\u5177\uff0c\u5e2e\u52a9\u9009\u62e9\u5408\u9002\u7684\u8fd0\u8f93\u6761\u6b3e<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d4be337 elementor-widget elementor-widget-text-editor\" data-id=\"d4be337\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"322\" data-end=\"698\">\u8fd8\u5728\u7ea0\u7ed3\u54ea\u79cd\u8fd0\u8f93\u6761\u6b3e\u6700\u9002\u5408\u60a8\u7684\u4f01\u4e1a\u5417\uff1f\u6709\u4e86\u6211\u4eec\u7684Incoterms\u5de5\u5177\uff0c\u60a8\u53ef\u4ee5\u8f7b\u677e\u9009\u62e9\u5408\u9002\u7684\u8d38\u6613\u6761\u6b3e\uff0c\u7b80\u5316\u7269\u6d41\u6d41\u7a0b\uff0c\u51cf\u5c11\u6c9f\u901a\u8bef\u5dee\uff0c\u63d0\u9ad8\u56fd\u9645\u4ea4\u6613\u7684\u6548\u7387\u3002\u53ea\u9700\u56de\u7b54\u51e0\u4e2a\u7b80\u5355\u95ee\u9898\uff0c\u5de5\u5177\u5c31\u4f1a\u6839\u636e\u60a8\u7684\u4e1a\u52a1\u9700\u6c42\u63a8\u8350\u6700\u5408\u9002\u7684Incoterm\u3002<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f49427a e-flex e-con-boxed e-con e-parent\" data-id=\"f49427a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8386ce4 e-flex e-con-boxed e-con e-child\" data-id=\"8386ce4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9026d39 elementor-widget elementor-widget-shortcode\" data-id=\"9026d39\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div style=\"margin-bottom:20px;\">\r\n      <select id=\"langSelect\">\r\n        <option value=\"en\">English<\/option>\r\n        <option value=\"zh\">\u4e2d\u6587<\/option>\r\n\t<option value=\"ms\">Bahasa Malaysia<\/option>\r\n      <\/select>\r\n    <\/div>\r\n    <div class=\"chart-bar-container\" id=\"chartBarContainer\"><\/div>\r\n    <div class=\"explanation-card\" id=\"explanationCard\"><\/div>\r\n    <div class=\"risk-label\" id=\"riskLabel\"><\/div>\r\n    <div id=\"interactiveTable\"><\/div>\r\n    <div class=\"footer-note\">\r\n      \u4ec5\u4f9b\u53c2\u8003\u3002\u8bf7\u5728\u5b9e\u9645\u53d1\u8d27\u524d\u518d\u6b21\u67e5\u9605ICC\u5b98\u65b9Incoterms\u3002<br\/>\r\n      <span style=\"color:#a4b7c7;\">\u00a9 2024 Stooper.co<\/span>\r\n    <\/div>\r\n    <style>\r\n      body { background: #f8fafc; font-family: 'Segoe UI', Arial, sans-serif; margin: 0; }\r\n      .chart-bar-container { width: 99vw; max-width: 1180px; margin: 30px auto 10px auto; padding: 0; position: relative; min-height: 120px; z-index: 2; }\r\n      .bar-track { position: absolute; left: 8%; right: 8%; top: 48px; height: 13px; background: #0072C6; border-radius: 7px; box-shadow: 0 1px 16px #a2b8ce55; z-index: 0; }\r\n      .bar-labels { width: 100%; position: absolute; top: 12px; left: 0; right: 0; z-index: 3; display: flex; justify-content: center; gap: 18px; pointer-events: none; }\r\n      .incoterm-label { width: 7vw; min-width: 66px; text-align: center; font-weight: 900; color: #1a3251; font-size: 15.5px; background: none; pointer-events: auto; position: relative; cursor: pointer; transition: color .2s, background .15s; padding: 2px 0 16px 0; border-radius: 6px; user-select: none; background: #fff; border: 2.5px solid #f8fafc; z-index: 5; }\r\n      .incoterm-label.active { color: #fff; background: #1476cc; box-shadow: 0 2px 10px #b7d1eb22; border: 2.5px solid #266ac4; z-index: 7; }\r\n      .incoterm-label .short { display:block; font-weight: 700; font-size: 15px; color: #fff; background: #1476cc; border-radius: 11px 11px 0 0; padding: 2px 10px 2px 10px; margin-bottom: 5px; margin-left: auto; margin-right: auto; min-width: 30px; width: fit-content; position: absolute; top: -30px; left: 50%; transform: translateX(-50%); box-shadow: 0 2px 8px #b7d1eb22; z-index: 15; }\r\n      .incoterm-label.active .short { background: #ffb900; color: #222; }\r\n      .bar-stop-dot { width: 18px; height: 18px; border-radius: 50%; border: 3px solid #fff; background: #b0c6d8; margin: 0 auto 0 auto; margin-top: 2px; margin-bottom: 4px; transition: background .2s; box-shadow: none; position: relative; z-index: 4; }\r\n      .bar-stop-dot.active { background: #1476cc; box-shadow: 0 0 12px #1476cc80; }\r\n      .ship-icon { position: absolute; top: 24px; left: 0; font-size: 50px; z-index: 30; transition: left .38s cubic-bezier(.8,0,.5,1.4); cursor: grab; filter: drop-shadow(0 4px 7px #2223); user-select: none; background: transparent; }\r\n      .ship-label-bubble { position: absolute; top: 45px; left: 50%; transform: translateX(-50%); background: #fff; color: #1476cc; font-weight: bold; font-size: 15px; border-radius: 0 13px 13px 13px; padding: 5px 14px 5px 11px; box-shadow: 0 4px 22px #1476cc21; border: 2px solid #1476cc80; white-space: nowrap; z-index: 41; pointer-events: none; }\r\n      .explanation-card { width: 96vw; max-width: 760px; margin: 2px auto 10px auto; background: #fff; border-radius: 16px; box-shadow: 0 6px 28px #b7d1eb20; padding: 20px 28px 17px 28px; border: 1.5px solid #d2e4f9; font-size: 1.12em; color: #174177; font-weight: 450; }\r\n      .explanation-card-title { font-size: 1.18em; color: #1476cc; font-weight: 700; margin-bottom: 3px; }\r\n      .risk-label { text-align: center; margin: 0 0 16px 0; font-weight: 700; font-size: 1.05em; color: #1476cc; background: #e4eef8; padding: 8px 0 7px 0; border-radius: 10px; box-shadow: 0 2px 11px #b7d1eb1c; width: 80vw; max-width: 900px; margin-left:auto;margin-right:auto; }\r\n      .subject-icon { display: block; font-size: 24px; margin: 0 auto 4px auto; width: 32px; height: 32px; }\r\n      .interactive-table { width: 98vw; max-width: 1200px; margin: 12px auto 30px auto; border-collapse: collapse; border-radius: 14px; background: #f4f7fc; box-shadow: 0 4px 32px #b7d1eb23; font-size: 15.2px; overflow: hidden; table-layout: auto; }\r\n      .interactive-table th, .interactive-table td { border: 1px solid #e2e9f2; padding: 7px 8px; text-align: center; min-width: 88px; transition: background 0.19s, color 0.15s; position: relative; z-index: 1; }\r\n      .interactive-table th.subject { background: #0072C6; color: #fff; font-size: 1em; font-weight: 900; text-align: center; }\r\n      .interactive-table th.incoterm { background: #232e47; color: #fff; font-weight: 900; font-size: 1em; text-align: left; min-width:120px; position: relative; cursor:pointer; }\r\n      .interactive-table tr.highlight-row > th, .interactive-table tr.highlight-row > td { background: #ffe066 !important; color: #232e47 !important; font-weight: bold; box-shadow: 0 0 13px #ffe06660; }\r\n      .interactive-table .seller { background: #e2effa !important; color: #0a62ad !important; font-weight: 700; }\r\n      .interactive-table .buyer { background: #e6eaf2 !important; color: #14887d !important; font-weight: 700; }\r\n      .interactive-table .negotiable { background: #fff8db !important; color: #a0860a !important; font-style: italic; }\r\n      .footer-note { font-size: 13px; color: #99aabb; text-align: center; margin-top: 38px; margin-bottom:28px; }\r\n      @media (max-width: 900px) { .interactive-table { font-size:12px;} .incoterm-label { min-width:45px; font-size:11px;} .interactive-table th, .interactive-table td {padding:4px 2px;} .interactive-table th.incoterm {min-width:80px;} .explanation-card {font-size:14px; padding: 14px 8px;} }\r\n      @media (max-width: 600px) { .interactive-table { font-size:10px;} .risk-label {font-size:0.95em;} .bar-labels {font-size:10.5px;} .explanation-card {font-size:12px;} }\r\n    <\/style>\r\n    <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n      const LANG = {\r\n        en: {\r\n          SUBJECTS: [\r\n            \"Export Packaging\", \"Loading Charges\", \"Delivery to Port\/Place\",\r\n            \"Export Duty, Taxes & Customs Clearance\", \"Origin Terminal Charges\",\r\n            \"Loading on Carriage\", \"Carriage Charges\", \"Insurance\",\r\n            \"Destination Terminal Charges\", \"Delivery to Destination\",\r\n            \"Unloading at Destination\", \"Import Duty, Taxes & Customs Clearance\"\r\n          ],\r\n          INCOTERMS: [\r\n            { code: \"EXW\", label: \"Ex Works (Place)\", risk: \"At Buyer's Disposal\", explain: \"The seller packs the goods and makes them available at their place (like a warehouse or factory). The buyer arranges and pays for everything else: loading, transport, insurance, export and import. The buyer takes the risk from the moment the goods are ready for pickup.\" },\r\n            { code: \"FCA\", label: \"Free Carrier (Place)\", risk: \"On Buyer's Transport\", explain: \"The seller delivers the goods, cleared for export, to the carrier or another person nominated by the buyer at the seller\u2019s premises or another named place. Buyer arranges and pays for the main transport. Risk moves to buyer when the goods are handed over.\" },\r\n            { code: \"FAS\", label: \"Free Alongside Ship (Port)\", risk: \"Alongside Ship\", explain: \"The seller brings the goods alongside the ship at the port of shipment. The buyer is responsible for loading, sea transport, insurance, and import. Risk passes when goods are beside the ship.\" },\r\n            { code: \"FOB\", label: \"Free On Board (Port)\", risk: \"On Board Vessel\", explain: \"The seller loads the goods onto the ship. The buyer pays for sea transport, insurance, and import duties. Risk passes when goods are on board.\" },\r\n            { code: \"CFR\", label: \"Cost and Freight (Port)\", risk: \"On Board Vessel\", explain: \"The seller pays for the sea transport to the destination port. The buyer pays for insurance and import costs. Risk passes once goods are on board the ship.\" },\r\n            { code: \"CIF\", label: \"Cost, Insurance & Freight (Port)\", risk: \"On Board Vessel\", explain: \"The seller pays for sea transport and insurance to the destination port. The buyer pays for import costs. Risk passes when the goods are on the ship.\" },\r\n            { code: \"CPT\", label: \"Carriage Paid To (Place)\", risk: \"At Carrier\", explain: \"The seller pays for delivery to a named place (could be buyer\u2019s country). Risk passes when goods are given to the first carrier. Buyer pays for import and insurance.\" },\r\n            { code: \"CIP\", label: \"Carriage & Insurance Paid To (Place)\", risk: \"At Carrier\", explain: \"The seller pays for delivery and insurance to the named place. Risk passes when goods are given to the first carrier.\" },\r\n            { code: \"DAP\", label: \"Delivered at Place (Place)\", risk: \"At Named Place\", explain: \"The seller pays all costs and carries all risks up to the delivery place (like the buyer\u2019s warehouse). Buyer is responsible for unloading and import costs. Risk passes at delivery.\" },\r\n            { code: \"DPU\", label: \"Delivered at Place Unloaded (Place)\", risk: \"At Named Place Unloaded\", explain: \"The seller delivers the goods, already unloaded, at the destination. Buyer arranges import. Risk passes after unloading at the named place.\" },\r\n            { code: \"DDP\", label: \"Delivered Duty Paid (Place)\", risk: \"At Named Place\", explain: \"The seller pays for everything, including import duties, and delivers goods to the buyer\u2019s location. Buyer just receives the goods. Risk passes when goods arrive.\" }\r\n          ],\r\n          BUYER: \"Buyer\",\r\n          SELLER: \"Seller\",\r\n          NEGOTIABLE: \"Negotiable\"\r\n        },\r\n        zh: {\r\n          SUBJECTS: [\r\n            \"\u51fa\u53e3\u5305\u88c5\", \"\u88c5\u8d27\u8d39\", \"\u8fd0\u81f3\u6e2f\u53e3\/\u5730\u70b9\", \"\u51fa\u53e3\u7a0e\/\u6e05\u5173\", \"\u59cb\u53d1\u5730\u7801\u5934\u8d39\",\r\n            \"\u88c5\u4e0a\u627f\u8fd0\u4eba\", \"\u8fd0\u8d39\", \"\u4fdd\u9669\", \"\u76ee\u7684\u5730\u7801\u5934\u8d39\", \"\u8fd0\u81f3\u76ee\u7684\u5730\", \"\u76ee\u7684\u5730\u5378\u8d27\", \"\u8fdb\u53e3\u7a0e\/\u6e05\u5173\"\r\n          ],\r\n          INCOTERMS: [\r\n            { code: \"EXW\", label: \"\u5de5\u5382\u4ea4\u8d27\uff08\u5730\u70b9\uff09\", risk: \"\u4e70\u65b9\u5904\u7f6e\", explain: \"\u5356\u65b9\u5728\u5176\u573a\u6240\uff08\u5982\u4ed3\u5e93\/\u5de5\u5382\uff09\u5305\u88c5\u5e76\u4ea4\u4ed8\u8d27\u7269\uff0c\u4e70\u65b9\u8d1f\u8d23\u540e\u7eed\u6240\u6709\u8d39\u7528\u548c\u98ce\u9669\uff0c\u5305\u62ec\u88c5\u8d27\u3001\u8fd0\u8f93\u3001\u4fdd\u9669\u3001\u51fa\u53e3\u548c\u8fdb\u53e3\u3002\u8d27\u7269\u53ef\u63d0\u65f6\u98ce\u9669\u8f6c\u79fb\u7ed9\u4e70\u65b9\u3002\" },\r\n            { code: \"FCA\", label: \"\u8d27\u4ea4\u627f\u8fd0\u4eba\uff08\u6307\u5b9a\u5730\u70b9\uff09\", risk: \"\u4e70\u65b9\u627f\u8fd0\u4eba\", explain: \"\u5356\u65b9\u5c06\u8d27\u7269\u6e05\u5173\u540e\u4ea4\u4ed8\u7ed9\u4e70\u65b9\u6307\u5b9a\u7684\u627f\u8fd0\u4eba\u6216\u5176\u4ed6\u4eba\uff0c\u53ef\u4ee5\u5728\u5356\u65b9\u573a\u6240\u6216\u5176\u4ed6\u6307\u5b9a\u5730\u70b9\u3002\u4e70\u65b9\u5b89\u6392\u5e76\u652f\u4ed8\u4e3b\u8981\u8fd0\u8f93\u3002\u8d27\u7269\u4ea4\u4ed8\u540e\u98ce\u9669\u8f6c\u79fb\u3002\" },\r\n            { code: \"FAS\", label: \"\u8239\u8fb9\u4ea4\u8d27\uff08\u88c5\u8fd0\u6e2f\uff09\", risk: \"\u8239\u8fb9\", explain: \"\u5356\u65b9\u5c06\u8d27\u7269\u9001\u81f3\u88c5\u8fd0\u6e2f\u7684\u8239\u8fb9\u3002\u4e70\u65b9\u8d1f\u8d23\u88c5\u8239\u3001\u6d77\u8fd0\u3001\u4fdd\u9669\u548c\u8fdb\u53e3\u3002\u98ce\u9669\u5728\u8d27\u7269\u5230\u8fbe\u8239\u8fb9\u65f6\u8f6c\u79fb\u3002\" },\r\n            { code: \"FOB\", label: \"\u8239\u4e0a\u4ea4\u8d27\uff08\u88c5\u8fd0\u6e2f\uff09\", risk: \"\u8239\u4e0a\", explain: \"\u5356\u65b9\u5c06\u8d27\u7269\u88c5\u4e0a\u8239\u3002\u4e70\u65b9\u652f\u4ed8\u6d77\u8fd0\u3001\u4fdd\u9669\u548c\u8fdb\u53e3\u7a0e\u3002\u8d27\u7269\u88c5\u8239\u540e\u98ce\u9669\u8f6c\u79fb\u3002\" },\r\n            { code: \"CFR\", label: \"\u6210\u672c\u52a0\u8fd0\u8d39\uff08\u76ee\u7684\u6e2f\uff09\", risk: \"\u8239\u4e0a\", explain: \"\u5356\u65b9\u652f\u4ed8\u6d77\u8fd0\u8d39\u5230\u76ee\u7684\u6e2f\u3002\u4e70\u65b9\u652f\u4ed8\u4fdd\u9669\u548c\u8fdb\u53e3\u8d39\u7528\u3002\u8d27\u7269\u88c5\u8239\u540e\u98ce\u9669\u8f6c\u79fb\u3002\" },\r\n            { code: \"CIF\", label: \"\u6210\u672c\u52a0\u4fdd\u9669\u8fd0\u8d39\uff08\u76ee\u7684\u6e2f\uff09\", risk: \"\u8239\u4e0a\", explain: \"\u5356\u65b9\u652f\u4ed8\u5230\u76ee\u7684\u6e2f\u7684\u6d77\u8fd0\u548c\u4fdd\u9669\u3002\u4e70\u65b9\u652f\u4ed8\u8fdb\u53e3\u8d39\u7528\u3002\u8d27\u7269\u88c5\u8239\u540e\u98ce\u9669\u8f6c\u79fb\u3002\" },\r\n            { code: \"CPT\", label: \"\u8fd0\u8d39\u4ed8\u81f3\uff08\u6307\u5b9a\u5730\u70b9\uff09\", risk: \"\u627f\u8fd0\u4eba\u5904\", explain: \"\u5356\u65b9\u652f\u4ed8\u8fd0\u9001\u5230\u6307\u5b9a\u5730\u70b9\u7684\u8d39\u7528\uff08\u53ef\u4ee5\u662f\u4e70\u65b9\u56fd\u5bb6\uff09\u3002\u8d27\u7269\u4ea4\u4ed8\u7ed9\u7b2c\u4e00\u627f\u8fd0\u4eba\u65f6\u98ce\u9669\u8f6c\u79fb\u3002\u4e70\u65b9\u652f\u4ed8\u8fdb\u53e3\u548c\u4fdd\u9669\u3002\" },\r\n            { code: \"CIP\", label: \"\u8fd0\u8d39\u4fdd\u9669\u8d39\u4ed8\u81f3\uff08\u6307\u5b9a\u5730\u70b9\uff09\", risk: \"\u627f\u8fd0\u4eba\u5904\", explain: \"\u5356\u65b9\u652f\u4ed8\u8fd0\u9001\u548c\u4fdd\u9669\u5230\u6307\u5b9a\u5730\u70b9\u3002\u8d27\u7269\u4ea4\u7ed9\u7b2c\u4e00\u627f\u8fd0\u4eba\u65f6\u98ce\u9669\u8f6c\u79fb\u3002\" },\r\n            { code: \"DAP\", label: \"\u4ea4\u8d27\u81f3\u6307\u5b9a\u5730\u70b9\uff08\u6307\u5b9a\u5730\u70b9\uff09\", risk: \"\u6307\u5b9a\u5730\u70b9\", explain: \"\u5356\u65b9\u627f\u62c5\u6240\u6709\u8d39\u7528\u548c\u98ce\u9669\u76f4\u81f3\u4ea4\u8d27\u5730\u70b9\uff08\u5982\u4e70\u65b9\u4ed3\u5e93\uff09\u3002\u4e70\u65b9\u8d1f\u8d23\u5378\u8d27\u548c\u8fdb\u53e3\u8d39\u7528\u3002\u8d27\u7269\u4ea4\u4ed8\u540e\u98ce\u9669\u8f6c\u79fb\u3002\" },\r\n            { code: \"DPU\", label: \"\u5378\u8d27\u540e\u4ea4\u8d27\uff08\u6307\u5b9a\u5730\u70b9\uff09\", risk: \"\u5378\u8d27\u6307\u5b9a\u5730\u70b9\", explain: \"\u5356\u65b9\u5728\u76ee\u7684\u5730\u5c06\u8d27\u7269\u5378\u8d27\u540e\u4ea4\u4ed8\u3002\u4e70\u65b9\u5b89\u6392\u8fdb\u53e3\u3002\u5378\u8d27\u540e\u98ce\u9669\u8f6c\u79fb\u3002\" },\r\n            { code: \"DDP\", label: \"\u5b8c\u7a0e\u540e\u4ea4\u8d27\uff08\u6307\u5b9a\u5730\u70b9\uff09\", risk: \"\u6307\u5b9a\u5730\u70b9\", explain: \"\u5356\u65b9\u652f\u4ed8\u6240\u6709\u8d39\u7528\u5305\u62ec\u8fdb\u53e3\u7a0e\uff0c\u5c06\u8d27\u7269\u9001\u8fbe\u4e70\u65b9\u3002\u4e70\u65b9\u53ea\u9700\u6536\u8d27\u3002\u8d27\u7269\u5230\u8fbe\u65f6\u98ce\u9669\u8f6c\u79fb\u3002\" }\r\n          ],\r\n          BUYER: \"\u4e70\u65b9\",\r\n          SELLER: \"\u5356\u65b9\",\r\n          NEGOTIABLE: \"\u53ef\u534f\u5546\"\r\n        },\r\n\tms: {\r\n    SUBJECTS: [\r\n      \"Pembungkusan Eksport\", \"Caj Memuatkan\", \"Penghantaran ke Pelabuhan\/Tempat\",\r\n      \"Duti, Cukai & Kastam Eksport\", \"Caj Terminal Asal\",\r\n      \"Memuat ke Pengangkut\", \"Caj Pengangkutan\", \"Insurans\",\r\n      \"Caj Terminal Destinasi\", \"Penghantaran ke Destinasi\",\r\n      \"Memunggah di Destinasi\", \"Duti, Cukai & Kastam Import\"\r\n    ],\r\n    INCOTERMS: [\r\n      { code: \"EXW\", label: \"Ex Works (Tempat)\", risk: \"Di Kawalan Pembeli\", explain: \"Penjual membungkus barang dan sediakan di tempat mereka (contoh: gudang\/kilang). Pembeli urus dan bayar semua perkara lain: pemuatan, pengangkutan, insurans, eksport & import. Risiko berpindah kepada pembeli selepas barang sedia untuk diambil.\" },\r\n      { code: \"FCA\", label: \"Free Carrier (Tempat)\", risk: \"Atas Pengangkut Pembeli\", explain: \"Penjual serah barang yang telah diuruskan eksport kepada pengangkut atau wakil pembeli di premis penjual atau tempat lain yang dipersetujui. Pembeli urus dan bayar pengangkutan utama. Risiko berpindah selepas penyerahan.\" },\r\n      { code: \"FAS\", label: \"Free Alongside Ship (Pelabuhan)\", risk: \"Di Sisi Kapal\", explain: \"Penjual letak barang di sisi kapal di pelabuhan penghantaran. Pembeli urus pemuatan, pengangkutan laut, insurans, & import. Risiko berpindah apabila barang di sisi kapal.\" },\r\n      { code: \"FOB\", label: \"Free On Board (Pelabuhan)\", risk: \"Di Atas Kapal\", explain: \"Penjual muat barang ke atas kapal. Pembeli bayar pengangkutan laut, insurans & cukai import. Risiko berpindah apabila barang di atas kapal.\" },\r\n      { code: \"CFR\", label: \"Cost and Freight (Pelabuhan)\", risk: \"Di Atas Kapal\", explain: \"Penjual bayar kos pengangkutan laut ke pelabuhan destinasi. Pembeli bayar insurans & kos import. Risiko berpindah selepas barang di atas kapal.\" },\r\n      { code: \"CIF\", label: \"Cost, Insurance & Freight (Pelabuhan)\", risk: \"Di Atas Kapal\", explain: \"Penjual bayar kos pengangkutan & insurans ke pelabuhan destinasi. Pembeli bayar kos import. Risiko berpindah apabila barang di atas kapal.\" },\r\n      { code: \"CPT\", label: \"Carriage Paid To (Tempat)\", risk: \"Kepada Pengangkut\", explain: \"Penjual bayar penghantaran ke tempat yang dipersetujui (boleh jadi negara pembeli). Risiko berpindah apabila barang diserah kepada pengangkut pertama. Pembeli bayar kos import & insurans.\" },\r\n      { code: \"CIP\", label: \"Carriage & Insurance Paid To (Tempat)\", risk: \"Kepada Pengangkut\", explain: \"Penjual bayar penghantaran dan insurans ke tempat dipersetujui. Risiko berpindah apabila barang diserah kepada pengangkut pertama.\" },\r\n      { code: \"DAP\", label: \"Delivered at Place (Tempat)\", risk: \"Di Tempat Ditentukan\", explain: \"Penjual bayar semua kos dan tanggung risiko hingga ke tempat penghantaran (contoh: gudang pembeli). Pembeli urus pemunggahan dan kos import. Risiko berpindah di tempat penghantaran.\" },\r\n      { code: \"DPU\", label: \"Delivered at Place Unloaded (Tempat)\", risk: \"Di Tempat Ditentukan (Dimunggah)\", explain: \"Penjual hantar barang (sudah dimunggah) ke destinasi. Pembeli urus import. Risiko berpindah selepas dimunggah di tempat itu.\" },\r\n      { code: \"DDP\", label: \"Delivered Duty Paid (Tempat)\", risk: \"Di Tempat Ditentukan\", explain: \"Penjual bayar semua, termasuk cukai import, dan hantar barang ke lokasi pembeli. Pembeli hanya terima barang. Risiko berpindah apabila barang sampai.\" }\r\n    ],\r\n    BUYER: \"Pembeli\",\r\n    SELLER: \"Penjual\",\r\n    NEGOTIABLE: \"Boleh Dirunding\"\r\n  }\r\n\t\r\n      };\r\n      const SUBJECT_ICONS = [\r\n        \"\ud83d\udce6\", \"\u23eb\", \"\ud83d\ude9a\", \"\ud83d\udec3\", \"\ud83c\udfed\", \"\u26f4\ufe0f\", \"\ud83d\udcb8\", \"\ud83d\udee1\ufe0f\", \"\ud83c\udfe2\", \"\ud83c\udfe0\", \"\ud83d\udce4\", \"\ud83d\udec2\"\r\n      ];\r\n      const OBLIGATION_MATRIX = [\r\n        [\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Buyer\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Buyer\",\"Buyer\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Negotiable\",\"Negotiable\",\"Negotiable\",\"Negotiable\",\"Buyer\",\"Seller\",\"Buyer\",\"Seller\",\"Buyer\",\"Buyer\",\"Buyer\"],\r\n        [\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Seller\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Seller\",\"Seller\"],\r\n        [\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Buyer\",\"Seller\"]\r\n      ];\r\n      let selected = 0, dragging = false, currLang = \"en\";\r\n      function renderBar() {\r\n        const cont = document.getElementById('chartBarContainer');\r\n        cont.innerHTML = '';\r\n        const barTrack = document.createElement('div');\r\n        barTrack.className = 'bar-track';\r\n        cont.appendChild(barTrack);\r\n        const labelRow = document.createElement('div');\r\n        labelRow.className = 'bar-labels';\r\n        LANG[currLang].INCOTERMS.forEach((inc, i) => {\r\n          const lab = document.createElement('div');\r\n          lab.className = 'incoterm-label' + (i===selected?' active':'');\r\n          lab.innerHTML = `\r\n            <span class=\"short\">${inc.code}<\/span>\r\n            <div style=\"height:22px\"><\/div>\r\n            <div class=\"bar-stop-dot${i===selected?' active':''}\"><\/div>\r\n          `;\r\n          lab.onclick = () => { selected=i; renderAll(); }\r\n          labelRow.appendChild(lab);\r\n        });\r\n        cont.appendChild(labelRow);\r\n        setTimeout(() => {\r\n          const selectedLabel = document.querySelector(`.incoterm-label.active`);\r\n          if (selectedLabel) {\r\n            const labelRect = selectedLabel.getBoundingClientRect();\r\n            const parentRect = cont.getBoundingClientRect();\r\n            const shipLeft = (labelRect.left + labelRect.width \/ 2) - parentRect.left;\r\n            const ship = document.createElement('span');\r\n            ship.className = 'ship-icon';\r\n            ship.style.left = `calc(${shipLeft}px - 24px)`;\r\n            ship.innerHTML = `\r\n              \ud83d\udea2\r\n              <span class=\"ship-label-bubble\">${LANG[currLang].INCOTERMS[selected].label}<\/span>\r\n            `;\r\n            cont.appendChild(ship);\r\n            ship.onmousedown = (e) => { dragging = true; document.body.style.userSelect='none'; };\r\n            document.onmousemove = (e) => {\r\n              if(!dragging) return;\r\n              const barLabels = document.querySelectorAll('.incoterm-label');\r\n              let found = -1;\r\n              barLabels.forEach((el, idx) => {\r\n                const rect = el.getBoundingClientRect();\r\n                if (e.clientX >= rect.left && e.clientX <= rect.right) found = idx;\r\n              });\r\n              if(found!==-1 && found!==selected){selected=found; renderAll();}\r\n            };\r\n            document.onmouseup = ()=>{dragging=false;document.body.style.userSelect='';};\r\n            ship.ontouchstart = ()=>{dragging=true;};\r\n            document.ontouchmove = (e)=>{\r\n              if(!dragging) return;\r\n              const touch = e.touches[0];\r\n              const barLabels = document.querySelectorAll('.incoterm-label');\r\n              let found = -1;\r\n              barLabels.forEach((el, idx) => {\r\n                const rect = el.getBoundingClientRect();\r\n                if (touch.clientX >= rect.left && touch.clientX <= rect.right) found = idx;\r\n              });\r\n              if(found!==-1 && found!==selected){selected=found; renderAll();}\r\n            };\r\n            document.ontouchend = ()=>{dragging=false;};\r\n          }\r\n        }, 0);\r\n      }\r\n      function renderExplanation() {\r\n        const inc = LANG[currLang].INCOTERMS[selected];\r\n        document.getElementById('explanationCard').innerHTML = `\r\n          <div class=\"explanation-card-title\">${inc.code}: ${inc.label}<\/div>\r\n          <div>${inc.explain}<\/div>\r\n        `;\r\n      }\r\n      function renderRisk() {\r\n        const inc = LANG[currLang].INCOTERMS[selected];\r\n        document.getElementById('riskLabel').innerHTML = `\r\n          <b>${currLang === \"zh\" ? \"\u98ce\u9669\u8f6c\u79fb\u70b9\" : \"Transfer of Risk\"}:<\/b> <span style=\"color:#d6333b\">${inc.risk}<\/span>\r\n        `;\r\n      }\r\n      function renderTable() {\r\n        let html = `<table class=\"interactive-table\"><tr>`;\r\n        html += `<th class=\"subject\"><\/th>`;\r\n        LANG[currLang].SUBJECTS.forEach((s,ci) => {\r\n          html += `<th class=\"subject\">\r\n            <span class=\"subject-icon\">${SUBJECT_ICONS[ci]}<\/span>\r\n            ${s}\r\n          <\/th>`;\r\n        });\r\n        html += `<\/tr>`;\r\n        LANG[currLang].INCOTERMS.forEach((inc, r) => {\r\n          let isSelected = (selected === r);\r\n          html += `<tr${isSelected ? ' class=\"highlight-row\"' : ''}>`;\r\n          html += `<th class=\"incoterm\">\r\n              ${inc.code}\r\n              <span style=\"font-weight:normal;color:#eee;font-size:11px;margin-left:4px;\">${inc.label.replace(\/^\\w+\\s\/,'')}<\/span>\r\n            <\/th>`;\r\n          LANG[currLang].SUBJECTS.forEach((s,c) => {\r\n            let cell = OBLIGATION_MATRIX[c][r];\r\n            let classList = [];\r\n            if(cell===\"Seller\") classList.push(\"seller\");\r\n            if(cell===\"Buyer\") classList.push(\"buyer\");\r\n            if(cell===\"Negotiable\") classList.push(\"negotiable\");\r\n            html += `<td class=\"${classList.join(' ')}\">${\r\n              cell===\"Seller\"?LANG[currLang].SELLER:(cell===\"Buyer\"?LANG[currLang].BUYER:LANG[currLang].NEGOTIABLE)\r\n            }<\/td>`;\r\n          });\r\n          html += `<\/tr>`;\r\n        });\r\n        html += `<\/table>`;\r\n        document.getElementById('interactiveTable').innerHTML = html;\r\n      }\r\n      function renderAll() {\r\n        renderBar();\r\n        renderExplanation();\r\n        renderRisk();\r\n        renderTable();\r\n      }\r\n      document.getElementById('langSelect').onchange = function() {\r\n        currLang = this.value;\r\n        renderAll();\r\n      }\r\n      renderAll();\r\n    });\r\n    <\/script>\r\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Incoterms Tool to Choose the Right Shipping Terms Struggling to decide which shipping terms are best for your business? With our Incoterms tool to choose the right trade terms, you can simplify your logistics, reduce miscommunication, and improve efficiency in international deals. Just answer a few simple questions, and let the tool recommend the most [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"cybocfi_hide_featured_image":"","footnotes":""},"class_list":["post-12147","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/pages\/12147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/comments?post=12147"}],"version-history":[{"count":35,"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/pages\/12147\/revisions"}],"predecessor-version":[{"id":13184,"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/pages\/12147\/revisions\/13184"}],"wp:attachment":[{"href":"https:\/\/stooper.co\/zh\/wp-json\/wp\/v2\/media?parent=12147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}