{"id":23814,"date":"2026-06-01T20:21:20","date_gmt":"2026-06-01T20:21:20","guid":{"rendered":"https:\/\/www.carbonweb.co\/?page_id=23814"},"modified":"2026-07-14T14:27:29","modified_gmt":"2026-07-14T14:27:29","slug":"demo","status":"publish","type":"page","link":"https:\/\/www.carbonweb.co\/es\/demo\/","title":{"rendered":"Demostraci\u00f3n"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"23814\" class=\"elementor elementor-23814\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-37c6e30e e-flex e-con-boxed e-con e-parent\" data-id=\"37c6e30e\" data-element_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-d6376be elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"d6376be\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What would you like help with?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47d9a22 elementor-widget elementor-widget-heading\" data-id=\"47d9a22\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Pick what areas you would like support with to help our team guide you<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5fb5294 elementor-widget elementor-widget-shortcode\" data-id=\"5fb5294\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><link\r\n  href=\"https:\/\/assets.calendly.com\/assets\/external\/widget.css\"\r\n  rel=\"stylesheet\"\r\n\/>\r\n\r\n<main id=\"sbw-root\">\r\n  <section\r\n    id=\"sbw-selection\"\r\n    class=\"sbw-view sbw-view--active\"\r\n    aria-label=\"Choose your service\"\r\n  >\r\n    <div\r\n      id=\"sbw-card-grid\"\r\n      class=\"sbw-card-grid\"\r\n      role=\"group\"\r\n      aria-label=\"Service categories\"\r\n    ><\/div>\r\n    <footer class=\"sbw-action-footer\">\r\n      <button type=\"button\" id=\"sbw-proceed-btn\" aria-disabled=\"true\" disabled>\r\n        <svg\r\n          aria-hidden=\"true\"\r\n          width=\"24\"\r\n          height=\"24\"\r\n          viewBox=\"0 0 24 24\"\r\n          fill=\"none\"\r\n        >\r\n          <path\r\n            d=\"M5 12H19M12 19L19 12L12 5\"\r\n            stroke=\"currentColor\"\r\n            stroke-width=\"2\"\r\n            stroke-linecap=\"round\"\r\n            stroke-linejoin=\"round\"\r\n          \/>\r\n        <\/svg>\r\n        Select date and time\r\n      <\/button>\r\n    <\/footer>\r\n    <p class=\"sbw-trust-line\">\r\n      \ud83d\udd12&nbsp; No commitment &nbsp;\u00b7&nbsp; Free session &nbsp;\u00b7&nbsp; Certified\r\n      monday.com experts\r\n    <\/p>\r\n  <\/section>\r\n\r\n  <section\r\n    id=\"sbw-scheduler\"\r\n    class=\"sbw-view\"\r\n    aria-label=\"Schedule your consultation\"\r\n  >\r\n    <header class=\"sbw-scheduler-header\">\r\n      <button\r\n        type=\"button\"\r\n        id=\"sbw-back-btn\"\r\n        class=\"sbw-chip sbw-chip--btn\"\r\n        aria-label=\"Go back to service selection\"\r\n      >\r\n        <svg\r\n          width=\"20\"\r\n          height=\"20\"\r\n          viewBox=\"0 0 20 20\"\r\n          fill=\"none\"\r\n          aria-hidden=\"true\"\r\n        >\r\n          <path\r\n            fill-rule=\"evenodd\"\r\n            clip-rule=\"evenodd\"\r\n            d=\"M17.892 10.071a.75.75 0 0 1-.75.75H4.811l4.628 4.628a.75.75 0 1 1-1.061 1.061L2.47 10.601a.75.75 0 0 1 0-1.06L8.378 3.632a.75.75 0 1 1 1.061 1.06L4.811 9.321h12.331a.75.75 0 0 1 .75.75Z\"\r\n            fill=\"currentColor\"\r\n          \/>\r\n        <\/svg>\r\n        <span>Back<\/span>\r\n      <\/button>\r\n      <div id=\"sbw-summary-chip\" class=\"sbw-chip\" aria-live=\"polite\"><\/div>\r\n    <\/header>\r\n    <div class=\"sbw-split\">\r\n      <div class=\"sbw-col-calendar\" aria-label=\"Calendar booking\">\r\n        <div id=\"sbw-calendly-embed\"><\/div>\r\n      <\/div>\r\n      <aside\r\n        id=\"sbw-details-panel\"\r\n        class=\"sbw-col-details\"\r\n        aria-label=\"Selected service details\"\r\n      ><\/aside>\r\n    <\/div>\r\n  <\/section>\r\n<\/main>\r\n\r\n<style>\r\n  #sbw-root {\r\n    opacity: 0;\r\n    transition: opacity 0.35s ease;\r\n  }\r\n  #sbw-root.sbw-ready {\r\n    opacity: 1;\r\n  }\r\n  #sbw-root {\r\n    --sbw-teal: #00b0c2;\r\n    --sbw-teal-dark: #009dad;\r\n    --sbw-green: #69d757;\r\n    --sbw-text: #000000;\r\n    --sbw-subtext: #686a86;\r\n    --sbw-border: #e2e8f0;\r\n    --sbw-surface: #ffffff;\r\n    --sbw-surface-alt: #f5f7fb;\r\n    --sbw-font: \"Raleway\", -apple-system, sans-serif;\r\n    --sbw-radius-card: 12px;\r\n    --sbw-radius-pill: 100px;\r\n    --sbw-radius-sm: 6px;\r\n    --sbw-shadow-card: 4px 2px 21px rgba(0, 0, 0, 0.06);\r\n    --sbw-shadow-chip: 0 2px 8px rgba(0, 0, 0, 0.04);\r\n    --sbw-shadow-details: 0 4px 20px rgba(0, 0, 0, 0.03);\r\n    --sbw-ease-spring: cubic-bezier(0.16, 1, 0.3, 1);\r\n    font-family: var(--sbw-font);\r\n    max-width: 1140px;\r\n    margin: 0 auto;\r\n    padding: 0 20px;\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n  }\r\n  #sbw-root *,\r\n  #sbw-root *::before,\r\n  #sbw-root *::after {\r\n    box-sizing: border-box;\r\n  }\r\n  #sbw-root .sr-only {\r\n    position: absolute;\r\n    width: 1px;\r\n    height: 1px;\r\n    padding: 0;\r\n    margin: -1px;\r\n    overflow: hidden;\r\n    clip: rect(0, 0, 0, 0);\r\n    white-space: nowrap;\r\n    border-width: 0;\r\n  }\r\n  #sbw-root button:focus-visible {\r\n    outline: 3px solid var(--sbw-teal-dark);\r\n    outline-offset: 4px;\r\n    border-radius: inherit;\r\n  }\r\n  @media (prefers-reduced-motion: reduce) {\r\n    #sbw-root,\r\n    #sbw-root *,\r\n    #sbw-root *::before,\r\n    #sbw-root *::after {\r\n      animation-duration: 0.01ms !important;\r\n      transition-duration: 0.01ms !important;\r\n    }\r\n  }\r\n  #sbw-root .sbw-view {\r\n    display: none;\r\n    width: 100%;\r\n  }\r\n  #sbw-root .sbw-view--active {\r\n    display: block;\r\n  }\r\n  #sbw-root .sbw-view--entering {\r\n    animation: sbwFadeUp 0.3s var(--sbw-ease-spring) forwards;\r\n  }\r\n  @keyframes sbwFadeUp {\r\n    from {\r\n      opacity: 0;\r\n      transform: translateY(10px);\r\n    }\r\n    to {\r\n      opacity: 1;\r\n      transform: translateY(0);\r\n    }\r\n  }\r\n  #sbw-root .sbw-header {\r\n    text-align: center;\r\n    margin-bottom: 40px;\r\n    padding: 0 10px;\r\n  }\r\n  #sbw-root .sbw-header h2 {\r\n    font-size: 2.75rem;\r\n    font-weight: 700;\r\n    margin: 0 0 12px;\r\n    color: var(--sbw-text);\r\n    line-height: 1.2;\r\n  }\r\n  #sbw-root .sbw-header p {\r\n    color: var(--sbw-subtext);\r\n    font-size: 1.125rem;\r\n    line-height: 1.5;\r\n    margin: 0;\r\n  }\r\n  @media (max-width: 768px) {\r\n    #sbw-root .sbw-header h2 {\r\n      font-size: 2rem;\r\n    }\r\n    #sbw-root .sbw-header p {\r\n      font-size: 1rem;\r\n    }\r\n  }\r\n  #sbw-root .sbw-card-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    gap: 20px;\r\n    margin-bottom: 24px;\r\n    width: 100%;\r\n  }\r\n  @media (max-width: 768px) {\r\n    #sbw-root .sbw-card-grid {\r\n      grid-template-columns: minmax(0, 1fr);\r\n      gap: 16px;\r\n    }\r\n  }\r\n  #sbw-root .sbw-card {\r\n    appearance: none;\r\n    background: var(--sbw-surface);\r\n    text-align: left;\r\n    font-family: inherit;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: flex-start;\r\n    padding: 24px;\r\n    gap: 20px;\r\n    width: 100%;\r\n    min-height: 205px;\r\n    border-radius: var(--sbw-radius-card);\r\n    border: 1px solid var(--sbw-border);\r\n    cursor: pointer;\r\n    transition:\r\n      box-shadow 0.25s var(--sbw-ease-spring),\r\n      border-color 0.25s var(--sbw-ease-spring);\r\n  }\r\n  #sbw-root .sbw-card[aria-checked=\"true\"] {\r\n    box-shadow: var(--sbw-shadow-card);\r\n    border-color: var(--sbw-teal);\r\n  }\r\n  #sbw-root .sbw-card__header {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: flex-start;\r\n    width: 100%;\r\n    min-height: 36px;\r\n    gap: 8px;\r\n  }\r\n  #sbw-root .sbw-card__label {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    flex-wrap: wrap;\r\n    min-width: 0;\r\n  }\r\n  #sbw-root .sbw-card__label-icon {\r\n    width: 20px;\r\n    height: 20px;\r\n    flex-shrink: 0;\r\n  }\r\n  #sbw-root .sbw-card__label-text {\r\n    font-weight: 700;\r\n    font-size: 16px;\r\n    letter-spacing: 3px;\r\n    text-transform: uppercase;\r\n    color: var(--sbw-teal-dark);\r\n    white-space: wrap;\r\n    word-break: break-word;\r\n  }\r\n  #sbw-root .sbw-card__checkbox {\r\n    width: 20px;\r\n    height: 20px;\r\n    background: var(--sbw-surface);\r\n    border: 1px solid var(--sbw-subtext);\r\n    border-radius: 4px;\r\n    position: relative;\r\n    flex-shrink: 0;\r\n    transition:\r\n      background 0.2s ease,\r\n      border-color 0.2s ease;\r\n  }\r\n  #sbw-root .sbw-card[aria-checked=\"true\"] .sbw-card__checkbox {\r\n    background: var(--sbw-teal);\r\n    border-color: var(--sbw-teal);\r\n  }\r\n  #sbw-root .sbw-card[aria-checked=\"true\"] .sbw-card__checkbox::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 50%;\r\n    top: 45%;\r\n    width: 5px;\r\n    height: 10px;\r\n    border: 2px solid #fff;\r\n    border-top: 0;\r\n    border-left: 0;\r\n    transform: translate(-50%, -50%) rotate(45deg);\r\n  }\r\n  #sbw-root .sbw-card__body {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 12px;\r\n    width: 100%;\r\n    min-width: 0;\r\n    overflow-wrap: break-word;\r\n    white-space: wrap;\r\n  }\r\n  #sbw-root .sbw-card__title {\r\n    font-weight: 700;\r\n    font-size: 20px;\r\n    line-height: 23px;\r\n    color: var(--sbw-text);\r\n    margin: 0;\r\n    overflow-wrap: break-word;\r\n    white-space: wrap;\r\n  }\r\n  #sbw-root .sbw-card__desc {\r\n    font-weight: 400;\r\n    font-size: 16px;\r\n    line-height: 22px;\r\n    color: #333;\r\n    margin: 0;\r\n    overflow-wrap: break-word;\r\n    white-space: wrap;\r\n  }\r\n  \r\n  \/* Desktop layout: Action Footer bottom of the card selector, right-aligned, and static *\/\r\n  #sbw-root .sbw-action-footer {\r\n    display: flex;\r\n    justify-content: flex-end;\r\n    margin-top: 20px;\r\n  }\r\n  #sbw-root #sbw-proceed-btn {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n    background: var(--sbw-teal);\r\n    color: #fff;\r\n    border: none;\r\n    height: 40px;\r\n    min-width: 214px;\r\n    font-family: inherit;\r\n    font-size: 16px;\r\n    font-weight: 700;\r\n    border-radius: var(--sbw-radius-pill);\r\n    cursor: pointer;\r\n    box-shadow: 0 4px 12px rgba(0, 176, 194, 0.2);\r\n    transition:\r\n      opacity 0.2s ease,\r\n      box-shadow 0.2s ease,\r\n      background-color 0.2s ease;\r\n    padding: 0 24px;\r\n  }\r\n  \/* Hover states are gated to true hover devices. On touch, a tap\r\n     fires :hover and it \"sticks\" until the next tap elsewhere, which\r\n     left the button green on mobile. Gating keeps mobile identical to\r\n     desktop's resting (teal) state. *\/\r\n  @media (hover: hover) and (pointer: fine) {\r\n    #sbw-root #sbw-proceed-btn:hover {\r\n      background: var(--sbw-green);\r\n    }\r\n  }\r\n  #sbw-root #sbw-proceed-btn:disabled {\r\n    box-shadow: none;\r\n    opacity: 0.32;\r\n    cursor: not-allowed;\r\n  }\r\n  #sbw-root .sbw-trust-line {\r\n    text-align: center;\r\n    margin: 60px 0 0;\r\n    font-size: 16px;\r\n    line-height: 22px;\r\n    color: #333;\r\n    transition: margin 0.2s ease;\r\n  }\r\n  \r\n  \/* Mobile and Tablet layout: Docked to bottom viewport *\/\r\n  @media (max-width: 768px) {\r\n    #sbw-root .sbw-action-footer {\r\n      position: fixed;\r\n      bottom: 0;\r\n      left: 0;\r\n      right: 0;\r\n      background: var(--sbw-surface);\r\n      padding: 16px 24px calc(16px + env(safe-area-inset-bottom));\r\n      border-top: 1px solid var(--sbw-border);\r\n      box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.08);\r\n      z-index: 1000;\r\n      margin-top: 0;\r\n      display: flex;\r\n      justify-content: center;\r\n    }\r\n    #sbw-root #sbw-proceed-btn {\r\n      width: 100%;\r\n      max-width: 480px; \/* keeps the button proportioned beautifully on landscape or tablets *\/\r\n    }\r\n    #sbw-root .sbw-trust-line {\r\n      margin: 40px 0 100px; \/* 100px bottom offset lets you scroll past the sticky bar without clipping *\/\r\n    }\r\n  }\r\n  \r\n  #sbw-root .sbw-scheduler-header {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 12px;\r\n    margin-bottom: 25px;\r\n  }\r\n  #sbw-root .sbw-chip {\r\n    display: flex;\r\n    align-items: center;\r\n    padding: 8px 14px;\r\n    gap: 10px;\r\n    height: 43px;\r\n    background: var(--sbw-surface);\r\n    border-radius: var(--sbw-radius-pill);\r\n    border: none;\r\n    font-family: inherit;\r\n    font-size: 16px;\r\n    line-height: 1.7;\r\n    color: var(--sbw-text);\r\n    box-shadow: var(--sbw-shadow-chip);\r\n  }\r\n  #sbw-root .sbw-chip--btn {\r\n    cursor: pointer;\r\n    transition: background 0.2s ease;\r\n  }\r\n  @media (hover: hover) and (pointer: fine) {\r\n    #sbw-root .sbw-chip--btn:hover {\r\n      background: #f8f9fa;\r\n    }\r\n  }\r\n  #sbw-root #sbw-summary-chip {\r\n    cursor: default;\r\n    min-width: 100px;\r\n    max-width: calc(100% - 120px);\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n    justify-content: center;\r\n  }\r\n  #sbw-root .sbw-split {\r\n    display: grid;\r\n    grid-template-columns: minmax(50%, 570px) minmax(50%, 570px);\r\n    gap: 40px;\r\n    align-items: start;\r\n  }\r\n  #sbw-root .sbw-col-calendar,\r\n  #sbw-root .sbw-col-calendar iframe {\r\n    width: 100%;\r\n    min-width: 0;\r\n    min-height: 620px;\r\n  }\r\n  #sbw-root .sbw-col-calendar .calendly-inline-widget {\r\n    width: 100% !important;\r\n  }\r\n  @media (max-width: 1100px) {\r\n    #sbw-root .sbw-split {\r\n      grid-template-columns: minmax(50%, 480px) minmax(50%, 480px);\r\n      gap: 24px;\r\n    }\r\n  }\r\n  @media (max-width: 960px) {\r\n    #sbw-root .sbw-split {\r\n      grid-template-columns: minmax(0, 1fr);\r\n      gap: 32px;\r\n    }\r\n    #sbw-root .sbw-col-details {\r\n      order: -1;\r\n    }\r\n  }\r\n  @media (max-width: 480px) {\r\n    #sbw-root .sbw-col-calendar {\r\n      min-height: 550px;\r\n    }\r\n  }\r\n  #sbw-root .sbw-details-pane {\r\n    display: flex;\r\n    flex-direction: column;\r\n    padding: 36px 30px;\r\n    gap: 30px;\r\n    width: 100%;\r\n    background: var(--sbw-surface);\r\n    border-radius: var(--sbw-radius-sm);\r\n    border: 1px solid var(--sbw-border);\r\n    box-shadow: var(--sbw-shadow-details);\r\n  }\r\n  @media (max-width: 960px) {\r\n    #sbw-root .sbw-details-pane {\r\n      padding: 24px 20px;\r\n    }\r\n  }\r\n  #sbw-root .sbw-badge {\r\n    display: flex;\r\n    align-items: center;\r\n    padding: 8px 16px 8px 8px;\r\n    gap: 8px;\r\n    height: 35px;\r\n    background: var(--sbw-surface-alt);\r\n    border-radius: var(--sbw-radius-pill);\r\n    width: max-content;\r\n  }\r\n  #sbw-root .sbw-badge__dot {\r\n    width: 10px;\r\n    height: 10px;\r\n    background: var(--sbw-teal);\r\n    border-radius: 50%;\r\n  }\r\n  #sbw-root .sbw-badge__text {\r\n    font-weight: 700;\r\n    font-size: 16px;\r\n    letter-spacing: 3px;\r\n    text-transform: uppercase;\r\n    color: var(--sbw-subtext);\r\n  }\r\n  #sbw-root .sbw-pane-title {\r\n    font-weight: 700;\r\n    font-size: 24px;\r\n    line-height: 1.3;\r\n    color: var(--sbw-text);\r\n    margin: 0;\r\n  }\r\n  #sbw-root .sbw-meta {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 10px;\r\n  }\r\n  #sbw-root .sbw-meta-chip {\r\n    display: flex;\r\n    align-items: center;\r\n    padding: 8px 16px 8px 8px;\r\n    gap: 8px;\r\n    height: 43px;\r\n    background: var(--sbw-surface-alt);\r\n    border-radius: var(--sbw-radius-pill);\r\n    font-weight: 600;\r\n    font-size: 16px;\r\n    color: var(--sbw-subtext);\r\n  }\r\n  #sbw-root .sbw-pane-desc {\r\n    font-size: 16px;\r\n    line-height: 1.7;\r\n    color: var(--sbw-text);\r\n    margin: 0;\r\n  }\r\n  #sbw-root .sbw-bullets-title {\r\n    font-weight: 700;\r\n    font-size: 20px;\r\n    line-height: 1.3;\r\n    color: var(--sbw-text);\r\n    margin: 0 0 20px;\r\n  }\r\n  #sbw-root .sbw-bullets {\r\n    list-style: none;\r\n    margin: 0;\r\n    padding: 0;\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 20px;\r\n  }\r\n  #sbw-root .sbw-bullet {\r\n    display: flex;\r\n    align-items: flex-start;\r\n    gap: 19px;\r\n  }\r\n  #sbw-root .sbw-bullet__icon {\r\n    width: 20px;\r\n    height: 20px;\r\n    background: var(--sbw-teal);\r\n    border-radius: 50%;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    flex-shrink: 0;\r\n    margin-top: 2px;\r\n  }\r\n  #sbw-root .sbw-bullet__text {\r\n    font-size: 18px;\r\n    line-height: 24px;\r\n    color: var(--sbw-text);\r\n    margin: 0;\r\n    word-break: break-word;\r\n  }\r\n  #sbw-root .sbw-accordion {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0;\r\n    width: 100%;\r\n    border-top: 1px solid var(--sbw-border);\r\n  }\r\n  #sbw-root .sbw-accordion-item {\r\n    border-bottom: 1px solid var(--sbw-border);\r\n  }\r\n  #sbw-root .sbw-accordion-trigger {\r\n    appearance: none;\r\n    background: none;\r\n    border: none;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    width: 100%;\r\n    padding: 16px 0;\r\n    cursor: pointer;\r\n    font-family: inherit;\r\n  }\r\n  #sbw-root .sbw-accordion-chevron {\r\n    flex-shrink: 0;\r\n    transition: transform 0.3s ease;\r\n  }\r\n  #sbw-root\r\n    .sbw-accordion-trigger[aria-expanded=\"true\"]\r\n    .sbw-accordion-chevron {\r\n    transform: rotate(180deg);\r\n  }\r\n  #sbw-root .sbw-accordion-panel {\r\n    display: none;\r\n    padding-bottom: 20px;\r\n  }\r\n  #sbw-root\r\n    .sbw-accordion-trigger[aria-expanded=\"true\"]\r\n    + .sbw-accordion-panel {\r\n    display: block;\r\n    animation: sbwFadeUp 0.2s ease-in-out;\r\n  }\r\n  #sbw-root .sbw-accordion-panel .sbw-pane-desc {\r\n    margin-bottom: 20px;\r\n  }\r\n  @media (max-width: 768px) {\r\n    #sbw-root .sbw-badge__text,\r\n    #sbw-root .sbw-card__label-text {\r\n      font-size: 12px;\r\n    }\r\n    #sbw-root .sbw-card__title {\r\n      font-size: 16px;\r\n      line-height: 20px;\r\n    }\r\n    #sbw-root .sbw-card__desc {\r\n      font-size: 14px;\r\n      line-height: 18px;\r\n    }\r\n    #sbw-root .sbw-bullet__text {\r\n      font-size: 14px;\r\n    }\r\n    #sbw-root .sbw-pane-desc {\r\n      font-size: 14px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script\r\n  src=\"https:\/\/assets.calendly.com\/assets\/external\/widget.js\"\r\n  async\r\n><\/script>\r\n<script>\r\n  (function StepBookingWidget() {\r\n    \"use strict\";\r\n\r\n    \/* ================================================================\r\n     * Constants\r\n     * ================================================================ *\/\r\n    var CONSTANTS = {\r\n      ROOT_ID: \"sbw-root\",\r\n      CALENDLY_ORIGIN: \"https:\/\/calendly.com\",\r\n      CALENDLY_RETRY_DELAY_MS: 300, \/\/ wait between checks for widget.js\r\n      CALENDLY_MAX_RETRIES: 20, \/\/ ~6s total before giving up\r\n      HEIGHT_POLL_INTERVAL_MS: 200, \/\/ fallback height sync cadence\r\n      HEIGHT_FLOOR_PX: 620, \/\/ never render calendar shorter than this\r\n      SUMMARY_SEPARATOR: \" | \",\r\n      CAMPAIGN_SEPARATOR: \",\",\r\n      SERVICE_QUERY_PARAM: \"service\",\r\n    };\r\n\r\n    \/* ================================================================\r\n     * Configuration (content + Calendly + UTM contract)\r\n     * UTM contract: utm_source=website, utm_medium=booking-link,\r\n     * utm_campaign=<comma-separated campaign slugs>. No utm_content.\r\n     * ================================================================ *\/\r\n    var CONFIG = deepFreeze({\r\n      utm: { utmSource: \"website\", utmMedium: \"booking-link\" },\r\n      calendlyUrl:\r\n        \"https:\/\/calendly.com\/d\/z53-ndy-myv\/monday-com-platform-discoveryn?embed_domain=www.carbonweb.co&embed_type=Inline&hide_event_type_details=1&hide_gdpr_banner=1&primary_color=009dad\",\r\n      services: {\r\n        training: {\r\n          badge: \"TRAINING\",\r\n          chipName: \"Training\",\r\n          campaignSlug: \"training\",\r\n          title: \"We need our team to use monday.com better\",\r\n          time: \"30 min\",\r\n          type: \"Video Call\",\r\n          desc: \"We train your people to use monday.com with confidence.\",\r\n          paneDesc: \"We train your people to use monday.com with confidence.\",\r\n          icon: '<path d=\"M4 6H20M4 6V18H20V6M4 6H2M20 6H22M9 22H15M12 18V22\" stroke=\"#00B0C2\" stroke-width=\"2\" stroke-linecap=\"round\"\/>',\r\n          bullets: [\r\n            \"Getting your team trained on monday.com from scratch\",\r\n            \"Building internal champions to own and manage the platform day to day\",\r\n            \"Training users after an implementation or build was completed\",\r\n            \"Designing a custom training program for a specific team or workflow\",\r\n            \"Ongoing adoption support, office hours, and reinforcement over time\",\r\n          ],\r\n        },\r\n        workflow: {\r\n          badge: \"WORKFLOW DEVELOPMENT\",\r\n          chipName: \"Workflow\",\r\n          campaignSlug: \"workflow-development\",\r\n          title: \"We need something built, automated, or connected\",\r\n          time: \"45 min\",\r\n          type: \"Video Call\",\r\n          desc: \"Custom workflows, app integrations, data migrations, AI-powered tools: we scope and build whatever your team needs inside monday.com.\",\r\n          paneDesc:\r\n            \"Tell us what you\\u2019re trying to build. We\\u2019ll assess the scope and show you how we\\u2019d approach it.\",\r\n          icon: '<path d=\"M8 6L2 12L8 18M16 6L22 12L16 18M14 4L10 20\" stroke=\"#00B0C2\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>',\r\n          bullets: [\r\n            \"CarbonToolbelt app implementation and setup\",\r\n            \"PandaDoc app setup for proposal generation in monday.com\",\r\n            \"DocuGen app setup for document generation from board data\",\r\n            \"Custom workflow builds and monday.com development\",\r\n            \"Data migration from another platform into monday.com\",\r\n            \"Make.com automations and API integrations\",\r\n            \"Hour-based development packages (30hr or 60hr)\",\r\n            \"Ongoing monthly development and workflow improvements\",\r\n          ],\r\n        },\r\n        consultation: {\r\n          badge: \"CONSULTATION\",\r\n          chipName: \"Consultation\",\r\n          campaignSlug: \"consultation\",\r\n          title: \"We need strategic direction, not just execution.\",\r\n          time: \"30 min\",\r\n          type: \"Video Call\",\r\n          desc: \"Our team of consultants helps you figure out the right path before you invest in building anything.\",\r\n          paneDesc:\r\n            \"Bring your situation. We\\u2019ll ask the right questions and help you figure out the clearest path forward.\",\r\n          icon: '<path d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3494 20 15M19 1H13M9 11C11.2091 11 13 9.20914 13 7C13 4.79086 11.2091 3 9 3C6.79086 3 5 4.79086 5 7C5 9.20914 6.79086 11 9 11ZM17 11C18.1046 11 19 10.1046 19 9C19 7.89543 18.1046 7 17 7C15.8954 7 15 7.89543 15 9C15 10.1046 15.8954 11 17 11Z\" stroke=\"#00B0C2\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>',\r\n          bullets: [\r\n            \"Figuring out the right path before committing to a build\",\r\n            \"Structured discovery to define requirements and scope a solution\",\r\n            \"Ongoing strategic guidance for platform decisions, roadmap, and governance\",\r\n          ],\r\n        },\r\n        custom: {\r\n          badge: \"CUSTOM WORK\",\r\n          chipName: \"Custom\",\r\n          campaignSlug: \"custom-work\",\r\n          title: \"We have our own specific needs\",\r\n          time: \"60 min\",\r\n          type: \"Video Call\",\r\n          desc: \"Custom Work is for teams with a specific requirement that goes beyond any standard package.\",\r\n          paneDesc:\r\n            \"Walk us through your requirements. We\\u2019ll tell you what\\u2019s possible and how we\\u2019d scope it from scratch.\",\r\n          icon: '<path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"#00B0C2\" stroke-width=\"2\"\/><path d=\"M12 6V12L16 14\" stroke=\"#00B0C2\" stroke-width=\"2\" stroke-linecap=\"round\"\/>',\r\n          bullets: [\r\n            \"AI-powered app development using monday Vibe or similar tools\",\r\n            \"Custom monday.com agent development\",\r\n            \"Bespoke builds that don\\u2019t fit a standard package\",\r\n            \"Complex or cross-functional workflows scoped from scratch\",\r\n          ],\r\n        },\r\n      },\r\n    });\r\n\r\n    \/**\r\n     * Recursively freeze an object so config can't be mutated at runtime.\r\n     * @param {Object} obj\r\n     * @returns {Object} the same object, deep-frozen\r\n     *\/\r\n    function deepFreeze(obj) {\r\n      Object.keys(obj).forEach(function (key) {\r\n        var value = obj[key];\r\n        if (value && typeof value === \"object\" && !Object.isFrozen(value)) {\r\n          deepFreeze(value);\r\n        }\r\n      });\r\n      return Object.freeze(obj);\r\n    }\r\n\r\n    \/* ================================================================\r\n     * Util \u2014 pure helpers\r\n     * ================================================================ *\/\r\n    var Util = {\r\n      \/**\r\n       * Escape a string for safe interpolation into HTML.\r\n       * All human-readable CONFIG text passes through this; only the\r\n       * trusted, hand-authored SVG `icon` strings bypass it.\r\n       * @param {*} value\r\n       * @returns {string}\r\n       *\/\r\n      escapeHtml: function (value) {\r\n        return String(value == null ? \"\" : value)\r\n          .replace(\/&\/g, \"&amp;\")\r\n          .replace(\/<\/g, \"&lt;\")\r\n          .replace(\/>\/g, \"&gt;\")\r\n          .replace(\/\"\/g, \"&quot;\")\r\n          .replace(\/'\/g, \"&#39;\");\r\n      },\r\n\r\n      \/**\r\n       * @returns {boolean} true when the user prefers reduced motion\r\n       *\/\r\n      prefersReducedMotion: function () {\r\n        return !!(\r\n          window.matchMedia &&\r\n          window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\r\n        );\r\n      },\r\n\r\n      \/**\r\n       * Append UTM parameters to a Calendly URL using the URL API so\r\n       * encoding is always correct regardless of slug content.\r\n       * @param {string} baseUrl - Calendly scheduling URL (may already have a query string)\r\n       * @param {string} campaignValue - comma-separated campaign slugs\r\n       * @returns {string}\r\n       *\/\r\n      buildCalendlyUrl: function (baseUrl, campaignValue) {\r\n        try {\r\n          var url = new URL(baseUrl);\r\n          url.searchParams.set(\"utm_source\", CONFIG.utm.utmSource);\r\n          url.searchParams.set(\"utm_medium\", CONFIG.utm.utmMedium);\r\n          url.searchParams.set(\"utm_campaign\", campaignValue || \"\");\r\n          return url.toString();\r\n        } catch (err) {\r\n          \/\/ URL API unavailable or malformed base URL: fall back to\r\n          \/\/ manual (still correctly encoded) concatenation.\r\n          var sep = baseUrl.indexOf(\"?\") === -1 ? \"?\" : \"&\";\r\n          return (\r\n            baseUrl +\r\n            sep +\r\n            \"utm_source=\" +\r\n            encodeURIComponent(CONFIG.utm.utmSource) +\r\n            \"&utm_medium=\" +\r\n            encodeURIComponent(CONFIG.utm.utmMedium) +\r\n            \"&utm_campaign=\" +\r\n            encodeURIComponent(campaignValue || \"\")\r\n          );\r\n        }\r\n      },\r\n\r\n      \/**\r\n       * De-duplicate an array preserving first-seen order.\r\n       * @param {string[]} arr\r\n       * @returns {string[]}\r\n       *\/\r\n      unique: function (arr) {\r\n        var seen = Object.create(null);\r\n        return arr.filter(function (item) {\r\n          if (seen[item]) return false;\r\n          seen[item] = true;\r\n          return true;\r\n        });\r\n      },\r\n    };\r\n\r\n    \/* ================================================================\r\n     * SVG \u2014 small trusted icon factory (static markup only)\r\n     * ================================================================ *\/\r\n    var SVG = {\r\n      wrap: function (paths, opts) {\r\n        opts = opts || {};\r\n        var w = opts.w || 24;\r\n        var h = opts.h || 24;\r\n        var stroke = opts.noStroke\r\n          ? \"\"\r\n          : ' stroke=\"' +\r\n            (opts.stroke || \"#686A86\") +\r\n            '\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"';\r\n        return (\r\n          '<svg aria-hidden=\"true\" width=\"' +\r\n          w +\r\n          '\" height=\"' +\r\n          h +\r\n          '\" viewBox=\"0 0 ' +\r\n          w +\r\n          \" \" +\r\n          h +\r\n          '\" fill=\"none\"' +\r\n          stroke +\r\n          \">\" +\r\n          paths +\r\n          \"<\/svg>\"\r\n        );\r\n      },\r\n      clock: function () {\r\n        return SVG.wrap(\r\n          '<circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/>',\r\n        );\r\n      },\r\n      video: function () {\r\n        return SVG.wrap(\r\n          '<path d=\"M23 7l-7 5 7 5V7z\"\/><rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\"\/>',\r\n        );\r\n      },\r\n      chevronDown: function () {\r\n        return SVG.wrap(\r\n          '<path class=\"sbw-accordion-chevron-path\" d=\"M6 9L12 15L18 9\" stroke=\"#000000\"\/>',\r\n          { noStroke: true },\r\n        ).replace(\"<svg \", '<svg class=\"sbw-accordion-chevron\" ');\r\n      },\r\n      checkmark: function () {\r\n        return '<svg width=\"10\" height=\"8\" viewBox=\"0 0 10 8\" fill=\"none\" aria-hidden=\"true\"><path d=\"M1 4L3.5 6.5L9 1\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\r\n      },\r\n      serviceIcon: function (paths) {\r\n        return (\r\n          '<svg class=\"sbw-card__label-icon\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">' +\r\n          paths +\r\n          \"<\/svg>\"\r\n        );\r\n      },\r\n    };\r\n\r\n    \/* ================================================================\r\n     * Templates \u2014 HTML string builders (all text escaped)\r\n     * ================================================================ *\/\r\n    var Templates = {\r\n      bullet: function (text) {\r\n        return (\r\n          '<li class=\"sbw-bullet\"><span class=\"sbw-bullet__icon\" aria-hidden=\"true\">' +\r\n          SVG.checkmark() +\r\n          '<\/span><span class=\"sbw-bullet__text\">' +\r\n          Util.escapeHtml(text) +\r\n          \"<\/span><\/li>\"\r\n        );\r\n      },\r\n      bulletList: function (items) {\r\n        return (\r\n          '<ul class=\"sbw-bullets\">' +\r\n          items.map(Templates.bullet).join(\"\") +\r\n          \"<\/ul>\"\r\n        );\r\n      },\r\n      badge: function (label) {\r\n        return (\r\n          '<div class=\"sbw-badge\"><span class=\"sbw-badge__dot\" aria-hidden=\"true\"><\/span><span class=\"sbw-badge__text\">' +\r\n          Util.escapeHtml(label) +\r\n          \"<\/span><\/div>\"\r\n        );\r\n      },\r\n      metaChip: function (icon, srLabel, value) {\r\n        return (\r\n          '<div class=\"sbw-meta-chip\">' +\r\n          icon +\r\n          '<span><span class=\"sr-only\">' +\r\n          Util.escapeHtml(srLabel) +\r\n          \":<\/span>\" +\r\n          Util.escapeHtml(value) +\r\n          \"<\/span><\/div>\"\r\n        );\r\n      },\r\n      metaRow: function (service) {\r\n        return (\r\n          '<div class=\"sbw-meta\" aria-label=\"Session Details\">' +\r\n          Templates.metaChip(SVG.clock(), \"Duration\", service.time) +\r\n          Templates.metaChip(SVG.video(), \"Format\", service.type) +\r\n          \"<\/div>\"\r\n        );\r\n      },\r\n      detailsPane: function (innerHTML) {\r\n        return '<article class=\"sbw-details-pane\">' + innerHTML + \"<\/article>\";\r\n      },\r\n      serviceCard: function (id, service) {\r\n        return (\r\n          '<button type=\"button\" class=\"sbw-card\" data-id=\"' +\r\n          Util.escapeHtml(id) +\r\n          '\" role=\"checkbox\" aria-checked=\"false\">' +\r\n          '<div class=\"sbw-card__header\"><div class=\"sbw-card__label\">' +\r\n          SVG.serviceIcon(service.icon) +\r\n          '<span class=\"sbw-card__label-text\">' +\r\n          Util.escapeHtml(service.badge) +\r\n          '<\/span><\/div><div class=\"sbw-card__checkbox\" aria-hidden=\"true\"><\/div><\/div>' +\r\n          '<div class=\"sbw-card__body\"><h3 class=\"sbw-card__title\">' +\r\n          Util.escapeHtml(service.title) +\r\n          '<\/h3><p class=\"sbw-card__desc\">' +\r\n          Util.escapeHtml(service.desc) +\r\n          \"<\/p><\/div>\" +\r\n          \"<\/button>\"\r\n        );\r\n      },\r\n      singleDetails: function (service) {\r\n        var panelDesc = service.paneDesc || service.desc;\r\n        return Templates.detailsPane(\r\n          Templates.badge(service.badge) +\r\n            '<h3 class=\"sbw-pane-title\">' +\r\n            Util.escapeHtml(service.title) +\r\n            \"<\/h3>\" +\r\n            Templates.metaRow(service) +\r\n            '<p class=\"sbw-pane-desc\">' +\r\n            Util.escapeHtml(panelDesc) +\r\n            \"<\/p>\" +\r\n            '<div><h4 class=\"sbw-bullets-title\">Possible discussion areas include:<\/h4>' +\r\n            Templates.bulletList(service.bullets) +\r\n            \"<\/div>\",\r\n        );\r\n      },\r\n      accordionItem: function (id, service) {\r\n        var safeId = Util.escapeHtml(id);\r\n        var panelDesc = service.paneDesc || service.desc;\r\n        return (\r\n          '<div class=\"sbw-accordion-item\">' +\r\n          '<button type=\"button\" class=\"sbw-accordion-trigger\" aria-expanded=\"false\" aria-controls=\"sbw-panel-' +\r\n          safeId +\r\n          '\" id=\"sbw-acc-' +\r\n          safeId +\r\n          '\">' +\r\n          Templates.badge(service.badge) +\r\n          SVG.chevronDown() +\r\n          \"<\/button>\" +\r\n          '<div id=\"sbw-panel-' +\r\n          safeId +\r\n          '\" class=\"sbw-accordion-panel\" role=\"region\" aria-labelledby=\"sbw-acc-' +\r\n          safeId +\r\n          '\"><p class=\"sbw-pane-desc\">' +\r\n          Util.escapeHtml(panelDesc) +\r\n          \"<\/p>\" +\r\n          Templates.bulletList(service.bullets) +\r\n          \"<\/div><\/div>\"\r\n        );\r\n      },\r\n      multiDetails: function (selectedIds, primary) {\r\n        var panelDesc = primary.paneDesc || primary.desc;\r\n        var accordionItems = selectedIds\r\n          .map(function (id) {\r\n            return Templates.accordionItem(id, CONFIG.services[id]);\r\n          })\r\n          .join(\"\");\r\n        return Templates.detailsPane(\r\n          '<h3 class=\"sbw-pane-title\">' +\r\n            Util.escapeHtml(primary.title) +\r\n            \"<\/h3>\" +\r\n            Templates.metaRow(primary) +\r\n            '<p class=\"sbw-pane-desc\">' +\r\n            Util.escapeHtml(panelDesc) +\r\n            \"<\/p>\" +\r\n            '<div><h4 class=\"sbw-bullets-title\">Included discussion areas:<\/h4><div class=\"sbw-accordion\">' +\r\n            accordionItems +\r\n            \"<\/div><\/div>\",\r\n        );\r\n      },\r\n    };\r\n\r\n    \/* ================================================================\r\n     * Analytics \u2014 GA4 event facade (safe no-op when gtag is absent)\r\n     * ================================================================ *\/\r\n    var Analytics = {\r\n      _warned: false,\r\n      _push: function (eventName, parameters) {\r\n        if (typeof window.gtag === \"function\") {\r\n          window.gtag(\"event\", eventName, parameters);\r\n        } else if (!Analytics._warned) {\r\n          Analytics._warned = true;\r\n          if (window.console && console.warn) {\r\n            console.warn(\r\n              \"[sbw] GA4 gtag is not loaded; analytics events will be dropped.\",\r\n            );\r\n          }\r\n        }\r\n      },\r\n      serviceSelected: function (id) {\r\n        Analytics._push(\"service_selected\", { service_id: id });\r\n      },\r\n      serviceUnselected: function (id) {\r\n        Analytics._push(\"service_unselected\", { service_id: id });\r\n      },\r\n      proceedToCalendar: function (ids) {\r\n        Analytics._push(\"proceed_to_calendar\", {\r\n          selected_services: ids.join(CONSTANTS.CAMPAIGN_SEPARATOR),\r\n        });\r\n      },\r\n      timeSelected: function () {\r\n        Analytics._push(\"calendly_time_selected\", {});\r\n      },\r\n      bookingCompleted: function (eventUri, inviteeUri) {\r\n        Analytics._push(\"calendly_booking_completed\", {\r\n          calendly_event_uri: eventUri || null,\r\n          calendly_invitee_uri: inviteeUri || null,\r\n        });\r\n      },\r\n    };\r\n\r\n    \/* ================================================================\r\n     * CalendlyManager \u2014 embed lifecycle + height synchronisation\r\n     *\r\n     * Height strategy:\r\n     * 1. Poll as a fallback while the iframe boots.\r\n     * 2. As soon as the first authoritative `calendly.page_height`\r\n     * postMessage arrives, stop polling for good \u2014 messages own\r\n     * the height from then on.\r\n     * ================================================================ *\/\r\n    var CalendlyManager = {\r\n      _container: null,\r\n      _column: null,\r\n      _detailsPanel: null,\r\n      _retryTimer: null,\r\n      _pollTimer: null,\r\n      _retryCount: 0,\r\n      _messageDriven: false,\r\n\r\n      \/**\r\n       * @param {HTMLElement} container - embed mount point\r\n       * @param {HTMLElement} column - calendar column whose height we manage\r\n       * @param {HTMLElement} detailsPanel - details panel used as a height floor\r\n       *\/\r\n      init: function (container, column, detailsPanel) {\r\n        CalendlyManager._container = container || null;\r\n        CalendlyManager._column = column || null;\r\n        CalendlyManager._detailsPanel = detailsPanel || null;\r\n      },\r\n\r\n      \/**\r\n       * (Re)create the inline embed with UTM parameters applied.\r\n       * @param {string} url - base Calendly URL from CONFIG\r\n       * @param {string} campaignValue - comma-separated campaign slugs\r\n       *\/\r\n      load: function (url, campaignValue) {\r\n        CalendlyManager.destroy();\r\n        CalendlyManager._retryCount = 0;\r\n        CalendlyManager._messageDriven = false;\r\n        CalendlyManager._attempt(url, campaignValue);\r\n      },\r\n\r\n      _attempt: function (url, campaignValue) {\r\n        if (!CalendlyManager._container) return;\r\n        if (window.Calendly && window.Calendly.initInlineWidget) {\r\n          try {\r\n            window.Calendly.initInlineWidget({\r\n              url: Util.buildCalendlyUrl(url, campaignValue),\r\n              parentElement: CalendlyManager._container,\r\n            });\r\n            CalendlyManager._startPoll();\r\n          } catch (err) {\r\n            if (window.console && console.error) {\r\n              console.error(\"[sbw] Calendly embed failed to initialise:\", err);\r\n            }\r\n          }\r\n        } else if (\r\n          CalendlyManager._retryCount < CONSTANTS.CALENDLY_MAX_RETRIES\r\n        ) {\r\n          CalendlyManager._retryCount++;\r\n          CalendlyManager._retryTimer = setTimeout(function () {\r\n            CalendlyManager._attempt(url, campaignValue);\r\n          }, CONSTANTS.CALENDLY_RETRY_DELAY_MS);\r\n        } else if (window.console && console.error) {\r\n          console.error(\r\n            \"[sbw] Calendly widget.js did not load within the retry window.\",\r\n          );\r\n        }\r\n      },\r\n\r\n      _startPoll: function () {\r\n        clearInterval(CalendlyManager._pollTimer);\r\n        CalendlyManager._pollTimer = setInterval(function () {\r\n          if (CalendlyManager._messageDriven) {\r\n            clearInterval(CalendlyManager._pollTimer);\r\n            return;\r\n          }\r\n          if (!CalendlyManager._container || !CalendlyManager._column) return;\r\n          var iframe = CalendlyManager._container.querySelector(\"iframe\");\r\n          if (!iframe) return;\r\n          CalendlyManager._applyHeight(iframe.offsetHeight);\r\n        }, CONSTANTS.HEIGHT_POLL_INTERVAL_MS);\r\n      },\r\n\r\n      \/**\r\n       * Authoritative height update from a calendly.page_height message.\r\n       * The first call permanently retires the polling fallback.\r\n       * @param {number} px\r\n       *\/\r\n      setHeight: function (px) {\r\n        if (!CalendlyManager._messageDriven) {\r\n          CalendlyManager._messageDriven = true;\r\n          clearInterval(CalendlyManager._pollTimer);\r\n        }\r\n        CalendlyManager._applyHeight(px);\r\n      },\r\n\r\n      _applyHeight: function (px) {\r\n        if (!CalendlyManager._column) return;\r\n        var panelH = CalendlyManager._detailsPanel\r\n          ? CalendlyManager._detailsPanel.offsetHeight\r\n          : CONSTANTS.HEIGHT_FLOOR_PX;\r\n        var h = Math.max(px || 0, panelH, CONSTANTS.HEIGHT_FLOOR_PX);\r\n        CalendlyManager._column.style.height = h + \"px\";\r\n        CalendlyManager._column.style.minHeight = h + \"px\";\r\n      },\r\n\r\n      \/** Tear down the embed and release every timer and inline style. *\/\r\n      destroy: function () {\r\n        clearTimeout(CalendlyManager._retryTimer);\r\n        clearInterval(CalendlyManager._pollTimer);\r\n        CalendlyManager._retryTimer = null;\r\n        CalendlyManager._pollTimer = null;\r\n        if (CalendlyManager._container) {\r\n          CalendlyManager._container.innerHTML = \"\";\r\n        }\r\n        if (CalendlyManager._column) {\r\n          CalendlyManager._column.style.height = \"\";\r\n          CalendlyManager._column.style.minHeight = \"\";\r\n        }\r\n      },\r\n    };\r\n\r\n    \/* ================================================================\r\n     * Accordion \u2014 one-open-at-a-time behaviour via event delegation\r\n     * ================================================================ *\/\r\n    var Accordion = {\r\n      \/**\r\n       * Bind a delegated click handler on the (re-rendered) panel root.\r\n       * Delegation means re-renders never leave stale listeners behind.\r\n       * @param {HTMLElement} root\r\n       *\/\r\n      bind: function (root) {\r\n        if (!root || root._sbwAccordionBound) {\r\n          return;\r\n        }\r\n        root._sbwAccordionBound = true;\r\n        root.addEventListener(\"click\", function (e) {\r\n          var trigger = e.target.closest(\".sbw-accordion-trigger\");\r\n          if (!trigger || !root.contains(trigger)) return;\r\n          var isOpen = trigger.getAttribute(\"aria-expanded\") === \"true\";\r\n          var triggers = root.querySelectorAll(\".sbw-accordion-trigger\");\r\n          Array.prototype.forEach.call(triggers, function (t) {\r\n            t.setAttribute(\"aria-expanded\", \"false\");\r\n          });\r\n          if (!isOpen) trigger.setAttribute(\"aria-expanded\", \"true\");\r\n        });\r\n      },\r\n    };\r\n\r\n    \/* ================================================================\r\n     * Widget \u2014 orchestration, state, and view transitions\r\n     * ================================================================ *\/\r\n    var Widget = {\r\n      \/** @type {string[]} selected service keys in click order *\/\r\n      _selected: [],\r\n      _el: {},\r\n\r\n      init: function () {\r\n        var root = document.getElementById(CONSTANTS.ROOT_ID);\r\n        if (!root) return;\r\n\r\n        Widget._el = {\r\n          root: root,\r\n          selectionView: document.getElementById(\"sbw-selection\"),\r\n          schedulerView: document.getElementById(\"sbw-scheduler\"),\r\n          cardGrid: document.getElementById(\"sbw-card-grid\"),\r\n          proceedBtn: document.getElementById(\"sbw-proceed-btn\"),\r\n          backBtn: document.getElementById(\"sbw-back-btn\"),\r\n          summaryChip: document.getElementById(\"sbw-summary-chip\"),\r\n          detailsPanel: document.getElementById(\"sbw-details-panel\"),\r\n          calendlyEmbed: document.getElementById(\"sbw-calendly-embed\"),\r\n          calendlyColumn: root.querySelector(\r\n            \"#sbw-scheduler .sbw-col-calendar\",\r\n          ),\r\n        };\r\n\r\n        \/\/ Every element below is required; bail cleanly (widget stays\r\n        \/\/ hidden at opacity 0 is NOT acceptable, so reveal root anyway)\r\n        \/\/ rather than throwing mid-init on a partially edited page.\r\n        var required = [\r\n          \"selectionView\",\r\n          \"schedulerView\",\r\n          \"cardGrid\",\r\n          \"proceedBtn\",\r\n          \"backBtn\",\r\n          \"summaryChip\",\r\n          \"detailsPanel\",\r\n          \"calendlyEmbed\",\r\n          \"calendlyColumn\",\r\n        ];\r\n        var missing = required.filter(function (key) {\r\n          return !Widget._el[key];\r\n        });\r\n        if (missing.length) {\r\n          if (window.console && console.error) {\r\n            console.error(\r\n              \"[sbw] Missing required elements, widget disabled:\",\r\n              missing.join(\", \"),\r\n            );\r\n          }\r\n          root.classList.add(\"sbw-ready\");\r\n          return;\r\n        }\r\n\r\n        CalendlyManager.init(\r\n          Widget._el.calendlyEmbed,\r\n          Widget._el.calendlyColumn,\r\n          Widget._el.detailsPanel,\r\n        );\r\n\r\n        Widget._renderCards();\r\n        Widget._bindCards();\r\n        Widget._bindProceed();\r\n        Widget._bindBack();\r\n        Widget._bindEnterSubmit();\r\n        Widget._bindCalendlyMessages();\r\n        Widget._bindAnimationCleanup();\r\n        Widget._initFromParams();\r\n\r\n        requestAnimationFrame(function () {\r\n          root.classList.add(\"sbw-ready\");\r\n        });\r\n      },\r\n\r\n      \/* ---------- rendering ---------- *\/\r\n\r\n      _renderCards: function () {\r\n        Widget._el.cardGrid.innerHTML = Object.keys(CONFIG.services)\r\n          .map(function (id) {\r\n            return Templates.serviceCard(id, CONFIG.services[id]);\r\n          })\r\n          .join(\"\");\r\n      },\r\n\r\n      _renderDetails: function () {\r\n        var primary = CONFIG.services[Widget._selected[0]];\r\n        Widget._el.detailsPanel.innerHTML =\r\n          Widget._selected.length === 1\r\n            ? Templates.singleDetails(primary)\r\n            : Templates.multiDetails(Widget._selected, primary);\r\n        if (Widget._selected.length > 1) {\r\n          Accordion.bind(Widget._el.detailsPanel);\r\n        }\r\n      },\r\n\r\n      \/* ---------- selection state ---------- *\/\r\n\r\n      _setCardChecked: function (id, checked) {\r\n        var card = Widget._el.cardGrid.querySelector(\r\n          '.sbw-card[data-id=\"' + id + '\"]',\r\n        );\r\n        if (card) card.setAttribute(\"aria-checked\", checked ? \"true\" : \"false\");\r\n      },\r\n\r\n      _syncProceedBtn: function () {\r\n        var empty = Widget._selected.length === 0;\r\n        Widget._el.proceedBtn.disabled = empty;\r\n        Widget._el.proceedBtn.setAttribute(\r\n          \"aria-disabled\",\r\n          empty ? \"true\" : \"false\",\r\n        );\r\n      },\r\n\r\n      \/* ---------- event bindings ---------- *\/\r\n\r\n      _bindCards: function () {\r\n        Widget._el.cardGrid.addEventListener(\"click\", function (e) {\r\n          var card = e.target.closest(\".sbw-card\");\r\n          if (!card || !Widget._el.cardGrid.contains(card)) return;\r\n          var id = card.getAttribute(\"data-id\");\r\n          if (!CONFIG.services[id]) return;\r\n          var isChecked = card.getAttribute(\"aria-checked\") === \"true\";\r\n          if (isChecked) {\r\n            Widget._selected = Widget._selected.filter(function (s) {\r\n              return s !== id;\r\n            });\r\n            Widget._setCardChecked(id, false);\r\n            Analytics.serviceUnselected(id);\r\n          } else {\r\n            Widget._selected.push(id);\r\n            Widget._setCardChecked(id, true);\r\n            Analytics.serviceSelected(id);\r\n          }\r\n          Widget._syncProceedBtn();\r\n        });\r\n      },\r\n\r\n      _bindProceed: function () {\r\n        Widget._el.proceedBtn.addEventListener(\"click\", function () {\r\n          Widget._proceed();\r\n        });\r\n      },\r\n\r\n      _bindBack: function () {\r\n        Widget._el.backBtn.addEventListener(\"click\", function () {\r\n          CalendlyManager.destroy();\r\n          Widget._showView(Widget._el.selectionView);\r\n          Widget._focusSelectionView();\r\n        });\r\n      },\r\n\r\n      \/**\r\n       * Enter should always mean \"go to next step\", never \"toggle this\r\n       * card\". Capture it before the browser's native button click\r\n       * (which would otherwise re-toggle a focused card) fires, then\r\n       * run Proceed ourselves if a selection exists.\r\n       *\/\r\n      _bindEnterSubmit: function () {\r\n        Widget._el.selectionView.addEventListener(\r\n          \"keydown\",\r\n          function (e) {\r\n            if (e.key !== \"Enter\") return;\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            if (Widget._el.proceedBtn.disabled) return;\r\n            Widget._proceed();\r\n          },\r\n          true,\r\n        );\r\n      },\r\n\r\n      _bindCalendlyMessages: function () {\r\n        var handlers = {\r\n          \"calendly.page_height\": function (data) {\r\n            var h =\r\n              data.payload && data.payload.height\r\n                ? parseInt(data.payload.height, 10)\r\n                : 0;\r\n            if (h > 0) CalendlyManager.setHeight(h);\r\n          },\r\n          \"calendly.event_scheduled\": function (data) {\r\n            var p = data.payload || {};\r\n            Analytics.bookingCompleted(\r\n              p.event ? p.event.uri : null,\r\n              p.invitee ? p.invitee.uri : null,\r\n            );\r\n          },\r\n          \"calendly.date_and_time_selected\": function () {\r\n            Analytics.timeSelected();\r\n          },\r\n        };\r\n        window.addEventListener(\"message\", function (e) {\r\n          if (e.origin !== CONSTANTS.CALENDLY_ORIGIN) return;\r\n          var data = e.data;\r\n          if (!data || typeof data.event !== \"string\") return;\r\n          var handler = handlers[data.event];\r\n          if (handler) handler(data);\r\n        });\r\n      },\r\n\r\n      \/** Remove the entering class once its animation finishes so a\r\n       * view can replay the animation the next time it's shown. *\/\r\n      _bindAnimationCleanup: function () {\r\n        Widget._el.root.addEventListener(\"animationend\", function (e) {\r\n          var view = e.target.closest ? e.target.closest(\".sbw-view\") : null;\r\n          if (view && e.target === view) {\r\n            view.classList.remove(\"sbw-view--entering\");\r\n          }\r\n        });\r\n      },\r\n\r\n      \/* ---------- flows ---------- *\/\r\n\r\n      \/**\r\n       * Single entry point for advancing to the scheduler. Used by the\r\n       * Proceed button, Enter key, and the ?service= deep-link path so\r\n       * behaviour can never drift between them.\r\n       *\/\r\n      _proceed: function () {\r\n        if (Widget._selected.length === 0) return;\r\n\r\n        Analytics.proceedToCalendar(Widget._selected);\r\n\r\n        Widget._el.summaryChip.textContent = Widget._selected\r\n          .map(function (id) {\r\n            return CONFIG.services[id].chipName;\r\n          })\r\n          .join(CONSTANTS.SUMMARY_SEPARATOR);\r\n\r\n        Widget._renderDetails();\r\n\r\n        var campaignValue = Widget._selected\r\n          .map(function (id) {\r\n            return CONFIG.services[id].campaignSlug;\r\n          })\r\n          .join(CONSTANTS.CAMPAIGN_SEPARATOR);\r\n\r\n        CalendlyManager.load(CONFIG.calendlyUrl, campaignValue);\r\n        Widget._showView(Widget._el.schedulerView);\r\n        Widget._scrollToScheduler();\r\n      },\r\n\r\n      \/**\r\n       * Read ?service=<key> params (repeatable), validate against the\r\n       * service catalogue, pre-check the cards, and auto-advance.\r\n       *\/\r\n      _initFromParams: function () {\r\n        var keys;\r\n        try {\r\n          var params = new URLSearchParams(window.location.search);\r\n          keys = params.getAll(CONSTANTS.SERVICE_QUERY_PARAM);\r\n        } catch (err) {\r\n          return; \/\/ no URLSearchParams support: deep links degrade gracefully\r\n        }\r\n        keys = Util.unique(\r\n          keys.filter(function (k) {\r\n            return !!CONFIG.services[k];\r\n          }),\r\n        );\r\n        if (keys.length === 0) return;\r\n\r\n        Widget._selected = keys;\r\n        keys.forEach(function (key) {\r\n          Widget._setCardChecked(key, true);\r\n        });\r\n        Widget._syncProceedBtn();\r\n        Widget._proceed();\r\n      },\r\n\r\n      \/* ---------- view + focus management ---------- *\/\r\n\r\n      _showView: function (viewEl) {\r\n        var views = Widget._el.root.querySelectorAll(\".sbw-view\");\r\n        Array.prototype.forEach.call(views, function (v) {\r\n          v.classList.remove(\"sbw-view--active\", \"sbw-view--entering\");\r\n        });\r\n        viewEl.classList.add(\"sbw-view--active\", \"sbw-view--entering\");\r\n      },\r\n\r\n      \/**\r\n       * Bring the scheduler into view after the step change. Waits one\r\n       * frame so the section is display:block before measuring, and\r\n       * honours prefers-reduced-motion.\r\n       *\/\r\n      _scrollToScheduler: function () {\r\n        var target = Widget._el.schedulerView;\r\n\r\n        requestAnimationFrame(function () {\r\n          if (typeof target.scrollIntoView !== \"function\") return;\r\n\r\n          target.style.scrollMarginTop = \"32px\";\r\n\r\n          try {\r\n            target.scrollIntoView({\r\n              behavior: Util.prefersReducedMotion() ? \"auto\" : \"smooth\",\r\n              block: \"start\",\r\n            });\r\n          } catch (err) {\r\n            target.scrollIntoView();\r\n          }\r\n        });\r\n      },\r\n\r\n      \/**\r\n       * Return focus into the selection step after Back. Prefers the\r\n       * first selected card, falls back to the first card. (Replaces a\r\n       * previous handler that focused a non-existent #sbw-heading and\r\n       * threw a TypeError on every Back click.)\r\n       *\/\r\n      _focusSelectionView: function () {\r\n        var focusTarget =\r\n          Widget._el.cardGrid.querySelector('.sbw-card[aria-checked=\"true\"]') ||\r\n          Widget._el.cardGrid.querySelector(\".sbw-card\");\r\n        if (focusTarget && typeof focusTarget.focus === \"function\") {\r\n          try {\r\n            focusTarget.focus({ preventScroll: false });\r\n          } catch (err) {\r\n            focusTarget.focus();\r\n          }\r\n        }\r\n      },\r\n    };\r\n\r\n    \/* ================================================================\r\n     * Bootstrap\r\n     * ================================================================ *\/\r\n    if (document.readyState === \"loading\") {\r\n      document.addEventListener(\"DOMContentLoaded\", Widget.init);\r\n    } else {\r\n      Widget.init();\r\n    }\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u00bfEn qu\u00e9 necesitas ayuda? Elige las \u00e1reas en las que te gustar\u00eda recibir apoyo para que nuestro equipo pueda orientarte mejor.<\/p>","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-23814","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Monday.com Product Demo by Certified Experts - CarbonWeb<\/title>\n<meta name=\"description\" content=\"Discover how monday.com can streamline your workflow. Schedule your free product demo with certified experts today.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.carbonweb.co\/es\/demo\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Demo\" \/>\n<meta property=\"og:description\" content=\"Discover how monday.com can streamline your workflow. Schedule your free product demo with certified experts today.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.carbonweb.co\/es\/demo\/\" \/>\n<meta property=\"og:site_name\" content=\"CarbonWeb\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-14T14:27:29+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/demo\\\/\",\"url\":\"https:\\\/\\\/www.carbonweb.co\\\/demo\\\/\",\"name\":\"Monday.com Product Demo by Certified Experts - CarbonWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/#website\"},\"datePublished\":\"2026-06-01T20:21:20+00:00\",\"dateModified\":\"2026-07-14T14:27:29+00:00\",\"description\":\"Discover how monday.com can streamline your workflow. Schedule your free product demo with certified experts today.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/demo\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.carbonweb.co\\\/demo\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/demo\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.carbonweb.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Demo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/#website\",\"url\":\"https:\\\/\\\/www.carbonweb.co\\\/\",\"name\":\"CarbonWeb\",\"description\":\"Building Blocks for Businesses\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.carbonweb.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/#organization\",\"name\":\"CarbonWeb\",\"url\":\"https:\\\/\\\/www.carbonweb.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.carbonweb.co\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Carbon-logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.carbonweb.co\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Carbon-logo.svg\",\"width\":212,\"height\":244,\"caption\":\"CarbonWeb\"},\"image\":{\"@id\":\"https:\\\/\\\/www.carbonweb.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/carbon_web\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/carbonwebprint\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Demostraci\u00f3n del producto Monday.com a cargo de expertos certificados - CarbonWeb","description":"Descubre c\u00f3mo monday.com puede optimizar tu flujo de trabajo. Reserva hoy mismo tu demostraci\u00f3n gratuita del producto con expertos certificados.","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:\/\/www.carbonweb.co\/es\/demo\/","og_locale":"es_ES","og_type":"article","og_title":"Demo","og_description":"Discover how monday.com can streamline your workflow. Schedule your free product demo with certified experts today.","og_url":"https:\/\/www.carbonweb.co\/es\/demo\/","og_site_name":"CarbonWeb","article_modified_time":"2026-07-14T14:27:29+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.carbonweb.co\/demo\/","url":"https:\/\/www.carbonweb.co\/demo\/","name":"Demostraci\u00f3n del producto Monday.com a cargo de expertos certificados - CarbonWeb","isPartOf":{"@id":"https:\/\/www.carbonweb.co\/#website"},"datePublished":"2026-06-01T20:21:20+00:00","dateModified":"2026-07-14T14:27:29+00:00","description":"Descubre c\u00f3mo monday.com puede optimizar tu flujo de trabajo. Reserva hoy mismo tu demostraci\u00f3n gratuita del producto con expertos certificados.","breadcrumb":{"@id":"https:\/\/www.carbonweb.co\/demo\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.carbonweb.co\/demo\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.carbonweb.co\/demo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.carbonweb.co\/"},{"@type":"ListItem","position":2,"name":"Demo"}]},{"@type":"WebSite","@id":"https:\/\/www.carbonweb.co\/#website","url":"https:\/\/www.carbonweb.co\/","name":"CarbonWeb","description":"Pilares para Empresas","publisher":{"@id":"https:\/\/www.carbonweb.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.carbonweb.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.carbonweb.co\/#organization","name":"CarbonWeb","url":"https:\/\/www.carbonweb.co\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.carbonweb.co\/#\/schema\/logo\/image\/","url":"https:\/\/www.carbonweb.co\/wp-content\/uploads\/2022\/06\/Carbon-logo.svg","contentUrl":"https:\/\/www.carbonweb.co\/wp-content\/uploads\/2022\/06\/Carbon-logo.svg","width":212,"height":244,"caption":"CarbonWeb"},"image":{"@id":"https:\/\/www.carbonweb.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/carbon_web","https:\/\/www.linkedin.com\/company\/carbonwebprint"]}]}},"_links":{"self":[{"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/pages\/23814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/comments?post=23814"}],"version-history":[{"count":10,"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/pages\/23814\/revisions"}],"predecessor-version":[{"id":25547,"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/pages\/23814\/revisions\/25547"}],"wp:attachment":[{"href":"https:\/\/www.carbonweb.co\/es\/wp-json\/wp\/v2\/media?parent=23814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}