{
  "id": "field-survey-operator",
  "name": "Operator Record",
  "theme": "field-survey",
  "category": "Profile & Social",
  "description": "A personnel record built from qualifications with expiry dates, because in this domain the profile question is always whether someone is still current.",
  "layout": "A square portrait cell beside a ruled qualification table where anything expiring within 90 days is filled with the destructive colour.",
  "modules": [
    {
      "key": "head",
      "name": "Operator head",
      "html": "\n<header class=\"oh\"><figure><img src=\"{{ART camp}}\" alt=\"{{ARTALT camp}}\"><figcaption class=\"rf\">OP-01 · photo taken 04.2024</figcaption></figure>\n<div><span class=\"rf\">OP-02</span><h1>K. Halvorsen</h1><p class=\"role\">Tactical Commander · Sector 3 · service number 4417</p><dl><div><dt>Deployments</dt><dd class=\"n\">61</dd></div><div><dt>Hours, 12 months</dt><dd class=\"n\">418</dd></div><div><dt>Current quals</dt><dd class=\"n\">9 of 11</dd></div><div><dt>Next revalidation</dt><dd class=\"n\">14 Aug</dd></div></dl></div></header>"
    },
    {
      "key": "quals",
      "name": "Qualification table",
      "html": "\n<section class=\"qt\"><header><span class=\"rf\">OP-03</span><h2>Qualifications</h2></header>\n<table><thead><tr><th>Qualification</th><th>Awarded</th><th>Expires</th><th>Remaining</th><th>Status</th></tr></thead>\n<tbody>\n<tr><td>Tactical command, multi-agency</td><td class=\"n\">14.08.2023</td><td class=\"n\">14.08.2026</td><td class=\"n\">64 d</td><td class=\"w\">Expiring</td></tr>\n<tr><td>Swiftwater rescue, technician</td><td class=\"n\">02.03.2025</td><td class=\"n\">02.03.2028</td><td class=\"n\">1 y 8 m</td><td class=\"ok\">Current</td></tr>\n<tr><td>Incident ground safety</td><td class=\"n\">19.11.2024</td><td class=\"n\">19.11.2027</td><td class=\"n\">1 y 5 m</td><td class=\"ok\">Current</td></tr>\n<tr class=\"exp\"><td>Boat handling, inshore</td><td class=\"n\">08.07.2023</td><td class=\"n\">08.07.2026</td><td class=\"n\">27 d</td><td class=\"bad\">Expiring</td></tr>\n<tr class=\"lapsed\"><td>Confined space entry</td><td class=\"n\">11.02.2022</td><td class=\"n\">11.02.2025</td><td class=\"n\">lapsed</td><td class=\"bad\">Lapsed</td></tr>\n<tr><td>First aid at work</td><td class=\"n\">30.09.2024</td><td class=\"n\">30.09.2027</td><td class=\"n\">1 y 3 m</td><td class=\"ok\">Current</td></tr>\n</tbody></table>\n<p class=\"nt\">Two qualifications lapse within 90 days. Boat handling cannot be renewed in Sector 3 — the nearest assessment is at the county centre and runs monthly.</p></section>"
    },
    {
      "key": "recent",
      "name": "Recent deployments",
      "html": "\n<aside class=\"rd\"><header><span class=\"rf\">OP-04</span><h2>Recent</h2></header>\n<ol>\n  <li><time>11 Jun</time><div><b>Kilcarn Flood</b><span class=\"n\">Sector 3 · tactical · ongoing</span></div></li>\n  <li><time>02 Apr</time><div><b>Beckton Way collapse</b><span class=\"n\">Sector 1 · tactical · 14 h</span></div></li>\n  <li><time>19 Feb</time><div><b>Coastal surge, Marsh Lane</b><span class=\"n\">Sector 3 · operational · 31 h</span></div></li>\n  <li><time>08 Jan</time><div><b>Exercise Northgate</b><span class=\"n\">Countywide · tactical · 8 h</span></div></li>\n</ol></aside>"
    }
  ],
  "moduleCount": 3,
  "reorderable": false,
  "meta": {
    "id": "field-survey-operator",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-01T23:58:03+09:00",
    "updatedAt": "2026-09-01T23:58:03+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/field-survey-operator.json",
  "structure": "A square portrait cell beside a ruled qualification table where anything expiring within 90 days is filled with the destructive colour.",
  "html": "<div class=\"dz dz-field-survey-operator\" data-design=\"field-survey-operator\" data-theme=\"field-survey\">\n<section class=\"dz-mod\" data-mod=\"head\" aria-label=\"Operator head\">\n<header class=\"oh\"><figure><img src=\"https://designlookbook.dev/assets/img/field-survey-camp.webp\" alt=\"A field station under a heavy overcast sky\"><figcaption class=\"rf\">OP-01 · photo taken 04.2024</figcaption></figure>\n<div><span class=\"rf\">OP-02</span><h1>K. Halvorsen</h1><p class=\"role\">Tactical Commander · Sector 3 · service number 4417</p><dl><div><dt>Deployments</dt><dd class=\"n\">61</dd></div><div><dt>Hours, 12 months</dt><dd class=\"n\">418</dd></div><div><dt>Current quals</dt><dd class=\"n\">9 of 11</dd></div><div><dt>Next revalidation</dt><dd class=\"n\">14 Aug</dd></div></dl></div></header></section><div class=\"split\"><section class=\"dz-mod\" data-mod=\"quals\" aria-label=\"Qualification table\">\n<section class=\"qt\"><header><span class=\"rf\">OP-03</span><h2>Qualifications</h2></header>\n<table><thead><tr><th>Qualification</th><th>Awarded</th><th>Expires</th><th>Remaining</th><th>Status</th></tr></thead>\n<tbody>\n<tr><td>Tactical command, multi-agency</td><td class=\"n\">14.08.2023</td><td class=\"n\">14.08.2026</td><td class=\"n\">64 d</td><td class=\"w\">Expiring</td></tr>\n<tr><td>Swiftwater rescue, technician</td><td class=\"n\">02.03.2025</td><td class=\"n\">02.03.2028</td><td class=\"n\">1 y 8 m</td><td class=\"ok\">Current</td></tr>\n<tr><td>Incident ground safety</td><td class=\"n\">19.11.2024</td><td class=\"n\">19.11.2027</td><td class=\"n\">1 y 5 m</td><td class=\"ok\">Current</td></tr>\n<tr class=\"exp\"><td>Boat handling, inshore</td><td class=\"n\">08.07.2023</td><td class=\"n\">08.07.2026</td><td class=\"n\">27 d</td><td class=\"bad\">Expiring</td></tr>\n<tr class=\"lapsed\"><td>Confined space entry</td><td class=\"n\">11.02.2022</td><td class=\"n\">11.02.2025</td><td class=\"n\">lapsed</td><td class=\"bad\">Lapsed</td></tr>\n<tr><td>First aid at work</td><td class=\"n\">30.09.2024</td><td class=\"n\">30.09.2027</td><td class=\"n\">1 y 3 m</td><td class=\"ok\">Current</td></tr>\n</tbody></table>\n<p class=\"nt\">Two qualifications lapse within 90 days. Boat handling cannot be renewed in Sector 3 — the nearest assessment is at the county centre and runs monthly.</p></section></section><section class=\"dz-mod\" data-mod=\"recent\" aria-label=\"Recent deployments\">\n<aside class=\"rd\"><header><span class=\"rf\">OP-04</span><h2>Recent</h2></header>\n<ol>\n  <li><time>11 Jun</time><div><b>Kilcarn Flood</b><span class=\"n\">Sector 3 · tactical · ongoing</span></div></li>\n  <li><time>02 Apr</time><div><b>Beckton Way collapse</b><span class=\"n\">Sector 1 · tactical · 14 h</span></div></li>\n  <li><time>19 Feb</time><div><b>Coastal surge, Marsh Lane</b><span class=\"n\">Sector 3 · operational · 31 h</span></div></li>\n  <li><time>08 Jan</time><div><b>Exercise Northgate</b><span class=\"n\">Countywide · tactical · 8 h</span></div></li>\n</ol></aside></section></div>\n</div>",
  "css": "\n.dz-field-survey-operator { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 22px 24px; }\n.dz-field-survey-operator .rf { font-family: var(--pv-mono); font-size: 11px; letter-spacing: .02em; color: var(--muted-foreground); display: block; }\n.dz-field-survey-operator .n { font-family: var(--pv-mono); font-variant-numeric: tabular-nums; letter-spacing: .02em; font-size: 12.5px; }\n.dz-field-survey-operator .oh { display: grid; grid-template-columns: 200px 1fr; gap: 24px; padding-bottom: 20px; border-bottom: 2px solid var(--border); }\n.dz-field-survey-operator .oh figure { margin: 0; border: 1px solid var(--border); padding: 8px; }\n.dz-field-survey-operator .oh img { width: 100%; height: 180px; object-fit: cover; display: block; filter: var(--img-filter); }\n.dz-field-survey-operator figcaption { padding-top: 8px; }\n.dz-field-survey-operator h1 { font-family: var(--pv-display); text-transform: uppercase; font-weight: 600; letter-spacing: .01em; font-size: 40px; margin: 5px 0 6px; }\n.dz-field-survey-operator .role { margin: 0 0 16px; font-size: 14px; color: var(--muted-foreground); }\n.dz-field-survey-operator dl { display: flex; gap: 34px; margin: 0; }\n.dz-field-survey-operator dl div { display: grid; gap: 4px; }\n.dz-field-survey-operator dt { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 600; color: var(--muted-foreground); margin: 0; }\n.dz-field-survey-operator dd { margin: 0; font-family: var(--pv-mono); font-variant-numeric: tabular-nums; letter-spacing: .02em; font-size: 20px; }\n.dz-field-survey-operator .split { display: grid; grid-template-columns: 1fr 280px; margin-top: 18px; }\n.dz-field-survey-operator .qt { border-right: 1px solid var(--border); padding-right: 18px; }\n.dz-field-survey-operator .rd { padding-left: 18px; }\n.dz-field-survey-operator header { display: flex; align-items: baseline; gap: 12px; margin-bottom: 12px; }\n.dz-field-survey-operator h2 { font-family: var(--pv-display); text-transform: uppercase; font-weight: 600; letter-spacing: .01em; font-size: 23px; margin: 0; }\n.dz-field-survey-operator table { width: 100%; border-collapse: collapse; }\n.dz-field-survey-operator th { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 600; color: var(--muted-foreground); text-align: left; padding: 0 10px 8px 0; border-bottom: 1px solid var(--border); }\n.dz-field-survey-operator td { padding: 10px 10px 10px 0; border-bottom: 1px solid var(--border); font-size: 13.5px; }\n.dz-field-survey-operator tr.exp td, .dz-field-survey-operator tr.lapsed td { background: color-mix(in oklab, var(--destructive) 14%, transparent); }\n.dz-field-survey-operator .ok { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 600; color: var(--muted-foreground); color: var(--primary); }\n.dz-field-survey-operator .w { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 600; color: var(--muted-foreground); }\n.dz-field-survey-operator .bad { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 600; color: var(--muted-foreground); color: var(--destructive); }\n.dz-field-survey-operator .nt { margin: 14px 0 0; font-size: 13px; line-height: 1.55; max-width: 64ch; }\n.dz-field-survey-operator .rd ol { list-style: none; margin: 0; padding: 0; }\n.dz-field-survey-operator .rd li { display: grid; grid-template-columns: 58px 1fr; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--border); }\n.dz-field-survey-operator .rd time { font-family: var(--pv-mono); font-size: 11px; letter-spacing: .02em; color: var(--muted-foreground); }\n.dz-field-survey-operator .rd b { display: block; font-size: 14px; }\n",
  "requiredTheme": "/api/v1/themes/field-survey.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@400;500;600;700&family=Work+Sans:wght@400;500;600;700&family=Noto+Sans+Mono:wght@400;500;600;700&display=swap"
}