{"id":2503,"date":"2026-04-24T00:11:22","date_gmt":"2026-04-23T22:11:22","guid":{"rendered":"https:\/\/fractionista.com\/fractional-leaders\/"},"modified":"2026-06-23T17:50:08","modified_gmt":"2026-06-23T15:50:08","slug":"hire","status":"publish","type":"page","link":"https:\/\/fractionista.com\/de\/hire\/","title":{"rendered":"Fractional Leaders"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2503\" class=\"elementor elementor-2503 elementor-1486\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2a0f5492 e-con-full e-flex e-con e-parent\" data-id=\"2a0f5492\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;background_motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;background_motion_fx_blur_effect&quot;:&quot;yes&quot;,&quot;background_motion_fx_blur_direction&quot;:&quot;in-out&quot;,&quot;background_motion_fx_blur_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:4,&quot;sizes&quot;:[]},&quot;background_motion_fx_blur_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:38,&quot;end&quot;:54}},&quot;background_motion_fx_scale_effect&quot;:&quot;yes&quot;,&quot;background_motion_fx_scale_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;background_motion_fx_scale_direction&quot;:&quot;out-in&quot;,&quot;background_motion_fx_scale_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:20,&quot;end&quot;:80}},&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5414006c elementor-widget elementor-widget-heading\" data-id=\"5414006c\" data-element_type=\"widget\" data-e-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\">Senior Leaders. Fractional CxOs. Advisors.  \n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7cff0081 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"7cff0081\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Lerne die Menschen kennen, die Wachstum, Wandel und Wertsch\u00f6pfung in europ\u00e4ischen Unternehmen aktiv vorantreiben.<\/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<div class=\"elementor-element elementor-element-24151f60 e-flex e-con-boxed e-con e-parent\" data-id=\"24151f60\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d87c5da elementor-widget elementor-widget-html\" data-id=\"d87c5da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!--\r\n  Fractionista \u2014 Public CxOs Widget for WordPress\r\n  \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\r\n  Self-contained: paste this entire block into a WordPress \"Custom HTML\" block\r\n  (or Elementor HTML widget) on any page of fractionista.com.\r\n\r\n  No build step, no external dependencies. All CSS classes are prefixed `frx-`\r\n  and scoped under `#frx-cxos-widget` so they will not collide with the theme.\r\n\r\n  Data source: https:\/\/app.fractionista.com\/api\/public\/cxos\r\n  (CORS is whitelisted for fractionista.com and www.fractionista.com.)\r\n\r\n  Only CxOs who opted in via Settings \u2192 Visibility \u2192 \"List on fractionista.com\"\r\n  are returned. Last-name visibility follows the CxO's own consent:\r\n  abbreviate_last_name=true \u2192 only the initial; otherwise \u2192 full last name.\r\n\r\n  CTA target: https:\/\/app.fractionista.com\/auth\/login\r\n  Change FRX_CTA_URL below if you want cards to deep-link elsewhere.\r\n\r\n  Parametrization (set on the root <div> as data-* attributes):\r\n    data-show-headline        \"true\" | \"false\"  (default: false)\r\n    data-show-filter          \"true\" | \"false\"  (default: false)   \u2014 umbrella\r\n    data-show-role-filter     \"true\" | \"false\"  (default: true)\r\n    data-show-more-info       \"true\" | \"false\"  (default: true)\r\n    data-max-displayed        number 1\u201350       (default: 8)\r\n    data-role                 exact role label  (default: none)\r\n\r\n  The role filter renders as a row of single-select bubbles. The first\r\n  bubble is always \"All roles\" and is auto-selected on initial load;\r\n  the others are populated from the API's `available_roles`. Only one\r\n  role (or \"All roles\") can be active at a time. The previous\r\n  data-show-country-filter attribute is no longer honored \u2014 country\r\n  filtering was removed from the widget.\r\n\r\n  data-role: when set (e.g. data-role=\"Fractional CPO\"), the widget\r\n  pre-scopes results to that role and the bubble row is hidden\r\n  entirely (regardless of data-show-role-filter). Use on role-specific\r\n  marketing pages \u2014 fractionista.com\/hire\/cpo embeds with\r\n  data-role=\"Fractional CPO\". The value must match one of the CXO_ROLES\r\n  \/ OTHER_ROLES strings exactly; see src\/lib\/constants\/onboarding.ts.\r\n\r\n  Cards link to the public CxO profile (app.fractionista.com\/profile\/{slug})\r\n  when the profile has a slug, falling back to the sign-in URL when it\r\n  doesn't. Internal links from a role page into public profiles strengthen\r\n  the apex domain's link graph for SEO and let LLM crawlers discover the\r\n  expert pool.\r\n-->\r\n\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600&display=swap\" rel=\"stylesheet\">\r\n\r\n<div id=\"frx-cxos-widget\" data-api=\"https:\/\/app.fractionista.com\/api\/public\/cxos\" data-show-headline=\"false\" data-show-filter=\"true\" data-show-role-filter=\"true\" data-show-more-info=\"true\" data-max-displayed=\"24\" data-role=\"\">\r\n  <h2 class=\"frx-headline\">Executives werden geladen\u2026<\/h2>\r\n  <div class=\"frx-filters\">\r\n    <div class=\"frx-role-filter\">\r\n      <button type=\"button\" class=\"frx-filter-toggle\" aria-expanded=\"false\" aria-controls=\"frx-role-bubbles\">\r\n        <span class=\"frx-filter-label\">Rollen filtern<\/span>\r\n        <span class=\"frx-filter-chevron\" aria-hidden=\"true\"><\/span>\r\n      <\/button>\r\n      <div id=\"frx-role-bubbles\" class=\"frx-role-bubbles\" role=\"radiogroup\" aria-label=\"Filter by role\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <hr class=\"frx-divider\">\r\n  <div class=\"frx-status\" role=\"status\" aria-live=\"polite\"><\/div>\r\n  <div class=\"frx-grid\"><\/div>\r\n  <div class=\"frx-more-info\"><\/div>\r\n<\/div>\r\n\r\n<style>\r\n  #frx-cxos-widget {\r\n    --frx-navy-900: #0F2B3C;\r\n    --frx-navy-700: #1B4965;\r\n    --frx-navy-500: #2A6F97;\r\n    --frx-teal-400: #5FA8D3;\r\n    --frx-border: #E2E8F0;\r\n    --frx-muted: #64748B;\r\n    --frx-bg: #F8FAFC;\r\n    font-family: \"DM Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\r\n    color: var(--frx-navy-900);\r\n    width: 100%;\r\n    padding: 8px;\r\n  }\r\n  #frx-cxos-widget *, #frx-cxos-widget *::before, #frx-cxos-widget *::after { box-sizing: border-box; }\r\n\r\n  #frx-cxos-widget .frx-headline {\r\n    font-size: 22px;\r\n    font-weight: 600;\r\n    color: var(--frx-navy-900);\r\n    margin: 0 0 16px;\r\n    line-height: 1.3;\r\n    text-align: center !important;\r\n  }\r\n  #frx-cxos-widget .frx-headline:empty { display: none; }\r\n\r\n  #frx-cxos-widget .frx-filters {\r\n    display: flex;\r\n    justify-content: center;\r\n    margin-bottom: 20px;\r\n  }\r\n  #frx-cxos-widget .frx-role-filter {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    gap: 10px;\r\n    width: 100%;\r\n  }\r\n  \/* Section subtitle above the role bubbles. On desktop it's plain,\r\n     non-interactive text; on mobile (< 640px) it becomes a tappable\r\n     toggle that collapses\/expands the bubble row. Render as a button\r\n     in both states so accessibility tooling sees it consistently \u2014\r\n     the desktop styles just strip the button affordance. *\/\r\n  #frx-cxos-widget .frx-filter-toggle {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n    padding: 0;\r\n    font-family: inherit;\r\n    font-size: 11px;\r\n    font-weight: 600;\r\n    letter-spacing: 0.08em;\r\n    text-transform: uppercase;\r\n    color: var(--frx-muted);\r\n    background: transparent;\r\n    border: 0;\r\n    cursor: default;\r\n  }\r\n  #frx-cxos-widget .frx-filter-chevron {\r\n    display: none; \/* desktop hides the chevron \u2014 bubbles always visible *\/\r\n  }\r\n  \/* Role bubbles \u2014 single-select, radio-style. \"All roles\" is always\r\n     the first pill and the default active state. Selected pill fills\r\n     to navy, unselected pills are outlined. Wraps to multiple rows on\r\n     narrow viewports thanks to flex-wrap. *\/\r\n  #frx-cxos-widget .frx-role-bubbles {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    justify-content: center;\r\n    gap: 8px;\r\n  }\r\n  #frx-cxos-widget .frx-role-pill {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    padding: 7px 14px;\r\n    font-family: inherit;\r\n    font-size: 13px;\r\n    font-weight: 500;\r\n    line-height: 1.2;\r\n    color: var(--frx-navy-700);\r\n    background: #fff;\r\n    border: 1px solid var(--frx-border);\r\n    border-radius: 999px;\r\n    cursor: pointer;\r\n    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;\r\n  }\r\n  #frx-cxos-widget .frx-role-pill:hover {\r\n    border-color: var(--frx-navy-500);\r\n    color: var(--frx-navy-900);\r\n  }\r\n  #frx-cxos-widget .frx-role-pill.is-active {\r\n    background: var(--frx-navy-700);\r\n    border-color: var(--frx-navy-700);\r\n    color: #fff;\r\n  }\r\n  #frx-cxos-widget .frx-role-pill.is-active:hover {\r\n    background: var(--frx-navy-900);\r\n    border-color: var(--frx-navy-900);\r\n    color: #fff;\r\n  }\r\n  #frx-cxos-widget .frx-role-pill:focus-visible {\r\n    outline: none;\r\n    box-shadow: 0 0 0 3px rgba(42, 111, 151, 0.25);\r\n  }\r\n\r\n  #frx-cxos-widget .frx-divider {\r\n    border: none;\r\n    border-top: 1px solid var(--frx-border);\r\n    margin: 16px 0 20px;\r\n  }\r\n\r\n  #frx-cxos-widget .frx-status {\r\n    margin-bottom: 12px;\r\n    text-align: center;\r\n    font-size: 13px;\r\n    color: var(--frx-muted);\r\n    min-height: 18px;\r\n  }\r\n  #frx-cxos-widget .frx-status:empty { display: none; }\r\n\r\n  #frx-cxos-widget .frx-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\r\n    gap: 14px;\r\n  }\r\n\r\n  #frx-cxos-widget .frx-card {\r\n    position: relative;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    text-align: center;\r\n    padding: 20px 16px 18px;\r\n    background: #fff;\r\n    border: 1px solid var(--frx-border);\r\n    border-radius: 12px;\r\n    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease, background-color 0.15s ease;\r\n    text-decoration: none !important;\r\n    color: inherit;\r\n    cursor: pointer;\r\n  }\r\n  #frx-cxos-widget .frx-card:hover {\r\n    border-color: var(--frx-navy-500);\r\n    background-color: #F8FBFD;\r\n    box-shadow: 0 6px 20px rgba(15, 43, 60, 0.10);\r\n    transform: translateY(-2px);\r\n  }\r\n  #frx-cxos-widget .frx-card:active { transform: translateY(0); box-shadow: 0 2px 8px rgba(15, 43, 60, 0.08); }\r\n  #frx-cxos-widget .frx-card:focus-visible {\r\n    outline: none;\r\n    border-color: var(--frx-navy-500);\r\n    box-shadow: 0 0 0 3px rgba(42, 111, 151, 0.25);\r\n  }\r\n\r\n  #frx-cxos-widget .frx-avatar {\r\n    width: 115px;\r\n    height: 115px;\r\n    border-radius: 50%;\r\n    object-fit: cover;\r\n    margin-bottom: 12px;\r\n    background: #EFF6FB;\r\n    border: 2px solid #fff;\r\n    box-shadow: 0 1px 3px rgba(15, 43, 60, 0.1);\r\n  }\r\n  #frx-cxos-widget .frx-avatar-fallback {\r\n    width: 115px;\r\n    height: 115px;\r\n    border-radius: 50%;\r\n    background: var(--frx-navy-500);\r\n    color: #fff;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    font-size: 39px;\r\n    font-weight: 600;\r\n    margin-bottom: 12px;\r\n    box-shadow: 0 1px 3px rgba(15, 43, 60, 0.1);\r\n    user-select: none;\r\n  }\r\n\r\n  \/* Avatar wrapper used when we need to overlay the verified badge.\r\n     Keeps the same 12px bottom gap as a lone avatar. *\/\r\n  #frx-cxos-widget .frx-avatar-wrap {\r\n    position: relative;\r\n    display: inline-block;\r\n    margin-bottom: 12px;\r\n    line-height: 0;\r\n  }\r\n  #frx-cxos-widget .frx-avatar-wrap .frx-avatar,\r\n  #frx-cxos-widget .frx-avatar-wrap .frx-avatar-fallback {\r\n    margin-bottom: 0;\r\n  }\r\n  #frx-cxos-widget .frx-verified-badge {\r\n    position: absolute;\r\n    bottom: -2px;\r\n    right: -2px;\r\n    width: 34px;\r\n    height: 34px;\r\n    \/* Deep teal-green \u2014 semantic \"verified \/ trusted\" colour, distinct from\r\n       the navy brand palette so the badge reads as a status marker, not a\r\n       decorative brand element. *\/\r\n    color: #0F766E;\r\n    line-height: 0;\r\n    filter: drop-shadow(0 1px 2px rgba(15, 43, 60, 0.25));\r\n    pointer-events: none;\r\n  }\r\n  #frx-cxos-widget .frx-verified-badge svg { width: 100%; height: 100%; display: block; }\r\n\r\n  #frx-cxos-widget .frx-name {\r\n    font-size: 17px;\r\n    font-weight: 600;\r\n    color: var(--frx-navy-900);\r\n    line-height: 1.3;\r\n    margin: 0 0 4px;\r\n  }\r\n\r\n  #frx-cxos-widget .frx-flag {\r\n    display: inline-block;\r\n    margin-left: 12px;\r\n    font-size: 0.95em;\r\n    line-height: 1;\r\n    vertical-align: middle;\r\n    transform: translateY(-2px);\r\n    \/* Use system color emoji fonts for proper flag rendering. *\/\r\n    font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', sans-serif;\r\n  }\r\n\r\n  #frx-cxos-widget .frx-country {\r\n    font-size: 12px;\r\n    color: var(--frx-muted);\r\n    margin-bottom: 2px;\r\n  }\r\n  #frx-cxos-widget .frx-country:empty { display: none; }\r\n\r\n  \/* Optional one-line tagline shown directly below the name. *\/\r\n  #frx-cxos-widget .frx-tagline-line {\r\n    font-size: 12px;\r\n    line-height: 1.4;\r\n    color: var(--frx-navy-700);\r\n    font-style: italic;\r\n    margin-bottom: 6px;\r\n    padding: 0 20px;\r\n    display: -webkit-box;\r\n    -webkit-line-clamp: 2;\r\n    line-clamp: 2;\r\n    -webkit-box-orient: vertical;\r\n    overflow: hidden;\r\n  }\r\n\r\n  \/* Second meta line: collaboration types \u00b7 availability. *\/\r\n  #frx-cxos-widget .frx-meta-sub {\r\n    font-size: 12px;\r\n    color: var(--frx-muted);\r\n    margin-bottom: 12px;\r\n  }\r\n  #frx-cxos-widget .frx-meta-sub:empty { display: none; }\r\n\r\n  \/* Highlight \"Available now\" in the meta line. *\/\r\n  #frx-cxos-widget .frx-avail-now {\r\n    color: #047857;\r\n    font-weight: 600;\r\n  }\r\n\r\n  \/* If the country line is missing but the sub-line is present (edge case),\r\n     the sub-line carries the full bottom margin on its own \u2014 handled already. *\/\r\n\r\n  \/* Lightweight dot separator between meta fragments (collab \u00b7 availability). *\/\r\n  #frx-cxos-widget .frx-dot {\r\n    display: inline-block;\r\n    margin: 0 6px;\r\n    color: rgba(100, 116, 139, 0.4);\r\n  }\r\n\r\n  #frx-cxos-widget .frx-tags {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    justify-content: center;\r\n    gap: 6px;\r\n    margin-bottom: 8px;\r\n    width: 100%;\r\n  }\r\n  #frx-cxos-widget .frx-tags:last-child { margin-bottom: 0; }\r\n  #frx-cxos-widget .frx-tags:empty { display: none; }\r\n\r\n  \/* Primary CxO role bubbles *\/\r\n  #frx-cxos-widget .frx-tag-cxo {\r\n    display: inline-block;\r\n    padding: 2px 8px;\r\n    font-size: 10px;\r\n    font-weight: 500;\r\n    color: var(--frx-navy-700);\r\n    background: #EFF6FB;\r\n    border-radius: 999px;\r\n  }\r\n\r\n  \/* Secondary \/ other role bubbles \u2014 very pale yellow to visually separate from CxO roles *\/\r\n  #frx-cxos-widget .frx-tag-other {\r\n    display: inline-block;\r\n    padding: 2px 8px;\r\n    font-size: 10px;\r\n    font-weight: 500;\r\n    color: #854D0E;\r\n    background: #FEFCE8;\r\n    border: 1px solid #FEF9C3;\r\n    border-radius: 999px;\r\n  }\r\n\r\n  #frx-cxos-widget .frx-more-info {\r\n    margin-top: 28px;\r\n    text-align: center;\r\n  }\r\n  #frx-cxos-widget .frx-more-info:empty { display: none; }\r\n  #frx-cxos-widget .frx-more-info a {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    padding: 12px 24px;\r\n    font-size: 14px;\r\n    font-weight: 500;\r\n    color: #fff !important;\r\n    background: var(--frx-navy-700);\r\n    border-radius: 8px;\r\n    text-decoration: none !important;\r\n    transition: background-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;\r\n  }\r\n  #frx-cxos-widget .frx-more-info a:hover {\r\n    background: var(--frx-navy-900);\r\n    transform: translateY(-1px);\r\n    box-shadow: 0 4px 12px rgba(15, 43, 60, 0.15);\r\n  }\r\n  #frx-cxos-widget .frx-more-info a:active { transform: translateY(0); }\r\n\r\n  #frx-cxos-widget .frx-empty {\r\n    grid-column: 1 \/ -1;\r\n    padding: 40px 20px;\r\n    text-align: center;\r\n    color: var(--frx-muted);\r\n    background: var(--frx-bg);\r\n    border: 1px dashed var(--frx-border);\r\n    border-radius: 12px;\r\n  }\r\n\r\n  \/* CTA placeholder card \u2014 always occupies the last slot in the grid to\r\n     invite new fractional leaders to join. Visually inverted (dark bg, light\r\n     text) so it reads as an action and not as another profile. *\/\r\n  #frx-cxos-widget .frx-cta-card {\r\n    background: linear-gradient(135deg, var(--frx-navy-700) 0%, var(--frx-navy-900) 100%);\r\n    color: #fff;\r\n    border: none;\r\n  }\r\n  #frx-cxos-widget .frx-cta-card:hover {\r\n    background: linear-gradient(135deg, var(--frx-navy-900) 0%, #081823 100%);\r\n    box-shadow: 0 8px 24px rgba(15, 43, 60, 0.25);\r\n  }\r\n  #frx-cxos-widget .frx-cta-card .frx-name { color: #fff; }\r\n  #frx-cxos-widget .frx-cta-card .frx-country { color: rgba(255,255,255,0.75); }\r\n  #frx-cxos-widget .frx-cta-icon {\r\n    width: 115px;\r\n    height: 115px;\r\n    border-radius: 50%;\r\n    background: rgba(255,255,255,0.12);\r\n    color: #fff;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    margin-bottom: 12px;\r\n    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.15);\r\n  }\r\n  #frx-cxos-widget .frx-cta-icon svg { width: 47px; height: 47px; }\r\n  #frx-cxos-widget .frx-cta-button {\r\n    display: inline-block;\r\n    margin-top: 10px;\r\n    padding: 8px 16px;\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    color: var(--frx-navy-900);\r\n    background: #fff;\r\n    border-radius: 999px;\r\n    transition: transform 0.15s ease;\r\n  }\r\n  #frx-cxos-widget .frx-cta-card:hover .frx-cta-button {\r\n    transform: translateY(-1px);\r\n  }\r\n\r\n  @media (max-width: 640px) {\r\n    #frx-cxos-widget .frx-headline { font-size: 18px; margin-bottom: 10px; }\r\n    #frx-cxos-widget .frx-filters { margin-bottom: 12px; }\r\n    #frx-cxos-widget .frx-role-filter { gap: 8px; }\r\n    #frx-cxos-widget .frx-role-bubbles { gap: 6px; }\r\n    #frx-cxos-widget .frx-role-pill { padding: 6px 12px; font-size: 12px; }\r\n    \/* Mobile: turn the subtitle into a tappable collapse toggle.\r\n       aria-expanded controls bubble visibility \u2014 false hides the\r\n       row entirely while keeping the currently selected filter in\r\n       memory, so re-opening shows the previous selection intact. *\/\r\n    #frx-cxos-widget .frx-filter-toggle {\r\n      cursor: pointer;\r\n      padding: 6px 10px;\r\n      border-radius: 999px;\r\n      transition: background-color 0.15s ease, color 0.15s ease;\r\n    }\r\n    #frx-cxos-widget .frx-filter-toggle:hover,\r\n    #frx-cxos-widget .frx-filter-toggle:focus-visible {\r\n      background: var(--frx-bg);\r\n      color: var(--frx-navy-700);\r\n      outline: none;\r\n    }\r\n    #frx-cxos-widget .frx-filter-chevron {\r\n      display: inline-block;\r\n      width: 8px;\r\n      height: 8px;\r\n      border-right: 2px solid currentColor;\r\n      border-bottom: 2px solid currentColor;\r\n      transform: rotate(45deg) translate(-1px, -1px);\r\n      transition: transform 0.18s ease;\r\n    }\r\n    #frx-cxos-widget .frx-filter-toggle[aria-expanded=&quot;true&quot;] .frx-filter-chevron {\r\n      transform: rotate(-135deg) translate(-1px, -1px);\r\n    }\r\n    #frx-cxos-widget .frx-filter-toggle[aria-expanded=&quot;false&quot;] + .frx-role-bubbles {\r\n      display: none;\r\n    }\r\n    #frx-cxos-widget .frx-divider { margin: 12px 0; }\r\n    #frx-cxos-widget .frx-grid { gap: 10px; }\r\n    #frx-cxos-widget .frx-card { padding: 16px 12px 14px; border-radius: 10px; }\r\n    #frx-cxos-widget .frx-avatar, #frx-cxos-widget .frx-avatar-fallback, #frx-cxos-widget .frx-cta-icon { width: 94px; height: 94px; font-size: 31px; }\r\n    #frx-cxos-widget .frx-cta-icon svg { width: 36px; height: 36px; }\r\n    #frx-cxos-widget .frx-verified-badge { width: 26px; height: 26px; }\r\n    #frx-cxos-widget .frx-name { font-size: 17px; }\r\n    #frx-cxos-widget .frx-tagline-line { font-size: 13px; }\r\n    #frx-cxos-widget .frx-meta-sub { font-size: 13px; }\r\n    #frx-cxos-widget .frx-tag { font-size: 13px; }\r\n    #frx-cxos-widget .frx-more-info { margin-top: 20px; }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(function () {\r\n  var root = document.getElementById('frx-cxos-widget');\r\n  if (!root) return;\r\n\r\n  var API = root.getAttribute('data-api');\r\n  var FRX_CTA_URL = 'https:\/\/app.fractionista.com\/auth\/login';\r\n  \/\/ Per-card link target. When a CxO has a public profile slug we deep-link\r\n  \/\/ there directly so role-page visitors can browse the T1 profile without\r\n  \/\/ crossing the auth wall. Cards without a slug fall back to FRX_CTA_URL.\r\n  var FRX_PROFILE_BASE = 'https:\/\/app.fractionista.com\/profile\/';\r\n  var PAGE_SIZE = Math.max(1, Math.min(50, parseInt(root.getAttribute('data-max-displayed'), 10) || 8));\r\n  \/\/ When set, results are pre-filtered to this role and the role dropdown\r\n  \/\/ is hidden \u2014 used on role-specific landing pages (e.g. \/hire\/cpo) where\r\n  \/\/ the page is already scoped to one role and a visible role picker would\r\n  \/\/ be confusing. Must match a value in CXO_ROLES \/ OTHER_ROLES exactly.\r\n  var LOCKED_ROLE = (root.getAttribute('data-role') || '').trim();\r\n\r\n  var grid = root.querySelector('.frx-grid');\r\n  var statusEl = root.querySelector('.frx-status');\r\n  var headlineEl = root.querySelector('.frx-headline');\r\n  var filtersEl = root.querySelector('.frx-filters');\r\n  var dividerEl = root.querySelector('.frx-divider');\r\n  var moreInfoEl = root.querySelector('.frx-more-info');\r\n  var bubblesEl = root.querySelector('.frx-role-bubbles');\r\n\r\n  function readFlag(name, def) {\r\n    var v = root.getAttribute('data-' + name);\r\n    if (v == null) return def;\r\n    v = String(v).toLowerCase();\r\n    return v !== 'false' && v !== '0' && v !== 'no';\r\n  }\r\n\r\n  var showHeadline = readFlag('show-headline', false);\r\n  var showFilter = readFlag('show-filter', true);\r\n  var showRoleFilter = readFlag('show-role-filter', true);\r\n  var showMoreInfo = readFlag('show-more-info', true);\r\n\r\n  if (!showHeadline) headlineEl.style.display = 'none';\r\n  \/\/ The bubble row is the only filter UI; visibility is the umbrella\r\n  \/\/ flag AND the per-filter flag AND the absence of a LOCKED_ROLE\r\n  \/\/ (which would make a visible picker redundant on role pages).\r\n  var roleVisible = showFilter && showRoleFilter && !LOCKED_ROLE;\r\n  if (!roleVisible) {\r\n    filtersEl.style.display = 'none';\r\n    dividerEl.style.display = 'none';\r\n  }\r\n\r\n  \/\/ Currently active filter value. Empty string == \"All roles\" (no\r\n  \/\/ filter). LOCKED_ROLE overrides this for the duration of the\r\n  \/\/ session \u2014 see buildUrl().\r\n  var selectedRole = '';\r\n  var state = { loading: false, bubblesRendered: false };\r\n\r\n  \/\/ Subtitle\/toggle above the bubble row. On desktop it's plain text;\r\n  \/\/ on mobile (<640px) tapping it collapses\/expands the row. The label\r\n  \/\/ reflects the active selection so users can see what's filtered\r\n  \/\/ even when collapsed.\r\n  var toggleEl = root.querySelector('.frx-filter-toggle');\r\n  var toggleLabelEl = root.querySelector('.frx-filter-label');\r\n\r\n  function updateToggleLabel() {\r\n    toggleLabelEl.textContent = selectedRole\r\n      ? 'Filter roles \u00b7 ' + selectedRole\r\n      : 'Filter roles';\r\n  }\r\n  updateToggleLabel();\r\n\r\n  \/\/ Always start collapsed. On mobile (<640px) this hides the bubble\r\n  \/\/ row by default so the grid is the first thing visitors see; tapping\r\n  \/\/ the \"Filter roles\" header expands it. On desktop the CSS shows the\r\n  \/\/ bubbles regardless of aria-expanded (the header is non-interactive\r\n  \/\/ there), so the collapsed attribute has no visual effect \u2014 it just\r\n  \/\/ guarantees a mobile viewport is collapsed however it was reached\r\n  \/\/ (initial load or a resize down from desktop).\r\n  toggleEl.setAttribute('aria-expanded', 'false');\r\n\r\n  toggleEl.addEventListener('click', function () {\r\n    var expanded = toggleEl.getAttribute('aria-expanded') === 'true';\r\n    toggleEl.setAttribute('aria-expanded', expanded ? 'false' : 'true');\r\n  });\r\n\r\n  function esc(s) {\r\n    return String(s == null ? '' : s)\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  function buildUrl() {\r\n    var params = new URLSearchParams();\r\n    params.set('limit', String(PAGE_SIZE));\r\n    \/\/ LOCKED_ROLE wins over any user selection \u2014 used on role pages\r\n    \/\/ where the bubble row is hidden anyway. Otherwise honor the\r\n    \/\/ current selection ('' == \"All roles\", no filter param).\r\n    var role = LOCKED_ROLE || selectedRole;\r\n    if (role) params.set('roles', role);\r\n    return API + '?' + params.toString();\r\n  }\r\n\r\n  function renderRoleBubbles(available_roles) {\r\n    if (state.bubblesRendered) return;\r\n    state.bubblesRendered = true;\r\n    \/\/ Skip DOM work entirely when the row will never be visible.\r\n    if (!roleVisible) return;\r\n\r\n    \/\/ \"All roles\" is always the first pill and the initial selection.\r\n    \/\/ Sentinel value '' = no role filter applied.\r\n    var entries = [{ value: '', label: 'All roles' }];\r\n    (available_roles || []).forEach(function (r) {\r\n      entries.push({ value: r, label: r });\r\n    });\r\n\r\n    entries.forEach(function (entry) {\r\n      var btn = document.createElement('button');\r\n      btn.type = 'button';\r\n      btn.className = 'frx-role-pill';\r\n      btn.setAttribute('role', 'radio');\r\n      btn.dataset.role = entry.value;\r\n      btn.textContent = entry.label;\r\n      var active = entry.value === selectedRole;\r\n      if (active) btn.classList.add('is-active');\r\n      btn.setAttribute('aria-checked', active ? 'true' : 'false');\r\n      btn.addEventListener('click', function () {\r\n        if (entry.value === selectedRole) return; \/\/ no-op\r\n        selectedRole = entry.value;\r\n        \/\/ Re-paint pills' active state in place.\r\n        bubblesEl.querySelectorAll('.frx-role-pill').forEach(function (el) {\r\n          var elActive = el.dataset.role === selectedRole;\r\n          el.classList.toggle('is-active', elActive);\r\n          el.setAttribute('aria-checked', elActive ? 'true' : 'false');\r\n        });\r\n        updateToggleLabel();\r\n        load();\r\n      });\r\n      bubblesEl.appendChild(btn);\r\n    });\r\n  }\r\n\r\n  function initialsFallback(firstName, lastInitial) {\r\n    var fn = (firstName || '').trim().charAt(0).toUpperCase();\r\n    var ln = (lastInitial || '').trim().charAt(0).toUpperCase();\r\n    return (fn + ln) || '\u00b7';\r\n  }\r\n\r\n  function formatCollab(types) {\r\n    var map = { on_site: 'On-site', remote: 'Remote', hybrid: 'Hybrid' };\r\n    return (types || []).map(function (t) { return map[t] || t; }).join(', ');\r\n  }\r\n\r\n  \/\/ Country name \u2192 2-letter ISO code \u2192 flag emoji (regional indicator chars).\r\n  \/\/ Kept in sync with EUROPEAN_COUNTRIES in src\/lib\/constants\/onboarding.ts.\r\n  var COUNTRY_ISO = {\r\n    'Austria': 'AT', 'Belgium': 'BE', 'Bulgaria': 'BG', 'Croatia': 'HR',\r\n    'Cyprus': 'CY', 'Czech Republic': 'CZ', 'Denmark': 'DK', 'Estonia': 'EE',\r\n    'Finland': 'FI', 'France': 'FR', 'Germany': 'DE', 'Greece': 'GR',\r\n    'Hungary': 'HU', 'Ireland': 'IE', 'Italy': 'IT', 'Latvia': 'LV',\r\n    'Lithuania': 'LT', 'Luxembourg': 'LU', 'Malta': 'MT', 'Netherlands': 'NL',\r\n    'Poland': 'PL', 'Portugal': 'PT', 'Romania': 'RO', 'Slovakia': 'SK',\r\n    'Slovenia': 'SI', 'Spain': 'ES', 'Sweden': 'SE', 'Switzerland': 'CH',\r\n    'United Kingdom': 'GB', 'Norway': 'NO', 'Iceland': 'IS'\r\n  };\r\n\r\n  function countryFlag(name) {\r\n    var iso = name && COUNTRY_ISO[name];\r\n    if (!iso) return '';\r\n    return String.fromCodePoint(\r\n      0x1F1E6 + (iso.charCodeAt(0) - 65),\r\n      0x1F1E6 + (iso.charCodeAt(1) - 65)\r\n    );\r\n  }\r\n\r\n  function formatAvailability(isAvail, availableFrom) {\r\n    if (!isAvail) return 'Currently unavailable';\r\n    if (!availableFrom) return 'Available now';\r\n    var d = new Date(availableFrom);\r\n    if (isNaN(d.getTime())) return 'Available now';\r\n    var today = new Date();\r\n    today.setHours(0, 0, 0, 0);\r\n    if (d <= today) return 'Available now';\r\n    return 'Available from ' + d.getDate() + '.' + (d.getMonth() + 1) + '.' + d.getFullYear();\r\n  }\r\n\r\n  \/\/ Roles that come from the \"Other\" vocabulary (Advisory \/ Board \/\r\n  \/\/ C-Level Advisor) \u2014 rendered with an amber accent. Kept in sync with\r\n  \/\/ src\/lib\/constants\/onboarding.ts OTHER_ROLES.\r\n  var OTHER_ROLE_VALUES = ['Advisory Board Member', 'Board Member', 'C-Level Advisor'];\r\n\r\n  \/\/ Build the list of role bubbles for one CxO card, returning HTML strings.\r\n  \/\/ Multiple \"Fractional X\" entries collapse into one navy bubble:\r\n  \/\/   [&quot;Fractional CTO&quot;, &quot;Fractional CPO&quot;] \u2192 \"Fractional CTO \/ CPO\".\r\n  \/\/ Each \"Other\" entry stays as its own amber bubble.\r\n  function buildRoleBubbles(roles) {\r\n    var fract = [];\r\n    var others = [];\r\n    (roles || []).forEach(function (r) {\r\n      if (OTHER_ROLE_VALUES.indexOf(r) >= 0) {\r\n        others.push(r);\r\n      } else {\r\n        var m = \/^Fractional\\s+(.+)$\/.exec(r);\r\n        fract.push(m ? m[1] : r);\r\n      }\r\n    });\r\n    var html = [];\r\n    if (fract.length > 0) {\r\n      html.push('<span class=\"frx-tag-cxo\">' + esc('Fractional ' + fract.join(' \/ ')) + '<\/span>');\r\n    }\r\n    others.forEach(function (r) {\r\n      html.push('<span class=\"frx-tag-other\">' + esc(r) + '<\/span>');\r\n    });\r\n    return html.join('');\r\n  }\r\n\r\n  function buildCtaCard() {\r\n    var card = document.createElement('a');\r\n    card.className = 'frx-card frx-cta-card';\r\n    card.href = FRX_CTA_URL;\r\n    card.target = '_blank';\r\n    card.rel = 'noopener';\r\n    card.innerHTML =\r\n      '<div class=\"frx-cta-icon\">' +\r\n        '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">' +\r\n          '<path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"\/>' +\r\n          '<circle cx=\"9\" cy=\"7\" r=\"4\"\/>' +\r\n          '<line x1=\"19\" y1=\"8\" x2=\"19\" y2=\"14\"\/>' +\r\n          '<line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\"\/>' +\r\n        '<\/svg>' +\r\n      '<\/div>' +\r\n      '<h3 class=\"frx-name\">Are you a Fractional CxO, Senior Leader or Advisor?<\/h3>' +\r\n      '<div class=\"frx-country\">Get discovered by European companies<\/div>' +\r\n      '<span class=\"frx-cta-button\">Create your profile \u2192<\/span>';\r\n    return card;\r\n  }\r\n\r\n  function buildProfileCard(c) {\r\n    var card = document.createElement('a');\r\n    card.className = 'frx-card';\r\n    \/\/ Deep-link to the public CxO profile when the row has a slug \u2014 keeps\r\n    \/\/ role-page visitors on a content surface (good for SEO + GEO link\r\n    \/\/ graph) instead of bouncing them straight to the auth wall. Rows\r\n    \/\/ without a slug fall back to the sign-in URL so the card still has\r\n    \/\/ a meaningful destination.\r\n    card.href = c.profile_slug\r\n      ? FRX_PROFILE_BASE + encodeURIComponent(c.profile_slug)\r\n      : FRX_CTA_URL;\r\n    card.target = '_blank';\r\n    card.rel = 'noopener';\r\n\r\n    \/\/ Prefer the full last name when the API returns one (CxO did not\r\n    \/\/ opt into abbreviation). Fall back to \"<Initial>.\" otherwise.\r\n    var lastNamePart = c.last_name && c.last_name.length > 0\r\n      ? esc(c.last_name)\r\n      : (c.last_initial ? esc(c.last_initial) + '.' : '');\r\n    var displayName = esc(c.first_name) + (lastNamePart ? ' ' + lastNamePart : '');\r\n\r\n    \/\/ Broken-image fallback is attached in JS further down (see after\r\n    \/\/ card.innerHTML) rather than via an inline onerror=\"\" attribute. Inline\r\n    \/\/ handlers carry nested quotes + &quot; entities that translation plugins\r\n    \/\/ and HTML minifiers corrupt \u2014 that broke the avatar on the translated\r\n    \/\/ (German) page. A plain <img> has nothing to mangle.\r\n    var avatarFallbackHtml = '<div class=\"frx-avatar-fallback\">' + esc(initialsFallback(c.first_name, c.last_initial)) + '<\/div>';\r\n    var avatarInner = c.profile_photo_url\r\n      ? '<img decoding=\"async\" class=\"frx-avatar\" src=\"' + esc(c.profile_photo_url) + '\" alt=\"\" loading=\"lazy\"\/>'\r\n      : avatarFallbackHtml;\r\n\r\n    \/\/ Scalloped \"verified\" rosette (Twitter\/X-style), filled in brand navy with\r\n    \/\/ a white checkmark cut-out. Shape is instantly recognizable as a badge.\r\n    var verifiedBadge = c.is_verified\r\n      ? '<span class=\"frx-verified-badge\" title=\"Verified\" aria-label=\"Verified\">' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">' +\r\n            '<path fill=\"currentColor\" d=\"M22.25 12c0-1.43-.88-2.67-2.19-3.34.46-1.39.2-2.9-.81-3.91s-2.52-1.27-3.91-.81c-.66-1.31-1.91-2.19-3.34-2.19s-2.67.88-3.33 2.19c-1.4-.46-2.91-.2-3.92.81S3.48 7.27 3.94 8.66C2.63 9.32 1.75 10.57 1.75 12s.88 2.67 2.19 3.34c-.46 1.39-.2 2.9.81 3.91s2.52 1.27 3.91.81c.66 1.31 1.91 2.19 3.34 2.19s2.68-.88 3.34-2.19c1.39.46 2.9.2 3.91-.81s1.27-2.52.81-3.91c1.31-.66 2.19-1.91 2.19-3.34z\"\/>' +\r\n            '<path fill=\"#fff\" d=\"M10.54 15.54l-4.03-4.03 1.41-1.41 2.62 2.62 5.39-5.39 1.41 1.41-6.8 6.8z\"\/>' +\r\n          '<\/svg>' +\r\n        '<\/span>'\r\n      : '';\r\n\r\n    var avatarHtml = '<div class=\"frx-avatar-wrap\">' + avatarInner + verifiedBadge + '<\/div>';\r\n\r\n    \/\/ cxo_roles now spans both vocabularies (Fractional + Other) \u2014 partition\r\n    \/\/ and style at render time using OTHER_ROLE_VALUES.\r\n    var roleBubblesHtml = buildRoleBubbles(c.cxo_roles);\r\n\r\n    \/\/ Single meta line: collaboration types \u00b7 availability. Country is no\r\n    \/\/ longer rendered as text; it shows as a flag next to the name above.\r\n    var subLine = [];\r\n    var collab = formatCollab(c.collaboration_types);\r\n    if (collab) subLine.push(esc(collab));\r\n    var avail = formatAvailability(c.is_available, c.available_from);\r\n    if (avail) {\r\n      var availClass = avail === 'Available now' ? 'frx-avail-now' : '';\r\n      subLine.push(availClass\r\n        ? '<span class=\"' + availClass + '\">' + esc(avail) + '<\/span>'\r\n        : esc(avail));\r\n    }\r\n    var subLineHtml = subLine.join('<span class=\"frx-dot\">\u00b7<\/span>');\r\n\r\n    var metaHtml = subLineHtml\r\n      ? '<div class=\"frx-meta-sub\">' + subLineHtml + '<\/div>'\r\n      : '';\r\n\r\n    var taglineHtml = c.profile_tagline\r\n      ? '<div class=\"frx-tagline-line\">' + esc(c.profile_tagline) + '<\/div>'\r\n      : '';\r\n\r\n    var flag = countryFlag(c.country);\r\n    var flagHtml = flag\r\n      ? '<span class=\"frx-flag\" title=\"' + esc(c.country || '') + '\" aria-label=\"' + esc(c.country || '') + '\">' + flag + '<\/span>'\r\n      : '';\r\n\r\n    card.innerHTML =\r\n      avatarHtml +\r\n      '<h3 class=\"frx-name\">' + displayName + flagHtml + '<\/h3>' +\r\n      taglineHtml +\r\n      metaHtml +\r\n      (roleBubblesHtml ? '<div class=\"frx-tags\">' + roleBubblesHtml + '<\/div>' : '');\r\n\r\n    if (c.profile_photo_url) {\r\n      var avatarImg = card.querySelector('.frx-avatar');\r\n      if (avatarImg) avatarImg.onerror = function () { this.outerHTML = avatarFallbackHtml; };\r\n    }\r\n\r\n    return card;\r\n  }\r\n\r\n  function render(data) {\r\n    var cxos = data.cxos || [];\r\n    var total_all = data.total_all || 0;\r\n\r\n    if (showHeadline) {\r\n      headlineEl.textContent = total_all > 0\r\n        ? 'Fractional CxOs on Fractionista'\r\n        : 'Become a Fractional CxO';\r\n    }\r\n\r\n    grid.innerHTML = '';\r\n\r\n    \/\/ Always reserve the last grid slot for a \"join as a Fractional CxO\" CTA.\r\n    \/\/ - If fewer real profiles than max \u2192 show them all, CTA at the end.\r\n    \/\/ - If real profiles meet or exceed max \u2192 show (max - 1) profiles, CTA last.\r\n    var maxRealCards = Math.max(0, PAGE_SIZE - 1);\r\n    var realCards = cxos.slice(0, maxRealCards);\r\n\r\n    realCards.forEach(function (c) {\r\n      grid.appendChild(buildProfileCard(c));\r\n    });\r\n    grid.appendChild(buildCtaCard());\r\n\r\n    var shown = realCards.length;\r\n    var filtered = data.total || 0;\r\n    \/\/ Status line: only surface the \"no match\" hint when a filter is active\r\n    \/\/ and yields zero. Count-of-executives text is intentionally suppressed.\r\n    statusEl.textContent = (filtered === 0 && total_all > 0)\r\n      ? 'No executives match your filters.'\r\n      : '';\r\n\r\n    if (showMoreInfo && total_all > shown) {\r\n      moreInfoEl.innerHTML = '<a href=\"' + FRX_CTA_URL + '\">Sign in to see all executives \u2192<\/a>';\r\n    } else {\r\n      moreInfoEl.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  function load() {\r\n    if (state.loading) return;\r\n    state.loading = true;\r\n    fetch(buildUrl(), { headers: { 'Accept': 'application\/json' } })\r\n      .then(function (r) { if (!r.ok) throw new Error('HTTP ' + r.status); return r.json(); })\r\n      .then(function (data) {\r\n        renderRoleBubbles(data.available_roles);\r\n        render(data);\r\n      })\r\n      .catch(function (err) {\r\n        console.error('frx-cxos-widget:', err);\r\n        \/\/ No apostrophe \/ backslash escape here on purpose: the German page's\r\n        \/\/ translation+minify chain strips ' escapes from inline JS strings,\r\n        \/\/ which breaks the string literal. Plain ASCII \"Could not\" can't break.\r\n        grid.innerHTML = '<div class=\"frx-empty\">Could not load executives right now. Please try again later.<\/div>';\r\n        statusEl.textContent = '';\r\n        moreInfoEl.innerHTML = '';\r\n      })\r\n      .finally(function () { state.loading = false; });\r\n  }\r\n\r\n  \/\/ Each pill attaches its own click handler inside renderRoleBubbles \u2014\r\n  \/\/ there's no shared change listener to wire up here, just the first load.\r\n  load();\r\n})();\r\n<\/script>\r\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>Senior Leaders. Fractional CxOs. Advisors. Lerne die Menschen kennen, die Wachstum, Wandel und Wertsch\u00f6pfung in europ\u00e4ischen Unternehmen aktiv vorantreiben. Executives werden geladen\u2026 Rollen filtern<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"solace_meta_sidebar":"","solace_meta_container":"","solace_meta_enable_content_width":"","solace_meta_content_width":0,"solace_meta_title_alignment":"","solace_meta_author_avatar":"","solace_post_elements_order":"","solace_meta_disable_header":"","solace_meta_disable_footer":"","solace_meta_disable_title":"","footnotes":""},"class_list":["post-2503","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fractional Leaders | Fractionista<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fractionista.com\/de\/hire\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fractional Leaders | Fractionista\" \/>\n<meta property=\"og:description\" content=\"Senior Leaders. Fractional CxOs. Advisors. Lerne die Menschen kennen, die Wachstum, Wandel und Wertsch\u00f6pfung in europ\u00e4ischen Unternehmen aktiv vorantreiben. Executives werden geladen\u2026 Rollen filtern\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fractionista.com\/de\/hire\/\" \/>\n<meta property=\"og:site_name\" content=\"Fractionista\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-23T15:50:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fractionista.com\/wp-content\/uploads\/2026\/04\/fractionista_home_hero.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/hire\\\/\",\"url\":\"https:\\\/\\\/fractionista.com\\\/de\\\/hire\\\/\",\"name\":\"Fractional Leaders | Fractionista\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/#website\"},\"datePublished\":\"2026-04-23T22:11:22+00:00\",\"dateModified\":\"2026-06-23T15:50:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/hire\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fractionista.com\\\/de\\\/hire\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/hire\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/fractionista.com\\\/de\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fractional Leaders\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/fractionista.com\\\/de\\\/\",\"name\":\"Fractionista\",\"description\":\"The European Marketplace for Fractional CxO Roles\",\"publisher\":{\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fractionista.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/#organization\",\"name\":\"Fractionista\",\"url\":\"https:\\\/\\\/fractionista.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fractionista.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/partially-colored-logo__wordmark-right-orangouter.png\",\"contentUrl\":\"https:\\\/\\\/fractionista.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/partially-colored-logo__wordmark-right-orangouter.png\",\"width\":819,\"height\":173,\"caption\":\"Fractionista\"},\"image\":{\"@id\":\"https:\\\/\\\/fractionista.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fractional Leaders | Fractionista","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:\/\/fractionista.com\/de\/hire\/","og_locale":"de_DE","og_type":"article","og_title":"Fractional Leaders | Fractionista","og_description":"Senior Leaders. Fractional CxOs. Advisors. Lerne die Menschen kennen, die Wachstum, Wandel und Wertsch\u00f6pfung in europ\u00e4ischen Unternehmen aktiv vorantreiben. Executives werden geladen\u2026 Rollen filtern","og_url":"https:\/\/fractionista.com\/de\/hire\/","og_site_name":"Fractionista","article_modified_time":"2026-06-23T15:50:08+00:00","og_image":[{"width":1400,"height":650,"url":"https:\/\/fractionista.com\/wp-content\/uploads\/2026\/04\/fractionista_home_hero.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/fractionista.com\/de\/hire\/","url":"https:\/\/fractionista.com\/de\/hire\/","name":"Fractional Leaders | Fractionista","isPartOf":{"@id":"https:\/\/fractionista.com\/de\/#website"},"datePublished":"2026-04-23T22:11:22+00:00","dateModified":"2026-06-23T15:50:08+00:00","breadcrumb":{"@id":"https:\/\/fractionista.com\/de\/hire\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fractionista.com\/de\/hire\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fractionista.com\/de\/hire\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fractionista.com\/de\/home\/"},{"@type":"ListItem","position":2,"name":"Fractional Leaders"}]},{"@type":"WebSite","@id":"https:\/\/fractionista.com\/de\/#website","url":"https:\/\/fractionista.com\/de\/","name":"Fractionista","description":"The European Marketplace for Fractional CxO Roles","publisher":{"@id":"https:\/\/fractionista.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fractionista.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/fractionista.com\/de\/#organization","name":"Fractionista","url":"https:\/\/fractionista.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/fractionista.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/fractionista.com\/wp-content\/uploads\/2026\/04\/partially-colored-logo__wordmark-right-orangouter.png","contentUrl":"https:\/\/fractionista.com\/wp-content\/uploads\/2026\/04\/partially-colored-logo__wordmark-right-orangouter.png","width":819,"height":173,"caption":"Fractionista"},"image":{"@id":"https:\/\/fractionista.com\/de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/pages\/2503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/comments?post=2503"}],"version-history":[{"count":2,"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/pages\/2503\/revisions"}],"predecessor-version":[{"id":2556,"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/pages\/2503\/revisions\/2556"}],"wp:attachment":[{"href":"https:\/\/fractionista.com\/de\/wp-json\/wp\/v2\/media?parent=2503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}