{"id":16,"date":"2021-01-22T10:57:15","date_gmt":"2021-01-22T10:57:15","guid":{"rendered":"https:\/\/prstaging1.wpengine.com\/?page_id=16"},"modified":"2025-12-17T06:33:51","modified_gmt":"2025-12-17T06:33:51","slug":"roofing-101","status":"publish","type":"page","link":"https:\/\/premier-roofing.com\/roofing-101\/","title":{"rendered":"Roofing 101"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background fusion-parallax-none nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-color:var(--awb-color1);--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:50px;--awb-padding-bottom:50px;--awb-padding-top-medium:30px;--awb-padding-bottom-medium:30px;--awb-padding-top-small:0px;--awb-padding-bottom-small:30px;--awb-margin-top-medium:0px;--awb-margin-top-small:0px;--awb-min-height:320px;--awb-background-color:var(--awb-color4);--awb-background-image:url(&quot;https:\/\/premier-roofing.com\/wp-content\/uploads\/2025\/10\/Frame-4-1-1.png&quot;);--awb-background-size:cover;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1200px + 0px );margin-left: calc(-0px \/ 2 );margin-right: calc(-0px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-center fusion-animated\" style=\"--awb-padding-top-small:41px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:50px;--awb-margin-bottom-large:20px;--awb-spacing-left-large:0px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:50px;--awb-spacing-left-medium:0px;--awb-width-small:100%;--awb-order-small:1;--awb-spacing-right-small:0px;--awb-margin-bottom-small:60px;--awb-spacing-left-small:0px;\" data-animationType=\"fadeInLeft\" data-animationDuration=\"1.0\" data-animationOffset=\"top-into-view\" data-scroll-devices=\"small-visibility,medium-visibility,large-visibility\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1 fusion-text-no-margin\" style=\"--awb-font-size:var(--awb-typography2-font-size);--awb-line-height:var(--awb-typography2-line-height);--awb-letter-spacing:var(--awb-typography2-letter-spacing);--awb-text-transform:var(--awb-typography2-text-transform);--awb-text-color:#ffffff;--awb-margin-bottom:10px;--awb-text-font-family:var(--awb-typography2-font-family);--awb-text-font-weight:var(--awb-typography2-font-weight);--awb-text-font-style:var(--awb-typography2-font-style);\"><p style=\"text-align: center;\">Have a question?<\/p>\n<\/div><div class=\"fusion-title title fusion-title-1 fusion-sep-none fusion-title-center fusion-title-text fusion-title-size-one\" style=\"--awb-text-color:#ffffff;--awb-margin-bottom:30px;--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:30px;--awb-margin-left-small:0px;--awb-font-size:40px;\"><h1 class=\"fusion-title-heading title-heading-center\" style=\"margin:0;letter-spacing:-1px;text-transform:capitalize;font-size:1em;\">Roofing 101<\/h1><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0px;--awb-margin-bottom-large:20px;--awb-spacing-left-large:0px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0px;--awb-spacing-left-medium:0px;--awb-width-small:100%;--awb-order-small:2;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-search-element fusion-search-element-1 fusion-search-form-clean\" style=\"--awb-text-color:var(--awb-color8);--awb-border-color:var(--awb-color5);--awb-focus-border-color:var(--awb-color5);--awb-bg-color:var(--awb-color6);\">\t\t<form role=\"search\" class=\"searchform fusion-search-form  fusion-search-form-clean\" method=\"get\" action=\"https:\/\/premier-roofing.com\/\">\n\t\t\t<div class=\"fusion-search-form-content\">\n\n\t\t\t\t\n\t\t\t\t<div class=\"fusion-search-field search-field\">\n\t\t\t\t\t<label><span class=\"screen-reader-text\">Search for:<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"search\" value=\"\" name=\"s\" class=\"s\" placeholder=\"Type your question here\" required aria-required=\"true\" aria-label=\"Type your question here\"\/>\n\t\t\t\t\t\t\t\t\t\t\t<\/label>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"fusion-search-button search-button\">\n\t\t\t\t\t<input type=\"submit\" class=\"fusion-search-submit searchsubmit\" aria-label=\"Search\" value=\"&#xf002;\" \/>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t<input type=\"hidden\" name=\"post_type[]\" value=\"post\" \/><input type=\"hidden\" name=\"search_limit_to_post_titles\" value=\"0\" \/><input type=\"hidden\" name=\"add_woo_product_skus\" value=\"0\" \/><input type=\"hidden\" name=\"fs\" value=\"1\" \/>\n\t\t\t<\/div>\n\n\n\t\t\t\n\t\t<\/form>\n\t\t<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--link_hover_color: #303fdd;--link_color: #080f35;--awb-border-sizes-top:0px;--awb-border-sizes-bottom:0px;--awb-border-sizes-left:0px;--awb-border-sizes-right:0px;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:60px;--awb-padding-bottom:60px;--awb-padding-right-medium:80px;--awb-padding-left-medium:80px;--awb-background-color:#f2f6f9;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_2_3 2_3 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:66.6666666667%;--awb-margin-top-large:0px;--awb-spacing-right-large:15px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:15px;--awb-width-medium:66.6666666667%;--awb-order-medium:0;--awb-spacing-right-medium:15px;--awb-spacing-left-medium:15px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-scroll-devices=\"small-visibility,medium-visibility,large-visibility\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-blog-shortcode fusion-blog-shortcode-1 fusion-blog-archive fusion-blog-layout-medium-alternate fusion-blog-pagination ft-blog-posts\" style=\"--awb-title-font-size:20px;\"><div class=\"fusion-posts-container fusion-posts-container-pagination\" data-pages=\"23\"><article id=\"blog-1-post-4803\" class=\"fusion-post-medium-alternate post-4803 post type-post status-publish format-standard has-post-thumbnail hentry category-roofing-101\">\n<div class=\"fusion-date-and-formats\"><div class=\"fusion-date-box updated\"><span class=\"fusion-date\">24<\/span><span class=\"fusion-month-year\">04, 2026<\/span><\/div><div class=\"fusion-format-box\"><i class=\"awb-icon-pen\" aria-hidden=\"true\"><\/i><\/div><\/div>\t<style type=\"text\/css\">\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t<\/style>\n\n\n\t\t\t<div class=\"fusion-flexslider flexslider fusion-flexslider-loading fusion-post-slideshow\" style=\"\">\n\t\t<ul class=\"slides\">\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li><div  class=\"fusion-image-wrapper fusion-image-size-fixed\" aria-haspopup=\"true\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/premier-roofing.com\/blog\/the-best-roofing-companies-in-wichita\/\" aria-label=\"Top Roofing Companies in Wichita: 2026 Guide\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"320\" height=\"202\" src=\"https:\/\/premier-roofing.com\/wp-content\/uploads\/2026\/04\/3fcaa16a4e7ced5757a7300fc22399af7c13ef46-320x202.png\" class=\"attachment-blog-medium size-blog-medium wp-post-image\" alt=\"\" srcset=\"https:\/\/premier-roofing.com\/wp-content\/uploads\/2026\/04\/3fcaa16a4e7ced5757a7300fc22399af7c13ef46-320x202.png 320w, https:\/\/premier-roofing.com\/wp-content\/uploads\/2026\/04\/3fcaa16a4e7ced5757a7300fc22399af7c13ef46-700x441.png 700w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/>\t\t\t<\/a>\n\t\t\t\t\t\t\t<\/div>\n<\/li>\n\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t<\/div>\n\t<div class=\"fusion-post-content post-content\"><h2 class=\"blog-shortcode-post-title\"><a href=\"https:\/\/premier-roofing.com\/blog\/the-best-roofing-companies-in-wichita\/\">Top Roofing Companies in Wichita: 2026 Guide<\/a><\/h2><p class=\"fusion-single-line-meta\"><span>April 24, 2026<\/span><span class=\"fusion-inline-sep\">|<\/span><\/p><div class=\"fusion-post-content-container\"><p>Choosing the right roofing company in Minneapolis can make all the difference between a repair that fails by the next storm and one that holds strong<\/p><\/div><\/div><div class=\"fusion-clearfix\"><\/div><\/article>\n<article id=\"blog-1-post-4801\" class=\"fusion-post-medium-alternate post-4801 post type-post status-publish format-standard has-post-thumbnail hentry category-roofing-101\">\n<div class=\"fusion-date-and-formats\"><div class=\"fusion-date-box updated\"><span class=\"fusion-date\">24<\/span><span class=\"fusion-month-year\">04, 2026<\/span><\/div><div class=\"fusion-format-box\"><i class=\"awb-icon-pen\" aria-hidden=\"true\"><\/i><\/div><\/div>\t<style type=\"text\/css\">\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t<\/style>\n\n\n\t\t\t<div class=\"fusion-flexslider flexslider fusion-flexslider-loading fusion-post-slideshow\" style=\"\">\n\t\t<ul class=\"slides\">\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li><div  class=\"fusion-image-wrapper fusion-image-size-fixed\" aria-haspopup=\"true\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/premier-roofing.com\/blog\/the-best-roofing-companies-in-kansas-city\/\" aria-label=\"9 Best Roofing Companies in Kansas City: 2026 Guide\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"320\" height=\"202\" src=\"https:\/\/premier-roofing.com\/wp-content\/uploads\/2026\/04\/875be3206a70fe7068738bf9af244db8060781c3-320x202.png\" class=\"attachment-blog-medium size-blog-medium wp-post-image\" alt=\"\" srcset=\"https:\/\/premier-roofing.com\/wp-content\/uploads\/2026\/04\/875be3206a70fe7068738bf9af244db8060781c3-320x202.png 320w, https:\/\/premier-roofing.com\/wp-content\/uploads\/2026\/04\/875be3206a70fe7068738bf9af244db8060781c3-700x441.png 700w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/>\t\t\t<\/a>\n\t\t\t\t\t\t\t<\/div>\n<\/li>\n\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t<\/div>\n\t<div class=\"fusion-post-content post-content\"><h2 class=\"blog-shortcode-post-title\"><a href=\"https:\/\/premier-roofing.com\/blog\/the-best-roofing-companies-in-kansas-city\/\">9 Best Roofing Companies in Kansas City: 2026 Guide<\/a><\/h2><p class=\"fusion-single-line-meta\"><span>April 24, 2026<\/span><span class=\"fusion-inline-sep\">|<\/span><\/p><div class=\"fusion-post-content-container\"><p>Choosing the right roofing company in Minneapolis can make all the difference between a repair that fails by the next storm and one that holds strong<\/p><\/div><\/div><div class=\"fusion-clearfix\"><\/div><\/article>\n<article id=\"blog-1-post-3468\" class=\"fusion-post-medium-alternate post-3468 post type-post status-publish format-standard has-post-thumbnail hentry category-roofing-101\">\n<div class=\"fusion-date-and-formats\"><div class=\"fusion-date-box updated\"><span class=\"fusion-date\">22<\/span><span class=\"fusion-month-year\">04, 2026<\/span><\/div><div class=\"fusion-format-box\"><i class=\"awb-icon-pen\" aria-hidden=\"true\"><\/i><\/div><\/div>\t<style type=\"text\/css\">\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t<\/style>\n\n\n\t\t\t<div class=\"fusion-flexslider flexslider fusion-flexslider-loading fusion-post-slideshow\" style=\"\">\n\t\t<ul class=\"slides\">\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li><div  class=\"fusion-image-wrapper fusion-image-size-fixed\" aria-haspopup=\"true\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/premier-roofing.com\/blog\/how-to-choose-a-roofer-st-louis\/\" aria-label=\"How to Choose a Roofer in St. Louis\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"320\" height=\"202\" src=\"https:\/\/premier-roofing.com\/wp-content\/uploads\/2025\/07\/Frame-19_converted-320x202.avif\" class=\"attachment-blog-medium size-blog-medium wp-post-image\" alt=\"\" srcset=\"https:\/\/premier-roofing.com\/wp-content\/uploads\/2025\/07\/Frame-19_converted-320x202.avif 320w, https:\/\/premier-roofing.com\/wp-content\/uploads\/2025\/07\/Frame-19_converted-700x441.avif 700w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/>\t\t\t<\/a>\n\t\t\t\t\t\t\t<\/div>\n<\/li>\n\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t<\/div>\n\t<div class=\"fusion-post-content post-content\"><h2 class=\"blog-shortcode-post-title\"><a href=\"https:\/\/premier-roofing.com\/blog\/how-to-choose-a-roofer-st-louis\/\">How to Choose a Roofer in St. Louis<\/a><\/h2><p class=\"fusion-single-line-meta\"><span>April 22, 2026<\/span><span class=\"fusion-inline-sep\">|<\/span><\/p><div class=\"fusion-post-content-container\"><p>Finding the right roofer isn\u2019t just a box to check off. It\u2019s one of the most important decisions you\u2019ll make as a homeowner in St. Louis. Between Missouri\u2019s unpredictable storms, intense summer heat, and strict local codes, your roofing system needs more than just an ordinary contractor. Your roof needs a proven expert. One poor roofing installation or missed code compliance can result in expensive repairs, water damage, or insurance claims down the road.<\/p><\/div><\/div><div class=\"fusion-clearfix\"><\/div><\/article>\n<\/div><div class=\"pagination clearfix\"><span class=\"current\">1<\/span><a href=\"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/pages\/16\/page\/2\/\" class=\"inactive\">2<\/a><a class=\"pagination-next\" rel=\"next\" href=\"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/pages\/16\/page\/2\/\"><span class=\"page-text\">Next<\/span><span class=\"page-next\"><\/span><\/a><\/div><div class=\"fusion-clearfix\"><\/div><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_3 1_3 fusion-flex-column ft-col-sidebar-map\" style=\"--awb-bg-size:cover;--awb-width-large:33.3333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:15px;--awb-margin-bottom-large:20px;--awb-spacing-left-large:15px;--awb-width-medium:33.3333333333%;--awb-order-medium:0;--awb-spacing-right-medium:15px;--awb-spacing-left-medium:15px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"ft-post-sidebar-form\">\n<div class=\"ft-post-sidebar-form--title\">\nGet a FREE quote from Premier Roofing\n<\/div>\n<div class=\"ft-post-sidebar-form--form\">\n<div class=\"frm_forms  with_frm_style frm_style_premier\" id=\"frm_form_12_container\" data-token=\"d799259da996c4dd9425d7a5af9a7f5b\">\n<form enctype=\"multipart\/form-data\" method=\"post\" class=\"frm-show-form  frm_pro_form \" id=\"form_blog-post-side-bar\" data-token=\"d799259da996c4dd9425d7a5af9a7f5b\">\n<div class=\"frm_form_fields \">\n<fieldset>\n<legend class=\"frm_screen_reader\">Blog\/Post side bar<\/legend>\n\n<div class=\"frm_fields_container\">\n<input type=\"hidden\" name=\"frm_action\" value=\"create\" \/>\n<input type=\"hidden\" name=\"form_id\" value=\"12\" \/>\n<input type=\"hidden\" name=\"frm_hide_fields_12\" id=\"frm_hide_fields_12\" value=\"\" \/>\n<input type=\"hidden\" name=\"form_key\" value=\"blog-post-side-bar\" \/>\n<input type=\"hidden\" name=\"item_meta[0]\" value=\"\" \/>\n<input type=\"hidden\" id=\"frm_submit_entry_12\" name=\"frm_submit_entry_12\" value=\"07f7d10bd0\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/wp-json\/wp\/v2\/pages\/16\" \/><div id=\"frm_field_207_container\" class=\"frm_form_field form-field  frm_none_container\">\n\t<label for=\"field_kmgba\" id=\"field_kmgba_label\" class=\"frm_primary_label\">\n\t\t<span class=\"frm_required\" aria-hidden=\"true\"><\/span>\n\t<\/label>\n\t<input  type=\"text\" id=\"field_kmgba\" name=\"item_meta[207]\" value=\"\"  placeholder=\"I need an estimate for...\" data-invmsg=\"This field is invalid\" aria-invalid=\"false\"   \/>\n\t\n\t\n<\/div>\n<div id=\"frm_field_208_container\" class=\"frm_form_field form-field  frm_none_container\">\n\t<label for=\"field_yzh6n\" id=\"field_yzh6n_label\" class=\"frm_primary_label\">\n\t\t<span class=\"frm_required\" aria-hidden=\"true\"><\/span>\n\t<\/label>\n\t<input  type=\"text\" id=\"field_yzh6n\" name=\"item_meta[208]\" value=\"\"  placeholder=\"When do you need it\" data-invmsg=\"This field is invalid\" aria-invalid=\"false\"   \/>\n\t\n\t\n<\/div>\n<div id=\"frm_field_209_container\" class=\"frm_form_field form-field  frm_none_container\">\n\t<label for=\"field_lt2hp\" id=\"field_lt2hp_label\" class=\"frm_primary_label\">\n\t\t<span class=\"frm_required\" aria-hidden=\"true\"><\/span>\n\t<\/label>\n\t<input  type=\"text\" id=\"field_lt2hp\" name=\"item_meta[209]\" value=\"\"  placeholder=\"Enter Zip Code\" data-invmsg=\"This field is invalid\" aria-invalid=\"false\"   \/>\n\t\n\t\n<\/div>\n<div id=\"frm_field_206_container\" class=\"frm_form_field form-field  ft-post-sidebar-form--button\">\n\t<div class=\"frm_submit frm_flex\">\n<button class=\"frm_button_submit frm_final_submit\" type=\"submit\"  >Get Started<\/button>\n\n\n\n<\/div>\n<\/div>\n\t<input type=\"hidden\" name=\"item_key\" value=\"\" \/>\n\t\t\t<div id=\"frm_field_220_container\">\n\t\t\t<label for=\"field_vt77h\" >\n\t\t\t\tIf you are human, leave this field blank.\t\t\t<\/label>\n\t\t\t<input  id=\"field_vt77h\" type=\"text\" class=\"frm_form_field form-field frm_verify\" name=\"item_meta[220]\" value=\"\"  \/>\n\t\t<\/div>\n\t\t<input name=\"frm_state\" type=\"hidden\" value=\"irh1rU+S\/KtTcCKfb+pPhqnjjL9jwEtA+U7dWRwv3cYXDiRBd86OIKT4dh9RDxcy\" \/><\/div>\n<\/fieldset>\n<\/div>\n\n<\/form>\n<\/div>\n\n<\/div>\n\n<\/div>\n  <style>\n    \/* \u2705 \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434, \u043d\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u043b\u043e\u043c\u0430\u044e\u0449\u0435\u0435 margin-top:-500px.\n       \u0422\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u0440\u0442\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f, \u0430 \u0441\u043b\u0430\u0439\u0434\u0435\u0440 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445. *\/\n\n    #mapcode-1 .mapSection{\n      height:500px;\n      width:100%;\n      position:relative;\n      overflow:hidden; \/* \u0432\u0430\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0430\u0439\u0434\u0435\u0440 \u043d\u0435 \u043b\u043e\u043c\u0430\u043b \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438 *\/\n    }\n\n    #mapcode-1 .mapCanvas{\n      height:500px;\n      width:100%;\n      position:absolute;\n      inset:0;\n      z-index:0;\n    }\n\n    \/* Slider *\/\n    #mapcode-1 .slider{\n      height:500px;\n      width:0;\n      position:absolute;\n      top:0;\n      left:0;\n      z-index:2;\n      background-color:#d8d8d8;\n      overflow-x:hidden;\n      overflow-y:unset;\n      transition:0.5s;\n      color:white;\n    }\n\n    #mapcode-1 .slider.open{ width:350px; }\n\n    #mapcode-1 .closebtn{\n      float:right;\n      margin:0 20px 0 0;\n      font-size:36px;\n      color:#000;\n      text-decoration:none;\n      cursor:pointer;\n    }\n\n    #mapcode-1 .slider-content{ padding:20px; }\n\n    #mapcode-1 .directionsForm{ margin-bottom:10px; }\n    #mapcode-1 .directionsForm h2{ font-size:25px; margin-bottom:0; margin-top:10px; color:#000; }\n\n    #mapcode-1 ::placeholder{ color:#9b9b9b !important; opacity:1; }\n    #mapcode-1 ::-ms-input-placeholder{ color:#9b9b9b !important; }\n\n    #mapcode-1 .mapSection .slider input[type=\"text\"]{\n      margin:10px 0;\n      padding:10px;\n      border-radius:3px;\n      width:100%;\n      height:32px;\n      color:#000;\n    }\n\n    #mapcode-1 .mapSection .slider button{\n      padding:10px;\n      margin-top:5px;\n      width:100%;\n      cursor:pointer;\n    }\n\n    #mapcode-1 .bgclass{\n      background-color:#f1f1f1;\n      margin-top:15px;\n      padding:10px;\n      font-weight:bold;\n      color:#000;\n      border-radius:8px 8px 0 0;\n    }\n\n    #mapcode-1 .suggestedRoutes{ font-family:arial; font-size:13px; }\n    #mapcode-1 .route-option{\n      cursor:pointer;\n      padding:3px 10px;\n      color:#000;\n      background-color:#f1f1f1;\n      transition:background-color 0.3s;\n    }\n    #mapcode-1 .route-option:hover{ background-color:#e0e0e0; }\n\n    #mapcode-1 .directionsPanel{ margin-top:15px; font-size:13px; font-family:arial; }\n    #mapcode-1 .direction-step{ display:flex; align-items:center; margin:5px 0; padding:5px; cursor:pointer; }\n    #mapcode-1 .direction-step:hover{ background-color:#f0f0f0; }\n    #mapcode-1 .direction-icon{ width:20px; height:20px; margin-right:10px; }\n    #mapcode-1 .direction-text{ flex-grow:1; color:#000; }\n    #mapcode-1 .distance{ color:gray; margin-left:10px; }\n\n  <\/style>\n\n  <div id=\"mapcode-1\" class=\"mapcode-wrap\">\n    <div class=\"mapSection\">\n\n      <div class=\"slider\">\n        <a class=\"closebtn\" aria-label=\"Close directions\">&times;<\/a>\n\n        <div class=\"slider-content\">\n          <div class=\"directionsForm\">\n            <h2>Get your route and directions<\/h2>\n            <input class=\"start\" type=\"text\" placeholder=\"Enter starting location\" \/>\n            <button class=\"useLocation\" type=\"button\">Use my location<\/button>\n            <input class=\"end\" type=\"text\" placeholder=\"Enter destination\" \/>\n            <button class=\"calc\" type=\"button\">Get Directions<\/button>\n          <\/div>\n\n          <div class=\"suggestedRoutes\"><\/div>\n          <div class=\"directionsPanel\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"mapCanvas\"><\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n  (function(){\n    const root = document.getElementById(\"mapcode-1\");\n    if (!root) return;\n\n    const mapEl = root.querySelector('.mapCanvas');\n    const sliderEl = root.querySelector('.slider');\n    const closeBtn = root.querySelector('.closebtn');\n\n    const startInput = root.querySelector('.start');\n    const endInput   = root.querySelector('.end');\n    const btnCalc    = root.querySelector('.calc');\n    const btnLoc     = root.querySelector('.useLocation');\n\n    const suggestedRoutesDiv = root.querySelector('.suggestedRoutes');\n    const directionsPanel    = root.querySelector('.directionsPanel');\n\n    \/\/ Disable until API loaded\n    btnCalc.disabled = true;\n    btnLoc.disabled = true;\n\n    let map, directionsService, directionsRenderer, stepMarker, startMarker, endMarker, infoWindow;\n\n    const iconImg = \"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/mappin.png\";\n    const maneuverIcons = {\n      \"turn-left\":  \"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/left-e1726778020634.png\",\n      \"turn-right\": \"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/right-e1726777990418.png\",\n      \"default\":    \"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/straight.png\"    };\n\n    const predefinedLocations = [{\"lat\":35.1598705,\"lng\":-80.7421151,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/CHA-Building-Photo-1200x675.jpg\",\"title\":\"7504 Independence Blvd, #111. Charlotte, NC 28227\",\"name\":\"Premier Roofing Charlotte\",\"phone\":\"704-601-7663\",\"phonelink\":\"tel:+17046017663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/charlotte-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Charlotte roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=7504 Independence Blvd, #111. Charlotte, NC 28227, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":38.8385179,\"lng\":-104.7631209,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/COS-Building-Photo2-1200x675.jpg\",\"title\":\"406 Auburn Drive Colorado Springs, CO 80909\",\"name\":\"Premier Roofing Colorado\",\"phone\":\"719-637-7663\",\"phonelink\":\"tel:+17196377663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/colorado-springs-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Colorado roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=406 Auburn Drive Colorado Springs, CO 80909, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":32.8518336,\"lng\":-97.1652811,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Dallas-City.png\",\"title\":\"315 Harwood Road Bedford, TX 76021\",\"name\":\"Premier Roofing Dallas\",\"phone\":\"214-390-7663\",\"phonelink\":\"tel:+12143907663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/dallas-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Dallas roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=315 Harwood Road Bedford, TX 76021, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":39.7291469,\"lng\":-105.0190749,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/DEN-Building-Photo-3-1200x675.jpg\",\"title\":\"2570 W. 8th Avenue Denver, CO 80204\",\"name\":\"Premier Roofing Denver\",\"phone\":\"303-233-7663\",\"phonelink\":\"tel:+13032337663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/denver-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Denver roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=2570 W. 8th Avenue Denver, CO 80204, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":41.6667795,\"lng\":-93.6828564,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/DMO-Building-Photo-1200x675.jpg\",\"title\":\"5501 NW Beaver Drive Johnston, IA 50131\",\"name\":\"Premier Roofing Des Moines\",\"phone\":\"515-276-7663\",\"phonelink\":\"tel:+15152767663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/des-moines-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Des Moines roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=5501 NW Beaver Drive Johnston, IA 50131, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":40.5804649,\"lng\":-105.0180739,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/FCO-Building-Photo-1200x675.jpg\",\"title\":\"3201 E. Mulberry St. Fort Collins, CO 80524\",\"name\":\"Premier Roofing Fort Collins\",\"phone\":\"970-484-7663\",\"phonelink\":\"tel:+19704847663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/fort-collins-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Fort Collins roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=3201 E. Mulberry St. Fort Collins, CO 80524, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":38.9426729,\"lng\":-94.5832157,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/KCI-Building-Photo-1200x675.jpg\",\"title\":\"10200 Holmes Rd Kansas City, MO 64131\",\"name\":\"Premier Roofing Kansas City\",\"phone\":\"816-254-7663\",\"phonelink\":\"tel:+18162547663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/kansas-city-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Kansas City roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=10200 Holmes Rd Kansas City, MO 64131, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":44.8588788,\"lng\":-93.3822571,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/MIN-Building-Photo-2-1200x675.jpg\",\"title\":\"5929 Baker Rd #450 Minnetonka, MN 55345\",\"name\":\"Premier Roofing Minneapolis\",\"phone\":\"612-445-7663\",\"phonelink\":\"tel:+16124457663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/minneapolis-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Minneapolis roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=5929 Baker Rd #450 Minnetonka, MN 55345, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":41.272304,\"lng\":-95.932632,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/OMA-Building-Photo-1200x675.jpg\",\"title\":\"1111 N. 13th Street #101 Omaha, NE 68102, OK 73134\",\"name\":\"Premier Roofing Omaha\",\"phone\":\"402-778-7663\",\"phonelink\":\"tel:+14027787663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/omaha-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Omaha roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=1111 N. 13th Street #101 Omaha, NE 68102, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":35.816289,\"lng\":-78.8140506,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/RAL-Building-Photo-1200x675.jpg\",\"title\":\"15000 Weston Pkwy #117 Cary, NC 27513\",\"name\":\"Premier Roofing Raleigh\",\"phone\":\"919-752-7663\",\"phonelink\":\"tel:+19197527663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/raleigh-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Raleigh roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=15000 Weston Pkwy #117 Cary, NC 27513, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":38.56118,\"lng\":-90.2988779,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/STL-Building-Photo-1200x675.jpg\",\"title\":\"11406 Gravois Rd. St. Louis, MO 63126\",\"name\":\"Premier Roofing St. Louis\",\"phone\":\"314-833-7663\",\"phonelink\":\"tel:+13148337663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/st-louis-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated St. Louis roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=11406 Gravois Rd, St. Louis, MO 63126, United States\\\\\\\">Get Directions<\\\/a>\"},{\"lat\":37.744838,\"lng\":-97.244755,\"icon\":null,\"imageUrl\":\"https:\\\/\\\/premier-roofing.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/WIC-Building-Photo-1200x675.jpg\",\"title\":\"8847 W Monroe Cir #300 Wichita, KS 67209\",\"name\":\"Premier Roofing Wichita\",\"phone\":\"316-710-7663\",\"phonelink\":\"tel:+13167107663\",\"url\":\"https:\\\/\\\/premier-roofing.com\\\/locations\\\/wichita-roofing\\\/\",\"description\":\"Premier Roofing is your top-rated Wichita roofer for the restoration roofing needs of homeowners, business owners, and multi-family communities.<br\\\/><br\\\/><a target=\\\\\\\"_blank\\\\\\\" href=\\\\\\\"https:\\\/\\\/www.google.com\\\/maps\\\/dir\\\/?api=1&destination=8847 W Monroe Cir #300 Wichita, KS 67209, United States\\\\\\\">Get Directions<\\\/a>\"}];\n\n    function openSlider(){\n      sliderEl.classList.add('open');\n    }\n    function closeSlider(){\n      sliderEl.classList.remove('open');\n    }\n\n    function getManeuverIcon(maneuver){\n      return maneuverIcons[maneuver] || maneuverIcons.default;\n    }\n\n    function addPredefinedLocations(){\n      predefinedLocations.forEach(location => {\n        const marker = new google.maps.Marker({\n          position: { lat: Number(location.lat), lng: Number(location.lng) },\n          map,\n          title: location.title || '',\n          icon: {\n            url: iconImg,\n            scaledSize: new google.maps.Size(40, 40)\n          }\n        });\n\n        const infoContent = `\n          <div style=\"max-width: 650px;\">\n            <center><img decoding=\"async\" src=\"${location.imageUrl}\" alt=\"${location.title}\" style=\"width: 50%; height: auto; border-radius: 5px;\"><\/center>\n            <h4 style=\"color: #0082CA;font-size: 16px;font-family: arial;text-transform: uppercase;font-weight: bold;\">\n              <a href=\"${location.url}\">${location.name}<\/a>\n            <\/h4>\n            <h3>${location.title}<\/h3>\n            <label><a href=\"${location.phonelink}\" target=\"_blank\" rel=\"noopener\">${location.phone}<\/a><\/label>\n            <p style=\"margin: 10px 0 0;\">${location.description}<\/p>\n          <\/div>\n        `;\n\n        marker.addListener('click', function() {\n          infoWindow.setContent(infoContent);\n          infoWindow.open(map, marker);\n        });\n      });\n    }\n\n    function displaySuggestedRoutes(routes, fullResult){\n      suggestedRoutesDiv.innerHTML = '<div class=\"bgclass\"><label>Suggested routes:<\/label><\/div>';\n\n      routes.forEach((route, index) => {\n        const distance = route.legs?.[0]?.distance?.text || '';\n        const duration = route.legs?.[0]?.duration?.text || '';\n        const summary  = route.summary || '';\n\n        const routeOption = document.createElement('div');\n        routeOption.className = 'route-option';\n        routeOption.textContent = `Route ${index + 1}: ${summary} - ${distance}, about ${duration}`;\n\n        routeOption.addEventListener('click', () => {\n          directionsRenderer.setDirections(fullResult);\n          directionsRenderer.setRouteIndex(index);\n\n          const leg = fullResult.routes[index]?.legs?.[0];\n          if (leg) displayDirections(leg);\n\n          const endLocation = leg?.end_location;\n          if (endLocation) {\n            if (endMarker) endMarker.setMap(null);\n            endMarker = new google.maps.Marker({\n              position: endLocation,\n              map,\n              icon: { url: iconImg, scaledSize: new google.maps.Size(40, 40) },\n              title: \"Destination\"\n            });\n          }\n        });\n\n        suggestedRoutesDiv.appendChild(routeOption);\n      });\n    }\n\n    function displayDirections(leg){\n      directionsPanel.innerHTML = '';\n\n      if (!stepMarker) {\n        stepMarker = new google.maps.Marker({\n          map,\n          icon: {\n            url: 'https:\/\/maps.google.com\/mapfiles\/kml\/paddle\/blu-circle.png',\n            scaledSize: new google.maps.Size(30, 30)\n          }\n        });\n      }\n\n      leg.steps.forEach((step) => {\n        const directionStep = document.createElement('div');\n        directionStep.className = 'direction-step';\n\n        const icon = document.createElement('img');\n        icon.className = 'direction-icon';\n        icon.src = getManeuverIcon(step.maneuver);\n        directionStep.appendChild(icon);\n\n        const directionText = document.createElement('div');\n        directionText.className = 'direction-text';\n        directionText.innerHTML = step.instructions;\n        directionStep.appendChild(directionText);\n\n        const distance = document.createElement('div');\n        distance.className = 'distance';\n        distance.textContent = step.distance?.text || '';\n        directionStep.appendChild(distance);\n\n        directionStep.addEventListener('click', () => {\n          map.panTo(step.start_location);\n          map.setZoom(8);\n          stepMarker.setPosition(step.start_location);\n          stepMarker.setMap(map);\n        });\n\n        directionsPanel.appendChild(directionStep);\n      });\n    }\n\n    function calculateRoute(){\n      const start = (startInput.value || '').trim();\n      const end   = (endInput.value || '').trim();\n\n      if (!start || !end) { alert(\"Please fill both fields.\"); return; }\n\n      directionsService.route({\n        origin: start,\n        destination: end,\n        travelMode: google.maps.TravelMode.DRIVING,\n        provideRouteAlternatives: true\n      }, function(result, status){\n        if (status === google.maps.DirectionsStatus.OK) {\n          directionsRenderer.setDirections(result);\n\n          const routes = result.routes || [];\n          if (routes.length) {\n            displaySuggestedRoutes(routes, result);\n\n            const leg0 = routes[0]?.legs?.[0];\n            if (leg0) displayDirections(leg0);\n\n            \/\/ Markers\n            if (startMarker) startMarker.setMap(null);\n            if (endMarker) endMarker.setMap(null);\n\n            if (leg0?.start_location) {\n              startMarker = new google.maps.Marker({\n                position: leg0.start_location,\n                map,\n                icon: { url: 'https:\/\/maps.google.com\/mapfiles\/kml\/paddle\/grn-circle.png', scaledSize: new google.maps.Size(40, 40) },\n                title: \"Start Location\"\n              });\n            }\n\n            if (leg0?.end_location) {\n              endMarker = new google.maps.Marker({\n                position: leg0.end_location,\n                map,\n                icon: { url: iconImg, scaledSize: new google.maps.Size(40, 40) },\n                title: \"Destination\"\n              });\n            }\n          }\n\n          openSlider();\n        } else {\n          alert(\"Directions request failed due to \" + status);\n        }\n      });\n    }\n\n    function initMapInstance(){\n      map = new google.maps.Map(mapEl, {\n        center: { lat: 39.8283, lng: -98.5795 },\n        zoom: 5\n      });\n\n      directionsService = new google.maps.DirectionsService();\n      directionsRenderer = new google.maps.DirectionsRenderer({\n        map,\n        suppressMarkers: true,\n        polylineOptions: { strokeColor: 'blue', strokeWeight: 5 }\n      });\n\n      infoWindow = new google.maps.InfoWindow();\n\n      addPredefinedLocations();\n\n      btnCalc.disabled = false;\n      btnLoc.disabled = false;\n    }\n\n    function loadGoogleMapsOnce(){\n      if (window.__googleMapsLoading) return window.__googleMapsLoading;\n\n      window.__googleMapsLoading = new Promise((resolve, reject) => {\n        if (window.google && window.google.maps) { resolve(); return; }\n        const s = document.createElement('script');\n        s.src = \"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyDd5Y06dwvDqh_hzZVP_KBZ-gGfCwvEGQM\";\n        s.async = true;\n        s.onload = resolve;\n        s.onerror = reject;\n        document.head.appendChild(s);\n      });\n\n      return window.__googleMapsLoading;\n    }\n\n    closeBtn.addEventListener('click', closeSlider);\n    btnCalc.addEventListener('click', calculateRoute);\n\n    btnLoc.addEventListener('click', function(){\n      if (!navigator.geolocation) { alert(\"Geolocation is not supported by this browser.\"); return; }\n      navigator.geolocation.getCurrentPosition(function(pos){\n        const geocoder = new google.maps.Geocoder();\n        const latlng = { lat: pos.coords.latitude, lng: pos.coords.longitude };\n        geocoder.geocode({ location: latlng }, function(results, status){\n          if (status === 'OK' && results[0]) startInput.value = results[0].formatted_address;\n          else alert('Geocoder failed due to: ' + status);\n        });\n      }, function(err){\n        switch(err.code){\n          case err.PERMISSION_DENIED: alert(\"User denied the request for Geolocation.\"); break;\n          case err.POSITION_UNAVAILABLE: alert(\"Location information is unavailable.\"); break;\n          case err.TIMEOUT: alert(\"The request to get user location timed out.\"); break;\n          default: alert(\"An unknown error occurred.\"); break;\n        }\n      });\n    });\n\n    loadGoogleMapsOnce().then(initMapInstance).catch(() => console.error('Google Maps failed to load'));\n  })();\n  <\/script>\n\n  <\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":1701,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"class_list":["post-16","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.1 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Choose a Roofer for a Quality Roof Replacement<\/title>\n<meta name=\"description\" content=\"There are a lot of non-reputable companies who don&#039;t share our commitment to trust &amp; quality. Our \u201cRoofing 101\u201d answers client\u2019s FAQs about the roofing process.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/premier-roofing.com\/roofing-101\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Roofing 101\" \/>\n<meta property=\"og:description\" content=\"There are a lot of non-reputable companies who don&#039;t share our commitment to trust &amp; quality. Our \u201cRoofing 101\u201d answers client\u2019s FAQs about the roofing process.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/premier-roofing.com\/roofing-101\/\" \/>\n<meta property=\"og:site_name\" content=\"Premier Roofing Company\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/premierroofing\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-17T06:33:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/premier-roofing.com\/wp-content\/uploads\/2023\/07\/Logo-4x4-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Choose a Roofer for a Quality Roof Replacement","description":"There are a lot of non-reputable companies who don't share our commitment to trust & quality. Our \u201cRoofing 101\u201d answers client\u2019s FAQs about the roofing process.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/premier-roofing.com\/roofing-101\/","og_locale":"en_US","og_type":"article","og_title":"Roofing 101","og_description":"There are a lot of non-reputable companies who don't share our commitment to trust & quality. Our \u201cRoofing 101\u201d answers client\u2019s FAQs about the roofing process.","og_url":"https:\/\/premier-roofing.com\/roofing-101\/","og_site_name":"Premier Roofing Company","article_publisher":"https:\/\/www.facebook.com\/premierroofing\/","article_modified_time":"2025-12-17T06:33:51+00:00","og_image":[{"width":640,"height":640,"url":"https:\/\/premier-roofing.com\/wp-content\/uploads\/2023\/07\/Logo-4x4-1.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/premier-roofing.com\/roofing-101\/","url":"https:\/\/premier-roofing.com\/roofing-101\/","name":"How to Choose a Roofer for a Quality Roof Replacement","isPartOf":{"@id":"https:\/\/premier-roofing.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/premier-roofing.com\/roofing-101\/#primaryimage"},"image":{"@id":"https:\/\/premier-roofing.com\/roofing-101\/#primaryimage"},"thumbnailUrl":"https:\/\/premier-roofing.com\/wp-content\/uploads\/2023\/07\/Logo-4x4-1.png","datePublished":"2021-01-22T10:57:15+00:00","dateModified":"2025-12-17T06:33:51+00:00","description":"There are a lot of non-reputable companies who don't share our commitment to trust & quality. Our \u201cRoofing 101\u201d answers client\u2019s FAQs about the roofing process.","breadcrumb":{"@id":"https:\/\/premier-roofing.com\/roofing-101\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/premier-roofing.com\/roofing-101\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/premier-roofing.com\/roofing-101\/#primaryimage","url":"https:\/\/premier-roofing.com\/wp-content\/uploads\/2023\/07\/Logo-4x4-1.png","contentUrl":"https:\/\/premier-roofing.com\/wp-content\/uploads\/2023\/07\/Logo-4x4-1.png","width":640,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/premier-roofing.com\/roofing-101\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/premier-roofing.com\/"},{"@type":"ListItem","position":2,"name":"Roofing 101"}]},{"@type":"WebSite","@id":"https:\/\/premier-roofing.com\/#website","url":"https:\/\/premier-roofing.com\/","name":"Premier Roofing Company","description":"Your Neighborhood Roofer","publisher":{"@id":"https:\/\/premier-roofing.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/premier-roofing.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/premier-roofing.com\/#organization","name":"Premier Roofing Company","alternateName":"Premier Roofing","url":"https:\/\/premier-roofing.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/premier-roofing.com\/#\/schema\/logo\/image\/","url":"https:\/\/premier-roofing.com\/wp-content\/uploads\/2023\/07\/Logo-4x4-1.png","contentUrl":"https:\/\/premier-roofing.com\/wp-content\/uploads\/2023\/07\/Logo-4x4-1.png","width":640,"height":640,"caption":"Premier Roofing Company"},"image":{"@id":"https:\/\/premier-roofing.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/premierroofing\/","https:\/\/www.instagram.com\/premierroofingcompany\/","https:\/\/www.tiktok.com\/@bepremierroofing","https:\/\/www.linkedin.com\/company\/the-premier-roofing-company"],"description":"At Premier Roofing, our dedicated team of over 200 full-time professionals is committed to elevating the roofing experience. With branches in Colorado, Texas, Oklahoma, Kansas, St. Louis, Iowa, Nebraska, Minnesota, Indiana, North Carolina, South Carolina, and Georgia, we aim to redefine what honesty and reliability mean in the roofing industry.","legalName":"Premier Roofing"}]}},"_links":{"self":[{"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/pages\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":0,"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/pages\/16\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/media\/1701"}],"wp:attachment":[{"href":"https:\/\/premier-roofing.com\/wp-json\/wp\/v2\/media?parent=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}