{
  "id": "tide-table-almanac",
  "name": "Almanac Console",
  "theme": "tide-table",
  "category": "Dashboard",
  "description": "A monitoring view for a network of stations where nothing is a card — every panel is a ruled region, and the one out-of-range figure is the only coloured thing on screen.",
  "layout": "A three-column ruled grid with no fills or gaps: regions are separated by 1px rules that run to the page margins, so the whole screen reads as one sheet.",
  "modules": [
    {
      "key": "bar",
      "name": "Console bar",
      "html": "\n<header class=\"cb\"><h1>Northern Network</h1><nav><a class=\"on\" href=\"#\">Live</a><a href=\"#\">Forecast</a><a href=\"#\">Archive</a></nav><span class=\"n\">14 stations · 1 out of range</span></header>"
    },
    {
      "key": "grid",
      "name": "Station grid",
      "html": "\n<section class=\"sg\">\n  <div class=\"cell\"><span class=\"k\">Kirkwall Pier</span><b class=\"n\">4.62 m</b><span class=\"d\">rising · +0.04 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Scrabster</span><b class=\"n\">3.91 m</b><span class=\"d\">rising · +0.02 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Wick Bay</span><b class=\"n\">3.44 m</b><span class=\"d\">falling · −0.01 surge</span></div>\n  <div class=\"cell out\"><span class=\"k\">Lerwick Sound</span><b class=\"n\">5.18 m</b><span class=\"d\">rising · +0.41 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Stornoway</span><b class=\"n\">4.02 m</b><span class=\"d\">slack · +0.03 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Ullapool</span><b class=\"n\">4.30 m</b><span class=\"d\">falling · +0.00 surge</span></div>\n</section>"
    },
    {
      "key": "log",
      "name": "Observation log",
      "html": "\n<section class=\"lg\"><h2>Observations</h2>\n<table><tbody>\n<tr><td class=\"n t\">09:14</td><td>Lerwick Sound surge exceeded 0.40 m</td><td class=\"n r\">+0.41</td></tr>\n<tr><td class=\"n t\">09:00</td><td>All stations reported on schedule</td><td class=\"n r\">14/14</td></tr>\n<tr><td class=\"n t\">08:31</td><td>Wick Bay gauge returned after maintenance</td><td class=\"n r\">—</td></tr>\n<tr><td class=\"n t\">08:00</td><td>Forecast cycle refreshed</td><td class=\"n r\">—</td></tr>\n</tbody></table></section>"
    },
    {
      "key": "note",
      "name": "Range note",
      "html": "\n<aside class=\"rn\"><h2>Out of range</h2><p><b>Lerwick Sound</b> is 0.41 m above prediction, which is the largest positive surge in the network since 4 March. Wind is northerly at 34 knots and the barometer has fallen 9 mb in six hours.</p><p class=\"m\">A surge above 0.60 m at this station triggers a harbour notice.</p></aside>"
    }
  ],
  "moduleCount": 4,
  "reorderable": false,
  "meta": {
    "id": "tide-table-almanac",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-01T23:34:56+09:00",
    "updatedAt": "2026-09-01T23:34:56+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/tide-table-almanac.json",
  "structure": "A three-column ruled grid with no fills or gaps: regions are separated by 1px rules that run to the page margins, so the whole screen reads as one sheet.",
  "html": "<div class=\"dz dz-tide-table-almanac\" data-design=\"tide-table-almanac\" data-theme=\"tide-table\">\n<section class=\"dz-mod\" data-mod=\"bar\" aria-label=\"Console bar\">\n<header class=\"cb\"><h1>Northern Network</h1><nav><a class=\"on\" href=\"#\">Live</a><a href=\"#\">Forecast</a><a href=\"#\">Archive</a></nav><span class=\"n\">14 stations · 1 out of range</span></header></section><section class=\"dz-mod\" data-mod=\"grid\" aria-label=\"Station grid\">\n<section class=\"sg\">\n  <div class=\"cell\"><span class=\"k\">Kirkwall Pier</span><b class=\"n\">4.62 m</b><span class=\"d\">rising · +0.04 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Scrabster</span><b class=\"n\">3.91 m</b><span class=\"d\">rising · +0.02 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Wick Bay</span><b class=\"n\">3.44 m</b><span class=\"d\">falling · −0.01 surge</span></div>\n  <div class=\"cell out\"><span class=\"k\">Lerwick Sound</span><b class=\"n\">5.18 m</b><span class=\"d\">rising · +0.41 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Stornoway</span><b class=\"n\">4.02 m</b><span class=\"d\">slack · +0.03 surge</span></div>\n  <div class=\"cell\"><span class=\"k\">Ullapool</span><b class=\"n\">4.30 m</b><span class=\"d\">falling · +0.00 surge</span></div>\n</section></section><div class=\"split\"><section class=\"dz-mod\" data-mod=\"log\" aria-label=\"Observation log\">\n<section class=\"lg\"><h2>Observations</h2>\n<table><tbody>\n<tr><td class=\"n t\">09:14</td><td>Lerwick Sound surge exceeded 0.40 m</td><td class=\"n r\">+0.41</td></tr>\n<tr><td class=\"n t\">09:00</td><td>All stations reported on schedule</td><td class=\"n r\">14/14</td></tr>\n<tr><td class=\"n t\">08:31</td><td>Wick Bay gauge returned after maintenance</td><td class=\"n r\">—</td></tr>\n<tr><td class=\"n t\">08:00</td><td>Forecast cycle refreshed</td><td class=\"n r\">—</td></tr>\n</tbody></table></section></section><section class=\"dz-mod\" data-mod=\"note\" aria-label=\"Range note\">\n<aside class=\"rn\"><h2>Out of range</h2><p><b>Lerwick Sound</b> is 0.41 m above prediction, which is the largest positive surge in the network since 4 March. Wind is northerly at 34 knots and the barometer has fallen 9 mb in six hours.</p><p class=\"m\">A surge above 0.60 m at this station triggers a harbour notice.</p></aside></section></div>\n</div>",
  "css": "\n.dz-tide-table-almanac { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 24px 28px 28px; }\n.dz-tide-table-almanac .cb { display: flex; align-items: baseline; gap: 26px; padding-bottom: 14px; border-bottom: 2px solid var(--border); }\n.dz-tide-table-almanac .cb h1 { font-family: var(--pv-display); font-size: 27px; font-weight: 600; margin: 0; }\n.dz-tide-table-almanac .cb nav { display: flex; gap: 18px; }\n.dz-tide-table-almanac .cb a { text-decoration: none; color: var(--muted-foreground); font-size: 14px; }\n.dz-tide-table-almanac .cb a.on { color: var(--foreground); border-bottom: 2px solid var(--primary); padding-bottom: 3px; }\n.dz-tide-table-almanac .cb span { margin-left: auto; }\n.dz-tide-table-almanac .n { font-family: var(--pv-mono); font-variant-numeric: tabular-nums; font-size: 13px; }\n.dz-tide-table-almanac .sg { display: grid; grid-template-columns: repeat(3, 1fr); }\n.dz-tide-table-almanac .cell { padding: 18px 20px 18px 0; border-bottom: 1px solid var(--border); border-right: 1px solid var(--border); }\n.dz-tide-table-almanac .cell:nth-child(3n) { border-right: 0; }\n.dz-tide-table-almanac .k { font-family: var(--pv-body); text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 600; color: var(--muted-foreground); display: block; }\n.dz-tide-table-almanac .cell b { display: block; font-family: var(--pv-mono); font-size: 30px; font-variant-numeric: tabular-nums; margin: 6px 0 3px; letter-spacing: -.02em; }\n.dz-tide-table-almanac .d { font-size: 12px; color: var(--muted-foreground); }\n.dz-tide-table-almanac .cell.out b { color: var(--accent); }\n.dz-tide-table-almanac .split { display: grid; grid-template-columns: 1.6fr 1fr; gap: 34px; margin-top: 24px; }\n.dz-tide-table-almanac h2 { font-family: var(--pv-body); text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 600; color: var(--muted-foreground); margin: 0 0 10px; }\n.dz-tide-table-almanac table { width: 100%; border-collapse: collapse; }\n.dz-tide-table-almanac td { padding: 8px 0; border-bottom: 1px solid color-mix(in oklab, var(--border) 55%, transparent); font-size: 13px; }\n.dz-tide-table-almanac td.t { width: 62px; color: var(--muted-foreground); }\n.dz-tide-table-almanac td.r { text-align: right; width: 74px; }\n.dz-tide-table-almanac .rn { border-left: 1px solid var(--border); padding-left: 24px; }\n.dz-tide-table-almanac .rn p { margin: 0 0 10px; font-size: 13.5px; line-height: 1.6; }\n.dz-tide-table-almanac .rn .m { color: var(--muted-foreground); font-size: 12.5px; }\n",
  "requiredTheme": "/api/v1/themes/tide-table.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Spectral:wght@400;500;600;700&family=Inconsolata:wght@400;500;600;700&display=swap"
}