{"id":5561,"date":"2026-08-25T00:20:37","date_gmt":"2026-08-25T05:20:37","guid":{"rendered":"https:\/\/thenorthservices.online\/?page_id=5561"},"modified":"2026-08-28T15:09:06","modified_gmt":"2026-08-28T20:09:06","slug":"about-us","status":"publish","type":"page","link":"https:\/\/thenorthservices.online\/es\/about-us\/","title":{"rendered":"Acerca de nosotros"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5561\" class=\"elementor elementor-5561\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7c46ba e-flex e-con-boxed e-con e-parent\" data-id=\"a7c46ba\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-40a2e65 e-con-full e-flex e-con e-child\" data-id=\"40a2e65\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-aa0c041 e-con-full e-flex e-con e-child\" data-id=\"aa0c041\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b483e4 elementor-widget elementor-widget-heading\" data-id=\"3b483e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;pe_text_effect&quot;:&quot;blur-reveal&quot;,&quot;pe_blur_duration&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1850,&quot;sizes&quot;:[]},&quot;pe_blur_duration_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_duration_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_delay&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;pe_blur_delay_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_delay_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Ten years of doing\nwhat we <span style=\"color:#EFB700\">said we'd do.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d94bab3 e-con-full e-flex e-con e-child\" data-id=\"d94bab3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5790597 elementor-widget elementor-widget-text-editor\" data-id=\"5790597\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>One team behind every service, for homes and businesses across Orlando and Central Florida<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4016a64 e-flex e-con-boxed e-con e-parent\" data-id=\"4016a64\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-b92a003 e-con-full e-flex e-con e-child\" data-id=\"b92a003\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c68883d elementor-widget elementor-widget-counter\" data-id=\"c68883d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"counter.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-counter\">\n\t\t\t<div class=\"elementor-counter-title\">Years serving homes and businesses<\/div>\t\t\t<div class=\"elementor-counter-number-wrapper\">\n\t\t\t\t<span class=\"elementor-counter-number-prefix\">+<\/span>\n\t\t\t\t<span class=\"elementor-counter-number\" data-duration=\"2000\" data-to-value=\"10\" data-from-value=\"0\" data-delimiter=\",\">0<\/span>\n\t\t\t\t<span class=\"elementor-counter-number-suffix\"><\/span>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5a0f36d e-con-full e-flex e-con e-child\" data-id=\"5a0f36d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b27cc6 elementor-widget elementor-widget-counter\" data-id=\"5b27cc6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"counter.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-counter\">\n\t\t\t<div class=\"elementor-counter-title\">Service lines under one team<\/div>\t\t\t<div class=\"elementor-counter-number-wrapper\">\n\t\t\t\t<span class=\"elementor-counter-number-prefix\">+<\/span>\n\t\t\t\t<span class=\"elementor-counter-number\" data-duration=\"2000\" data-to-value=\"7\" data-from-value=\"0\" data-delimiter=\",\">0<\/span>\n\t\t\t\t<span class=\"elementor-counter-number-suffix\"><\/span>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-16c098c e-con-full e-flex e-con e-child\" data-id=\"16c098c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-598cee4 elementor-widget elementor-widget-counter\" data-id=\"598cee4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"counter.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-counter\">\n\t\t\t<div class=\"elementor-counter-title\">Cities across Central Florida<\/div>\t\t\t<div class=\"elementor-counter-number-wrapper\">\n\t\t\t\t<span class=\"elementor-counter-number-prefix\">+<\/span>\n\t\t\t\t<span class=\"elementor-counter-number\" data-duration=\"2000\" data-to-value=\"15\" data-from-value=\"0\" data-delimiter=\",\">0<\/span>\n\t\t\t\t<span class=\"elementor-counter-number-suffix\"><\/span>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-73d8478 e-con-full e-flex e-con e-child\" data-id=\"73d8478\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2d4a491 elementor-widget elementor-widget-counter\" data-id=\"2d4a491\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"counter.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-counter\">\n\t\t\t<div class=\"elementor-counter-title\">Languages, English and Spanish<\/div>\t\t\t<div class=\"elementor-counter-number-wrapper\">\n\t\t\t\t<span class=\"elementor-counter-number-prefix\">+<\/span>\n\t\t\t\t<span class=\"elementor-counter-number\" data-duration=\"2000\" data-to-value=\"2\" data-from-value=\"0\" data-delimiter=\",\">0<\/span>\n\t\t\t\t<span class=\"elementor-counter-number-suffix\"><\/span>\n\t\t\t<\/div>\n\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<div class=\"elementor-element elementor-element-5830669 e-flex e-con-boxed e-con e-parent\" data-id=\"5830669\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-fced7c4 e-con-full e-flex e-con e-child\" data-id=\"fced7c4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6166207 elementor-widget elementor-widget-heading\" data-id=\"6166207\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;pe_text_effect&quot;:&quot;blur-reveal&quot;,&quot;pe_blur_duration&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1850,&quot;sizes&quot;:[]},&quot;pe_blur_duration_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_duration_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_delay&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;pe_blur_delay_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_delay_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">One call instead <br>of seven vendors<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3083873 elementor-widget elementor-widget-text-editor\" data-id=\"3083873\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"tnsa-first\"><strong>For over ten years we&#8217;ve helped homeowners and business owners with the practical side of property: keeping it clean, keeping it working, and fixing what needs fixing.<\/strong><\/p><p>That experience is what lets a single team cover this much ground \u2014 moving, landscaping, cleaning, junk removal, pressure washing, installations, maintenance, and locksmith work \u2014 without treating any of them as an afterthought.<\/p><p>Our goal is simple. You shouldn&#8217;t need a different provider for every need. Whether it&#8217;s a one-time job or the ongoing care of a property, the same standard applies: responsibility, attention to detail, and follow-through.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9ac524d e-flex e-con-boxed e-con e-parent\" data-id=\"9ac524d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-57c324d elementor-widget elementor-widget-heading\" data-id=\"57c324d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;pe_text_effect&quot;:&quot;blur-reveal&quot;,&quot;pe_blur_duration&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1850,&quot;sizes&quot;:[]},&quot;pe_blur_duration_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_duration_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_delay&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;pe_blur_delay_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;pe_blur_delay_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Seven services, <br>one number\n<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-63c7f16 e-con-full e-flex e-con e-child\" data-id=\"63c7f16\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-918f99b e-con-full e-flex e-con e-child\" data-id=\"918f99b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1dddb52 e-flex e-con-boxed e-con e-parent\" data-id=\"1dddb52\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-40e810f elementor-widget elementor-widget-heading\" data-id=\"40e810f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How we work\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a9209b elementor-widget elementor-widget-heading\" data-id=\"6a9209b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">The same four things, <br>every single job<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b217811 elementor-widget elementor-widget-html\" data-id=\"b217811\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\n     FEATURES \/ BENEFITS SECTION\n     Fondo transparente \u00b7 Archivo + Inter \u00b7 Responsive\n========================================================= -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@500;600;700;800&family=Inter:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n\n<section class=\"nexa-features\">\n\n  <div class=\"nexa-features-grid\">\n\n    <!-- 01 -->\n    <article class=\"nexa-feature\">\n      <div class=\"nexa-feature-top\">\n        <span class=\"nexa-number\">01<\/span>\n        <span class=\"nexa-line\"><\/span>\n      <\/div>\n\n      <div class=\"nexa-feature-content\">\n        <div>\n          <h3>You get a person<\/h3>\n          <p>\n            Not a ticket. Someone who knows your property and answers when you call back.\n          <\/p>\n        <\/div>\n\n        <div class=\"nexa-icon\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n            <path d=\"M4 14v-2a8 8 0 0 1 16 0v2\"\/>\n            <path d=\"M4 14h3v5H4z\"\/>\n            <path d=\"M17 14h3v5h-3z\"\/>\n            <path d=\"M7 19h2\"\/>\n            <path d=\"M15 19h2\"\/>\n          <\/svg>\n        <\/div>\n      <\/div>\n    <\/article>\n\n\n    <!-- 02 -->\n    <article class=\"nexa-feature\">\n      <div class=\"nexa-feature-top\">\n        <span class=\"nexa-number\">02<\/span>\n        <span class=\"nexa-line\"><\/span>\n      <\/div>\n\n      <div class=\"nexa-feature-content\">\n        <div>\n          <h3>The price comes first<\/h3>\n          <p>\n            Confirmed before anything starts, and it doesn't move unless the job does.\n          <\/p>\n        <\/div>\n\n        <div class=\"nexa-icon\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n            <rect x=\"4\" y=\"3\" width=\"16\" height=\"18\" rx=\"2\"\/>\n            <path d=\"M8 7h8\"\/>\n            <path d=\"M8 11h5\"\/>\n            <path d=\"M8 15h3\"\/>\n            <path d=\"M16 15v5\"\/>\n            <path d=\"M14 18h4\"\/>\n          <\/svg>\n        <\/div>\n      <\/div>\n    <\/article>\n\n\n    <!-- 03 -->\n    <article class=\"nexa-feature\">\n      <div class=\"nexa-feature-top\">\n        <span class=\"nexa-number\">03<\/span>\n        <span class=\"nexa-line\"><\/span>\n      <\/div>\n\n      <div class=\"nexa-feature-content\">\n        <div>\n          <h3>We show up on time<\/h3>\n          <p>\n            Uniformed, verified crews, on the day and in the window we agreed on.\n          <\/p>\n        <\/div>\n\n        <div class=\"nexa-icon\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n            <circle cx=\"12\" cy=\"12\" r=\"8\"\/>\n            <path d=\"M12 7v5l3 2\"\/>\n          <\/svg>\n        <\/div>\n      <\/div>\n    <\/article>\n\n\n    <!-- 04 -->\n    <article class=\"nexa-feature\">\n      <div class=\"nexa-feature-top\">\n        <span class=\"nexa-number\">04<\/span>\n        <span class=\"nexa-line\"><\/span>\n      <\/div>\n\n      <div class=\"nexa-feature-content\">\n        <div>\n          <h3>We leave it clean<\/h3>\n          <p>\n            Whatever the service was, the space is left better than we found it.\n          <\/p>\n        <\/div>\n\n        <div class=\"nexa-icon\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n            <path d=\"M12 3l1.4 5.1L18 10l-4.6 1.9L12 17l-1.4-5.1L6 10l4.6-1.9z\"\/>\n            <path d=\"M19 15l.7 2.3L22 18l-2.3.7L19 21l-.7-2.3L16 18l2.3-.7z\"\/>\n          <\/svg>\n        <\/div>\n      <\/div>\n    <\/article>\n\n  <\/div>\n\n<\/section>\n\n\n<style>\n\n\/* =========================================================\n   MAIN SECTION\n========================================================= *\/\n\n.nexa-features {\n  width: 100%;\n  padding: 20px 0;\n  background: transparent;\n  font-family: \"Inter\", sans-serif;\n  overflow: hidden;\n}\n\n\n\/* =========================================================\n   GRID\n========================================================= *\/\n\n.nexa-features-grid {\n  width: 100%;\n  max-width: 1400px;\n  margin: 0 auto;\n\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n\n  border-top: 1px solid rgba(255,255,255,.18);\n}\n\n\n\/* =========================================================\n   FEATURE CARD\n========================================================= *\/\n\n.nexa-feature {\n  position: relative;\n  min-height: 300px;\n\n  padding: 42px 38px;\n\n  border-bottom: 1px solid rgba(255,255,255,.18);\n\n  overflow: hidden;\n\n  transition:\n    transform .45s cubic-bezier(.22,1,.36,1),\n    background .45s ease;\n}\n\n\n\/* Vertical divider *\/\n\n.nexa-feature:nth-child(odd) {\n  border-right: 1px solid rgba(255,255,255,.18);\n}\n\n\n\/* =========================================================\n   ANIMATED LIGHT\n========================================================= *\/\n\n.nexa-feature::before {\n  content: \"\";\n  position: absolute;\n\n  width: 220px;\n  height: 220px;\n\n  top: -120px;\n  right: -100px;\n\n  border-radius: 50%;\n\n  background: radial-gradient(\n    circle,\n    rgba(0, 255, 190, .12) 0%,\n    rgba(0, 255, 190, 0) 70%\n  );\n\n  opacity: 0;\n\n  transition:\n    opacity .5s ease,\n    transform .7s cubic-bezier(.22,1,.36,1);\n}\n\n\n\/* Bottom glow *\/\n\n.nexa-feature::after {\n  content: \"\";\n\n  position: absolute;\n\n  left: 0;\n  bottom: 0;\n\n  width: 0;\n  height: 2px;\n\n  background: linear-gradient(\n    90deg,\n    #f5b800,\n    #00d9a6\n  );\n\n  transition: width .6s cubic-bezier(.22,1,.36,1);\n}\n\n\n\/* Hover *\/\n\n.nexa-feature:hover {\n  transform: translateY(-4px);\n\n  background: rgba(255,255,255,.025);\n}\n\n.nexa-feature:hover::before {\n  opacity: 1;\n  transform: scale(1.5);\n}\n\n.nexa-feature:hover::after {\n  width: 100%;\n}\n\n\n\/* =========================================================\n   TOP\n========================================================= *\/\n\n.nexa-feature-top {\n  display: flex;\n  align-items: center;\n  gap: 18px;\n\n  margin-bottom: 28px;\n}\n\n\n\/* Number *\/\n\n.nexa-number {\n  font-family: \"Inter\", sans-serif;\n\n  font-size: 15px;\n  font-weight: 600;\n\n  letter-spacing: .12em;\n\n  color: #f5b800;\n\n  transition:\n    transform .35s ease,\n    letter-spacing .35s ease;\n}\n\n.nexa-feature:hover .nexa-number {\n  transform: translateX(3px);\n  letter-spacing: .18em;\n}\n\n\n\/* Line *\/\n\n.nexa-line {\n  height: 1px;\n  width: 48px;\n\n  background: linear-gradient(\n    90deg,\n    rgba(245,184,0,.8),\n    transparent\n  );\n\n  transition:\n    width .5s cubic-bezier(.22,1,.36,1);\n}\n\n.nexa-feature:hover .nexa-line {\n  width: 85px;\n}\n\n\n\/* =========================================================\n   CONTENT\n========================================================= *\/\n\n.nexa-feature-content {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n\n  gap: 30px;\n}\n\n\n\/* =========================================================\n   TITLES\n========================================================= *\/\n\n.nexa-feature h3 {\n  margin: 0 0 14px;\n\n  font-family: \"Archivo\", sans-serif;\n\n  font-size: clamp(26px, 2.2vw, 36px);\n\n  line-height: 1.08;\n\n  font-weight: 700;\n\n  letter-spacing: -.035em;\n\n  color: #ffffff;\n\n  transition:\n    transform .45s cubic-bezier(.22,1,.36,1);\n}\n\n.nexa-feature:hover h3 {\n  transform: translateX(5px);\n}\n\n\n\/* =========================================================\n   DESCRIPTION\n========================================================= *\/\n\n.nexa-feature p {\n  max-width: 720px;\n\n  margin: 0;\n\n  font-family: \"Inter\", sans-serif;\n\n  font-size: clamp(15px, 1.2vw, 19px);\n\n  line-height: 1.65;\n\n  font-weight: 400;\n\n  color: rgba(255,255,255,.68);\n}\n\n\n\/* =========================================================\n   ICON\n========================================================= *\/\n\n.nexa-icon {\n  flex: 0 0 58px;\n\n  width: 58px;\n  height: 58px;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n\n  border: 1px solid rgba(255,255,255,.15);\n\n  border-radius: 50%;\n\n  background: rgba(255,255,255,.025);\n\n  opacity: .65;\n\n  transform: translateY(8px) scale(.9);\n\n  transition:\n    opacity .45s ease,\n    transform .5s cubic-bezier(.22,1,.36,1),\n    border-color .45s ease,\n    background .45s ease;\n}\n\n.nexa-icon svg {\n  width: 25px;\n  height: 25px;\n\n  fill: none;\n\n  stroke: #f5b800;\n\n  stroke-width: 1.5;\n\n  stroke-linecap: round;\n  stroke-linejoin: round;\n}\n\n.nexa-feature:hover .nexa-icon {\n  opacity: 1;\n\n  transform:\n    translateY(0)\n    scale(1.08);\n\n  border-color: rgba(245,184,0,.55);\n\n  background: rgba(245,184,0,.07);\n}\n\n\n\/* =========================================================\n   STAGGERED ENTRANCE ANIMATION\n========================================================= *\/\n\n.nexa-feature {\n  animation: nexaReveal .8s cubic-bezier(.22,1,.36,1) both;\n}\n\n.nexa-feature:nth-child(1) {\n  animation-delay: .05s;\n}\n\n.nexa-feature:nth-child(2) {\n  animation-delay: .15s;\n}\n\n.nexa-feature:nth-child(3) {\n  animation-delay: .25s;\n}\n\n.nexa-feature:nth-child(4) {\n  animation-delay: .35s;\n}\n\n\n@keyframes nexaReveal {\n\n  from {\n    opacity: 0;\n    transform: translateY(25px);\n  }\n\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n}\n\n\n\/* =========================================================\n   TABLET\n========================================================= *\/\n\n@media (max-width: 900px) {\n\n  .nexa-feature {\n    padding: 34px 28px;\n    min-height: 270px;\n  }\n\n  .nexa-feature h3 {\n    font-size: 27px;\n  }\n\n  .nexa-feature p {\n    font-size: 16px;\n  }\n\n}\n\n\n\/* =========================================================\n   MOBILE\n========================================================= *\/\n\n@media (max-width: 650px) {\n\n  .nexa-features {\n    padding: 10px 0;\n  }\n\n  .nexa-features-grid {\n    grid-template-columns: 1fr;\n\n    border-top: 1px solid rgba(255,255,255,.15);\n  }\n\n\n  .nexa-feature,\n  .nexa-feature:nth-child(odd) {\n    min-height: auto;\n\n    padding: 30px 22px;\n\n    border-right: none;\n\n    border-bottom: 1px solid rgba(255,255,255,.15);\n  }\n\n\n  .nexa-feature:last-child {\n    border-bottom: none;\n  }\n\n\n  .nexa-feature-top {\n    margin-bottom: 20px;\n  }\n\n\n  .nexa-feature-content {\n    align-items: flex-start;\n\n    gap: 18px;\n  }\n\n\n  .nexa-feature h3 {\n    font-size: 25px;\n\n    line-height: 1.12;\n\n    margin-bottom: 10px;\n  }\n\n\n  .nexa-feature p {\n    font-size: 15px;\n\n    line-height: 1.55;\n  }\n\n\n  .nexa-icon {\n    flex: 0 0 46px;\n\n    width: 46px;\n    height: 46px;\n\n    transform: none;\n  }\n\n\n  .nexa-icon svg {\n    width: 21px;\n    height: 21px;\n  }\n\n\n  \/* Disable large hover movement on touch *\/\n\n  .nexa-feature:hover {\n    transform: none;\n  }\n\n}\n\n\n\/* =========================================================\n   SMALL PHONES\n========================================================= *\/\n\n@media (max-width: 380px) {\n\n  .nexa-feature {\n    padding: 26px 18px;\n  }\n\n  .nexa-feature h3 {\n    font-size: 22px;\n  }\n\n  .nexa-feature p {\n    font-size: 14px;\n  }\n\n  .nexa-icon {\n    display: none;\n  }\n\n}\n\n\n\/* =========================================================\n   ACCESSIBILITY\n========================================================= *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n  .nexa-feature,\n  .nexa-feature *,\n  .nexa-feature::before,\n  .nexa-feature::after {\n    animation: none !important;\n    transition: none !important;\n  }\n\n}\n\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-33f4a2f e-flex e-con-boxed e-con e-parent\" data-id=\"33f4a2f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-eb9a64f e-con-full e-flex e-con e-child\" data-id=\"eb9a64f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d8c9137 e-con-full e-flex e-con e-child\" data-id=\"d8c9137\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e2390de elementor-widget elementor-widget-heading\" data-id=\"e2390de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How we work\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37d571e elementor-widget elementor-widget-heading\" data-id=\"37d571e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Where we <br>work<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-676f3d8 elementor-widget elementor-widget-text-editor\" data-id=\"676f3d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Residential and commercial<br \/>clients across Orlando and Central Florida.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06f5cf0 elementor-widget elementor-widget-text-editor\" data-id=\"06f5cf0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Orlando \/ Altamonte Springs \/ Winter Park \/ Lake Mary \/ Longwood \/ Maitland \/ Casselberry \/ Sanford \/ Apopka \/ Oviedo \/ Kissimmee \/ Ocoee \/ Winter Garden \/ Deltona \/ Tavares \/ Dr Phillips \/ Mount Dora \/ and surrounding areas<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-38db599 e-con-full e-flex e-con e-child\" data-id=\"38db599\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3954f31 elementor-widget elementor-widget-shortcode\" data-id=\"3954f31\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!-- ============================================================\r\n     THE NORTH MULTISERVICES \u2014 COTIZADOR POR HORAS\r\n     Va dentro de #tns-quote-slot, reemplazando el div placeholder.\r\n\r\n     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n     \u2502 SOLO HAY 2 COSAS OBLIGATORIAS PARA QUE FUNCIONE:     \u2502\r\n     \u2502  1. MODE      -> c\u00f3mo se env\u00eda el lead               \u2502\r\n     \u2502  2. DEFAULT_SERVICE -> el servicio de esta p\u00e1gina    \u2502\r\n     \u2502 Todo lo dem\u00e1s ya viene funcionando.                  \u2502\r\n     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n     MODE tiene 3 opciones:\r\n\r\n     'whatsapp'  \u2190 POR DEFECTO. No requiere NADA en WordPress.\r\n                   Abre WhatsApp con el mensaje ya escrito.\r\n                   Solo cambia el n\u00famero en WHATSAPP_NUMBER.\r\n\r\n     'webhook'   \u2190 Manda un JSON a n8n (o a donde quieras).\r\n                   Solo pega la URL en WEBHOOK_URL.\r\n\r\n     'form'      \u2190 Rellena un formulario de Elementor de la p\u00e1gina.\r\n                   Es el que m\u00e1s configuraci\u00f3n pide. \u00dasalo solo\r\n                   si necesitas los leads dentro de WordPress.\r\n     ============================================================ -->\r\n\r\n<style>\r\n#tns-quote-slot{\r\n  display:block !important; padding:0 !important; text-align:left !important;\r\n  background:transparent !important; border:0 !important; min-height:0 !important;\r\n}\r\n\r\n.tnsq{\r\n  --tnsq-gold:#F5B301; --tnsq-gold-dark:#d99c00; --tnsq-navy:#011638;\r\n  --tnsq-text:rgba(255,255,255,.86); --tnsq-dim:rgba(255,255,255,.5);\r\n  --tnsq-line:rgba(255,255,255,.18); --tnsq-field:rgba(255,255,255,.07);\r\n  --tnsq-err:#ff8a7a; --tnsq-font:'Inter', system-ui, sans-serif;\r\n\r\n  font-family:var(--tnsq-font) !important; color:var(--tnsq-text) !important;\r\n  background:rgba(255,255,255,.05) !important; border:1px solid var(--tnsq-line) !important;\r\n  border-radius:4px !important; padding:26px !important; width:100% !important;\r\n}\r\n.tnsq, .tnsq *{ box-sizing:border-box !important; }\r\n.tnsq p{ margin:0 !important; }\r\n.tnsq label{ display:block !important; font-size:12.5px !important; color:var(--tnsq-dim) !important; margin:0 0 6px !important; }\r\n\r\n.tnsq-row{ margin-bottom:12px !important; }\r\n.tnsq-2{ display:grid !important; grid-template-columns:1fr 1fr !important; gap:10px !important; }\r\n\r\n.tnsq input,.tnsq select{\r\n  width:100% !important; background:var(--tnsq-field) !important;\r\n  border:1px solid var(--tnsq-line) !important; border-radius:3px !important;\r\n  color:#fff !important; font-family:var(--tnsq-font) !important; font-size:14.5px !important;\r\n  padding:11px 13px !important; appearance:none !important; transition:border-color .2s ease !important;\r\n}\r\n.tnsq select{\r\n  background-image:url(\"data:image\/svg+xml;charset=utf8,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'\/%3E%3C\/svg%3E\") !important;\r\n  background-repeat:no-repeat !important; background-position:right 12px center !important;\r\n  background-size:15px !important; padding-right:36px !important;\r\n}\r\n.tnsq select option{ background:#011638 !important; color:#fff !important; }\r\n.tnsq input:focus,.tnsq select:focus{ outline:none !important; border-color:var(--tnsq-gold) !important; }\r\n.tnsq input::placeholder{ color:rgba(255,255,255,.4) !important; }\r\n.tnsq .is-error input{ border-color:var(--tnsq-err) !important; }\r\n\r\n\/* Horas + horario en una sola fila *\/\r\n.tnsq-inline{ display:grid !important; grid-template-columns:1fr 1fr !important; gap:16px !important; align-items:start !important; }\r\n.tnsq-hours-top{ display:flex !important; justify-content:space-between !important; align-items:baseline !important; margin-bottom:4px !important; }\r\n.tnsq-hours-val{ color:#fff !important; font-size:14px !important; font-weight:600 !important; }\r\n.tnsq input[type=\"range\"]{\r\n  appearance:none !important; background:transparent !important; height:20px !important;\r\n  padding:0 !important; border:0 !important; cursor:pointer !important;\r\n}\r\n.tnsq input[type=\"range\"]::-webkit-slider-runnable-track{ height:3px !important; background:var(--tnsq-line) !important; border-radius:2px !important; }\r\n.tnsq input[type=\"range\"]::-moz-range-track{ height:3px !important; background:var(--tnsq-line) !important; border-radius:2px !important; }\r\n.tnsq input[type=\"range\"]::-webkit-slider-thumb{\r\n  appearance:none !important; width:17px !important; height:17px !important; border-radius:50% !important;\r\n  background:var(--tnsq-gold) !important; margin-top:-7px !important; border:0 !important;\r\n}\r\n.tnsq input[type=\"range\"]::-moz-range-thumb{ width:17px !important; height:17px !important; border-radius:50% !important; background:var(--tnsq-gold) !important; border:0 !important; }\r\n\r\n.tnsq-sep{ border:0 !important; border-top:1px solid var(--tnsq-line) !important; margin:20px 0 16px !important; }\r\n\r\n.tnsq-total{\r\n  display:flex !important; justify-content:space-between !important; align-items:baseline !important;\r\n  gap:14px !important; margin-top:18px !important;\r\n}\r\n.tnsq-total span{ font-size:12px !important; letter-spacing:.14em !important; text-transform:uppercase !important; color:var(--tnsq-dim) !important; }\r\n.tnsq-total b{\r\n  color:var(--tnsq-gold) !important; font-size:30px !important; font-weight:600 !important;\r\n  letter-spacing:-.02em !important; font-variant-numeric:tabular-nums !important; line-height:1 !important;\r\n}\r\n.tnsq-breakdown{ font-size:12.5px !important; color:var(--tnsq-dim) !important; margin-top:8px !important; }\r\n.tnsq-note{ font-size:12px !important; color:var(--tnsq-dim) !important; margin-top:10px !important; line-height:1.5 !important; }\r\n\r\n.tnsq-submit{\r\n  width:100% !important; margin-top:16px !important; cursor:pointer !important;\r\n  background:var(--tnsq-gold) !important; color:var(--tnsq-navy) !important; border:0 !important;\r\n  border-radius:4px !important; padding:15px 20px !important;\r\n  font-family:var(--tnsq-font) !important; font-weight:600 !important; font-size:15px !important;\r\n  transition:background .2s ease !important;\r\n}\r\n.tnsq-submit:hover{ background:var(--tnsq-gold-dark) !important; }\r\n.tnsq-submit[disabled]{ opacity:.6 !important; cursor:wait !important; }\r\n.tnsq-msg{ display:none !important; color:var(--tnsq-err) !important; font-size:12.5px !important; margin-top:10px !important; text-align:center !important; }\r\n.tnsq.has-error .tnsq-msg{ display:block !important; }\r\n\r\n.tnsq-done{ display:none !important; text-align:center !important; padding:30px 16px !important; }\r\n.tnsq-done b{ display:block !important; color:#fff !important; font-size:18px !important; margin-bottom:8px !important; }\r\n.tnsq-done p{ font-size:14px !important; }\r\n.tnsq.is-sent .tnsq-form{ display:none !important; }\r\n.tnsq.is-sent .tnsq-done{ display:block !important; }\r\n\r\n@media (max-width:600px){\r\n  .tnsq{ padding:20px !important; }\r\n  .tnsq-2,.tnsq-inline{ grid-template-columns:1fr !important; }\r\n  .tnsq-inline{ gap:12px !important; }\r\n  .tnsq-total b{ font-size:26px !important; }\r\n}\r\n<\/style>\r\n\r\n<div class=\"tnsq\" id=\"tnsq\">\r\n  <div class=\"tnsq-form\">\r\n\r\n    <div class=\"tnsq-row\">\r\n      <label for=\"tnsq-service\">Service<\/label>\r\n      <select id=\"tnsq-service\"><\/select>\r\n    <\/div>\r\n\r\n    <div class=\"tnsq-inline tnsq-row\">\r\n      <div>\r\n        <div class=\"tnsq-hours-top\">\r\n          <label for=\"tnsq-hours\" style=\"margin:0 !important;\">Hours<\/label>\r\n          <span class=\"tnsq-hours-val\" id=\"tnsq-hours-val\">2<\/span>\r\n        <\/div>\r\n        <input type=\"range\" id=\"tnsq-hours\" min=\"1\" max=\"10\" step=\"0.5\" value=\"2\">\r\n      <\/div>\r\n      <div>\r\n        <label for=\"tnsq-schedule\">When<\/label>\r\n        <select id=\"tnsq-schedule\"><\/select>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <hr class=\"tnsq-sep\">\r\n\r\n    <div class=\"tnsq-row\" data-v=\"name\">\r\n      <input type=\"text\" id=\"tnsq-name\" autocomplete=\"name\" placeholder=\"Full name\" aria-label=\"Full name\">\r\n    <\/div>\r\n    <div class=\"tnsq-2 tnsq-row\">\r\n      <div data-v=\"phone\"><input type=\"tel\" id=\"tnsq-phone\" autocomplete=\"tel\" placeholder=\"Phone\" aria-label=\"Phone\"><\/div>\r\n      <div data-v=\"email\"><input type=\"email\" id=\"tnsq-email\" autocomplete=\"email\" placeholder=\"Email\" aria-label=\"Email\"><\/div>\r\n    <\/div>\r\n    <div class=\"tnsq-2 tnsq-row\">\r\n      <div data-v=\"address\"><input type=\"text\" id=\"tnsq-address\" autocomplete=\"street-address\" placeholder=\"Service address\" aria-label=\"Service address\"><\/div>\r\n      <div data-v=\"zip\"><input type=\"text\" id=\"tnsq-zip\" inputmode=\"numeric\" autocomplete=\"postal-code\" maxlength=\"10\" placeholder=\"ZIP code\" aria-label=\"ZIP code\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"tnsq-total\">\r\n      <span>Estimated total<\/span>\r\n      <b id=\"tnsq-total\" aria-live=\"polite\">$0<\/b>\r\n    <\/div>\r\n    <p class=\"tnsq-breakdown\" id=\"tnsq-breakdown\"><\/p>\r\n    <p class=\"tnsq-note\">Estimate only. The final price is confirmed before any work starts.<\/p>\r\n\r\n    <button type=\"button\" class=\"tnsq-submit\" id=\"tnsq-submit\">Send my estimate request<\/button>\r\n    <p class=\"tnsq-msg\">Please check the highlighted fields and try again.<\/p>\r\n  <\/div>\r\n\r\n  <div class=\"tnsq-done\">\r\n    <b>Got it \u2014 we'll be in touch.<\/b>\r\n    <p>Expect a call or message from our team shortly to confirm the details.<\/p>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 CONFIGURACI\u00d3N \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n  var CFG = {\r\n    \/* Tarifas de EJEMPLO. rate = USD\/hora del equipo asignado | min = horas m\u00ednimas *\/\r\n    RATES: {\r\n      'yard':      { label:'Yard Work & Landscaping',     rate:65,  min:2 },\r\n      'pressure':  { label:'Pressure Washing & Exterior', rate:85,  min:2 },\r\n      'junk':      { label:'Junk Removal & Cleanouts',    rate:95,  min:2 },\r\n      'moving':    { label:'Moving & Delivery',           rate:110, min:2 },\r\n      'handyman':  { label:'Handyman & Maintenance',      rate:75,  min:1 },\r\n      'cleaning':  { label:'Cleaning Services',           rate:60,  min:2 },\r\n      'locksmith': { label:'Lockout & Locksmith',         rate:90,  min:1 }\r\n    },\r\n    TRIP_FEE: 25,          \/* cargo fijo. 0 = desactivado *\/\r\n    CURRENCY: 'USD',\r\n    SCHEDULE: [\r\n      { id:'standard', label:'Next available',        mult:1.00 },\r\n      { id:'sameday',  label:'Same-day (+25%)',       mult:1.25 },\r\n      { id:'after',    label:'After hours (+40%)',    mult:1.40 }\r\n    ],\r\n\r\n    \/* Cambia esto en cada p\u00e1gina:\r\n       yard | pressure | junk | moving | handyman | cleaning | locksmith *\/\r\n    DEFAULT_SERVICE: 'moving',\r\n\r\n    \/* \u2550\u2550\u2550 C\u00d3MO SE ENV\u00cdA EL LEAD \u2550\u2550\u2550\r\n       Opciones: 'whatsapp' | 'cf7' | 'webhook' | 'form'      *\/\r\n    MODE: 'whatsapp',\r\n\r\n    \/* Solo para MODE 'whatsapp' \u2014 n\u00famero con c\u00f3digo de pa\u00eds, sin + ni espacios *\/\r\n    WHATSAPP_NUMBER: '12132132332',\r\n\r\n    \/* Solo para MODE 'webhook' \u2014 URL del webhook de n8n *\/\r\n    WEBHOOK_URL: '',\r\n\r\n    \/* Solo para MODE 'cf7' \u2014 Contact Form 7.\r\n       PREFIX debe coincidir con el nombre de los campos del shortcode.\r\n       Con prefix 'tnsq-', el campo del nombre es [text* tnsq-name] *\/\r\n    CF7: {\r\n      prefix: 'tnsq-',\r\n      submit: '.wpcf7 input[type=\"submit\"], .wpcf7 button[type=\"submit\"]'\r\n    },\r\n\r\n    \/* Solo para MODE 'form' \u2014 formulario de Elementor en la misma p\u00e1gina.\r\n       Los IDs de los campos en Elementor deben llamarse igual que aqu\u00ed. *\/\r\n    FORM: {\r\n      submit: '.elementor-form button[type=\"submit\"]',\r\n      fields: {\r\n        name:     'input[name=\"form_fields[name]\"]',\r\n        phone:    'input[name=\"form_fields[phone]\"]',\r\n        email:    'input[name=\"form_fields[email]\"]',\r\n        address:  'input[name=\"form_fields[address]\"]',\r\n        zip:      'input[name=\"form_fields[zip]\"]',\r\n        service:  'input[name=\"form_fields[service]\"]',\r\n        hours:    'input[name=\"form_fields[hours]\"]',\r\n        schedule: 'input[name=\"form_fields[schedule]\"]',\r\n        estimate: 'input[name=\"form_fields[estimate]\"]'\r\n      }\r\n    }\r\n  };\r\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 FIN CONFIGURACI\u00d3N \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n\r\n  var root = document.getElementById('tnsq');\r\n  if(!root) return;\r\n  var money = new Intl.NumberFormat('en-US',{ style:'currency', currency:CFG.CURRENCY, maximumFractionDigits:0 });\r\n\r\n  var elService  = document.getElementById('tnsq-service'),\r\n      elHours    = document.getElementById('tnsq-hours'),\r\n      elHoursVal = document.getElementById('tnsq-hours-val'),\r\n      elSchedule = document.getElementById('tnsq-schedule'),\r\n      elTotal    = document.getElementById('tnsq-total'),\r\n      elBreak    = document.getElementById('tnsq-breakdown'),\r\n      elSubmit   = document.getElementById('tnsq-submit');\r\n\r\n  Object.keys(CFG.RATES).forEach(function(k){\r\n    var o=document.createElement('option'); o.value=k; o.textContent=CFG.RATES[k].label; elService.appendChild(o);\r\n  });\r\n  CFG.SCHEDULE.forEach(function(s){\r\n    var o=document.createElement('option'); o.value=s.id; o.textContent=s.label; elSchedule.appendChild(o);\r\n  });\r\n  if(!CFG.RATES[CFG.DEFAULT_SERVICE]) CFG.DEFAULT_SERVICE = Object.keys(CFG.RATES)[0];\r\n  elService.value = CFG.DEFAULT_SERVICE;\r\n\r\n  function sched(){ return CFG.SCHEDULE.filter(function(s){ return s.id===elSchedule.value; })[0] || CFG.SCHEDULE[0]; }\r\n\r\n  function syncMin(){\r\n    var min = CFG.RATES[elService.value].min;\r\n    elHours.min = min;\r\n    if(parseFloat(elHours.value) < min) elHours.value = min;\r\n  }\r\n\r\n  function calc(){\r\n    var svc=CFG.RATES[elService.value], h=parseFloat(elHours.value), m=sched().mult;\r\n    var labor=svc.rate*h, total=labor*m+CFG.TRIP_FEE;\r\n    return { svc:svc, hours:h, mult:m, labor:labor, total:total };\r\n  }\r\n\r\n  function render(){\r\n    var c=calc();\r\n    elHoursVal.textContent = (c.hours%1===0 ? c.hours : c.hours.toFixed(1));\r\n    elTotal.textContent = money.format(c.total);\r\n    var parts = [money.format(c.svc.rate)+'\/hr \u00d7 '+elHoursVal.textContent+'h'];\r\n    if(c.mult>1) parts.push('+'+Math.round((c.mult-1)*100)+'% '+(sched().id==='sameday'?'same-day':'after hours'));\r\n    if(CFG.TRIP_FEE>0) parts.push('+'+money.format(CFG.TRIP_FEE)+' trip fee');\r\n    elBreak.textContent = parts.join('  \u00b7  ');\r\n  }\r\n\r\n  elService.addEventListener('change', function(){ syncMin(); render(); });\r\n  elHours.addEventListener('input', render);\r\n  elSchedule.addEventListener('change', render);\r\n\r\n  function val(id){ var n=document.getElementById('tnsq-'+id); return n?n.value.trim():''; }\r\n  function mark(id, ok){ var f=root.querySelector('[data-v=\"'+id+'\"]'); if(f) f.classList.toggle('is-error',!ok); return ok; }\r\n\r\n  function validate(){\r\n    var ok=true;\r\n    ok = mark('name',    val('name').length>1) && ok;\r\n    ok = mark('phone',   val('phone').replace(\/\\D\/g,'').length>=7) && ok;\r\n    ok = mark('email',   \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/.test(val('email'))) && ok;\r\n    ok = mark('address', val('address').length>4) && ok;\r\n    ok = mark('zip',     \/^\\d{5}(-\\d{4})?$\/.test(val('zip'))) && ok;\r\n    root.classList.toggle('has-error', !ok);\r\n    if(!ok){\r\n      var first=root.querySelector('.is-error input');\r\n      if(first){ first.focus(); first.scrollIntoView({behavior:'smooth',block:'center'}); }\r\n    }\r\n    return ok;\r\n  }\r\n\r\n  function setField(sel, v){\r\n    if(!sel) return false;\r\n    var n=document.querySelector(sel);\r\n    if(!n) return false;\r\n    n.value=v;\r\n    n.dispatchEvent(new Event('input',{bubbles:true}));\r\n    n.dispatchEvent(new Event('change',{bubbles:true}));\r\n    return true;\r\n  }\r\n\r\n  elSubmit.addEventListener('click', function(){\r\n    if(!validate()) return;\r\n\r\n    var c = calc();\r\n    var data = {\r\n      name:val('name'), phone:val('phone'), email:val('email'),\r\n      address:val('address'), zip:val('zip'),\r\n      service:c.svc.label, hours:String(c.hours),\r\n      schedule:sched().label, estimate:money.format(c.total)\r\n    };\r\n\r\n    \/* \u2500\u2500\u2500\u2500\u2500 MODO 1: WHATSAPP (sin configuraci\u00f3n en WordPress) \u2500\u2500\u2500\u2500\u2500 *\/\r\n    if(CFG.MODE === 'whatsapp'){\r\n      var msg =\r\n        'New estimate request\\n\\n' +\r\n        'Service: ' + data.service + '\\n' +\r\n        'Hours: ' + data.hours + '\\n' +\r\n        'When: ' + data.schedule + '\\n' +\r\n        'Estimate: ' + data.estimate + '\\n\\n' +\r\n        'Name: ' + data.name + '\\n' +\r\n        'Phone: ' + data.phone + '\\n' +\r\n        'Email: ' + data.email + '\\n' +\r\n        'Address: ' + data.address + '\\n' +\r\n        'ZIP: ' + data.zip;\r\n      window.open('https:\/\/wa.me\/' + CFG.WHATSAPP_NUMBER + '?text=' + encodeURIComponent(msg), '_blank');\r\n      root.classList.add('is-sent');\r\n      return;\r\n    }\r\n\r\n    \/* \u2500\u2500\u2500\u2500\u2500 MODO 2: CONTACT FORM 7 \u2500\u2500\u2500\u2500\u2500 *\/\r\n    if(CFG.MODE === 'cf7'){\r\n      var found = 0;\r\n      Object.keys(data).forEach(function(k){\r\n        var node = document.querySelector('[name=\"' + CFG.CF7.prefix + k + '\"]');\r\n        if(node){\r\n          node.value = data[k];\r\n          node.dispatchEvent(new Event('input',  { bubbles:true }));\r\n          node.dispatchEvent(new Event('change', { bubbles:true }));\r\n          found++;\r\n        }\r\n      });\r\n      var cf7btn = document.querySelector(CFG.CF7.submit);\r\n\r\n      if(found === 0 || !cf7btn){\r\n        console.warn('TNSQ\/CF7: campos encontrados =', found, '| bot\u00f3n =', cf7btn,\r\n                     '\\nRevisa que los nombres del shortcode empiecen con \"' + CFG.CF7.prefix + '\".');\r\n        root.classList.add('has-error');\r\n        return;\r\n      }\r\n\r\n      elSubmit.disabled = true; elSubmit.textContent = 'Sending\u2026';\r\n      cf7btn.click();\r\n      return;   \/* el resultado lo manejan los listeners de CF7 m\u00e1s abajo *\/\r\n    }\r\n\r\n    \/* \u2500\u2500\u2500\u2500\u2500 MODO 3: WEBHOOK (n8n) \u2500\u2500\u2500\u2500\u2500 *\/\r\n    if(CFG.MODE === 'webhook'){\r\n      if(!CFG.WEBHOOK_URL){ console.warn('TNSQ: falta WEBHOOK_URL'); return; }\r\n      elSubmit.disabled = true; elSubmit.textContent = 'Sending\u2026';\r\n      fetch(CFG.WEBHOOK_URL, {\r\n        method:'POST',\r\n        headers:{ 'Content-Type':'application\/json' },\r\n        body: JSON.stringify(data)\r\n      }).then(function(){\r\n        root.classList.add('is-sent');\r\n      }).catch(function(){\r\n        elSubmit.disabled = false;\r\n        elSubmit.textContent = 'Try again';\r\n        root.classList.add('has-error');\r\n      });\r\n      return;\r\n    }\r\n\r\n    \/* \u2500\u2500\u2500\u2500\u2500 MODO 4: FORMULARIO DE ELEMENTOR \u2500\u2500\u2500\u2500\u2500 *\/\r\n    var filled = 0;\r\n    Object.keys(CFG.FORM.fields).forEach(function(k){\r\n      if(setField(CFG.FORM.fields[k], data[k] || '')) filled++;\r\n    });\r\n    var btn = document.querySelector(CFG.FORM.submit);\r\n\r\n    if(filled === 0 || !btn){\r\n      console.warn('TNSQ: no se encontr\u00f3 el formulario de Elementor. Campos encontrados:', filled, '| Bot\u00f3n:', btn);\r\n      root.classList.add('has-error');\r\n      return;\r\n    }\r\n\r\n    elSubmit.disabled = true; elSubmit.textContent = 'Sending\u2026';\r\n    btn.click();\r\n    setTimeout(function(){ root.classList.add('is-sent'); }, 900);\r\n  });\r\n\r\n  \/* CF7 avisa por eventos propios si el correo sali\u00f3 o fall\u00f3 *\/\r\n  document.addEventListener('wpcf7mailsent', function(){\r\n    root.classList.add('is-sent');\r\n  }, false);\r\n  ['wpcf7invalid','wpcf7spam','wpcf7mailfailed'].forEach(function(ev){\r\n    document.addEventListener(ev, function(){\r\n      elSubmit.disabled = false;\r\n      elSubmit.textContent = 'Try again';\r\n      root.classList.add('has-error');\r\n    }, false);\r\n  });\r\n\r\n  syncMin(); render();\r\n})();\r\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\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>Ten years of doing what we said we&#8217;d do. One team behind every service, for homes and businesses across Orlando [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5561","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/pages\/5561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/comments?post=5561"}],"version-history":[{"count":100,"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/pages\/5561\/revisions"}],"predecessor-version":[{"id":5911,"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/pages\/5561\/revisions\/5911"}],"wp:attachment":[{"href":"https:\/\/thenorthservices.online\/es\/wp-json\/wp\/v2\/media?parent=5561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}