{
  "id": "excavation-shell",
  "name": "Site Shell",
  "theme": "excavation",
  "category": "App Shell",
  "description": "The working frame where the depth ruler is part of the chrome rather than part of a view, present on every screen including the trench list.",
  "layout": "A top bar, a trench sidebar, the permanent ruler, and a ruled content area; nothing in the layout can remove the ruler.",
  "modules": [
    {
      "key": "top",
      "name": "Site bar",
      "html": "\n<header class=\"tp\"><span class=\"lg\">Excavation</span><nav><a class=\"on\" href=\"#\">Contexts</a><a href=\"#\">Finds</a><a href=\"#\">Sections</a><a href=\"#\">Photographs</a></nav><span class=\"st mn\">KILCARN LANE · DK · SEASON 4 · 2026</span></header>"
    },
    {
      "key": "trenches",
      "name": "Trench sidebar",
      "html": "\n<aside class=\"tr\"><span class=\"k\">Trenches</span><ul><li><a href=\"#\">DK-01<b class=\"mn\">0.9 m</b></a></li><li><a href=\"#\">DK-03<b class=\"mn\">1.4 m</b></a></li><li><a href=\"#\">DK-05<b class=\"mn\">0.7 m</b></a></li><li class=\"on\"><a href=\"#\">DK-07<b class=\"mn\">1.6 m</b></a></li><li><a href=\"#\">DK-08<b class=\"mn\">1.1 m</b></a></li><li><a href=\"#\">DK-11<b class=\"mn\">2.2 m</b></a></li></ul><span class=\"k\">Open contexts</span><ul class=\"cxs\"><li><a href=\"#\"><span class=\"cx\">1027</span> cut, base not reached</a></li><li><a href=\"#\"><span class=\"cx\">1031</span> fill, part excavated</a></li></ul></aside>"
    },
    {
      "key": "body",
      "name": "Context list",
      "html": "\n<section class=\"bd\"><header class=\"bh\"><h1>DK-07 · contexts</h1><span class=\"mn\">27 CONTEXTS · ORDERED BY DEPTH · DEEPEST 1.62 m</span></header>\n<div class=\"wrap\"><aside class=\"rlr\"><span class=\"tick maj\" style=\"top:0\"></span><span class=\"lb\" style=\"top:2px\">0</span><span class=\"tick\" style=\"top:52px\"></span><span class=\"tick maj\" style=\"top:104px\"></span><span class=\"lb\" style=\"top:106px\">50</span><span class=\"tick\" style=\"top:156px\"></span><span class=\"tick maj\" style=\"top:208px\"></span><span class=\"lb\" style=\"top:210px\">100</span><span class=\"tick\" style=\"top:260px\"></span><span class=\"tick maj\" style=\"top:312px\"></span><span class=\"lb\" style=\"top:314px\">150</span></aside>\n<div class=\"ls\"><div class=\"rw\"><span class=\"cx\">1001</span><span class=\"nm\">Turf and topsoil</span><span class=\"cnt mn\">0 finds</span><span class=\"dp cx\">0.00—0.12 m</span></div><div class=\"rw\"><span class=\"cx\">1004</span><span class=\"nm\">Mid brown silty loam</span><span class=\"cnt mn\">31 finds</span><span class=\"dp cx\">0.12—0.34 m</span></div><div class=\"rw\"><span class=\"cx\">1011</span><span class=\"nm\">Dark grey-brown fill</span><span class=\"cnt mn\">62 finds</span><span class=\"dp cx\">0.34—0.71 m</span></div><div class=\"rw\"><span class=\"cx\">1019</span><span class=\"nm\">Yellow-brown sandy clay</span><span class=\"cnt mn\">44 finds</span><span class=\"dp cx\">0.71—1.02 m</span></div><div class=\"rw\"><span class=\"cx\">1023</span><span class=\"nm\">Compact orange sand, natural</span><span class=\"cnt mn\">11 finds</span><span class=\"dp cx\">1.02—1.44 m</span></div><div class=\"rw\"><span class=\"cx\">1027</span><span class=\"nm\">Cut, base not reached</span><span class=\"cnt mn\">0 finds</span><span class=\"dp cx\">1.44—1.62 m</span></div></div></div></section>"
    }
  ],
  "moduleCount": 3,
  "reorderable": true,
  "meta": {
    "id": "excavation-shell",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-02T01:49:17+09:00",
    "updatedAt": "2026-09-02T01:49:17+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/excavation-shell.json",
  "structure": "A top bar, a trench sidebar, the permanent ruler, and a ruled content area; nothing in the layout can remove the ruler.",
  "html": "<div class=\"dz dz-excavation-shell\" data-design=\"excavation-shell\" data-theme=\"excavation\">\n<section class=\"dz-mod\" data-mod=\"top\" aria-label=\"Site bar\">\n<header class=\"tp\"><span class=\"lg\">Excavation</span><nav><a class=\"on\" href=\"#\">Contexts</a><a href=\"#\">Finds</a><a href=\"#\">Sections</a><a href=\"#\">Photographs</a></nav><span class=\"st mn\">KILCARN LANE · DK · SEASON 4 · 2026</span></header></section>\n<section class=\"dz-mod\" data-mod=\"trenches\" aria-label=\"Trench sidebar\">\n<aside class=\"tr\"><span class=\"k\">Trenches</span><ul><li><a href=\"#\">DK-01<b class=\"mn\">0.9 m</b></a></li><li><a href=\"#\">DK-03<b class=\"mn\">1.4 m</b></a></li><li><a href=\"#\">DK-05<b class=\"mn\">0.7 m</b></a></li><li class=\"on\"><a href=\"#\">DK-07<b class=\"mn\">1.6 m</b></a></li><li><a href=\"#\">DK-08<b class=\"mn\">1.1 m</b></a></li><li><a href=\"#\">DK-11<b class=\"mn\">2.2 m</b></a></li></ul><span class=\"k\">Open contexts</span><ul class=\"cxs\"><li><a href=\"#\"><span class=\"cx\">1027</span> cut, base not reached</a></li><li><a href=\"#\"><span class=\"cx\">1031</span> fill, part excavated</a></li></ul></aside></section>\n<section class=\"dz-mod\" data-mod=\"body\" aria-label=\"Context list\">\n<section class=\"bd\"><header class=\"bh\"><h1>DK-07 · contexts</h1><span class=\"mn\">27 CONTEXTS · ORDERED BY DEPTH · DEEPEST 1.62 m</span></header>\n<div class=\"wrap\"><aside class=\"rlr\"><span class=\"tick maj\" style=\"top:0\"></span><span class=\"lb\" style=\"top:2px\">0</span><span class=\"tick\" style=\"top:52px\"></span><span class=\"tick maj\" style=\"top:104px\"></span><span class=\"lb\" style=\"top:106px\">50</span><span class=\"tick\" style=\"top:156px\"></span><span class=\"tick maj\" style=\"top:208px\"></span><span class=\"lb\" style=\"top:210px\">100</span><span class=\"tick\" style=\"top:260px\"></span><span class=\"tick maj\" style=\"top:312px\"></span><span class=\"lb\" style=\"top:314px\">150</span></aside>\n<div class=\"ls\"><div class=\"rw\"><span class=\"cx\">1001</span><span class=\"nm\">Turf and topsoil</span><span class=\"cnt mn\">0 finds</span><span class=\"dp cx\">0.00—0.12 m</span></div><div class=\"rw\"><span class=\"cx\">1004</span><span class=\"nm\">Mid brown silty loam</span><span class=\"cnt mn\">31 finds</span><span class=\"dp cx\">0.12—0.34 m</span></div><div class=\"rw\"><span class=\"cx\">1011</span><span class=\"nm\">Dark grey-brown fill</span><span class=\"cnt mn\">62 finds</span><span class=\"dp cx\">0.34—0.71 m</span></div><div class=\"rw\"><span class=\"cx\">1019</span><span class=\"nm\">Yellow-brown sandy clay</span><span class=\"cnt mn\">44 finds</span><span class=\"dp cx\">0.71—1.02 m</span></div><div class=\"rw\"><span class=\"cx\">1023</span><span class=\"nm\">Compact orange sand, natural</span><span class=\"cnt mn\">11 finds</span><span class=\"dp cx\">1.02—1.44 m</span></div><div class=\"rw\"><span class=\"cx\">1027</span><span class=\"nm\">Cut, base not reached</span><span class=\"cnt mn\">0 finds</span><span class=\"dp cx\">1.44—1.62 m</span></div></div></div></section></section>\n</div>",
  "css": "\n.dz-excavation-shell { background: var(--background); color: var(--foreground); font-family: var(--pv-body); display: grid; grid-template-columns: 220px 1fr; grid-template-rows: auto 1fr; min-height: 600px; }\n.dz-excavation-shell .k { text-transform: uppercase; letter-spacing: .15em; font-size: 10.5px; font-weight: 700; color: var(--muted-foreground); display: block; margin: 16px 0 8px; }\n.dz-excavation-shell .mn { font-family: var(--pv-mono); font-size: 12.5px; letter-spacing: .01em; }\n.dz-excavation-shell .tp { grid-column: 1 / -1; display: flex; align-items: center; gap: 24px; height: 52px; padding: 0 24px; border-bottom: 1px solid var(--border); background: var(--card); }\n.dz-excavation-shell .lg { font-family: var(--pv-display); font-weight: 700; font-size: 20px; }\n.dz-excavation-shell .tp nav { display: flex; gap: 18px; }\n.dz-excavation-shell .tp a { color: var(--muted-foreground); text-decoration: none; font-size: 14.5px; padding-bottom: 3px; }\n.dz-excavation-shell .tp a.on { color: var(--foreground); border-bottom: 2px solid var(--primary); }\n.dz-excavation-shell .st { color: var(--muted-foreground); margin-left: auto; font-size: 10.5px; text-transform: uppercase; letter-spacing: .15em; font-size: 10.5px; font-weight: 700; }\n.dz-excavation-shell .tr { border-right: 1px solid var(--border); padding: 4px 14px 18px; }\n.dz-excavation-shell .tr ul { list-style: none; margin: 0; padding: 0; }\n.dz-excavation-shell .tr a { display: flex; padding: 7px 8px; color: var(--foreground); text-decoration: none; font-size: 14px; border-radius: 3px; }\n.dz-excavation-shell .tr li.on a { background: var(--secondary); }\n.dz-excavation-shell .tr b { margin-left: auto; color: var(--muted-foreground); font-weight: 400; }\n.dz-excavation-shell .cxs a { font-size: 13px; }\n.dz-excavation-shell .bd { padding: 18px 24px; }\n.dz-excavation-shell .bh { display: flex; align-items: baseline; gap: 18px; padding-bottom: 12px; border-bottom: 1px solid var(--border); margin-bottom: 16px; }\n.dz-excavation-shell h1 { font-family: var(--pv-display); font-weight: 700; font-size: 31px; margin: 0; }\n.dz-excavation-shell .bh .mn { color: var(--muted-foreground); font-size: 10.5px; text-transform: uppercase; letter-spacing: .15em; font-size: 10.5px; font-weight: 700; }\n.dz-excavation-shell .wrap { display: flex; gap: 20px; }\n\n.dz-excavation-shell .rlr { width: 64px; border-right: 1px solid var(--border); position: relative; flex: none; }\n.dz-excavation-shell .rlr .tick { position: absolute; left: 0; right: 0; border-top: 1px solid var(--border); }\n.dz-excavation-shell .rlr .tick.maj { border-top-color: var(--muted-foreground); }\n.dz-excavation-shell .rlr .lb { position: absolute; right: 8px; font-family: var(--pv-mono); font-size: 12.5px; letter-spacing: .01em; font-size: 10.5px; color: var(--accent); }\n.dz-excavation-shell .cx { color: var(--accent); font-family: var(--pv-mono); font-size: 12.5px; letter-spacing: .01em; }\n.dz-excavation-shell .rlr { min-height: 360px; }\n.dz-excavation-shell .ls { flex: 1; }\n.dz-excavation-shell .rw { display: grid; grid-template-columns: 70px 1fr 90px 130px; gap: 16px; align-items: baseline; padding: 13px 0; border-bottom: 1px solid var(--border); }\n.dz-excavation-shell .nm { font-size: 15px; }\n.dz-excavation-shell .cnt { color: var(--muted-foreground); }\n@media (prefers-reduced-motion: reduce) { .dz-excavation-shell *, .dz-excavation-shell *::before, .dz-excavation-shell *::after { transition-duration: 1ms !important; animation-duration: 1ms !important; } }\n",
  "requiredTheme": "/api/v1/themes/excavation.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Alegreya:wght@400;500;600;700&family=Alegreya+Sans:wght@400;500;600;700&family=Fira+Mono:wght@400;500;600;700&display=swap"
}