{"id":2731,"date":"2026-03-21T11:37:17","date_gmt":"2026-03-21T09:37:17","guid":{"rendered":"https:\/\/bio-me.bio\/?page_id=2731"},"modified":"2026-03-21T11:37:17","modified_gmt":"2026-03-21T09:37:17","slug":"productivity-energy-curve-planner","status":"publish","type":"page","link":"https:\/\/bio-me.bio\/?page_id=2731","title":{"rendered":"Productivity Energy Curve Planner"},"content":{"rendered":"\n<div class=\"eco-tool wp-block-group\" id=\"eco-tool-energycurve-1c8f5\">\n  <div class=\"eco-tool__header\">\n    <h2 class=\"eco-tool__title\">Productivity Energy Curve Planner<\/h2>\n    <p class=\"eco-tool__lead\">\n      Estimate your strongest work window and plan deep work, meetings, and lighter tasks around your daily energy pattern.\n    <\/p>\n  <\/div>\n\n  <form class=\"eco-tool__form\" id=\"eco-energycurve-form-1c8f5\" novalidate>\n    <div class=\"eco-tool__grid3\">\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-energycurve-wake-1c8f5\">Wake-up time<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-energycurve-wake-1c8f5\" type=\"time\" value=\"07:00\" \/>\n        <div class=\"eco-tool__hint\">Used to estimate your first focus window.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-energycurve-sleep-1c8f5\">Sleep quality<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-energycurve-sleep-1c8f5\">\n          <option value=\"good\" selected>Good<\/option>\n          <option value=\"okay\">Okay<\/option>\n          <option value=\"poor\">Poor<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Sleep quality strongly affects your peak window.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-energycurve-chronotype-1c8f5\">Energy pattern<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-energycurve-chronotype-1c8f5\">\n          <option value=\"morning\" selected>Morning type<\/option>\n          <option value=\"neutral\">Mixed \/ neutral<\/option>\n          <option value=\"evening\">Evening type<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Helps shift your likely focus peak earlier or later.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-energycurve-caffeine-1c8f5\">Caffeine use<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-energycurve-caffeine-1c8f5\">\n          <option value=\"none\">None<\/option>\n          <option value=\"light\" selected>Light<\/option>\n          <option value=\"moderate\">Moderate<\/option>\n          <option value=\"high\">High<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Heavy caffeine can create sharper peaks and crashes.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-energycurve-lunch-1c8f5\">Lunch size<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-energycurve-lunch-1c8f5\">\n          <option value=\"light\" selected>Light<\/option>\n          <option value=\"medium\">Medium<\/option>\n          <option value=\"heavy\">Heavy<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Heavier lunches may deepen the afternoon dip.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-energycurve-breaks-1c8f5\">Break quality<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-energycurve-breaks-1c8f5\">\n          <option value=\"good\">Good<\/option>\n          <option value=\"some\" selected>Some<\/option>\n          <option value=\"poor\">Poor<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Breaks can extend your productive window.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__actions\">\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn\" id=\"eco-energycurve-calc-1c8f5\">Calculate<\/button>\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn eco-tool__btn--ghost\" id=\"eco-energycurve-reset-1c8f5\">Reset<\/button>\n      <div class=\"eco-tool__error\" id=\"eco-energycurve-error-1c8f5\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <div class=\"eco-tool__result\" id=\"eco-energycurve-result-1c8f5\" hidden>\n    <h3 class=\"eco-tool__subtitle\">Result<\/h3>\n\n    <div class=\"eco-tool__cards\">\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Best deep work window<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-energycurve-peak-1c8f5\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-energycurve-peaksub-1c8f5\"><\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Likely low-energy window<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-energycurve-dip-1c8f5\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-energycurve-dipsub-1c8f5\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__card eco-tool__card--wide\">\n      <div class=\"eco-tool__metric-label\">Suggested day structure<\/div>\n      <div class=\"eco-tool__metric-sub\" id=\"eco-energycurve-note-1c8f5\"><\/div>\n    <\/div>\n\n    <p class=\"eco-tool__note\">\n      This is a practical planning estimate, not a biological measurement. Use it as a starting point and adjust around your real routine.\n    <\/p>\n  <\/div>\n\n  <details class=\"eco-tool__details\">\n    <summary class=\"eco-tool__summary\">How we calculate<\/summary>\n    <div class=\"eco-tool__details-body\">\n      <p class=\"eco-tool__text\">\n        We estimate your likely focus peak from wake time, chronotype, sleep, caffeine, lunch effect, and break quality. The goal is to place mentally demanding work into your strongest window and lighter tasks into your dip period.\n      <\/p>\n    <\/div>\n  <\/details>\n<\/div>\n\n<style>\n.eco-tool{ border:1px solid rgba(0,0,0,.12); border-radius:12px; padding:16px; }\n.eco-tool__header{ margin-bottom:12px; }\n.eco-tool__title{ margin:0 0 8px; }\n.eco-tool__lead{ margin:0; opacity:.9; }\n.eco-tool__form{ margin-top:12px; }\n\n.eco-tool__grid3{ display:grid; grid-template-columns:1fr; gap:16px; }\n@media (min-width:860px){ .eco-tool__grid3{ grid-template-columns:1fr 1fr 1fr; } }\n\n.eco-tool__field{ display:flex; flex-direction:column; gap:6px; }\n.eco-tool__label{ font-weight:600; }\n\n.eco-tool__input{\n  width:100%;\n  height:44px;\n  padding:0 12px;\n  border:1px solid rgba(0,0,0,.20);\n  border-radius:10px;\n  background:#fff;\n  box-sizing:border-box;\n  font:inherit;\n}\n.eco-tool select.eco-tool__input{\n  appearance:none;\n  -webkit-appearance:none;\n  line-height:44px;\n  padding-right:40px;\n  background-image:\n    linear-gradient(45deg, transparent 50%, rgba(0,0,0,.60) 50%),\n    linear-gradient(135deg, rgba(0,0,0,.60) 50%, transparent 50%);\n  background-position:\n    calc(100% - 18px) 50%,\n    calc(100% - 12px) 50%;\n  background-size:6px 6px;\n  background-repeat:no-repeat;\n}\n\n.eco-tool__hint{ font-size:.92em; opacity:.78; min-height:38px; }\n\n.eco-tool__actions{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:16px; }\n.eco-tool__btn{ padding:10px 22px; }\n.eco-tool__btn--ghost{ background:transparent !important; border:1px solid rgba(0,0,0,.20) !important; }\n.eco-tool__btn--ghost:hover,.eco-tool__btn--ghost:focus{ background:rgba(0,0,0,.06) !important; border-color:rgba(0,0,0,.35) !important; }\n\n.eco-tool__error{ min-height:1.2em; font-weight:600; flex:1 1 240px; }\n\n.eco-tool__result{ margin-top:16px; }\n.eco-tool__subtitle{ margin:0 0 10px; }\n\n.eco-tool__cards{ display:grid; gap:10px; grid-template-columns:1fr; }\n@media (min-width:860px){ .eco-tool__cards{ grid-template-columns:1fr 1fr; } }\n\n.eco-tool__card{ border:1px solid rgba(0,0,0,.12); border-radius:12px; padding:12px; }\n.eco-tool__card--wide{ margin-top:10px; }\n.eco-tool__metric-label{ opacity:.85; font-weight:600; }\n.eco-tool__metric-value{ font-size:1.6em; font-weight:800; margin-top:6px; line-height:1.1; }\n.eco-tool__metric-sub{ opacity:.85; margin-top:6px; }\n\n.eco-tool__note{ margin:10px 0 0; opacity:.9; }\n.eco-tool__details{ margin-top:14px; }\n.eco-tool__summary{ cursor:pointer; font-weight:700; }\n.eco-tool__details-body{ margin-top:10px; }\n.eco-tool__text{ margin:0 0 10px; }\n<\/style>\n\n<script>\n(function(){\n  const S = \"1c8f5\";\n  const el = (id) => document.getElementById(id + \"-\" + S);\n\n  const wakeEl = el(\"eco-energycurve-wake\");\n  const sleepEl = el(\"eco-energycurve-sleep\");\n  const chronotypeEl = el(\"eco-energycurve-chronotype\");\n  const caffeineEl = el(\"eco-energycurve-caffeine\");\n  const lunchEl = el(\"eco-energycurve-lunch\");\n  const breaksEl = el(\"eco-energycurve-breaks\");\n\n  const calcBtn = el(\"eco-energycurve-calc\");\n  const resetBtn = el(\"eco-energycurve-reset\");\n  const errorEl = el(\"eco-energycurve-error\");\n\n  const resultEl = el(\"eco-energycurve-result\");\n  const peakEl = el(\"eco-energycurve-peak\");\n  const peakSubEl = el(\"eco-energycurve-peaksub\");\n  const dipEl = el(\"eco-energycurve-dip\");\n  const dipSubEl = el(\"eco-energycurve-dipsub\");\n  const noteEl = el(\"eco-energycurve-note\");\n\n  function setError(msg){ errorEl.textContent = msg || \"\"; }\n\n  function timeToMinutes(str){\n    const parts = String(str).split(\":\");\n    if (parts.length !== 2) return null;\n    const h = Number(parts[0]);\n    const m = Number(parts[1]);\n    if (!Number.isFinite(h) || !Number.isFinite(m)) return null;\n    return h * 60 + m;\n  }\n\n  function minutesToTime(mins){\n    mins = ((mins % 1440) + 1440) % 1440;\n    const h = Math.floor(mins \/ 60);\n    const m = mins % 60;\n    return `${String(h).padStart(2,\"0\")}:${String(m).padStart(2,\"0\")}`;\n  }\n\n  function rangeStr(start, end){\n    return `${minutesToTime(start)}\u2013${minutesToTime(end)}`;\n  }\n\n  function calculate(){\n    setError(\"\");\n\n    const wake = timeToMinutes(wakeEl.value);\n    if (wake === null){\n      setError(\"Please enter a valid wake-up time.\");\n      resultEl.hidden = true;\n      return;\n    }\n\n    let peakStart = wake + 120; \/\/ default peak begins about 2h after waking\n    let peakDuration = 150;     \/\/ 2.5h default\n    let dipStart = wake + 360;  \/\/ about 6h after waking\n    let dipDuration = 90;\n\n    if (chronotypeEl.value === \"morning\") peakStart -= 45;\n    if (chronotypeEl.value === \"evening\") peakStart += 75;\n\n    if (sleepEl.value === \"good\") peakDuration += 30;\n    if (sleepEl.value === \"poor\") {\n      peakDuration -= 30;\n      dipDuration += 30;\n      dipStart -= 20;\n    }\n\n    if (caffeineEl.value === \"moderate\") peakStart -= 10;\n    if (caffeineEl.value === \"high\") {\n      peakStart -= 10;\n      dipStart += 20;\n      dipDuration += 20;\n    }\n\n    if (lunchEl.value === \"medium\") dipDuration += 15;\n    if (lunchEl.value === \"heavy\") {\n      dipDuration += 35;\n      dipStart -= 10;\n    }\n\n    if (breaksEl.value === \"good\") peakDuration += 20;\n    if (breaksEl.value === \"poor\") peakDuration -= 20;\n\n    peakDuration = Math.max(90, peakDuration);\n    dipDuration = Math.max(60, dipDuration);\n\n    const peakEnd = peakStart + peakDuration;\n    const dipEnd = dipStart + dipDuration;\n\n    peakEl.textContent = rangeStr(peakStart, peakEnd);\n    peakSubEl.textContent = \"Best for deep work, writing, analysis, and demanding decisions.\";\n\n    dipEl.textContent = rangeStr(dipStart, dipEnd);\n    dipSubEl.textContent = \"Better for admin, meetings, routine tasks, or a brief reset.\";\n\n    let note = `Plan your hardest tasks around ${rangeStr(peakStart, peakEnd)}. `;\n    note += `Use ${rangeStr(dipStart, dipEnd)} for lighter work or recovery. `;\n\n    if (sleepEl.value === \"poor\"){\n      note += \"Because sleep quality is lower, keep your highest-priority work shorter and earlier.\";\n    } else if (chronotypeEl.value === \"evening\"){\n      note += \"Your pattern suggests later energy, so avoid placing your toughest work too early.\";\n    } else if (breaksEl.value === \"poor\"){\n      note += \"Short breaks may help preserve focus longer across the day.\";\n    } else {\n      note += \"Protect the peak by reducing interruptions and batching shallow tasks outside it.\";\n    }\n\n    noteEl.textContent = note;\n    resultEl.hidden = false;\n  }\n\n  function reset(){\n    setError(\"\");\n    wakeEl.value = \"07:00\";\n    sleepEl.value = \"good\";\n    chronotypeEl.value = \"morning\";\n    caffeineEl.value = \"light\";\n    lunchEl.value = \"light\";\n    breaksEl.value = \"some\";\n    resultEl.hidden = true;\n  }\n\n  calcBtn.addEventListener(\"click\", calculate);\n  resetBtn.addEventListener(\"click\", reset);\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Productivity Energy Curve Planner Estimate your strongest work window and plan deep work, meetings, and lighter tasks around your daily energy pattern. Wake-up time Used to estimate your first focus&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2452,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2731"}],"collection":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2731"}],"version-history":[{"count":1,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2731\/revisions"}],"predecessor-version":[{"id":2732,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2731\/revisions\/2732"}],"up":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2452"}],"wp:attachment":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}