{"id":16263734,"date":"2025-09-22T15:34:23","date_gmt":"2025-09-22T19:34:23","guid":{"rendered":"https:\/\/moovair.com\/?page_id=16263734"},"modified":"2026-02-17T11:33:25","modified_gmt":"2026-02-17T16:33:25","slug":"assistant-multizone","status":"publish","type":"page","link":"https:\/\/moovair.com\/fr-ca\/assistant-multizone\/","title":{"rendered":"Assistant multizone"},"content":{"rendered":"<p>[et_pb_section fb_built=\u00a0\u00bb1&Prime; _builder_version=\u00a0\u00bb4.22.1&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb height=\u00a0\u00bb100%\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; background_enable_image_tablet=\u00a0\u00bboff\u00a0\u00bb background_enable_image_phone=\u00a0\u00bboff\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb transform_styles_last_edited=\u00a0\u00bboff|desktop\u00a0\u00bb transform_scale_last_edited=\u00a0\u00bboff|desktop\u00a0\u00bb transform_translate_last_edited=\u00a0\u00bboff|desktop\u00a0\u00bb transform_rotate_last_edited=\u00a0\u00bboff|desktop\u00a0\u00bb transform_skew_last_edited=\u00a0\u00bboff|desktop\u00a0\u00bb transform_origin_last_edited=\u00a0\u00bboff|desktop\u00a0\u00bb sticky_enabled=\u00a0\u00bb0&Prime;][et_pb_row column_structure=\u00a0\u00bb1_5,3_5,1_5&Prime; _builder_version=\u00a0\u00bb4.22.1&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb max_height=\u00a0\u00bb100%\u00a0\u00bb custom_padding=\u00a0\u00bb||100px||false|false\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; global_colors_info=\u00a0\u00bb{}\u00a0\u00bb sticky_enabled=\u00a0\u00bb0&Prime; make_equal=\u00a0\u00bbon\u00a0\u00bb transform_styles_last_edited=\u00a0\u00bbon|phone\u00a0\u00bb transform_scale_last_edited=\u00a0\u00bbon|phone\u00a0\u00bb transform_translate_last_edited=\u00a0\u00bbon|phone\u00a0\u00bb transform_rotate_last_edited=\u00a0\u00bbon|phone\u00a0\u00bb transform_skew_last_edited=\u00a0\u00bbon|phone\u00a0\u00bb transform_origin_last_edited=\u00a0\u00bbon|phone\u00a0\u00bb][et_pb_column type=\u00a0\u00bb1_5&Prime; _builder_version=\u00a0\u00bb4.22.1&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][\/et_pb_column][et_pb_column type=\u00a0\u00bb3_5&Prime; _builder_version=\u00a0\u00bb4.22.1&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; global_colors_info=\u00a0\u00bb{}\u00a0\u00bb custom_padding=\u00a0\u00bb|5px||5px|false|false\u00a0\u00bb sticky_enabled=\u00a0\u00bb0&Prime;][et_pb_code admin_label=\u00a0\u00bbCSS\u00a0\u00bb _builder_version=\u00a0\u00bb4.22.1&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; global_colors_info=\u00a0\u00bb{}\u00a0\u00bb sticky_enabled=\u00a0\u00bb0&Prime;]<style class=\"wpcode-css-snippet\">\/* Hide actions (Print button) on mobile *\/\r\n@media only screen and (max-width: 820px){\r\n.mzst-actions {\r\n    display:none !important;\r\n  }\r\n}\r\n\/* Print-specific visibility for brand logo (matches colleague approach) *\/\r\n@media print {\r\n  .mzst-logo { display: none !important; }\r\n  .mzst-print-container .mzst-logo { display: inline !important; }\r\n}\r\n\r\n\/* Submittal link styling *\/\r\n#mzst-en .mzst-submittal,\r\n#mzst-fr .mzst-submittal{\r\n  display:inline-block;\r\n  font-size:12px;\r\n  margin-top:4px;\r\n}\r\n#mzst-en .mzst-submittal.inline,\r\n#mzst-fr .mzst-submittal.inline{\r\n  margin-top:0;\r\n  margin-left:8px;\r\n  font-size:inherit;\r\n}\r\n@media print {\r\n  #mzst-en .mzst-submittal,\r\n  #mzst-fr .mzst-submittal{\r\n    display:none !important;\r\n  }\r\n}\r\n\r\n\/* Submittal in detail grid *\/\r\n#mzst-en .mzst-detail-grid .mzst-submittal.inline,\r\n#mzst-fr .mzst-detail-grid .mzst-submittal.inline{\r\n  font-size:16px;\r\n}\r\n\r\n\/* Hide submittal + items with submittal in print *\/\r\n@media print {\r\n  #mzst-en .mzst-detail-grid .mzst-submittal.inline,\r\n  #mzst-fr .mzst-detail-grid .mzst-submittal.inline,\r\n  #mzst-en .mzst-detail-item.mzst-detail-has-submittal,\r\n  #mzst-fr .mzst-detail-item.mzst-detail-has-submittal {\r\n    display: none !important;\r\n  }\r\n}\r\n\r\n@media print {\r\n  #mzst-en .mzst-instr-list,\r\n  #mzst-fr .mzst-instr-list,\r\n  #mzst-en .mzst-notes,\r\n  #mzst-fr .mzst-notes {\r\n    list-style: decimal;\r\n  }\r\n}\r\n\r\n\/* Card wrapper *\/\r\n#mzst-en .mzst-wrap .mzst-card,\r\n#mzst-fr .mzst-wrap .mzst-card{\r\n  box-sizing:border-box;\r\n}\r\n\r\n\/* Instruction block *\/\r\n#mzst-en .mzst-instr-title,\r\n#mzst-fr .mzst-instr-title{\r\n  font-weight:600;\r\n  margin-bottom:6px;\r\n}\r\n#mzst-en .mzst-instr-list,\r\n#mzst-fr .mzst-instr-list{\r\n  padding-left:18px;\r\n  margin:0;\r\n}\r\n\r\n\/* ODU Details (no gap) *\/\r\n#mzst-en .mzst-detail-grid,\r\n#mzst-fr .mzst-detail-grid{\r\n  display:flex;\r\n  flex-wrap:wrap;\r\n  max-width:1100px;\r\n  margin:0 auto;\r\n}\r\n#mzst-en .mzst-detail-item,\r\n#mzst-fr .mzst-detail-item{\r\n  width:calc(50% - 10px);\r\n  margin:0 10px 10px 0;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:space-between;\r\n  padding:10px 12px;\r\n  border:1px solid #e5e7eb;\r\n  border-radius:10px;\r\n  background:#fff;\r\n}\r\n#mzst-en .mzst-detail-label,\r\n#mzst-fr .mzst-detail-label{\r\n  color:#374151;\r\n}\r\n#mzst-en .mzst-detail-value,\r\n#mzst-fr .mzst-detail-value{\r\n  font-weight:600;\r\n  color:#111827;\r\n  white-space:nowrap;\r\n}\r\n@media only screen and (max-width: 820px){\r\n  #mzst-en .mzst-detail-item,\r\n  #mzst-fr .mzst-detail-item{\r\n    width:100%;\r\n    margin-right:0;\r\n  }\r\n}\r\n\r\n\/* Stack helpers (vertical spacing without gap) *\/\r\n#mzst-en .mzst-stack-4  > * + *,\r\n#mzst-fr .mzst-stack-4  > * + *{ margin-top:4px; }\r\n#mzst-en .mzst-stack-6  > * + *,\r\n#mzst-fr .mzst-stack-6  > * + *{ margin-top:6px; }\r\n#mzst-en .mzst-stack-8  > * + *,\r\n#mzst-fr .mzst-stack-8  > * + *{ margin-top:8px; }\r\n#mzst-en .mzst-stack-10 > * + *,\r\n#mzst-fr .mzst-stack-10 > * + *{ margin-top:10px; }\r\n\r\n\/* Horizontal gap for Line Set Length input *\/\r\n#mzst-en label.mzst-stack-4 > input.mzst-line,\r\n#mzst-fr label.mzst-stack-4 > input.mzst-line{\r\n  margin-left: 12px;\r\n}\r\n\/* Add horizontal space between ODU label text and dropdown *\/\r\n#mzst-en label.mzst-stack-6 > select.mzst-odu,\r\n#mzst-fr label.mzst-stack-6 > select.mzst-odu{\r\n  margin-left: 12px;\r\n}\r\n\r\n\r\n\/* Color styles (shared) *\/\r\n.mzst-box { border:1px solid #e5e7eb; border-radius:12px; padding:12px; }\r\n.mzst-color-ok   { border-color:#86efac; background:#f0fdf4; color:#064e3b; }\r\n.mzst-color-error{ border-color:#fca5a5; background:#fef2f2; color:#7f1d1d; }\r\n.mzst-color-warn { border-color:#fde68a; background:#fffbeb; color:#78350f; }\r\n\r\n\/* Input error highlight *\/\r\n#mzst-en .mzst-input-error,\r\n#mzst-fr .mzst-input-error{\r\n  border-color:#fca5a5 !important;\r\n  background:#fef2f2 !important;\r\n  color:#7f1d1d !important;\r\n}\r\n\r\n\/* BoM table *\/\r\n#mzst-en .mzst-bom-table,\r\n#mzst-fr .mzst-bom-table{\r\n  width:100%;\r\n  border-collapse:collapse;\r\n}\r\n#mzst-en .mzst-bom-table th,\r\n#mzst-en .mzst-bom-table td,\r\n#mzst-fr .mzst-bom-table th,\r\n#mzst-fr .mzst-bom-table td{\r\n  border:1px solid #e5e7eb;\r\n  padding:8px;\r\n  text-align:left;\r\n}\r\n#mzst-en .mzst-bom-table thead th,\r\n#mzst-fr .mzst-bom-table thead th{\r\n  font-weight:600;\r\n}\r\n\r\n\/* IDU image *\/\r\n#mzst-en .mzst-idu-img img,\r\n#mzst-fr .mzst-idu-img img{\r\n  max-width:220px;\r\n  height:auto;\r\n  border:1px solid #e5e7eb;\r\n  border-radius:8px;\r\n}\r\n\r\n\/* ODU image *\/\r\n#mzst-en .mzst-odu-img img,\r\n#mzst-fr .mzst-odu-img img{\r\n  max-width:260px;\r\n  height:auto;\r\n  border:1px solid #e5e7eb;\r\n  border-radius:8px;\r\n}\r\n\r\n\/* Print image handling *\/\r\n@media print {\r\n  #mzst-en .mzst-idu-img,\r\n  #mzst-en .mzst-idu-img *,\r\n  #mzst-fr .mzst-idu-img,\r\n  #mzst-fr .mzst-idu-img *,\r\n  #mzst-en .mzst-odu-img,\r\n  #mzst-en .mzst-odu-img *,\r\n  #mzst-fr .mzst-odu-img,\r\n  #mzst-fr .mzst-odu-img *{\r\n    break-inside: avoid;\r\n    page-break-inside: avoid;\r\n  }\r\n}\r\n\r\n\/* Print overrides for iframe clone (.mzst-print-container) *\/\r\n@media print {\r\n  \/* Hide entire Instructions block in print *\/\r\n  .mzst-print-container .mzst-instructions {\r\n    display: none !important;\r\n  }\r\n  \/* Instructions title + list spacing in print clone *\/\r\n  .mzst-print-container .mzst-instr-title{\r\n    font-weight:600;\r\n    margin-bottom:6px;\r\n  }\r\n\r\n  .mzst-print-container .mzst-instr-list,\r\n  .mzst-print-container .mzst-notes{\r\n    padding-left:18px;\r\n    margin:0;\r\n    list-style:decimal;\r\n  }\r\n\r\n  \/* Hide all submittal links + dedicated ODU submittal row in print *\/\r\n  .mzst-print-container .mzst-detail-grid .mzst-submittal.inline,\r\n  .mzst-print-container .mzst-detail-item.mzst-detail-has-submittal,\r\n  .mzst-print-container .mzst-submittal {\r\n    display: none !important;\r\n  }\r\n\r\n  \/* ODU detail grid styling *\/\r\n  .mzst-print-container .mzst-detail-grid{\r\n    display:flex;\r\n    flex-wrap:wrap;\r\n    margin:0;\r\n    padding:0;\r\n  }\r\n  .mzst-print-container .mzst-detail-item{\r\n    width:calc(50% - 6px);\r\n    margin:0 6px 6px 0;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    padding:6px 10px;\r\n    border-radius:9999px;\r\n    border:1px solid #e5e7eb;\r\n    background:#fff;\r\n  }\r\n  .mzst-print-container .mzst-detail-label{\r\n    color:#374151;\r\n  }\r\n  .mzst-print-container .mzst-detail-value{\r\n    font-weight:600;\r\n    color:#111827;\r\n    margin-left:8px;\r\n    white-space:nowrap;\r\n  }\r\n  .mzst-print-container .mzst-card.mzst-odu-details h3{\r\n    margin: 0 0 6px 0 !important;\r\n  }\r\n  \/* Reduce horizontal padding of ODU Details card *\/\r\n  .mzst-print-container .mzst-card.mzst-odu-details{\r\n    padding: 8px 6px !important;   \r\n  }\r\n\r\n  \/* Stack helpers *\/\r\n  .mzst-print-container .mzst-stack-4  > * + *{ margin-top:4px; }\r\n  .mzst-print-container .mzst-stack-6  > * + *{ margin-top:6px; }\r\n  .mzst-print-container .mzst-stack-8  > * + *{ margin-top:8px; }\r\n  .mzst-print-container .mzst-stack-10 > * + *{ margin-top:10px; }\r\n\r\n  \/* BoM table *\/\r\n  .mzst-print-container .mzst-bom-table{\r\n    width:100%;\r\n    border-collapse:collapse;\r\n  }\r\n  .mzst-print-container .mzst-bom-table th,\r\n  .mzst-print-container .mzst-bom-table td{\r\n    border:1px solid #e5e7eb;\r\n    padding:8px;\r\n    text-align:left;\r\n  }\r\n  .mzst-print-container .mzst-bom-table thead th{\r\n    font-weight:600;\r\n  }\r\n\r\n\r\n  \/* Images *\/\r\n  .mzst-print-container .mzst-idu-img img{\r\n    max-width:220px;\r\n    height:auto;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:8px;\r\n  }\r\n  .mzst-print-container .mzst-odu-img img{\r\n    max-width:220px;\r\n    height:auto;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:8px;\r\n  }\r\n  .mzst-print-container .mzst-idu-img,\r\n  .mzst-print-container .mzst-idu-img *,\r\n  .mzst-print-container .mzst-odu-img,\r\n  .mzst-print-container .mzst-odu-img *{\r\n    break-inside: avoid;\r\n    page-break-inside: avoid;\r\n  }\r\n\r\n  \/* Input error highlight *\/\r\n  .mzst-print-container .mzst-input-error{\r\n    border-color:#fca5a5 !important;\r\n    background:#fef2f2 !important;\r\n    color:#7f1d1d !important;\r\n  }\r\n}\r\n\/* =========================================================\r\n   GLOBAL TEXT UNIFORMITY (CSS-only, safe with current JS)\r\n   - Force neutral UI text to #111827 (wins against inline greys)\r\n   - Preserve evaluation\/warning colors + red input-error states\r\n   - Preserve submittal links\u2019 theme orange\r\n   Applies to screen (#mzst-en\/#mzst-fr) + print iframe (.mzst-print-container)\r\n   ========================================================= *\/\r\n\r\n\/* 1) Force neutral text color & opacity everywhere in the tool *\/\r\n#mzst-en *,\r\n#mzst-fr *,\r\n.mzst-print-container * {\r\n  color: #111827 !important;\r\n  opacity: 1 !important;\r\n}\r\n\r\n\/* 2) Restore evaluation tones (scoped to tool roots + print clone; includes descendants) *\/\r\n#mzst-en .mzst-color-ok,    #mzst-en .mzst-color-ok *,\r\n#mzst-fr .mzst-color-ok,    #mzst-fr .mzst-color-ok *,\r\n.mzst-print-container .mzst-color-ok, .mzst-print-container .mzst-color-ok * {\r\n  color: #064e3b !important;\r\n}\r\n\r\n#mzst-en .mzst-color-warn,  #mzst-en .mzst-color-warn *,\r\n#mzst-fr .mzst-color-warn,  #mzst-fr .mzst-color-warn *,\r\n.mzst-print-container .mzst-color-warn, .mzst-print-container .mzst-color-warn * {\r\n  color: #78350f !important;\r\n}\r\n\r\n#mzst-en .mzst-color-error, #mzst-en .mzst-color-error *,\r\n#mzst-fr .mzst-color-error, #mzst-fr .mzst-color-error *,\r\n.mzst-print-container .mzst-color-error, .mzst-print-container .mzst-color-error * {\r\n  color: #7f1d1d !important;\r\n}\r\n\r\n\/* 3) Preserve \u201cred until resolved\u201d input state (and any descendants) *\/\r\n#mzst-en .mzst-input-error, #mzst-en .mzst-input-error *,\r\n#mzst-fr .mzst-input-error, #mzst-fr .mzst-input-error *,\r\n.mzst-print-container .mzst-input-error, .mzst-print-container .mzst-input-error * {\r\n  color: #7f1d1d !important;\r\n}\r\n\r\n\/* 4) Keep submittal links orange *\/\r\n#mzst-en a.mzst-submittal,\r\n#mzst-fr a.mzst-submittal {\r\n  color: #ec6608 !important;\r\n  text-decoration: underline;\r\n  text-underline-offset: 2px;\r\n  text-decoration-thickness: 1px;\r\n}<\/style>[\/et_pb_code][et_pb_code _builder_version=\u00a0\u00bb4.22.1&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; global_colors_info=\u00a0\u00bb{}\u00a0\u00bb sticky_enabled=\u00a0\u00bb0&Prime; custom_margin=\u00a0\u00bb|5px||5px|false|false\u00a0\u00bb overflow-x=\u00a0\u00bbhidden\u00a0\u00bb overflow-y=\u00a0\u00bbhidden\u00a0\u00bb]<div id=\"mzst-tool\"\r\n     class=\"mzst-scope\"\r\n     data-json=\"https:\/\/cdn2.moovair.com\/appjs\/JSN-M-MZTOOL-14-EN-FR-092225.json\">\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  var href = window.location.href.toLowerCase();\r\n\r\n  \/\/ Detect language from URL: fr-ca -> French, en-ca (or anything else) -> English\r\n  var isFrench = href.indexOf('fr-ca') !== -1;\r\n  var langCode = isFrench ? 'FR' : 'EN';\r\n  var containerId = isFrench ? 'mzst-fr' : 'mzst-en';\r\n\r\n  var container = document.getElementById('mzst-tool');\r\n  if (!container) return;\r\n\r\n  \/\/ Set the expected id and data-lang before loading the app script\r\n  container.id = containerId;\r\n  container.setAttribute('data-lang', langCode);\r\n\r\n  \/\/ Load the Moovair sizing tool app\r\n  var s = document.createElement('script');\r\n  s.src = 'https:\/\/cdn2.moovair.com\/appjs\/mzst-app.min.js';\r\n  s.async = true;\r\n  s.referrerPolicy = 'no-referrer';\r\n  document.head.appendChild(s);\r\n})();\r\n<\/script>[\/et_pb_code][\/et_pb_column][et_pb_column type=\u00a0\u00bb1_5&Prime; _builder_version=\u00a0\u00bb4.22.1&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p><style class=\"wpcode-css-snippet\">\/* Hide actions (Print button) on mobile *\/\r\n@media only screen and (max-width: 820px){\r\n.mzst-actions {\r\n    display:none !important;\r\n  }\r\n}\r\n\/* Print-specific visibility for brand logo (matches colleague approach) *\/\r\n@media print {\r\n  .mzst-logo { display: none !important; }\r\n  .mzst-print-container .mzst-logo { display: inline !important; }\r\n}\r\n\r\n\/* Submittal link styling *\/\r\n#mzst-en .mzst-submittal,\r\n#mzst-fr .mzst-submittal{\r\n  display:inline-block;\r\n  font-size:12px;\r\n  margin-top:4px;\r\n}\r\n#mzst-en .mzst-submittal.inline,\r\n#mzst-fr .mzst-submittal.inline{\r\n  margin-top:0;\r\n  margin-left:8px;\r\n  font-size:inherit;\r\n}\r\n@media print {\r\n  #mzst-en .mzst-submittal,\r\n  #mzst-fr .mzst-submittal{\r\n    display:none !important;\r\n  }\r\n}\r\n\r\n\/* Submittal in detail grid *\/\r\n#mzst-en .mzst-detail-grid .mzst-submittal.inline,\r\n#mzst-fr .mzst-detail-grid .mzst-submittal.inline{\r\n  font-size:16px;\r\n}\r\n\r\n\/* Hide submittal + items with submittal in print *\/\r\n@media print {\r\n  #mzst-en .mzst-detail-grid .mzst-submittal.inline,\r\n  #mzst-fr .mzst-detail-grid .mzst-submittal.inline,\r\n  #mzst-en .mzst-detail-item.mzst-detail-has-submittal,\r\n  #mzst-fr .mzst-detail-item.mzst-detail-has-submittal {\r\n    display: none !important;\r\n  }\r\n}\r\n\r\n@media print {\r\n  #mzst-en .mzst-instr-list,\r\n  #mzst-fr .mzst-instr-list,\r\n  #mzst-en .mzst-notes,\r\n  #mzst-fr .mzst-notes {\r\n    list-style: decimal;\r\n  }\r\n}\r\n\r\n\/* Card wrapper *\/\r\n#mzst-en .mzst-wrap .mzst-card,\r\n#mzst-fr .mzst-wrap .mzst-card{\r\n  box-sizing:border-box;\r\n}\r\n\r\n\/* Instruction block *\/\r\n#mzst-en .mzst-instr-title,\r\n#mzst-fr .mzst-instr-title{\r\n  font-weight:600;\r\n  margin-bottom:6px;\r\n}\r\n#mzst-en .mzst-instr-list,\r\n#mzst-fr .mzst-instr-list{\r\n  padding-left:18px;\r\n  margin:0;\r\n}\r\n\r\n\/* ODU Details (no gap) *\/\r\n#mzst-en .mzst-detail-grid,\r\n#mzst-fr .mzst-detail-grid{\r\n  display:flex;\r\n  flex-wrap:wrap;\r\n  max-width:1100px;\r\n  margin:0 auto;\r\n}\r\n#mzst-en .mzst-detail-item,\r\n#mzst-fr .mzst-detail-item{\r\n  width:calc(50% - 10px);\r\n  margin:0 10px 10px 0;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:space-between;\r\n  padding:10px 12px;\r\n  border:1px solid #e5e7eb;\r\n  border-radius:10px;\r\n  background:#fff;\r\n}\r\n#mzst-en .mzst-detail-label,\r\n#mzst-fr .mzst-detail-label{\r\n  color:#374151;\r\n}\r\n#mzst-en .mzst-detail-value,\r\n#mzst-fr .mzst-detail-value{\r\n  font-weight:600;\r\n  color:#111827;\r\n  white-space:nowrap;\r\n}\r\n@media only screen and (max-width: 820px){\r\n  #mzst-en .mzst-detail-item,\r\n  #mzst-fr .mzst-detail-item{\r\n    width:100%;\r\n    margin-right:0;\r\n  }\r\n}\r\n\r\n\/* Stack helpers (vertical spacing without gap) *\/\r\n#mzst-en .mzst-stack-4  > * + *,\r\n#mzst-fr .mzst-stack-4  > * + *{ margin-top:4px; }\r\n#mzst-en .mzst-stack-6  > * + *,\r\n#mzst-fr .mzst-stack-6  > * + *{ margin-top:6px; }\r\n#mzst-en .mzst-stack-8  > * + *,\r\n#mzst-fr .mzst-stack-8  > * + *{ margin-top:8px; }\r\n#mzst-en .mzst-stack-10 > * + *,\r\n#mzst-fr .mzst-stack-10 > * + *{ margin-top:10px; }\r\n\r\n\/* Horizontal gap for Line Set Length input *\/\r\n#mzst-en label.mzst-stack-4 > input.mzst-line,\r\n#mzst-fr label.mzst-stack-4 > input.mzst-line{\r\n  margin-left: 12px;\r\n}\r\n\/* Add horizontal space between ODU label text and dropdown *\/\r\n#mzst-en label.mzst-stack-6 > select.mzst-odu,\r\n#mzst-fr label.mzst-stack-6 > select.mzst-odu{\r\n  margin-left: 12px;\r\n}\r\n\r\n\r\n\/* Color styles (shared) *\/\r\n.mzst-box { border:1px solid #e5e7eb; border-radius:12px; padding:12px; }\r\n.mzst-color-ok   { border-color:#86efac; background:#f0fdf4; color:#064e3b; }\r\n.mzst-color-error{ border-color:#fca5a5; background:#fef2f2; color:#7f1d1d; }\r\n.mzst-color-warn { border-color:#fde68a; background:#fffbeb; color:#78350f; }\r\n\r\n\/* Input error highlight *\/\r\n#mzst-en .mzst-input-error,\r\n#mzst-fr .mzst-input-error{\r\n  border-color:#fca5a5 !important;\r\n  background:#fef2f2 !important;\r\n  color:#7f1d1d !important;\r\n}\r\n\r\n\/* BoM table *\/\r\n#mzst-en .mzst-bom-table,\r\n#mzst-fr .mzst-bom-table{\r\n  width:100%;\r\n  border-collapse:collapse;\r\n}\r\n#mzst-en .mzst-bom-table th,\r\n#mzst-en .mzst-bom-table td,\r\n#mzst-fr .mzst-bom-table th,\r\n#mzst-fr .mzst-bom-table td{\r\n  border:1px solid #e5e7eb;\r\n  padding:8px;\r\n  text-align:left;\r\n}\r\n#mzst-en .mzst-bom-table thead th,\r\n#mzst-fr .mzst-bom-table thead th{\r\n  font-weight:600;\r\n}\r\n\r\n\/* IDU image *\/\r\n#mzst-en .mzst-idu-img img,\r\n#mzst-fr .mzst-idu-img img{\r\n  max-width:220px;\r\n  height:auto;\r\n  border:1px solid #e5e7eb;\r\n  border-radius:8px;\r\n}\r\n\r\n\/* ODU image *\/\r\n#mzst-en .mzst-odu-img img,\r\n#mzst-fr .mzst-odu-img img{\r\n  max-width:260px;\r\n  height:auto;\r\n  border:1px solid #e5e7eb;\r\n  border-radius:8px;\r\n}\r\n\r\n\/* Print image handling *\/\r\n@media print {\r\n  #mzst-en .mzst-idu-img,\r\n  #mzst-en .mzst-idu-img *,\r\n  #mzst-fr .mzst-idu-img,\r\n  #mzst-fr .mzst-idu-img *,\r\n  #mzst-en .mzst-odu-img,\r\n  #mzst-en .mzst-odu-img *,\r\n  #mzst-fr .mzst-odu-img,\r\n  #mzst-fr .mzst-odu-img *{\r\n    break-inside: avoid;\r\n    page-break-inside: avoid;\r\n  }\r\n}\r\n\r\n\/* Print overrides for iframe clone (.mzst-print-container) *\/\r\n@media print {\r\n  \/* Hide entire Instructions block in print *\/\r\n  .mzst-print-container .mzst-instructions {\r\n    display: none !important;\r\n  }\r\n  \/* Instructions title + list spacing in print clone *\/\r\n  .mzst-print-container .mzst-instr-title{\r\n    font-weight:600;\r\n    margin-bottom:6px;\r\n  }\r\n\r\n  .mzst-print-container .mzst-instr-list,\r\n  .mzst-print-container .mzst-notes{\r\n    padding-left:18px;\r\n    margin:0;\r\n    list-style:decimal;\r\n  }\r\n\r\n  \/* Hide all submittal links + dedicated ODU submittal row in print *\/\r\n  .mzst-print-container .mzst-detail-grid .mzst-submittal.inline,\r\n  .mzst-print-container .mzst-detail-item.mzst-detail-has-submittal,\r\n  .mzst-print-container .mzst-submittal {\r\n    display: none !important;\r\n  }\r\n\r\n  \/* ODU detail grid styling *\/\r\n  .mzst-print-container .mzst-detail-grid{\r\n    display:flex;\r\n    flex-wrap:wrap;\r\n    margin:0;\r\n    padding:0;\r\n  }\r\n  .mzst-print-container .mzst-detail-item{\r\n    width:calc(50% - 6px);\r\n    margin:0 6px 6px 0;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    padding:6px 10px;\r\n    border-radius:9999px;\r\n    border:1px solid #e5e7eb;\r\n    background:#fff;\r\n  }\r\n  .mzst-print-container .mzst-detail-label{\r\n    color:#374151;\r\n  }\r\n  .mzst-print-container .mzst-detail-value{\r\n    font-weight:600;\r\n    color:#111827;\r\n    margin-left:8px;\r\n    white-space:nowrap;\r\n  }\r\n  .mzst-print-container .mzst-card.mzst-odu-details h3{\r\n    margin: 0 0 6px 0 !important;\r\n  }\r\n  \/* Reduce horizontal padding of ODU Details card *\/\r\n  .mzst-print-container .mzst-card.mzst-odu-details{\r\n    padding: 8px 6px !important;   \r\n  }\r\n\r\n  \/* Stack helpers *\/\r\n  .mzst-print-container .mzst-stack-4  > * + *{ margin-top:4px; }\r\n  .mzst-print-container .mzst-stack-6  > * + *{ margin-top:6px; }\r\n  .mzst-print-container .mzst-stack-8  > * + *{ margin-top:8px; }\r\n  .mzst-print-container .mzst-stack-10 > * + *{ margin-top:10px; }\r\n\r\n  \/* BoM table *\/\r\n  .mzst-print-container .mzst-bom-table{\r\n    width:100%;\r\n    border-collapse:collapse;\r\n  }\r\n  .mzst-print-container .mzst-bom-table th,\r\n  .mzst-print-container .mzst-bom-table td{\r\n    border:1px solid #e5e7eb;\r\n    padding:8px;\r\n    text-align:left;\r\n  }\r\n  .mzst-print-container .mzst-bom-table thead th{\r\n    font-weight:600;\r\n  }\r\n\r\n\r\n  \/* Images *\/\r\n  .mzst-print-container .mzst-idu-img img{\r\n    max-width:220px;\r\n    height:auto;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:8px;\r\n  }\r\n  .mzst-print-container .mzst-odu-img img{\r\n    max-width:220px;\r\n    height:auto;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:8px;\r\n  }\r\n  .mzst-print-container .mzst-idu-img,\r\n  .mzst-print-container .mzst-idu-img *,\r\n  .mzst-print-container .mzst-odu-img,\r\n  .mzst-print-container .mzst-odu-img *{\r\n    break-inside: avoid;\r\n    page-break-inside: avoid;\r\n  }\r\n\r\n  \/* Input error highlight *\/\r\n  .mzst-print-container .mzst-input-error{\r\n    border-color:#fca5a5 !important;\r\n    background:#fef2f2 !important;\r\n    color:#7f1d1d !important;\r\n  }\r\n}\r\n\/* =========================================================\r\n   GLOBAL TEXT UNIFORMITY (CSS-only, safe with current JS)\r\n   - Force neutral UI text to #111827 (wins against inline greys)\r\n   - Preserve evaluation\/warning colors + red input-error states\r\n   - Preserve submittal links\u2019 theme orange\r\n   Applies to screen (#mzst-en\/#mzst-fr) + print iframe (.mzst-print-container)\r\n   ========================================================= *\/\r\n\r\n\/* 1) Force neutral text color & opacity everywhere in the tool *\/\r\n#mzst-en *,\r\n#mzst-fr *,\r\n.mzst-print-container * {\r\n  color: #111827 !important;\r\n  opacity: 1 !important;\r\n}\r\n\r\n\/* 2) Restore evaluation tones (scoped to tool roots + print clone; includes descendants) *\/\r\n#mzst-en .mzst-color-ok,    #mzst-en .mzst-color-ok *,\r\n#mzst-fr .mzst-color-ok,    #mzst-fr .mzst-color-ok *,\r\n.mzst-print-container .mzst-color-ok, .mzst-print-container .mzst-color-ok * {\r\n  color: #064e3b !important;\r\n}\r\n\r\n#mzst-en .mzst-color-warn,  #mzst-en .mzst-color-warn *,\r\n#mzst-fr .mzst-color-warn,  #mzst-fr .mzst-color-warn *,\r\n.mzst-print-container .mzst-color-warn, .mzst-print-container .mzst-color-warn * {\r\n  color: #78350f !important;\r\n}\r\n\r\n#mzst-en .mzst-color-error, #mzst-en .mzst-color-error *,\r\n#mzst-fr .mzst-color-error, #mzst-fr .mzst-color-error *,\r\n.mzst-print-container .mzst-color-error, .mzst-print-container .mzst-color-error * {\r\n  color: #7f1d1d !important;\r\n}\r\n\r\n\/* 3) Preserve \u201cred until resolved\u201d input state (and any descendants) *\/\r\n#mzst-en .mzst-input-error, #mzst-en .mzst-input-error *,\r\n#mzst-fr .mzst-input-error, #mzst-fr .mzst-input-error *,\r\n.mzst-print-container .mzst-input-error, .mzst-print-container .mzst-input-error * {\r\n  color: #7f1d1d !important;\r\n}\r\n\r\n\/* 4) Keep submittal links orange *\/\r\n#mzst-en a.mzst-submittal,\r\n#mzst-fr a.mzst-submittal {\r\n  color: #ec6608 !important;\r\n  text-decoration: underline;\r\n  text-underline-offset: 2px;\r\n  text-decoration-thickness: 1px;\r\n}<\/style><div id=\"mzst-tool\"\r\n     class=\"mzst-scope\"\r\n     data-json=\"https:\/\/cdn2.moovair.com\/appjs\/JSN-M-MZTOOL-14-EN-FR-092225.json\">\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  var href = window.location.href.toLowerCase();\r\n\r\n  \/\/ Detect language from URL: fr-ca -> French, en-ca (or anything else) -> English\r\n  var isFrench = href.indexOf('fr-ca') !== -1;\r\n  var langCode = isFrench ? 'FR' : 'EN';\r\n  var containerId = isFrench ? 'mzst-fr' : 'mzst-en';\r\n\r\n  var container = document.getElementById('mzst-tool');\r\n  if (!container) return;\r\n\r\n  \/\/ Set the expected id and data-lang before loading the app script\r\n  container.id = containerId;\r\n  container.setAttribute('data-lang', langCode);\r\n\r\n  \/\/ Load the Moovair sizing tool app\r\n  var s = document.createElement('script');\r\n  s.src = 'https:\/\/cdn2.moovair.com\/appjs\/mzst-app.min.js';\r\n  s.async = true;\r\n  s.referrerPolicy = 'no-referrer';\r\n  document.head.appendChild(s);\r\n})();\r\n<\/script><\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":"","_wp_rev_ctl_limit":""},"dipi_cpt_category":[],"class_list":["post-16263734","page","type-page","status-publish","hentry"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/pages\/16263734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/comments?post=16263734"}],"version-history":[{"count":14,"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/pages\/16263734\/revisions"}],"predecessor-version":[{"id":16266500,"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/pages\/16263734\/revisions\/16266500"}],"wp:attachment":[{"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/media?parent=16263734"}],"wp:term":[{"taxonomy":"dipi_cpt_category","embeddable":true,"href":"https:\/\/moovair.com\/fr-ca\/wp-json\/wp\/v2\/dipi_cpt_category?post=16263734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}