{"id":1194,"date":"2026-08-18T14:54:41","date_gmt":"2026-08-18T14:54:41","guid":{"rendered":"https:\/\/sinosportbike.com\/?page_id=1194"},"modified":"2026-08-20T19:33:24","modified_gmt":"2026-08-20T19:33:24","slug":"oem-customization","status":"publish","type":"page","link":"https:\/\/sinosportbike.com\/ru\/oem-customization\/","title":{"rendered":"\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0446\u0438\u0442\u0430\u0442\u0430"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1194\" class=\"elementor elementor-1194\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-84b6491 e-con e-atomic-element e-div-block-base e-84b6491-4516ef0 \" data-id=\"84b6491\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"84b6491\" data-e-type=\"e-div-block\" data-id=\"84b6491\">\n    \t\t<div class=\"elementor-element elementor-element-aa95157 elementor-widget elementor-widget-html\" data-id=\"aa95157\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"zh-CN\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <style>\r\n        *{margin:0;padding:0;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;}\r\n        body{background:transparent;}\r\n        .quote-wrapper{max-width:100%;margin:0 auto;padding:0;}\r\n        .quote-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid #1677ff;}\r\n        .quote-toolbar-title{font-size:20px;font-weight:700;color:#1a1a1a;letter-spacing:0.5px;}\r\n        .lang-switch{display:flex;gap:6px;}\r\n        .lang-btn{background:#f0f5ff;color:#1677ff;border:1px solid #d6e4ff;padding:6px 14px;border-radius:6px;font-size:13px;cursor:pointer;font-weight:500;transition:all 0.2s;}\r\n        .lang-btn:hover{background:#e6f0ff;}\r\n        .lang-btn.active{background:linear-gradient(135deg,#1677ff 0%,#0052d9 100%);color:white;border-color:#1677ff;}\r\n        .fixed-notice{background:linear-gradient(135deg,#fff7e6 0%,#ffe7ba 100%);border:1px solid #ffd591;border-radius:8px;padding:14px 16px;color:#d46b08;font-size:14px;margin-bottom:16px;display:none;line-height:1.6;}\r\n        .fixed-notice.show{display:block;}\r\n        .card{background:white;border-radius:12px;padding:20px 24px;margin-bottom:16px;box-shadow:0 2px 12px rgba(0,0,0,0.06);border:1px solid #f0f0f0;}\r\n        .card-title{font-size:16px;font-weight:600;color:#1a1a1a;margin-bottom:16px;display:flex;align-items:center;gap:8px;padding-bottom:10px;border-bottom:1px solid #f0f0f0;}\r\n        .card-title::before{content:'';width:4px;height:18px;background:linear-gradient(180deg,#1677ff 0%,#0052d9 100%);border-radius:2px;}\r\n        .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}\r\n        .form-item{margin-bottom:0;}\r\n        .form-item.full{grid-column:1 \/ -1;}\r\n        .label{font-size:14px;color:#555;margin-bottom:8px;display:block;font-weight:500;}\r\n        select{width:100%;height:44px;border:1px solid #d9d9d9;border-radius:8px;padding:0 12px;font-size:14px;color:#333;background:#fafafa;outline:none;transition:all 0.3s;cursor:pointer;}\r\n        select:hover{border-color:#4096ff;}\r\n        select:focus{border-color:#1677ff;background:white;box-shadow:0 0 0 3px rgba(22,119,255,0.1);}\r\n        select:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;}\r\n        .info-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0;font-size:14px;}\r\n        .info-row:last-child{border-bottom:none;}\r\n        .info-label{color:#666;}\r\n        .info-value{color:#333;font-weight:600;}\r\n        .info-value.highlight{color:#1677ff;font-weight:700;font-size:16px;}\r\n        .mod-list{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;}\r\n        .mod-item{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #f5f5f5;}\r\n        .mod-info{flex:1;}\r\n        .mod-name{font-size:14px;color:#333;}\r\n        .mod-name .badge{display:inline-block;background:#e6f7ff;color:#1890ff;font-size:10px;padding:1px 6px;border-radius:4px;margin-left:6px;font-weight:500;}\r\n        .mod-price{font-size:12px;color:#ff4d4f;margin-top:3px;font-weight:500;}\r\n        .mod-price.included{color:#52c41a;}\r\n        .switch{position:relative;width:44px;height:24px;background:#e5e5e5;border-radius:12px;cursor:pointer;transition:all 0.3s;flex-shrink:0;}\r\n        .switch.active{background:#1677ff;}\r\n        .switch.locked{cursor:not-allowed;opacity:0.8;}\r\n        .switch::after{content:'';position:absolute;width:20px;height:20px;background:white;border-radius:50%;top:2px;left:2px;transition:all 0.3s;box-shadow:0 1px 3px rgba(0,0,0,0.2);}\r\n        .switch.active::after{left:22px;}\r\n        .warning{background:#fff2f0;border:1px solid #ffccc7;border-radius:8px;padding:14px 16px;color:#ff4d4f;font-size:13px;margin-bottom:16px;display:none;line-height:1.8;}\r\n        .warning.show{display:block;}\r\n        .success{background:#f6ffed;border:1px solid #b7eb8f;color:#389e0d;}\r\n        .total-card{background:linear-gradient(135deg,#1677ff 0%,#0052d9 100%);border-radius:12px;padding:24px;margin-bottom:16px;color:white;display:flex;justify-content:space-between;align-items:center;box-shadow:0 4px 16px rgba(22,119,255,0.3);}\r\n        .total-label{font-size:15px;opacity:0.9;margin-bottom:4px;}\r\n        .total-price{font-size:32px;font-weight:bold;}\r\n        .btn{background:white;color:#1677ff;border:none;padding:14px 36px;border-radius:28px;font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,0.15);transition:all 0.2s;}\r\n        .btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,0.2);}\r\n        .btn:active{transform:scale(0.98);}\r\n        .btn:disabled{background:rgba(255,255,255,0.4);color:rgba(255,255,255,0.7);cursor:not-allowed;box-shadow:none;transform:none;}\r\n        .modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);display:none;justify-content:center;align-items:center;z-index:9999;padding:20px;}\r\n        .modal.show{display:flex;}\r\n        .modal-content{background:white;border-radius:16px;padding:28px;width:100%;max-width:480px;max-height:85vh;overflow-y:auto;}\r\n        .modal-title{font-size:20px;font-weight:700;text-align:center;margin-bottom:24px;color:#1a1a1a;}\r\n        .quote-item{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px dashed #eee;font-size:14px;color:#333;}\r\n        .quote-item.included-item{color:#52c41a;}\r\n        .modal-actions{display:flex;gap:10px;margin-top:20px;}\r\n        .qty-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-top:1px dashed #eee;margin-top:8px;}\r\n        .qty-label{font-size:14px;color:#555;font-weight:600;}\r\n        .qty-control{display:flex;align-items:center;gap:8px;}\r\n        .qty-btn{width:32px;height:32px;border:1px solid #d9d9d9;background:#fafafa;border-radius:6px;font-size:18px;cursor:pointer;color:#333;display:flex;align-items:center;justify-content:center;line-height:1;}\r\n        .qty-btn:hover{background:#e6f0ff;border-color:#1677ff;color:#1677ff;}\r\n        .qty-input{width:60px;height:32px;text-align:center;border:1px solid #d9d9d9;border-radius:6px;font-size:14px;outline:none;}\r\n        .qty-input:focus{border-color:#1677ff;box-shadow:0 0 0 2px rgba(22,119,255,0.1);}\r\n        .grand-total-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-top:2px solid #222;margin-top:4px;font-size:20px;font-weight:bold;color:#ff4d4f;}\r\n        .discount-badge{display:inline-block;background:linear-gradient(135deg,#ff4d4f 0%,#ff7875 100%);color:white;font-size:11px;padding:2px 8px;border-radius:10px;margin-left:8px;font-weight:600;}\r\n        .original-price-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:13px;color:#999;}\r\n        .original-price-value{text-decoration:line-through;}\r\n        .discount-info-row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#fff7e6;border-radius:6px;margin:8px 0;font-size:13px;color:#d46b08;}\r\n        .saved-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:14px;color:#52c41a;font-weight:600;}\r\n        .modal-close{flex:1;background:#f5f5f5;color:#666;padding:14px;border-radius:8px;border:none;font-size:15px;cursor:pointer;font-weight:500;transition:all 0.2s;}\r\n        .modal-close:hover{background:#e8e8e8;}\r\n        .btn-pdf{flex:1;background:linear-gradient(135deg,#1677ff 0%,#0052d9 100%);color:white;padding:14px;border-radius:8px;border:none;font-size:15px;cursor:pointer;font-weight:600;transition:all 0.2s;box-shadow:0 2px 8px rgba(22,119,255,0.3);}\r\n        .btn-pdf:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(22,119,255,0.4);}\r\n        .btn-pdf:active{transform:scale(0.98);}\r\n        @media(max-width:600px){.form-grid{grid-template-columns:1fr;}.mod-list{grid-template-columns:1fr;}.total-card{flex-direction:column;gap:16px;text-align:center;}.quote-toolbar{flex-direction:column;gap:12px;align-items:flex-start;}.modal-actions{flex-direction:column;}}\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div class=\"quote-wrapper\">\r\n        <div class=\"quote-toolbar\">\r\n            <div class=\"quote-toolbar-title\" data-i18n=\"pageTitle\">\u5728\u7ebf\u62a5\u4ef7\u7cfb\u7edf<\/div>\r\n            <div class=\"lang-switch\">\r\n                <button class=\"lang-btn active\" data-lang=\"zh\" onclick=\"switchLang('zh')\">\u4e2d\u6587<\/button>\r\n                <button class=\"lang-btn\" data-lang=\"en\" onclick=\"switchLang('en')\">EN<\/button>\r\n                <button class=\"lang-btn\" data-lang=\"ru\" onclick=\"switchLang('ru')\">RU<\/button>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"fixed-notice\" id=\"fixedNotice\"><\/div>\r\n        <div class=\"card\">\r\n            <div class=\"card-title\" data-i18n=\"baseConfig\">\u57fa\u7840\u8f66\u578b\u914d\u7f6e<\/div>\r\n            <div class=\"form-grid\">\r\n                <div class=\"form-item full\"><label class=\"label\" data-i18n=\"selectModel\">\u9009\u62e9\u8f66\u578b<\/label><select id=\"carModel\"><\/select><\/div>\r\n                <div class=\"form-item\"><label class=\"label\" data-i18n=\"motorType\">\u7535\u673a\u7c7b\u578b<\/label><select id=\"motorType\"><\/select><\/div>\r\n                <div class=\"form-item\"><label class=\"label\" data-i18n=\"motorPower\">\u7535\u673a\u529f\u7387<\/label><select id=\"motorPower\"><\/select><\/div>\r\n                <div class=\"form-item full\"><div class=\"info-row\"><span class=\"info-label\" data-i18n=\"maxSpeed\">\u6700\u9ad8\u65f6\u901f<\/span><span class=\"info-value highlight\" id=\"maxSpeed\">80 km\/h<\/span><\/div><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"card\">\r\n            <div class=\"card-title\" data-i18n=\"batteryConfig\">\u7535\u6c60\u914d\u7f6e<\/div>\r\n            <div class=\"form-grid\">\r\n                <div class=\"form-item\"><label class=\"label\" data-i18n=\"batteryType\">\u7535\u6c60\u7c7b\u578b<\/label><select id=\"battType\"><\/select><\/div>\r\n                <div class=\"form-item\"><label class=\"label\" data-i18n=\"batteryCap\">\u7535\u6c60\u5bb9\u91cf<\/label><select id=\"battCap\"><\/select><\/div>\r\n                <div class=\"form-item full\"><div class=\"info-row\"><span class=\"info-label\" data-i18n=\"range\">\u7eed\u822a\u91cc\u7a0b<\/span><span class=\"info-value highlight\" id=\"rangeKm\">80 km<\/span><\/div><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"warning\" id=\"configWarning\"><\/div>\r\n        <div class=\"card\" id=\"modCard\">\r\n            <div class=\"card-title\" data-i18n=\"upgradeItems\">\u6539\u88c5\u5347\u7ea7\u9879\u76ee<\/div>\r\n            <div class=\"mod-list\" id=\"modList\"><\/div>\r\n        <\/div>\r\n        <div class=\"card\"><div class=\"card-title\" data-i18n=\"packaging\">\u51fa\u53e3\u5305\u88c5<\/div><select id=\"packType\"><\/select><\/div>\r\n        <div class=\"total-card\">\r\n            <div><div class=\"total-label\" data-i18n=\"totalLabel\">\u51fa\u5382\u603b\u4ef7\uff08\u542b\u5229\u6da6\uff09<\/div><div class=\"total-price\" id=\"totalPrice\">\u00a59,550<\/div><\/div>\r\n            <button class=\"btn\" id=\"quoteBtn\" data-i18n=\"genQuote\" onclick=\"showQuote()\">\u751f\u6210\u62a5\u4ef7\u5355<\/button>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"modal\" id=\"quoteModal\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-title\" data-i18n=\"quoteTitle\">\ud83d\udccb \u914d\u7f6e\u62a5\u4ef7\u5355<\/div>\r\n            <div id=\"quoteDetail\"><\/div>\r\n            <div class=\"modal-actions\">\r\n                <button class=\"btn-pdf\" data-i18n=\"downloadPdf\" onclick=\"downloadPdf()\">\ud83d\udcc4 \u4e0b\u8f7dPDF<\/button>\r\n                <button class=\"modal-close\" data-i18n=\"closeBtn\" onclick=\"closeModal()\">\u5173\u95ed<\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<script>\r\nconst i18n={\r\n    zh:{\r\n        pageTitle:'\u5728\u7ebf\u62a5\u4ef7\u7cfb\u7edf',baseConfig:'\u57fa\u7840\u8f66\u578b\u914d\u7f6e',selectModel:'\u9009\u62e9\u8f66\u578b',motorType:'\u7535\u673a\u7c7b\u578b',motorPower:'\u7535\u673a\u529f\u7387',maxSpeed:'\u6700\u9ad8\u65f6\u901f',\r\n        batteryConfig:'\u7535\u6c60\u914d\u7f6e',batteryType:'\u7535\u6c60\u7c7b\u578b',batteryCap:'\u7535\u6c60\u5bb9\u91cf',range:'\u7eed\u822a\u91cc\u7a0b',upgradeItems:'\u6539\u88c5\u5347\u7ea7\u9879\u76ee',packaging:'\u51fa\u53e3\u5305\u88c5',\r\n        totalLabel:'\u51fa\u5382\u603b\u4ef7\uff08\u542b\u5229\u6da6\uff09',genQuote:'\u751f\u6210\u62a5\u4ef7\u5355',quoteTitle:'\ud83d\udccb \u914d\u7f6e\u62a5\u4ef7\u5355',closeBtn:'\u5173\u95ed',downloadPdf:'\ud83d\udcc4 \u4e0b\u8f7dPDF',\r\n        pdfHint:'\u5728\u5f39\u51fa\u7684\u6253\u5370\u7a97\u53e3\u4e2d\uff0c\u9009\u62e9\u300c\u53e6\u5b58\u4e3aPDF\u300d\u5373\u53ef\u4fdd\u5b58\u62a5\u4ef7\u5355',\r\n        fixedNotice:'\u2705 \u6b64\u4e3a\u6c34\u51b7\u5168\u5305\u6574\u8f66\uff0c\u4ef7\u683c\u5df2\u5305\u542b\u5168\u5957\u6807\u914d\u3001\u5305\u88c5\u3001\u8fd0\u8425\u5229\u6da6\uff0c\u914d\u7f6e\u56fa\u5b9a\u4e0d\u53ef\u4fee\u6539',\r\n        motorDefaultNotice:'\u2705 \u5f53\u524d\u7535\u673a\u5df2\u9ed8\u8ba4\u5305\u542b{0}\uff0c\u4e0d\u53ef\u53d6\u6d88',\r\n        configOk:'\u2705 \u6240\u6709\u914d\u7f6e\u5339\u914d\u6b63\u5e38',fixedConfigOk:'\u2705 \u65d7\u8230\u56fa\u5b9a\u914d\u7f6e\uff0c\u6240\u6709\u914d\u4ef6\u5b8c\u7f8e\u5339\u914d',\r\n        err_leadAcid:'\u26a0\ufe0f \u94c5\u9178\u7535\u6c60\u4ec5\u9650\u8f6e\u6bc2\u7535\u673a3000W\/4000W\u4f7f\u7528',\r\n        err_battPower:'\u26a0\ufe0f \u7535\u6c60\u529f\u7387\u4e0d\u8db3\uff01\u7535\u673a{0}W > \u7535\u6c60\u6700\u5927{1}W',\r\n        err_battPeakPower:'\u26a0\ufe0f \u4e2d\u7f6e\u7535\u673a\u9700\u66f4\u5927\u7535\u6c60\uff01\u7535\u673a\u5cf0\u503c{0}W > \u7535\u6c60\u603b\u529f\u7387{1}W\uff0884V\u00d7\u5bb9\u91cf\uff09',\r\n        err_qs10kwBatt:'\u26a0\ufe0f QS\u76ae\u5e2610kW\u7535\u673a\u6700\u4f4e\u9700120ah\u7535\u6c60\uff0c\u5f53\u524d{0}ah\u4e0d\u6ee1\u8db3\u8981\u6c42',\r\n        err_bremboFork:'\u26a0\ufe0f \u9009\u62e9\u9ad8\u6027\u80fd\u6469\u6258\u8f66\u5361\u94b3\u5fc5\u987b\u642d\u914d\u5012\u7f6e\u524d\u51cf\u9707',\r\n        err_absCbs:'\u26a0\ufe0f ABS\u4e0eCBS\u5239\u8f66\u4e0d\u53ef\u540c\u65f6\u9009\u7528',err_wideWheel:'\u26a0\ufe0f \u52a0\u5bbd\u94dd\u5408\u91d1\u6447\u81c2\u9700\u642d\u914d\u52a0\u5f3a\u8f6e\u6bc2',\r\n        err_tpmsTft:'\u26a0\ufe0f \u80ce\u538b\u76d1\u6d4b\u7cfb\u7edf(TPMS)\u5fc5\u987b\u5148\u9009\u914dTFT\u667a\u80fd\u4eea\u8868',err_strongTire:'\u26a0\ufe0f \u9009\u62e9\u52a0\u5f3a\u7248\u8f6e\u6bc2\u5fc5\u987b\u642d\u914d\u52a0\u5bbd\u540e\u8f6e\u80ce',err_timsun180Wheel:'\u26a0\ufe0f \u9009\u62e9180mm\u8f6e\u80ce\u5fc5\u987b\u642d\u914d\u52a0\u5f3a\u7248\u8f6e\u6bc2',err_singleArmTire:'\u26a0\ufe0f \u5355\u8fb9\u6447\u81c2\u7535\u673a\u5fc5\u987b\u9009\u62e9200mm\u6216180mm\u8f6e\u80ce',err_swingarmExclusive:'\u26a0\ufe0f \u94dd\u5408\u91d1\u6447\u81c2\u4e0e\u52a0\u5bbd\u94dd\u5408\u91d1\u6447\u81c2\u53ea\u80fd\u9009\u62e9\u4e00\u4e2a',gift:'\u8d60\u9001',wideWheelGift:'\u968f\u52a0\u5bbd\u6447\u81c2\u8d60\u9001',upgrade180Hint:'\u53ef\u5347\u7ea7180mm TIMSUN +\u00a5650',qty:'\u6570\u91cf',grandTotal:'\u603b\u91d1\u989d',batchDiscount:'\u6279\u91cf\u6298\u6263',originalPrice:'\u539f\u4ef7',discountPrice:'\u6298\u6263\u4ef7',saved:'\u8282\u7701',profitPerUnit:'\u6bcf\u8f86\u5229\u6da6',\r\n        alert_invalid:'\u26a0\ufe0f \u914d\u7f6e\u5b58\u5728\u95ee\u9898\uff0c\u8bf7\u5148\u4fee\u6b63\u4e0a\u65b9\u7ea2\u8272\u8b66\u544a\u9879\u540e\u518d\u751f\u6210\u62a5\u4ef7\u5355',\r\n        waterCoolPackage:'\ud83c\udfc6 \u6c34\u51b7\u6574\u8f66\u5168\u5305\u4e00\u53e3\u4ef7',included:'\u5df2\u5305\u542b',stdMods:'\u6807\u914d\u5305\u542b\u6539\u88c5\uff1a',\r\n        motorIncluded:'\u7535\u673a\u6807\u914d',\r\n        finalTotal:'\u6700\u7ec8\u603b\u4ef7',priceInclude:'\u4ef7\u683c\u5305\u542b\u7535\u673a\/\u7535\u6c60\/\u5168\u5957\u6539\u88c5\/\u5305\u88c5\/\u8fd0\u8425\u5229\u6da6\uff0c\u65e0\u989d\u5916\u52a0\u4ef7',priceExclude:'\u4ef7\u683c\u4e0d\u542b\u8fd0\u8d39\u5173\u7a0e',\r\n        noMod:'\u65e0\u6539\u88c5',subTotal:'\u5408\u8ba1\u603b\u4ef7',model:'\u8f66\u578b',motor:'\u7535\u673a',battery:'\u7535\u6c60',pack:'\u5305\u88c5',profit:'\u8fd0\u8425\u5229\u6da6',\r\n        desc_sport:'\u8fd0\u52a8\u6b3e',desc_street:'\u8857\u8f66\u6b3e',desc_race:'\u8dd1\u8f66\u6b3e',desc_rally:'\u62c9\u529b\u6b3e',\r\n        desc_retro:'\u590d\u53e4\u6b3e',desc_pteroBase:'\u7ffc\u9f99\u57fa\u7840\u6b3e',desc_water10:'10KW\u6c34\u51b7\u6574\u8f66',desc_water15:'15KW\u6c34\u51b7\u6574\u8f66',\r\n        mt_hub:'\u8f6e\u6bc2\u7535\u673a',mt_central:'\u4e2d\u592e\u7535\u673a\uff08\u94fe\u6761\u4f20\u52a8\uff09',mt_belt:'QS\u76ae\u5e26\u7535\u673a\uff08\u4e2d\u7f6e\u4f20\u52a8\uff09',mt_water:'\u6c34\u51b7\u7535\u673a\uff08\u9ad8\u6027\u80fd\uff09',\r\n        mt_singleSwingarm:'\u5355\u8fb9\u6447\u81c2\u7535\u673a',\r\n        bt_lithium:'\u9502\u7535\u6c60\uff08\u8f66\u89c4\u7ea7\u9502\u7535\u6c60\uff09',bt_leadAcid:'\u94c5\u9178\u7535\u6c60\uff08\u4ec5\u96503000\/4000W\u8f6e\u6bc2\uff09',\r\n        pack_std:'\u6807\u51c6\u51fa\u53e3\u5305\u88c5',pack_reinforced:'\u52a0\u56fa\u5305\u88c5',pack_wood:'\u5168\u5c01\u95ed\u6728\u7bb1',speedUnit:'km\/h',rangeUnit:'km',\r\n        mod_fork:'\u5347\u7ea7\u5012\u7f6e\u524d\u51cf\u9707',mod_caliper:'\u9ad8\u7aef4\u6d3b\u585e\u5361\u94b3',mod_brembo:'\u9ad8\u6027\u80fd\u6469\u6258\u8f66\u5361\u94b3',mod_abs:'ABS\u5239\u8f66\u7cfb\u7edf',mod_cbs:'CBS\u8054\u52a8\u5239\u8f66',\r\n        mod_swingarm:'\u94dd\u5408\u91d1\u6447\u81c2',mod_wideWheel:'\u52a0\u5bbd\u94dd\u5408\u91d1\u6447\u81c2',mod_tft:'TFT\u667a\u80fd\u4eea\u8868',mod_tpms:'\u80ce\u538b\u76d1\u6d4b\u7cfb\u7edf(TPMS)',\r\n        mod_tire:'\u52a0\u5bbd\u540e\u8f6e\u80ce(200\/55-17)',mod_throttle:'\u9ad8\u7aef\u9632\u6c34\u63e1\u628a',mod_rearShock:'\u540e\u6c14\u56ca\u51cf\u9707',mod_type2:'Type2\u5145\u7535\u67aa\u6a21\u5f0f',\r\n        mod_rotor:'\u6d6e\u52a8\u5239\u8f66\u76d8\uff08\u6469\u6258\u8f66\uff09',mod_strongWheel:'\u52a0\u5f3a\u7248\u8f6e\u6bc2',mod_timsun150:'TIMSUN\u8f6e\u80ce\uff08\u524d\u8f6e110mm\u540e\u8f6e150mm\uff09',mod_timsun180:'TIMSUN\u8f6e\u80ce\uff08\u524d\u8f6e120mm\u540e\u8f6e180mm\uff09',\r\n        packName_ironCarton:'\u94c1\u67b6+\u7eb8\u7bb1',packName_ironWood:'\u94c1\u67b6+\u6728\u7247',packName_woodBox:'\u6728\u7bb1',\r\n        companyName:'Wuxi Shawloong Energy Technology Co., LTD.',\r\n        contactInfo:'Tony: +8618114085520 \/ Wechat: Topnas \/ Email: Tony@shawloong.com'\r\n    },\r\n    en:{\r\n        pageTitle:'Online Quote System',baseConfig:'Base Model Configuration',selectModel:'Select Model',motorType:'Motor Type',motorPower:'Motor Power',maxSpeed:'Top Speed',\r\n        batteryConfig:'Battery Configuration',batteryType:'Battery Type',batteryCap:'Battery Capacity',range:'Range',upgradeItems:'Upgrade & Modifications',packaging:'Export Packaging',\r\n        totalLabel:'Total Price (incl. profit)',genQuote:'Generate Quote',quoteTitle:'\ud83d\udccb Configuration Quote',closeBtn:'Close',downloadPdf:'\ud83d\udcc4 Download PDF',\r\n        pdfHint:'In the print dialog, select \"Save as PDF\" to save the quote',\r\n        fixedNotice:'\u2705 Water-cooled complete package, all standard accessories, packaging and profit included. Configuration is fixed.',\r\n        motorDefaultNotice:'\u2705 Current motor includes {0} by default, cannot be removed',\r\n        configOk:'\u2705 All configurations match correctly',fixedConfigOk:'\u2705 Flagship fixed configuration, all parts perfectly matched',\r\n        err_leadAcid:'\u26a0\ufe0f Lead-acid battery only for 3000W\/4000W hub motor',\r\n        err_battPower:'\u26a0\ufe0f Battery power insufficient! Motor {0}W > Battery max {1}W',\r\n        err_battPeakPower:'\u26a0\ufe0f Mid-drive motor needs larger battery! Peak {0}W > Battery total {1}W (84V\u00d7Ah)',\r\n        err_qs10kwBatt:'\u26a0\ufe0f QS Belt 10kW requires minimum 120ah battery, current {0}ah is insufficient',\r\n        err_bremboFork:'\u26a0\ufe0f High-performance caliper requires inverted front fork',\r\n        err_absCbs:'\u26a0\ufe0f ABS and CBS cannot be selected together',err_wideWheel:'\u26a0\ufe0f Wide aluminum swingarm requires reinforced wheel hub',\r\n        err_tpmsTft:'\u26a0\ufe0f TPMS requires TFT smart dashboard first',err_strongTire:'\u26a0\ufe0f Reinforced wheel hub requires wide rear tire',err_timsun180Wheel:'\u26a0\ufe0f 180mm tires require reinforced wheel hub',err_singleArmTire:'\u26a0\ufe0f Single-sided swingarm motor requires 200mm or 180mm tire',err_swingarmExclusive:'\u26a0\ufe0f Aluminum swingarm and wide swingarm: select only one',gift:'Free Gift',wideWheelGift:'Free with wide swingarm',upgrade180Hint:'Upgrade to 180mm TIMSUN +\u00a5650',qty:'Quantity',grandTotal:'Grand Total',batchDiscount:'Bulk Discount',originalPrice:'Original Price',discountPrice:'Discount Price',saved:'You Save',profitPerUnit:'Profit\/Unit',\r\n        alert_invalid:'\u26a0\ufe0f Configuration issues found. Please fix the red warnings above before generating a quote.',\r\n        waterCoolPackage:'\ud83c\udfc6 Water-Cooled Complete Package',included:'Included',stdMods:'Standard upgrades included:',\r\n        motorIncluded:'Motor Standard',\r\n        finalTotal:'Final Total',priceInclude:'Price includes motor\/battery\/all upgrades\/packaging\/profit. No extra charge.',priceExclude:'Shipping and customs not included',\r\n        noMod:'No upgrades',subTotal:'Grand Total',model:'Model',motor:'Motor',battery:'Battery',pack:'Packaging',profit:'Operating Profit',\r\n        desc_sport:'Sport',desc_street:'Street',desc_race:'Race',desc_rally:'Rally',\r\n        desc_retro:'Retro',desc_pteroBase:'Pterosaur Base',desc_water10:'10KW Water-Cooled',desc_water15:'15KW Water-Cooled',\r\n        mt_hub:'Hub Motor',mt_central:'Central Motor (Chain Drive)',mt_belt:'QS Belt Motor (Mid Drive)',mt_water:'Water-Cooled Motor (High Performance)',\r\n        mt_singleSwingarm:'Single-Sided Swingarm Motor',\r\n        bt_lithium:'Lithium Battery (Automotive Grade)',bt_leadAcid:'Lead-Acid Battery (3000\/4000W hub only)',\r\n        pack_std:'Standard export packaging',pack_reinforced:'Reinforced packaging',pack_wood:'Fully enclosed wooden box',speedUnit:'km\/h',rangeUnit:'km',\r\n        mod_fork:'Upgraded Inverted Front Fork',mod_caliper:'Premium 4-Piston Caliper',mod_brembo:'High-Performance Motorcycle Caliper',mod_abs:'ABS Brake System',mod_cbs:'CBS Combined Brake',\r\n        mod_swingarm:'Aluminum Swingarm',mod_wideWheel:'Wide Aluminum Swingarm',mod_tft:'TFT Smart Dashboard',mod_tpms:'Tire Pressure Monitoring (TPMS)',\r\n        mod_tire:'Wide Rear Tire (200\/55-17)',mod_throttle:'Premium Waterproof Grips',mod_rearShock:'Rear Air Shock Absorber',mod_type2:'Type2 Charging Port',\r\n        mod_rotor:'Floating Brake Disc (Motorcycle)',mod_strongWheel:'Reinforced Wheel Hub',mod_timsun150:'TIMSUN Tires (Front 110mm Rear 150mm)',mod_timsun180:'TIMSUN Tires (Front 120mm Rear 180mm)',\r\n        packName_ironCarton:'Steel Frame + Carton',packName_ironWood:'Steel Frame + Wood Slats',packName_woodBox:'Wooden Crate',\r\n        companyName:'Wuxi Shawloong Energy Technology Co., LTD.',\r\n        contactInfo:'Tony: +8618114085520 \/ Wechat: Topnas \/ Email: Tony@shawloong.com'\r\n    },\r\n    ru:{\r\n        pageTitle:'\u041e\u043d\u043b\u0430\u0439\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u0442\u0438\u0440\u043e\u0432\u043e\u043a',baseConfig:'\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f',selectModel:'\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c',motorType:'\u0422\u0438\u043f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f',motorPower:'\u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f',maxSpeed:'\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c',\r\n        batteryConfig:'\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430',batteryType:'\u0422\u0438\u043f \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430',batteryCap:'\u0401\u043c\u043a\u043e\u0441\u0442\u044c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430',range:'\u0417\u0430\u043f\u0430\u0441 \u0445\u043e\u0434\u0430',upgradeItems:'\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438',packaging:'\u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430',\r\n        totalLabel:'\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0446\u0435\u043d\u0430 (\u0441 \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u044e)',genQuote:'\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u0442\u0438\u0440\u043e\u0432\u043a\u0443',quoteTitle:'\ud83d\udccb \u041a\u043e\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438',closeBtn:'\u0417\u0430\u043a\u0440\u044b\u0442\u044c',downloadPdf:'\ud83d\udcc4 \u0421\u043a\u0430\u0447\u0430\u0442\u044c PDF',\r\n        pdfHint:'\u0412 \u043e\u043a\u043d\u0435 \u043f\u0435\u0447\u0430\u0442\u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a PDF\u00bb',\r\n        fixedNotice:'\u2705 \u0412\u043e\u0434\u044f\u043d\u043e\u0435 \u043e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u044f. \u0412\u0441\u0451 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e: \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u044b, \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430, \u043f\u0440\u0438\u0431\u044b\u043b\u044c. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430.',\r\n        motorDefaultNotice:'\u2705 \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 {0}, \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u044c',\r\n        configOk:'\u2705 \u0412\u0441\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e',fixedConfigOk:'\u2705 \u0424\u043b\u0430\u0433\u043c\u0430\u043d\u0441\u043a\u0430\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u044f, \u0432\u0441\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u044b',\r\n        err_leadAcid:'\u26a0\ufe0f \u0421\u0432\u0438\u043d\u0446\u043e\u0432\u044b\u0439 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043c\u043e\u0442\u043e\u0440-\u043a\u043e\u043b\u0435\u0441\u0430 3000\u0412\u0442\/4000\u0412\u0442',\r\n        err_battPower:'\u26a0\ufe0f \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430! \u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c {0}\u0412\u0442 > \u041c\u0430\u043a\u0441 \u0430\u043a\u043a\u0443\u043c {1}\u0412\u0442',\r\n        err_battPeakPower:'\u26a0\ufe0f \u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u0438\u0432\u043e\u0434 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440! \u041f\u0438\u043a {0}\u0412\u0442 > \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0430\u043a\u043a\u0443\u043c {1}\u0412\u0442 (84\u0412\u00d7\u0410\u0447)',\r\n        err_qs10kwBatt:'\u26a0\ufe0f QS Belt 10\u043a\u0412\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043c\u0438\u043d\u0438\u043c\u0443\u043c 120\u0410\u0447, \u0442\u0435\u043a\u0443\u0449\u0438\u0439 {0}\u0410\u0447 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d',\r\n        err_bremboFork:'\u26a0\ufe0f \u0412\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0443\u043f\u043f\u043e\u0440\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0438\u043b\u043a\u0443',\r\n        err_absCbs:'\u26a0\ufe0f ABS \u0438 CBS \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435',err_wideWheel:'\u26a0\ufe0f \u0428\u0438\u0440\u043e\u043a\u0438\u0439 \u0430\u043b\u044e\u043c\u0438\u043d\u0438\u0435\u0432\u044b\u0439 \u043c\u0430\u044f\u0442\u043d\u0438\u043a \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0435\u0441\u043e',\r\n        err_tpmsTft:'\u26a0\ufe0f \u0421\u0438\u0441\u0442\u0435\u043c\u0430 TPMS \u0442\u0440\u0435\u0431\u0443\u0435\u0442 TFT-\u043f\u0440\u0438\u0431\u043e\u0440\u043d\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c',err_strongTire:'\u26a0\ufe0f \u0423\u0441\u0438\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0435\u0441\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0443\u044e \u0437\u0430\u0434\u043d\u044e\u044e \u0448\u0438\u043d\u0443',err_timsun180Wheel:'\u26a0\ufe0f \u0428\u0438\u043d\u044b 180\u043c\u043c \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u043e\u0434 \u043a\u043e\u043b\u0435\u0441\u0430',err_singleArmTire:'\u26a0\ufe0f \u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c \u0441 \u043e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043c\u0430\u044f\u0442\u043d\u0438\u043a\u043e\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0448\u0438\u043d\u0443 200\u043c\u043c \u0438\u043b\u0438 180\u043c\u043c',err_swingarmExclusive:'\u26a0\ufe0f \u0410\u043b\u044e\u043c\u0438\u043d\u0438\u0435\u0432\u044b\u0439 \u043c\u0430\u044f\u0442\u043d\u0438\u043a \u0438 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043c\u0430\u044f\u0442\u043d\u0438\u043a: \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d',gift:'\u041f\u043e\u0434\u0430\u0440\u043e\u043a',wideWheelGift:'\u0412 \u043f\u043e\u0434\u0430\u0440\u043e\u043a \u043a \u0448\u0438\u0440\u043e\u043a\u043e\u043c\u0443 \u043c\u0430\u044f\u0442\u043d\u0438\u043a\u0443',upgrade180Hint:'\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e 180\u043c\u043c TIMSUN +\u00a5650',qty:'\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e',grandTotal:'\u041e\u0431\u0449\u0430\u044f \u0441\u0443\u043c\u043c\u0430',batchDiscount:'\u041e\u043f\u0442\u043e\u0432\u0430\u044f \u0441\u043a\u0438\u0434\u043a\u0430',originalPrice:'\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0446\u0435\u043d\u0430',discountPrice:'\u0426\u0435\u043d\u0430 \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u043e\u0439',saved:'\u042d\u043a\u043e\u043d\u043e\u043c\u0438\u044f',profitPerUnit:'\u041f\u0440\u0438\u0431\u044b\u043b\u044c\/\u0448\u0442',\r\n        alert_invalid:'\u26a0\ufe0f \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0418\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u0442\u0438\u0440\u043e\u0432\u043a\u0438.',\r\n        waterCoolPackage:'\ud83c\udfc6 \u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0432\u043e\u0434\u044f\u043d\u043e\u0433\u043e \u043e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u044f',included:'\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e',stdMods:'\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b:',\r\n        motorIncluded:'\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f',\r\n        finalTotal:'\u0418\u0442\u043e\u0433\u043e \u043a \u043e\u043f\u043b\u0430\u0442\u0435',priceInclude:'\u0426\u0435\u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c\/\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\/\u043e\u043f\u0446\u0438\u0438\/\u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0443\/\u043f\u0440\u0438\u0431\u044b\u043b\u044c. \u0411\u0435\u0437 \u0434\u043e\u043f\u043b\u0430\u0442.',priceExclude:'\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u043f\u043e\u0448\u043b\u0438\u043d\u044b \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b',\r\n        noMod:'\u0411\u0435\u0437 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a',subTotal:'\u041e\u0431\u0449\u0430\u044f \u0441\u0443\u043c\u043c\u0430',model:'\u041c\u043e\u0434\u0435\u043b\u044c',motor:'\u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c',battery:'\u0410\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440',pack:'\u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430',profit:'\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u0431\u044b\u043b\u044c',\r\n        desc_sport:'\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f',desc_street:'\u0421\u0442\u0440\u0438\u0442',desc_race:'\u0413\u043e\u043d\u043e\u0447\u043d\u0430\u044f',desc_rally:'\u0420\u0430\u043b\u043b\u0438',\r\n        desc_retro:'\u0420\u0435\u0442\u0440\u043e',desc_pteroBase:'Pterosaur \u0431\u0430\u0437\u0430',desc_water10:'10\u043a\u0412\u0442 \u0432\u043e\u0434\u044f\u043d\u043e\u0435 \u043e\u0445\u043b.',desc_water15:'15\u043a\u0412\u0442 \u0432\u043e\u0434\u044f\u043d\u043e\u0435 \u043e\u0445\u043b.',\r\n        mt_hub:'\u041c\u043e\u0442\u043e\u0440-\u043a\u043e\u043b\u0435\u0441\u043e',mt_central:'\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0442\u043e\u0440 (\u0446\u0435\u043f\u044c)',mt_belt:'QS \u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0442\u043e\u0440 (\u0441\u0440\u0435\u0434\u043d\u0438\u0439)',mt_water:'\u0412\u043e\u0434\u044f\u043d\u043e\u0435 \u043e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u0435 (\u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c)',\r\n        mt_singleSwingarm:'\u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c \u0441 \u043e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043c\u0430\u044f\u0442\u043d\u0438\u043a\u043e\u043c',\r\n        bt_lithium:'\u041b\u0438\u0442\u0438\u0435\u0432\u044b\u0439 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 (\u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441)',bt_leadAcid:'\u0421\u0432\u0438\u043d\u0446\u043e\u0432\u044b\u0439 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 (\u0442\u043e\u043b\u044c\u043a\u043e 3000\/4000\u0412\u0442)',\r\n        pack_std:'\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u043d\u0430\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430',pack_reinforced:'\u0423\u0441\u0438\u043b\u0435\u043d\u043d\u0430\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430',pack_wood:'\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u0439 \u044f\u0449\u0438\u043a',speedUnit:'\u043a\u043c\/\u0447',rangeUnit:'\u043a\u043c',\r\n        mod_fork:'\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u043d\u044f\u044f \u0432\u0438\u043b\u043a\u0430',mod_caliper:'\u041f\u0440\u0435\u043c\u0438\u0443\u043c 4-\u043f\u043e\u0440\u0448\u043d\u0435\u0432\u043e\u0439 \u0441\u0443\u043f\u043f\u043e\u0440\u0442',mod_brembo:'\u0412\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0443\u043f\u043f\u043e\u0440\u0442',mod_abs:'\u0422\u043e\u0440\u043c\u043e\u0437\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 ABS',mod_cbs:'\u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u043e\u0440\u043c\u043e\u0437 CBS',\r\n        mod_swingarm:'\u0410\u043b\u044e\u043c\u0438\u043d\u0438\u0435\u0432\u044b\u0439 \u043c\u0430\u044f\u0442\u043d\u0438\u043a',mod_wideWheel:'\u0428\u0438\u0440\u043e\u043a\u0438\u0439 \u0430\u043b\u044e\u043c\u0438\u043d\u0438\u0435\u0432\u044b\u0439 \u043c\u0430\u044f\u0442\u043d\u0438\u043a',mod_tft:'TFT \u0443\u043c\u043d\u0430\u044f \u043f\u0440\u0438\u0431\u043e\u0440\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c',mod_tpms:'\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0448\u0438\u043d (TPMS)',\r\n        mod_tire:'\u0428\u0438\u0440\u043e\u043a\u0430\u044f \u0437\u0430\u0434\u043d\u044f\u044f \u0448\u0438\u043d\u0430 (200\/55-17)',mod_throttle:'\u041f\u0440\u0435\u043c\u0438\u0443\u043c \u0432\u043e\u0434\u043e\u043d\u0435\u043f\u0440\u043e\u043d\u0438\u0446\u0430\u0435\u043c\u044b\u0435 \u0440\u0443\u043a\u043e\u044f\u0442\u043a\u0438',mod_rearShock:'\u0417\u0430\u0434\u043d\u0438\u0439 \u043f\u043d\u0435\u0432\u043c\u043e\u0430\u043c\u043e\u0440\u0442\u0438\u0437\u0430\u0442\u043e\u0440',mod_type2:'\u041f\u043e\u0440\u0442 \u0437\u0430\u0440\u044f\u0434\u043a\u0438 Type2',\r\n        mod_rotor:'\u041f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0439 \u0442\u043e\u0440\u043c\u043e\u0437\u043d\u043e\u0439 \u0434\u0438\u0441\u043a (\u043c\u043e\u0442\u043e)',mod_strongWheel:'\u0423\u0441\u0438\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u043e\u0434 \u043a\u043e\u043b\u0435\u0441\u0430',mod_timsun150:'\u0428\u0438\u043d\u044b TIMSUN (\u043f\u0435\u0440\u0435\u0434\u043d\u044f\u044f 110\u043c\u043c \u0437\u0430\u0434\u043d\u044f\u044f 150\u043c\u043c)',mod_timsun180:'\u0428\u0438\u043d\u044b TIMSUN (\u043f\u0435\u0440\u0435\u0434\u043d\u044f\u044f 120\u043c\u043c \u0437\u0430\u0434\u043d\u044f\u044f 180\u043c\u043c)',\r\n        packName_ironCarton:'\u0421\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u043a\u0430\u0441 + \u043a\u0430\u0440\u0442\u043e\u043d',packName_ironWood:'\u0421\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u043a\u0430\u0441 + \u0434\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u043d\u043a\u0438',packName_woodBox:'\u0414\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u0439 \u044f\u0449\u0438\u043a',\r\n        companyName:'Wuxi Shawloong Energy Technology Co., LTD.',\r\n        contactInfo:'Tony: +8618114085520 \/ Wechat: Topnas \/ Email: Tony@shawloong.com'\r\n    }\r\n};\r\nlet currentLang='zh';\r\nfunction t(key){return i18n[currentLang][key]||key;}\r\nfunction switchLang(lang){\r\n    currentLang=lang;\r\n    document.querySelectorAll('.lang-btn').forEach(btn=>{btn.classList.toggle('active',btn.dataset.lang===lang);});\r\n    renderAllText();initCarModels();initPackTypes();initMods();updateMotorTypeOptions();\r\n    updateMotorPower();updateBattTypeOptions();updateBattCap();setConfigLock(isFixedConfig);applyMotorDefaultMods();calculate();\r\n}\r\nfunction detectLang(){const n=navigator.language||navigator.userLanguage||'zh';if(n.startsWith('ru'))return'ru';if(n.startsWith('en'))return'en';return'zh';}\r\nfunction renderAllText(){document.querySelectorAll('[data-i18n]').forEach(el=>{el.textContent=t(el.dataset.i18n);});}\r\nconst PROFIT=2000;\r\nconst carData=[\r\n    {name:\"RZ\",price:4300,descKey:'desc_sport',isWaterCooled:false},\r\n    {name:\"V6\",price:4600,descKey:'desc_street',isWaterCooled:false},\r\n    {name:\"RR\",price:4850,descKey:'desc_race',isWaterCooled:false},\r\n    {name:\"JIAOLONG\",price:5700,descKey:'desc_sport',isWaterCooled:false},\r\n    {name:\"V4\",price:5800,descKey:'desc_race',isWaterCooled:false},\r\n    {name:\"Z500\",price:6200,descKey:'desc_street',isWaterCooled:false},\r\n    {name:\"DK400\",price:6000,descKey:'desc_rally',isWaterCooled:false},\r\n    {name:\"Navigator\",price:8200,descKey:'desc_sport',isWaterCooled:false},\r\n    {name:\"SS\",price:6300,descKey:'desc_retro',isWaterCooled:false},\r\n    {name:\"Pterosaur\",price:6400,descKey:'desc_pteroBase',isWaterCooled:false},\r\n    {name:\"Pterosaur-10KW\",price:30200,descKey:'desc_water10',isWaterCooled:true,power:10},\r\n    {name:\"Pterosaur-15KW\",price:32600,descKey:'desc_water15',isWaterCooled:true,power:15},\r\n    {name:\"SS-10KW\",price:29800,descKey:'desc_water10',isWaterCooled:true,power:10},\r\n    {name:\"SS-15KW\",price:32000,descKey:'desc_water15',isWaterCooled:true,power:15},\r\n    {name:\"V4-10KW\",price:29600,descKey:'desc_water10',isWaterCooled:true,power:10},\r\n    {name:\"V4-15KW\",price:31800,descKey:'desc_water15',isWaterCooled:true,power:15}\r\n];\r\nconst motorTypeNames={'\u8f6e\u6bc2\u7535\u673a':'mt_hub','\u4e2d\u592e\u7535\u673a':'mt_central','QS\u76ae\u5e26\u7535\u673a':'mt_belt','\u6c34\u51b7\u7535\u673a':'mt_water','\u5355\u8fb9\u6447\u81c2\u7535\u673a':'mt_singleSwingarm'};\r\nconst motorData={\r\n    '\u8f6e\u6bc2\u7535\u673a':[{power:'3000W',price:0,speed:80},{power:'4000W',price:600,speed:95},{power:'5000W',price:2000,speed:110},{power:'8000W',price:4500,speed:150}],\r\n    '\u4e2d\u592e\u7535\u673a':[{power:'4000W',price:2800,speed:110},{power:'5000W',price:3400,speed:130}],\r\n    'QS\u76ae\u5e26\u7535\u673a':[{power:'5000W',price:6200,speed:135},{power:'10kW',price:8500,speed:160}],\r\n    '\u6c34\u51b7\u7535\u673a':[{power:'10kW',price:8500,speed:150},{power:'15kW',price:12000,speed:165}],\r\n    '\u5355\u8fb9\u6447\u81c2\u7535\u673a':[{power:'8000W',price:6000,speed:155}]\r\n};\r\nconst motorTypeLimit={\r\n    'QS\u76ae\u5e26\u7535\u673a':['RZ','V6','RR','JIAOLONG','V4','DK400','Navigator','SS'],\r\n    '\u5355\u8fb9\u6447\u81c2\u7535\u673a':['V6','RR','JIAOLONG','V4','Navigator']\r\n};\r\nconst motorTypeDefaultMods={\r\n    '\u5355\u8fb9\u6447\u81c2\u7535\u673a':['tire']\r\n};\r\nconst tireMutualExclusive=['tire','timsun150','timsun180'];\r\nconst swingarmMutualExclusive=['swingarm','wideWheel'];\r\nfunction getMotorDefaultMods(){\r\n    const mt=document.getElementById('motorType').value;\r\n    return motorTypeDefaultMods[mt]||[];\r\n}\r\nconst battTypeNames={'\u9502\u7535\u6c60':'bt_lithium','\u94c5\u9178\u7535\u6c60':'bt_leadAcid'};\r\nconst battData={\r\n    '\u94c5\u9178\u7535\u6c60':[{cap:'72v20ah',price:500,range:40,maxPower:1680},{cap:'72v40ah',price:900,range:70,maxPower:3360}],\r\n    '\u9502\u7535\u6c60':[\r\n        {cap:'72v40ah',price:2950,range:80,maxPower:3360},{cap:'72v50ah',price:3650,range:100,maxPower:4200},\r\n        {cap:'72v60ah',price:3850,range:120,maxPower:5040},{cap:'72v80ah',price:4550,range:160,maxPower:6720},\r\n        {cap:'72v100ah',price:5550,range:200,maxPower:8400},{cap:'72v120ah',price:6550,range:240,maxPower:10080},\r\n        {cap:'72v150ah',price:8300,range:300,maxPower:12600},\r\n        {cap:'72v160ah',price:8500,range:320,maxPower:13440},{cap:'96v120ah',price:10500,range:300,maxPower:11520}\r\n    ]\r\n};\r\nconst hideBattCaps=['72v160ah','96v120ah'];\r\nconst modItems=[\r\n    {nameKey:'mod_fork',price:950,key:'fork'},{nameKey:'mod_caliper',price:1200,key:'caliper'},\r\n    {nameKey:'mod_brembo',price:800,key:'brembo'},{nameKey:'mod_abs',price:1800,key:'abs'},\r\n    {nameKey:'mod_cbs',price:400,key:'cbs'},{nameKey:'mod_swingarm',price:800,key:'swingarm'},\r\n    {nameKey:'mod_wideWheel',price:1600,key:'wideWheel'},{nameKey:'mod_tft',price:800,key:'tft'},\r\n    {nameKey:'mod_tpms',price:200,key:'tpms'},{nameKey:'mod_tire',price:400,key:'tire'},\r\n    {nameKey:'mod_throttle',price:200,key:'throttle'},{nameKey:'mod_rearShock',price:200,key:'rearShock'},\r\n    {nameKey:'mod_type2',price:1800,key:'type2'},{nameKey:'mod_rotor',price:200,key:'rotor'},\r\n    {nameKey:'mod_strongWheel',price:200,key:'strongWheel'},\r\n    {nameKey:'mod_timsun150',price:550,key:'timsun150'},\r\n    {nameKey:'mod_timsun180',price:650,key:'timsun180'}\r\n];\r\nconst packNameKeys={'\u94c1\u67b6+\u7eb8\u7bb1':'packName_ironCarton','\u94c1\u67b6+\u6728\u7247':'packName_ironWood','\u6728\u7bb1':'packName_woodBox'};\r\nconst packDescKeys={'\u6807\u51c6\u51fa\u53e3\u5305\u88c5':'pack_std','\u52a0\u56fa\u5305\u88c5':'pack_reinforced','\u5168\u5c01\u95ed\u6728\u7bb1':'pack_wood'};\r\nconst packData=[{price:300,name:\"\u94c1\u67b6+\u7eb8\u7bb1\",desc:\"\u6807\u51c6\u51fa\u53e3\u5305\u88c5\"},{price:500,name:\"\u94c1\u67b6+\u6728\u7247\",desc:\"\u52a0\u56fa\u5305\u88c5\"},{price:600,name:\"\u6728\u7bb1\",desc:\"\u5168\u5c01\u95ed\u6728\u7bb1\"}];\r\nconst fixedConfigs={\r\n    '10kw':{motorType:'\u6c34\u51b7\u7535\u673a',motorPower:'10kW',battType:'\u9502\u7535\u6c60',battCap:'72v160ah',packName:'\u94c1\u67b6+\u6728\u7247',fixedMods:['fork','caliper','rotor','abs','tft','tpms','strongWheel','timsun180','throttle','type2'],desc:'10kW\u6c34\u51b7\u65d7\u8230\u914d\u7f6e'},\r\n    '15kw':{motorType:'\u6c34\u51b7\u7535\u673a',motorPower:'15kW',battType:'\u9502\u7535\u6c60',battCap:'96v120ah',packName:'\u94c1\u67b6+\u6728\u7247',fixedMods:['fork','caliper','rotor','abs','tft','tpms','strongWheel','timsun180','throttle','type2'],desc:'15kW\u6c34\u51b7\u6027\u80fd\u914d\u7f6e'}\r\n};\r\nlet modSelected={};\r\nlet wideWheelActive=false;\r\nlet isFixedConfig=false;\r\n\r\nfunction getBattAh(capStr){const m=capStr.match(\/(\\d+)ah\/i);return m?parseInt(m[1]):0;}\r\nfunction powerToW(s){if(s.endsWith('kW'))return parseFloat(s)*1000;return parseFloat(s);}\r\nfunction isQsBelt10kw(){return document.getElementById('motorType').value==='QS\u76ae\u5e26\u7535\u673a'&&document.getElementById('motorPower').value==='10kW';}\r\n\r\nfunction initCarModels(){\r\n    const s=document.getElementById('carModel');const cv=s.value;s.innerHTML='';\r\n    carData.forEach(car=>{const o=document.createElement('option');o.value=car.price;o.dataset.carName=car.name;o.textContent=`${car.name} - \u00a5${car.price}\uff08${t(car.descKey)}\uff09`;s.appendChild(o);});\r\n    if(cv)s.value=cv;\r\n}\r\nfunction initPackTypes(){\r\n    const s=document.getElementById('packType');const cv=s.value;s.innerHTML='';\r\n    packData.forEach(p=>{const o=document.createElement('option');o.value=p.price;o.textContent=`${t(packNameKeys[p.name])} - \u00a5${p.price}\uff08${t(packDescKeys[p.desc])}\uff09`;s.appendChild(o);});\r\n    if(cv)s.value=cv;\r\n}\r\nfunction initMods(){\r\n    const list=document.getElementById('modList');const prev={...modSelected};list.innerHTML='';\r\n    const defaultMods=getMotorDefaultMods();\r\n    const isSingleArm=document.getElementById('motorType').value==='\u5355\u8fb9\u6447\u81c2\u7535\u673a';\r\n    modItems.forEach(item=>{\r\n        if(isSingleArm&&item.key==='timsun150')return;\r\n        if(modSelected[item.key]===undefined)modSelected[item.key]=false;\r\n        const isDefault=defaultMods.includes(item.key);\r\n        const isWideGift=wideWheelActive&&(item.key==='strongWheel'||item.key==='tire');\r\n        const upgradeHint=(wideWheelActive&&item.key==='tire')?`<span style=\"font-size:11px;color:#1890ff;margin-left:6px;font-weight:400;\">${t('upgrade180Hint')}<\/span>`:'';\r\n        const div=document.createElement('div');div.className='mod-item';\r\n        const badgeHtml=isDefault?`<span class=\"badge\">${t('motorIncluded')}<\/span>`:(isWideGift?`<span class=\"badge\">${t('gift')}<\/span>`:'');\r\n        const priceHtml=isDefault?`<span class=\"mod-price included\">${t('included')}<\/span>`:(isWideGift?`<span class=\"mod-price included\">${t('gift')}<\/span>`:`<div class=\"mod-price\">+\u00a5${item.price}<\/div>`);\r\n        div.innerHTML=`<div class=\"mod-info\"><div class=\"mod-name\">${t(item.nameKey)}${badgeHtml}${upgradeHint}<\/div>${priceHtml}<\/div><div class=\"switch\" data-key=\"${item.key}\"><\/div>`;\r\n        list.appendChild(div);\r\n    });\r\n    document.querySelectorAll('.switch').forEach(sw=>{\r\n        sw.addEventListener('click',function(){\r\n            if(this.classList.contains('locked'))return;\r\n            const key=this.dataset.key;\r\n            const isSingleArm=document.getElementById('motorType').value==='\u5355\u8fb9\u6447\u81c2\u7535\u673a';\r\n            if(isSingleArm&&key==='tire'&&this.classList.contains('active'))return;\r\n            if(wideWheelActive&&key==='tire'&&this.classList.contains('active'))return;\r\n            this.classList.toggle('active');\r\n            modSelected[key]=this.classList.contains('active');\r\n            if(tireMutualExclusive.includes(key)&&this.classList.contains('active')){\r\n                tireMutualExclusive.forEach(k=>{\r\n                    if(k!==key){\r\n                        modSelected[k]=false;\r\n                        const other=document.querySelector(`.switch[data-key=\"${k}\"]`);\r\n                        if(other&&!other.classList.contains('locked'))other.classList.remove('active');\r\n                    }\r\n                });\r\n            }\r\n            if(swingarmMutualExclusive.includes(key)&&this.classList.contains('active')){\r\n                swingarmMutualExclusive.forEach(k=>{\r\n                    if(k!==key){\r\n                        modSelected[k]=false;\r\n                        const other=document.querySelector(`.switch[data-key=\"${k}\"]`);\r\n                        if(other&&!other.classList.contains('locked'))other.classList.remove('active');\r\n                    }\r\n                });\r\n                applyWideWheelGifts();\r\n            }\r\n            if(key==='wideWheel'){\r\n                applyWideWheelGifts();\r\n                applyMotorDefaultMods();\r\n            }\r\n            if(wideWheelActive&&key==='timsun180'&&!this.classList.contains('active')){\r\n                modSelected.tire=true;\r\n                const tireEl=document.querySelector('.switch[data-key=\"tire\"]');\r\n                if(tireEl)tireEl.classList.add('active');\r\n            }\r\n            calculate();\r\n        });\r\n        if(prev[sw.dataset.key])sw.classList.add('active');\r\n    });\r\n    applyWideWheelGifts();\r\n}\r\nfunction applyWideWheelGifts(){\r\n    if(isFixedConfig)return;\r\n    const sw=document.querySelector('.switch[data-key=\"wideWheel\"]');\r\n    if(!sw)return;\r\n    wideWheelActive=sw.classList.contains('active');\r\n    const strongWheelEl=document.querySelector('.switch[data-key=\"strongWheel\"]');\r\n    const tireEl=document.querySelector('.switch[data-key=\"tire\"]');\r\n    const timsun150El=document.querySelector('.switch[data-key=\"timsun150\"]');\r\n    const timsun180El=document.querySelector('.switch[data-key=\"timsun180\"]');\r\n    if(wideWheelActive){\r\n        if(strongWheelEl){modSelected.strongWheel=true;strongWheelEl.classList.add('active');strongWheelEl.classList.add('locked');}\r\n        const t180On=timsun180El?timsun180El.classList.contains('active'):false;\r\n        if(tireEl&&!t180On){modSelected.tire=true;tireEl.classList.add('active');}\r\n        if(timsun150El){const it=timsun150El.closest('.mod-item');if(it)it.style.display='none';}\r\n    }else{\r\n        if(strongWheelEl){modSelected.strongWheel=false;strongWheelEl.classList.remove('active');strongWheelEl.classList.remove('locked');}\r\n        if(tireEl){modSelected.tire=false;tireEl.classList.remove('active');}\r\n        if(timsun180El){modSelected.timsun180=false;timsun180El.classList.remove('active');}\r\n        if(timsun150El){const it=timsun150El.closest('.mod-item');if(it)it.style.display='';}\r\n    }\r\n}\r\nfunction applyMotorDefaultMods(){\r\n    if(isFixedConfig)return;\r\n    const defaultMods=getMotorDefaultMods();\r\n    const isSingleArm=document.getElementById('motorType').value==='\u5355\u8fb9\u6447\u81c2\u7535\u673a';\r\n    document.querySelectorAll('.switch').forEach(sw=>{\r\n        const key=sw.dataset.key;\r\n        if(defaultMods.includes(key)){\r\n            modSelected[key]=true;\r\n            sw.classList.add('active');\r\n            if(!isSingleArm||key!=='tire')sw.classList.add('locked');\r\n        }else{\r\n            sw.classList.remove('locked');\r\n        }\r\n    });\r\n}\r\nfunction updateBattTypeOptions(){\r\n    const s=document.getElementById('battType');const cv=s.value;s.innerHTML='';\r\n    ['\u9502\u7535\u6c60','\u94c5\u9178\u7535\u6c60'].forEach(tp=>{const o=document.createElement('option');o.value=tp;o.textContent=t(battTypeNames[tp]);s.appendChild(o);});\r\n    if(cv)s.value=cv;\r\n}\r\nfunction updateMotorTypeOptions(){\r\n    const cs=document.getElementById('carModel');const cn=cs.options[cs.selectedIndex].dataset.carName;\r\n    const car=carData.find(c=>c.name===cn);const ms=document.getElementById('motorType');const ct=ms.value;\r\n    let bt=['\u8f6e\u6bc2\u7535\u673a','\u4e2d\u592e\u7535\u673a'];\r\n    if(car.isWaterCooled){bt=['\u8f6e\u6bc2\u7535\u673a','\u4e2d\u592e\u7535\u673a','\u6c34\u51b7\u7535\u673a'];}\r\n    else{\r\n        if(motorTypeLimit['QS\u76ae\u5e26\u7535\u673a']&&motorTypeLimit['QS\u76ae\u5e26\u7535\u673a'].includes(cn))bt.splice(2,0,'QS\u76ae\u5e26\u7535\u673a');\r\n        if(motorTypeLimit['\u5355\u8fb9\u6447\u81c2\u7535\u673a']&&motorTypeLimit['\u5355\u8fb9\u6447\u81c2\u7535\u673a'].includes(cn))bt.push('\u5355\u8fb9\u6447\u81c2\u7535\u673a');\r\n    }\r\n    ms.innerHTML='';bt.forEach(tp=>{const o=document.createElement('option');o.value=tp;o.textContent=t(motorTypeNames[tp]);ms.appendChild(o);});\r\n    let valid=false;for(let i=0;i<ms.options.length;i++){if(ms.options[i].value===ct)valid=true;}\r\n    if(!valid)ms.value='\u8f6e\u6bc2\u7535\u673a';\r\n}\r\nfunction updateMotorPower(){\r\n    const tp=document.getElementById('motorType').value;const s=document.getElementById('motorPower');const cv=s.value;s.innerHTML='';\r\n    motorData[tp].forEach(item=>{const o=document.createElement('option');o.value=item.power;o.textContent=`${item.power} - ${item.speed}${t('speedUnit')}`;s.appendChild(o);});\r\n    if(cv)s.value=cv;updateSpeed();\r\n}\r\nfunction updateBattCap(){\r\n    const cs=document.getElementById('carModel');const cn=cs.options[cs.selectedIndex].dataset.carName;\r\n    const car=carData.find(c=>c.name===cn);const type=document.getElementById('battType').value;\r\n    const s=document.getElementById('battCap');const cv=s.value;\r\n    const qs10=isQsBelt10kw();\r\n    s.innerHTML='';\r\n    battData[type].forEach(item=>{\r\n        if(!car.isWaterCooled&&hideBattCaps.includes(item.cap))return;\r\n        if(item.cap==='72v150ah'&&!qs10)return;\r\n        const o=document.createElement('option');o.value=item.cap;o.textContent=`${item.cap} - ${item.range}${t('rangeUnit')}`;s.appendChild(o);\r\n    });\r\n    let valExists=false;\r\n    for(let i=0;i<s.options.length;i++){if(s.options[i].value===cv)valExists=true;}\r\n    if(valExists)s.value=cv;\r\n    else if(s.options.length>0)s.value=s.options[0].value;\r\n    updateRange();\r\n}\r\nfunction updateSpeed(){const tp=document.getElementById('motorType').value;const pw=document.getElementById('motorPower').value;const m=motorData[tp].find(x=>x.power===pw);if(m)document.getElementById('maxSpeed').textContent=m.speed+' '+t('speedUnit');}\r\nfunction updateRange(){const tp=document.getElementById('battType').value;const cp=document.getElementById('battCap').value;const b=battData[tp].find(x=>x.cap===cp);if(b)document.getElementById('rangeKm').textContent=b.range+' '+t('rangeUnit');}\r\nfunction setConfigLock(locked){\r\n    isFixedConfig=locked;const n=document.getElementById('fixedNotice');\r\n    const csw=document.querySelector('.switch[data-key=\"caliper\"]');const ci=csw?csw.closest('.mod-item'):null;\r\n    if(locked){\r\n        n.classList.add('show');n.innerHTML=t('fixedNotice');\r\n        ['motorType','motorPower','battType','battCap','packType'].forEach(id=>document.getElementById(id).disabled=true);\r\n        document.querySelectorAll('.switch').forEach(sw=>sw.classList.add('locked'));\r\n        if(ci)ci.style.display='flex';\r\n    }else{\r\n        n.classList.remove('show');\r\n        ['motorType','motorPower','battType','battCap','packType'].forEach(id=>document.getElementById(id).disabled=false);\r\n        document.querySelectorAll('.switch').forEach(sw=>sw.classList.remove('locked'));\r\n        if(ci)ci.style.display='none';\r\n    }\r\n}\r\nfunction applyFixedConfig(key){\r\n    const cfg=fixedConfigs[key];if(!cfg)return;\r\n    document.querySelectorAll('.switch').forEach(sw=>sw.classList.remove('active'));\r\n    modItems.forEach(i=>modSelected[i.key]=false);\r\n    document.getElementById('motorType').value=cfg.motorType;updateMotorPower();\r\n    document.getElementById('motorPower').value=cfg.motorPower;updateSpeed();\r\n    document.getElementById('battType').value=cfg.battType;updateBattCap();\r\n    document.getElementById('battCap').value=cfg.battCap;updateRange();\r\n    const pi=packData.find(p=>p.name===cfg.packName);if(pi)document.getElementById('packType').value=pi.price;\r\n    cfg.fixedMods.forEach(k=>{modSelected[k]=true;const sw=document.querySelector(`.switch[data-key=\"${k}\"]`);if(sw)sw.classList.add('active');});\r\n    setConfigLock(true);calculate();\r\n}\r\nfunction onCarModelChange(){\r\n    updateMotorTypeOptions();const s=document.getElementById('carModel');const n=s.options[s.selectedIndex].dataset.carName;\r\n    const car=carData.find(c=>c.name===n);\r\n    if(car.isWaterCooled){\r\n        document.getElementById('motorType').value='\u6c34\u51b7\u7535\u673a';updateMotorPower();\r\n        if(car.power===10){document.getElementById('motorPower').value='10kW';applyFixedConfig('10kw');}\r\n        else{document.getElementById('motorPower').value='15kW';applyFixedConfig('15kw');}\r\n    }else{\r\n        setConfigLock(false);const mt=document.getElementById('motorType').value;updateMotorPower();\r\n        if(mt==='\u8f6e\u6bc2\u7535\u673a')document.getElementById('motorPower').value='3000W';\r\n        updateSpeed();document.getElementById('battType').value='\u9502\u7535\u6c60';updateBattCap();\r\n        document.getElementById('battCap').value='72v40ah';updateRange();\r\n        document.getElementById('packType').value='300';\r\n        document.querySelectorAll('.switch').forEach(s=>s.classList.remove('active'));\r\n        modItems.forEach(i=>modSelected[i.key]=false);\r\n        initMods();\r\n        applyMotorDefaultMods();\r\n        calculate();\r\n    }\r\n}\r\nfunction onMotorTypeChange(){\r\n    updateMotorPower();const mt=document.getElementById('motorType').value;\r\n    if(mt!=='\u6c34\u51b7\u7535\u673a'){\r\n        setConfigLock(false);document.getElementById('battType').value='\u9502\u7535\u6c60';updateBattCap();\r\n        document.getElementById('battCap').value='72v40ah';updateRange();document.getElementById('packType').value='300';\r\n        document.querySelectorAll('.switch').forEach(sw=>sw.classList.remove('active'));\r\n        modItems.forEach(i=>modSelected[i.key]=false);\r\n        initMods();\r\n        applyMotorDefaultMods();\r\n        calculate();\r\n    }else{onMotorPowerChange();}\r\n}\r\nfunction onMotorPowerChange(){\r\n    updateSpeed();const mt=document.getElementById('motorType').value;const pw=document.getElementById('motorPower').value;\r\n    if(mt==='\u6c34\u51b7\u7535\u673a'){if(pw==='10kW')applyFixedConfig('10kw');else applyFixedConfig('15kw');}\r\n    else{updateBattCap();setConfigLock(false);calculate();}\r\n}\r\nfunction checkConfig(){\r\n    if(isFixedConfig){const w=document.getElementById('configWarning');w.className='warning show success';w.innerHTML=t('fixedConfigOk');return true;}\r\n    const w=document.getElementById('configWarning');let e=[];\r\n    const mt=document.getElementById('motorType').value;const mp=document.getElementById('motorPower').value;\r\n    const bt=document.getElementById('battType').value;const bc=document.getElementById('battCap').value;\r\n    const batt=battData[bt].find(b=>b.cap===bc);const mw=powerToW(mp);\r\n    if(bt==='\u94c5\u9178\u7535\u6c60'){if(mt!=='\u8f6e\u6bc2\u7535\u673a'||(mp!=='3000W'&&mp!=='4000W'))e.push(t('err_leadAcid'));}\r\n    if(batt&&batt.maxPower<mw)e.push(t('err_battPower').replace('{0}',mw).replace('{1}',batt.maxPower));\r\n    if((mt==='QS\u76ae\u5e26\u7535\u673a'||mt==='\u4e2d\u592e\u7535\u673a')&&bt==='\u9502\u7535\u6c60'){\r\n        if(mt==='QS\u76ae\u5e26\u7535\u673a'&&mp==='10kW'){\r\n            const battAh=getBattAh(bc);\r\n            if(battAh<120){e.push(t('err_qs10kwBatt').replace('{0}',battAh));}\r\n        }else{\r\n            const battAh=getBattAh(bc);\r\n            const battTotal=84*battAh;\r\n            const peakPower=mw*1.5;\r\n            if(battTotal<peakPower){e.push(t('err_battPeakPower').replace('{0}',peakPower).replace('{1}',battTotal));}\r\n        }\r\n    }\r\n    if(modSelected.brembo&&!modSelected.fork)e.push(t('err_bremboFork'));\r\n    if(modSelected.abs&&modSelected.cbs)e.push(t('err_absCbs'));\r\n    if(modSelected.wideWheel&&!modSelected.strongWheel)e.push(t('err_wideWheel'));\r\n    if(modSelected.tpms&&!modSelected.tft)e.push(t('err_tpmsTft'));\r\n    if(modSelected.strongWheel&&!modSelected.tire&&!modSelected.timsun180)e.push(t('err_strongTire'));\r\n    if(modSelected.timsun180&&!modSelected.strongWheel)e.push(t('err_timsun180Wheel'));\r\n    if(mt==='\u5355\u8fb9\u6447\u81c2\u7535\u673a'&&!modSelected.tire&&!modSelected.timsun180)e.push(t('err_singleArmTire'));\r\n    if(modSelected.swingarm&&modSelected.wideWheel)e.push(t('err_swingarmExclusive'));\r\n    if(e.length>0){w.className='warning show';w.innerHTML=e.join('<br>');return false;}\r\n    else{w.className='warning show success';w.innerHTML=t('configOk');return true;}\r\n}\r\nfunction calculate(){\r\n    const ww=document.querySelector('.switch[data-key=\"wideWheel\"]');\r\n    if(ww)wideWheelActive=ww.classList.contains('active');\r\n    const valid=checkConfig();const btn=document.getElementById('quoteBtn');btn.disabled=!valid;\r\n    const cp=parseInt(document.getElementById('carModel').value);\r\n    if(isFixedConfig){document.getElementById('totalPrice').textContent='\u00a5'+cp.toLocaleString();return{carPrice:cp,motorPrice:0,battPrice:0,modTotal:0,packPrice:0,profit:0,total:cp,isWaterCool:true};}\r\n    const mt=document.getElementById('motorType').value;const mp=document.getElementById('motorPower').value;\r\n    const motor=motorData[mt].find(m=>m.power===mp);const mprice=motor?motor.price:0;\r\n    const bt=document.getElementById('battType').value;const bc=document.getElementById('battCap').value;\r\n    const batt=battData[bt].find(b=>b.cap===bc);const bprice=batt?batt.price:0;\r\n    const defaultMods=getMotorDefaultMods();\r\n    let mtot=0;modItems.forEach(i=>{\r\n        if(modSelected[i.key]&&!defaultMods.includes(i.key)){\r\n            if(wideWheelActive&&(i.key==='strongWheel'||i.key==='tire'))return;\r\n            mtot+=i.price;\r\n        }\r\n    });\r\n    const pp=parseInt(document.getElementById('packType').value);const pf=PROFIT;\r\n    const total=cp+mprice+bprice+mtot+pp+pf;\r\n    document.getElementById('totalPrice').textContent='\u00a5'+total.toLocaleString();\r\n    return{carPrice:cp,motorPrice:mprice,battPrice:bprice,modTotal:mtot,packPrice:pp,profit:pf,total:total,isWaterCool:false};\r\n}\r\nfunction buildQuoteHtml(forPdf){\r\n    const data=calculate();const cs=document.getElementById('carModel');const cn=cs.options[cs.selectedIndex].dataset.carName;\r\n    const defaultMods=getMotorDefaultMods();\r\n    const qtyHtml=forPdf?'':`<div class=\"qty-row\"><span class=\"qty-label\">${t('qty')}<\/span><div class=\"qty-control\"><button class=\"qty-btn\" onclick=\"changeQty(-1)\">\u2212<\/button><input type=\"number\" class=\"qty-input\" id=\"qtyInput\" value=\"1\" min=\"1\" oninput=\"updateQty()\"><button class=\"qty-btn\" onclick=\"changeQty(1)\">+<\/button><\/div><\/div>\r\n    <div class=\"discount-info-row\" id=\"discountInfo\" style=\"display:none;\"><\/div>\r\n    <div class=\"original-price-row\"><span>${t('originalPrice')}<\/span><span class=\"original-price-value\" id=\"originalTotal\">\u00a5${data.total.toLocaleString()}<\/span><\/div>\r\n    <div class=\"saved-row\" id=\"savedRow\" style=\"display:none;\"><span>${t('saved')}<\/span><span id=\"savedAmount\">\u00a50<\/span><\/div>\r\n    <div class=\"grand-total-row\"><span>${t('discountPrice')}<span class=\"discount-badge\" id=\"discountBadge\" style=\"display:none;\">BULK<\/span><\/span><span id=\"grandTotal\">\u00a5${data.total.toLocaleString()}<\/span><\/div>`;\r\n    let html='';\r\n    if(data.isWaterCool){\r\n        const mt=document.getElementById('motorType').value;const mp=document.getElementById('motorPower').value;\r\n        const motor=motorData[mt].find(m=>m.power===mp);const bt=document.getElementById('battType').value;\r\n        const bc=document.getElementById('battCap').value;const batt=battData[bt].find(b=>b.cap===bc);\r\n        let ml='';const ck=mp.toLowerCase();fixedConfigs[ck].fixedMods.forEach(k=>{const item=modItems.find(i=>i.key===k);if(item)ml+=`<div class=\"quote-item\"><span>\u2705 ${t(item.nameKey)}<\/span><span>${t('included')}<\/span><\/div>`;});\r\n        html=`<div style=\"text-align:center;padding:14px;background:#f6ffed;border-radius:8px;margin-bottom:18px;color:#389e0d;font-weight:bold;font-size:15px;\">${t('waterCoolPackage')}<\/div>\r\n        <div class=\"quote-item\"><span>${t('model')}\uff1a${cn}<\/span><span>\u00a5${data.carPrice}<\/span><\/div>\r\n        <div class=\"quote-item\"><span>${t('motor')}\uff1a${t(motorTypeNames[mt])} ${mp}\uff08${motor.speed}${t('speedUnit')}\uff09<\/span><span>${t('included')}<\/span><\/div>\r\n        <div class=\"quote-item\"><span>${t('battery')}\uff1a${t(battTypeNames[bt])} ${bc}\uff08${batt.range}${t('rangeUnit')}\uff09<\/span><span>${t('included')}<\/span><\/div>\r\n        <div class=\"quote-item\"><span>${t('pack')}\uff1a${t('packName_ironWood')}<\/span><span>${t('included')}<\/span><\/div>\r\n        <div style=\"margin:14px 0 8px;font-size:14px;color:#555;font-weight:600;\">${t('stdMods')}<\/div>${ml}\r\n        <div class=\"quote-item\" style=\"margin-top:14px;border-top:2px solid #222;font-size:17px;font-weight:bold;color:#ff4d4f;padding-top:14px;\">${t('finalTotal')} \u00a5${data.total.toLocaleString()}<\/div>\r\n        ${qtyHtml}\r\n        <div style=\"text-align:center;font-size:12px;color:#999;margin-top:10px;line-height:1.6;\">${t('priceInclude')}<\/div>\r\n        <div style=\"text-align:center;font-size:12px;color:#999;margin-top:4px;\">${t('priceExclude')}<\/div>`;\r\n    }else{\r\n        const mt=document.getElementById('motorType').value;const mp=document.getElementById('motorPower').value;\r\n        const motor=motorData[mt].find(m=>m.power===mp);const bt=document.getElementById('battType').value;\r\n        const bc=document.getElementById('battCap').value;const batt=battData[bt].find(b=>b.cap===bc);\r\n        const ps=document.getElementById('packType');const pi=packData.find(p=>p.price==ps.value);const pt=pi?t(packNameKeys[pi.name]):'';\r\n        let mh='';modItems.forEach(i=>{\r\n            if(modSelected[i.key]){\r\n                if(defaultMods.includes(i.key)){\r\n                    mh+=`<div class=\"quote-item included-item\"><span>${t(i.nameKey)}\uff08${t('motorIncluded')}\uff09<\/span><span>${t('included')}<\/span><\/div>`;\r\n                }else if(wideWheelActive&&(i.key==='strongWheel'||i.key==='tire')){\r\n                    mh+=`<div class=\"quote-item included-item\"><span>${t(i.nameKey)}\uff08${t('wideWheelGift')}\uff09<\/span><span>${t('gift')}<\/span><\/div>`;\r\n                }else{\r\n                    mh+=`<div class=\"quote-item\"><span>${t(i.nameKey)}<\/span><span>+\u00a5${i.price}<\/span><\/div>`;\r\n                }\r\n            }\r\n        });\r\n        if(!mh)mh=`<div class=\"quote-item\"><span>${t('noMod')}<\/span><span>\u00a50<\/span><\/div>`;\r\n        html=`<div class=\"quote-item\"><span>${t('model')} ${cn}<\/span><span>\u00a5${data.carPrice}<\/span><\/div>\r\n        <div class=\"quote-item\"><span>${t(motorTypeNames[mt])} ${mp}<\/span><span>+\u00a5${data.motorPrice}<\/span><\/div>\r\n        <div class=\"quote-item\"><span>${t(battTypeNames[bt])} ${bc}<\/span><span>+\u00a5${data.battPrice}<\/span><\/div>\r\n        ${mh}\r\n        <div class=\"quote-item\"><span>${pt} ${t('pack')}<\/span><span>+\u00a5${data.packPrice}<\/span><\/div>\r\n        <div class=\"quote-item\"><span>${t('profit')}<\/span><span>+\u00a5${data.profit}<\/span><\/div>\r\n        <div class=\"quote-item\" style=\"border-top:2px solid #222;font-size:17px;font-weight:bold;color:#ff4d4f;padding-top:14px;margin-top:4px;\">${t('subTotal')} \u00a5${data.total.toLocaleString()}<\/div>\r\n        ${qtyHtml}\r\n        <div style=\"text-align:center;font-size:12px;color:#999;margin-top:10px;\">${t('priceExclude')}<\/div>`;\r\n    }\r\n    return html;\r\n}\r\nfunction showQuote(){\r\n    if(!checkConfig()){alert(t('alert_invalid'));return;}\r\n    document.getElementById('quoteDetail').innerHTML=buildQuoteHtml(false);\r\n    quoteUnitPrice=calculate().total;\r\n    document.getElementById('quoteModal').classList.add('show');\r\n    updateGrandTotal(1);\r\n}\r\nfunction closeModal(){document.getElementById('quoteModal').classList.remove('show');}\r\nlet quoteUnitPrice=0;\r\nfunction getProfitPerUnit(qty){\r\n    if(qty<=1)return 2000;\r\n    if(qty<=5)return 1800;\r\n    if(qty<=10)return 1500;\r\n    if(qty<=20)return 1000;\r\n    if(qty<=50)return 500;\r\n    return 200;\r\n}\r\nfunction changeQty(delta){\r\n    const input=document.getElementById('qtyInput');\r\n    if(!input)return;\r\n    let val=parseInt(input.value)||1;\r\n    val=Math.max(1,val+delta);\r\n    input.value=val;\r\n    updateGrandTotal(val);\r\n}\r\nfunction updateQty(){\r\n    const input=document.getElementById('qtyInput');\r\n    if(!input)return;\r\n    let val=parseInt(input.value)||1;\r\n    val=Math.max(1,val);\r\n    input.value=val;\r\n    updateGrandTotal(val);\r\n}\r\nfunction updateGrandTotal(qty){\r\n    const el=document.getElementById('grandTotal');\r\n    if(!el)return;\r\n    const basePrice=quoteUnitPrice-2000;\r\n    const profit=getProfitPerUnit(qty);\r\n    const unitPrice=basePrice+profit;\r\n    const total=unitPrice*qty;\r\n    el.textContent='\u00a5'+total.toLocaleString();\r\n    const origEl=document.getElementById('originalTotal');\r\n    const savedEl=document.getElementById('savedAmount');\r\n    const discountEl=document.getElementById('discountInfo');\r\n    const origTotal=quoteUnitPrice*qty;\r\n    const saved=origTotal-total;\r\n    if(origEl)origEl.textContent='\u00a5'+origTotal.toLocaleString();\r\n    if(savedEl)savedEl.textContent='\u00a5'+saved.toLocaleString();\r\n    if(discountEl){\r\n        if(qty<=1){\r\n            discountEl.style.display='none';\r\n        }else{\r\n            discountEl.style.display='flex';\r\n            let tierLabel;\r\n            if(qty<=5)tierLabel='2-5';\r\n            else if(qty<=10)tierLabel='6-10';\r\n            else if(qty<=20)tierLabel='11-20';\r\n            else if(qty<=50)tierLabel='21-50';\r\n            else tierLabel='51+';\r\n            discountEl.innerHTML=`<span>${t('batchDiscount')} ${tierLabel} ${t('qty')} \u00b7 ${t('profitPerUnit')} \u00a5${profit}<\/span><span>-\u00a5${(2000-profit)*qty}<\/span>`;\r\n        }\r\n    }\r\n    const savedRow=document.getElementById('savedRow');\r\n    const discountBadge=document.getElementById('discountBadge');\r\n    if(savedRow){\r\n        if(saved>0){savedRow.style.display='flex';}else{savedRow.style.display='none';}\r\n    }\r\n    if(discountBadge){\r\n        if(saved>0){discountBadge.style.display='inline-block';}else{discountBadge.style.display='none';}\r\n    }\r\n}\r\nfunction downloadPdf(){\r\n    const detailHtml=buildQuoteHtml(true);\r\n    const qtyInput=document.getElementById('qtyInput');\r\n    const pdfQty=qtyInput?parseInt(qtyInput.value)||1:1;\r\n    const pdfUnitPrice=calculate().total;\r\n    const pdfProfit=getProfitPerUnit(pdfQty);\r\n    const pdfDiscountUnit=(pdfUnitPrice-2000)+pdfProfit;\r\n    const pdfGrandTotal=pdfDiscountUnit*pdfQty;\r\n    const pdfOriginalTotal=pdfUnitPrice*pdfQty;\r\n    const pdfSaved=pdfOriginalTotal-pdfGrandTotal;\r\n    const now=new Date();\r\n    const dateStr=now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0');\r\n    const cs=document.getElementById('carModel');\r\n    const cn=cs.options[cs.selectedIndex].dataset.carName;\r\n    const win=window.open('','_blank','width=800,height=900');\r\n    if(!win){alert(t('pdfHint'));return;}\r\n    win.document.write(`<!DOCTYPE html><html lang=\"zh-CN\"><head><meta charset=\"UTF-8\"><title>Quote - ${cn} - ${dateStr}<\/title>\r\n    <style>\r\n    *{margin:0;padding:0;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;}\r\n    body{padding:40px;color:#333;background:#fff;}\r\n    .pdf-header{text-align:center;margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #1677ff;}\r\n    .pdf-header h1{font-size:24px;color:#1a1a1a;margin-bottom:8px;}\r\n    .pdf-header .company{font-size:14px;color:#666;margin-bottom:4px;}\r\n    .pdf-header .contact{font-size:12px;color:#999;}\r\n    .pdf-header .date{font-size:12px;color:#999;margin-top:6px;}\r\n    .quote-item{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px dashed #eee;font-size:14px;}\r\n    .quote-item.included-item{color:#52c41a;}\r\n    .pdf-footer{margin-top:30px;padding-top:16px;border-top:1px solid #eee;text-align:center;font-size:11px;color:#999;line-height:1.6;}\r\n    @media print{body{padding:20px;}}\r\n    <\/style><\/head><body>\r\n    <div class=\"pdf-header\">\r\n        <h1>\ud83d\udccb ${t('quoteTitle')}<\/h1>\r\n        <div class=\"company\">${t('companyName')}<\/div>\r\n        <div class=\"contact\">${t('contactInfo')}<\/div>\r\n        <div class=\"date\">Date: ${dateStr}<\/div>\r\n    <\/div>\r\n    <div id=\"quoteContent\">${detailHtml}<\/div>\r\n    <div style=\"display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-top:1px dashed #eee;margin-top:8px;font-size:14px;color:#555;font-weight:600;\"><span>${t('qty')}<\/span><span>${pdfQty}<\/span><\/div>\r\n    ${pdfSaved>0?`<div style=\"display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#fff7e6;border-radius:6px;margin:8px 0;font-size:13px;color:#d46b08;\"><span>${t('batchDiscount')} \u00b7 ${t('profitPerUnit')} \u00a5${pdfProfit}<\/span><span>-\u00a5${(2000-pdfProfit)*pdfQty}<\/span><\/div>`:''}\r\n    ${pdfSaved>0?`<div style=\"display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:13px;color:#999;\"><span>${t('originalPrice')}<\/span><span style=\"text-decoration:line-through;\">\u00a5${pdfOriginalTotal.toLocaleString()}<\/span><\/div>`:''}\r\n    ${pdfSaved>0?`<div style=\"display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:14px;color:#52c41a;font-weight:600;\"><span>${t('saved')}<\/span><span>\u00a5${pdfSaved.toLocaleString()}<\/span><\/div>`:''}\r\n    <div style=\"display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-top:2px solid #222;margin-top:4px;font-size:20px;font-weight:bold;color:#ff4d4f;\"><span>${pdfSaved>0?t('discountPrice'):t('grandTotal')}<\/span><span>\u00a5${pdfGrandTotal.toLocaleString()}<\/span><\/div>\r\n    <div class=\"pdf-footer\">\r\n        ${t('priceInclude')}<br>${t('priceExclude')}<br>\r\n        This is an electronic quote, valid for 30 days from the date of issue.\r\n    <\/div>\r\n    <script>window.onload=function(){setTimeout(function(){window.print();},300);};<\\\/script>\r\n    <\/body><\/html>`);\r\n    win.document.close();\r\n}\r\ndocument.getElementById('carModel').addEventListener('change',onCarModelChange);\r\ndocument.getElementById('motorType').addEventListener('change',onMotorTypeChange);\r\ndocument.getElementById('motorPower').addEventListener('change',onMotorPowerChange);\r\ndocument.getElementById('battType').addEventListener('change',updateBattCap);\r\ndocument.getElementById('battCap').addEventListener('change',()=>{updateRange();calculate();});\r\ndocument.getElementById('packType').addEventListener('change',calculate);\r\ncurrentLang=detectLang();\r\ndocument.querySelectorAll('.lang-btn').forEach(btn=>{btn.classList.toggle('active',btn.dataset.lang===currentLang);});\r\nrenderAllText();initCarModels();initPackTypes();initMods();updateMotorTypeOptions();\r\nupdateMotorPower();updateBattTypeOptions();updateBattCap();setConfigLock(false);applyMotorDefaultMods();calculate();\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u5728\u7ebf\u62a5\u4ef7\u7cfb\u7edf \u4e2d\u6587 EN RU \u57fa\u7840\u8f66\u578b\u914d\u7f6e \u9009\u62e9\u8f66\u578b \u7535\u673a\u7c7b\u578b \u7535\u673a\u529f\u7387 \u6700\u9ad8\u65f6\u901f80 km\/h \u7535\u6c60\u914d\u7f6e \u7535\u6c60\u7c7b\u578b \u7535\u6c60\u5bb9\u91cf \u7eed\u822a\u91cc\u7a0b80 km \u6539\u88c5\u5347\u7ea7\u9879\u76ee \u51fa\u53e3\u5305\u88c5 \u51fa\u5382\u603b\u4ef7\uff08\u542b\u5229\u6da6\uff09\u00a59,550 \u751f\u6210\u62a5\u4ef7\u5355 \ud83d\udccb \u914d\u7f6e\u62a5\u4ef7\u5355 \ud83d\udcc4 \u4e0b\u8f7dPDF \u5173\u95ed<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1194","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/pages\/1194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/comments?post=1194"}],"version-history":[{"count":5,"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/pages\/1194\/revisions"}],"predecessor-version":[{"id":1559,"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/pages\/1194\/revisions\/1559"}],"wp:attachment":[{"href":"https:\/\/sinosportbike.com\/ru\/wp-json\/wp\/v2\/media?parent=1194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}