{"id":4096,"date":"2026-10-20T20:36:34","date_gmt":"2026-10-20T20:36:34","guid":{"rendered":"https:\/\/eduflections.blog\/?page_id=4096"},"modified":"2026-10-20T20:36:35","modified_gmt":"2026-10-20T20:36:35","slug":"staffroom-shelf","status":"publish","type":"page","link":"https:\/\/eduflections.blog\/?page_id=4096","title":{"rendered":"Staffroom Shelf"},"content":{"rendered":"\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Lexend:wght@500;600;700&amp;family=Karla:ital,wght@0,400;0,500;0,700;1,400&amp;family=IBM+Plex+Mono:wght@500&amp;display=swap\" rel=\"stylesheet\">\n<style>\n  \/* layout: single reading column, zine-issue masthead, category cards as an index-card grid, dated archive log below *\/\n  :root{\n    --bg:#E7EDDF;\n    --surface:#FBFBF5;\n    --surface-sunken:#DDE6D1;\n    --ink:#262E20;\n    --ink-soft:#5C6B52;\n    --border:#C7D4B9;\n    --accent:#4B3A72;\n    --accent-soft:#ECE6F6;\n    --accent-ink:#2E2350;\n\n    --cat-listen-bg:#EFE7FB; --cat-listen-ink:#5B3E96;\n    --cat-read-bg:#E3F1F0;   --cat-read-ink:#1F6F6F;\n    --cat-use-bg:#EEF2E1;    --cat-use-ink:#5B6B2E;\n    --cat-watch-bg:#FBEFDA;  --cat-watch-ink:#8A5A12;\n    --cat-join-bg:#FBE7EE;   --cat-join-ink:#A23B64;\n    --cat-leadership-bg:#E3ECF5; --cat-leadership-ink:#2E5C8A;\n    --cat-book-bg:#F3E8DD; --cat-book-ink:#7A4A26;\n\n    --font-display:'Lexend', ui-sans-serif, system-ui, sans-serif;\n    --font-body:'Karla', ui-sans-serif, system-ui, sans-serif;\n    --font-mono:'IBM Plex Mono', ui-monospace, monospace;\n    color-scheme: light;\n  }\n  @media (prefers-color-scheme: dark){\n    :root:not([data-theme=\"light\"]){\n      --bg:#141810;\n      --surface:#1D2318;\n      --surface-sunken:#242B1D;\n      --ink:#E6ECDE;\n      --ink-soft:#A3B294;\n      --border:#3A452F;\n      --accent:#C7B6F2;\n      --accent-soft:#2F2747;\n      --accent-ink:#E7DEFB;\n\n      --cat-listen-bg:#2E2747; --cat-listen-ink:#CBB9F7;\n      --cat-read-bg:#17302E;   --cat-read-ink:#8FD6CF;\n      --cat-use-bg:#272D18;    --cat-use-ink:#C3D68B;\n      --cat-watch-bg:#33260F;  --cat-watch-ink:#F0C47E;\n      --cat-join-bg:#331C26;   --cat-join-ink:#F0A8C3;\n      --cat-leadership-bg:#1B2A3A; --cat-leadership-ink:#9DC3EC;\n      --cat-book-bg:#2E2015; --cat-book-ink:#E0B88C;\n      color-scheme: dark;\n    }\n  }\n  :root[data-theme=\"dark\"]{\n    --bg:#141810;\n    --surface:#1D2318;\n    --surface-sunken:#242B1D;\n    --ink:#E6ECDE;\n    --ink-soft:#A3B294;\n    --border:#3A452F;\n    --accent:#C7B6F2;\n    --accent-soft:#2F2747;\n    --accent-ink:#E7DEFB;\n\n    --cat-listen-bg:#2E2747; --cat-listen-ink:#CBB9F7;\n    --cat-read-bg:#17302E;   --cat-read-ink:#8FD6CF;\n    --cat-use-bg:#272D18;    --cat-use-ink:#C3D68B;\n    --cat-watch-bg:#33260F;  --cat-watch-ink:#F0C47E;\n    --cat-join-bg:#331C26;   --cat-join-ink:#F0A8C3;\n    --cat-leadership-bg:#1B2A3A; --cat-leadership-ink:#9DC3EC;\n    --cat-book-bg:#2E2015; --cat-book-ink:#E0B88C;\n    color-scheme: dark;\n  }\n\n  *{box-sizing:border-box;}\n  body{\n    background:var(--bg);\n    color:var(--ink);\n    font-family:var(--font-body);\n    padding-left:max(16px, env(safe-area-inset-left,0px));\n    padding-right:max(16px, env(safe-area-inset-right,0px));\n  }\n  h1,h2,h3{font-family:var(--font-display); text-wrap:balance; margin:0;}\n  p{margin:0;}\n  a{color:inherit;}\n\n  .wrap{max-width:760px; margin:0 auto; padding-block:40px 80px;}\n\n  \/* masthead *\/\n  .masthead{display:flex; flex-direction:column; gap:14px; padding-bottom:28px; border-bottom:2px solid var(--ink);}\n  .kicker{\n    font-family:var(--font-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase;\n    color:var(--accent); display:flex; align-items:center; gap:8px;\n  }\n  .kicker::before{content:\"\u2726\"; font-size:12px;}\n  .masthead h1{font-size:clamp(34px,6vw,52px); font-weight:700; line-height:1.02;}\n  .masthead .dek{font-size:16px; color:var(--ink-soft); max-width:46ch; line-height:1.5;}\n  .masthead .meta{\n    display:flex; flex-wrap:wrap; gap:16px; font-family:var(--font-mono); font-size:11.5px;\n    color:var(--ink-soft); letter-spacing:.02em; margin-top:4px;\n  }\n  .masthead .meta b{color:var(--ink); font-weight:600;}\n\n  \/* controls *\/\n  .controls{\n    display:flex; gap:10px; flex-wrap:wrap; align-items:center;\n    margin-top:26px; padding:14px 16px; background:var(--surface); border:1px solid var(--border); border-radius:10px;\n  }\n  .controls input[type=\"search\"]{\n    flex:1 1 200px; min-width:0; border:1px solid var(--border); background:var(--surface-sunken);\n    color:var(--ink); border-radius:7px; padding:9px 12px; font-family:var(--font-body); font-size:14px;\n  }\n  .controls input[type=\"search\"]:focus-visible, .chip:focus-visible, .issue-link:focus-visible, a:focus-visible{\n    outline:2px solid var(--accent); outline-offset:2px;\n  }\n  .chipset{display:flex; gap:6px; flex-wrap:wrap;}\n  .chip{\n    font-family:var(--font-mono); font-size:11px; letter-spacing:.03em; text-transform:uppercase;\n    border:1px solid var(--border); background:var(--surface-sunken); color:var(--ink-soft);\n    padding:7px 11px; border-radius:999px; cursor:pointer; transition:background .15s, color .15s, border-color .15s;\n    display:inline-flex; align-items:center; gap:6px;\n  }\n  .chip svg{width:12px; height:12px; flex:none;}\n  .chip[aria-pressed=\"true\"]{background:var(--accent); border-color:var(--accent); color:var(--surface);}\n  .count{font-family:var(--font-mono); font-size:11px; color:var(--ink-soft); white-space:nowrap;}\n\n  \/* section headings *\/\n  .section-head{display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:40px 0 16px;}\n  .section-head h2{font-size:13px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-soft); font-weight:600;}\n  .section-head .rule{flex:1; height:1px; background:var(--border);}\n\n  .issue-title{font-size:clamp(22px,4vw,30px); font-weight:700; margin-bottom:6px;}\n  .issue-sub{color:var(--ink-soft); font-size:14.5px; line-height:1.5; max-width:58ch; margin-bottom:22px;}\n\n  \/* card grid *\/\n  .grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(240px,1fr)); gap:14px;}\n  .card{\n    background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:18px;\n    display:flex; flex-direction:column; gap:10px;\n  }\n  .cat-pill{\n    align-self:flex-start; font-family:var(--font-mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase;\n    padding:4px 10px; border-radius:999px; font-weight:500;\n    display:inline-flex; align-items:center; gap:5px;\n  }\n  .cat-pill svg{width:12px; height:12px; flex:none;}\n  .cat-Listen{background:var(--cat-listen-bg); color:var(--cat-listen-ink);}\n  .cat-Read{background:var(--cat-read-bg); color:var(--cat-read-ink);}\n  .cat-Use{background:var(--cat-use-bg); color:var(--cat-use-ink);}\n  .cat-Watch{background:var(--cat-watch-bg); color:var(--cat-watch-ink);}\n  .cat-Join{background:var(--cat-join-bg); color:var(--cat-join-ink);}\n  .cat-Leadership{background:var(--cat-leadership-bg); color:var(--cat-leadership-ink);}\n  .cat-Book{background:var(--cat-book-bg); color:var(--cat-book-ink);}\n\n  .card h3{font-size:16.5px; line-height:1.35; font-weight:600;}\n  .card h3 a{text-decoration:none; border-bottom:1.5px solid transparent;}\n  .card h3 a:hover{border-bottom-color:currentColor;}\n  .card .source{font-size:12.5px; color:var(--ink-soft); font-style:italic;}\n  .card .note{font-size:13.5px; color:var(--ink-soft); line-height:1.5;}\n  .card .from{font-size:11px; font-family:var(--font-mono); color:var(--ink-soft); margin-top:auto; padding-top:4px;}\n\n  \/* archive, expandable *\/\n  .archive-row{\n    display:flex; gap:14px; align-items:baseline; padding:13px 0; border-bottom:1px solid var(--border);\n    font-size:14px; width:100%; background:none; border-left:none; border-right:none; border-top:none;\n    cursor:pointer; text-align:left; color:var(--ink); font-family:var(--font-body);\n  }\n  .archive-row:last-of-type{border-bottom:1px solid var(--border);}\n  .archive-caret{margin-left:auto; color:var(--ink-soft); font-size:12px; transition:transform .15s;}\n  .archive-row[aria-expanded=\"true\"] .archive-caret{transform:rotate(90deg);}\n  .archive-panel{padding:4px 0 20px; display:none;}\n  .archive-panel.open{display:block;}\n\n  \/* empty state *\/\n  .empty{\n    background:var(--surface); border:1.5px dashed var(--border); border-radius:14px;\n    padding:34px 28px; text-align:left; display:flex; flex-direction:column; gap:10px;\n  }\n  .empty .stamp{font-family:var(--font-mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--accent);}\n  .empty h3{font-size:19px; font-weight:700;}\n  .empty p{color:var(--ink-soft); font-size:14.5px; line-height:1.6; max-width:52ch;}\n\n  .archive-date{font-family:var(--font-mono); font-size:11.5px; color:var(--ink-soft); flex:0 0 auto; width:84px;}\n  .archive-title{font-weight:600;}\n\n  \/* search-mode results *\/\n  .result-edition{font-size:11px; font-family:var(--font-mono); color:var(--ink-soft); margin:22px 0 10px;}\n  .no-results{color:var(--ink-soft); font-size:14px; padding:20px 0;}\n\n  .foot{margin-top:50px; padding-top:20px; border-top:1px solid var(--border); font-size:12.5px; color:var(--ink-soft); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px;}\n  .foot a{text-decoration:underline;}\n\n  @media (max-width:480px){\n    .masthead .meta{gap:10px;}\n    .archive-date{width:64px;}\n  }\n<\/style>\n\n<div class=\"wrap\">\n\n  <header class=\"masthead\">\n    <div class=\"kicker\">Edu&#8217;Flections \u00b7 Professional Learning<\/div>\n    <h1>Staffroom Shelf<\/h1>\n    <p class=\"dek\">A monthly shelf of what&#8217;s worth reading, listening to, trying and watching in teaching and learning.<\/p>\n    <div class=\"meta\">\n      <span><b id=\"issueCount\">0<\/b> issues so far<\/span>\n      <span>Updated <b id=\"lastUpdated\">\u2014<\/b><\/span>\n    <\/div>\n  <\/header>\n\n  <div class=\"controls\">\n    <input type=\"search\" id=\"searchInput\" placeholder=\"Search titles, sources, themes\u2026\" aria-label=\"Search the shelf\">\n    <div class=\"chipset\" id=\"chipset\" role=\"group\" aria-label=\"Filter by category\"><\/div>\n    <span class=\"count\" id=\"resultCount\"><\/span>\n  <\/div>\n\n  <div class=\"section-head\"><h2 id=\"latestHead\">Latest Issue<\/h2><div class=\"rule\"><\/div><\/div>\n  <div id=\"latestIssue\"><\/div>\n\n  <div class=\"section-head\" id=\"archiveHead\" hidden=\"\"><h2>Past Issues<\/h2><div class=\"rule\"><\/div><\/div>\n  <div id=\"archiveList\"><\/div>\n\n  <div id=\"searchResults\"><\/div>\n\n  <div class=\"foot\">\n    <span>A monthly companion to <a href=\"https:\/\/eduflections.blog\">Edu&#8217;Flections<\/a><\/span>\n    <span id=\"themeNote\"><\/span>\n  <\/div>\n\n<\/div>\n\n<script>\n(function(){\n  var CATEGORIES = [\"Listen\",\"Read\",\"Use\",\"Watch\",\"Join\",\"Leadership\",\"Book\"];\n\n  var ICONS = {\n    Listen: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 14v-2a8 8 0 0 1 16 0v2\"\/><rect x=\"2.5\" y=\"14\" width=\"5\" height=\"7\" rx=\"1.5\"\/><rect x=\"16.5\" y=\"14\" width=\"5\" height=\"7\" rx=\"1.5\"\/><\/svg>',\n    Read: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 5.5c2-1 5-1 9 1 4-2 7-2 9-1v13c-2-1-5-1-9 1-4-2-7-2-9-1z\"\/><path d=\"M12 6.5v13\"\/><\/svg>',\n    Use: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.6 2.6-2-2z\"\/><\/svg>',\n    Watch: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>',\n    Join: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 17l-5-5 5-5\"\/><path d=\"M6 12h12\"\/><path d=\"M15 4h3a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-3\"\/><\/svg>',\n    Leadership: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M15 9l-4.5 2-2 4.5 4.5-2z\"\/><\/svg>',\n    Book: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"3\" width=\"14\" height=\"18\" rx=\"1.5\"\/><path d=\"M4 6.5h14\"\/><path d=\"M8 3v18\"\/><\/svg>'\n  };\n\n  \/\/ Editions load live from the Staffroom Shelf Tracker spreadsheet.\n  \/\/ Only rows whose Status is \"Go\" appear on the page.\n  \/\/ The sheet must be shared as \"Anyone with the link can view\".\n  var SHEET_ID = '1pL59VumqxRU8rTRIGbzT-JM9gVIS6VuWvBCeYb-XnIg';\n\n  \/\/ One tab per month, named \"<label> \u00b7 <theme>\". Add new years here.\n  var MONTHS = [\n    [\"2026-11\",\"Nov 2026\",\"Assessment and feedback\"],\n    [\"2026-12\",\"Dec 2026\",\"Retrieval practice and memory\"],\n    [\"2027-01\",\"Jan 2027\",\"Adaptive and inclusive teaching\"],\n    [\"2027-02\",\"Feb 2027\",\"Instructional coaching and teacher development\"],\n    [\"2027-03\",\"Mar 2027\",\"Curriculum and sequencing\"],\n    [\"2027-04\",\"Apr 2027\",\"Metacognition and self-regulation\"],\n    [\"2027-05\",\"May 2027\",\"Student wellbeing\"],\n    [\"2027-06\",\"Jun 2027\",\"Behaviour and classroom culture\"],\n    [\"2027-07\",\"Jul 2027\",\"Questioning, talk and oracy\"],\n    [\"2027-08\",\"Aug 2027\",\"Explicit instruction and cognitive load\"],\n    [\"2027-09\",\"Sep 2027\",\"School leadership and culture\"],\n    [\"2027-10\",\"Oct 2027\",\"AI and learning\"]\n  ];\n\n  var EDITIONS = [];\n\n  function esc(s){\n    return String(s == null ? '' : s)\n      .replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;')\n      .replace(\/\"\/g,'&quot;').replace(\/'\/g,'&#39;');\n  }\n\n  function cellText(c){\n    if (!c) return '';\n    if (c.f != null) return String(c.f).trim();\n    if (c.v == null) return '';\n    return String(c.v).trim();\n  }\n\n  \/\/ Guards against Google returning a different tab when a month's tab doesn't exist yet.\n  function issueMatches(c, ym, label){\n    if (!c) return false;\n    var year = +ym.slice(0,4), month = +ym.slice(5,7);\n    var m = \/^Date\\((\\d+),(\\d+)\/.exec(String(c.v || ''));\n    if (m) return +m[1] === year && (+m[2] + 1) === month;\n    var t = cellText(c).toLowerCase();\n    var parts = label.toLowerCase().split(' ');\n    return t.indexOf(parts[0]) !== -1 && t.indexOf(parts[1]) !== -1;\n  }\n\n  function loadMonth(entry){\n    var ym = entry[0], label = entry[1], theme = entry[2];\n    var tab = label + ' \u00b7 ' + theme;\n    var url = 'https:\/\/docs.google.com\/spreadsheets\/d\/' + SHEET_ID +\n      '\/gviz\/tq?tqx=out:json&headers=1&sheet=' + encodeURIComponent(tab);\n    return fetch(url).then(function(r){ return r.text(); }).then(function(txt){\n      var json = JSON.parse(txt.slice(txt.indexOf('(') + 1, txt.lastIndexOf(')')));\n      if (json.status === 'error' || !json.table) return null;\n      var cols = json.table.cols.map(function(c){ return (c.label || '').trim().toLowerCase(); });\n      function idx(name){ return cols.indexOf(name); }\n      var iDate = idx('issue date'), iStatus = idx('status'), iCat = idx('category'),\n          iTitle = idx('title'), iSource = idx('creator \/ source'), iLink = idx('link'),\n          iNote = idx('note'), iThemes = idx('themes');\n      var items = [];\n      (json.table.rows || []).forEach(function(row){\n        var c = row.c || [];\n        if (cellText(c[iStatus]).toLowerCase() !== 'go') return;\n        if (!issueMatches(c[iDate], ym, label)) return;\n        var cat = cellText(c[iCat]);\n        cat = cat.charAt(0).toUpperCase() + cat.slice(1).toLowerCase();\n        if (CATEGORIES.indexOf(cat) === -1) return;\n        var link = cellText(c[iLink]);\n        if (!\/^https?:\\\/\\\/\/i.test(link)) return;\n        items.push({\n          category: cat,\n          title: esc(cellText(c[iTitle])),\n          source: esc(cellText(c[iSource])),\n          link: esc(link),\n          note: esc(cellText(c[iNote])),\n          themes: cellText(c[iThemes]).split(\/[,;]\/).map(function(s){ return s.trim(); }).filter(Boolean)\n        });\n      });\n      if (!items.length) return null;\n      items.sort(function(a,b){ return CATEGORIES.indexOf(a.category) - CATEGORIES.indexOf(b.category); });\n      return { date: ym, label: label, theme: esc(theme), items: items };\n    }).catch(function(){ return null; });\n  }\n\n  var state = { query:\"\", cat:null };\n\n  var chipset = document.getElementById('chipset');\n  CATEGORIES.forEach(function(cat){\n    var b = document.createElement('button');\n    b.className = 'chip';\n    b.type = 'button';\n    b.innerHTML = ICONS[cat] + '<span>' + cat + '<\/span>';\n    b.setAttribute('aria-pressed','false');\n    b.addEventListener('click', function(){\n      state.cat = (state.cat === cat) ? null : cat;\n      Array.prototype.forEach.call(chipset.children, function(c){\n        c.setAttribute('aria-pressed', c === b && state.cat ? 'true' : 'false');\n      });\n      render();\n    });\n    chipset.appendChild(b);\n  });\n\n  document.getElementById('searchInput').addEventListener('input', function(e){\n    state.query = e.target.value.trim().toLowerCase();\n    render();\n  });\n\n  function matches(item){\n    if (state.cat && item.category !== state.cat) return false;\n    if (!state.query) return true;\n    var hay = [item.title, item.source, item.note, (item.themes||[]).join(' ')].join(' ').toLowerCase();\n    return hay.indexOf(state.query) !== -1;\n  }\n\n  function cardHTML(item, editionLabel){\n    var note = item.note ? '<p class=\"note\">' + item.note + '<\/p>' : '';\n    var from = editionLabel ? '<p class=\"from\">' + editionLabel + '<\/p>' : '';\n    return '' +\n      '<article class=\"card\" data-cat=\"' + item.category + '\">' +\n        '<span class=\"cat-pill cat-' + item.category + '\">' + ICONS[item.category] + '<span>' + item.category + '<\/span><\/span>' +\n        '<h3><a href=\"' + item.link + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + item.title + '<\/a><\/h3>' +\n        '<p class=\"source\">' + item.source + '<\/p>' +\n        note + from +\n      '<\/article>';\n  }\n\n  function renderEmpty(){\n    document.getElementById('latestIssue').innerHTML =\n      '<div class=\"empty\">' +\n        '<span class=\"stamp\">Coming soon<\/span>' +\n        '<h3>The first issue is being put together<\/h3>' +\n        '<p>Each month this shelf will hold picks across Listen, Read, Use, Watch, Join, Leadership and Book &mdash; one evidence-informed find in each, with a line on why it earned its place. The first issue lands once it has been properly sourced and checked, not rushed out empty. Check back soon.<\/p>' +\n      '<\/div>';\n  }\n\n  function toggleArchivePanel(idx){\n    var row = document.querySelector('.archive-row[data-idx=\"' + idx + '\"]');\n    var panel = document.getElementById('archivePanel' + idx);\n    var open = panel.classList.toggle('open');\n    row.setAttribute('aria-expanded', open ? 'true' : 'false');\n  }\n  window.__toggleArchivePanel = toggleArchivePanel;\n\n  function render(){\n    var issueCountEl = document.getElementById('issueCount');\n    var lastUpdatedEl = document.getElementById('lastUpdated');\n    var resultCountEl = document.getElementById('resultCount');\n    var archiveHead = document.getElementById('archiveHead');\n    var archiveList = document.getElementById('archiveList');\n    var latestHead = document.getElementById('latestHead');\n    var latestIssue = document.getElementById('latestIssue');\n    var searchResults = document.getElementById('searchResults');\n\n    issueCountEl.textContent = EDITIONS.length;\n\n    if (EDITIONS.length === 0){\n      lastUpdatedEl.textContent = '\u2014';\n      resultCountEl.textContent = '';\n      renderEmpty();\n      archiveHead.hidden = true;\n      archiveList.innerHTML = '';\n      searchResults.innerHTML = '';\n      return;\n    }\n\n    var sorted = EDITIONS.slice().sort(function(a,b){ return (a.date < b.date) ? 1 : -1; });\n    lastUpdatedEl.textContent = sorted[0].label;\n\n    var searching = !!(state.query || state.cat);\n\n    if (searching){\n      \/\/ Search reaches every issue, not just the latest one.\n      latestHead.parentNode.hidden = true;\n      latestIssue.innerHTML = '';\n      archiveHead.hidden = true;\n      archiveList.innerHTML = '';\n\n      var allMatches = [];\n      sorted.forEach(function(ed){\n        ed.items.forEach(function(item){\n          if (matches(item)) allMatches.push({ item:item, edition:ed });\n        });\n      });\n\n      resultCountEl.textContent = allMatches.length + ' result' + (allMatches.length === 1 ? '' : 's') + ' across ' + EDITIONS.length + ' issue' + (EDITIONS.length === 1 ? '' : 's');\n\n      if (!allMatches.length){\n        searchResults.innerHTML = '<p class=\"no-results\">Nothing matches yet. Try a different word or clear the category filter.<\/p>';\n      } else {\n        searchResults.innerHTML =\n          '<div class=\"section-head\"><h2>Search Results<\/h2><div class=\"rule\"><\/div><\/div>' +\n          '<div class=\"grid\">' +\n          allMatches.map(function(m){ return cardHTML(m.item, m.edition.label + ' \u00b7 ' + m.edition.theme); }).join('') +\n          '<\/div>';\n      }\n      return;\n    }\n\n    \/\/ Browse mode: latest issue as hero, past issues collapsed and expandable.\n    searchResults.innerHTML = '';\n    latestHead.parentNode.hidden = false;\n    latestHead.textContent = 'Latest Issue';\n    resultCountEl.textContent = '';\n\n    var latest = sorted[0];\n    var html = '<h3 class=\"issue-title\">' + latest.theme + '<\/h3>';\n    if (latest.intro) html += '<p class=\"issue-sub\">' + latest.intro + '<\/p>';\n    html += '<div class=\"grid\">' + latest.items.map(function(i){ return cardHTML(i); }).join('') + '<\/div>';\n    latestIssue.innerHTML = html;\n\n    var past = sorted.slice(1);\n    if (past.length){\n      archiveHead.hidden = false;\n      archiveList.innerHTML = past.map(function(ed, idx){\n        return '' +\n          '<button type=\"button\" class=\"archive-row\" data-idx=\"' + idx + '\" aria-expanded=\"false\" onclick=\"window.__toggleArchivePanel(' + idx + ')\">' +\n            '<span class=\"archive-date\">' + ed.label + '<\/span>' +\n            '<span class=\"archive-title\">' + ed.theme + '<\/span>' +\n            '<span class=\"archive-caret\">&#9656;<\/span>' +\n          '<\/button>' +\n          '<div class=\"archive-panel\" id=\"archivePanel' + idx + '\">' +\n            '<div class=\"grid\">' + ed.items.map(function(i){ return cardHTML(i); }).join('') + '<\/div>' +\n          '<\/div>';\n      }).join('');\n    } else {\n      archiveHead.hidden = true;\n      archiveList.innerHTML = '';\n    }\n  }\n\n  render();\n\n  Promise.all(MONTHS.map(loadMonth)).then(function(results){\n    EDITIONS = results.filter(Boolean);\n    render();\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Edu&#8217;Flections \u00b7 Professional Learning Staffroom Shelf A monthly shelf of what&#8217;s worth reading, listening to, trying and watching in teaching and learning. 0 issues so [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4096","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/eduflections.blog\/index.php?rest_route=\/wp\/v2\/pages\/4096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eduflections.blog\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eduflections.blog\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eduflections.blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/eduflections.blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4096"}],"version-history":[{"count":3,"href":"https:\/\/eduflections.blog\/index.php?rest_route=\/wp\/v2\/pages\/4096\/revisions"}],"predecessor-version":[{"id":4099,"href":"https:\/\/eduflections.blog\/index.php?rest_route=\/wp\/v2\/pages\/4096\/revisions\/4099"}],"wp:attachment":[{"href":"https:\/\/eduflections.blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}