{
  "id": "frost-signal-excursion",
  "name": "Excursion Report",
  "theme": "frost-signal",
  "category": "Data & Reports",
  "description": "The record of a single breach: duration, peak and degree-minutes in mono, with the permitted band drawn as a filled region behind the trace rather than described in a legend.",
  "layout": "A report header of four mono figures above a full-width chart whose band is a filled region, then a ruled timeline of what happened and who acknowledged it.",
  "modules": [
    {
      "key": "head",
      "name": "Report header",
      "html": "\n<header class=\"rh\"><div><span class=\"k\">Excursion report · FS-0441</span><h1>Kitchen walk-in, Depot 3</h1><p class=\"sub\">12 March 04:18 — 08:30 UTC · closed by A. Bekele</p></div><div class=\"fg\"><div><span class=\"k\">Duration</span><b>04:12:06</b></div><div><span class=\"k\">Peak</span><b class=\"bad\">9.8 °C</b></div><div><span class=\"k\">Band</span><b>1.0 — 5.0</b></div><div><span class=\"k\">Degree-min</span><b class=\"bad\">1,184</b></div></div></header>"
    },
    {
      "key": "chart",
      "name": "Trace against band",
      "html": "\n<section class=\"ch\"><div class=\"cy\"><span>10</span><span>7.5</span><span>5</span><span>2.5</span><span>0</span></div><div class=\"cp\"><div class=\"band\"></div><svg viewBox=\"0 0 600 180\" preserveAspectRatio=\"none\"><polyline class=\"ok\" points=\"0,126 60,124 110,122 160,120\"/><polyline class=\"bad\" points=\"160,120 200,96 250,66 300,42 360,28 420,26 470,34 520,72 560,110 600,124\"/></svg></div><div class=\"cx\"><span>04:00</span><span>05:00</span><span>06:00</span><span>07:00</span><span>08:00</span><span>09:00</span></div></section>"
    },
    {
      "key": "time",
      "name": "Event timeline",
      "html": "\n<section class=\"tl\"><span class=\"k\">Sequence</span><ol>\n<li><b class=\"mn\">04:18</b><span class=\"bar bad\"></span><span>Reading left band at 5.1 °C. Alert raised to on-call.</span></li>\n<li><b class=\"mn\">04:31</b><span class=\"bar bad\"></span><span>Acknowledged by A. Bekele. Door sensor reported open since 04:09.</span></li>\n<li><b class=\"mn\">05:02</b><span class=\"bar bad\"></span><span>Door closed. Compressor cycle started.</span></li>\n<li><b class=\"mn\">08:30</b><span class=\"bar ok\"></span><span>Reading re-entered band at 4.9 °C. Excursion closed.</span></li>\n</ol></section>"
    },
    {
      "key": "disp",
      "name": "Disposition",
      "html": "\n<footer class=\"dp\"><div><span class=\"k\">Stock disposition</span><p>Product held under quarantine pending assessment. Degree-minute exposure is within the documented tolerance for this class; release recommended.</p></div><div class=\"ac\"><button class=\"pri\">Release stock</button><button class=\"gh\">Escalate</button></div></footer>"
    }
  ],
  "moduleCount": 4,
  "reorderable": true,
  "meta": {
    "id": "frost-signal-excursion",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-02T01:55:55+09:00",
    "updatedAt": "2026-09-02T01:55:55+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/frost-signal-excursion.json",
  "structure": "A report header of four mono figures above a full-width chart whose band is a filled region, then a ruled timeline of what happened and who acknowledged it.",
  "html": "<div class=\"dz dz-frost-signal-excursion\" data-design=\"frost-signal-excursion\" data-theme=\"frost-signal\">\n<section class=\"dz-mod\" data-mod=\"head\" aria-label=\"Report header\">\n<header class=\"rh\"><div><span class=\"k\">Excursion report · FS-0441</span><h1>Kitchen walk-in, Depot 3</h1><p class=\"sub\">12 March 04:18 — 08:30 UTC · closed by A. Bekele</p></div><div class=\"fg\"><div><span class=\"k\">Duration</span><b>04:12:06</b></div><div><span class=\"k\">Peak</span><b class=\"bad\">9.8 °C</b></div><div><span class=\"k\">Band</span><b>1.0 — 5.0</b></div><div><span class=\"k\">Degree-min</span><b class=\"bad\">1,184</b></div></div></header></section>\n<section class=\"dz-mod\" data-mod=\"chart\" aria-label=\"Trace against band\">\n<section class=\"ch\"><div class=\"cy\"><span>10</span><span>7.5</span><span>5</span><span>2.5</span><span>0</span></div><div class=\"cp\"><div class=\"band\"></div><svg viewBox=\"0 0 600 180\" preserveAspectRatio=\"none\"><polyline class=\"ok\" points=\"0,126 60,124 110,122 160,120\"/><polyline class=\"bad\" points=\"160,120 200,96 250,66 300,42 360,28 420,26 470,34 520,72 560,110 600,124\"/></svg></div><div class=\"cx\"><span>04:00</span><span>05:00</span><span>06:00</span><span>07:00</span><span>08:00</span><span>09:00</span></div></section></section>\n<section class=\"dz-mod\" data-mod=\"time\" aria-label=\"Event timeline\">\n<section class=\"tl\"><span class=\"k\">Sequence</span><ol>\n<li><b class=\"mn\">04:18</b><span class=\"bar bad\"></span><span>Reading left band at 5.1 °C. Alert raised to on-call.</span></li>\n<li><b class=\"mn\">04:31</b><span class=\"bar bad\"></span><span>Acknowledged by A. Bekele. Door sensor reported open since 04:09.</span></li>\n<li><b class=\"mn\">05:02</b><span class=\"bar bad\"></span><span>Door closed. Compressor cycle started.</span></li>\n<li><b class=\"mn\">08:30</b><span class=\"bar ok\"></span><span>Reading re-entered band at 4.9 °C. Excursion closed.</span></li>\n</ol></section></section>\n<section class=\"dz-mod\" data-mod=\"disp\" aria-label=\"Disposition\">\n<footer class=\"dp\"><div><span class=\"k\">Stock disposition</span><p>Product held under quarantine pending assessment. Degree-minute exposure is within the documented tolerance for this class; release recommended.</p></div><div class=\"ac\"><button class=\"pri\">Release stock</button><button class=\"gh\">Escalate</button></div></footer></section>\n</div>",
  "css": "\n.dz-frost-signal-excursion { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 26px; }\n.dz-frost-signal-excursion .k { text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 700; color: var(--muted-foreground); }\n.dz-frost-signal-excursion .mn { font-family: var(--pv-mono); font-weight: 500; }\n.dz-frost-signal-excursion .rh { display: flex; gap: 44px; align-items: flex-start; padding-bottom: 18px; border-bottom: 1px solid var(--border); margin-bottom: 24px; }\n.dz-frost-signal-excursion h1 { font-size: 30px; font-weight: 600; letter-spacing: -.012em; margin: 6px 0 4px; }\n.dz-frost-signal-excursion .sub { font-family: var(--pv-mono); font-weight: 500; font-size: 12.5px; color: var(--muted-foreground); margin: 0; }\n.dz-frost-signal-excursion .fg { display: flex; gap: 28px; margin-left: auto; }\n.dz-frost-signal-excursion .fg b { font-family: var(--pv-mono); font-weight: 500; font-size: 24px; display: block; margin-top: 4px; }\n.dz-frost-signal-excursion .fg .bad { color: var(--destructive); }\n.dz-frost-signal-excursion .ch { display: grid; grid-template-columns: 44px 1fr; gap: 8px; margin-bottom: 24px; }\n.dz-frost-signal-excursion .cy { display: flex; flex-direction: column; justify-content: space-between; font-family: var(--pv-mono); font-weight: 500; font-size: 11px; color: var(--muted-foreground); text-align: right; height: 180px; }\n.dz-frost-signal-excursion .cp { position: relative; height: 180px; border-left: 1px solid var(--border); border-bottom: 1px solid var(--border); }\n.dz-frost-signal-excursion .band { position: absolute; left: 0; right: 0; top: 50%; bottom: 0; background: color-mix(in oklab, var(--accent) 22%, transparent); border-top: 1px solid var(--accent); }\n.dz-frost-signal-excursion .cp svg { position: absolute; inset: 0; width: 100%; height: 100%; }\n.dz-frost-signal-excursion .cp polyline { fill: none; stroke-width: 2; vector-effect: non-scaling-stroke; }\n.dz-frost-signal-excursion .cp .ok { stroke: var(--accent); }\n.dz-frost-signal-excursion .cp .bad { stroke: var(--destructive); }\n.dz-frost-signal-excursion .cx { grid-column: 2; display: flex; justify-content: space-between; font-family: var(--pv-mono); font-weight: 500; font-size: 11px; color: var(--muted-foreground); margin-top: 6px; }\n.dz-frost-signal-excursion .tl ol { list-style: none; margin: 10px 0 0; padding: 0; }\n.dz-frost-signal-excursion .tl li { display: grid; grid-template-columns: 64px 4px 1fr; gap: 14px; align-items: center; height: 44px; border-bottom: 1px solid var(--border); font-size: 14.5px; }\n.dz-frost-signal-excursion .tl b { font-family: var(--pv-mono); font-weight: 500; font-weight: 500; color: var(--muted-foreground); }\n.dz-frost-signal-excursion .bar { height: 24px; border-radius: 2px; }\n.dz-frost-signal-excursion .bar.bad { background: var(--destructive); }\n.dz-frost-signal-excursion .bar.ok { background: var(--accent); }\n.dz-frost-signal-excursion .dp { display: flex; gap: 32px; align-items: center; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--border); }\n.dz-frost-signal-excursion .dp p { margin: 6px 0 0; font-size: 14.5px; line-height: 1.58; color: var(--muted-foreground); max-width: 66ch; }\n.dz-frost-signal-excursion .ac { display: flex; gap: 10px; margin-left: auto; }\n.dz-frost-signal-excursion .pri { background: var(--primary); color: var(--primary-foreground); border: 0; border-radius: 3px; padding: 10px 16px; font: inherit; text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 700; cursor: pointer; }\n.dz-frost-signal-excursion .gh { background: transparent; color: var(--foreground); border: 1px solid var(--border); border-radius: 3px; padding: 10px 16px; font: inherit; text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 700; cursor: pointer; }\n@media (prefers-reduced-motion: reduce) { .dz-frost-signal-excursion *, .dz-frost-signal-excursion *::before, .dz-frost-signal-excursion *::after { transition-duration: 1ms !important; animation-duration: 1ms !important; } }\n",
  "requiredTheme": "/api/v1/themes/frost-signal.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Commissioner:wght@400;500;600;700&family=Azeret+Mono:wght@400;500;600;700&display=swap"
}