{"id":2125,"date":"2026-03-05T07:37:41","date_gmt":"2026-03-05T07:37:41","guid":{"rendered":"https:\/\/dr-nutrition.ca\/?page_id=2125"},"modified":"2026-03-05T08:15:37","modified_gmt":"2026-03-05T08:15:37","slug":"preg-risk","status":"publish","type":"page","link":"https:\/\/dr-nutrition.ca\/?page_id=2125","title":{"rendered":"Preg risk"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2125\" class=\"elementor elementor-2125\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e1a1df7 e-flex e-con-boxed e-con e-parent\" data-id=\"e1a1df7\" 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-4defe79 elementor-widget elementor-widget-html\" data-id=\"4defe79\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>DairyRepro \u2014 Ontario 2024<\/title>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Serif+Display:ital@0;1&family=DM+Sans:wght@300;400;500;600&family=Fira+Code:wght@400;500&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n:root {\r\n  --bg: #f4f1eb;\r\n  --bg2: #ece9e1;\r\n  --surface: #ffffff;\r\n  --surface2: #f9f7f3;\r\n  --border: #e0dbd0;\r\n  --border2: #cec8bc;\r\n  --ink: #1a1a18;\r\n  --ink2: #4a4840;\r\n  --ink3: #8a8478;\r\n  --forest: #1e4d35;\r\n  --forest-light: #e8f0eb;\r\n  --forest-mid: #2d6b4a;\r\n  --gold: #b8860b;\r\n  --gold-light: #fdf3d8;\r\n  --red: #c0392b;\r\n  --red-light: #fdecea;\r\n  --blue: #1a5276;\r\n  --blue-light: #e8f0f7;\r\n  --amber: #d68910;\r\n  --amber-light: #fef9e7;\r\n  --teal: #148a7a;\r\n  --teal-light: #e4f5f3;\r\n  --r: 10px;\r\n}\r\n*{box-sizing:border-box;margin:0;padding:0}\r\nhtml{background:#f4f1eb}\r\nbody{font-family:'DM Sans',sans-serif;background:#f4f1eb;color:#1a1a18;min-height:100vh;font-size:14px;}\r\n\r\n\/* SCROLLBAR *\/\r\n::-webkit-scrollbar{width:6px;height:6px}\r\n::-webkit-scrollbar-track{background:var(--bg2)}\r\n::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}\r\n\r\n\/* \u2500\u2500 SIDEBAR \u2500\u2500 *\/\r\n.sidebar{\r\n  position:fixed;top:0;left:0;bottom:0;width:220px;\r\n  background:var(--forest);display:flex;flex-direction:column;\r\n  padding:0;z-index:100;\r\n}\r\n.sidebar-logo{\r\n  padding:24px 20px 20px;border-bottom:1px solid rgba(255,255,255,.1);\r\n  font-family:'DM Serif Display',serif;font-size:22px;color:#fff;\r\n  letter-spacing:-.3px;\r\n}\r\n.sidebar-logo span{color:#7dd4a8;font-style:italic}\r\n.sidebar-label{\r\n  padding:20px 20px 8px;font-size:10px;letter-spacing:2px;\r\n  text-transform:uppercase;color:rgba(255,255,255,.35);font-weight:500;\r\n}\r\n.nav-item{\r\n  display:flex;align-items:center;gap:10px;padding:11px 20px;\r\n  color:rgba(255,255,255,.6);cursor:pointer;transition:all .2s;\r\n  font-size:13px;font-weight:400;border-left:3px solid transparent;\r\n  text-decoration:none;\r\n}\r\n.nav-item:hover{color:#fff;background:rgba(255,255,255,.06)}\r\n.nav-item.active{color:#fff;background:rgba(255,255,255,.1);border-left-color:#7dd4a8}\r\n.nav-icon{font-size:16px;opacity:.8;flex-shrink:0}\r\n.sidebar-farm{\r\n  margin-top:auto;padding:16px 20px;border-top:1px solid rgba(255,255,255,.1);\r\n  font-size:12px;color:rgba(255,255,255,.45);\r\n}\r\n.sidebar-farm strong{display:block;color:rgba(255,255,255,.8);font-size:13px;margin-bottom:2px}\r\n\r\n\/* \u2500\u2500 MAIN \u2500\u2500 *\/\r\n.main{margin-left:220px;min-height:100vh;background:#f4f1eb}\r\n.topbar{\r\n  background:#ffffff;border-bottom:1px solid #e0dbd0;\r\n  padding:0 32px;height:60px;display:flex;align-items:center;\r\n  justify-content:space-between;position:sticky;top:0;z-index:50;\r\n}\r\n.page-title{font-family:'DM Serif Display',serif;font-size:20px;color:var(--ink)}\r\n.topbar-right{display:flex;gap:10px;align-items:center}\r\n.btn{\r\n  display:inline-flex;align-items:center;gap:6px;padding:8px 16px;\r\n  border-radius:7px;border:none;cursor:pointer;\r\n  font-family:'DM Sans',sans-serif;font-size:13px;font-weight:500;transition:all .18s;\r\n}\r\n.btn-primary{background:var(--forest);color:#fff}\r\n.btn-primary:hover{background:var(--forest-mid)}\r\n.btn-ghost{background:transparent;color:var(--ink2);border:1.5px solid var(--border2)}\r\n.btn-ghost:hover{background:var(--bg2);border-color:var(--ink3)}\r\n.btn-sm{padding:6px 12px;font-size:12px}\r\n\r\n.content{padding:28px 32px;background:#f4f1eb}\r\n\r\n\/* \u2500\u2500 SECTION \u2500\u2500 *\/\r\n.section{display:none}\r\n.section.active{display:block}\r\n\r\n\/* \u2500\u2500 DASHBOARD GRID \u2500\u2500 *\/\r\n.dash-grid{display:grid;gap:20px}\r\n.row-kpi{grid-template-columns:repeat(3,1fr)}\r\n.row-mid{grid-template-columns:250px 1fr 320px}\r\n.row-bot{grid-template-columns:1fr 380px}\r\n\/* Alert card body must not clip *\/\r\n.alert-scroll{display:flex;flex-direction:column;gap:8px;overflow:visible}\r\n.alert{\r\n  display:flex;gap:10px;padding:11px 14px;border-radius:8px;\r\n  align-items:flex-start;word-break:break-word;overflow-wrap:break-word;\r\n}\r\n.alert.crit{background:#fdecea;border-left:3px solid #c0392b}\r\n.alert.warn{background:#fdf3d8;border-left:3px solid #d68910}\r\n.alert.good{background:#e8f0eb;border-left:3px solid #2d6b4a}\r\n.alert.info{background:#e8f0f7;border-left:3px solid #1a5276}\r\n\r\n\/* \u2500\u2500 CARD \u2500\u2500 *\/\r\n.card{\r\n  background:#ffffff;border:1px solid #e0dbd0;\r\n  border-radius:var(--r);overflow:hidden;\r\n}\r\n.card-head{\r\n  padding:16px 20px;border-bottom:1px solid #e0dbd0;\r\n  display:flex;align-items:center;justify-content:space-between;background:#ffffff;\r\n}\r\n.card-title{font-weight:600;font-size:13px;color:#1a1a18}\r\n.card-sub{font-size:11px;color:#8a8478}\r\n.card-body{padding:20px;background:#ffffff}\r\n.card-body.p0{padding:0}\r\n\r\n\/* \u2500\u2500 HERO KPI \u2500\u2500 *\/\r\n.kpi-hero{\r\n  padding:24px;display:flex;flex-direction:column;\r\n  border-radius:var(--r);position:relative;overflow:hidden;\r\n  border:1px solid #e0dbd0;background:#ffffff;\r\n}\r\n.kpi-hero::after{\r\n  content:'';position:absolute;bottom:-20px;right:-20px;\r\n  width:100px;height:100px;border-radius:50%;opacity:.06;pointer-events:none;\r\n}\r\n.kpi-hero.forest{background:var(--forest);color:#fff;border-color:var(--forest)}\r\n.kpi-hero.forest::after{background:#fff}\r\n.kpi-hero.gold{background:#fdf3d8;border-color:#e8d080}\r\n.kpi-hero.teal{background:#e4f5f3;border-color:#9addd5}\r\n.kpi-label{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;font-weight:500;opacity:.7;margin-bottom:10px}\r\n.kpi-hero.forest .kpi-label{opacity:.65;color:#fff}\r\n.kpi-value{font-family:'DM Serif Display',serif;font-size:52px;line-height:1;letter-spacing:-1px}\r\n.kpi-hero.forest .kpi-value{color:#fff}\r\n.kpi-unit{font-size:22px;font-family:'DM Sans',sans-serif;font-weight:300;opacity:.7}\r\n.kpi-meta{margin-top:12px;font-size:12px;display:flex;align-items:center;gap:8px}\r\n.kpi-hero.forest .kpi-meta{color:rgba(255,255,255,.7)}\r\n\r\n\/* \u2500\u2500 PERCENTILE GAUGE \u2500\u2500 *\/\r\n.pct-gauge{\r\n  margin-top:14px;\r\n  background:rgba(0,0,0,.08);border-radius:6px;height:6px;\r\n  position:relative;overflow:visible;\r\n}\r\n.kpi-hero.gold .pct-gauge,.kpi-hero.teal .pct-gauge{background:rgba(0,0,0,.1)}\r\n.pct-track{height:100%;border-radius:6px;transition:width 1.2s cubic-bezier(.4,0,.2,1)}\r\n.pct-forest{background:linear-gradient(90deg,#7dd4a8,#2d6b4a)}\r\n.pct-gold{background:linear-gradient(90deg,#f0c040,#b8860b)}\r\n.pct-teal{background:linear-gradient(90deg,#5dd4c8,#148a7a)}\r\n.pct-labels{display:flex;justify-content:space-between;margin-top:5px;font-size:9px;color:var(--ink3);font-family:'Fira Code',monospace}\r\n.kpi-hero.forest .pct-labels{color:rgba(255,255,255,.45)}\r\n.pct-dot{\r\n  position:absolute;top:50%;transform:translateY(-50%);\r\n  width:12px;height:12px;border-radius:50%;border:2px solid var(--surface);\r\n  box-shadow:0 0 0 2px rgba(0,0,0,.2);\r\n}\r\n\r\n\/* \u2500\u2500 BENCHMARK BAND \u2500\u2500 *\/\r\n.bench-band{\r\n  display:flex;height:20px;border-radius:5px;overflow:hidden;margin-bottom:6px;position:relative;\r\n}\r\n.band-seg{height:100%;position:relative}\r\n.band-25{background:#fcd5b5}\r\n.band-50{background:#f5a95a}\r\n.band-75{background:#4caf7d}\r\n.band-90{background:#1e7a50}\r\n.band-marker{\r\n  position:absolute;top:-4px;bottom:-4px;width:3px;border-radius:2px;\r\n  background:var(--ink);z-index:2;\r\n  box-shadow:0 0 0 1.5px #fff;\r\n}\r\n.band-legend{display:flex;gap:12px;font-size:10px;color:var(--ink3);margin-bottom:12px;flex-wrap:wrap}\r\n.band-legend span{display:flex;align-items:center;gap:4px}\r\n.band-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}\r\n\r\n\/* \u2500\u2500 TABLE \u2500\u2500 *\/\r\n.data-table{width:100%;border-collapse:collapse;table-layout:auto}\r\n.data-table th{\r\n  text-align:left;padding:10px 16px;font-size:11px;letter-spacing:1px;\r\n  text-transform:uppercase;color:#8a8478;font-weight:600;\r\n  border-bottom:2px solid #e0dbd0;background:#f9f7f3;\r\n  white-space:nowrap;\r\n}\r\n.data-table td{\r\n  padding:11px 16px;border-bottom:1px solid #e0dbd0;font-size:13px;\r\n  background:#ffffff;white-space:nowrap;vertical-align:middle;\r\n}\r\n.data-table tbody tr:last-child td{border-bottom:none}\r\n.data-table tbody tr:hover td{background:#f9f7f3;cursor:pointer}\r\n\/* Cow table: fixed layout with explicit column widths *\/\r\n#cowTable{table-layout:fixed;min-width:1050px}\r\n#cowTable th:nth-child(1),#cowTable td:nth-child(1){width:75px}\r\n#cowTable th:nth-child(2),#cowTable td:nth-child(2){width:110px}\r\n#cowTable th:nth-child(3),#cowTable td:nth-child(3){width:75px}\r\n#cowTable th:nth-child(4),#cowTable td:nth-child(4){width:65px}\r\n#cowTable th:nth-child(5),#cowTable td:nth-child(5){width:105px}\r\n#cowTable th:nth-child(6),#cowTable td:nth-child(6){width:95px}\r\n#cowTable th:nth-child(7),#cowTable td:nth-child(7){width:80px}\r\n#cowTable th:nth-child(8),#cowTable td:nth-child(8){width:70px}\r\n#cowTable th:nth-child(9),#cowTable td:nth-child(9){width:155px}\r\n#cowTable th:nth-child(10),#cowTable td:nth-child(10){width:95px}\r\n#cowTable th:nth-child(11),#cowTable td:nth-child(11){width:95px}\r\n\/* Event table *\/\r\n#eventTable{min-width:600px}\r\n\/* All report tables - auto sizing but scroll if needed *\/\r\n.report-table-wrap{overflow-x:auto}\r\n.report-table-wrap .data-table{min-width:480px}\r\n.tag{font-family:'Fira Code',monospace;font-weight:500;color:var(--forest-mid);font-size:13px}\r\n\r\n\/* \u2500\u2500 PILL \u2500\u2500 *\/\r\n.pill{\r\n  display:inline-block;padding:3px 10px;border-radius:20px;\r\n  font-size:11px;font-weight:500;\r\n}\r\n.pill-green{background:var(--forest-light);color:var(--forest)}\r\n.pill-gold{background:var(--gold-light);color:var(--gold)}\r\n.pill-red{background:var(--red-light);color:var(--red)}\r\n.pill-blue{background:var(--blue-light);color:var(--blue)}\r\n.pill-teal{background:var(--teal-light);color:var(--teal)}\r\n.pill-grey{background:var(--bg2);color:var(--ink3)}\r\n\r\n\/* \u2500\u2500 PERCENTILE POSITION BADGE \u2500\u2500 *\/\r\n.pct-badge{\r\n  font-family:'Fira Code',monospace;font-size:10px;padding:2px 7px;\r\n  border-radius:4px;font-weight:500;\r\n}\r\n.pct-top{background:var(--forest-light);color:var(--forest)}\r\n.pct-mid{background:var(--gold-light);color:var(--gold)}\r\n.pct-low{background:var(--red-light);color:var(--red)}\r\n\r\n\/* \u2500\u2500 MINI BAR \u2500\u2500 *\/\r\n.mini-bar-row{display:flex;flex-direction:column;gap:12px}\r\n.mini-bar-item{display:flex;flex-direction:column;gap:4px}\r\n.mini-bar-header{display:flex;justify-content:space-between;align-items:baseline}\r\n.mini-bar-name{font-size:12px;color:var(--ink2);font-weight:500}\r\n.mini-bar-val{font-family:'Fira Code',monospace;font-size:12px;color:var(--ink)}\r\n.mini-bar-track{height:7px;background:var(--bg2);border-radius:4px;position:relative;overflow:hidden}\r\n.mini-bar-fill{height:100%;border-radius:4px;transition:width 1.1s cubic-bezier(.4,0,.2,1)}\r\n.mini-bar-bench{position:absolute;top:0;bottom:0;width:2px;background:var(--ink3);opacity:.4}\r\n.mini-bar-note{font-size:10px;color:var(--ink3)}\r\n\r\n\/* \u2500\u2500 CYCLE TABLE \u2500\u2500 *\/\r\n.cycle-strip{\r\n  display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));\r\n  gap:8px;\r\n}\r\n.cycle-cell{\r\n  border:1.5px solid var(--border);border-radius:8px;\r\n  padding:10px 6px;text-align:center;background:var(--surface2);\r\n  transition:all .2s;\r\n}\r\n.cycle-cell.good{background:var(--forest-light);border-color:#9dd4b4}\r\n.cycle-cell.warn{background:var(--gold-light);border-color:#e8c44a}\r\n.cycle-cell.bad{background:var(--red-light);border-color:#e8a8a0}\r\n.cycle-date{font-size:9px;color:var(--ink3);margin-bottom:4px;font-family:'Fira Code',monospace}\r\n.cycle-val{font-family:'DM Serif Display',serif;font-size:22px;line-height:1}\r\n.cycle-val.good{color:var(--forest)}\r\n.cycle-val.warn{color:var(--gold)}\r\n.cycle-val.bad{color:var(--red)}\r\n.cycle-n{font-size:9px;color:var(--ink3);margin-top:2px}\r\n\r\n\/* \u2500\u2500 ALERTS \u2500\u2500 *\/\r\n.alert-icon{font-size:14px;margin-top:2px;flex-shrink:0;line-height:1}\r\n.alert-title{font-size:12px;font-weight:600;line-height:1.4}\r\n.alert-desc{font-size:11px;color:#4a4840;margin-top:3px;line-height:1.5}\r\n\r\n\/* \u2500\u2500 STAT LIST \u2500\u2500 *\/\r\n.stat-list{display:flex;flex-direction:column}\r\n.stat-row{\r\n  display:flex;justify-content:space-between;align-items:center;\r\n  padding:10px 0;border-bottom:1px solid var(--border);\r\n}\r\n.stat-row:last-child{border-bottom:none}\r\n.stat-name{font-size:12px;color:var(--ink2)}\r\n.stat-val{font-family:'Fira Code',monospace;font-size:13px;font-weight:500;color:var(--ink)}\r\n\r\n\/* \u2500\u2500 TIMELINE \u2500\u2500 *\/\r\n.timeline{display:flex;flex-direction:column;gap:0}\r\n.tl-item{display:flex;gap:14px;padding:10px 0;border-bottom:1px solid var(--border);align-items:flex-start}\r\n.tl-item:last-child{border-bottom:none}\r\n.tl-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;margin-top:2px}\r\n.tl-bred{background:var(--blue-light);color:var(--blue)}\r\n.tl-preg{background:var(--forest-light);color:var(--forest)}\r\n.tl-open{background:var(--gold-light);color:var(--gold)}\r\n.tl-abort{background:var(--red-light);color:var(--red)}\r\n.tl-calv{background:var(--teal-light);color:var(--teal)}\r\n.tl-event{font-size:12px;font-weight:600;color:var(--ink)}\r\n.tl-meta{font-size:11px;color:var(--ink3);margin-top:2px;font-family:'Fira Code',monospace}\r\n\r\n\/* \u2500\u2500 SECTION HEADER \u2500\u2500 *\/\r\n.sec-header{margin-bottom:24px;display:flex;align-items:flex-start;justify-content:space-between}\r\n.sec-title{font-family:'DM Serif Display',serif;font-size:26px;letter-spacing:-.3px}\r\n.sec-sub{font-size:12px;color:var(--ink3);margin-top:4px}\r\n\r\n\/* \u2500\u2500 FORM \u2500\u2500 *\/\r\n.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}\r\n.form-grid.g3{grid-template-columns:1fr 1fr 1fr}\r\n.fg{display:flex;flex-direction:column;gap:5px}\r\nlabel{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--ink3);font-weight:500}\r\ninput,select,textarea{\r\n  background:var(--surface2);border:1.5px solid var(--border);\r\n  color:var(--ink);padding:9px 12px;border-radius:7px;\r\n  font-size:13px;font-family:'DM Sans',sans-serif;\r\n  outline:none;transition:border .18s;\r\n}\r\ninput:focus,select:focus{border-color:var(--forest-mid)}\r\n\r\n\/* \u2500\u2500 MODAL \u2500\u2500 *\/\r\n.modal-bg{\r\n  display:none;position:fixed;inset:0;\r\n  background:rgba(26,26,24,.5);backdrop-filter:blur(3px);\r\n  z-index:999;align-items:center;justify-content:center;\r\n}\r\n.modal-bg.open{display:flex}\r\n.modal{\r\n  background:var(--surface);border-radius:14px;\r\n  width:580px;max-width:95vw;max-height:90vh;\r\n  overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.25);\r\n  border:1px solid var(--border);\r\n}\r\n.modal-head{\r\n  padding:20px 24px;border-bottom:1px solid var(--border);\r\n  display:flex;align-items:center;justify-content:space-between;\r\n  position:sticky;top:0;background:var(--surface);z-index:1;\r\n}\r\n.modal-title{font-family:'DM Serif Display',serif;font-size:18px}\r\n.modal-body{padding:24px}\r\n.close-btn{background:none;border:none;cursor:pointer;font-size:20px;color:var(--ink3);line-height:1}\r\n\r\n\/* \u2500\u2500 BENCHMARK TABLE \u2500\u2500 *\/\r\n.bench-table{width:100%;border-collapse:collapse;min-width:700px;table-layout:auto}\r\n.bench-table th{\r\n  padding:10px 16px;font-size:10px;letter-spacing:1px;text-transform:uppercase;\r\n  color:#8a8478;border-bottom:2px solid #e0dbd0;text-align:center;\r\n  background:#f9f7f3;white-space:nowrap;\r\n}\r\n.bench-table th:first-child{text-align:left}\r\n.bench-table td{\r\n  padding:10px 16px;border-bottom:1px solid #e0dbd0;\r\n  font-size:12px;text-align:center;font-family:'Fira Code',monospace;\r\n  white-space:nowrap;background:#ffffff;\r\n}\r\n.bench-table td:first-child{text-align:left;font-family:'DM Sans',sans-serif;font-weight:500;font-size:13px}\r\n.bench-table tr.your-herd td{background:#fffbf0;font-weight:600}\r\n.bench-table tr.your-herd td:first-child{color:#b8860b}\r\n.pct25{color:#c0392b}.pct50{color:#d68910}.pct75{color:#2d6b4a}.pct90{color:#1e4d35}\r\n\r\n\/* \u2500\u2500 DIVIDER \u2500\u2500 *\/\r\n.divider{height:1px;background:var(--border);margin:16px 0}\r\n\r\n\/* \u2500\u2500 OVERVIEW SCORE \u2500\u2500 *\/\r\n.score-ring{\r\n  width:110px;height:110px;border-radius:50%;\r\n  display:flex;align-items:center;justify-content:center;flex-direction:column;\r\n  background:conic-gradient(var(--forest) 0% 52%,var(--bg2) 52% 100%);\r\n  box-shadow:inset 0 0 0 12px var(--surface);\r\n  position:relative;\r\n}\r\n.score-inner{\r\n  width:86px;height:86px;border-radius:50%;\r\n  background:var(--surface);\r\n  display:flex;flex-direction:column;align-items:center;justify-content:center;\r\n}\r\n.score-val{font-family:'DM Serif Display',serif;font-size:26px;line-height:1}\r\n.score-lbl{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--ink3)}\r\n\r\n\/* ANIMATION *\/\r\n@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}\r\n.fade-up{animation:fadeUp .4s ease both}\r\n.d1{animation-delay:.05s}.d2{animation-delay:.1s}.d3{animation-delay:.15s}\r\n.d4{animation-delay:.2s}.d5{animation-delay:.25s}.d6{animation-delay:.3s}\r\n\r\n\/* DONUT *\/\r\n.donut-wrap{display:flex;flex-direction:column;align-items:center;gap:16px}\r\n.donut{position:relative;width:120px;height:120px;flex-shrink:0}\r\n.donut svg{transform:rotate(-90deg)}\r\n.donut-label{\r\n  position:absolute;inset:0;display:flex;flex-direction:column;\r\n  align-items:center;justify-content:center;text-align:center;\r\n}\r\n.donut-val{font-family:'DM Serif Display',serif;font-size:22px}\r\n.donut-sub{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--ink3)}\r\n.donut-legend{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;width:100%}\r\n.donut-legend-item{display:flex;align-items:center;gap:7px;font-size:11px}\r\n.donut-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<!-- SIDEBAR -->\r\n<div class=\"sidebar\">\r\n  <div class=\"sidebar-logo\">Dairy<span>Repro<\/span><\/div>\r\n  <div class=\"sidebar-label\">Main<\/div>\r\n  <a class=\"nav-item active\" onclick=\"show('dashboard',this)\">\r\n    <span class=\"nav-icon\">\u25c9<\/span> Dashboard\r\n  <\/a>\r\n  <a class=\"nav-item\" onclick=\"show('cows',this)\">\r\n    <span class=\"nav-icon\">\ud83d\udc04<\/span> Cow Records\r\n  <\/a>\r\n  <a class=\"nav-item\" onclick=\"show('breeding',this)\">\r\n    <span class=\"nav-icon\">\ud83d\udccb<\/span> Breeding Events\r\n  <\/a>\r\n  <div class=\"sidebar-label\">Analysis<\/div>\r\n  <a class=\"nav-item\" onclick=\"show('reports',this)\">\r\n    <span class=\"nav-icon\">\ud83d\udcca<\/span> Reports\r\n  <\/a>\r\n  <a class=\"nav-item\" onclick=\"show('benchmarks',this)\">\r\n    <span class=\"nav-icon\">\ud83c\udfaf<\/span> ON Benchmarks\r\n  <\/a>\r\n  <a class=\"nav-item\" onclick=\"show('settings',this)\">\r\n    <span class=\"nav-icon\">\u2699<\/span> Herd Settings\r\n  <\/a>\r\n  <div class=\"sidebar-farm\">\r\n    <strong>Oakview Dairy<\/strong>\r\n    Ontario \u00b7 309 cows\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- MAIN -->\r\n<div class=\"main\">\r\n<div class=\"topbar\">\r\n  <div class=\"page-title\" id=\"pageTitle\">Dashboard<\/div>\r\n  <div class=\"topbar-right\">\r\n    <span style=\"font-size:12px;color:var(--ink3);font-family:'Fira Code',monospace\">Ontario 2024 Benchmarks Active<\/span>\r\n    <button class=\"btn btn-ghost btn-sm\" onclick=\"openModal('addCow')\">\uff0b Add Cow<\/button>\r\n    <button class=\"btn btn-primary btn-sm\" onclick=\"openModal('addEvent')\">\uff0b Log Event<\/button>\r\n  <\/div>\r\n<\/div>\r\n<div class=\"content\">\r\n\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 DASHBOARD \u2550\u2550 -->\r\n<div id=\"s-dashboard\" class=\"section active\">\r\n  <div class=\"sec-header fade-up\">\r\n    <div>\r\n      <div class=\"sec-title\">Herd Overview<\/div>\r\n      <div class=\"sec-sub\">Lactanet Ontario 2024 Benchmarks \u00b7 1,807 herds \u00b7 VWP = 50 DIM<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- TOP KPI ROW -->\r\n  <div class=\"dash-grid row-kpi\" style=\"margin-bottom:20px;\">\r\n\r\n    <!-- Pregnancy Rate -->\r\n    <div class=\"fade-up d1\">\r\n      <div class=\"kpi-hero forest\">\r\n        <div class=\"kpi-label\">Pregnancy Rate<\/div>\r\n        <div class=\"kpi-value\">19<span class=\"kpi-unit\">%<\/span><\/div>\r\n        <div class=\"kpi-meta\">\r\n          <span class=\"pct-badge\" style=\"background:rgba(255,255,255,.15);color:rgba(255,255,255,.9);\">52nd pctl \u00b7 Ontario<\/span>\r\n        <\/div>\r\n        <div class=\"pct-gauge\" style=\"margin-top:14px;\">\r\n          <div class=\"pct-track pct-forest\" style=\"width:52%\"><\/div>\r\n        <\/div>\r\n        <div class=\"pct-labels\">\r\n          <span>25th: 12%<\/span><span>50th: 17%<\/span><span>75th: 21%<\/span><span>90th: 25%<\/span>\r\n        <\/div>\r\n        <div style=\"margin-top:12px;font-size:11px;color:rgba(255,255,255,.5);\">Goal (75th pctl): 21% &nbsp;\u00b7&nbsp; <span style=\"color:#ffda6a\">3pt below goal<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Insemination Rate -->\r\n    <div class=\"fade-up d2\">\r\n      <div class=\"kpi-hero gold\">\r\n        <div class=\"kpi-label\" style=\"color:var(--gold)\">Insemination Rate<\/div>\r\n        <div class=\"kpi-value\" style=\"color:var(--gold)\">48<span class=\"kpi-unit\" style=\"color:var(--ink3)\">%<\/span><\/div>\r\n        <div class=\"kpi-meta\">\r\n          <span class=\"pct-badge pct-mid\">~53rd pctl \u00b7 Ontario<\/span>\r\n        <\/div>\r\n        <div class=\"pct-gauge\" style=\"margin-top:14px;\">\r\n          <div class=\"pct-track pct-gold\" style=\"width:53%\"><\/div>\r\n        <\/div>\r\n        <div class=\"pct-labels\">\r\n          <span>25th: 33%<\/span><span>50th: 43%<\/span><span>75th: 51%<\/span><span>90th: 57%<\/span>\r\n        <\/div>\r\n        <div style=\"margin-top:12px;font-size:11px;color:var(--ink3)\">Goal (75th pctl): 51% &nbsp;\u00b7&nbsp; <span style=\"color:var(--red)\">3pt below goal<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Conception Risk -->\r\n    <div class=\"fade-up d3\">\r\n      <div class=\"kpi-hero teal\">\r\n        <div class=\"kpi-label\" style=\"color:var(--teal)\">Conception Risk<\/div>\r\n        <div class=\"kpi-value\" style=\"color:var(--teal)\">40<span class=\"kpi-unit\" style=\"color:var(--ink3)\">%<\/span><\/div>\r\n        <div class=\"kpi-meta\">\r\n          <span class=\"pct-badge pct-low\">~48th pctl \u00b7 Ontario<\/span>\r\n        <\/div>\r\n        <div class=\"pct-gauge\" style=\"margin-top:14px;\">\r\n          <div class=\"pct-track pct-teal\" style=\"width:48%\"><\/div>\r\n        <\/div>\r\n        <div class=\"pct-labels\">\r\n          <span>25th: 36%<\/span><span>50th: 42%<\/span><span>75th: 49%<\/span><span>90th: 55%<\/span>\r\n        <\/div>\r\n        <div style=\"margin-top:12px;font-size:11px;color:var(--ink3)\">Goal (75th pctl): 49% &nbsp;\u00b7&nbsp; <span style=\"color:var(--red)\">9pt below goal<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- SECOND ROW -->\r\n  <div class=\"dash-grid row-mid\" style=\"margin-bottom:20px;\">\r\n\r\n    <!-- Herd composition donut -->\r\n    <div class=\"fade-up d2\">\r\n      <div class=\"card\" style=\"height:100%\">\r\n        <div class=\"card-head\"><div class=\"card-title\">Herd Status<\/div><span class=\"card-sub\">309 cows<\/span><\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"donut-wrap\">\r\n            <div class=\"donut\">\r\n              <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\">\r\n                <circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#f4f1eb\" stroke-width=\"18\"\/>\r\n                <!-- Pregnant 42% = 314 of 754 -->\r\n                <circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#1e4d35\" stroke-width=\"18\"\r\n                  stroke-dasharray=\"131.9 628\" stroke-dashoffset=\"0\"\/>\r\n                <!-- Open 29% = 91 -->\r\n                <circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#d68910\" stroke-width=\"18\"\r\n                  stroke-dasharray=\"91 628\" stroke-dashoffset=\"-131.9\"\/>\r\n                <!-- Fresh 21% = 66 -->\r\n                <circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#148a7a\" stroke-width=\"18\"\r\n                  stroke-dasharray=\"66 628\" stroke-dashoffset=\"-222.9\"\/>\r\n                <!-- DNB 8% = 25 -->\r\n                <circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#c0392b\" stroke-width=\"18\"\r\n                  stroke-dasharray=\"25 628\" stroke-dashoffset=\"-288.9\"\/>\r\n              <\/svg>\r\n              <div class=\"donut-label\">\r\n                <div class=\"donut-val\">309<\/div>\r\n                <div class=\"donut-sub\">cows<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"donut-legend\">\r\n              <div class=\"donut-legend-item\"><div class=\"donut-dot\" style=\"background:var(--forest)\"><\/div><span><b>130<\/b> Pregnant (42%)<\/span><\/div>\r\n              <div class=\"donut-legend-item\"><div class=\"donut-dot\" style=\"background:var(--amber)\"><\/div><span><b>89<\/b> Open (29%)<\/span><\/div>\r\n              <div class=\"donut-legend-item\"><div class=\"donut-dot\" style=\"background:var(--teal)\"><\/div><span><b>64<\/b> Fresh (21%)<\/span><\/div>\r\n              <div class=\"donut-legend-item\"><div class=\"donut-dot\" style=\"background:var(--red)\"><\/div><span><b>26<\/b> DNB (8%)<\/span><\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"divider\"><\/div>\r\n          <div class=\"stat-list\">\r\n            <div class=\"stat-row\"><span class=\"stat-name\">Eligible this cycle<\/span><span class=\"stat-val\">48<\/span><\/div>\r\n            <div class=\"stat-row\"><span class=\"stat-name\">Services per conception<\/span><span class=\"stat-val\">2.5<\/span><\/div>\r\n            <div class=\"stat-row\"><span class=\"stat-name\">Voluntary wait period<\/span><span class=\"stat-val\">70 d<\/span><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Benchmark bands for 4 metrics -->\r\n    <div class=\"fade-up d3\">\r\n      <div class=\"card\" style=\"height:100%\">\r\n        <div class=\"card-head\">\r\n          <div class=\"card-title\">Percentile Position \u2014 Ontario 2024<\/div>\r\n          <span class=\"card-sub\">Your herd vs 1,807 herds<\/span>\r\n        <\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"band-legend\">\r\n            <span><div class=\"band-dot band-25\"><\/div>25th<\/span>\r\n            <span><div class=\"band-dot band-50\"><\/div>50th<\/span>\r\n            <span><div class=\"band-dot band-75\"><\/div>75th<\/span>\r\n            <span><div class=\"band-dot band-90\"><\/div>90th<\/span>\r\n            <span><div class=\"band-dot\" style=\"background:var(--ink)\"><\/div>Your Herd<\/span>\r\n          <\/div>\r\n          <div id=\"benchBands\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Alerts -->\r\n    <div class=\"fade-up d4\">\r\n      <div class=\"card\" style=\"height:100%\">\r\n        <div class=\"card-head\"><div class=\"card-title\">Priority Actions<\/div><span class=\"card-sub\" id=\"alertCount\">5 items<\/span><\/div>\r\n        <div class=\"card-body\" style=\"padding:16px\">\r\n          <div class=\"alert-scroll\">\r\n          <div class=\"alert crit\">\r\n            <div class=\"alert-icon\">\ud83d\udd34<\/div>\r\n            <div>\r\n              <div class=\"alert-title\">1st vs 2+ Service CR Gap: 14 pts<\/div>\r\n              <div class=\"alert-desc\">1st svc: 48% \u00b7 Repeat svc: 34% \u2014 investigate heat detection & re-breed timing<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"alert warn\">\r\n            <div class=\"alert-icon\">\u26a0\ufe0f<\/div>\r\n            <div>\r\n              <div class=\"alert-title\">Insemination Rate Below 75th Pctl<\/div>\r\n              <div class=\"alert-desc\">48% vs Ontario 75th (51%) \u2014 6 eligible cows not yet inseminated<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"alert warn\">\r\n            <div class=\"alert-icon\">\u26a0\ufe0f<\/div>\r\n            <div>\r\n              <div class=\"alert-title\">Sept Conception Rate Drop (19%)<\/div>\r\n              <div class=\"alert-desc\">Well below annual avg \u2014 review heat abatement protocols<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"alert good\">\r\n            <div class=\"alert-icon\">\u2705<\/div>\r\n            <div>\r\n              <div class=\"alert-title\">Pregnancy Rate Improving<\/div>\r\n              <div class=\"alert-desc\">19% \u00b7 Up from 17% last quarter \u2014 above Ontario 50th (17%)<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"alert info\">\r\n            <div class=\"alert-icon\">\u2139\ufe0f<\/div>\r\n            <div>\r\n              <div class=\"alert-title\">3 Cows Awaiting Pregnancy Check<\/div>\r\n              <div class=\"alert-desc\">Bred 35\u201342 days ago \u2014 schedule confirmation<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- THIRD ROW: 21-day cycles + Key stats -->\r\n  <div class=\"dash-grid row-bot\">\r\n    <div class=\"fade-up d4\">\r\n      <div class=\"card\">\r\n        <div class=\"card-head\">\r\n          <div class=\"card-title\">21-Day Pregnancy Rate \u2014 Monthly Trend<\/div>\r\n          <div style=\"display:flex;gap:10px;align-items:center\">\r\n            <span style=\"display:flex;align-items:center;gap:4px;font-size:11px;color:var(--ink3)\"><span style=\"width:10px;height:10px;background:var(--forest-light);border:1.5px solid #9dd4b4;border-radius:2px;display:inline-block\"><\/span>\u2265 21% (goal)<\/span>\r\n            <span style=\"display:flex;align-items:center;gap:4px;font-size:11px;color:var(--ink3)\"><span style=\"width:10px;height:10px;background:var(--gold-light);border:1.5px solid #e8c44a;border-radius:2px;display:inline-block\"><\/span>17\u201320%<\/span>\r\n            <span style=\"display:flex;align-items:center;gap:4px;font-size:11px;color:var(--ink3)\"><span style=\"width:10px;height:10px;background:var(--red-light);border:1.5px solid #e8a8a0;border-radius:2px;display:inline-block\"><\/span>&lt; 17%<\/span>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"cycle-strip\" id=\"cycleGrid\"><\/div>\r\n          <div style=\"margin-top:14px;padding:10px 14px;background:var(--surface2);border-radius:8px;display:flex;gap:24px;font-size:11px;font-family:'Fira Code',monospace;color:var(--ink3)\">\r\n            <span>Cumulative PR: <b style=\"color:var(--ink)\">19%<\/b><\/span>\r\n            <span>Ontario 50th: <b>17%<\/b><\/span>\r\n            <span>Goal (75th): <b style=\"color:var(--forest)\">21%<\/b><\/span>\r\n            <span>% at 3 cycles pregnant: <b style=\"color:var(--forest)\">53%<\/b> \u2713 (goal 50%)<\/span>\r\n            <span>% at 6 cycles: <b style=\"color:var(--forest)\">76%<\/b> \u2713 (goal 75%)<\/span>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"fade-up d5\">\r\n      <div class=\"card\">\r\n        <div class=\"card-head\"><div class=\"card-title\">Service CR Comparison<\/div><\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"mini-bar-row\">\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\">\r\n                <span class=\"mini-bar-name\">1st Service<\/span>\r\n                <span class=\"mini-bar-val\" style=\"color:var(--forest)\">48%<\/span>\r\n              <\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:48%;background:var(--forest-mid)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:49%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 49%<\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\">\r\n                <span class=\"mini-bar-name\">2nd Service<\/span>\r\n                <span class=\"mini-bar-val\" style=\"color:var(--amber)\">41%<\/span>\r\n              <\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:41%;background:var(--amber)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:50%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 50%<\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\">\r\n                <span class=\"mini-bar-name\">3rd Service<\/span>\r\n                <span class=\"mini-bar-val\" style=\"color:var(--amber)\">38%<\/span>\r\n              <\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:38%;background:var(--amber)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:52%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 52%<\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\">\r\n                <span class=\"mini-bar-name\">All Repeat Svcs<\/span>\r\n                <span class=\"mini-bar-val\" style=\"color:var(--red)\">34%<\/span>\r\n              <\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:34%;background:var(--red)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:50%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 50% \u00b7 <span style=\"color:var(--red)\">16pt gap \u26a0<\/span><\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\">\r\n                <span class=\"mini-bar-name\">Overall (Herd)<\/span>\r\n                <span class=\"mini-bar-val\">40%<\/span>\r\n              <\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:40%;background:var(--teal)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:49%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 49%<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"divider\"><\/div>\r\n          <div class=\"stat-list\">\r\n            <div class=\"stat-row\"><span class=\"stat-name\">Avg DIM 1st breeding<\/span><span class=\"stat-val\">82 d <span style=\"font-size:10px;color:var(--forest)\">\u2713 50th: 82<\/span><\/span><\/div>\r\n            <div class=\"stat-row\"><span class=\"stat-name\">Days open<\/span><span class=\"stat-val\">118 d<\/span><\/div>\r\n            <div class=\"stat-row\"><span class=\"stat-name\">Calving interval<\/span><span class=\"stat-val\">405 d <span style=\"font-size:10px;color:var(--forest)\">~50th<\/span><\/span><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 COW RECORDS \u2550\u2550 -->\r\n<div id=\"s-cows\" class=\"section\">\r\n  <div class=\"sec-header fade-up\">\r\n    <div>\r\n      <div class=\"sec-title\">Cow Records<\/div>\r\n      <div class=\"sec-sub\">Click any row to view full history and metrics<\/div>\r\n    <\/div>\r\n    <div style=\"display:flex;gap:10px;align-items:center\">\r\n      <select style=\"width:140px\" onchange=\"filterCows(this.value)\">\r\n        <option value=\"\">All Parities<\/option>\r\n        <option value=\"1\">Lact 1<\/option>\r\n        <option value=\"2\">Lact 2<\/option>\r\n        <option value=\"3\">Lact 3+<\/option>\r\n      <\/select>\r\n      <select style=\"width:150px\" onchange=\"filterCowStatus(this.value)\">\r\n        <option value=\"\">All Status<\/option>\r\n        <option value=\"open\">Open<\/option>\r\n        <option value=\"pregnant\">Pregnant<\/option>\r\n        <option value=\"eligible\">Eligible<\/option>\r\n        <option value=\"dnb\">DNB<\/option>\r\n      <\/select>\r\n      <button class=\"btn btn-primary btn-sm\" onclick=\"openModal('addCow')\">\uff0b Add Cow<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"card fade-up\">\r\n    <div style=\"overflow-x:auto\">\r\n      <table class=\"data-table\" id=\"cowTable\" style=\"min-width:1000px\">\r\n        <thead>\r\n          <tr>\r\n            <th>Tag<\/th>\r\n            <th>Name<\/th>\r\n            <th>Parity<\/th>\r\n            <th>DIM<\/th>\r\n            <th>Status<\/th>\r\n            <th>Last Event<\/th>\r\n            <th>Bred DIM<\/th>\r\n            <th># Bred<\/th>\r\n            <th>Next Action<\/th>\r\n            <th>Pctl Est.<\/th>\r\n            <th><\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n        <tbody id=\"cowTbody\"><\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"cowDetail\" style=\"display:none;margin-top:20px\">\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\">\r\n        <div class=\"card-title\" id=\"detailTitle\">Cow Detail<\/div>\r\n        <button class=\"btn btn-ghost btn-sm\" onclick=\"document.getElementById('cowDetail').style.display='none'\">\u2715 Close<\/button>\r\n      <\/div>\r\n      <div class=\"card-body\">\r\n        <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:24px\">\r\n          <div>\r\n            <div style=\"font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--ink3);margin-bottom:12px;font-weight:600\">Breeding History<\/div>\r\n            <div class=\"timeline\" id=\"cowTimeline\"><\/div>\r\n          <\/div>\r\n          <div>\r\n            <div style=\"font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--ink3);margin-bottom:12px;font-weight:600\">Metrics & Status<\/div>\r\n            <div class=\"stat-list\" id=\"cowStatsList\"><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BREEDING EVENTS \u2550\u2550 -->\r\n<div id=\"s-breeding\" class=\"section\">\r\n  <div class=\"sec-header fade-up\">\r\n    <div>\r\n      <div class=\"sec-title\">Breeding Events<\/div>\r\n      <div class=\"sec-sub\">All inseminations, pregnancy checks, and reproductive events<\/div>\r\n    <\/div>\r\n    <button class=\"btn btn-primary\" onclick=\"openModal('addEvent')\">\uff0b Log Event<\/button>\r\n  <\/div>\r\n  <div style=\"display:flex;flex-direction:column;gap:20px\">\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">Recent Events<\/div><\/div>\r\n      <div class=\"report-table-wrap\">\r\n        <table class=\"data-table\" id=\"eventTable\" style=\"min-width:650px\">\r\n          <thead><tr><th style=\"width:110px\">Date<\/th><th style=\"width:90px\">Tag<\/th><th style=\"width:100px\">Event<\/th><th style=\"width:70px\">DIM<\/th><th style=\"width:160px\">Program \/ Code<\/th><th style=\"width:100px\">Technician<\/th><th style=\"width:120px\">Outcome<\/th><\/tr><\/thead>\r\n          <tbody id=\"eventTbody\"><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/div>\r\n    <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:20px\">\r\n      <div class=\"card fade-up\">\r\n        <div class=\"card-head\"><div class=\"card-title\">CR by Breeding Program<\/div><\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"mini-bar-row\">\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Activity Monitor<\/span><span class=\"mini-bar-val\">39%<\/span><\/div>\r\n              <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:39%;background:var(--teal)\"><\/div><\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Ov-synch + CIDR<\/span><span class=\"mini-bar-val\">36%<\/span><\/div>\r\n              <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:36%;background:var(--amber)\"><\/div><\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Presynch<\/span><span class=\"mini-bar-val\">47%<\/span><\/div>\r\n              <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:47%;background:var(--forest-mid)\"><\/div><\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"card fade-up\">\r\n        <div class=\"card-head\"><div class=\"card-title\">Repeat Interval Analysis<\/div><\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"report-table-wrap\">\r\n          <table class=\"data-table\">\r\n            <thead><tr><th>Interval<\/th><th>%Conc<\/th><th>#Bred<\/th><th>% of Repeats<\/th><th>Target<\/th><\/tr><\/thead>\r\n            <tbody>\r\n              <tr><td>1\u20133 days<\/td><td>42%<\/td><td>28<\/td><td>16%<\/td><td>\u2014<\/td><\/tr>\r\n              <tr style=\"background:var(--red-light)\"><td>4\u201317 days \u26a0<\/td><td>29%<\/td><td>29<\/td><td style=\"color:var(--red)\">17%<\/td><td>&lt;10%<\/td><\/tr>\r\n              <tr style=\"background:var(--forest-light)\"><td>18\u201324 days \u2713<\/td><td>48%<\/td><td>46<\/td><td style=\"color:var(--forest)\">26%<\/td><td>\u2014<\/td><\/tr>\r\n              <tr style=\"background:var(--forest-light)\"><td>36\u201348 days \u2713<\/td><td>14%<\/td><td>21<\/td><td style=\"color:var(--forest)\">12%<\/td><td>\u2014<\/td><\/tr>\r\n              <tr><td>Over 48 days<\/td><td>25%<\/td><td>25<\/td><td>14%<\/td><td>\u2014<\/td><\/tr>\r\n              <tr style=\"font-weight:600\"><td>TOTALS<\/td><td>35%<\/td><td>174<\/td><td>100%<\/td><td><\/td><\/tr>\r\n            <\/tbody>\r\n          <\/table>\r\n          <\/div>\r\n          <div style=\"margin-top:10px;font-size:11px;color:var(--ink3);padding:8px 10px;background:var(--gold-light);border-radius:6px;\">\r\n            \u26a0 21+42-day window breedings = 38% of repeats (goal: 66%)\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <\/div><!-- end inner 2-col grid -->\r\n  <\/div><!-- end flex column -->\r\n<\/div>\r\n\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 REPORTS \u2550\u2550 -->\r\n<div id=\"s-reports\" class=\"section\">\r\n  <div class=\"sec-header fade-up\">\r\n    <div>\r\n      <div class=\"sec-title\">Reports & Analysis<\/div>\r\n      <div class=\"sec-sub\">Seasonal, parity, and timing breakdowns<\/div>\r\n    <\/div>\r\n    <button class=\"btn btn-ghost btn-sm\">\u2193 Export CSV<\/button>\r\n  <\/div>\r\n  <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px\">\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">Conception Rate by Month<\/div><\/div>\r\n      <div class=\"report-table-wrap\">\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Month<\/th><th>%Conc<\/th><th>#Preg<\/th><th>#Open<\/th><th>Total<\/th><th>SPC<\/th><th>vs Ont 50th<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Mar 2018<\/td><td>69%<\/td><td>11<\/td><td>5<\/td><td>16<\/td><td>1.5<\/td><td><span class=\"pill pill-green\">+27pt<\/span><\/td><\/tr>\r\n            <tr><td>Apr 2018<\/td><td>31%<\/td><td>4<\/td><td>9<\/td><td>13<\/td><td>3.3<\/td><td><span class=\"pill pill-gold\">-11pt<\/span><\/td><\/tr>\r\n            <tr><td>May 2018<\/td><td>46%<\/td><td>12<\/td><td>14<\/td><td>26<\/td><td>2.2<\/td><td><span class=\"pill pill-green\">+4pt<\/span><\/td><\/tr>\r\n            <tr><td>Jun 2018<\/td><td>36%<\/td><td>8<\/td><td>14<\/td><td>23<\/td><td>2.8<\/td><td><span class=\"pill pill-grey\">-6pt<\/span><\/td><\/tr>\r\n            <tr><td>Jul 2018<\/td><td>37%<\/td><td>10<\/td><td>17<\/td><td>29<\/td><td>2.7<\/td><td><span class=\"pill pill-grey\">-5pt<\/span><\/td><\/tr>\r\n            <tr><td>Aug 2018<\/td><td>34%<\/td><td>10<\/td><td>19<\/td><td>29<\/td><td>2.9<\/td><td><span class=\"pill pill-grey\">-8pt<\/span><\/td><\/tr>\r\n            <tr style=\"background:var(--red-light)\"><td>Sep 2018 \u26a0<\/td><td style=\"color:var(--red);font-weight:600\">19%<\/td><td>5<\/td><td>22<\/td><td>27<\/td><td>5.4<\/td><td><span class=\"pill pill-red\">-23pt<\/span><\/td><\/tr>\r\n            <tr><td>Oct 2018<\/td><td>50%<\/td><td>15<\/td><td>15<\/td><td>30<\/td><td>2.0<\/td><td><span class=\"pill pill-green\">+8pt<\/span><\/td><\/tr>\r\n            <tr><td>Nov 2018<\/td><td>46%<\/td><td>12<\/td><td>14<\/td><td>26<\/td><td>2.2<\/td><td><span class=\"pill pill-green\">+4pt<\/span><\/td><\/tr>\r\n            <tr><td>Dec 2018<\/td><td>47%<\/td><td>14<\/td><td>16<\/td><td>31<\/td><td>2.1<\/td><td><span class=\"pill pill-green\">+5pt<\/span><\/td><\/tr>\r\n            <tr><td>Jan 2019<\/td><td>52%<\/td><td>17<\/td><td>16<\/td><td>33<\/td><td>1.9<\/td><td><span class=\"pill pill-green\">+10pt<\/span><\/td><\/tr>\r\n            <tr><td>Feb 2019<\/td><td>25%<\/td><td>4<\/td><td>12<\/td><td>17<\/td><td>4.0<\/td><td><span class=\"pill pill-gold\">-17pt<\/span><\/td><\/tr>\r\n            <tr style=\"font-weight:600\"><td>TOTALS<\/td><td>40%<\/td><td>122<\/td><td>182<\/td><td>313<\/td><td>2.5<\/td><td><span class=\"pill pill-grey\">\u22122pt<\/span><\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/div>\r\n    <div style=\"display:flex;flex-direction:column;gap:20px\">\r\n      <div class=\"card fade-up\">\r\n        <div class=\"card-head\"><div class=\"card-title\">CR by Day of Week<\/div><span class=\"card-sub\">Protocol compliance check<\/span><\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"report-table-wrap\">\r\n          <table class=\"data-table\">\r\n            <thead><tr><th>Day<\/th><th>%Conc<\/th><th>Count<\/th><th>% of Total<\/th><\/tr><\/thead>\r\n            <tbody>\r\n              <tr><td>Monday<\/td><td>45%<\/td><td>34<\/td><td>11%<\/td><\/tr>\r\n              <tr><td>Tuesday<\/td><td>50%<\/td><td>25<\/td><td>8%<\/td><\/tr>\r\n              <tr><td>Wednesday<\/td><td>33%<\/td><td>18<\/td><td>6%<\/td><\/tr>\r\n              <tr><td>Thursday<\/td><td>33%<\/td><td>28<\/td><td>9%<\/td><\/tr>\r\n              <tr style=\"background:var(--blue-light)\"><td><strong>Friday \u26a1<\/strong><\/td><td>42%<\/td><td>166<\/td><td style=\"color:var(--blue);font-weight:600\">53%<\/td><\/tr>\r\n              <tr><td>Saturday<\/td><td>28%<\/td><td>26<\/td><td>8%<\/td><\/tr>\r\n              <tr><td>Sunday<\/td><td>33%<\/td><td>16<\/td><td>5%<\/td><\/tr>\r\n            <\/tbody>\r\n          <\/table>\r\n          <\/div>\r\n          <div style=\"margin-top:10px;padding:8px 12px;background:var(--blue-light);border-radius:6px;font-size:11px;color:var(--blue)\">\r\n            \u2139 53% of breedings on Friday \u2014 confirm this reflects intended protocol schedule.\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"card fade-up\">\r\n        <div class=\"card-head\"><div class=\"card-title\">CR by Lactation Group<\/div><\/div>\r\n        <div class=\"card-body\">\r\n          <div class=\"mini-bar-row\">\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Lact 1<\/span><span class=\"mini-bar-val\" style=\"color:var(--forest)\">51%<\/span><\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:51%;background:var(--forest-mid)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:56%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 56% \u00b7 SPC: 2.0<\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Lact 2<\/span><span class=\"mini-bar-val\" style=\"color:var(--amber)\">39%<\/span><\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:39%;background:var(--amber)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:50%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 50% \u00b7 SPC: 2.6<\/div>\r\n            <\/div>\r\n            <div class=\"mini-bar-item\">\r\n              <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Lact 3+<\/span><span class=\"mini-bar-val\" style=\"color:var(--red)\">32%<\/span><\/div>\r\n              <div class=\"mini-bar-track\">\r\n                <div class=\"mini-bar-fill\" style=\"width:32%;background:var(--red)\"><\/div>\r\n                <div class=\"mini-bar-bench\" style=\"left:46%\"><\/div>\r\n              <\/div>\r\n              <div class=\"mini-bar-note\">Ontario 75th: 46% \u00b7 SPC: 3.1<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div style=\"margin-top:10px;padding:8px 12px;background:var(--forest-light);border-radius:6px;font-size:11px;color:var(--forest)\">\r\n            \u2713 Lact 1 highest CR as expected. Lact 3+ is 14pts below 75th pctl \u2014 review transition program.\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Pregnancy loss -->\r\n  <div style=\"display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px\">\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">Pregnancy Loss Tracking<\/div><\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"stat-list\">\r\n          <div class=\"stat-row\"><span class=\"stat-name\">Total Abortions<\/span><span class=\"stat-val\" style=\"color:var(--red)\">9<\/span><\/div>\r\n          <div class=\"stat-row\"><span class=\"stat-name\">Embryonic (&lt;42 days)<\/span><span class=\"stat-val\">6<\/span><\/div>\r\n          <div class=\"stat-row\"><span class=\"stat-name\">Fetal (\u226542 days)<\/span><span class=\"stat-val\">3<\/span><\/div>\r\n          <div class=\"stat-row\"><span class=\"stat-name\">Abortion Rate<\/span><span class=\"stat-val\">2.9%<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">% Pregnant by DIM<\/div><span class=\"card-sub\">vs Ontario 75th pctl<\/span><\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"mini-bar-row\">\r\n          <div class=\"mini-bar-item\">\r\n            <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">% Pregnant 100 DIM<\/span><span class=\"mini-bar-val\">28%<\/span><\/div>\r\n            <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:28%;background:var(--amber)\"><\/div><div class=\"mini-bar-bench\" style=\"left:32%\"><\/div><\/div>\r\n            <div class=\"mini-bar-note\">Ontario 75th: 32%<\/div>\r\n          <\/div>\r\n          <div class=\"mini-bar-item\">\r\n            <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">% Pregnant 150 DIM<\/span><span class=\"mini-bar-val\">55%<\/span><\/div>\r\n            <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:55%;background:var(--forest-mid)\"><\/div><div class=\"mini-bar-bench\" style=\"left:62%\"><\/div><\/div>\r\n            <div class=\"mini-bar-note\">Ontario 75th: 62%<\/div>\r\n          <\/div>\r\n          <div class=\"mini-bar-item\">\r\n            <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">% Pregnant 200 DIM<\/span><span class=\"mini-bar-val\">70%<\/span><\/div>\r\n            <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:70%;background:var(--forest-mid)\"><\/div><div class=\"mini-bar-bench\" style=\"left:78%\"><\/div><\/div>\r\n            <div class=\"mini-bar-note\">Ontario 75th: 78%<\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">Pregnancy Accumulation Goals<\/div><\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"mini-bar-row\">\r\n          <div class=\"mini-bar-item\">\r\n            <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Pregnant @ 3 cycles<\/span><span class=\"mini-bar-val\" style=\"color:var(--forest)\">53% \u2713<\/span><\/div>\r\n            <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:53%;background:var(--forest-mid)\"><\/div><div class=\"mini-bar-bench\" style=\"left:50%\"><\/div><\/div>\r\n            <div class=\"mini-bar-note\">Goal: 50% (Cook & Oetzel)<\/div>\r\n          <\/div>\r\n          <div class=\"mini-bar-item\">\r\n            <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Pregnant @ 6 cycles<\/span><span class=\"mini-bar-val\" style=\"color:var(--forest)\">76% \u2713<\/span><\/div>\r\n            <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:76%;background:var(--forest-mid)\"><\/div><div class=\"mini-bar-bench\" style=\"left:75%\"><\/div><\/div>\r\n            <div class=\"mini-bar-note\">Goal: 75%<\/div>\r\n          <\/div>\r\n          <div class=\"mini-bar-item\">\r\n            <div class=\"mini-bar-header\"><span class=\"mini-bar-name\">Open after 10 cycles<\/span><span class=\"mini-bar-val\" style=\"color:var(--forest)\">28% \u2713<\/span><\/div>\r\n            <div class=\"mini-bar-track\"><div class=\"mini-bar-fill\" style=\"width:28%;background:var(--amber)\"><\/div><div class=\"mini-bar-bench\" style=\"left:30%\"><\/div><\/div>\r\n            <div class=\"mini-bar-note\">Goal: &lt;30%<\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BENCHMARKS \u2550\u2550 -->\r\n<div id=\"s-benchmarks\" class=\"section\">\r\n  <div class=\"sec-header fade-up\">\r\n    <div>\r\n      <div class=\"sec-title\">Ontario 2024 Benchmarks<\/div>\r\n      <div class=\"sec-sub\">Source: Lactanet 2024 \u00b7 Ontario region \u00b7 1,807 herds \u00b7 Your herd highlighted<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"card fade-up\" style=\"margin-bottom:20px\">\r\n    <div class=\"card-head\"><div class=\"card-title\">Core Reproduction Metrics \u2014 Ontario Percentiles<\/div><\/div>\r\n    <div style=\"overflow-x:auto\">\r\n      <table class=\"bench-table\">\r\n        <thead>\r\n          <tr>\r\n            <th>Metric<\/th>\r\n            <th class=\"pct25\">25th pctl<\/th>\r\n            <th class=\"pct50\">50th pctl<\/th>\r\n            <th class=\"pct75\">75th pctl (Goal)<\/th>\r\n            <th class=\"pct90\">90th pctl<\/th>\r\n            <th style=\"color:var(--gold)\">Your Herd<\/th>\r\n            <th>Position<\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n        <tbody>\r\n          <tr class=\"your-herd\"><td>Pregnancy Rate %<\/td><td class=\"pct25\">12<\/td><td class=\"pct50\">17<\/td><td class=\"pct75\">21<\/td><td class=\"pct90\">25<\/td><td>19<\/td><td><span class=\"pct-badge pct-mid\">~52nd pctl<\/span><\/td><\/tr>\r\n          <tr><td>Insemination Rate %<\/td><td class=\"pct25\">33<\/td><td class=\"pct50\">43<\/td><td class=\"pct75\">51<\/td><td class=\"pct90\">57<\/td><td>48<\/td><td><span class=\"pct-badge pct-mid\">~53rd pctl<\/span><\/td><\/tr>\r\n          <tr><td>Conception Rate \u2014 Herd %<\/td><td class=\"pct25\">36<\/td><td class=\"pct50\">42<\/td><td class=\"pct75\">49<\/td><td class=\"pct90\">55<\/td><td>40<\/td><td><span class=\"pct-badge pct-low\">~46th pctl<\/span><\/td><\/tr>\r\n          <tr><td>Conception Rate \u2014 Lact 1 %<\/td><td class=\"pct25\">39<\/td><td class=\"pct50\">47<\/td><td class=\"pct75\">56<\/td><td class=\"pct90\">65<\/td><td>51<\/td><td><span class=\"pct-badge pct-mid\">~52nd pctl<\/span><\/td><\/tr>\r\n          <tr><td>Conception Rate \u2014 Lact 2 %<\/td><td class=\"pct25\">34<\/td><td class=\"pct50\">42<\/td><td class=\"pct75\">50<\/td><td class=\"pct90\">60<\/td><td>39<\/td><td><span class=\"pct-badge pct-low\">~49th pctl<\/span><\/td><\/tr>\r\n          <tr><td>Conception Rate \u2014 Lact 3+ %<\/td><td class=\"pct25\">31<\/td><td class=\"pct50\">38<\/td><td class=\"pct75\">46<\/td><td class=\"pct90\">55<\/td><td>32<\/td><td><span class=\"pct-badge pct-low\">~27th pctl<\/span><\/td><\/tr>\r\n          <tr><td>CR \u2014 1st Service %<\/td><td class=\"pct25\">33<\/td><td class=\"pct50\">41<\/td><td class=\"pct75\">49<\/td><td class=\"pct90\">57<\/td><td>48<\/td><td><span class=\"pct-badge pct-mid\">~74th pctl<\/span><\/td><\/tr>\r\n          <tr><td>CR \u2014 2nd Service %<\/td><td class=\"pct25\">33<\/td><td class=\"pct50\">41<\/td><td class=\"pct75\">50<\/td><td class=\"pct90\">58<\/td><td>41<\/td><td><span class=\"pct-badge pct-mid\">~50th pctl<\/span><\/td><\/tr>\r\n          <tr><td>CR \u2014 All Repeat Services %<\/td><td class=\"pct25\">36<\/td><td class=\"pct50\">42<\/td><td class=\"pct75\">50<\/td><td class=\"pct90\">57<\/td><td>34<\/td><td><span class=\"pct-badge pct-low\">~25th pctl<\/span><\/td><\/tr>\r\n          <tr><td>% Bred at 18\u201324 days since bred<\/td><td class=\"pct25\">16<\/td><td class=\"pct50\">26<\/td><td class=\"pct75\">36<\/td><td class=\"pct90\">44<\/td><td>26<\/td><td><span class=\"pct-badge pct-mid\">~50th pctl<\/span><\/td><\/tr>\r\n          <tr><td>% Bred at 4\u201317 days (lower=better)<\/td><td class=\"pct25\">7<\/td><td class=\"pct50\">5<\/td><td class=\"pct75\">3<\/td><td class=\"pct90\">2<\/td><td>17<\/td><td><span class=\"pct-badge pct-low\">Below 25th<\/span><\/td><\/tr>\r\n          <tr><td>DIM at 1st Breeding<\/td><td class=\"pct25\">93<\/td><td class=\"pct50\">82<\/td><td class=\"pct75\">75<\/td><td class=\"pct90\">70<\/td><td>82<\/td><td><span class=\"pct-badge pct-mid\">~50th pctl<\/span><\/td><\/tr>\r\n          <tr><td>% Bred by 90 DIM<\/td><td class=\"pct25\">44<\/td><td class=\"pct50\">66<\/td><td class=\"pct75\">82<\/td><td class=\"pct90\">91<\/td><td>64<\/td><td><span class=\"pct-badge pct-mid\">~48th pctl<\/span><\/td><\/tr>\r\n          <tr><td>% Pregnant at 150 DIM<\/td><td class=\"pct25\">37<\/td><td class=\"pct50\">50<\/td><td class=\"pct75\">62<\/td><td class=\"pct90\">71<\/td><td>55<\/td><td><span class=\"pct-badge pct-mid\">~57th pctl<\/span><\/td><\/tr>\r\n          <tr><td>Days Open<\/td><td class=\"pct25\">127<\/td><td class=\"pct50\">115<\/td><td class=\"pct75\">104<\/td><td class=\"pct90\">96<\/td><td>118<\/td><td><span class=\"pct-badge pct-mid\">~47th pctl<\/span><\/td><\/tr>\r\n          <tr><td>Calving Interval (days)<\/td><td class=\"pct25\">427<\/td><td class=\"pct50\">407<\/td><td class=\"pct75\">393<\/td><td class=\"pct90\">382<\/td><td>405<\/td><td><span class=\"pct-badge pct-mid\">~51st pctl<\/span><\/td><\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:20px\">\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">What Each Percentile Means<\/div><\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"alert good\"><div class=\"alert-icon\">\ud83d\udfe2<\/div><div><div class=\"alert-title\">90th Percentile \u2014 Elite<\/div><div class=\"alert-desc\">Top 10% of Ontario herds. Exceptional program execution.<\/div><\/div><\/div>\r\n        <div class=\"alert good\"><div class=\"alert-icon\">\ud83d\udfe9<\/div><div><div class=\"alert-title\">75th Percentile \u2014 Goal<\/div><div class=\"alert-desc\">Top 25% of herds. This is the benchmark target for your herd.<\/div><\/div><\/div>\r\n        <div class=\"alert warn\"><div class=\"alert-icon\">\ud83d\udfe8<\/div><div><div class=\"alert-title\">50th Percentile \u2014 Average<\/div><div class=\"alert-desc\">Median Ontario herd performance. Being here means room to improve.<\/div><\/div><\/div>\r\n        <div class=\"alert crit\"><div class=\"alert-icon\">\ud83d\udd34<\/div><div><div class=\"alert-title\">25th Percentile \u2014 Below Average<\/div><div class=\"alert-desc\">Bottom quartile. Significant opportunity for improvement.<\/div><\/div><\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">Your Herd Priority Improvements<\/div><\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"stat-list\">\r\n          <div class=\"stat-row\">\r\n            <span class=\"stat-name\">1. Repeat service CR gap<\/span>\r\n            <span class=\"stat-val\"><span class=\"pill pill-red\">Critical<\/span><\/span>\r\n          <\/div>\r\n          <div class=\"stat-row\">\r\n            <span class=\"stat-name\">2. Lact 3+ conception rate (32%)<\/span>\r\n            <span class=\"stat-val\"><span class=\"pill pill-red\">27th pctl<\/span><\/span>\r\n          <\/div>\r\n          <div class=\"stat-row\">\r\n            <span class=\"stat-name\">3. 4\u201317 day re-breed rate (17%)<\/span>\r\n            <span class=\"stat-val\"><span class=\"pill pill-red\">Below 25th<\/span><\/span>\r\n          <\/div>\r\n          <div class=\"stat-row\">\r\n            <span class=\"stat-name\">4. Overall insemination rate (48%)<\/span>\r\n            <span class=\"stat-val\"><span class=\"pill pill-gold\">53rd pctl<\/span><\/span>\r\n          <\/div>\r\n          <div class=\"stat-row\">\r\n            <span class=\"stat-name\">5. % bred by 90 DIM (64%)<\/span>\r\n            <span class=\"stat-val\"><span class=\"pill pill-gold\">48th pctl<\/span><\/span>\r\n          <\/div>\r\n          <div class=\"stat-row\">\r\n            <span class=\"stat-name\">\u2713 1st service CR (48%)<\/span>\r\n            <span class=\"stat-val\"><span class=\"pill pill-green\">74th pctl<\/span><\/span>\r\n          <\/div>\r\n          <div class=\"stat-row\">\r\n            <span class=\"stat-name\">\u2713 Pregnancy Rate (19%)<\/span>\r\n            <span class=\"stat-val\"><span class=\"pill pill-green\">52nd pctl<\/span><\/span>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 SETTINGS \u2550\u2550 -->\r\n<div id=\"s-settings\" class=\"section\">\r\n  <div class=\"sec-header fade-up\">\r\n    <div class=\"sec-title\">Herd Settings<\/div>\r\n  <\/div>\r\n  <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:20px\">\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">Farm Details<\/div><\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"form-grid\">\r\n          <div class=\"fg\"><label>Farm Name<\/label><input value=\"Oakview Dairy\"><\/div>\r\n          <div class=\"fg\"><label>Province<\/label><select><option selected>Ontario<\/option><option>Alberta<\/option><option>British Columbia<\/option><option>Manitoba<\/option><option>Saskatchewan<\/option><\/select><\/div>\r\n          <div class=\"fg\"><label>Total Cows<\/label><input type=\"number\" value=\"309\"><\/div>\r\n          <div class=\"fg\"><label>Herd VWP (days)<\/label><input type=\"number\" value=\"70\"><\/div>\r\n        <\/div>\r\n        <button class=\"btn btn-primary\">Save Changes<\/button>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"card fade-up\">\r\n      <div class=\"card-head\"><div class=\"card-title\">Benchmark Goals<\/div><span class=\"card-sub\">Based on Ontario 2024 75th percentile<\/span><\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"form-grid\">\r\n          <div class=\"fg\"><label>PR Goal (%)<\/label><input type=\"number\" value=\"21\"><\/div>\r\n          <div class=\"fg\"><label>IR Goal (%)<\/label><input type=\"number\" value=\"51\"><\/div>\r\n          <div class=\"fg\"><label>CR Goal (%)<\/label><input type=\"number\" value=\"49\"><\/div>\r\n          <div class=\"fg\"><label>Days Open Goal<\/label><input type=\"number\" value=\"104\"><\/div>\r\n        <\/div>\r\n        <button class=\"btn btn-ghost\">Reset to Ontario 75th<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<\/div><!-- end content -->\r\n<\/div><!-- end main -->\r\n\r\n<!-- \u2500\u2500 MODALS \u2500\u2500 -->\r\n<div class=\"modal-bg\" id=\"m-addCow\">\r\n  <div class=\"modal\">\r\n    <div class=\"modal-head\">\r\n      <div class=\"modal-title\">Add New Cow<\/div>\r\n      <button class=\"close-btn\" onclick=\"closeModal('addCow')\">\u2715<\/button>\r\n    <\/div>\r\n    <div class=\"modal-body\">\r\n      <div class=\"form-grid\">\r\n        <div class=\"fg\"><label>Cow Tag \/ ID<\/label><input type=\"text\" placeholder=\"e.g. 1042\"><\/div>\r\n        <div class=\"fg\"><label>Name (optional)<\/label><input type=\"text\" placeholder=\"e.g. Bessie\"><\/div>\r\n      <\/div>\r\n      <div class=\"form-grid\">\r\n        <div class=\"fg\"><label>Last Calving Date<\/label><input type=\"date\"><\/div>\r\n        <div class=\"fg\"><label>Parity (Lactation #)<\/label><select><option>1<\/option><option>2<\/option><option>3+<\/option><\/select><\/div>\r\n      <\/div>\r\n      <div class=\"form-grid\">\r\n        <div class=\"fg\"><label>Current Status<\/label>\r\n          <select><option>Open \u2014 Pre-VWP (Fresh)<\/option><option>Open \u2014 Eligible<\/option><option>Pregnant<\/option><option>Do Not Breed (DNB)<\/option><\/select>\r\n        <\/div>\r\n        <div class=\"fg\"><label>Voluntary Wait Period (days)<\/label><input type=\"number\" value=\"70\"><\/div>\r\n      <\/div>\r\n      <div class=\"form-grid\">\r\n        <div class=\"fg\"><label>Date of Birth<\/label><input type=\"date\"><\/div>\r\n        <div class=\"fg\"><label>Sire \/ ID Code<\/label><input type=\"text\" placeholder=\"Bull or semen ID\"><\/div>\r\n      <\/div>\r\n      <div style=\"display:flex;justify-content:flex-end;gap:10px;margin-top:8px\">\r\n        <button class=\"btn btn-ghost\" onclick=\"closeModal('addCow')\">Cancel<\/button>\r\n        <button class=\"btn btn-primary\" onclick=\"saveCow()\">Save Cow<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"modal-bg\" id=\"m-addEvent\">\r\n  <div class=\"modal\">\r\n    <div class=\"modal-head\">\r\n      <div class=\"modal-title\">Log Reproductive Event<\/div>\r\n      <button class=\"close-btn\" onclick=\"closeModal('addEvent')\">\u2715<\/button>\r\n    <\/div>\r\n    <div class=\"modal-body\">\r\n      <div class=\"form-grid\">\r\n        <div class=\"fg\"><label>Cow Tag<\/label><input type=\"text\" placeholder=\"e.g. 1042\"><\/div>\r\n        <div class=\"fg\"><label>Event Date<\/label><input type=\"date\"><\/div>\r\n      <\/div>\r\n      <div class=\"form-grid\">\r\n        <div class=\"fg\"><label>Event Type<\/label>\r\n          <select id=\"evtType\" onchange=\"toggleEvtFields()\">\r\n            <option value=\"BRED\">BRED \u2014 AI Insemination<\/option>\r\n            <option value=\"PREG\">PREG CHECK \u2014 Positive (+)<\/option>\r\n            <option value=\"OPEN\">OPEN \u2014 Found Not Pregnant<\/option>\r\n            <option value=\"ABORT\">ABORT \u2014 Pregnancy Loss<\/option>\r\n            <option value=\"CALV\">CALVING \u2014 New Lactation<\/option>\r\n            <option value=\"DNB\">DNB \u2014 Do Not Breed<\/option>\r\n            <option value=\"HEAT\">HEAT \u2014 Heat Observed (not bred)<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"fg\" id=\"evtCodeWrap\"><label>Breeding Program \/ Code<\/label>\r\n          <select>\r\n            <option>Activity Monitor<\/option>\r\n            <option>Ov-synch + CIDR<\/option>\r\n            <option>Presynch<\/option>\r\n            <option>Double Ovsynch<\/option>\r\n            <option>Visual Heat Only<\/option>\r\n            <option>Other<\/option>\r\n          <\/select>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"form-grid\">\r\n        <div class=\"fg\"><label>Technician<\/label><input type=\"text\" placeholder=\"Name\"><\/div>\r\n        <div class=\"fg\" id=\"evtSireWrap\"><label>Semen \/ Bull ID<\/label><input type=\"text\" placeholder=\"Sire code\"><\/div>\r\n      <\/div>\r\n      <div class=\"fg\" style=\"margin-bottom:14px\"><label>Notes<\/label><input type=\"text\" placeholder=\"Optional observations\"><\/div>\r\n      <div style=\"display:flex;justify-content:flex-end;gap:10px\">\r\n        <button class=\"btn btn-ghost\" onclick=\"closeModal('addEvent')\">Cancel<\/button>\r\n        <button class=\"btn btn-primary\" onclick=\"saveEvent()\">Save Event<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 DATA \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nconst ONT_BENCH = {\r\n  pr:  {p25:12, p50:17, p75:21, p90:25},\r\n  ir:  {p25:33, p50:43, p75:51, p90:57},\r\n  cr:  {p25:36, p50:42, p75:49, p90:55},\r\n  cr1: {p25:39, p50:47, p75:56, p90:65},\r\n  cr2: {p25:34, p50:42, p75:50, p90:60},\r\n  cr3: {p25:31, p50:38, p75:46, p90:55},\r\n  cr1svc:{p25:33, p50:41, p75:49, p90:57},\r\n  cr2svc:{p25:33, p50:41, p75:50, p90:58},\r\n  crRpt: {p25:36, p50:42, p75:50, p90:57},\r\n  dimFirst:{p25:93, p50:82, p75:75, p90:70},\r\n  daysOpen:{p25:127, p50:115, p75:104, p90:96},\r\n  ci:  {p25:427, p50:407, p75:393, p90:382},\r\n};\r\n\r\nconst cows = [\r\n  {id:'1001',name:'Daisy',   lact:2,calv:'2024-10-15',status:'pregnant',lastBred:'2024-12-01',lastBredDim:47,pregCheck:'2025-01-05',nBred:1,vwp:70,\r\n   history:[{type:'BRED',date:'2024-12-01',dim:47,code:'Presynch',tech:'John'},{type:'PREG',date:'2025-01-05',dim:82,outcome:'+'}]},\r\n  {id:'1002',name:'Rosie',   lact:1,calv:'2024-11-02',status:'open',    lastBred:'2025-01-10',lastBredDim:69,pregCheck:'Pending',nBred:2,vwp:70,\r\n   history:[{type:'BRED',date:'2024-12-20',dim:48,code:'OV+CIDR',tech:'John'},{type:'OPEN',date:'2025-01-10',dim:69,outcome:''},{type:'BRED',date:'2025-01-10',dim:69,code:'Activity',tech:'Joe'}]},\r\n  {id:'1003',name:'Buttercup',lact:3,calv:'2024-09-20',status:'open',   lastBred:'2024-11-28',lastBredDim:69,pregCheck:'\u2014',nBred:3,vwp:70,\r\n   history:[{type:'BRED',date:'2024-10-30',dim:40,code:'Presynch',tech:'John'},{type:'OPEN',date:'2024-11-15',dim:56,outcome:''},{type:'BRED',date:'2024-11-28',dim:69,code:'OV+CIDR',tech:'John'}]},\r\n  {id:'1004',name:'Maple',   lact:1,calv:'2024-12-01',status:'fresh',   lastBred:'\u2014',lastBredDim:0,pregCheck:'\u2014',nBred:0,vwp:70,history:[]},\r\n  {id:'1005',name:'Clover',  lact:2,calv:'2024-10-08',status:'pregnant',lastBred:'2024-12-15',lastBredDim:68,pregCheck:'2025-01-19',nBred:1,vwp:70,\r\n   history:[{type:'BRED',date:'2024-12-15',dim:68,code:'Activity',tech:'John'},{type:'PREG',date:'2025-01-19',dim:103,outcome:'+'}]},\r\n  {id:'1006',name:'Heather', lact:3,calv:'2024-08-14',status:'dnb',     lastBred:'\u2014',lastBredDim:0,pregCheck:'\u2014',nBred:5,vwp:70,\r\n   history:[{type:'DNB',date:'2024-11-01',dim:79,code:'',tech:'John'}]},\r\n  {id:'1007',name:'Fern',    lact:1,calv:'2024-11-20',status:'eligible',lastBred:'\u2014',lastBredDim:0,pregCheck:'\u2014',nBred:0,vwp:70,history:[]},\r\n  {id:'1008',name:'Ivy',     lact:2,calv:'2024-10-01',status:'open',    lastBred:'2025-01-05',lastBredDim:96,pregCheck:'\u2014',nBred:2,vwp:70,\r\n   history:[{type:'BRED',date:'2024-11-20',dim:50,code:'Presynch',tech:'John'},{type:'OPEN',date:'2024-12-15',dim:75,outcome:''},{type:'BRED',date:'2025-01-05',dim:96,code:'Activity',tech:'Jane'}]},\r\n];\r\n\r\nconst events = [\r\n  {date:'2025-03-05',cow:'1001',type:'BRED',dim:47,code:'Presynch',tech:'John',outcome:'Pending'},\r\n  {date:'2025-03-05',cow:'1005',type:'BRED',dim:68,code:'Activity',tech:'John',outcome:'Pending'},\r\n  {date:'2025-02-15',cow:'1001',type:'PREG',dim:82,code:'\u2014',tech:'John',outcome:'+'},\r\n  {date:'2025-02-15',cow:'1005',type:'PREG',dim:103,code:'\u2014',tech:'John',outcome:'+'},\r\n  {date:'2025-01-10',cow:'1002',type:'BRED',dim:69,code:'Activity',tech:'Joe',outcome:'Pending'},\r\n  {date:'2025-01-05',cow:'1008',type:'BRED',dim:96,code:'Activity',tech:'Jane',outcome:'Pending'},\r\n  {date:'2024-12-15',cow:'1003',type:'OPEN',dim:56,code:'\u2014',tech:'John',outcome:'\u2014'},\r\n];\r\n\r\nconst cycles = [\r\n  {d:'Apr 18',pr:10},{d:'May 18',pr:12},{d:'Jun 18',pr:16},{d:'Jul 18',pr:11},\r\n  {d:'Aug 18',pr:18},{d:'Sep 18',pr:6},{d:'Oct 18',pr:22},{d:'Nov 18',pr:19},\r\n  {d:'Dec 18',pr:21},{d:'Jan 19',pr:24},{d:'Feb 19',pr:19},{d:'Mar 19',pr:18},\r\n];\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BENCHMARK BANDS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction renderBands(){\r\n  const metrics = [\r\n    {name:'Pregnancy Rate %',       your:19, b:ONT_BENCH.pr,  higher:true},\r\n    {name:'Insemination Rate %',    your:48, b:ONT_BENCH.ir,  higher:true},\r\n    {name:'Conception Risk (herd)%',your:40, b:ONT_BENCH.cr,  higher:true},\r\n    {name:'Days Open',              your:118,b:ONT_BENCH.daysOpen, higher:false},\r\n    {name:'Calving Interval (d)',   your:405,b:ONT_BENCH.ci,  higher:false},\r\n  ];\r\n  const wrap = document.getElementById('benchBands');\r\n  wrap.innerHTML = metrics.map(m => {\r\n    const {p25,p50,p75,p90} = m.b;\r\n    const mn = Math.min(p25,p90)*0.9, mx = Math.max(p25,p90)*1.05;\r\n    const pct = v => Math.max(0,Math.min(100,((v-mn)\/(mx-mn))*100));\r\n    const markerPos = pct(m.your);\r\n    const w25 = pct(m.higher?p25:p90);\r\n    const w50 = pct(m.higher?p50:p75) - w25;\r\n    const w75 = pct(m.higher?p75:p50) - w25 - w50;\r\n    const w90 = pct(m.higher?p90:p25) - w25 - w50 - w75;\r\n    return `\r\n    <div style=\"margin-bottom:14px\">\r\n      <div style=\"display:flex;justify-content:space-between;margin-bottom:5px;align-items:baseline\">\r\n        <span style=\"font-size:12px;font-weight:500;color:var(--ink2)\">${m.name}<\/span>\r\n        <span style=\"font-family:'Fira Code',monospace;font-size:12px;font-weight:600;color:var(--ink)\">Your: ${m.your}<\/span>\r\n      <\/div>\r\n      <div class=\"bench-band\">\r\n        <div class=\"band-seg band-25\" style=\"width:${w25}%\"><\/div>\r\n        <div class=\"band-seg band-50\" style=\"width:${w50}%\"><\/div>\r\n        <div class=\"band-seg band-75\" style=\"width:${w75}%\"><\/div>\r\n        <div class=\"band-seg band-90\" style=\"width:${w90}%\"><\/div>\r\n        <div class=\"band-marker\" style=\"left:calc(${markerPos}% - 1px)\"><\/div>\r\n      <\/div>\r\n      <div style=\"display:flex;justify-content:space-between;font-family:'Fira Code',monospace;font-size:9px;color:var(--ink3);margin-top:3px\">\r\n        <span>25th:${p25}<\/span><span>50th:${p50}<\/span><span>75th:${p75}\u2605<\/span><span>90th:${p90}<\/span>\r\n      <\/div>\r\n    <\/div>`;\r\n  }).join('');\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 CYCLES \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction renderCycles(){\r\n  const goal = ONT_BENCH.pr.p75; \/\/ 21\r\n  const med  = ONT_BENCH.pr.p50; \/\/ 17\r\n  document.getElementById('cycleGrid').innerHTML = cycles.map(c => {\r\n    const cls = c.pr >= goal ? 'good' : c.pr >= med ? 'warn' : 'bad';\r\n    return `<div class=\"cycle-cell ${cls}\">\r\n      <div class=\"cycle-date\">${c.d}<\/div>\r\n      <div class=\"cycle-val ${cls}\">${c.pr}%<\/div>\r\n    <\/div>`;\r\n  }).join('');\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 COW TABLE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction renderCows(filter='',statusFilter=''){\r\n  const statusMap = {pregnant:'pill-green',open:'pill-gold',dnb:'pill-red',eligible:'pill-teal',fresh:'pill-blue'};\r\n  const statusLabel = {pregnant:'Pregnant',open:'Open',dnb:'DNB',eligible:'Eligible',fresh:'Fresh'};\r\n  const nextAction = {pregnant:'Preg check @ 35d',open:'Re-inseminate',dnb:'No action (DNB)',eligible:'Inseminate now',fresh:'Monitor til VWP'};\r\n  const nextColor  = {pregnant:'',open:'color:#d68910',dnb:'color:#8a8478',eligible:'color:#1e4d35;font-weight:600',fresh:'color:#148a7a'};\r\n  const tbody = document.getElementById('cowTbody');\r\n  const filtered = cows.filter(c => {\r\n    if(filter && String(c.lact) !== filter && !(filter==='3' && c.lact>=3)) return false;\r\n    if(statusFilter && c.status !== statusFilter) return false;\r\n    return true;\r\n  });\r\n  tbody.innerHTML = filtered.map(c => {\r\n    const dim = Math.floor((new Date() - new Date(c.calv))\/86400000);\r\n    const lastEvt = c.lastBred !== '\u2014' ? c.lastBred.replace(\/\\d{4}-\/,'') : '\u2014';\r\n    const pctEst = c.status==='pregnant'?'\u2713 Preg':c.nBred===0?'\u2014':c.nBred===1?'1st svc':c.nBred+'+ svcs';\r\n    return `<tr onclick=\"showDetail('${c.id}')\">\r\n      <td><span class=\"tag\">#${c.id}<\/span><\/td>\r\n      <td>${c.name}<\/td>\r\n      <td>Lact ${c.lact}<\/td>\r\n      <td>${dim}d<\/td>\r\n      <td><span class=\"pill ${statusMap[c.status]||'pill-grey'}\">${statusLabel[c.status]||c.status}<\/span><\/td>\r\n      <td style=\"font-family:'Fira Code',monospace;font-size:12px;color:#4a4840\">${lastEvt}<\/td>\r\n      <td style=\"text-align:center\">${c.lastBredDim||'\u2014'}<\/td>\r\n      <td style=\"text-align:center\">${c.nBred}<\/td>\r\n      <td style=\"font-size:12px;${nextColor[c.status]}\">${nextAction[c.status]||'\u2014'}<\/td>\r\n      <td><span class=\"pill pill-grey\" style=\"font-size:10px\">${pctEst}<\/span><\/td>\r\n      <td><button class=\"btn btn-ghost btn-sm\" onclick=\"event.stopPropagation();openModal('addEvent')\" style=\"white-space:nowrap\">\uff0b Event<\/button><\/td>\r\n    <\/tr>`;\r\n  }).join('');\r\n}\r\n\r\nfunction filterCows(v){ renderCows(v); }\r\nfunction filterCowStatus(v){ renderCows('',v); }\r\n\r\nfunction showDetail(id){\r\n  const c = cows.find(x=>x.id===id); if(!c) return;\r\n  document.getElementById('cowDetail').style.display='block';\r\n  document.getElementById('detailTitle').textContent = `Cow #${c.id} \u2014 ${c.name} (Lact ${c.lact})`;\r\n  const icons = {BRED:'\ud83d\udc89',PREG:'\u2705',OPEN:'\ud83d\udd04',ABORT:'\u274c',DNB:'\ud83d\udeab',CALV:'\ud83d\udc04',HEAT:'\u2668\ufe0f'};\r\n  const tl = {BRED:'tl-bred',PREG:'tl-preg',OPEN:'tl-open',ABORT:'tl-abort',DNB:'tl-open',CALV:'tl-calv'};\r\n  document.getElementById('cowTimeline').innerHTML = c.history.length\r\n    ? c.history.map(h=>`<div class=\"tl-item\">\r\n        <div class=\"tl-icon ${tl[h.type]||'tl-bred'}\">${icons[h.type]||'\ud83d\udccc'}<\/div>\r\n        <div><div class=\"tl-event\">${h.type} \u2014 ${h.code||h.outcome||'Recorded'}<\/div>\r\n        <div class=\"tl-meta\">${h.date} \u00b7 DIM ${h.dim}${h.tech?' \u00b7 '+h.tech:''}<\/div><\/div>\r\n      <\/div>`).join('')\r\n    : '<div style=\"font-size:12px;color:var(--ink3)\">No events recorded yet.<\/div>';\r\n  const dim = Math.floor((new Date()-new Date(c.calv))\/86400000);\r\n  document.getElementById('cowStatsList').innerHTML = `\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Current DIM<\/span><span class=\"stat-val\">${dim}d<\/span><\/div>\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Parity<\/span><span class=\"stat-val\">Lact ${c.lact}<\/span><\/div>\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Last Calving<\/span><span class=\"stat-val\">${c.calv}<\/span><\/div>\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Status<\/span><span class=\"stat-val\">${c.status.toUpperCase()}<\/span><\/div>\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Times Bred This Lact<\/span><span class=\"stat-val\">${c.nBred}<\/span><\/div>\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Voluntary Wait Period<\/span><span class=\"stat-val\">${c.vwp}d<\/span><\/div>\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Last Bred DIM<\/span><span class=\"stat-val\">${c.lastBredDim||'\u2014'}<\/span><\/div>\r\n    <div class=\"stat-row\"><span class=\"stat-name\">Pregnancy Check<\/span><span class=\"stat-val\">${c.pregCheck}<\/span><\/div>`;\r\n  document.getElementById('cowDetail').scrollIntoView({behavior:'smooth'});\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 EVENTS TABLE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction renderEvents(){\r\n  const typeMap = {BRED:'pill-blue',PREG:'pill-green',OPEN:'pill-gold',ABORT:'pill-red',DNB:'pill-red',CALV:'pill-teal',HEAT:'pill-teal'};\r\n  document.getElementById('eventTbody').innerHTML = events.map(e=>`\r\n    <tr>\r\n      <td style=\"font-family:'Fira Code',monospace;font-size:12px\">${e.date}<\/td>\r\n      <td><span class=\"tag\">#${e.cow}<\/span><\/td>\r\n      <td><span class=\"pill ${typeMap[e.type]||'pill-grey'}\">${e.type}<\/span><\/td>\r\n      <td>${e.dim}<\/td>\r\n      <td style=\"font-size:12px\">${e.code}<\/td>\r\n      <td>${e.tech}<\/td>\r\n      <td>${e.outcome==='+'?'<span class=\"pill pill-green\">Pregnant \u2713<\/span>':e.outcome==='\u2014'?'<span style=\"color:var(--ink3)\">\u2014<\/span>':'<span class=\"pill pill-grey\">Pending<\/span>'}<\/td>\r\n    <\/tr>`).join('');\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 NAV \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nconst titles = {dashboard:'Dashboard',cows:'Cow Records',breeding:'Breeding Events',reports:'Reports & Analysis',benchmarks:'Ontario 2024 Benchmarks',settings:'Herd Settings'};\r\nfunction show(name, el){\r\n  document.querySelectorAll('.section').forEach(s=>s.classList.remove('active'));\r\n  document.querySelectorAll('.nav-item').forEach(n=>n.classList.remove('active'));\r\n  document.getElementById('s-'+name).classList.add('active');\r\n  if(el) el.classList.add('active');\r\n  document.getElementById('pageTitle').textContent = titles[name]||'';\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 MODALS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction openModal(n){ document.getElementById('m-'+n).classList.add('open'); }\r\nfunction closeModal(n){ document.getElementById('m-'+n).classList.remove('open'); }\r\ndocument.querySelectorAll('.modal-bg').forEach(m=>m.addEventListener('click',e=>{if(e.target===m)m.classList.remove('open')}));\r\nfunction saveCow(){ closeModal('addCow'); }\r\nfunction saveEvent(){ closeModal('addEvent'); }\r\nfunction toggleEvtFields(){\r\n  const v = document.getElementById('evtType').value;\r\n  document.getElementById('evtCodeWrap').style.display = ['BRED'].includes(v)?'block':'none';\r\n  document.getElementById('evtSireWrap').style.display  = ['BRED'].includes(v)?'block':'none';\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 INIT \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nrenderBands();\r\nrenderCycles();\r\nrenderCows();\r\nrenderEvents();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d35d17d e-flex e-con-boxed e-con e-parent\" data-id=\"d35d17d\" 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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>DairyRepro \u2014 Ontario 2024 DairyRepro Main \u25c9 Dashboard \ud83d\udc04 Cow Records \ud83d\udccb Breeding Events Analysis \ud83d\udcca Reports \ud83c\udfaf ON Benchmarks \u2699 Herd Settings Oakview Dairy Ontario \u00b7 309 cows Dashboard Ontario 2024 Benchmarks Active \uff0b Add Cow \uff0b Log Event<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2125","page","type-page","status-publish","hentry"],"brizy_media":[],"_links":{"self":[{"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=\/wp\/v2\/pages\/2125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2125"}],"version-history":[{"count":6,"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=\/wp\/v2\/pages\/2125\/revisions"}],"predecessor-version":[{"id":2144,"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=\/wp\/v2\/pages\/2125\/revisions\/2144"}],"wp:attachment":[{"href":"https:\/\/dr-nutrition.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}