@echelon-foundry/design-system 0.2.0 → 0.3.0-main.216.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +46 -0
  3. package/dist/all.css +5537 -841
  4. package/dist/assessment.css +55 -12
  5. package/dist/build-metrics.json +181 -5
  6. package/dist/components.css +2965 -36
  7. package/dist/foundations.css +90 -0
  8. package/dist/marketing/forma-all.css +8162 -0
  9. package/dist/marketing/forma-echelon-marketing.css +2109 -0
  10. package/dist/marketing/forma-marketing-theme-echelon.css +163 -0
  11. package/dist/marketing/forma-marketing.css +1947 -0
  12. package/dist/marketing/forma-marketing.manifest.json +52 -0
  13. package/dist/marketing/forma-marketing.sha256 +4 -0
  14. package/dist/marketing.css +1198 -0
  15. package/dist/patterns/active-filter-summary.html +10 -0
  16. package/dist/patterns/attention-path.html +29 -0
  17. package/dist/patterns/badge.html +9 -0
  18. package/dist/patterns/callout.html +23 -0
  19. package/dist/patterns/card-grid.html +25 -0
  20. package/dist/patterns/character-grid-3270.html +39 -0
  21. package/dist/patterns/character-grid-field.html +21 -0
  22. package/dist/patterns/character-grid-keys.html +20 -0
  23. package/dist/patterns/character-grid-reveal.html +16 -0
  24. package/dist/patterns/character-grid-selection.html +30 -0
  25. package/dist/patterns/character-grid-status.html +11 -0
  26. package/dist/patterns/character-grid-workflow.html +147 -0
  27. package/dist/patterns/character-grid.html +16 -0
  28. package/dist/patterns/cluster.html +5 -0
  29. package/dist/patterns/code-sample.html +9 -0
  30. package/dist/patterns/command-group.html +6 -0
  31. package/dist/patterns/comparison-grid.html +7 -0
  32. package/dist/patterns/comparison-pairs.html +13 -0
  33. package/dist/patterns/cta.html +12 -0
  34. package/dist/patterns/dense-ledger.html +7 -0
  35. package/dist/patterns/diagnostic-status.html +7 -0
  36. package/dist/patterns/diagram.html +49 -0
  37. package/dist/patterns/documentation-layout.html +18 -0
  38. package/dist/patterns/emphasis-budget.html +21 -0
  39. package/dist/patterns/entry-index.html +16 -0
  40. package/dist/patterns/evidence-relationship.html +1 -0
  41. package/dist/patterns/facts.html +7 -0
  42. package/dist/patterns/fault-banner.html +19 -0
  43. package/dist/patterns/fault-blocking.html +25 -0
  44. package/dist/patterns/fault-details.html +11 -0
  45. package/dist/patterns/fault-inline.html +17 -0
  46. package/dist/patterns/fault-notification.html +20 -0
  47. package/dist/patterns/fault-reference.html +5 -0
  48. package/dist/patterns/fault-summary.html +20 -0
  49. package/dist/patterns/fault.html +17 -0
  50. package/dist/patterns/feed-item.html +12 -0
  51. package/dist/patterns/focus-stage.html +4 -0
  52. package/dist/patterns/frame.html +4 -0
  53. package/dist/patterns/freshness.html +1 -0
  54. package/dist/patterns/handoff-summary.html +1 -0
  55. package/dist/patterns/hero.html +17 -0
  56. package/dist/patterns/hierarchy-tree.html +11 -0
  57. package/dist/patterns/identifier.html +9 -0
  58. package/dist/patterns/landmark-region.html +4 -0
  59. package/dist/patterns/lane-board.html +10 -0
  60. package/dist/patterns/marketing-shell.html +40 -0
  61. package/dist/patterns/measure.html +4 -0
  62. package/dist/patterns/metric-value-change.html +9 -0
  63. package/dist/patterns/mosaic.html +6 -0
  64. package/dist/patterns/navigation-shell.html +8 -0
  65. package/dist/patterns/overflow-command-disclosure.html +6 -0
  66. package/dist/patterns/overview-disclosure.html +12 -0
  67. package/dist/patterns/path-summary.html +8 -0
  68. package/dist/patterns/priority-stack.html +4 -0
  69. package/dist/patterns/progress-bar.html +15 -0
  70. package/dist/patterns/prose.html +9 -0
  71. package/dist/patterns/rail.html +4 -0
  72. package/dist/patterns/recovery-actions.html +5 -0
  73. package/dist/patterns/relationship-index.html +8 -0
  74. package/dist/patterns/reorder-states.html +31 -0
  75. package/dist/patterns/resizable-split-pane.html +11 -0
  76. package/dist/patterns/responsive-grid.html +5 -0
  77. package/dist/patterns/scope-trail.html +1 -0
  78. package/dist/patterns/scroll-progress.html +6 -0
  79. package/dist/patterns/section-heading.html +12 -0
  80. package/dist/patterns/security-blockers.html +3 -0
  81. package/dist/patterns/security-evidence-age.html +1 -0
  82. package/dist/patterns/security-evidence-chain.html +2 -0
  83. package/dist/patterns/security-exception.html +2 -0
  84. package/dist/patterns/security-invariant-result.html +1 -0
  85. package/dist/patterns/security-posture.html +22 -0
  86. package/dist/patterns/security-state-matrix.html +5 -0
  87. package/dist/patterns/security-trend.html +1 -0
  88. package/dist/patterns/security-unknown.html +2 -0
  89. package/dist/patterns/sidebar.html +4 -0
  90. package/dist/patterns/site-footer.html +12 -0
  91. package/dist/patterns/site-header.html +18 -0
  92. package/dist/patterns/spatial-canvas.html +13 -0
  93. package/dist/patterns/spinner.html +4 -0
  94. package/dist/patterns/split-pane.html +4 -0
  95. package/dist/patterns/stack.html +5 -0
  96. package/dist/patterns/state-survivability.html +19 -0
  97. package/dist/patterns/steps.html +8 -0
  98. package/dist/patterns/switcher.html +4 -0
  99. package/dist/patterns/tooltip.html +48 -0
  100. package/dist/patterns/verification-frame.html +22 -0
  101. package/dist/patterns/workspace-shell.html +6 -0
  102. package/dist/tokens.css +436 -1
  103. package/docs/BRANDING.md +6 -1
  104. package/docs/MARKETING-SITES.md +321 -0
  105. package/figma/component-contracts.json +1544 -0
  106. package/package.json +34 -8
  107. package/patterns/active-filter-summary.html +10 -0
  108. package/patterns/aegis-faults.manifest.md +81 -0
  109. package/patterns/attention-path.html +29 -0
  110. package/patterns/badge.html +9 -0
  111. package/patterns/callout.html +23 -0
  112. package/patterns/card-grid.html +25 -0
  113. package/patterns/character-grid-3270.html +39 -0
  114. package/patterns/character-grid-field.html +21 -0
  115. package/patterns/character-grid-keys.html +20 -0
  116. package/patterns/character-grid-reveal.html +16 -0
  117. package/patterns/character-grid-selection.html +30 -0
  118. package/patterns/character-grid-status.html +11 -0
  119. package/patterns/character-grid-workflow.html +147 -0
  120. package/patterns/character-grid.html +16 -0
  121. package/patterns/cluster.html +5 -0
  122. package/patterns/code-sample.html +9 -0
  123. package/patterns/command-group.html +6 -0
  124. package/patterns/comparison-grid.html +7 -0
  125. package/patterns/comparison-pairs.html +13 -0
  126. package/patterns/cta.html +12 -0
  127. package/patterns/dense-ledger.html +7 -0
  128. package/patterns/diagnostic-status.html +7 -0
  129. package/patterns/diagram.html +49 -0
  130. package/patterns/documentation-layout.html +18 -0
  131. package/patterns/emphasis-budget.html +21 -0
  132. package/patterns/entry-index.html +16 -0
  133. package/patterns/evidence-relationship.html +1 -0
  134. package/patterns/facts.html +7 -0
  135. package/patterns/fault-banner.html +19 -0
  136. package/patterns/fault-blocking.html +25 -0
  137. package/patterns/fault-details.html +11 -0
  138. package/patterns/fault-inline.html +17 -0
  139. package/patterns/fault-notification.html +20 -0
  140. package/patterns/fault-reference.html +5 -0
  141. package/patterns/fault-summary.html +20 -0
  142. package/patterns/fault.html +17 -0
  143. package/patterns/feed-item.html +12 -0
  144. package/patterns/focus-stage.html +4 -0
  145. package/patterns/frame.html +4 -0
  146. package/patterns/freshness.html +1 -0
  147. package/patterns/handoff-summary.html +1 -0
  148. package/patterns/hero.html +17 -0
  149. package/patterns/hierarchy-tree.html +11 -0
  150. package/patterns/identifier.html +9 -0
  151. package/patterns/landmark-region.html +4 -0
  152. package/patterns/lane-board.html +10 -0
  153. package/patterns/manifest.md +2 -0
  154. package/patterns/marketing-shell.html +40 -0
  155. package/patterns/measure.html +4 -0
  156. package/patterns/metric-value-change.html +9 -0
  157. package/patterns/mosaic.html +6 -0
  158. package/patterns/navigation-shell.html +8 -0
  159. package/patterns/overflow-command-disclosure.html +6 -0
  160. package/patterns/overview-disclosure.html +12 -0
  161. package/patterns/path-summary.html +8 -0
  162. package/patterns/priority-stack.html +4 -0
  163. package/patterns/progress-bar.html +15 -0
  164. package/patterns/prose.html +9 -0
  165. package/patterns/rail.html +4 -0
  166. package/patterns/recovery-actions.html +5 -0
  167. package/patterns/relationship-index.html +8 -0
  168. package/patterns/reorder-states.html +31 -0
  169. package/patterns/resizable-split-pane.html +11 -0
  170. package/patterns/responsive-grid.html +5 -0
  171. package/patterns/scope-trail.html +1 -0
  172. package/patterns/scroll-progress.html +6 -0
  173. package/patterns/section-heading.html +12 -0
  174. package/patterns/security-blockers.html +3 -0
  175. package/patterns/security-evidence-age.html +1 -0
  176. package/patterns/security-evidence-chain.html +2 -0
  177. package/patterns/security-exception.html +2 -0
  178. package/patterns/security-invariant-result.html +1 -0
  179. package/patterns/security-posture.html +22 -0
  180. package/patterns/security-posture.manifest.md +20 -0
  181. package/patterns/security-state-matrix.html +5 -0
  182. package/patterns/security-trend.html +1 -0
  183. package/patterns/security-unknown.html +2 -0
  184. package/patterns/sidebar.html +4 -0
  185. package/patterns/site-footer.html +12 -0
  186. package/patterns/site-header.html +18 -0
  187. package/patterns/spatial-canvas.html +13 -0
  188. package/patterns/spinner.html +4 -0
  189. package/patterns/split-pane.html +4 -0
  190. package/patterns/stack.html +5 -0
  191. package/patterns/state-survivability.html +19 -0
  192. package/patterns/steps.html +8 -0
  193. package/patterns/switcher.html +4 -0
  194. package/patterns/tooltip.html +48 -0
  195. package/patterns/verification-frame.html +22 -0
  196. package/patterns/workspace-shell.html +6 -0
  197. package/schemas/brand-manifest.schema.json +17 -3
  198. package/tokens/echelon.tokens.json +2801 -0
@@ -0,0 +1,17 @@
1
+ <div class="ef-site">
2
+ <section class="ef-hero" aria-labelledby="hero-title">
3
+ <div class="ef-hero__content">
4
+ <p class="ef-eyebrow">Applied research</p>
5
+ <h1 class="ef-hero__title" id="hero-title">State the promise before the proof</h1>
6
+ <p class="ef-lead">The hero carries one primary recognition path: what this is, why it matters, and the one action most visitors should take.</p>
7
+ <div class="ef-actions"><a class="ef-button" data-ef-variant="primary" href="#start">Book a working session</a><a class="ef-button" href="#work">See the body of work</a></div>
8
+ <dl class="ef-facts">
9
+ <div class="ef-facts__item"><dt>40%+ throughput</dt><dd>Delivery flow realigned</dd></div>
10
+ <div class="ef-facts__item"><dt>Hours to minutes</dt><dd>Reconciliation stabilized</dd></div>
11
+ </dl>
12
+ </div>
13
+ <div class="ef-hero__aside">
14
+ <blockquote class="ef-statement"><p>Supporting context sits beside the promise on wide screens and below it on narrow ones, in source order.</p></blockquote>
15
+ </div>
16
+ </section>
17
+ </div>
@@ -0,0 +1,11 @@
1
+ <nav class="ef-hierarchy-tree" aria-label="Repository hierarchy">
2
+ <ul>
3
+ <li><details open><summary>Application</summary><ul>
4
+ <li><details open><summary>Billing</summary><ul>
5
+ <li><a href="#invoices" aria-current="page">Invoices</a></li>
6
+ <li><a href="#customers">Customers</a></li>
7
+ </ul></details></li>
8
+ <li><details><summary>Operations</summary><ul><li><a href="#runs">Runs</a></li></ul></details></li>
9
+ </ul></details></li>
10
+ </ul>
11
+ </nav>
@@ -0,0 +1,9 @@
1
+ <section class="ef-stack" aria-labelledby="identifier-title">
2
+ <h3 id="identifier-title">Reference values</h3>
3
+ <dl class="ef-key-value-list">
4
+ <div><dt>Invoice</dt><dd><span class="ef-identifier">INV-10O2-7B51</span></dd></div>
5
+ <div><dt>Execution</dt><dd><span class="ef-identifier">EXE-20260926T045512Z-0O1I</span></dd></div>
6
+ <div><dt>Amount to verify</dt><dd><span class="ef-critical-value" data-ef-verify="true">$10,001.00</span></dd></div>
7
+ </dl>
8
+ <p>Low-context values use stronger glyph distinction and remain selectable text. Labels and surrounding prose still carry the meaning.</p>
9
+ </section>
@@ -0,0 +1,4 @@
1
+ <aside class="ef-landmark-region" aria-label="Workspace context">
2
+ <nav aria-label="Primary"><a href="#overview" aria-current="page">Overview</a><a href="#activity">Activity</a></nav>
3
+ <p class="ef-landmark-region__status" role="status">System ready</p>
4
+ </aside>
@@ -0,0 +1,10 @@
1
+ <section class="ef-lane-board" aria-label="Work board">
2
+ <section class="ef-lane-board__lane" aria-labelledby="lane-ready">
3
+ <header class="ef-lane-board__header"><h2 id="lane-ready">Ready</h2><span>2 items</span></header>
4
+ <ol class="ef-lane-board__items"><li><article class="ef-surface"><h3>Prepare release</h3><p>Owner: Build team</p></article></li></ol>
5
+ </section>
6
+ <section class="ef-lane-board__lane" aria-labelledby="lane-review">
7
+ <header class="ef-lane-board__header"><h2 id="lane-review">Review</h2><span>1 item</span></header>
8
+ <ol class="ef-lane-board__items"><li><article class="ef-surface"><h3>Verify evidence</h3><p>State: blocked</p></article></li></ol>
9
+ </section>
10
+ </section>
@@ -38,6 +38,8 @@ Own the canonical semantic HTML structures consumed by Echelon applications. Pat
38
38
  - Documentation and consumer examples wrap the canonical pattern in `<ef-{slug} class="ef-component-tag">`.
39
39
  - The `ef-*` wrapper is inert and must never replace the native semantic element inside it or be registered with `customElements.define()`.
40
40
  - Modal flyouts stay on native `dialog`; gesture-driven or persistent drawer behavior belongs to Limen/application code.
41
+ - Aegis presentation patterns consume the safe presentation view supplied by the application; raw Aegis faults and diagnostics are outside the pattern boundary.
42
+ - `data-ef-aegis-capability` identifies a rendered recovery capability for Limen/application mapping but never grants authority.
41
43
 
42
44
  ## Maintenance
43
45
 
@@ -0,0 +1,40 @@
1
+ <div class="ef-site" data-ef-layout="marketing">
2
+ <a class="ef-skip-link" href="#shell-main">Skip to main content</a>
3
+ <header class="ef-site-header">
4
+ <div class="ef-site-header__inner">
5
+ <div class="ef-site-header__identity">
6
+ <a class="ef-site-header__brand" href="#shell-main"><span class="ef-site-header__mark" aria-hidden="true">EX</span><span class="ef-site-header__name">Example / Product</span></a>
7
+ <p class="ef-site-header__tagline">Evidence-driven engineering systems</p>
8
+ </div>
9
+ <nav class="ef-site-nav" aria-label="Primary">
10
+ <ul class="ef-site-nav__list">
11
+ <li><a class="ef-site-nav__link" href="#shell-main" aria-current="page">Overview</a></li>
12
+ <li><a class="ef-site-nav__link" href="#shell-cta">Documentation</a></li>
13
+ <li><a class="ef-site-nav__link" data-ef-variant="action" href="#shell-cta">Get started</a></li>
14
+ </ul>
15
+ </nav>
16
+ </div>
17
+ </header>
18
+ <main class="ef-site__main" id="shell-main" tabindex="-1">
19
+ <section class="ef-hero" aria-labelledby="shell-title">
20
+ <div class="ef-hero__content">
21
+ <p class="ef-eyebrow">Product overview</p>
22
+ <h1 class="ef-hero__title" id="shell-title">A clear promise in one sentence</h1>
23
+ <p class="ef-lead">Sites supply content. The shell supplies structure, rhythm, focus, and responsive behavior.</p>
24
+ <div class="ef-actions"><a class="ef-button" data-ef-variant="primary" href="#shell-cta">Get started</a><a class="ef-button" href="#shell-cta">Read the documentation</a></div>
25
+ </div>
26
+ </section>
27
+ <section class="ef-section" id="shell-cta" aria-labelledby="shell-cta-title">
28
+ <div class="ef-cta">
29
+ <div class="ef-cta__text"><h2 id="shell-cta-title">Start with a pinned Forma release</h2><p>Every site consumes the same versioned presentation layer.</p></div>
30
+ <div class="ef-actions"><a class="ef-button" data-ef-variant="primary" href="#shell-main">Install</a></div>
31
+ </div>
32
+ </section>
33
+ </main>
34
+ <footer class="ef-site-footer" data-ef-tone="inverse">
35
+ <div class="ef-site-footer__inner">
36
+ <div class="ef-site-footer__main"><div><p class="ef-eyebrow">Example / Product</p><p>One sentence that says what the product is for.</p></div></div>
37
+ <p class="ef-site-footer__note"><span>&copy; 2026 Example</span><span>Built with Forma</span></p>
38
+ </div>
39
+ </footer>
40
+ </div>
@@ -0,0 +1,4 @@
1
+ <article class="ef-measure">
2
+ <h2>Readable content measure</h2>
3
+ <p>Measure constrains line length while allowing the surrounding composition to determine placement and available space.</p>
4
+ </article>
@@ -0,0 +1,9 @@
1
+ <article class="ef-metric-card" aria-labelledby="metric-ar-label">
2
+ <div class="ef-metric-card__label" id="metric-ar-label">Outstanding AR</div>
3
+ <!-- The application replaced this element with the new authoritative value
4
+ and marked it data-ef-value-change; the text is current immediately. -->
5
+ <div class="ef-metric-card__value" data-ef-value-change>$38,200</div>
6
+ <div class="ef-metric-card__context"><span class="ef-status-lozenge" data-state="attention">$8,200 overdue</span></div>
7
+ <p class="ef-visually-hidden" aria-live="polite">Outstanding AR updated to $38,200, down from $42,500.</p>
8
+ <a href="#details">View receivables</a>
9
+ </article>
@@ -0,0 +1,6 @@
1
+ <section class="ef-mosaic" aria-label="Editorial collection">
2
+ <article class="ef-surface" data-span="2"><h2>Featured story</h2><p>Visual emphasis through span, without semantic reordering.</p></article>
3
+ <article class="ef-surface"><h2>Research</h2><p>Supporting item.</p></article>
4
+ <article class="ef-surface"><h2>Example</h2><p>Supporting item.</p></article>
5
+ <article class="ef-surface" data-span="full"><h2>Next step</h2><p>Full-width region returns to one column on narrow screens.</p></article>
6
+ </section>
@@ -0,0 +1,8 @@
1
+ <div class="ef-navigation-shell">
2
+ <details class="ef-navigation-shell__compact">
3
+ <summary>Navigation</summary>
4
+ <nav aria-label="Primary"><a href="#overview" aria-current="page">Overview</a><a href="#activity">Activity</a><a href="#settings">Settings</a></nav>
5
+ </details>
6
+ <nav class="ef-navigation-shell__persistent" aria-label="Primary"><a href="#overview" aria-current="page">Overview</a><a href="#activity">Activity</a><a href="#settings">Settings</a></nav>
7
+ <main class="ef-navigation-shell__content" id="overview"><h1>Overview</h1></main>
8
+ </div>
@@ -0,0 +1,6 @@
1
+ <details class="ef-overflow-commands">
2
+ <summary>More commands</summary>
3
+ <div class="ef-overflow-commands__panel" role="group" aria-label="More commands">
4
+ <button type="button">Duplicate</button><button type="button">Archive</button>
5
+ </div>
6
+ </details>
@@ -0,0 +1,12 @@
1
+ <section class="ef-overview-disclosure" aria-labelledby="overview-title">
2
+ <div class="ef-overview-disclosure__overview">
3
+ <h3 id="overview-title">Verification still required</h3>
4
+ <p><strong>State:</strong> Evidence is stale. One unresolved item remains before the application can confirm the transition.</p>
5
+ </div>
6
+ <details class="ef-disclosure" data-ef-motion-weight="light">
7
+ <summary>Inspect secondary evidence</summary>
8
+ <div class="ef-disclosure__content">
9
+ <p>Last verified 3 hours ago. Source B has not responded to reconciliation.</p>
10
+ </div>
11
+ </details>
12
+ </section>
@@ -0,0 +1,8 @@
1
+ <section class="ef-path-summary" aria-labelledby="path-title">
2
+ <header><h2 id="path-title">Selected path</h2><p>3 relationships</p></header>
3
+ <ol class="ef-path-summary__steps">
4
+ <li><a href="#chrona">Chrona</a><span>provides time entries to</span></li>
5
+ <li><a href="#billing">Billing</a><span>creates billable charges for</span></li>
6
+ <li aria-current="step"><a href="#summa">Summa</a><span>records the invoice</span></li>
7
+ </ol>
8
+ </section>
@@ -0,0 +1,4 @@
1
+ <section class="ef-priority-stack" aria-label="Responsive priority composition">
2
+ <main class="ef-surface" data-priority="primary"><h2>Primary task</h2><p>Receives more space when available and stacks first when space contracts.</p></main>
3
+ <aside class="ef-surface"><h2>Supporting context</h2><p>Secondary context remains in semantic order.</p></aside>
4
+ </section>
@@ -0,0 +1,15 @@
1
+ <div class="ef-progress">
2
+ <div class="ef-progress__header">
3
+ <span class="ef-progress__label" id="export-progress-label">Exporting audit log</span>
4
+ <span class="ef-progress__value">420 of 1,000 records</span>
5
+ </div>
6
+ <progress class="ef-progress__bar" value="420" max="1000" aria-labelledby="export-progress-label">42%</progress>
7
+ </div>
8
+
9
+ <div class="ef-progress">
10
+ <div class="ef-progress__header">
11
+ <span class="ef-progress__label" id="index-progress-label">Preparing search index</span>
12
+ <span class="ef-progress__value">Total not yet known</span>
13
+ </div>
14
+ <progress class="ef-progress__bar" aria-labelledby="index-progress-label">Preparing</progress>
15
+ </div>
@@ -0,0 +1,9 @@
1
+ <div class="ef-site">
2
+ <article class="ef-prose">
3
+ <h2>Long-form content stays inside the reading measure</h2>
4
+ <p>Prose regions keep line length readable, preserve underlined links such as <a href="#measure">the measure contract</a>, and give headings consistent rhythm.</p>
5
+ <h3>Supporting detail</h3>
6
+ <ul><li>Lists inherit the same measure.</li><li>Inline <code>code</code> stays legible.</li></ul>
7
+ <blockquote><p>Quotations use the display face without a second emphasis channel.</p></blockquote>
8
+ </article>
9
+ </div>
@@ -0,0 +1,4 @@
1
+ <section class="ef-rail" aria-label="Content with supporting rail">
2
+ <aside class="ef-surface"><h2>Context</h2><p>Supporting navigation, evidence, or controls.</p></aside>
3
+ <main><h2>Primary work</h2><p>The primary region keeps semantic source order and absorbs remaining space.</p></main>
4
+ </section>
@@ -0,0 +1,5 @@
1
+ <div class="ef-recovery-actions" role="group" aria-label="Recovery actions">
2
+ <button type="button" data-ef-aegis-capability="CanRetry">Try again</button>
3
+ <button type="button" data-ef-aegis-capability="CanReauthenticate">Sign in</button>
4
+ <button type="button" data-ef-aegis-capability="CanOpenReadOnly">Open read-only</button>
5
+ </div>
@@ -0,0 +1,8 @@
1
+ <section class="ef-relationship-index" aria-labelledby="relationships-title">
2
+ <header><h2 id="relationships-title">Relationships</h2><p>Selected entity: Billing</p></header>
3
+ <dl class="ef-relationship-index__list">
4
+ <div><dt>Depends on</dt><dd><a href="#chrona">Chrona</a></dd></div>
5
+ <div><dt>Publishes to</dt><dd><a href="#summa">Summa</a></dd></div>
6
+ <div><dt>Owned by</dt><dd><a href="#finance">Finance domain</a></dd></div>
7
+ </dl>
8
+ </section>
@@ -0,0 +1,31 @@
1
+ <fieldset class="ef-ranking">
2
+ <legend class="ef-ranking__legend">Reorder presentation states</legend>
3
+ <p class="ef-field__description">Static illustration of the hooks an application sets while reordering. The move buttons remain the non-drag path.</p>
4
+ <ol class="ef-ranking__list">
5
+ <li class="ef-ranking__item" data-ef-rank="1" data-ef-manipulation="dragging" style="--ef-drag-y: 0.75rem">
6
+ <span class="ef-ranking__position" aria-hidden="true">1</span>
7
+ <span class="ef-ranking__label">Reliability (dragging: tracks the pointer directly)</span>
8
+ <span class="ef-ranking__actions">
9
+ <button type="button" disabled aria-label="Move Reliability up">↑</button>
10
+ <button type="button" aria-label="Move Reliability down">↓</button>
11
+ </span>
12
+ </li>
13
+ <li class="ef-ranking__item" data-ef-rank="2" data-ef-drop="candidate" data-ef-manipulation="displaced">
14
+ <span class="ef-ranking__position" aria-hidden="true">2</span>
15
+ <span class="ef-ranking__label">Delivery speed (drop candidate)</span>
16
+ <span class="ef-ranking__actions">
17
+ <button type="button" aria-label="Move Delivery speed up">↑</button>
18
+ <button type="button" aria-label="Move Delivery speed down">↓</button>
19
+ </span>
20
+ </li>
21
+ <li class="ef-ranking__item" data-ef-rank="3" data-ef-drop="rejected" data-ef-manipulation="settling">
22
+ <span class="ef-ranking__position" aria-hidden="true">3</span>
23
+ <span class="ef-ranking__label">Cost efficiency (rejected: settles back)</span>
24
+ <span class="ef-ranking__actions">
25
+ <button type="button" aria-label="Move Cost efficiency up">↑</button>
26
+ <button type="button" disabled aria-label="Move Cost efficiency down">↓</button>
27
+ </span>
28
+ </li>
29
+ </ol>
30
+ <p class="ef-ranking__announcement" aria-live="polite" aria-atomic="true">Cost efficiency cannot move above Delivery speed. Order unchanged.</p>
31
+ </fieldset>
@@ -0,0 +1,11 @@
1
+ <section class="ef-split-pane" data-ef-resizable aria-label="Inspector workspace" style="--ef-split-size: 62%">
2
+ <div class="ef-split-pane__primary" id="resizable-primary">
3
+ <h2>Working surface</h2>
4
+ <p>The application owns the primary size and writes it to <code>--ef-split-size</code>; CSS clamps it to the legal bounds.</p>
5
+ </div>
6
+ <div class="ef-split-pane__separator" role="separator" tabindex="0" aria-orientation="vertical" aria-controls="resizable-primary" aria-label="Resize working surface" aria-valuemin="30" aria-valuemax="80" aria-valuenow="62"></div>
7
+ <aside class="ef-split-pane__secondary" aria-label="Inspector">
8
+ <h3>Inspector</h3>
9
+ <p>Pointer drag and Arrow keys are Limen/application behavior. Both write the same size, so they end in the same state.</p>
10
+ </aside>
11
+ </section>
@@ -0,0 +1,5 @@
1
+ <section class="ef-responsive-grid" aria-label="Responsive summary grid">
2
+ <article class="ef-surface ef-span-2"><h2>Priority summary</h2><p>A priority region may span columns without changing source order.</p></article>
3
+ <article class="ef-surface"><h2>Evidence</h2><p>Supporting information.</p></article>
4
+ <article class="ef-surface"><h2>Actions</h2><p>Related actions remain reachable.</p></article>
5
+ </section>
@@ -0,0 +1 @@
1
+ <nav class="ef-scope-trail" aria-label="Current scope"><ol><li><a href="#system">System</a></li><li><a href="#billing">Billing</a></li><li aria-current="page">Invoice 1042</li></ol></nav>
@@ -0,0 +1,6 @@
1
+ <div class="ef-scroll-progress" aria-hidden="true"></div>
2
+ <article class="ef-stack">
3
+ <h2>Release notes</h2>
4
+ <p>The reading-progress bar above is a decorative projection of the page's scroll position. It adds no lag, triggers nothing, and is absent where scroll timelines are unsupported or reduced motion is requested.</p>
5
+ <p>The scrollbar and the headings remain the authoritative way to know where you are in the document.</p>
6
+ </article>
@@ -0,0 +1,12 @@
1
+ <div class="ef-site">
2
+ <section class="ef-section" aria-labelledby="services-title">
3
+ <header class="ef-section-heading">
4
+ <div class="ef-section-heading__text">
5
+ <p class="ef-eyebrow">Service lines</p>
6
+ <h2 id="services-title">Name the section in plain language</h2>
7
+ <p>An optional sentence frames what follows and why it matters.</p>
8
+ </div>
9
+ <div class="ef-section-heading__aside"><a class="ef-button" href="#services">Explore the services</a></div>
10
+ </header>
11
+ </section>
12
+ </div>
@@ -0,0 +1,3 @@
1
+ <section class="ef-security-blockers" aria-labelledby="security-blockers-title"><h2 id="security-blockers-title">Release blockers</h2>
2
+ <ul><li data-kind="violation"><a href="#SEC-INV-014">SEC-INV-014</a><span>Authorization invariant violated.</span></li>
3
+ <li data-kind="unknown"><a href="#SEC-UNK-003">SEC-UNK-003</a><span>Runtime egress behavior has not been established.</span></li></ul></section>
@@ -0,0 +1 @@
1
+ <section class="ef-evidence-age" aria-labelledby="evidence-age-title"><h2 id="evidence-age-title">Evidence freshness</h2><ul><li data-state="current"><a href="#SEC-EVD-042">SEC-EVD-042</a><span>Current · observed 24 Sep 2026</span></li><li data-state="stale"><a href="#SEC-EVD-031">SEC-EVD-031</a><span>Stale · invalidated by boundary change</span></li></ul></section>
@@ -0,0 +1,2 @@
1
+ <figure class="ef-security-evidence-chain" aria-labelledby="evidence-chain-title"><figcaption id="evidence-chain-title">Evidence chain for SEC-INV-014</figcaption>
2
+ <ol><li><strong>Source</strong><span>Aegis</span></li><li><strong>Observation</strong><a href="#SEC-EVD-042">SEC-EVD-042</a></li><li><strong>Invariant</strong><a href="#SEC-INV-014">SEC-INV-014</a></li><li><strong>State</strong><span>Violated</span></li></ol></figure>
@@ -0,0 +1,2 @@
1
+ <article class="ef-security-exception" id="SEC-EXC-002"><header><p>Security exception</p><h3>SEC-EXC-002</h3></header>
2
+ <dl><div><dt>Status</dt><dd>Active</dd></div><div><dt>Approver</dt><dd>Security owner</dd></div><div><dt>Expires</dt><dd><time datetime="2026-10-01">1 Oct 2026</time></dd></div><div><dt>Compensating control</dt><dd>Restricted capability and enhanced audit logging.</dd></div></dl></article>
@@ -0,0 +1 @@
1
+ <article class="ef-invariant-result" id="SEC-INV-014" data-state="violated"><header><p>Security invariant</p><h3>SEC-INV-014</h3><strong>Violated</strong></header><p>Privileged actions require explicit authorization at the effect boundary.</p><dl><div><dt>Threats</dt><dd><a href="#SEC-THR-004">SEC-THR-004</a></dd></div><div><dt>Evidence</dt><dd><a href="#SEC-EVD-042">SEC-EVD-042</a></dd></div><div><dt>Independent verification</dt><dd>Required</dd></div></dl></article>
@@ -0,0 +1,22 @@
1
+ <section class="ef-security-posture" data-posture="blocked" aria-labelledby="security-posture-title">
2
+ <header class="ef-security-posture__header">
3
+ <div>
4
+ <p class="ef-security-posture__eyebrow">Tutela release posture</p>
5
+ <h2 id="security-posture-title">Blocked</h2>
6
+ </div>
7
+ <span class="ef-status-lozenge" data-state="danger" aria-label="Release posture: blocked">Blocked</span>
8
+ </header>
9
+ <dl class="ef-security-posture__meta">
10
+ <div><dt>Subject</dt><dd><code>0123456789abcdef</code></dd></div>
11
+ <div><dt>Scope</dt><dd>Authentication, authorization, agent tools</dd></div>
12
+ <div><dt>Assessed</dt><dd><time datetime="2026-09-24T16:00:00Z">24 Sep 2026</time></dd></div>
13
+ </dl>
14
+ <div class="ef-security-posture__blockers" role="status">
15
+ <strong>2 release blockers</strong>
16
+ <ul>
17
+ <li><a href="#SEC-INV-002">SEC-INV-002</a>: authorization evidence is unknown.</li>
18
+ <li><a href="#SEC-UNK-001">SEC-UNK-001</a>: imported-organization behavior is not established.</li>
19
+ </ul>
20
+ </div>
21
+ <p class="ef-security-posture__qualification">This posture describes the defined assessment scope and evidence. It is not a general claim that the system is secure.</p>
22
+ </section>
@@ -0,0 +1,20 @@
1
+ # Feature Manifest — security posture pattern
2
+
3
+ ## Purpose
4
+ Present a Tutela release posture with immutable subject, scope, freshness and blockers without deriving or reinterpreting security state.
5
+
6
+ ## Ownership
7
+ Tutela owns posture derivation. Forma owns accessible presentation only.
8
+
9
+ ## States
10
+ PASS, CONDITIONAL, BLOCKED and INDETERMINATE. Text is mandatory; color is supplementary.
11
+
12
+ ## Invariants
13
+ - Unknowns are not hidden below findings.
14
+ - No composite security score.
15
+ - Stable IDs remain linkable.
16
+ - Qualification that PASS is scoped evidence status remains available.
17
+ - Responsive reflow and print preserve subject/scope/blockers.
18
+
19
+ ## Verification
20
+ Exercise all four states, keyboard navigation, screen reader naming, high contrast, zoom/reflow and mobile widths.
@@ -0,0 +1,5 @@
1
+ <section class="ef-security-state-matrix" aria-labelledby="security-state-title">
2
+ <h2 id="security-state-title">Security evidence state</h2><dl class="ef-security-state-matrix__grid">
3
+ <div data-state="verified"><dt>Verified</dt><dd>18</dd></div><div data-state="violated"><dt>Violated</dt><dd>1</dd></div>
4
+ <div data-state="unknown"><dt>Unknown</dt><dd>3</dd></div><div data-state="stale"><dt>Stale</dt><dd>2</dd></div><div data-state="na"><dt>N/A</dt><dd>4</dd></div>
5
+ </dl></section>
@@ -0,0 +1 @@
1
+ <section class="ef-security-trend" aria-labelledby="security-trend-title"><h2 id="security-trend-title">Security trend</h2><p>Compared with the previous assessed artifact.</p><ul><li data-direction="regression"><strong>Regression</strong><span>Unknown security effects increased from 0 to 2.</span></li><li data-direction="improvement"><strong>Improvement</strong><span>Stale evidence decreased from 3 to 1.</span></li><li data-direction="unknown"><strong>No measurement</strong><span>Exception aging was not measured for the previous artifact.</span></li></ul></section>
@@ -0,0 +1,2 @@
1
+ <article class="ef-security-unknown" id="SEC-UNK-003"><header><p>Unknown security effect</p><h3>SEC-UNK-003</h3></header><p>Runtime egress behavior has not been established.</p>
2
+ <dl><div><dt>Consequence</dt><dd>Release posture cannot be established for the network boundary.</dd></div><div><dt>Evidence needed</dt><dd>Observed egress policy test against the release artifact.</dd></div></dl></article>
@@ -0,0 +1,4 @@
1
+ <section class="ef-sidebar" aria-label="Workspace">
2
+ <aside class="ef-sidebar__side"><nav aria-label="Workspace navigation"><a href="#overview" aria-current="page">Overview</a><a href="#evidence">Evidence</a></nav></aside>
3
+ <main class="ef-sidebar__content" id="overview"><h2>Overview</h2><p>The main region grows while the sidebar preserves a useful measure.</p></main>
4
+ </section>
@@ -0,0 +1,12 @@
1
+ <div class="ef-site">
2
+ <footer class="ef-site-footer" data-ef-tone="inverse">
3
+ <div class="ef-site-footer__inner">
4
+ <div class="ef-site-footer__main">
5
+ <div><p class="ef-eyebrow">Example / Product</p><p>Strategy, architecture, and delivery for consequential systems.</p></div>
6
+ <div class="ef-actions"><a class="ef-button" href="#contact">Schedule a working session</a></div>
7
+ </div>
8
+ <nav class="ef-site-footer__nav" aria-label="Footer"><ul><li><a href="#privacy">Privacy</a></li><li><a href="#source">Source</a></li></ul></nav>
9
+ <p class="ef-site-footer__note"><span>&copy; 2026 Example</span><span>Indianapolis, Indiana</span></p>
10
+ </div>
11
+ </footer>
12
+ </div>
@@ -0,0 +1,18 @@
1
+ <div class="ef-site">
2
+ <header class="ef-site-header">
3
+ <div class="ef-site-header__inner">
4
+ <div class="ef-site-header__identity">
5
+ <a class="ef-site-header__brand" href="#top"><span class="ef-site-header__mark" aria-hidden="true">EX</span><span class="ef-site-header__name">Example / Product</span></a>
6
+ <p class="ef-site-header__tagline">Evidence-driven engineering systems</p>
7
+ </div>
8
+ <nav class="ef-site-nav" aria-label="Primary">
9
+ <ul class="ef-site-nav__list">
10
+ <li><a class="ef-site-nav__link" href="#top" aria-current="page">Overview</a></li>
11
+ <li><a class="ef-site-nav__link" href="#research">Research</a></li>
12
+ <li><a class="ef-site-nav__link" href="#docs">Documentation</a></li>
13
+ <li><a class="ef-site-nav__link" data-ef-variant="action" href="#contact">Get in touch</a></li>
14
+ </ul>
15
+ </nav>
16
+ </div>
17
+ </header>
18
+ </div>
@@ -0,0 +1,13 @@
1
+ <section class="ef-spatial-canvas" aria-labelledby="canvas-title">
2
+ <header class="ef-spatial-canvas__header">
3
+ <div><h2 id="canvas-title">System map</h2><p class="ef-spatial-canvas__orientation">Viewport: services / billing</p></div>
4
+ <div class="ef-cluster" aria-label="Canvas controls"><button type="button">Zoom out</button><button type="button">Reset view</button><button type="button">Zoom in</button></div>
5
+ </header>
6
+ <div class="ef-spatial-canvas__viewport" tabindex="0" aria-label="Scrollable system map">
7
+ <div class="ef-spatial-canvas__surface">
8
+ <article class="ef-surface"><h3>Billing</h3><p>Selected node</p></article>
9
+ <article class="ef-surface"><h3>Chrona</h3><p>Time source</p></article>
10
+ </div>
11
+ </div>
12
+ <details class="ef-spatial-canvas__index"><summary>Objects in this view</summary><nav aria-label="Canvas objects"><a href="#billing">Billing</a><a href="#chrona">Chrona</a></nav></details>
13
+ </section>
@@ -0,0 +1,4 @@
1
+ <p class="ef-spinner" role="status">
2
+ <span class="ef-spinner__indicator" aria-hidden="true"></span>
3
+ <span class="ef-spinner__label">Loading deployment history</span>
4
+ </p>
@@ -0,0 +1,4 @@
1
+ <section class="ef-split-pane" aria-label="Inspector workspace">
2
+ <main class="ef-split-pane__primary"><h2>Working surface</h2><p>The primary task remains first in source order.</p></main>
3
+ <aside class="ef-split-pane__secondary" aria-label="Inspector"><h3>Inspector</h3><p>Contextual properties for the current selection.</p></aside>
4
+ </section>
@@ -0,0 +1,5 @@
1
+ <section class="ef-stack" aria-label="Stack composition">
2
+ <header><h2>Section title</h2><p>Supporting context remains grouped with the heading.</p></header>
3
+ <article><h3>Primary content</h3><p>Stack owns only the vertical relationship between independent children.</p></article>
4
+ <footer><button type="button">Continue</button></footer>
5
+ </section>
@@ -0,0 +1,19 @@
1
+ <section class="ef-state-survivability" aria-labelledby="state-survivability-title">
2
+ <h3 id="state-survivability-title">Authoritative state projection</h3>
3
+ <div class="ef-state-survivability__state">
4
+ <span class="ef-status-lozenge" data-state="unknown">Unknown</span>
5
+ <p>Outcome has not been confirmed. Reconcile before retrying.</p>
6
+ </div>
7
+ <div class="ef-state-survivability__state">
8
+ <span class="ef-status-lozenge" data-state="attention">Stale</span>
9
+ <p>The displayed evidence is older than the application freshness policy permits.</p>
10
+ </div>
11
+ <div class="ef-state-survivability__state">
12
+ <span class="ef-status-lozenge" data-state="attention">Partial</span>
13
+ <p>Only the stated scope is complete. Omitted scope remains unresolved.</p>
14
+ </div>
15
+ <div class="ef-state-survivability__state">
16
+ <span class="ef-status-lozenge" data-state="blocked">Unavailable</span>
17
+ <p>The application reports this capability is currently unavailable.</p>
18
+ </div>
19
+ </section>
@@ -0,0 +1,8 @@
1
+ <div class="ef-site">
2
+ <ol class="ef-steps" role="list" aria-label="Method">
3
+ <li>Understand the domain and its constraints.</li>
4
+ <li>Identify recurring symptom patterns.</li>
5
+ <li>Trace the causal mechanism.</li>
6
+ <li>Deliver treatment and prevention.</li>
7
+ </ol>
8
+ </div>
@@ -0,0 +1,4 @@
1
+ <section class="ef-switcher" aria-label="Narrative and supporting material">
2
+ <article class="ef-switcher__primary"><h2>Primary narrative</h2><p>The main content owns most available width.</p></article>
3
+ <aside class="ef-switcher__secondary" aria-label="Supporting material"><h2>Supporting material</h2><p>Secondary content remains adjacent when space permits.</p></aside>
4
+ </section>
@@ -0,0 +1,48 @@
1
+ <div class="ef-stack">
2
+ <p class="ef-tooltip-context">
3
+ Retention period: 90 days
4
+ <span class="ef-tooltip">
5
+ <button class="ef-tooltip__trigger" type="button" popovertarget="tooltip-retention" interestfor="tooltip-retention">
6
+ <span aria-hidden="true">?</span>
7
+ <span class="ef-visually-hidden">About the retention period</span>
8
+ </button>
9
+ <span class="ef-tooltip__surface" id="tooltip-retention" popover>Events older than the retention period are deleted automatically. Export them first if you need a longer record.</span>
10
+ </span>
11
+ </p>
12
+
13
+ <div class="ef-field">
14
+ <div class="ef-cluster">
15
+ <label class="ef-field__label" for="tooltip-window">Maintenance window</label>
16
+ <span class="ef-tooltip">
17
+ <button class="ef-tooltip__trigger" type="button" popovertarget="tooltip-window-hint" interestfor="tooltip-window-hint">
18
+ <span aria-hidden="true">?</span>
19
+ <span class="ef-visually-hidden">How maintenance windows are applied</span>
20
+ </button>
21
+ <span class="ef-tooltip__surface" id="tooltip-window-hint" popover>Times use the service region's local time zone.</span>
22
+ </span>
23
+ </div>
24
+ <p class="ef-field__description" id="tooltip-window-description">Required. Changes are scheduled, never applied immediately.</p>
25
+ <input id="tooltip-window" name="window" type="text" aria-describedby="tooltip-window-description" placeholder="Sun 02:00–04:00">
26
+ </div>
27
+
28
+ <table>
29
+ <thead>
30
+ <tr>
31
+ <th scope="col">Service</th>
32
+ <th scope="col">
33
+ Error budget
34
+ <span class="ef-tooltip">
35
+ <button class="ef-tooltip__trigger" type="button" popovertarget="tooltip-budget" interestfor="tooltip-budget">
36
+ <span aria-hidden="true">?</span>
37
+ <span class="ef-visually-hidden">About error budget</span>
38
+ </button>
39
+ <span class="ef-tooltip__surface" id="tooltip-budget" popover>Share of allowed unavailability left in the current 30-day window.</span>
40
+ </span>
41
+ </th>
42
+ </tr>
43
+ </thead>
44
+ <tbody>
45
+ <tr><td>Checkout</td><td>42% remaining</td></tr>
46
+ </tbody>
47
+ </table>
48
+ </div>
@@ -0,0 +1,22 @@
1
+ <section class="ef-verification-frame" aria-labelledby="verification-title">
2
+ <header class="ef-verification-frame__recognize">
3
+ <span class="ef-component-kicker">Recognition</span>
4
+ <h2 id="verification-title">Ready for deliberate verification</h2>
5
+ <p>The application reports one consequential transition is available. Verify the evidence below before acting.</p>
6
+ </header>
7
+ <section class="ef-verification-frame__verify" aria-labelledby="verify-heading">
8
+ <h3 id="verify-heading">Verify</h3>
9
+ <dl class="ef-verification-frame__facts">
10
+ <div><dt>Record</dt><dd><span class="ef-identifier">INV-1042</span></dd></div>
11
+ <div><dt>Amount</dt><dd><span class="ef-critical-value" data-ef-verify="true">$10,001.00</span></dd></div>
12
+ <div><dt>Evidence</dt><dd>3 sources reviewed</dd></div>
13
+ <div><dt>Freshness</dt><dd>Checked 2 minutes ago</dd></div>
14
+ </dl>
15
+ <p><strong>Unresolved work:</strong> none reported for this transition.</p>
16
+ </section>
17
+ <footer class="ef-verification-frame__act">
18
+ <p>Actions shown here must come from current application or Ordo capabilities.</p>
19
+ <button type="button">Review sources</button>
20
+ <button type="button">Approve transition</button>
21
+ </footer>
22
+ </section>