{"id":70068,"date":"2026-08-14T09:52:30","date_gmt":"2026-08-14T07:52:30","guid":{"rendered":"https:\/\/bjornlunden.com\/?page_id=70068"},"modified":"2026-08-14T09:54:45","modified_gmt":"2026-08-14T07:54:45","slug":"calculator-test","status":"publish","type":"page","link":"https:\/\/bjornlunden.com\/dk\/calculator-test\/","title":{"rendered":"Calculator Test"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"70068\" class=\"elementor elementor-70068\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-792006a e-flex e-con-boxed e-con e-parent\" data-id=\"792006a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-469bede e-flex e-con-boxed e-con e-parent\" data-id=\"469bede\" 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-1e143c6 elementor-widget elementor-widget-html\" data-id=\"1e143c6\" 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     Faktureringsgrad-beregner | EazyProject \/ Bjorn Lunden\r\n     Til Elementor: indsaet hele denne blok i en \"HTML\"-widget.\r\n\r\n     - Alle klasser, id'er og variabler er praefikset med \"ffg-\".\r\n     - Hver CSS-regel er scopet til .ffg-calc, saa temaets egne regler\r\n       (fx \"p { margin: 0 }\") ikke kan fjerne afstandene.\r\n     - TODO: erstat console.log i submit() med POST til HubSpot Forms API.\r\n     ============================================================ -->\r\n\r\n<!-- Fjern denne linje, hvis temaet allerede indlaeser Poppins -->\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n<style>\r\n  .ffg-calc {\r\n    --ffg-solsken: #FFBB00;\r\n    --ffg-natt: #202020;\r\n    --ffg-paper: #FFFFFF;\r\n    --ffg-line: #ECECEC;\r\n    --ffg-muted: #C9A24B;\r\n    --ffg-grey-text: #7A7A7A;\r\n    --ffg-soft: #FFFBF0;\r\n  }\r\n\r\n  .ffg-calc * {\r\n    margin: 0; padding: 0; box-sizing: border-box;\r\n  }\r\n\r\n  .ffg-calc {\r\n    font-family: 'Poppins', -apple-system, sans-serif;\r\n    background: var(--ffg-solsken);\r\n    color: var(--ffg-natt);\r\n    line-height: 1.5;\r\n    display: flex;\r\n    justify-content: center;\r\n    padding: 28px 16px;\r\n  }\r\n\r\n  .ffg-calc .ffg-card {\r\n    background: var(--ffg-paper);\r\n    border-radius: 24px;\r\n    max-width: 960px;\r\n    width: 100%;\r\n    padding: 44px 52px 46px;\r\n  }\r\n\r\n  @media (max-width: 640px) {\r\n    .ffg-calc .ffg-card {\r\n      padding: 30px 22px 34px;\r\n    }\r\n  }\r\n\r\n  .ffg-calc .ffg-eyebrow {\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    color: var(--ffg-muted);\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.06em;\r\n    margin-bottom: 6px;\r\n  }\r\n\r\n  .ffg-calc h1 {\r\n    font-size: clamp(20px, 3.2vw, 26px);\r\n    font-weight: 700;\r\n    line-height: 1.3;\r\n    margin-bottom: 8px;\r\n  }\r\n\r\n  .ffg-calc .ffg-intro {\r\n    font-size: 14.5px;\r\n    color: var(--ffg-grey-text);\r\n    line-height: 1.6;\r\n    margin-bottom: 40px;\r\n    max-width: 64ch;\r\n  }\r\n\r\n  .ffg-calc .ffg-grid {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 30px 52px;\r\n  }\r\n\r\n  @media (max-width: 760px) {\r\n    .ffg-calc .ffg-grid {\r\n      grid-template-columns: 1fr; gap: 32px;\r\n    }\r\n  }\r\n\r\n  .ffg-calc .ffg-field {\r\n    margin-bottom: 30px;\r\n  }\r\n\r\n  .ffg-calc .ffg-field:last-child {\r\n    margin-bottom: 0;\r\n  }\r\n\r\n  .ffg-calc .ffg-field__row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: baseline;\r\n    margin-bottom: 12px;\r\n    gap: 14px;\r\n  }\r\n\r\n  .ffg-calc .ffg-field__label {\r\n    font-size: 14.5px; font-weight: 500; line-height: 1.4;\r\n  }\r\n\r\n  .ffg-calc .ffg-field__value {\r\n    font-size: 15px;\r\n    font-weight: 600;\r\n    border: 1px solid var(--ffg-line);\r\n    border-radius: 10px;\r\n    padding: 3px 12px;\r\n    min-width: 84px;\r\n    text-align: right;\r\n    font-variant-numeric: tabular-nums;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"] {\r\n    display: block;\r\n    width: 100%;\r\n    -webkit-appearance: none;\r\n    appearance: none;\r\n    height: 8px;\r\n    border-radius: 999px;\r\n    background: var(--ffg-line);\r\n    outline: none;\r\n    cursor: pointer;\r\n    touch-action: none;\r\n    position: relative;\r\n    z-index: 1;\r\n    margin: 4px 0;\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"]::-webkit-slider-runnable-track {\r\n    height: 8px;\r\n    border-radius: 999px;\r\n    background: transparent;\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"]::-moz-range-track {\r\n    height: 8px;\r\n    border-radius: 999px;\r\n    background: transparent;\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"]::-webkit-slider-thumb {\r\n    -webkit-appearance: none;\r\n    appearance: none;\r\n    width: 26px;\r\n    height: 26px;\r\n    margin-top: -9px;\r\n    border-radius: 50%;\r\n    background: var(--ffg-solsken);\r\n    border: 2px solid var(--ffg-paper);\r\n    box-shadow: 0 0 0 1.5px var(--ffg-natt);\r\n    cursor: grab;\r\n    transition: transform 0.1s ease;\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"]:active::-webkit-slider-thumb {\r\n    cursor: grabbing; transform: scale(1.08);\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"]::-webkit-slider-thumb:hover {\r\n    transform: scale(1.1);\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"]::-moz-range-thumb {\r\n    width: 26px;\r\n    height: 26px;\r\n    border-radius: 50%;\r\n    background: var(--ffg-solsken);\r\n    border: 2px solid var(--ffg-paper);\r\n    box-shadow: 0 0 0 1.5px var(--ffg-natt);\r\n    cursor: grab;\r\n  }\r\n\r\n  .ffg-calc input[type=\"range\"]:focus-visible {\r\n    outline: 3px solid var(--ffg-solsken);\r\n    outline-offset: 4px;\r\n  }\r\n\r\n  .ffg-calc .ffg-field__hint {\r\n    margin-top: 10px;\r\n    font-size: 12.5px;\r\n    color: var(--ffg-grey-text);\r\n  }\r\n\r\n  .ffg-calc .ffg-field select {\r\n    font-family: 'Poppins', sans-serif;\r\n    font-size: 14.5px;\r\n    padding: 12px 15px;\r\n    border: 1px solid var(--ffg-line);\r\n    border-radius: 10px;\r\n    width: 100%;\r\n    background: var(--ffg-paper);\r\n    color: var(--ffg-natt);\r\n    cursor: pointer;\r\n  }\r\n\r\n  .ffg-calc .ffg-field select:focus {\r\n    outline: none;\r\n    border-color: var(--ffg-natt);\r\n  }\r\n\r\n  .ffg-calc .ffg-result__label {\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.06em;\r\n    color: var(--ffg-muted);\r\n    margin-bottom: 4px;\r\n  }\r\n\r\n  .ffg-calc .ffg-result__big {\r\n    font-size: clamp(36px, 5.5vw, 48px);\r\n    font-weight: 700;\r\n    line-height: 1.05;\r\n    margin-bottom: 4px;\r\n    font-variant-numeric: tabular-nums;\r\n  }\r\n\r\n  .ffg-calc .ffg-result__sub {\r\n    font-size: 14px;\r\n    color: var(--ffg-grey-text);\r\n    margin-bottom: 24px;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail {\r\n    position: relative;\r\n    border: 1px solid var(--ffg-line);\r\n    border-radius: 12px;\r\n    overflow: hidden;\r\n    margin-bottom: 22px;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail__rows {\r\n    padding: 6px 22px;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail__rows div {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    gap: 18px;\r\n    padding: 13px 0;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail__rows div + div {\r\n    border-top: 1px solid var(--ffg-line);\r\n  }\r\n\r\n  .ffg-calc .ffg-detail__rows strong {\r\n    font-variant-numeric: tabular-nums; white-space: nowrap;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail__rows .ffg-detail__insight {\r\n    display: block;\r\n    background: var(--ffg-soft);\r\n    margin: 0 -22px;\r\n    padding: 14px 22px;\r\n    font-size: 13.5px;\r\n    font-weight: 500;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail.ffg-locked .ffg-detail__rows {\r\n    filter: blur(7px);\r\n    user-select: none;\r\n    pointer-events: none;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail.ffg-locked .ffg-detail__extra {\r\n    display: none;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail__overlay {\r\n    position: absolute;\r\n    inset: 0;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    background: rgba(255,255,255,0.35);\r\n  }\r\n\r\n  .ffg-calc .ffg-detail:not(.ffg-locked) .ffg-detail__overlay {\r\n    display: none;\r\n  }\r\n\r\n  .ffg-calc .ffg-detail__lock {\r\n    background: var(--ffg-natt);\r\n    color: var(--ffg-paper);\r\n    font-size: 13px;\r\n    font-weight: 500;\r\n    border-radius: 999px;\r\n    padding: 8px 18px;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n  }\r\n\r\n  .ffg-calc .ffg-gate {\r\n    background: var(--ffg-soft);\r\n    border: 1px solid var(--ffg-solsken);\r\n    border-radius: 12px;\r\n    padding: 24px;\r\n  }\r\n\r\n  .ffg-calc .ffg-gate h3 {\r\n    font-size: 15.5px; font-weight: 600; margin-bottom: 6px;\r\n  }\r\n\r\n  .ffg-calc .ffg-gate__desc {\r\n    font-size: 13.5px;\r\n    color: var(--ffg-grey-text);\r\n    line-height: 1.55;\r\n    margin-bottom: 18px;\r\n  }\r\n\r\n  .ffg-calc .ffg-gate__fields {\r\n    display: flex; flex-direction: column; gap: 11px; margin-bottom: 14px;\r\n  }\r\n\r\n  .ffg-calc .ffg-gate__fields input, .ffg-calc .ffg-gate__fields select {\r\n    font-family: 'Poppins', sans-serif;\r\n    font-size: 14px;\r\n    padding: 12px 15px;\r\n    border: 1px solid var(--ffg-line);\r\n    border-radius: 10px;\r\n    width: 100%;\r\n    background: var(--ffg-paper);\r\n    color: var(--ffg-natt);\r\n  }\r\n\r\n  .ffg-calc .ffg-gate__fields input:focus, .ffg-calc .ffg-gate__fields select:focus {\r\n    outline: none;\r\n    border-color: var(--ffg-natt);\r\n  }\r\n\r\n  .ffg-calc .ffg-btn {\r\n    font-family: 'Poppins', sans-serif;\r\n    font-size: 15px;\r\n    font-weight: 600;\r\n    background: var(--ffg-solsken);\r\n    color: var(--ffg-natt);\r\n    border: none;\r\n    border-radius: 10px;\r\n    padding: 13px 28px;\r\n    cursor: pointer;\r\n    width: 100%;\r\n    transition: filter 0.15s ease, transform 0.1s ease;\r\n  }\r\n\r\n  .ffg-calc .ffg-btn:hover {\r\n    filter: brightness(0.96); transform: translateY(-1px);\r\n  }\r\n\r\n  .ffg-calc .ffg-btn:focus-visible {\r\n    outline: 3px solid var(--ffg-natt); outline-offset: 3px;\r\n  }\r\n\r\n  .ffg-calc .ffg-btn--inline {\r\n    width: auto;\r\n  }\r\n\r\n  .ffg-calc .ffg-gate__privacy {\r\n    font-size: 8.5px;\r\n    color: var(--ffg-grey-text);\r\n    margin-top: 14px;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  .ffg-calc .ffg-error {\r\n    display: none;\r\n    font-size: 13px;\r\n    color: #C0392B;\r\n    margin-top: 10px;\r\n  }\r\n\r\n  .ffg-calc .ffg-unlocked {\r\n    display: none;\r\n    margin-top: 24px;\r\n    padding-top: 20px;\r\n    border-top: 1px solid var(--ffg-line);\r\n    align-items: center;\r\n    gap: 12px 28px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .ffg-calc .ffg-unlocked > p {\r\n    font-size: 13.5px;\r\n    line-height: 1.55;\r\n    flex: 1 1 260px;\r\n    min-width: 0;\r\n  }\r\n\r\n  .ffg-calc .ffg-unlocked strong {\r\n    font-weight: 600;\r\n  }\r\n\r\n  .ffg-calc .ffg-value {\r\n    display: none;\r\n    margin-top: 22px;\r\n    background: var(--ffg-soft);\r\n    border: 1px solid var(--ffg-solsken);\r\n    border-radius: 14px;\r\n    padding: 26px 28px 24px;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__head {\r\n    margin-bottom: 22px;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__head h3 {\r\n    font-size: 16px;\r\n    font-weight: 600;\r\n    margin-bottom: 5px;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__head p {\r\n    font-size: 13px;\r\n    color: var(--ffg-grey-text);\r\n    line-height: 1.6;\r\n    max-width: 78ch;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__list {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, 1fr);\r\n    gap: 22px 36px;\r\n    padding-bottom: 20px;\r\n    margin-bottom: 20px;\r\n    border-bottom: 1px solid rgba(255,187,0,0.5);\r\n  }\r\n\r\n  @media (max-width: 700px) {\r\n    .ffg-calc .ffg-value__list {\r\n      grid-template-columns: 1fr; gap: 18px;\r\n    }\r\n\r\n    .ffg-calc .ffg-value {\r\n      padding: 22px 20px;\r\n    }\r\n  }\r\n\r\n  .ffg-calc .ffg-value__item h4 {\r\n    font-size: 13.5px;\r\n    font-weight: 600;\r\n    line-height: 1.45;\r\n    margin-bottom: 6px;\r\n    text-decoration: underline;\r\n    text-decoration-color: var(--ffg-solsken);\r\n    text-decoration-thickness: 2px;\r\n    text-underline-offset: 4px;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__item p {\r\n    font-size: 12.5px;\r\n    color: var(--ffg-grey-text);\r\n    line-height: 1.55;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__cta {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 24px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__perks {\r\n    list-style: none;\r\n    display: grid;\r\n    gap: 7px;\r\n    flex: 1 1 300px;\r\n    min-width: 0;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__perks li {\r\n    position: relative;\r\n    padding-left: 20px;\r\n    font-size: 12.5px;\r\n    color: var(--ffg-grey-text);\r\n    line-height: 1.45;\r\n  }\r\n\r\n  .ffg-calc .ffg-value__perks li::before {\r\n    content: \"\u2713\";\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    font-size: 11.5px;\r\n    font-weight: 700;\r\n    color: var(--ffg-natt);\r\n  }\r\n\r\n  @media (max-width: 560px) {\r\n    .ffg-calc .ffg-value__cta {\r\n      gap: 18px;\r\n    }\r\n\r\n    .ffg-calc .ffg-btn--inline {\r\n      width: 100%;\r\n    }\r\n  }\r\n\r\n  .ffg-calc .ffg-sysq {\r\n    flex: 2 1 420px;\r\n    min-width: 0;\r\n  }\r\n\r\n  @media (max-width: 700px) {\r\n    .ffg-calc .ffg-sysq {\r\n      padding-top: 14px; border-top: 1px solid var(--ffg-line);\r\n    }\r\n  }\r\n\r\n  .ffg-calc .ffg-sysq__ask {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 14px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .ffg-calc .ffg-sysq__label {\r\n    font-size: 13px;\r\n    line-height: 1.5;\r\n    flex: 1 1 240px;\r\n    min-width: 0;\r\n  }\r\n\r\n  .ffg-calc .ffg-sysq__select {\r\n    font-family: 'Poppins', sans-serif;\r\n    font-size: 13px;\r\n    padding: 10px 14px;\r\n    border: 1px solid var(--ffg-line);\r\n    border-radius: 10px;\r\n    background: var(--ffg-paper);\r\n    color: var(--ffg-natt);\r\n    cursor: pointer;\r\n    flex: 0 1 190px;\r\n  }\r\n\r\n  .ffg-calc .ffg-sysq__select:focus {\r\n    outline: none;\r\n    border-color: var(--ffg-natt);\r\n  }\r\n\r\n  .ffg-calc .ffg-chip {\r\n    font-family: 'Poppins', sans-serif;\r\n    font-size: 12.5px;\r\n    font-weight: 500;\r\n    background: var(--ffg-paper);\r\n    border: 1px solid var(--ffg-line);\r\n    border-radius: 999px;\r\n    padding: 7px 14px;\r\n    cursor: pointer;\r\n    transition: border-color 0.15s ease, background 0.15s ease;\r\n  }\r\n\r\n  .ffg-calc .ffg-chip:hover {\r\n    border-color: var(--ffg-natt);\r\n  }\r\n\r\n  .ffg-calc .ffg-chip:focus-visible {\r\n    outline: 3px solid var(--ffg-solsken); outline-offset: 2px;\r\n  }\r\n\r\n  .ffg-calc .ffg-sysq__thanks {\r\n    display: none; font-size: 13.5px; font-weight: 500;\r\n  }\r\n\r\n  .ffg-calc .ffg-foot {\r\n    margin-top: 32px;\r\n    padding-top: 20px;\r\n    border-top: 1px solid var(--ffg-line);\r\n    font-size: 12px;\r\n    color: var(--ffg-grey-text);\r\n    display: flex;\r\n    justify-content: space-between;\r\n    gap: 12px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .ffg-calc * {\r\n      transition: none !important;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"ffg-calc\">\r\n<div class=\"ffg-card\">\r\n  <div class=\"ffg-eyebrow\">Gratis beregner<\/div>\r\n  <h1>Er jeres faktureringsgrad h\u00f8j nok?<\/h1>\r\n  <p class=\"ffg-intro\">S\u00e6t jeres egne tal ind og se med det samme, hvor meget oms\u00e6tning der ligger gemt i jeres ikke-fakturerede timer. Det tager 30 sekunder.<\/p>\r\n\r\n  <div class=\"ffg-grid\">\r\n    <!-- Left: sliders -->\r\n    <div>\r\n      <div class=\"ffg-field\">\r\n        <div class=\"ffg-field__row\">\r\n          <label class=\"ffg-field__label\" for=\"ffg-industry\">Jeres branche<\/label>\r\n        <\/div>\r\n        <select id=\"ffg-industry\">\r\n          <option value=\"\" selected disabled>V\u00e6lg branche<\/option>\r\n          <option value=\"Arkitekter\" data-target=\"72\" data-hint=\"Tegnestuer ligger typisk p\u00e5 70\u201375 %\">Arkitekter<\/option>\r\n          <option value=\"Ingeni\u00f8rer\" data-target=\"75\" data-hint=\"R\u00e5dgivende ingeni\u00f8rer ligger typisk p\u00e5 72\u201378 %\">Ingeni\u00f8rer<\/option>\r\n          <option value=\"Konsulenter og r\u00e5dgivere\" data-target=\"78\" data-hint=\"Konsulenthuse ligger typisk p\u00e5 75\u201380 %\">Konsulenter og r\u00e5dgivere<\/option>\r\n          <option value=\"Anden projektbaseret virksomhed\" data-target=\"75\" data-hint=\"Projektbaserede virksomheder ligger typisk p\u00e5 70\u201380 %\">Anden projektbaseret virksomhed<\/option>\r\n        <\/select>\r\n        <div class=\"ffg-field__hint\" id=\"ffg-industryHint\">Vi tilpasser m\u00e5let efter jeres branche<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ffg-field\">\r\n        <div class=\"ffg-field__row\">\r\n          <label class=\"ffg-field__label\" for=\"ffg-emp\">Antal medarbejdere<\/label>\r\n          <span class=\"ffg-field__value\" id=\"ffg-empVal\">10<\/span>\r\n        <\/div>\r\n        <input type=\"range\" id=\"ffg-emp\" min=\"1\" max=\"100\" value=\"10\" step=\"1\">\r\n        <div class=\"ffg-field__hint\">Medarbejdere, der arbejder p\u00e5 projekter<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ffg-field\">\r\n        <div class=\"ffg-field__row\">\r\n          <label class=\"ffg-field__label\" for=\"ffg-rate\">Gennemsnitlig timepris<\/label>\r\n          <span class=\"ffg-field__value\" id=\"ffg-rateVal\">850 kr.<\/span>\r\n        <\/div>\r\n        <input type=\"range\" id=\"ffg-rate\" min=\"300\" max=\"2000\" value=\"850\" step=\"25\">\r\n        <div class=\"ffg-field__hint\">Den pris, I i gennemsnit fakturerer pr. time<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ffg-field\">\r\n        <div class=\"ffg-field__row\">\r\n          <label class=\"ffg-field__label\" for=\"ffg-current\">Faktureringsgrad i dag<\/label>\r\n          <span class=\"ffg-field__value\" id=\"ffg-currentVal\">62 %<\/span>\r\n        <\/div>\r\n        <input type=\"range\" id=\"ffg-current\" min=\"30\" max=\"95\" value=\"62\" step=\"1\">\r\n        <div class=\"ffg-field__hint\">Den del af arbejdstiden, I fakturerer i dag<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ffg-field\">\r\n        <div class=\"ffg-field__row\">\r\n          <label class=\"ffg-field__label\" for=\"ffg-target\">Jeres m\u00e5l<\/label>\r\n          <span class=\"ffg-field__value\" id=\"ffg-targetVal\">75 %<\/span>\r\n        <\/div>\r\n        <input type=\"range\" id=\"ffg-target\" min=\"30\" max=\"95\" value=\"75\" step=\"1\">\r\n        <div class=\"ffg-field__hint\">Realistisk niveau i branchen: 70 til 80 %<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Right: result -->\r\n    <div>\r\n      <div class=\"ffg-result__label\">Tabt oms\u00e6tning pr. \u00e5r<\/div>\r\n      <div class=\"ffg-result__big\" id=\"ffg-lost\" aria-live=\"polite\">0 kr.<\/div>\r\n      <div class=\"ffg-result__sub\" id=\"ffg-lostSub\">i forhold til jeres m\u00e5l<\/div>\r\n\r\n      <div class=\"ffg-detail ffg-locked\" id=\"ffg-detail\">\r\n        <div class=\"ffg-detail__rows\">\r\n          <div><span>Tabt oms\u00e6tning pr. m\u00e5ned<\/span><strong id=\"ffg-perMonth\">000.000 kr.<\/strong><\/div>\r\n          <div><span>V\u00e6rdi pr. procentpoint faktureringsgrad<\/span><strong id=\"ffg-perPoint\">000.000 kr.<\/strong><\/div>\r\n          <div><span>Ikke-fakturerede timer pr. \u00e5r<\/span><strong id=\"ffg-hoursRow\">0.000 timer<\/strong><\/div>\r\n          <div class=\"ffg-detail__extra\"><span>Det svarer til<\/span><strong id=\"ffg-fteRow\">0,0 \u00e5rsv\u00e6rk<\/strong><\/div>\r\n          <div class=\"ffg-detail__extra\"><span>Tabt oms\u00e6tning pr. medarbejder pr. \u00e5r<\/span><strong id=\"ffg-perEmp\">000.000 kr.<\/strong><\/div>\r\n          <div class=\"ffg-detail__extra\"><span>Forts\u00e6tter det u\u00e6ndret i 5 \u00e5r<\/span><strong id=\"ffg-fiveYear\">0.000.000 kr.<\/strong><\/div>\r\n          <div class=\"ffg-detail__insight ffg-detail__extra\"><span id=\"ffg-insight\">Bare 3 procentpoint mere ville give jer 000.000 kr. om \u00e5ret.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"ffg-detail__overlay\">\r\n          <span class=\"ffg-detail__lock\">Se hele beregningen herunder<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ffg-gate\" id=\"ffg-gate\">\r\n        <h3>Vil du se hele regnestykket?<\/h3>\r\n        <p class=\"ffg-gate__desc\">S\u00e5 folder vi hele beregningen ud her p\u00e5 siden, blandt andet hvad tabet svarer til i \u00e5rsv\u00e6rk, pr. medarbejder og over 5 \u00e5r.<\/p>\r\n        <div class=\"ffg-gate__fields\">\r\n          <input type=\"text\" id=\"ffg-name\" placeholder=\"Dit navn\" autocomplete=\"name\">\r\n          <input type=\"text\" id=\"ffg-company\" placeholder=\"Virksomhed\" autocomplete=\"organization\">\r\n          <input type=\"email\" id=\"ffg-email\" placeholder=\"Din arbejdsmail\" autocomplete=\"email\">\r\n        <\/div>\r\n        <button class=\"ffg-btn\" id=\"ffg-unlock\">Vis mig hele beregningen<\/button>\r\n        <div class=\"ffg-error\" id=\"ffg-formError\">Udfyld venligst alle felter, og tjek, at mailen er korrekt.<\/div>\r\n        <p class=\"ffg-gate__privacy\">Ved at klikke accepterer du, at Bjorn Lunden behandler dine oplysninger og m\u00e5 kontakte dig om relevante l\u00f8sninger til tidsregistrering og projektstyring. Du kan til enhver tid framelde dig. L\u00e6s mere i vores <a href=\"https:\/\/bjornlunden.com\/dk\/persondatapolitik\/\" style=\"color:inherit; text-decoration:underline;\">persondatapolitik<\/a>.<\/p>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ffg-unlocked\" id=\"ffg-unlockedBox\">\r\n    <p id=\"ffg-unlockedText\"><strong>Her er hele regnestykket.<\/strong> Du kan stadig justere tallene herover, s\u00e5 f\u00f8lger beregningen med.<\/p>\r\n    <div class=\"ffg-sysq\" id=\"ffg-sysq\">\r\n      <div class=\"ffg-sysq__ask\" id=\"ffg-sysqAsk\">\r\n        <label class=\"ffg-sysq__label\" for=\"ffg-sysqSelect\">\u00c9n ting til, helt frivilligt: Hvad bruger I til tidsregistrering i dag?<\/label>\r\n        <select class=\"ffg-sysq__select\" id=\"ffg-sysqSelect\">\r\n          <option value=\"\" selected disabled>V\u00e6lg system<\/option>\r\n          <option value=\"AutoPilot\">AutoPilot<\/option>\r\n          <option value=\"TimeLog\">TimeLog<\/option>\r\n          <option value=\"Milient\">Milient<\/option>\r\n          <option value=\"Intempus\">Intempus<\/option>\r\n          <option value=\"Excel\/regneark\">Excel\/regneark<\/option>\r\n          <option value=\"Ikke noget fast\">Ikke noget fast<\/option>\r\n          <option value=\"Andet system\">Andet system<\/option>\r\n        <\/select>\r\n      <\/div>\r\n      <p class=\"ffg-sysq__thanks\" id=\"ffg-sysqThanks\">Tak! Det hj\u00e6lper os med at forst\u00e5, hvad branchen bruger i dag. \ud83d\udc3b<\/p>\r\n      <div id=\"ffg-sysqOther\" style=\"display:none;\">\r\n        <div style=\"display:flex; gap:8px; max-width:360px;\">\r\n          <input type=\"text\" id=\"ffg-sysqOtherInput\" placeholder=\"Hvilket system?\" style=\"flex:1; min-width:0; font-family:'Poppins',sans-serif; font-size:13px; padding:10px 14px; border:1px solid var(--ffg-line); border-radius:10px;\">\r\n          <button class=\"ffg-chip\" id=\"ffg-sysqOtherSend\" style=\"border-color: var(--ffg-natt);\">Send<\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ffg-value\" id=\"ffg-valueBlock\">\r\n    <div class=\"ffg-value__head\">\r\n      <h3>S\u00e5dan lukker EazyProject hullet<\/h3>\r\n      <p>De timer, I mangler, er sj\u00e6ldent timer, I ikke har arbejdet. De n\u00e5ede bare aldrig frem til en faktura. Pr\u00f8v det p\u00e5 jeres egne projekter i 14 dage.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"ffg-value__list\">\r\n      <div class=\"ffg-value__item\">\r\n        <h4>Timer registreret med det samme<\/h4>\r\n        <p>Ogs\u00e5 fra mobilen, s\u00e5 de sm\u00e5 opgaver ikke forsvinder inden fredag.<\/p>\r\n      <\/div>\r\n      <div class=\"ffg-value__item\">\r\n        <h4>Faktureringsgraden l\u00f8bende<\/h4>\r\n        <p>F\u00f8lg den pr. medarbejder og projekt, mens der stadig er tid til at rette op.<\/p>\r\n      <\/div>\r\n      <div class=\"ffg-value__item\">\r\n        <h4>Ekstraarbejde med p\u00e5 fakturaen<\/h4>\r\n        <p>Alle timer h\u00f8rer til et projekt og en fase, s\u00e5 I kan se, hvad der ligger ud over aftalen.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"ffg-value__cta\">\r\n      <button class=\"ffg-btn ffg-btn--inline\" onclick=\"window.location.href='https:\/\/www.bjornlunden.com\/dk\/'\">Pr\u00f8v EazyProject gratis<\/button>\r\n      <ul class=\"ffg-value__perks\">\r\n        <li>Afpr\u00f8v demoen uden binding. Ingen registrering af betalingskort p\u00e5kr\u00e6vet.<\/li>\r\n        <li>Du modtager automatisk en e-mail med dine loginoplysninger.<\/li>\r\n        <li>Adgang til alle funktioner og ubegr\u00e6nset teknisk support under hele pr\u00f8veperioden.<\/li>\r\n      <\/ul>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ffg-foot\">\r\n    <span>Beregningen antager 1.600 disponible timer pr. medarbejder pr. \u00e5r.<\/span>\r\n    <span>#EazyProject #BjornLunden \ud83d\udc3b<\/span>\r\n  <\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  var HOURS_PER_YEAR = 1600;\r\n\r\n  var emp = document.getElementById('ffg-emp');\r\n  var rate = document.getElementById('ffg-rate');\r\n  var current = document.getElementById('ffg-current');\r\n  var target = document.getElementById('ffg-target');\r\n  var unlocked = false;\r\n\r\n  \/\/ LinkedIn Lead Gen-trafik ankommer med ?src=li-leadgen og har allerede afgivet data\r\n  var LI_MODE = \/(?:\\?|&)src=li-leadgen\/.test(window.location.search);\r\n\r\n  var fmt = new Intl.NumberFormat('da-DK', { maximumFractionDigits: 0 });\r\n  function kr(n) { return fmt.format(Math.round(n)) + ' kr.'; }\r\n\r\n  var displayed = 0;\r\n  var animFrame = null;\r\n\r\n  function animateTo(el, value) {\r\n    if (animFrame) cancelAnimationFrame(animFrame);\r\n    var start = displayed;\r\n    var diff = value - start;\r\n    var t0 = null;\r\n    var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n    if (reduce || Math.abs(diff) < 1) {\r\n      displayed = value;\r\n      el.textContent = kr(value);\r\n      return;\r\n    }\r\n    function step(ts) {\r\n      if (!t0) t0 = ts;\r\n      var p = Math.min((ts - t0) \/ 350, 1);\r\n      var eased = 1 - Math.pow(1 - p, 3);\r\n      displayed = start + diff * eased;\r\n      el.textContent = kr(displayed);\r\n      if (p < 1) animFrame = requestAnimationFrame(step);\r\n    }\r\n    animFrame = requestAnimationFrame(step);\r\n  }\r\n\r\n  function calc() {\r\n    var e = +emp.value, r = +rate.value, c = +current.value, t = +target.value;\r\n    if (t < c) { t = c; target.value = c; }\r\n    return {\r\n      e: e, r: r, c: c, t: t,\r\n      gapHours: e * HOURS_PER_YEAR * (t - c) \/ 100,\r\n      perPoint: e * HOURS_PER_YEAR * 0.01 * r\r\n    };\r\n  }\r\n\r\n  function update() {\r\n    var v = calc();\r\n    var lost = v.gapHours * v.r;\r\n\r\n    document.getElementById('ffg-empVal').textContent = v.e;\r\n    document.getElementById('ffg-rateVal').textContent = fmt.format(v.r) + ' kr.';\r\n    document.getElementById('ffg-currentVal').textContent = v.c + ' %';\r\n    document.getElementById('ffg-targetVal').textContent = v.t + ' %';\r\n\r\n    animateTo(document.getElementById('ffg-lost'), lost);\r\n    document.getElementById('ffg-lostSub').textContent =\r\n      lost === 0 ? 'Flot! I rammer allerede jeres m\u00e5l.' : 'i forhold til jeres m\u00e5l p\u00e5 ' + v.t + ' %';\r\n\r\n    \/\/ Detaljerne opdateres kun, n\u00e5r de er l\u00e5st op.\r\n    \/\/ De blurrede placeholder-tal forbliver statiske, s\u00e5 de ikke kan afl\u00e6ses gennem blur.\r\n    if (unlocked) {\r\n      var lostYear = v.gapHours * v.r;\r\n      document.getElementById('ffg-perMonth').textContent = kr(lostYear \/ 12);\r\n      document.getElementById('ffg-perPoint').textContent = kr(v.perPoint);\r\n      document.getElementById('ffg-hoursRow').textContent = fmt.format(Math.round(v.gapHours)) + ' timer';\r\n      document.getElementById('ffg-fteRow').textContent =\r\n        (Math.round(v.gapHours \/ HOURS_PER_YEAR * 10) \/ 10).toString().replace('.', ',') + ' \u00e5rsv\u00e6rk';\r\n      document.getElementById('ffg-perEmp').textContent = kr(v.e > 0 ? lostYear \/ v.e : 0);\r\n      document.getElementById('ffg-fiveYear').textContent = kr(lostYear * 5);\r\n\r\n      var step = Math.min(3, Math.max(v.t - v.c, 0));\r\n      document.getElementById('ffg-insight').textContent = step > 0\r\n        ? 'Bare ' + step + ' procentpoint mere ville give jer ' + kr(v.perPoint * step) + ' om \u00e5ret.'\r\n        : 'I rammer allerede jeres m\u00e5l. Sp\u00f8rgsm\u00e5let er, om I kan holde niveauet, n\u00e5r I vokser.';\r\n    }\r\n  }\r\n\r\n  \/\/ GTM-events: g\u00f8r anonyme brugere til retargeting-audiences og funnel-data\r\n  function track(event, data) {\r\n    window.dataLayer = window.dataLayer || [];\r\n    window.dataLayer.push(Object.assign({ event: event }, data || {}));\r\n  }\r\n\r\n  var hasEngaged = false;\r\n  [emp, rate, current, target].forEach(function (el) {\r\n    el.addEventListener('input', function () {\r\n      update();\r\n      if (!hasEngaged) {\r\n        hasEngaged = true;\r\n        track('calculator_engaged', { tool: 'faktureringsgrad-beregner' });\r\n        \/\/ LinkedIn-trafik har allerede afgivet data, s\u00e5 EazyProject-afsnittet\r\n        \/\/ vises, s\u00e5 snart de har sat deres egne tal ind\r\n        if (LI_MODE) document.getElementById('ffg-valueBlock').style.display = 'block';\r\n      }\r\n    });\r\n    \/\/ Ved slip af slideren: send v\u00e6rdierne, hvis brugeren er kendt (efter unlock eller via LinkedIn)\r\n    el.addEventListener('change', function () {\r\n      if (!unlocked) return;\r\n      var v = calc();\r\n      track('calculator_values', {\r\n        tool: 'faktureringsgrad-beregner',\r\n        medarbejdere: v.e,\r\n        timepris: v.r,\r\n        faktureringsgrad_nu: v.c,\r\n        maal: v.t,\r\n        beregnet_tab_aar: Math.round(v.gapHours * v.r)\r\n      });\r\n    });\r\n  });\r\n\r\n  \/\/ Branchevalg justerer branchem\u00e5let og hint-teksten\r\n  var industrySel = document.getElementById('ffg-industry');\r\n  var targetHint = target.closest('.ffg-field').querySelector('.ffg-field__hint');\r\n\r\n  industrySel.addEventListener('change', function () {\r\n    var opt = industrySel.options[industrySel.selectedIndex];\r\n    var t = +opt.dataset.target;\r\n    target.value = t;\r\n    targetHint.textContent = opt.dataset.hint;\r\n    document.getElementById('ffg-industryHint').textContent = 'Branchem\u00e5let er justeret til ' + t + ' %. Du kan stadig \u00e6ndre det.';\r\n    track('calculator_industry_selected', { tool: 'faktureringsgrad-beregner', branche: industrySel.value });\r\n    update();\r\n  });\r\n\r\n  document.getElementById('ffg-unlock').addEventListener('click', function () {\r\n    var name = document.getElementById('ffg-name').value.trim();\r\n    var company = document.getElementById('ffg-company').value.trim();\r\n    var email = document.getElementById('ffg-email').value.trim();\r\n    var industry = industrySel.value;\r\n    var ok = name && company && industry && \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/.test(email);\r\n    document.getElementById('ffg-formError').textContent = industry\r\n      ? 'Udfyld venligst alle felter, og tjek, at mailen er korrekt.'\r\n      : 'V\u00e6lg jeres branche \u00f8verst i beregneren, og udfyld alle felter.';\r\n    document.getElementById('ffg-formError').style.display = ok ? 'none' : 'block';\r\n    if (!ok) return;\r\n\r\n    var v = calc();\r\n\r\n    \/\/ TODO (Happy Horizon): send lead + beregning til Zoho her (webhook\/API).\r\n    var lostYear = Math.round(v.gapHours * v.r);\r\n    var payload = {\r\n      navn: name,\r\n      virksomhed: company,\r\n      email: email,\r\n      branche: industry,\r\n      medarbejdere: v.e,\r\n      timepris: v.r,\r\n      faktureringsgrad_nu: v.c,\r\n      maal: v.t,\r\n      beregnet_tab_aar: lostYear,\r\n      beregnet_tab_maaned: Math.round(lostYear \/ 12),\r\n      beregnet_tab_5_aar: lostYear * 5,\r\n      ikke_fakturerede_timer: Math.round(v.gapHours),\r\n      svarer_til_aarsvaerk: Math.round(v.gapHours \/ HOURS_PER_YEAR * 10) \/ 10,\r\n      kilde: 'faktureringsgrad-beregner'\r\n    };\r\n    console.log('MQL payload:', payload);\r\n    track('calculator_lead_submitted', { tool: 'faktureringsgrad-beregner', branche: industry });\r\n\r\n    unlocked = true;\r\n    document.getElementById('ffg-detail').classList.remove('ffg-locked');\r\n    document.getElementById('ffg-gate').style.display = 'none';\r\n    document.getElementById('ffg-unlockedBox').style.display = 'flex';\r\n    document.getElementById('ffg-valueBlock').style.display = 'block';\r\n    update();\r\n  });\r\n\r\n  \/\/ Frivilligt system-sp\u00f8rgsm\u00e5l efter unlock\r\n  var sysqSelect = document.getElementById('ffg-sysqSelect');\r\n  sysqSelect.addEventListener('change', function () {\r\n    var system = sysqSelect.value;\r\n\r\n    if (system === 'Andet system') {\r\n      \/\/ Vis fritekstfelt til den lange hale i stedet for at sende med det samme\r\n      document.getElementById('ffg-sysqAsk').style.display = 'none';\r\n      document.getElementById('ffg-sysqOther').style.display = 'block';\r\n      document.getElementById('ffg-sysqOtherInput').focus();\r\n      return;\r\n    }\r\n\r\n    sendSystemAnswer(system, null);\r\n  });\r\n\r\n  document.getElementById('ffg-sysqOtherSend').addEventListener('click', function () {\r\n    var text = document.getElementById('ffg-sysqOtherInput').value.trim();\r\n    sendSystemAnswer('Andet system', text || null);\r\n  });\r\n\r\n  function sendSystemAnswer(system, otherText) {\r\n    \/\/ TODO (Happy Horizon): opdater kontakten i HubSpot med \"nuvaerende_system\" (+ evt. \"nuvaerende_system_andet\")\r\n    console.log('System answer:', system, otherText);\r\n    track('calculator_system_answer', {\r\n      tool: 'faktureringsgrad-beregner',\r\n      system: system,\r\n      system_andet: otherText || undefined\r\n    });\r\n    document.getElementById('ffg-sysqAsk').style.display = 'none';\r\n    document.getElementById('ffg-sysqOther').style.display = 'none';\r\n    document.getElementById('ffg-sysqThanks').style.display = 'block';\r\n  }\r\n\r\n  \/\/ LinkedIn Lead Gen-mode: data er allerede afgivet, s\u00e5 beregningen er \u00e5ben fra start.\r\n  \/\/ EazyProject-afsnittet holdes tilbage, indtil de har sat deres egne tal ind.\r\n  if (LI_MODE) {\r\n    unlocked = true;\r\n    document.getElementById('ffg-detail').classList.remove('ffg-locked');\r\n    document.getElementById('ffg-gate').style.display = 'none';\r\n    document.getElementById('ffg-unlockedBox').style.display = 'flex';\r\n    document.getElementById('ffg-valueBlock').style.display = 'none';\r\n    document.getElementById('ffg-unlockedText').innerHTML =\r\n      '<strong>Tak for din interesse!<\/strong> Hele beregningen er \u00e5ben herover. S\u00e6t jeres egne tal ind og se, hvad forskellen koster jer.';\r\n    track('calculator_ungated_leadgen', { tool: 'faktureringsgrad-beregner' });\r\n  }\r\n\r\n  update();\r\n})();\r\n<\/script>\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>Gratis beregner Er jeres faktureringsgrad h\u00f8j nok? S\u00e6t jeres egne tal ind og se med det samme, hvor meget oms\u00e6tning der ligger gemt i jeres ikke-fakturerede timer. Det tager 30 sekunder. Jeres branche V\u00e6lg brancheArkitekterIngeni\u00f8rerKonsulenter og r\u00e5dgivereAnden projektbaseret virksomhed Vi tilpasser m\u00e5let efter jeres branche Antal medarbejdere 10 Medarbejdere, der arbejder p\u00e5 projekter Gennemsnitlig timepris [&hellip;]<\/p>\n","protected":false},"author":34,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-70068","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/pages\/70068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/comments?post=70068"}],"version-history":[{"count":7,"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/pages\/70068\/revisions"}],"predecessor-version":[{"id":70079,"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/pages\/70068\/revisions\/70079"}],"wp:attachment":[{"href":"https:\/\/bjornlunden.com\/dk\/wp-json\/wp\/v2\/media?parent=70068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}