{"product_id":"bradford-factor","title":"Bradford Factor Calculator","description":"\u003cstyle\u003e\n.bf-calculator {\n  --ink: #0f172a;\n  --muted: #475569;\n  --border: #e2e8f0;\n  --surface: #ffffff;\n  --tint: #f8fafc;\n  --primary: #1d4ed8;\n  --accent: #c2410c;\n  --accent-hover: #9a3412;\n  --chart-1: #1e40af;\n  --chart-2: #0d9488;\n  --chart-3: #7c3aed;\n  --chart-4: #be185d;\n  --chart-5: #334155;\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  color: var(--ink);\n  background: var(--surface);\n  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n  font-size: 15px;\n  line-height: 1.55;\n  container-type: inline-size;\n}\n.bf-calculator,\n.bf-calculator *,\n.bf-calculator *::before,\n.bf-calculator *::after {\n  box-sizing: border-box;\n}\n.bf-calculator button,\n.bf-calculator input,\n.bf-calculator select {\n  font: inherit;\n}\n.bf-calculator button,\n.bf-calculator input,\n.bf-calculator select,\n.bf-calculator summary,\n.bf-calculator a {\n  -webkit-tap-highlight-color: transparent;\n}\n.bf-calculator :focus-visible {\n  outline: 3px solid rgba(29, 78, 216, .34);\n  outline-offset: 2px;\n}\n.bf-shell {\n  display: grid;\n  gap: 24px;\n  min-width: 0;\n}\n.bf-header {\n  display: grid;\n  gap: 16px;\n  padding: 24px;\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);\n  box-shadow: 0 1px 2px rgba(15, 23, 42, .06);\n  min-width: 0;\n}\n.bf-heading-row {\n  display: grid;\n  gap: 8px;\n  min-width: 0;\n}\n.bf-heading-row h2,\n.bf-section-title,\n.bf-education h2,\n.bf-education h3 {\n  margin: 0;\n  color: var(--ink);\n}\n.bf-heading-row h2 {\n  font-size: 24px;\n  line-height: 1.25;\n  font-weight: 700;\n}\n.bf-heading-row p {\n  margin: 0;\n  max-width: 760px;\n  color: var(--muted);\n}\n.bf-pills {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n  min-width: 0;\n}\n.bf-pill {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  min-height: 32px;\n  padding: 4px 10px;\n  border: 1px solid var(--border);\n  border-radius: 999px;\n  background: var(--surface);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  font-variant-numeric: tabular-nums;\n  min-width: 0;\n}\n.bf-pill strong {\n  color: var(--ink);\n  font-weight: 700;\n}\n.bf-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 12px;\n  align-items: center;\n  min-width: 0;\n}\n.bf-button {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 10px;\n  min-height: 48px;\n  padding: 12px 18px;\n  border: 1px solid transparent;\n  border-radius: 6px;\n  cursor: pointer;\n  font-size: 15px;\n  font-weight: 650;\n  line-height: 1.2;\n  white-space: nowrap;\n  transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease;\n  min-width: 0;\n}\n.bf-button:hover {\n  box-shadow: 0 2px 5px rgba(15, 23, 42, .12);\n  transform: translateY(-1px);\n}\n.bf-button:active {\n  transform: translateY(0);\n  box-shadow: none;\n}\n.bf-download {\n  background: var(--accent);\n  color: #ffffff;\n  border-color: var(--accent);\n}\n.bf-download:hover,\n.bf-download:active {\n  background: var(--accent-hover);\n  border-color: var(--accent-hover);\n}\n.bf-reset {\n  background: var(--surface);\n  color: var(--ink);\n  border-color: #cbd5e1;\n}\n.bf-reset:hover {\n  background: var(--tint);\n  border-color: #94a3b8;\n}\n.bf-button svg {\n  width: 20px;\n  height: 20px;\n  flex: 0 0 20px;\n}\n.bf-workspace {\n  display: grid;\n  gap: 24px;\n  align-items: start;\n  min-width: 0;\n}\n.bf-panel,\n.bf-section {\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  background: var(--surface);\n  box-shadow: 0 1px 2px rgba(15, 23, 42, .06);\n  min-width: 0;\n}\n.bf-panel {\n  padding: 24px;\n}\n.bf-section {\n  padding: 24px;\n}\n.bf-section-head {\n  display: grid;\n  gap: 4px;\n  margin-bottom: 20px;\n  min-width: 0;\n}\n.bf-section-title {\n  font-size: 18px;\n  line-height: 1.35;\n  font-weight: 650;\n}\n.bf-section-subtitle {\n  margin: 0;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.bf-form-grid {\n  display: grid;\n  gap: 16px;\n  min-width: 0;\n}\n.bf-field {\n  display: grid;\n  gap: 8px;\n  align-content: start;\n  min-width: 0;\n}\n.bf-label {\n  color: var(--ink);\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 1.35;\n}\n.bf-control {\n  width: 100%;\n  min-width: 0;\n  min-height: 48px;\n  padding: 11px 12px;\n  border: 1px solid #cbd5e1;\n  border-radius: 6px;\n  background: #ffffff;\n  color: var(--ink);\n  font-size: 15px;\n  font-weight: 400;\n  line-height: 1.35;\n  font-variant-numeric: tabular-nums;\n  transition: border-color .16s ease, box-shadow .16s ease;\n}\n.bf-control:hover {\n  border-color: #94a3b8;\n}\n.bf-control:focus {\n  border-color: var(--primary);\n  box-shadow: 0 0 0 3px rgba(29, 78, 216, .12);\n  outline: none;\n}\n.bf-control[aria-invalid=\"true\"] {\n  border-color: #b91c1c;\n  box-shadow: 0 0 0 3px rgba(185, 28, 28, .1);\n}\n.bf-helper,\n.bf-error {\n  min-height: 40px;\n  margin: 0;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 1.5;\n}\n.bf-helper {\n  color: var(--muted);\n}\n.bf-error {\n  color: #991b1b;\n}\n.bf-formula-note {\n  display: grid;\n  gap: 8px;\n  margin-top: 20px;\n  padding: 12px;\n  border: 1px solid #bfdbfe;\n  border-radius: 6px;\n  background: #eff6ff;\n  color: #1e3a8a;\n  font-size: 13px;\n  font-weight: 500;\n  min-width: 0;\n}\n.bf-formula-note strong {\n  color: #172554;\n}\n.bf-results-panel {\n  display: grid;\n  gap: 16px;\n  min-width: 0;\n}\n.bf-primary-result {\n  display: grid;\n  gap: 8px;\n  padding: 20px;\n  border: 1px solid #bfdbfe;\n  border-radius: 8px;\n  background: #eff6ff;\n  min-width: 0;\n}\n.bf-result-kicker {\n  color: #1e3a8a;\n  font-size: 13px;\n  font-weight: 650;\n  letter-spacing: .02em;\n  text-transform: uppercase;\n}\n.bf-primary-value {\n  color: #172554;\n  font-size: 30px;\n  line-height: 1.1;\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n  overflow-wrap: anywhere;\n}\n.bf-result-summary {\n  margin: 0;\n  color: #1e3a8a;\n  font-size: 13px;\n  font-weight: 500;\n}\n.bf-result-grid {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 12px;\n  min-width: 0;\n}\n.bf-result-card {\n  display: grid;\n  gap: 6px;\n  align-content: start;\n  min-height: 112px;\n  padding: 16px;\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  background: var(--surface);\n  min-width: 0;\n}\n.bf-result-label {\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 600;\n}\n.bf-card-value {\n  color: var(--ink);\n  font-size: 20px;\n  line-height: 1.2;\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n  overflow-wrap: anywhere;\n}\n.bf-result-detail {\n  margin: 0;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 1.4;\n}\n.bf-interpretation {\n  padding: 12px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.bf-interpretation strong {\n  color: var(--ink);\n}\n.bf-equation-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: 12px;\n  min-width: 0;\n}\n.bf-equation-card {\n  display: grid;\n  gap: 6px;\n  padding: 16px;\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  background: var(--tint);\n  min-width: 0;\n}\n.bf-equation-symbol {\n  color: var(--primary);\n  font-size: 18px;\n  font-weight: 700;\n}\n.bf-equation-value {\n  color: var(--ink);\n  font-size: 20px;\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n  overflow-wrap: anywhere;\n}\n.bf-equation-label {\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.bf-chart-card {\n  display: grid;\n  gap: 20px;\n  min-width: 0;\n}\n.bf-chart-cluster {\n  display: grid;\n  gap: 20px;\n  justify-content: center;\n  align-items: end;\n  min-width: 0;\n}\n.bf-chart-visual-wrap {\n  display: grid;\n  gap: 12px;\n  width: min(100%, 760px);\n  min-width: 0;\n}\n.bf-chart-visual {\n  width: 100%;\n  min-width: 0;\n  min-height: 300px;\n}\n.bf-chart-visual svg {\n  display: block;\n  width: 100%;\n  height: auto;\n  min-width: 0;\n}\n.bf-chart-empty {\n  display: none;\n  width: 100%;\n  min-height: 88px;\n  place-items: center;\n  padding: 16px;\n  border: 1px dashed #94a3b8;\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  text-align: center;\n  font-size: 13px;\n  font-weight: 600;\n}\n.bf-chart-empty.bf-is-visible {\n  display: grid;\n}\n.bf-legend {\n  display: grid;\n  gap: 10px;\n  align-content: center;\n  width: min(100%, 360px);\n  min-width: 0;\n}\n.bf-legend-row {\n  display: grid;\n  grid-template-columns: 14px minmax(0, auto) minmax(0, auto);\n  gap: 10px;\n  align-items: center;\n  justify-content: start;\n  min-width: 0;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n}\n.bf-swatch {\n  width: 14px;\n  height: 14px;\n  border-radius: 3px;\n}\n.bf-swatch-other {\n  background: var(--chart-1);\n}\n.bf-swatch-current {\n  background: var(--chart-2);\n}\n.bf-swatch-benchmark {\n  height: 3px;\n  border-radius: 999px;\n  background: var(--chart-4);\n}\n.bf-legend-value {\n  color: var(--ink);\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n}\n.bf-chart-callout,\n.bf-table-note {\n  margin-top: 16px;\n  padding: 10px 12px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 500;\n  min-width: 0;\n}\n.bf-chart-callout strong,\n.bf-table-note strong {\n  color: var(--ink);\n}\n.bf-chart-summary {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n.bf-table-wrap {\n  width: 100%;\n  min-width: 0;\n  overflow-x: auto;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n}\n.bf-table {\n  width: 100%;\n  min-width: 560px;\n  border-collapse: collapse;\n  font-size: 13px;\n  font-variant-numeric: tabular-nums;\n}\n.bf-table th,\n.bf-table td {\n  padding: 10px 12px;\n  border-bottom: 1px solid var(--border);\n  text-align: left;\n  vertical-align: middle;\n}\n.bf-table th {\n  background: #e2e8f0;\n  color: var(--ink);\n  font-weight: 700;\n  white-space: nowrap;\n}\n.bf-table td {\n  color: var(--muted);\n  background: var(--surface);\n}\n.bf-table td.bf-numeric,\n.bf-table th.bf-numeric {\n  text-align: right;\n}\n.bf-table tbody tr:last-child td {\n  border-bottom: 0;\n}\n.bf-table tbody tr.bf-current-row td {\n  background: #ecfdf5;\n  color: #064e3b;\n  font-weight: 650;\n}\n.bf-safe-chart-stack .bf-chart-cluster {\n  grid-template-columns: minmax(0, 1fr) !important;\n  row-gap: 24px !important;\n}\n.bf-safe-chart-stack .bf-legend {\n  margin-top: 0 !important;\n  justify-self: center;\n}\n.bf-safe-chart-stack .bf-chart-callout {\n  margin-top: 20px !important;\n}\n.bf-safe-table-stack .bf-table-note {\n  margin-top: 20px !important;\n}\n.bf-advanced {\n  min-width: 0;\n}\n.bf-advanced summary {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 12px;\n  cursor: pointer;\n  list-style: none;\n  color: var(--ink);\n  font-size: 18px;\n  font-weight: 650;\n  min-width: 0;\n}\n.bf-advanced summary::-webkit-details-marker {\n  display: none;\n}\n.bf-advanced summary::after {\n  content: \"+\";\n  display: grid;\n  place-items: center;\n  width: 28px;\n  height: 28px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  color: var(--primary);\n  font-size: 20px;\n  line-height: 1;\n  flex: 0 0 28px;\n}\n.bf-advanced[open] summary::after {\n  content: \"−\";\n}\n.bf-advanced-content {\n  display: grid;\n  gap: 16px;\n  margin-top: 20px;\n  min-width: 0;\n}\n.bf-education {\n  display: grid;\n  gap: 24px;\n  padding: 24px;\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  background: var(--surface);\n  min-width: 0;\n}\n.bf-education-section {\n  display: grid;\n  gap: 12px;\n  max-width: 900px;\n  min-width: 0;\n}\n.bf-education h2 {\n  font-size: 22px;\n  line-height: 1.3;\n  font-weight: 700;\n}\n.bf-education h3 {\n  font-size: 18px;\n  line-height: 1.35;\n  font-weight: 650;\n}\n.bf-education p,\n.bf-education ul {\n  margin: 0;\n  color: var(--muted);\n}\n.bf-education ul {\n  padding-left: 22px;\n}\n.bf-education li + li {\n  margin-top: 8px;\n}\n.bf-education a {\n  color: #1d4ed8;\n  text-decoration: underline;\n  text-underline-offset: 2px;\n}\n.bf-education a:hover {\n  color: #1e40af;\n}\n.bf-caution {\n  padding: 14px 16px;\n  border-left: 4px solid var(--accent);\n  border-radius: 0 6px 6px 0;\n  background: #fff7ed;\n  color: #7c2d12;\n}\n.bf-caution strong {\n  color: #7c2d12;\n}\n@container (min-width: 560px) {\n  .bf-form-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .bf-advanced-content {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n@container (min-width: 640px) {\n  .bf-chart-cluster {\n    grid-template-columns: minmax(0, 760px) minmax(220px, 320px);\n    column-gap: 24px;\n  }\n}\n@container (min-width: 900px) {\n  .bf-workspace {\n    grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);\n  }\n}\n@container (max-width: 639px) {\n  .bf-equation-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .bf-chart-cluster {\n    justify-items: center;\n  }\n  .bf-legend {\n    width: min(100%, 420px);\n  }\n}\n@container (max-width: 420px) {\n  .bf-header,\n  .bf-panel,\n  .bf-section,\n  .bf-education {\n    padding: 16px;\n  }\n  .bf-toolbar {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .bf-button {\n    width: 100%;\n  }\n  .bf-result-grid {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .bf-equation-grid {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .bf-chart-visual {\n    min-height: 260px;\n  }\n  .bf-table-note,\n  .bf-chart-callout {\n    margin-top: 12px;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"bf-calculator\" data-calculator-root\u003e\n  \u003cdiv class=\"bf-shell\"\u003e\n    \u003csection class=\"bf-header\" aria-labelledby=\"bf-title\"\u003e\n      \u003cdiv class=\"bf-heading-row\"\u003e\n        \u003ch2 id=\"bf-title\"\u003eBradford Factor Calculator\u003c\/h2\u003e\n        \u003cp\u003eMeasure how strongly repeated absence spells affect the Bradford score, compare the result with a chosen review benchmark, and export the current analysis to Excel.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bf-pills\" aria-label=\"Live calculator summary\"\u003e\n        \u003cspan class=\"bf-pill\"\u003eAbsence spells \u003cstrong id=\"bf-pill-spells\"\u003e3\u003c\/strong\u003e\u003c\/span\u003e\n        \u003cspan class=\"bf-pill\"\u003eDays absent \u003cstrong id=\"bf-pill-days\"\u003e10\u003c\/strong\u003e\u003c\/span\u003e\n        \u003cspan class=\"bf-pill\"\u003eBradford score \u003cstrong id=\"bf-pill-score\"\u003e90\u003c\/strong\u003e\u003c\/span\u003e\n        \u003cspan class=\"bf-pill\"\u003eBenchmark \u003cstrong id=\"bf-pill-benchmark\"\u003eAbove 50\u003c\/strong\u003e\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003cdiv class=\"bf-toolbar\" aria-label=\"Calculator actions\"\u003e\n      \u003cbutton class=\"bf-button bf-download\" id=\"bf-download\" type=\"button\"\u003e\n        \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"\u003e\n          \u003cpath fill=\"currentColor\" d=\"M5 2h10l4 4v16H5V2Zm9 2.5V7h2.5L14 4.5ZM7 4v16h10V9h-5V4H7Zm2.2 8.1h1.9l1 1.8 1-1.8H15l-1.9 3 2 3.1h-1.9l-1.1-1.9-1.1 1.9H9.1l2-3.1-1.9-3Z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003cspan\u003eDownload Excel\u003c\/span\u003e\n      \u003c\/button\u003e\n      \u003cbutton class=\"bf-button bf-reset\" id=\"bf-reset\" type=\"button\"\u003e\n        \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"\u003e\n          \u003cpath fill=\"currentColor\" d=\"M12 5a7 7 0 1 1-6.3 4H3l3.5-3.5L10 9H7.8A5 5 0 1 0 12 7V5Z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003cspan\u003eReset\u003c\/span\u003e\n      \u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"bf-workspace\"\u003e\n      \u003csection class=\"bf-panel\" aria-labelledby=\"bf-inputs-title\"\u003e\n        \u003cdiv class=\"bf-section-head\"\u003e\n          \u003ch3 class=\"bf-section-title\" id=\"bf-inputs-title\"\u003eAbsence inputs\u003c\/h3\u003e\n          \u003cp class=\"bf-section-subtitle\"\u003eUse one consistent measurement period for both fields.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-form-grid\"\u003e\n          \u003cdiv class=\"bf-field\"\u003e\n            \u003clabel class=\"bf-label\" for=\"bf-spells\"\u003eNumber of absence spells (S)\u003c\/label\u003e\n            \u003cinput class=\"bf-control\" id=\"bf-spells\" type=\"text\" inputmode=\"numeric\" autocomplete=\"off\" value=\"3\" aria-describedby=\"bf-spells-help bf-spells-error\"\u003e\n            \u003cp class=\"bf-helper\" id=\"bf-spells-help\"\u003eCount separate instances of absence, not individual days.\u003c\/p\u003e\n            \u003cp class=\"bf-error\" id=\"bf-spells-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"bf-field\"\u003e\n            \u003clabel class=\"bf-label\" for=\"bf-days\"\u003eTotal days absent (D)\u003c\/label\u003e\n            \u003cinput class=\"bf-control\" id=\"bf-days\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"10\" aria-describedby=\"bf-days-help bf-days-error\"\u003e\n            \u003cp class=\"bf-helper\" id=\"bf-days-help\"\u003eAdd all absence days in the same measurement period.\u003c\/p\u003e\n            \u003cp class=\"bf-error\" id=\"bf-days-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-formula-note\"\u003e\n          \u003cstrong\u003eFormula: B = S² × D\u003c\/strong\u003e\n          \u003cspan\u003eFrequency is squared, so repeated short absences increase the score much faster than the same days taken in fewer spells.\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/section\u003e\n\n      \u003csection class=\"bf-panel bf-results-panel\" aria-labelledby=\"bf-results-title\"\u003e\n        \u003cdiv class=\"bf-section-head\"\u003e\n          \u003ch3 class=\"bf-section-title\" id=\"bf-results-title\"\u003eLive results\u003c\/h3\u003e\n          \u003cp class=\"bf-section-subtitle\"\u003eThe score is an attendance-pattern indicator, not a diagnosis or automatic employment decision.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-primary-result\"\u003e\n          \u003cspan class=\"bf-result-kicker\"\u003eBradford factor\u003c\/span\u003e\n          \u003cstrong class=\"bf-primary-value\" id=\"bf-score\"\u003e90\u003c\/strong\u003e\n          \u003cp class=\"bf-result-summary\" id=\"bf-live-summary\" aria-live=\"polite\"\u003e3 spells across 10 days produce a Bradford score of 90.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-result-grid\"\u003e\n          \u003cdiv class=\"bf-result-card\"\u003e\n            \u003cspan class=\"bf-result-label\"\u003eFrequency multiplier\u003c\/span\u003e\n            \u003cstrong class=\"bf-card-value\" id=\"bf-multiplier\"\u003e9×\u003c\/strong\u003e\n            \u003cp class=\"bf-result-detail\"\u003eThe squared spell count, S².\u003c\/p\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"bf-result-card\"\u003e\n            \u003cspan class=\"bf-result-label\"\u003eAverage days per spell\u003c\/span\u003e\n            \u003cstrong class=\"bf-card-value\" id=\"bf-average\"\u003e3.33\u003c\/strong\u003e\n            \u003cp class=\"bf-result-detail\"\u003eTotal days divided by absence spells.\u003c\/p\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"bf-result-card\"\u003e\n            \u003cspan class=\"bf-result-label\"\u003eOne-spell baseline\u003c\/span\u003e\n            \u003cstrong class=\"bf-card-value\" id=\"bf-baseline\"\u003e10\u003c\/strong\u003e\n            \u003cp class=\"bf-result-detail\"\u003eScore if the same days occurred in one spell.\u003c\/p\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"bf-result-card\"\u003e\n            \u003cspan class=\"bf-result-label\"\u003eFrequency uplift\u003c\/span\u003e\n            \u003cstrong class=\"bf-card-value\" id=\"bf-uplift\"\u003e80\u003c\/strong\u003e\n            \u003cp class=\"bf-result-detail\"\u003eCurrent score minus the one-spell baseline.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-interpretation\" id=\"bf-interpretation\"\u003e\n\u003cstrong\u003eBenchmark context:\u003c\/strong\u003e This score is 40 points above the selected benchmark of 50. Treat the benchmark as a review prompt, not an automatic sanction.\u003c\/div\u003e\n      \u003c\/section\u003e\n    \u003c\/div\u003e\n\n    \u003csection class=\"bf-section\" aria-labelledby=\"bf-breakdown-title\"\u003e\n      \u003cdiv class=\"bf-section-head\"\u003e\n        \u003ch3 class=\"bf-section-title\" id=\"bf-breakdown-title\"\u003eFormula breakdown\u003c\/h3\u003e\n        \u003cp class=\"bf-section-subtitle\"\u003eEach displayed value comes from the same current-state calculation model.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bf-equation-grid\"\u003e\n        \u003cdiv class=\"bf-equation-card\"\u003e\n          \u003cspan class=\"bf-equation-symbol\"\u003eS\u003c\/span\u003e\n          \u003cstrong class=\"bf-equation-value\" id=\"bf-equation-spells\"\u003e3\u003c\/strong\u003e\n          \u003cspan class=\"bf-equation-label\"\u003eAbsence spells\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-equation-card\"\u003e\n          \u003cspan class=\"bf-equation-symbol\"\u003eS²\u003c\/span\u003e\n          \u003cstrong class=\"bf-equation-value\" id=\"bf-equation-square\"\u003e9\u003c\/strong\u003e\n          \u003cspan class=\"bf-equation-label\"\u003eFrequency multiplier\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-equation-card\"\u003e\n          \u003cspan class=\"bf-equation-symbol\"\u003eD\u003c\/span\u003e\n          \u003cstrong class=\"bf-equation-value\" id=\"bf-equation-days\"\u003e10\u003c\/strong\u003e\n          \u003cspan class=\"bf-equation-label\"\u003eTotal days absent\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-equation-card\"\u003e\n          \u003cspan class=\"bf-equation-symbol\"\u003eB\u003c\/span\u003e\n          \u003cstrong class=\"bf-equation-value\" id=\"bf-equation-score\"\u003e90\u003c\/strong\u003e\n          \u003cspan class=\"bf-equation-label\"\u003eBradford score\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"bf-section bf-chart-card\" id=\"bf-chart-card\" aria-labelledby=\"bf-chart-title\"\u003e\n      \u003cdiv class=\"bf-section-head\"\u003e\n        \u003ch3 class=\"bf-section-title\" id=\"bf-chart-title\"\u003eFrequency sensitivity\u003c\/h3\u003e\n        \u003cp class=\"bf-section-subtitle\" id=\"bf-chart-subtitle\"\u003eSee how the score changes when total absent days stay fixed and only the number of spells changes.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bf-chart-cluster\"\u003e\n        \u003cdiv class=\"bf-chart-visual-wrap\"\u003e\n          \u003cdiv class=\"bf-chart-visual\" id=\"bf-chart-visual\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"bf-chart-empty\" id=\"bf-chart-empty\"\u003eEnter at least one absence spell and a positive number of days to see the sensitivity chart.\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"bf-legend\" id=\"bf-chart-legend\" aria-label=\"Chart legend\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bf-chart-summary\" id=\"bf-chart-summary\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"bf-chart-callout\" id=\"bf-chart-callout\"\u003e\n\u003cstrong\u003eCurrent pattern:\u003c\/strong\u003e Moving from one spell to three spells while keeping 10 absent days raises the score from 10 to 90.\u003c\/div\u003e\n      \u003cdiv class=\"bf-table-wrap\" id=\"bf-table-wrap\"\u003e\n        \u003ctable class=\"bf-table\" id=\"bf-sensitivity-table\"\u003e\n          \u003cthead\u003e\n            \u003ctr\u003e\n              \u003cth scope=\"col\"\u003eAbsence spells\u003c\/th\u003e\n              \u003cth scope=\"col\" class=\"bf-numeric\"\u003eTotal days\u003c\/th\u003e\n              \u003cth scope=\"col\" class=\"bf-numeric\"\u003eBradford score\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eBenchmark comparison\u003c\/th\u003e\n            \u003c\/tr\u003e\n          \u003c\/thead\u003e\n          \u003ctbody id=\"bf-sensitivity-body\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"bf-table-note\" id=\"bf-table-note\"\u003e\n\u003cstrong\u003eTable note:\u003c\/strong\u003e Each row holds total days constant. It isolates the mathematical effect of changing absence frequency.\u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"bf-section\"\u003e\n      \u003cdetails class=\"bf-advanced\" id=\"bf-advanced\"\u003e\n        \u003csummary\u003eAdvanced context\u003c\/summary\u003e\n        \u003cdiv class=\"bf-advanced-content\"\u003e\n          \u003cdiv class=\"bf-field\"\u003e\n            \u003clabel class=\"bf-label\" for=\"bf-benchmark\"\u003eReview benchmark\u003c\/label\u003e\n            \u003cinput class=\"bf-control\" id=\"bf-benchmark\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"50\" aria-describedby=\"bf-benchmark-help bf-benchmark-error\"\u003e\n            \u003cp class=\"bf-helper\" id=\"bf-benchmark-help\"\u003eOptional internal comparison point. It does not change the Bradford score.\u003c\/p\u003e\n            \u003cp class=\"bf-error\" id=\"bf-benchmark-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"bf-field\"\u003e\n            \u003clabel class=\"bf-label\" for=\"bf-period\"\u003eMeasurement period\u003c\/label\u003e\n            \u003cselect class=\"bf-control\" id=\"bf-period\" aria-describedby=\"bf-period-help\"\u003e\n              \u003coption value=\"52 weeks\" selected\u003e52 weeks\u003c\/option\u003e\n              \u003coption value=\"6 months\"\u003e6 months\u003c\/option\u003e\n              \u003coption value=\"12 months\"\u003e12 months\u003c\/option\u003e\n              \u003coption value=\"Not specified\"\u003eNot specified\u003c\/option\u003e\n            \u003c\/select\u003e\n            \u003cp class=\"bf-helper\" id=\"bf-period-help\"\u003eUse the same period consistently when comparing people or teams.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/details\u003e\n    \u003c\/section\u003e\n\n    \u003carticle class=\"bf-education\" aria-labelledby=\"bf-guide-title\"\u003e\n      \u003csection class=\"bf-education-section\"\u003e\n        \u003ch2 id=\"bf-guide-title\"\u003eHow to use the Bradford Factor responsibly\u003c\/h2\u003e\n        \u003cp\u003eThe Bradford Factor estimates the concentration of absence by combining two quantities: the number of separate absence spells and the total number of absent days in one measurement period. Its defining feature is that the spell count is squared. As a result, several short absences can produce a much higher score than one continuous absence with the same total number of days. The calculator is useful for exploring attendance patterns, but the score does not explain why an employee was absent and should not be treated as a stand-alone finding of misconduct, capability, or health status.\u003c\/p\u003e\n        \u003cdiv class=\"bf-caution\"\u003e\n\u003cstrong\u003eImportant:\u003c\/strong\u003e Review thresholds are organisational policy choices. Acas notes that there are no universal legal rules for when absence must be reviewed, and trigger points should lead to a fair conversation rather than an automatic outcome.\u003c\/div\u003e\n      \u003c\/section\u003e\n\n      \u003csection class=\"bf-education-section\"\u003e\n        \u003ch3\u003eInputs: what to enter\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003eNumber of absence spells (S)\u003c\/strong\u003e is the count of separate absence instances during the chosen period. One continuous five-day absence is one spell, not five. Three unrelated one-day absences are three spells. This field is required for a meaningful score and must be a non-negative whole number. A higher spell count has a strong effect because it is squared: changing S from 2 to 4 increases the frequency multiplier from 4 to 16. Common mistakes include counting return-to-work days as new spells without following the organisation’s policy, mixing planned leave with sickness absence, or comparing employees over different periods.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eTotal days absent (D)\u003c\/strong\u003e is the sum of all days included in those spells. Use the same day-counting rule across the organisation—for example, scheduled working days rather than calendar days—unless your policy clearly says otherwise. This field is required for a meaningful score and can include partial days if your recording system supports them. Increasing D raises the score proportionally, while increasing S raises it quadratically. Do not combine unrelated leave types unless the policy explicitly defines them as part of the same measure.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eReview benchmark\u003c\/strong\u003e is an optional comparison value. It does not alter the Bradford formula. The initial example uses 50 because that figure is sometimes cited as a low-score reference, but employers commonly create their own trigger points. Enter the threshold stated in your policy, or leave the field empty to remove benchmark comparisons. A score above a benchmark should initiate a contextual review, not a predetermined sanction.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eMeasurement period\u003c\/strong\u003e labels the analysis and Excel workbook. A 52-week or 12-month period is common, but consistency matters more than the label. Changing the period can change both S and D, so comparisons are valid only when the same window and counting rules are applied. The period selector does not perform date calculations; it records the context you selected.\u003c\/p\u003e\n      \u003c\/section\u003e\n\n      \u003csection class=\"bf-education-section\"\u003e\n        \u003ch3\u003eResults and practical interpretation\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003eBradford factor\u003c\/strong\u003e is the primary result, calculated as B = S² × D. A zero score means there are no recorded absence days or no absence spells. A higher score indicates that the recorded days are spread across more separate spells. There is no universal “good” or “bad” legal score. Interpretation depends on policy, workforce conditions, disability-related absence, pregnancy-related absence, occupational health advice, and other facts that the formula does not contain.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eFrequency multiplier\u003c\/strong\u003e is S². It shows why repeated absences dominate the calculation. \u003cstrong\u003eAverage days per spell\u003c\/strong\u003e is D ÷ S and describes the typical spell length; it is descriptive only and is not part of the Bradford formula. \u003cstrong\u003eOne-spell baseline\u003c\/strong\u003e is the score produced by the same total days in one spell, which equals D. \u003cstrong\u003eFrequency uplift\u003c\/strong\u003e is the current score minus that baseline. It isolates how much of the score arises from the frequency weighting rather than from the total days alone.\u003c\/p\u003e\n        \u003cp\u003eThe frequency sensitivity chart holds D constant and recalculates the score across several spell counts. The highlighted bar is the current spell count; the other bars show alternative frequencies. When a benchmark is entered, the dashed line shows that comparison level. The accompanying table exposes the exact values used by the chart, so it is suitable for checking calculations or documenting a discussion. The chart is not a forecast: it is a controlled mathematical comparison.\u003c\/p\u003e\n      \u003c\/section\u003e\n\n      \u003csection class=\"bf-education-section\"\u003e\n        \u003ch3\u003eFormula, tradeoffs, and common mistakes\u003c\/h3\u003e\n        \u003cp\u003eThe model first squares the number of spells and then multiplies by absent days. For 3 spells and 10 days, S² is 9 and B is 90. With the same 10 days in one spell, B is 10; in five spells, B is 250. This sensitivity can help identify repeated short-term patterns, but it also means the score can escalate rapidly without distinguishing between avoidable absence and legitimate recurring health needs.\u003c\/p\u003e\n        \u003cul\u003e\n          \u003cli\u003eUse the score alongside return-to-work conversations, absence records, job demands, occupational health information, and the employee’s explanation.\u003c\/li\u003e\n          \u003cli\u003eApply one written method consistently, but allow legally required and reasonable adjustments. Disability-related or pregnancy-related absence may need separate treatment.\u003c\/li\u003e\n          \u003cli\u003eProtect attendance and health records. They may contain sensitive personal information and should be collected, accessed, retained, and shared only for defined purposes.\u003c\/li\u003e\n          \u003cli\u003eAvoid ranking employees solely by Bradford score. Different roles, working patterns, part-time schedules, and recording practices can make raw comparisons misleading.\u003c\/li\u003e\n          \u003cli\u003eCheck data quality before acting. Duplicate spells, incorrect day totals, inconsistent periods, and mixing leave categories can materially distort the result.\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/section\u003e\n\n      \u003csection class=\"bf-education-section\"\u003e\n        \u003ch3\u003eFurther guidance\u003c\/h3\u003e\n        \u003cp\u003eFor absence policy design and trigger-point practice, see \u003ca href=\"https:\/\/www.acas.org.uk\/absence-trigger-points\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eAcas guidance on absence trigger points\u003c\/a\u003e and \u003ca href=\"https:\/\/www.acas.org.uk\/creating-absence-policies\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ecreating absence policies\u003c\/a\u003e. For a broader people-management perspective, review the \u003ca href=\"https:\/\/www.cipd.org\/en\/knowledge\/factsheets\/absence-factsheet\/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eCIPD absence management factsheet\u003c\/a\u003e. Employers handling health information should consult the \u003ca href=\"https:\/\/ico.org.uk\/for-organisations\/uk-gdpr-guidance-and-resources\/employment\/information-about-workers-health\/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eICO guidance on workers’ health information\u003c\/a\u003e. UK employers should also consider \u003ca href=\"https:\/\/www.acas.org.uk\/supporting-disabled-people\/disability-related-absence\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eAcas guidance on disability-related absence and reasonable adjustments\u003c\/a\u003e. These sources provide general guidance; local law and the facts of an individual case may require specialist advice.\u003c\/p\u003e\n      \u003c\/section\u003e\n    \u003c\/article\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"FinancialModelsLab","offers":[{"title":"Default Title","offer_id":49909479145715,"sku":"bradford-factor","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0522\/6191\/2762\/files\/bradford-factor.webp?v=1783935350","url":"https:\/\/financialmodelslab.com\/products\/bradford-factor","provider":"Financial Models Lab","version":"1.0","type":"link"}