{"id":18486,"date":"2026-06-21T15:18:58","date_gmt":"2026-06-21T15:18:58","guid":{"rendered":"https:\/\/tendify.net\/?p=18486"},"modified":"2026-07-15T05:26:22","modified_gmt":"2026-07-15T05:26:22","slug":"cbm-volumetric-weight-calculator","status":"publish","type":"post","link":"https:\/\/tendify.net\/fa\/cbm-volumetric-weight-calculator\/","title":{"rendered":"Free CBM &#038; Volumetric Weight Calculator for International Freight"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"18486\" class=\"elementor elementor-18486\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-22e9758 e-flex e-con-boxed e-con e-parent\" data-id=\"22e9758\" 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-c09bc40 elementor-widget elementor-widget-html\" data-id=\"c09bc40\" 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=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Tendify - Premium CBM & Volumetric Weight Calculator<\/title>\r\n    <style>\r\n        \/* \u06a9\u0644 \u0627\u0633\u062a\u0627\u06cc\u0644\u200c\u0647\u0627 \u062f\u0631 \u06a9\u0644\u0627\u0633 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc tendify-calc-container \u0627\u06cc\u0632\u0648\u0644\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u062a\u0627 \u0628\u0627 \u0627\u0644\u0645\u0646\u062a\u0648\u0631 \u062a\u062f\u0627\u062e\u0644 \u067e\u06cc\u062f\u0627 \u0646\u06a9\u0646\u0646\u062f *\/\r\n        .tendify-calc-container {\r\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n            background-color: #0b0f19;\r\n            color: #f3f4f6;\r\n            padding: 28px;\r\n            border-radius: 18px;\r\n            max-width: 1000px;\r\n            margin: 20px auto;\r\n            box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.4);\r\n            border: 1px solid #1e293b;\r\n            box-sizing: border-box;\r\n            direction: ltr;\r\n            text-align: left;\r\n            position: relative;\r\n        }\r\n\r\n        .tendify-calc-container * {\r\n            box-sizing: border-box;\r\n            transition: all 0.2s ease;\r\n        }\r\n\r\n        \/* \u0628\u062e\u0634 \u0647\u062f\u0631 \u0627\u0628\u0632\u0627\u0631 *\/\r\n        .tendify-header {\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n            border-bottom: 1px solid #1e293b;\r\n            padding-bottom: 20px;\r\n            margin-bottom: 24px;\r\n            flex-wrap: wrap;\r\n            gap: 16px;\r\n        }\r\n\r\n        .tendify-logo-area {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n        }\r\n\r\n        .tendify-logo-icon {\r\n            width: 40px;\r\n            height: 40px;\r\n            background: linear-gradient(135deg, #06b6d4, #3b82f6);\r\n            border-radius: 10px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            font-weight: 800;\r\n            font-size: 22px;\r\n            color: #ffffff;\r\n            box-shadow: 0 0 20px rgba(6, 182, 212, 0.4);\r\n        }\r\n\r\n        .tendify-brand-name {\r\n            font-size: 24px;\r\n            font-weight: 800;\r\n            background: linear-gradient(to right, #ffffff, #9ca3af);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n            letter-spacing: 0.5px;\r\n        }\r\n\r\n        .tendify-brand-name span {\r\n            background: linear-gradient(to right, #06b6d4, #3b82f6);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n        }\r\n\r\n        .tendify-unit-selector {\r\n            display: flex;\r\n            background-color: #151d30;\r\n            padding: 4px;\r\n            border-radius: 8px;\r\n            border: 1px solid #1e293b;\r\n        }\r\n\r\n        .tendify-unit-btn {\r\n            background: none;\r\n            border: none;\r\n            color: #9ca3af;\r\n            padding: 8px 16px;\r\n            font-size: 13px;\r\n            font-weight: 600;\r\n            border-radius: 6px;\r\n            cursor: pointer;\r\n        }\r\n\r\n        .tendify-unit-btn.active {\r\n            background-color: #3b82f6;\r\n            color: #ffffff;\r\n            box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);\r\n        }\r\n\r\n        \/* \u062c\u062f\u0648\u0644 \u0627\u0628\u0639\u0627\u062f \u06a9\u0627\u0631\u062a\u0646\u200c\u0647\u0627 *\/\r\n        .tendify-table-wrapper {\r\n            overflow-x: auto;\r\n            margin-bottom: 20px;\r\n            border-radius: 10px;\r\n            border: 1px solid #1e293b;\r\n            background-color: #111827;\r\n        }\r\n\r\n        .tendify-table {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n            min-width: 750px;\r\n        }\r\n\r\n        .tendify-table th {\r\n            background-color: #151d30;\r\n            color: #9ca3af;\r\n            text-align: left;\r\n            padding: 14px 16px;\r\n            font-size: 13px;\r\n            font-weight: 700;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n            border-bottom: 1px solid #1e293b;\r\n        }\r\n\r\n        .tendify-table td {\r\n            padding: 12px 16px;\r\n            border-bottom: 1px solid #1e293b;\r\n            vertical-align: middle;\r\n        }\r\n\r\n        .tendify-table tr:last-child td {\r\n            border-bottom: none;\r\n        }\r\n\r\n        \/* \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc *\/\r\n        .tendify-input {\r\n            width: 100%;\r\n            background-color: #1f2937;\r\n            border: 1px solid #374151;\r\n            color: #ffffff;\r\n            padding: 10px 12px;\r\n            border-radius: 6px;\r\n            font-size: 14px;\r\n            outline: none;\r\n        }\r\n\r\n        .tendify-input:focus {\r\n            border-color: #3b82f6;\r\n            box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25);\r\n        }\r\n\r\n        .tendify-input-unit {\r\n            position: relative;\r\n            display: flex;\r\n            align-items: center;\r\n        }\r\n\r\n        .tendify-input-unit::after {\r\n            content: attr(data-unit);\r\n            position: absolute;\r\n            right: 12px;\r\n            font-size: 11px;\r\n            color: #9ca3af;\r\n            pointer-events: none;\r\n            font-weight: 600;\r\n        }\r\n\r\n        .tendify-input-unit .tendify-input {\r\n            padding-right: 36px;\r\n        }\r\n\r\n        \/* \u062f\u06a9\u0645\u0647 \u062d\u0630\u0641 \u0631\u062f\u06cc\u0641 *\/\r\n        .tendify-btn-delete {\r\n            background: none;\r\n            border: none;\r\n            color: #ef4444;\r\n            cursor: pointer;\r\n            padding: 8px;\r\n            border-radius: 6px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n\r\n        .tendify-btn-delete:hover {\r\n            background-color: rgba(239, 68, 68, 0.15);\r\n        }\r\n\r\n        \/* \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062c\u062f\u0648\u0644 *\/\r\n        .tendify-controls {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            margin-bottom: 30px;\r\n            flex-wrap: wrap;\r\n            gap: 12px;\r\n        }\r\n\r\n        .tendify-btn-group-left {\r\n            display: flex;\r\n            gap: 12px;\r\n            flex-wrap: wrap;\r\n        }\r\n\r\n        .tendify-btn {\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n            padding: 10px 20px;\r\n            border-radius: 8px;\r\n            font-size: 14px;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            border: none;\r\n        }\r\n\r\n        .tendify-btn-primary {\r\n            background-color: #3b82f6;\r\n            color: #ffffff;\r\n        }\r\n\r\n        .tendify-btn-primary:hover {\r\n            background-color: #2563eb;\r\n            box-shadow: 0 4px 12px rgba(37, 99, 235, 0.35);\r\n        }\r\n\r\n        .tendify-btn-secondary {\r\n            background-color: #1f2937;\r\n            color: #d1d5db;\r\n            border: 1px solid #374151;\r\n        }\r\n\r\n        .tendify-btn-secondary:hover {\r\n            background-color: #374151;\r\n            color: #ffffff;\r\n        }\r\n\r\n        .tendify-btn-accent {\r\n            background-color: #06b6d4;\r\n            color: #ffffff;\r\n        }\r\n\r\n        .tendify-btn-accent:hover {\r\n            background-color: #0891b2;\r\n            box-shadow: 0 4px 12px rgba(8, 145, 178, 0.35);\r\n        }\r\n\r\n        \/* \u06a9\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u0646\u062a\u0627\u06cc\u062c *\/\r\n        .tendify-results-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\r\n            gap: 20px;\r\n            margin-bottom: 24px;\r\n        }\r\n\r\n        .tendify-result-card {\r\n            background-color: #151d30;\r\n            border: 1px solid #1e293b;\r\n            border-radius: 12px;\r\n            padding: 22px;\r\n            position: relative;\r\n            overflow: hidden;\r\n        }\r\n\r\n        .tendify-result-card::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: 0;\r\n            left: 0;\r\n            width: 4px;\r\n            height: 100%;\r\n        }\r\n\r\n        .card-cyan::before { background-color: #06b6d4; }\r\n        .card-blue::before { background-color: #3b82f6; }\r\n        .card-emerald::before { background-color: #10b981; }\r\n\r\n        .tendify-card-title {\r\n            color: #9ca3af;\r\n            font-size: 12px;\r\n            font-weight: 700;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.75px;\r\n            margin-bottom: 12px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n        }\r\n\r\n        .tendify-card-value {\r\n            font-size: 30px;\r\n            font-weight: 800;\r\n            color: #ffffff;\r\n            line-height: 1;\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .tendify-card-subtext {\r\n            font-size: 13px;\r\n            color: #9ca3af;\r\n            line-height: 1.4;\r\n        }\r\n\r\n        \/* \u067e\u0646\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 (Container Utilization) *\/\r\n        .tendify-container-utilization {\r\n            background-color: #151d30;\r\n            border: 1px solid #1e293b;\r\n            border-radius: 12px;\r\n            padding: 24px;\r\n            margin-bottom: 24px;\r\n        }\r\n\r\n        .tendify-panel-subtitle {\r\n            font-size: 12px;\r\n            font-weight: 700;\r\n            color: #9ca3af;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.75px;\r\n            margin-bottom: 16px;\r\n        }\r\n\r\n        .tendify-util-row {\r\n            margin-bottom: 16px;\r\n        }\r\n\r\n        .tendify-util-row:last-child {\r\n            margin-bottom: 0;\r\n        }\r\n\r\n        .tendify-util-labels {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            font-size: 13px;\r\n            font-weight: 600;\r\n            color: #ffffff;\r\n            margin-bottom: 6px;\r\n        }\r\n\r\n        .tendify-util-labels span:last-child {\r\n            color: #06b6d4;\r\n        }\r\n\r\n        .tendify-progress-bar-bg {\r\n            background-color: #1f2937;\r\n            height: 8px;\r\n            border-radius: 4px;\r\n            overflow: hidden;\r\n            width: 100%;\r\n        }\r\n\r\n        .tendify-progress-bar-fill {\r\n            height: 100%;\r\n            background: linear-gradient(90deg, #3b82f6, #06b6d4);\r\n            border-radius: 4px;\r\n            width: 0%;\r\n        }\r\n\r\n        \/* \u0628\u062e\u0634 \u0622\u0646\u0627\u0644\u06cc\u0632 \u0646\u0647\u0627\u06cc\u06cc \u0648 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627\u0631\u0628\u0631\u06cc *\/\r\n        .tendify-analysis-panel {\r\n            background: linear-gradient(135deg, #151d30, #0f172a);\r\n            border: 1px solid #1e293b;\r\n            border-radius: 12px;\r\n            padding: 24px;\r\n        }\r\n\r\n        .tendify-analysis-header {\r\n            font-size: 16px;\r\n            font-weight: 700;\r\n            margin-bottom: 16px;\r\n            color: #ffffff;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n            border-bottom: 1px solid #1e293b;\r\n            padding-bottom: 12px;\r\n        }\r\n\r\n        .tendify-comparison-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\r\n            gap: 16px;\r\n        }\r\n\r\n        .tendify-comparison-box {\r\n            background-color: rgba(255, 255, 255, 0.02);\r\n            border: 1px solid #1e293b;\r\n            border-radius: 8px;\r\n            padding: 16px;\r\n        }\r\n\r\n        .tendify-comp-title {\r\n            font-size: 14px;\r\n            font-weight: 600;\r\n            color: #9ca3af;\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .tendify-comp-badge {\r\n            display: inline-block;\r\n            padding: 4px 8px;\r\n            font-size: 11px;\r\n            font-weight: 700;\r\n            border-radius: 4px;\r\n            margin-top: 8px;\r\n        }\r\n\r\n        .badge-actual {\r\n            background-color: rgba(16, 185, 129, 0.15);\r\n            color: #10b981;\r\n        }\r\n\r\n        .badge-volumetric {\r\n            background-color: rgba(245, 158, 11, 0.15);\r\n            color: #f59e0b;\r\n        }\r\n\r\n        .tendify-info-tooltip {\r\n            margin-top: 16px;\r\n            padding: 12px;\r\n            background-color: rgba(59, 130, 246, 0.05);\r\n            border-left: 3px solid #3b82f6;\r\n            font-size: 13px;\r\n            line-height: 1.5;\r\n            color: #9ca3af;\r\n            border-radius: 0 6px 6px 0;\r\n        }\r\n\r\n        .tendify-info-tooltip strong {\r\n            color: #ffffff;\r\n        }\r\n\r\n        \/* \u0646\u0648\u062a\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u062f\u0627\u062e\u0644\u06cc *\/\r\n        .tendify-toast {\r\n            position: fixed;\r\n            bottom: 24px;\r\n            right: 24px;\r\n            background-color: #1f2937;\r\n            border: 1px solid #374151;\r\n            color: #ffffff;\r\n            padding: 12px 20px;\r\n            border-radius: 8px;\r\n            box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.5);\r\n            display: none;\r\n            z-index: 9999;\r\n            align-items: center;\r\n            gap: 10px;\r\n            font-size: 14px;\r\n        }\r\n\r\n        \/* \u0627\u0633\u062a\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c\u06cc \u0686\u0627\u067e\u06cc PDF *\/\r\n        #tendify-printable-area {\r\n            display: none;\r\n        }\r\n\r\n        @media print {\r\n            body {\r\n                background-color: #ffffff !important;\r\n                color: #000000 !important;\r\n            }\r\n            .tendify-calc-container {\r\n                display: none !important; \/* \u067e\u0646\u0647\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0627\u0628\u0632\u0627\u0631 \u0627\u0635\u0644\u06cc \u062f\u0631 \u0632\u0645\u0627\u0646 \u067e\u0631\u06cc\u0646\u062a \u062c\u0647\u062a \u062a\u0645\u06cc\u0632 \u0628\u0648\u062f\u0646 *\/\r\n            }\r\n            #tendify-printable-area {\r\n                display: block !important;\r\n                font-family: Arial, sans-serif;\r\n                color: #000000;\r\n                padding: 20px;\r\n                background-color: #ffffff;\r\n                direction: ltr;\r\n                text-align: left;\r\n            }\r\n            .print-header {\r\n                border-bottom: 2px solid #000000;\r\n                padding-bottom: 15px;\r\n                margin-bottom: 20px;\r\n                display: flex;\r\n                justify-content: space-between;\r\n                align-items: center;\r\n            }\r\n            .print-title {\r\n                font-size: 24px;\r\n                font-weight: bold;\r\n                color: #000000;\r\n            }\r\n            .print-grid {\r\n                display: grid;\r\n                grid-template-columns: repeat(3, 1fr);\r\n                gap: 15px;\r\n                margin-bottom: 20px;\r\n                border: 1px solid #dddddd;\r\n                padding: 15px;\r\n                border-radius: 6px;\r\n            }\r\n            .print-box-title {\r\n                font-size: 11px;\r\n                color: #555555;\r\n                text-transform: uppercase;\r\n                margin-bottom: 4px;\r\n            }\r\n            .print-box-value {\r\n                font-size: 18px;\r\n                font-weight: bold;\r\n            }\r\n            .print-table {\r\n                width: 100%;\r\n                border-collapse: collapse;\r\n                margin-bottom: 25px;\r\n            }\r\n            .print-table th {\r\n                background-color: #f2f2f2;\r\n                border: 1px solid #dddddd;\r\n                padding: 10px;\r\n                font-size: 12px;\r\n                font-weight: bold;\r\n                text-align: left;\r\n            }\r\n            .print-table td {\r\n                border: 1px solid #dddddd;\r\n                padding: 10px;\r\n                font-size: 12px;\r\n            }\r\n            .print-summary {\r\n                background-color: #f9f9f9;\r\n                border: 1px solid #dddddd;\r\n                padding: 15px;\r\n                border-radius: 6px;\r\n                font-size: 13px;\r\n                line-height: 1.5;\r\n            }\r\n            .print-footer {\r\n                margin-top: 40px;\r\n                border-top: 1px solid #dddddd;\r\n                padding-top: 10px;\r\n                font-size: 11px;\r\n                color: #777777;\r\n                text-align: center;\r\n            }\r\n        }\r\n\r\n        \/* \u0648\u0627\u06a9\u0646\u0634\u200c\u06af\u0631\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644 *\/\r\n        @media (max-width: 768px) {\r\n            .tendify-calc-container {\r\n                padding: 18px;\r\n                border-radius: 12px;\r\n            }\r\n            .tendify-header {\r\n                flex-direction: column;\r\n                align-items: flex-start;\r\n            }\r\n            .tendify-unit-selector {\r\n                width: 100%;\r\n                justify-content: center;\r\n            }\r\n            .tendify-unit-btn {\r\n                flex: 1;\r\n                text-align: center;\r\n            }\r\n            .tendify-controls {\r\n                flex-direction: column;\r\n                gap: 12px;\r\n            }\r\n            .tendify-btn-group-left {\r\n                width: 100%;\r\n            }\r\n            .tendify-btn {\r\n                width: 100%;\r\n                justify-content: center;\r\n            }\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"tendify-calc-container\">\r\n    \r\n    <!-- \u0628\u062e\u0634 \u0647\u062f\u0631 \u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u0648\u0627\u062d\u062f -->\r\n    <div class=\"tendify-header\">\r\n        <div class=\"tendify-logo-area\">\r\n            <div class=\"tendify-logo-icon\">T<\/div>\r\n            <div class=\"tendify-brand-name\">Tendify<span>.Net<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"tendify-unit-selector\">\r\n            <button type=\"button\" class=\"tendify-unit-btn active\" onclick=\"switchUnit('metric')\">Metric (cm \/ kg)<\/button>\r\n            <button type=\"button\" class=\"tendify-unit-btn\" onclick=\"switchUnit('imperial')\">Imperial (in \/ lbs)<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- \u062c\u062f\u0648\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u0628\u0639\u0627\u062f \u06a9\u0627\u0631\u062a\u0646\u200c\u0647\u0627 -->\r\n    <div class=\"tendify-table-wrapper\">\r\n        <table class=\"tendify-table\" id=\"cargoTable\">\r\n            <thead>\r\n                <tr>\r\n                    <th style=\"width: 26%\">Box Description<\/th>\r\n                    <th style=\"width: 14%\">Length (<span class=\"len-unit\">cm<\/span>)<\/th>\r\n                    <th style=\"width: 14%\">Width (<span class=\"len-unit\">cm<\/span>)<\/th>\r\n                    <th style=\"width: 14%\">Height (<span class=\"len-unit\">cm<\/span>)<\/th>\r\n                    <th style=\"width: 12%\">Qty<\/th>\r\n                    <th style=\"width: 16%\">Gross Wt. (<span class=\"weight-unit\">kg<\/span>)<\/th>\r\n                    <th style=\"width: 4%\"><\/th>\r\n                <\/tr>\r\n            <\/thead>\r\n            <tbody id=\"tableBody\">\r\n                <tr class=\"cargo-row\">\r\n                    <td>\r\n                        <input type=\"text\" class=\"tendify-input row-desc\" placeholder=\"e.g., Cartons A\" value=\"Carton Pack A\">\r\n                    <\/td>\r\n                    <td>\r\n                        <div class=\"tendify-input-unit\" data-unit=\"cm\">\r\n                            <input type=\"number\" class=\"tendify-input input-length\" min=\"0.1\" step=\"any\" value=\"50\" oninput=\"calculateAll()\">\r\n                        <\/div>\r\n                    <\/td>\r\n                    <td>\r\n                        <div class=\"tendify-input-unit\" data-unit=\"cm\">\r\n                            <input type=\"number\" class=\"tendify-input input-width\" min=\"0.1\" step=\"any\" value=\"40\" oninput=\"calculateAll()\">\r\n                        <\/div>\r\n                    <\/td>\r\n                    <td>\r\n                        <div class=\"tendify-input-unit\" data-unit=\"cm\">\r\n                            <input type=\"number\" class=\"tendify-input input-height\" min=\"0.1\" step=\"any\" value=\"40\" oninput=\"calculateAll()\">\r\n                        <\/div>\r\n                    <\/td>\r\n                    <td>\r\n                        <input type=\"number\" class=\"tendify-input input-qty\" min=\"1\" step=\"1\" value=\"10\" oninput=\"calculateAll()\">\r\n                    <\/td>\r\n                    <td>\r\n                        <div class=\"tendify-input-unit\" data-unit=\"kg\">\r\n                            <input type=\"number\" class=\"tendify-input input-weight\" min=\"0.1\" step=\"any\" value=\"12\" oninput=\"calculateAll()\">\r\n                        <\/div>\r\n                    <\/td>\r\n                    <td>\r\n                        <button type=\"button\" class=\"tendify-btn-delete\" onclick=\"deleteRow(this)\" title=\"Delete Row\">\r\n                            <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\"><\/path><\/svg>\r\n                        <\/button>\r\n                    <\/td>\r\n                <\/tr>\r\n            <\/tbody>\r\n        <\/table>\r\n    <\/div>\r\n\r\n    <!-- \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644\u06cc \u062c\u062f\u0648\u0644 \u0634\u0627\u0645\u0644 \u067e\u0631\u06cc\u0646\u062a \u0648 \u06a9\u067e\u06cc \u062e\u0644\u0627\u0635\u0647 -->\r\n    <div class=\"tendify-controls\">\r\n        <div class=\"tendify-btn-group-left\">\r\n            <button type=\"button\" class=\"tendify-btn tendify-btn-primary\" onclick=\"addRow()\">\r\n                <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\"><\/path><\/svg>\r\n                Add Box Type\r\n            <\/button>\r\n            <button type=\"button\" class=\"tendify-btn tendify-btn-secondary\" onclick=\"resetCalculator()\">\r\n                <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 12c0-1.232-.046-2.453-.138-3.662a4.006 4.006 0 00-3.7-3.7 48.656 48.656 0 00-7.324 0 4.006 4.006 0 00-3.7 3.7c-.017.22-.032.441-.046.662M19.5 12l3-3m-3 3l-3-3m-12 3c0 1.232.046 2.453.138 3.662a4.006 4.006 0 003.7 3.7 48.656 48.656 0 007.324 0 4.006 4.006 0 003.7-3.7c.017-.22.032-.441.046-.662M4.5 12l3 3m-3-3l-3 3\"><\/path><\/svg>\r\n                Clear All\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"tendify-btn-group-left\">\r\n            <button type=\"button\" class=\"tendify-btn tendify-btn-secondary\" onclick=\"copyReportToClipboard()\">\r\n                <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3\"><\/path><\/svg>\r\n                Copy Summary\r\n            <\/button>\r\n            <button type=\"button\" class=\"tendify-btn tendify-btn-accent\" onclick=\"triggerPrintPDF()\">\r\n                <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0110.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0l.229 2.523a1.125 1.125 0 01-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318-4.171a3.18 3.18 0 003.682-2.457 21.003 21.003 0 00-20.002 0 3.18 3.18 0 003.682 2.457M21 12v1.5a1.5 1.5 0 01-1.5 1.5H18m-12 0H4.5A1.5 1.5 0 013 13.5V12m15-2.25V4.125A1.875 1.875 0 0016.125 2.25h-8.25A1.875 1.875 0 006 4.125V9.75\"><\/path><\/svg>\r\n                Save as PDF\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- \u0628\u0627\u06a9\u0633\u200c\u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0646\u062a\u0627\u06cc\u062c \u062d\u062c\u0645\u06cc \u0648 \u0648\u0632\u0646\u06cc \u06a9\u0644\u06cc -->\r\n    <div class=\"tendify-results-grid\">\r\n        <!-- \u06a9\u0627\u0631\u062f \u0627\u0648\u0644: \u062d\u062c\u0645 \u06a9\u0644 -->\r\n        <div class=\"tendify-result-card card-cyan\">\r\n            <div class=\"tendify-card-title\">\r\n                <span>Total Volume<\/span>\r\n                <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"><\/path><\/svg>\r\n            <\/div>\r\n            <div class=\"tendify-card-value\" id=\"valCbm\">0.000 <span style=\"font-size:16px; font-weight:600;\">CBM<\/span><\/div>\r\n            <div class=\"tendify-card-subtext\" id=\"valCft\">Equivalent to: 0.00 CFT<\/div>\r\n        <\/div>\r\n\r\n        <!-- \u06a9\u0627\u0631\u062f \u062f\u0648\u0645: \u06a9\u0644 \u0648\u0632\u0646 \u0648\u0627\u0642\u0639\u06cc -->\r\n        <div class=\"tendify-result-card card-emerald\">\r\n            <div class=\"tendify-card-title\">\r\n                <span>Total Actual Weight<\/span>\r\n                <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 6l3 1m0 0l-3 9a5.002 5.002 0 006.001 0M6 7l3 9M6 7l6-2m6 2l3-1m-3 1l-3 9a5.002 5.002 0 006.001 0M18 7l3 9m-3-9l-6-2m0-2v2m0 16V5m0 16H9m3 0h3\"><\/path><\/svg>\r\n            <\/div>\r\n            <div class=\"tendify-card-value\" id=\"valActualWt\">0.0 <span style=\"font-size:16px; font-weight:600;\" class=\"res-weight-unit\">kg<\/span><\/div>\r\n            <div class=\"tendify-card-subtext\" id=\"valTotalQty\">Total Quantity: 0 boxes<\/div>\r\n        <\/div>\r\n\r\n        <!-- \u06a9\u0627\u0631\u062f \u0633\u0648\u0645: \u0648\u0632\u0646 \u062d\u062c\u0645\u06cc \u0647\u0648\u0627\u06cc\u06cc \u0645\u0631\u062c\u0639 -->\r\n        <div class=\"tendify-result-card card-blue\">\r\n            <div class=\"tendify-card-title\">\r\n                <span>Volumetric Weight (Air 1:6000)<\/span>\r\n                <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 19l9 2-9-18-9 18 9-2zm0 0v-8\"><\/path><\/svg>\r\n            <\/div>\r\n            <div class=\"tendify-card-value\" id=\"valAirVolWt\">0.0 <span style=\"font-size:16px; font-weight:600;\" class=\"res-weight-unit\">kg<\/span><\/div>\r\n            <div class=\"tendify-card-subtext\" id=\"valAirAlternative\">Express 1:5000: 0.0 kg<\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- \u0633\u06cc\u0633\u062a\u0645 \u0647\u0648\u0634\u0645\u0646\u062f \u0628\u0631\u0631\u0633\u06cc \u0627\u0634\u063a\u0627\u0644 \u0638\u0631\u0641\u06cc\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 -->\r\n    <div class=\"tendify-container-utilization\">\r\n        <div class=\"tendify-panel-subtitle\">Container Load Utilization (Sea Freight)<\/div>\r\n        \r\n        <div class=\"tendify-util-row\">\r\n            <div class=\"tendify-util-labels\">\r\n                <span>20ft Standard Container (20' GP \/ ~33 CBM max)<\/span>\r\n                <span id=\"util20Text\">0.0%<\/span>\r\n            <\/div>\r\n            <div class=\"tendify-progress-bar-bg\">\r\n                <div class=\"tendify-progress-bar-fill\" id=\"util20Bar\" style=\"width: 0%\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"tendify-util-row\">\r\n            <div class=\"tendify-util-labels\">\r\n                <span>40ft Standard Container (40' GP \/ ~67 CBM max)<\/span>\r\n                <span id=\"util40Text\">0.0%<\/span>\r\n            <\/div>\r\n            <div class=\"tendify-progress-bar-bg\">\r\n                <div class=\"tendify-progress-bar-fill\" id=\"util40Bar\" style=\"width: 0%\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"tendify-util-row\">\r\n            <div class=\"tendify-util-labels\">\r\n                <span>40ft High Cube Container (40' HC \/ ~76 CBM max)<\/span>\r\n                <span id=\"util40hcText\">0.0%<\/span>\r\n            <\/div>\r\n            <div class=\"tendify-progress-bar-bg\">\r\n                <div class=\"tendify-progress-bar-fill\" id=\"util40hcBar\" style=\"width: 0%\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- \u067e\u0646\u0644 \u0622\u0646\u0627\u0644\u06cc\u0632 \u0645\u0642\u0627\u06cc\u0633\u0647\u200c\u0627\u06cc \u0648 \u062a\u0635\u0645\u06cc\u0645\u200c\u06af\u06cc\u0631\u06cc \u0647\u0648\u0634\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644 -->\r\n    <div class=\"tendify-analysis-panel\">\r\n        <div class=\"tendify-analysis-header\">\r\n            <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"><\/path><\/svg>\r\n            Chargeable Weight & Freight Analysis\r\n        <\/div>\r\n        <div class=\"tendify-comparison-grid\">\r\n            <!-- \u062a\u062d\u0644\u06cc\u0644 \u062d\u0645\u0644 \u0647\u0648\u0627\u06cc\u06cc \u06a9\u0627\u0631\u06af\u0648 \u06f1:\u06f6\u06f0\u06f0\u06f0 -->\r\n            <div class=\"tendify-comparison-box\">\r\n                <div class=\"tendify-comp-title\">\u2708\ufe0f Air Freight (Standard 1:6000)<\/div>\r\n                <div style=\"font-size: 20px; font-weight: 800; color: #ffffff;\" id=\"airChargeable\">0.0 <span style=\"font-size: 13px;\" class=\"res-weight-unit\">kg<\/span><\/div>\r\n                <div class=\"tendify-comp-badge\" id=\"airDominanceBadge\">Calculating...<\/div>\r\n            <\/div>\r\n\r\n            <!-- \u062a\u062d\u0644\u06cc\u0644 \u062d\u0645\u0644 \u0647\u0648\u0627\u06cc\u06cc \u0627\u06a9\u0633\u067e\u0631\u0633 \u06f1:\u06f5\u06f0\u06f0\u06f0 -->\r\n            <div class=\"tendify-comparison-box\">\r\n                <div class=\"tendify-comp-title\">\ud83d\ude80 Express Courier (Premium 1:5000)<\/div>\r\n                <div style=\"font-size: 20px; font-weight: 800; color: #ffffff;\" id=\"expressChargeable\">0.0 <span style=\"font-size: 13px;\" class=\"res-weight-unit\">kg<\/span><\/div>\r\n                <div class=\"tendify-comp-badge\" id=\"expressDominanceBadge\">Calculating...<\/div>\r\n            <\/div>\r\n\r\n            <!-- \u062a\u062d\u0644\u06cc\u0644 \u062d\u0645\u0644 \u062f\u0631\u06cc\u0627\u06cc\u06cc \/ \u0632\u0645\u06cc\u0646\u06cc \u06f1:\u06f3\u06f0\u06f0\u06f0 -->\r\n            <div class=\"tendify-comparison-box\">\r\n                <div class=\"tendify-comp-title\">\ud83d\ude9b Road \/ Sea Courier (1:3000)<\/div>\r\n                <div style=\"font-size: 20px; font-weight: 800; color: #ffffff;\" id=\"seaChargeable\">0.0 <span style=\"font-size: 13px;\" class=\"res-weight-unit\">kg<\/span><\/div>\r\n                <div class=\"tendify-comp-badge\" id=\"seaDominanceBadge\">Calculating...<\/div>\r\n            <\/div>\r\n\r\n            <!-- \u062a\u062d\u0644\u06cc\u0644 \u062d\u0645\u0644 \u062f\u0631\u06cc\u0627\u06cc\u06cc \u0627\u0644 \u0633\u06cc \u0627\u0644 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u06f1:\u06f1\u06f0\u06f0\u06f0 -->\r\n            <div class=\"tendify-comparison-box\">\r\n                <div class=\"tendify-comp-title\">\ud83d\udea2 Sea Freight LCL (Cargo 1:1000)<\/div>\r\n                <div style=\"font-size: 20px; font-weight: 800; color: #ffffff;\" id=\"lclChargeable\">0.0 <span style=\"font-size: 13px;\" class=\"res-weight-unit\">kg<\/span><\/div>\r\n                <div class=\"tendify-comp-badge\" id=\"lclDominanceBadge\">Calculating...<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"tendify-info-tooltip\" id=\"explanationText\">\r\n            Fill in the box dimensions and actual weight above. The calculator will automatically estimate if your shipment will be billed by its <strong>Actual Weight<\/strong> or its <strong>Volumetric\/Dimensional Weight<\/strong>.\r\n        <\/div>\r\n    <\/div>\r\n\r\n<\/div>\r\n\r\n<!-- \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0646\u0647\u0627\u0646 \u0686\u0627\u067e\u06cc \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u062e\u0631\u0648\u062c\u06cc \u062a\u0645\u06cc\u0632 PDF -->\r\n<div id=\"tendify-printable-area\">\r\n    <div class=\"print-header\">\r\n        <div>\r\n            <div style=\"font-size: 28px; font-weight: bold; color: #06b6d4; margin-bottom: 5px;\">TENDIFY<\/div>\r\n            <div style=\"font-size: 14px; color: #555555;\">Cargo Volumetric & CBM Calculation Report<\/div>\r\n        <\/div>\r\n        <div style=\"text-align: right; font-size: 12px; color: #555555;\">\r\n            <div>Generated via Tendify.net<\/div>\r\n            <div id=\"printDate\">Date: June 21, 2026<\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"print-grid\">\r\n        <div>\r\n            <div class=\"print-box-title\">Total Volume<\/div>\r\n            <div class=\"print-box-value\" id=\"printCbm\">0.000 CBM<\/div>\r\n            <div style=\"font-size: 11px; color: #777777;\" id=\"printCft\">0.00 CFT<\/div>\r\n        <\/div>\r\n        <div>\r\n            <div class=\"print-box-title\">Total Actual Weight<\/div>\r\n            <div class=\"print-box-value\" id=\"printActualWeight\">0.0 kg<\/div>\r\n            <div style=\"font-size: 11px; color: #777777;\" id=\"printTotalQty\">0 items<\/div>\r\n        <\/div>\r\n        <div>\r\n            <div class=\"print-box-title\">Air Volumetric (1:6000)<\/div>\r\n            <div class=\"print-box-value\" id=\"printAirVol\">0.0 kg<\/div>\r\n            <div style=\"font-size: 11px; color: #777777;\" id=\"printAirExpress\">Express (1:5000): 0.0 kg<\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <h3 style=\"margin-top: 25px; font-size: 16px; border-bottom: 1px solid #dddddd; padding-bottom: 8px;\">Detailed Itemization<\/h3>\r\n    <table class=\"print-table\">\r\n        <thead>\r\n            <tr>\r\n                <th>Box Description<\/th>\r\n                <th>Dimensions<\/th>\r\n                <th>Quantity<\/th>\r\n                <th>Unit Weight<\/th>\r\n                <th>Total Volume<\/th>\r\n                <th>Total Actual Weight<\/th>\r\n            <\/tr>\r\n        <\/thead>\r\n        <tbody id=\"printTableBody\">\r\n            <!-- \u0631\u062f\u06cc\u0641\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u0628\u0627 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f -->\r\n        <\/tbody>\r\n    <\/table>\r\n\r\n    <div class=\"print-summary\">\r\n        <h4 style=\"margin-top: 0; margin-bottom: 8px; font-size: 14px; color: #000000;\">Freight Summary Remarks<\/h4>\r\n        <p id=\"printRemarks\" style=\"margin: 0; font-size: 12px; color: #444444;\"><\/p>\r\n    <\/div>\r\n\r\n    <div class=\"print-footer\">\r\n        Thank you for choosing Tendify for your logistical estimates. Visually planning your cargo ensures efficient pricing.\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- \u0646\u0648\u062a\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u0644\u0645\u0646\u062a\u0648\u0631 \u062f\u0686\u0627\u0631 \u0645\u0634\u06a9\u0644 \u0646\u0634\u0648\u062f -->\r\n<div class=\"tendify-toast\" id=\"tendifyToast\">\r\n    <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"#10b981\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"><\/path><\/svg>\r\n    <span id=\"toastMessage\">Action completed successfully.<\/span>\r\n<\/div>\r\n\r\n<script>\r\n    \/\/ \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0627\u0633\u0631\u06cc \u0628\u0631\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0648\u0627\u062d\u062f\u0647\u0627\r\n    let currentUnit = 'metric';\r\n\r\n    \/\/ \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0644 \u0627\u0633\u062a\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0633\u06cc\u0633\u062a\u0645 \u0648\u0627\u062d\u062f \u0627\u0646\u062a\u062e\u0627\u0628\u06cc\r\n    function switchUnit(unit) {\r\n        if (unit === currentUnit) return;\r\n        currentUnit = unit;\r\n\r\n        \/\/ \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0648\u0627\u062d\u062f\u0647\u0627\r\n        const buttons = document.querySelectorAll('.tendify-unit-btn');\r\n        buttons.forEach(btn => btn.classList.remove('active'));\r\n        if (unit === 'metric') {\r\n            buttons[0].classList.add('active');\r\n        } else {\r\n            buttons[1].classList.add('active');\r\n        }\r\n\r\n        \/\/ \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0631\u0627\u0647\u0646\u0645\u0627\u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627\r\n        const lengthUnits = document.querySelectorAll('.len-unit');\r\n        const weightUnits = document.querySelectorAll('.weight-unit');\r\n        const resWeightUnits = document.querySelectorAll('.res-weight-unit');\r\n        const inputWrappers = document.querySelectorAll('.tendify-input-unit');\r\n\r\n        if (unit === 'metric') {\r\n            lengthUnits.forEach(el => el.textContent = 'cm');\r\n            weightUnits.forEach(el => el.textContent = 'kg');\r\n            resWeightUnits.forEach(el => el.textContent = 'kg');\r\n            \r\n            \/\/ \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0635\u0641\u0627\u062a \u062f\u06cc\u062a\u0627\u06cc \u0641\u06cc\u0644\u062f\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0645\u062a\u0646 \u06a9\u0646\u0627\u0631\u06cc \u0628\u0647 \u0633\u0627\u0646\u062a\u06cc \u0645\u062a\u0631 \u0648 \u06a9\u06cc\u0644\u0648\u06af\u0631\u0645\r\n            inputWrappers.forEach(wrap => {\r\n                const currentData = wrap.getAttribute('data-unit');\r\n                if (currentData === 'in') wrap.setAttribute('data-unit', 'cm');\r\n                if (currentData === 'lbs') wrap.setAttribute('data-unit', 'kg');\r\n            });\r\n\r\n            \/\/ \u062a\u0628\u062f\u06cc\u0644 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0641\u0639\u0644\u06cc \u062f\u0627\u062e\u0644 \u0641\u06cc\u0644\u062f\u0647\u0627 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0645\u067e\u0631\u06cc\u0627\u0644 \u0628\u0647 \u0645\u062a\u0631\u06cc\u06a9\r\n            document.querySelectorAll('.cargo-row').forEach(row => {\r\n                const lenInput = row.querySelector('.input-length');\r\n                const widInput = row.querySelector('.input-width');\r\n                const heiInput = row.querySelector('.input-height');\r\n                const wtInput = row.querySelector('.input-weight');\r\n\r\n                if (lenInput.value) lenInput.value = Math.round(parseFloat(lenInput.value) * 2.54);\r\n                if (widInput.value) widInput.value = Math.round(parseFloat(widInput.value) * 2.54);\r\n                if (heiInput.value) heiInput.value = Math.round(parseFloat(heiInput.value) * 2.54);\r\n                if (wtInput.value) wtInput.value = Math.round(parseFloat(wtInput.value) * 0.45359237 * 10) \/ 10;\r\n            });\r\n\r\n        } else {\r\n            lengthUnits.forEach(el => el.textContent = 'in');\r\n            weightUnits.forEach(el => el.textContent = 'lbs');\r\n            resWeightUnits.forEach(el => el.textContent = 'lbs');\r\n\r\n            inputWrappers.forEach(wrap => {\r\n                const currentData = wrap.getAttribute('data-unit');\r\n                if (currentData === 'cm') wrap.setAttribute('data-unit', 'in');\r\n                if (currentData === 'kg') wrap.setAttribute('data-unit', 'lbs');\r\n            });\r\n\r\n            \/\/ \u062a\u0628\u062f\u06cc\u0644 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0641\u0639\u0644\u06cc \u062f\u0627\u062e\u0644 \u0641\u06cc\u0644\u062f\u0647\u0627 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062a\u0631\u06cc\u06a9 \u0628\u0647 \u0627\u0645\u067e\u0631\u06cc\u0627\u0644\r\n            document.querySelectorAll('.cargo-row').forEach(row => {\r\n                const lenInput = row.querySelector('.input-length');\r\n                const widInput = row.querySelector('.input-width');\r\n                const heiInput = row.querySelector('.input-height');\r\n                const wtInput = row.querySelector('.input-weight');\r\n\r\n                if (lenInput.value) lenInput.value = Math.round(parseFloat(lenInput.value) \/ 2.54);\r\n                if (widInput.value) widInput.value = Math.round(parseFloat(widInput.value) \/ 2.54);\r\n                if (heiInput.value) heiInput.value = Math.round(parseFloat(heiInput.value) \/ 2.54);\r\n                if (wtInput.value) wtInput.value = Math.round(parseFloat(wtInput.value) \/ 0.45359237 * 10) \/ 10;\r\n            });\r\n        }\r\n\r\n        showToast(`Switched units to ${unit === 'metric' ? 'Metric (cm\/kg)' : 'Imperial (in\/lbs)'}`);\r\n        calculateAll();\r\n    }\r\n\r\n    \/\/ \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0631\u062f\u06cc\u0641 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627\r\n    function addRow() {\r\n        const tbody = document.getElementById('tableBody');\r\n        const newRow = document.createElement('tr');\r\n        newRow.className = 'cargo-row';\r\n        \r\n        const lenUnit = currentUnit === 'metric' ? 'cm' : 'in';\r\n        const wtUnit = currentUnit === 'metric' ? 'kg' : 'lbs';\r\n\r\n        \/\/ \u0627\u06cc\u062c\u0627\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u062f\u06cc\u0641 \u062c\u062f\u06cc\u062f \u0628\u0627 \u0627\u0631\u0632\u0634\u200c\u0647\u0627\u06cc \u062a\u0645\u06cc\u0632 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0645\u0646\u0627\u0633\u0628 \u06a9\u0627\u0631\u062a\u0646\u200c\u0647\u0627\u06cc \u062b\u0627\u0646\u0648\u06cc\u0647\r\n        newRow.innerHTML = `\r\n            <td>\r\n                <input type=\"text\" class=\"tendify-input row-desc\" placeholder=\"e.g., Cartons B\" value=\"Carton Pack\">\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"${lenUnit}\">\r\n                    <input type=\"number\" class=\"tendify-input input-length\" min=\"0.1\" step=\"any\" value=\"40\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"${lenUnit}\">\r\n                    <input type=\"number\" class=\"tendify-input input-width\" min=\"0.1\" step=\"any\" value=\"30\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"${lenUnit}\">\r\n                    <input type=\"number\" class=\"tendify-input input-height\" min=\"0.1\" step=\"any\" value=\"30\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <input type=\"number\" class=\"tendify-input input-qty\" min=\"1\" step=\"1\" value=\"5\" oninput=\"calculateAll()\">\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"${wtUnit}\">\r\n                    <input type=\"number\" class=\"tendify-input input-weight\" min=\"0.1\" step=\"any\" value=\"8\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <button type=\"button\" class=\"tendify-btn-delete\" onclick=\"deleteRow(this)\" title=\"Delete Row\">\r\n                    <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\"><\/path><\/svg>\r\n                <\/button>\r\n            <\/td>\r\n        `;\r\n\r\n        tbody.appendChild(newRow);\r\n        calculateAll();\r\n        showToast(\"New carton layout added.\");\r\n    }\r\n\r\n    \/\/ \u062d\u0630\u0641 \u0631\u062f\u06cc\u0641 \u0645\u0634\u062e\u0635 \u0628\u0627 \u0634\u0631\u0637 \u0639\u062f\u0645 \u062e\u0627\u0644\u06cc \u0634\u062f\u0646 \u06a9\u0627\u0645\u0644 \u062c\u062f\u0648\u0644\r\n    function deleteRow(button) {\r\n        const row = button.closest('tr');\r\n        const tbody = document.getElementById('tableBody');\r\n        \r\n        if (tbody.children.length > 1) {\r\n            row.remove();\r\n            calculateAll();\r\n            showToast(\"Carton row deleted.\");\r\n        } else {\r\n            showToast(\"At least one cargo item is required!\", true);\r\n        }\r\n    }\r\n\r\n    \/\/ \u0631\u06cc\u0633\u062a \u06a9\u0631\u062f\u0646 \u06a9\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0627\u0634\u06cc\u0646 \u062d\u0633\u0627\u0628 \u0628\u0647 \u062d\u0627\u0644\u062a \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0627\u0648\u0644\u06cc\u0647\r\n    function resetCalculator() {\r\n        const tbody = document.getElementById('tableBody');\r\n        tbody.innerHTML = '';\r\n        \r\n        currentUnit = 'metric';\r\n        const buttons = document.querySelectorAll('.tendify-unit-btn');\r\n        buttons.forEach(btn => btn.classList.remove('active'));\r\n        buttons[0].classList.add('active');\r\n\r\n        \/\/ \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0631\u062f\u06cc\u0641 \u0627\u0648\u0644 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\r\n        const defaultRow = document.createElement('tr');\r\n        defaultRow.className = 'cargo-row';\r\n        defaultRow.innerHTML = `\r\n            <td>\r\n                <input type=\"text\" class=\"tendify-input row-desc\" placeholder=\"e.g., Cartons A\" value=\"Carton Pack A\">\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"cm\">\r\n                    <input type=\"number\" class=\"tendify-input input-length\" min=\"0.1\" step=\"any\" value=\"50\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"cm\">\r\n                    <input type=\"number\" class=\"tendify-input input-width\" min=\"0.1\" step=\"any\" value=\"40\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"cm\">\r\n                    <input type=\"number\" class=\"tendify-input input-height\" min=\"0.1\" step=\"any\" value=\"40\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <input type=\"number\" class=\"tendify-input input-qty\" min=\"1\" step=\"1\" value=\"10\" oninput=\"calculateAll()\">\r\n            <\/td>\r\n            <td>\r\n                <div class=\"tendify-input-unit\" data-unit=\"kg\">\r\n                    <input type=\"number\" class=\"tendify-input input-weight\" min=\"0.1\" step=\"any\" value=\"12\" oninput=\"calculateAll()\">\r\n                <\/div>\r\n            <\/td>\r\n            <td>\r\n                <button type=\"button\" class=\"tendify-btn-delete\" onclick=\"deleteRow(this)\" title=\"Delete Row\">\r\n                    <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\"><\/path><\/svg>\r\n                <\/button>\r\n            <\/td>\r\n        `;\r\n        tbody.appendChild(defaultRow);\r\n        \r\n        calculateAll();\r\n        showToast(\"Calculator reset successfully.\");\r\n    }\r\n\r\n    \/\/ \u0645\u062a\u062f \u0627\u0635\u0644\u06cc \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u06cc (CBM \u0648 \u0648\u0632\u0646 \u062d\u062c\u0645\u06cc \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0638\u0631\u0648\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc)\r\n    function calculateAll() {\r\n        let totalCbm = 0;\r\n        let totalActualWeight = 0;\r\n        let totalQty = 0;\r\n        let totalAirVolWeight = 0; \/\/ \u0628\u0631 \u0627\u0633\u0627\u0633 \u0641\u0631\u0645\u0648\u0644 \u06f1:\u06f6\u06f0\u06f0\u06f0 \u06a9\u0627\u0631\u06af\u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\r\n        let totalExpressVolWeight = 0; \/\/ \u0628\u0631 \u0627\u0633\u0627\u0633 \u0641\u0631\u0645\u0648\u0644 \u06f1:\u06f5\u06f0\u06f0\u06f0 \u0647\u0648\u0627\u06cc\u06cc \u0627\u06a9\u0633\u067e\u0631\u0633\r\n        let totalSeaVolWeight = 0; \/\/ \u0628\u0631 \u0627\u0633\u0627\u0633 \u0641\u0631\u0645\u0648\u0644 \u06f1:\u06f3\u06f0\u06f0\u06f0 \u0632\u0645\u06cc\u0646\u06cc \u06cc\u0627 \u062f\u0631\u06cc\u0627\u06cc\u06cc \u067e\u06cc\u06a9\u06cc\r\n        let totalLclVolWeight = 0; \/\/ \u0628\u0631 \u0627\u0633\u0627\u0633 \u0641\u0631\u0645\u0648\u0644 \u06f1:\u06f1\u06f0\u06f0\u06f0 (1 CBM = 1000 kg) \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0646\u062f\u0631\u06cc LCL\r\n\r\n        const rows = document.querySelectorAll('.cargo-row');\r\n\r\n        rows.forEach(row => {\r\n            const length = parseFloat(row.querySelector('.input-length').value) || 0;\r\n            const width = parseFloat(row.querySelector('.input-width').value) || 0;\r\n            const height = parseFloat(row.querySelector('.input-height').value) || 0;\r\n            const qty = parseInt(row.querySelector('.input-qty').value) || 0;\r\n            const weight = parseFloat(row.querySelector('.input-weight').value) || 0;\r\n\r\n            totalQty += qty;\r\n            totalActualWeight += (weight * qty);\r\n\r\n            \/\/ \u0645\u062d\u0627\u0633\u0628\u0647 \u062d\u062c\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u0633\u0627\u0646\u062a\u06cc \u0645\u062a\u0631 \u0645\u06a9\u0639\u0628 \u06cc\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0627\u06cc\u0646\u0686 \u0628\u0647 \u0633\u0627\u0646\u062a\u06cc \u0645\u062a\u0631 \u0645\u06a9\u0639\u0628\r\n            let lCm = currentUnit === 'metric' ? length : length * 2.54;\r\n            let wCm = currentUnit === 'metric' ? width : width * 2.54;\r\n            let hCm = currentUnit === 'metric' ? height : height * 2.54;\r\n\r\n            \/\/ \u062d\u062c\u0645 \u06cc\u06a9 \u06a9\u0627\u0631\u062a\u0646 \u0628\u0631 \u062d\u0633\u0628 \u0633\u0627\u0646\u062a\u06cc\u200c\u0645\u062a\u0631 \u0645\u06a9\u0639\u0628\r\n            let singleVolumeCm3 = lCm * wCm * hCm;\r\n            \r\n            \/\/ \u0645\u062c\u0645\u0648\u0639 \u062d\u062c\u0645 \u06a9\u0644 \u0631\u062f\u06cc\u0641 \u0628\u0631\u062d\u0633\u0628 \u0645\u062a\u0631\u0645\u06a9\u0639\u0628 (CBM)\r\n            let rowCbm = (singleVolumeCm3 * qty) \/ 1000000;\r\n            totalCbm += rowCbm;\r\n\r\n            if (currentUnit === 'metric') {\r\n                totalAirVolWeight += (singleVolumeCm3 * qty) \/ 6000;\r\n                totalExpressVolWeight += (singleVolumeCm3 * qty) \/ 5000;\r\n                totalSeaVolWeight += (singleVolumeCm3 * qty) \/ 3000;\r\n                totalLclVolWeight += (singleVolumeCm3 * qty) \/ 1000;\r\n            } else {\r\n                \/\/ \u0627\u06af\u0631 \u0627\u0645\u067e\u0631\u06cc\u0627\u0644 \u0628\u0627\u0634\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0628\u0647 \u06a9\u06cc\u0644\u0648\u06af\u0631\u0645 \u06cc\u0627 \u067e\u0648\u0646\u062f \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\r\n                const singleVolumeInches = length * width * height;\r\n                totalAirVolWeight += (singleVolumeInches * qty) \/ 166;\r\n                totalExpressVolWeight += (singleVolumeInches * qty) \/ 139;\r\n                totalSeaVolWeight += (singleVolumeInches * qty) \/ 83.3;\r\n                totalLclVolWeight += (singleVolumeInches * qty) \/ 27.77; \/\/ \u062a\u0628\u062f\u06cc\u0644 \u0636\u0631\u06cc\u0628 \u06f1:\u06f1\u06f0\u06f0\u06f0 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0645\u067e\u0631\u06cc\u0627\u0644\r\n            }\r\n        });\r\n\r\n        \/\/ \u062a\u0628\u062f\u06cc\u0644 CBM \u0628\u0647 \u0641\u0648\u062a \u0645\u06a9\u0639\u0628 CFT\r\n        let totalCft = totalCbm * 35.3147;\r\n\r\n        \/\/ \u0641\u0631\u0645\u062a \u0633\u0627\u0632\u06cc \u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627 \u062f\u0631 \u0648\u06cc\u0648\u06cc \u0627\u0635\u0644\u06cc \u0633\u0627\u06cc\u062a\r\n        document.getElementById('valCbm').innerHTML = `${totalCbm.toFixed(3)} <span style=\"font-size:16px; font-weight:600;\">CBM<\/span>`;\r\n        document.getElementById('valCft').textContent = `Equivalent to: ${totalCft.toFixed(2)} CFT`;\r\n\r\n        const weightSymbol = currentUnit === 'metric' ? 'kg' : 'lbs';\r\n        \r\n        document.getElementById('valActualWt').innerHTML = `${totalActualWeight.toFixed(1)} <span style=\"font-size:16px; font-weight:600;\">${weightSymbol}<\/span>`;\r\n        document.getElementById('valTotalQty').textContent = `Total Quantity: ${totalQty} boxes`;\r\n\r\n        document.getElementById('valAirVolWt').innerHTML = `${totalAirVolWeight.toFixed(1)} <span style=\"font-size:16px; font-weight:600;\">${weightSymbol}<\/span>`;\r\n        document.getElementById('valAirAlternative').textContent = `Express 1:5000: ${totalExpressVolWeight.toFixed(1)} ${weightSymbol}`;\r\n\r\n        \/\/ \u0645\u062d\u0627\u0633\u0628\u0647 \u0648\u0632\u0646 \u0642\u0627\u0628\u0644 \u067e\u0631\u062f\u0627\u062e\u062a \u0628\u0631\u0627\u06cc \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0686\u0647\u0627\u0631\u06af\u0627\u0646\u0647\r\n        let airChargeableWt = Math.max(totalActualWeight, totalAirVolWeight);\r\n        document.getElementById('airChargeable').innerHTML = `${airChargeableWt.toFixed(1)} <span style=\"font-size: 13px;\">${weightSymbol}<\/span>`;\r\n\r\n        let expressChargeableWt = Math.max(totalActualWeight, totalExpressVolWeight);\r\n        document.getElementById('expressChargeable').innerHTML = `${expressChargeableWt.toFixed(1)} <span style=\"font-size: 13px;\">${weightSymbol}<\/span>`;\r\n\r\n        let seaChargeableWt = Math.max(totalActualWeight, totalSeaVolWeight);\r\n        document.getElementById('seaChargeable').innerHTML = `${seaChargeableWt.toFixed(1)} <span style=\"font-size: 13px;\">${weightSymbol}<\/span>`;\r\n\r\n        let lclChargeableWt = Math.max(totalActualWeight, totalLclVolWeight);\r\n        document.getElementById('lclChargeable').innerHTML = `${lclChargeableWt.toFixed(1)} <span style=\"font-size: 13px;\">${weightSymbol}<\/span>`;\r\n\r\n        \/\/ \u062f\u06a9\u0648\u0631 \u0646\u0634\u0627\u0646\u200c\u0647\u0627\u06cc \u063a\u0644\u0628\u0647 \u0648\u0632\u0646\u06cc\/\u062d\u062c\u0645\u06cc\r\n        setDominanceBadge('airDominanceBadge', totalAirVolWeight, totalActualWeight);\r\n        setDominanceBadge('expressDominanceBadge', totalExpressVolWeight, totalActualWeight);\r\n        setDominanceBadge('seaDominanceBadge', totalSeaVolWeight, totalActualWeight);\r\n        setDominanceBadge('lclDominanceBadge', totalLclVolWeight, totalActualWeight);\r\n\r\n        \/\/ \u0645\u062d\u0627\u0633\u0628\u0647 \u0648 \u0627\u0639\u0645\u0627\u0644 \u067e\u06cc\u0634\u0631\u0641\u062a \u0627\u0634\u063a\u0627\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 (Utilization Progress)\r\n        updateUtilization('util20', totalCbm, 33); \/\/ \u062d\u062f\u0627\u06a9\u062b\u0631 \u0638\u0631\u0641\u06cc\u062a \u062a\u0642\u0631\u06cc\u0628\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06f2\u06f0 \u0641\u0648\u062a \u06f3\u06f3 \u0645\u062a\u0631 \u0645\u06a9\u0639\u0628 \u0627\u0633\u062a\r\n        updateUtilization('util40', totalCbm, 67); \/\/ \u062d\u062f\u0627\u06a9\u062b\u0631 \u0638\u0631\u0641\u06cc\u062a \u062a\u0642\u0631\u06cc\u0628\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06f4\u06f0 \u0641\u0648\u062a \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u06f6\u06f7 \u0645\u062a\u0631 \u0645\u06a9\u0639\u0628 \u0627\u0633\u062a\r\n        updateUtilization('util40hc', totalCbm, 76); \/\/ \u062d\u062f\u0627\u06a9\u062b\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0647\u0627\u06cc\u200c\u06a9\u06cc\u0648\u0628 \u06f4\u06f0 \u0641\u0648\u062a \u06f7\u06f6 \u0645\u062a\u0631 \u0645\u06a9\u0639\u0628 \u0627\u0633\u062a\r\n\r\n        \/\/ \u062a\u0648\u0644\u06cc\u062f \u06a9\u0627\u0645\u0646\u062a \u062a\u062d\u0644\u06cc\u0644\u06cc \u0646\u0647\u0627\u06cc\u06cc\r\n        const explanation = document.getElementById('explanationText');\r\n        if (totalQty === 0 || totalCbm === 0) {\r\n            explanation.innerHTML = `Fill in the box dimensions and actual weight above to analyze your shipping rates.`;\r\n            return;\r\n        }\r\n\r\n        if (totalAirVolWeight > totalActualWeight) {\r\n            explanation.innerHTML = `\ud83d\udca1 <strong>Analysis:<\/strong> Your shipment is <strong>Volumetric (Light but Bulky)<\/strong>. For Air Freight (1:6000), carriers will bill you based on the Volumetric Weight (<strong>${totalAirVolWeight.toFixed(1)} ${weightSymbol}<\/strong>) instead of physical weight (<strong>${totalActualWeight.toFixed(1)} ${weightSymbol}<\/strong>). We suggest vacuum-packing or consolidating cartons to save space!`;\r\n        } else {\r\n            explanation.innerHTML = `\ud83d\udca1 <strong>Analysis:<\/strong> Your shipment is <strong>Dense (Heavy but Compact)<\/strong>. Carriers will bill you based on your <strong>Actual Weight<\/strong> of <strong>${totalActualWeight.toFixed(1)} ${weightSymbol}<\/strong> because it is higher than any volumetric thresholds. Packaging is highly optimal.`;\r\n        }\r\n    }\r\n\r\n    \/\/ \u0645\u062a\u062f \u06a9\u0645\u06a9\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0628\u062c \u0648\u0636\u0639\u06cc\u062a \u063a\u0644\u0628\u0647 \u0648\u0632\u0646 \u0648\u0627\u0642\u0639\u06cc \u06cc\u0627 \u062d\u062c\u0645\u06cc\r\n    function setDominanceBadge(badgeId, volWeight, actWeight) {\r\n        const badge = document.getElementById(badgeId);\r\n        if (volWeight > actWeight) {\r\n            badge.textContent = \"Billed by Volume\";\r\n            badge.className = \"tendify-comp-badge badge-volumetric\";\r\n        } else {\r\n            badge.textContent = \"Billed by Weight\";\r\n            badge.className = \"tendify-comp-badge badge-actual\";\r\n        }\r\n    }\r\n\r\n    \/\/ \u0645\u062a\u062f \u06a9\u0645\u06a9\u06cc \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0646\u0648\u0627\u0631 \u062f\u0631\u0635\u062f \u0627\u0634\u063a\u0627\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\r\n    function updateUtilization(idPrefix, cargoCbm, maxCbm) {\r\n        let percentage = (cargoCbm \/ maxCbm) * 100;\r\n        if (percentage > 100) percentage = 100; \/\/ \u0645\u062d\u062f\u0648\u062f \u0628\u0647 \u0633\u0642\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\r\n        \r\n        document.getElementById(`${idPrefix}Text`).textContent = `${percentage.toFixed(1)}%`;\r\n        document.getElementById(`${idPrefix}Bar`).style.width = `${percentage}%`;\r\n    }\r\n\r\n    \/\/ \u062a\u0627\u0628\u0639 \u0646\u0648\u062a\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u063a\u06cc\u0631 \u0645\u062e\u0631\u0628\r\n    function showToast(message, isError = false) {\r\n        const toast = document.getElementById('tendifyToast');\r\n        const toastMsg = document.getElementById('toastMessage');\r\n        \r\n        toastMsg.textContent = message;\r\n        if (isError) {\r\n            toast.style.borderLeft = \"4px solid #ef4444\";\r\n        } else {\r\n            toast.style.borderLeft = \"4px solid #10b981\";\r\n        }\r\n        \r\n        toast.style.display = \"flex\";\r\n        setTimeout(() => {\r\n            toast.style.display = \"none\";\r\n        }, 3000);\r\n    }\r\n\r\n    \/\/ \u0645\u062a\u062f \u0633\u0627\u062e\u062a \u06af\u0632\u0627\u0631\u0634 \u0645\u062a\u0646\u06cc \u0648 \u06a9\u067e\u06cc \u0622\u0646 \u062f\u0631 \u06a9\u0644\u06cc\u067e\u200c\u0628\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0686\u062a\u200c\u0647\u0627\r\n    function copyReportToClipboard() {\r\n        const cbmVal = document.getElementById('valCbm').innerText;\r\n        const cftVal = document.getElementById('valCft').innerText;\r\n        const actualWt = document.getElementById('valActualWt').innerText;\r\n        const qtyVal = document.getElementById('valTotalQty').innerText;\r\n        const airVol = document.getElementById('valAirVolWt').innerText;\r\n        \r\n        let reportText = `--- TENDIFY.NET CARGO REPORT ---\\n`;\r\n        reportText += `Total Quantity: ${qtyVal}\\n`;\r\n        reportText += `Total Volume: ${cbmVal} (${cftVal})\\n`;\r\n        reportText += `Total Actual Weight: ${actualWt}\\n`;\r\n        reportText += `Air Volumetric Weight (1:6000): ${airVol}\\n`;\r\n        reportText += `--------------------------------\\n`;\r\n        reportText += `Estimated using Tendify Premium Calculator.`;\r\n\r\n        \/\/ \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634 \u0627\u06cc\u0645\u0646 \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 iframe \u0647\u0627 \u0628\u0631\u0627\u06cc \u06a9\u067e\u06cc\r\n        const textarea = document.createElement('textarea');\r\n        textarea.value = reportText;\r\n        document.body.appendChild(textarea);\r\n        textarea.select();\r\n        try {\r\n            document.execCommand('copy');\r\n            showToast(\"Report summary copied to clipboard!\");\r\n        } catch (err) {\r\n            showToast(\"Failed to copy report\", true);\r\n        }\r\n        document.body.removeChild(textarea);\r\n    }\r\n\r\n    \/\/ \u0645\u062a\u062f \u0641\u0631\u062e\u0648\u0627\u0646\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u0686\u0627\u067e \u0628\u0627 \u067e\u0631 \u06a9\u0631\u062f\u0646 \u062f\u06cc\u062a\u0627\u0647\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0641\u06cc\u062f \u062a\u0645\u06cc\u0632 \u067e\u0631\u06cc\u0646\u062a\r\n    function triggerPrintPDF() {\r\n        const printTableBody = document.getElementById('printTableBody');\r\n        printTableBody.innerHTML = ''; \/\/ \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u0631\u062f\u06cc\u0641\u200c\u0647\u0627\u06cc \u0686\u0627\u067e\u06cc \u0642\u0628\u0644\u06cc\r\n\r\n        const rows = document.querySelectorAll('.cargo-row');\r\n        const lenUnit = currentUnit === 'metric' ? 'cm' : 'in';\r\n        const wtUnit = currentUnit === 'metric' ? 'kg' : 'lbs';\r\n\r\n        rows.forEach(row => {\r\n            const desc = row.querySelector('.row-desc').value || \"No Description\";\r\n            const length = parseFloat(row.querySelector('.input-length').value) || 0;\r\n            const width = parseFloat(row.querySelector('.input-width').value) || 0;\r\n            const height = parseFloat(row.querySelector('.input-height').value) || 0;\r\n            const qty = parseInt(row.querySelector('.input-qty').value) || 0;\r\n            const weight = parseFloat(row.querySelector('.input-weight').value) || 0;\r\n\r\n            \/\/ \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0631\u062f\u06cc\u0641 \u0628\u0631\u0627\u06cc \u062c\u062f\u0648\u0644 \u0686\u0627\u067e\u06cc\r\n            let rowCbm = (length * width * height * qty) \/ 1000000;\r\n            if (currentUnit === 'imperial') {\r\n                \/\/ \u062a\u0628\u062f\u06cc\u0644 \u0627\u0628\u0639\u0627\u062f \u0627\u06cc\u0646\u0686 \u0628\u0647 \u0645\u062a\u0631 \u0645\u06a9\u0639\u0628 \u062c\u0647\u062a \u0646\u0645\u0627\u06cc\u0634 \u06cc\u06a9\u0633\u0627\u0646 CBM \u062f\u0631 \u062e\u0631\u0648\u062c\u06cc \u0686\u0627\u067e\u06cc\r\n                rowCbm = (length * 2.54 * width * 2.54 * height * 2.54 * qty) \/ 1000000;\r\n            }\r\n\r\n            const printRow = document.createElement('tr');\r\n            printRow.innerHTML = `\r\n                <td><strong>${desc}<\/strong><\/td>\r\n                <td>${length} x ${width} x ${height} ${lenUnit}<\/td>\r\n                <td>${qty}<\/td>\r\n                <td>${weight} ${wtUnit}<\/td>\r\n                <td>${rowCbm.toFixed(3)} CBM<\/td>\r\n                <td>${(weight * qty).toFixed(1)} ${wtUnit}<\/td>\r\n            `;\r\n            printTableBody.appendChild(printRow);\r\n        });\r\n\r\n        \/\/ \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u06a9\u0644\u06cc\u062f\u06cc \u0686\u0627\u067e\u06cc\r\n        document.getElementById('printCbm').textContent = document.getElementById('valCbm').innerText;\r\n        document.getElementById('printCft').textContent = document.getElementById('valCft').innerText;\r\n        document.getElementById('printActualWeight').textContent = document.getElementById('valActualWt').innerText;\r\n        document.getElementById('printTotalQty').textContent = document.getElementById('valTotalQty').innerText;\r\n        document.getElementById('printAirVol').textContent = document.getElementById('valAirVolWt').innerText;\r\n        document.getElementById('printAirExpress').textContent = document.getElementById('valAirAlternative').innerText;\r\n        document.getElementById('printRemarks').innerHTML = document.getElementById('explanationText').innerHTML;\r\n\r\n        \/\/ \u062a\u0646\u0638\u06cc\u0645 \u062a\u0627\u0631\u06cc\u062e \u062c\u0627\u0631\u06cc \u06af\u0632\u0627\u0631\u0634\r\n        const now = new Date();\r\n        document.getElementById('printDate').textContent = \"Date: \" + now.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });\r\n\r\n        \/\/ \u0641\u0631\u062e\u0648\u0627\u0646\u06cc \u067e\u0631\u06cc\u0646\u062a\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 (\u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0645\u06a9\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 PDF \u0631\u0627 \u0646\u06cc\u0632 \u062f\u0631 \u0622\u0646 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a)\r\n        window.print();\r\n    }\r\n\r\n    \/\/ \u0634\u0631\u0648\u0639 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0645\u062d\u0636 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u0635\u0641\u062d\u0647\r\n    window.onload = function() {\r\n        calculateAll();\r\n    };\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"wd-negative-gap elementor-element elementor-element-c42a8d6 e-flex e-con-boxed e-con e-parent\" data-id=\"c42a8d6\" 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-b5df2c2 elementor-widget elementor-widget-wd_text_block\" data-id=\"b5df2c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_text_block.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"wd-text-block reset-last-child text-left\">\n\t\t\t\n\t\t\t<h2 data-path-to-node=\"4\">Complete Guide to CBM &amp; Volumetric Weight Calculator<\/h2><p data-path-to-node=\"5\">In international shipping, freight costs are not always determined by how much your cargo weighs on a scale. Often, the amount of space your goods occupy in a container or aircraft plays a much bigger role. To help you eliminate guesswork and plan your logistics budget accurately, <b data-path-to-node=\"5\" data-index-in-node=\"282\">Tendify<\/b> presents the ultimate <b data-path-to-node=\"5\" data-index-in-node=\"312\">CBM &amp; Volumetric Weight Calculator<\/b>.<\/p><p data-path-to-node=\"6\">Whether you are shipping via air freight, sea freight, or international express couriers, this smart tool ensures you know your exact <b data-path-to-node=\"6\" data-index-in-node=\"134\">Chargeable Weight<\/b> before booking.<\/p><h3 data-path-to-node=\"8\">What is CBM and Volumetric Weight?<\/h3><ul data-path-to-node=\"9\"><li><p data-path-to-node=\"9,0,0\"><b data-path-to-node=\"9,0,0\" data-index-in-node=\"0\">CBM (Cubic Meter):<\/b> The standard metric measurement used to determine the total volume of your shipment.<\/p><\/li><li><p data-path-to-node=\"9,1,0\"><b data-path-to-node=\"9,1,0\" data-index-in-node=\"0\">Volumetric Weight (Dimensional Weight):<\/b> A pricing technique used by commercial freight carriers. It converts the volume of your cargo into a weight equivalent based on industry-standard ratios (e.g., <b data-path-to-node=\"9,1,0\" data-index-in-node=\"200\">1:6000<\/b> for standard air cargo or <b data-path-to-node=\"9,1,0\" data-index-in-node=\"233\">1:5000<\/b> for express shipping).<\/p><\/li><\/ul><p data-path-to-node=\"10\">Carriers always bill your shipment based on whichever value is higher: the <b data-path-to-node=\"10\" data-index-in-node=\"75\">Actual Gross Weight<\/b> or the <b data-path-to-node=\"10\" data-index-in-node=\"102\">Volumetric Weight<\/b>. This higher value is known as the <b data-path-to-node=\"10\" data-index-in-node=\"155\">Chargeable Weight<\/b>.<\/p><h3 data-path-to-node=\"12\">How to Use the Tendify Cargo Calculator<\/h3><p data-path-to-node=\"13\">Using our interactive tool is simple, fast, and requires no registration:<\/p><ol start=\"1\" data-path-to-node=\"14\"><li><p data-path-to-node=\"14,0,0\"><b data-path-to-node=\"14,0,0\" data-index-in-node=\"0\">Select Your Unit System:<\/b> Toggle between <b data-path-to-node=\"14,0,0\" data-index-in-node=\"40\">Metric (cm \/ kg)<\/b> or <b data-path-to-node=\"14,0,0\" data-index-in-node=\"60\">Imperial (in \/ lbs)<\/b> at the top right of the tool to match your invoice specifications.<\/p><\/li><li><p data-path-to-node=\"14,1,0\"><b data-path-to-node=\"14,1,0\" data-index-in-node=\"0\">Enter Box Details:<\/b> Give your carton type a name (e.g., \"Product Pack A\") and input its <b data-path-to-node=\"14,1,0\" data-index-in-node=\"87\">Length, Width, Height, Quantity,<\/b> and <b data-path-to-node=\"14,1,0\" data-index-in-node=\"124\">Gross Weight<\/b> per box.<\/p><\/li><li><p data-path-to-node=\"14,2,0\"><b data-path-to-node=\"14,2,0\" data-index-in-node=\"0\">Add Multiple Items:<\/b> If you have different box sizes in one shipment, simply click the <b data-path-to-node=\"14,2,0\" data-index-in-node=\"86\">\"Add Box Type\"<\/b> button to dynamically generate a new row.<\/p><\/li><li><p data-path-to-node=\"14,3,0\"><b data-path-to-node=\"14,3,0\" data-index-in-node=\"0\">Analyze the Results Instantly:<\/b> The calculator automatically displays your total volume, actual weight, and estimated chargeable weight for <b data-path-to-node=\"14,3,0\" data-index-in-node=\"139\">Air, Express, and Sea Freight<\/b>.<\/p><\/li><li><p data-path-to-node=\"14,4,0\"><b data-path-to-node=\"14,4,0\" data-index-in-node=\"0\">Save or Share Your Report:<\/b> Click <b data-path-to-node=\"14,4,0\" data-index-in-node=\"33\">\"Copy Summary\"<\/b> to instantly copy a text version of your report for emails\/WhatsApp, or hit <b data-path-to-node=\"14,4,0\" data-index-in-node=\"124\">\"Save as PDF\"<\/b> to download a clean, print-ready document for your records.<\/p><\/li><\/ol><h3 data-path-to-node=\"16\">Benefits of Using Tendify\u2019s Premium Calculator<\/h3><ul data-path-to-node=\"17\"><li><p data-path-to-node=\"17,0,0\"><b data-path-to-node=\"17,0,0\" data-index-in-node=\"0\">Avoid Hidden Carrier Fees:<\/b> Freight forwarders often apply volumetric surcharges. By knowing your chargeable weight in advance, you can compare quotes confidently and avoid unexpected billing discrepancies.<\/p><\/li><li><p data-path-to-node=\"17,1,0\"><b data-path-to-node=\"17,1,0\" data-index-in-node=\"0\">Smart Container Load Optimization:<\/b> Our built-in <b data-path-to-node=\"17,1,0\" data-index-in-node=\"48\">Container Load Utilization<\/b> bars show you exactly what percentage of a <b data-path-to-node=\"17,1,0\" data-index-in-node=\"118\">20ft, 40ft, or 40ft High Cube (HC)<\/b> sea container your goods will occupy. This helps you decide between LCL (Less than Container Load) and FCL (Full Container Load).<\/p><\/li><li><p data-path-to-node=\"17,2,0\"><b data-path-to-node=\"17,2,0\" data-index-in-node=\"0\">Cross-Carrier Accuracy:<\/b> We don't just calculate one standard. Our tool evaluates four distinct international shipping ratios simultaneously: <b data-path-to-node=\"17,2,0\" data-index-in-node=\"141\">Air Freight (1:6000)<\/b>, <b data-path-to-node=\"17,2,0\" data-index-in-node=\"163\">Express Courier (1:5000)<\/b>, <b data-path-to-node=\"17,2,0\" data-index-in-node=\"189\">Road Freight (1:3000)<\/b>, and <b data-path-to-node=\"17,2,0\" data-index-in-node=\"216\">Sea Freight LCL (1:1000)<\/b>.<\/p><\/li><li><p data-path-to-node=\"17,3,0\"><b data-path-to-node=\"17,3,0\" data-index-in-node=\"0\">Packaging Efficiency Insights:<\/b> The calculator features an automated <b data-path-to-node=\"17,3,0\" data-index-in-node=\"68\">Freight Analysis Panel<\/b> that tells you whether your shipment is \"Volumetric\" (bulky but light) or \"Dense\" (compact but heavy), offering tips to optimize your carton layouts and save money.<\/p><\/li><\/ul>\n\t\t\t\t\t<\/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<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Master your freight costs with our advanced CBM and volumetric weight calculator. Optimize your 20ft\/40ft container load and save on shipping fees today.<\/p>","protected":false},"author":15,"featured_media":18487,"comment_status":"open","ping_status":"closed","sticky":false,"template":"elementor_theme","format":"standard","meta":{"footnotes":""},"categories":[767],"tags":[],"class_list":["post-18486","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-b2b-online-tools"],"_links":{"self":[{"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/posts\/18486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/comments?post=18486"}],"version-history":[{"count":3,"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/posts\/18486\/revisions"}],"predecessor-version":[{"id":18829,"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/posts\/18486\/revisions\/18829"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/media\/18487"}],"wp:attachment":[{"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/media?parent=18486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/categories?post=18486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tendify.net\/fa\/wp-json\/wp\/v2\/tags?post=18486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}