@dotit/core 1.0.1 → 1.1.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.
package/cli.js CHANGED
@@ -367,7 +367,10 @@ Built-in themes: ${listBuiltinThemes().join(", ")}
367
367
  console.log(` Hash: ${result.hash} ✅ matches`);
368
368
  // v2.11: Report amendment count
369
369
  const doc = parseIntentText(source);
370
- const amendments = doc.blocks.filter((b) => b.type === "amendment");
370
+ const allBlocks = doc.blocks.flatMap(function walk(b) {
371
+ return [b, ...(b.children || []).flatMap(walk)];
372
+ });
373
+ const amendments = allBlocks.filter((b) => b.type === "amendment");
371
374
  if (amendments.length > 0) {
372
375
  console.log(` Amendments: ${amendments.length}`);
373
376
  }
@@ -1 +1 @@
1
- export declare const DOCUMENT_CSS = "\n/* \u2500\u2500 Base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-document{font-family:Georgia,'Times New Roman',serif;line-height:1.7;color:#111;max-width:680px;margin:0 auto;padding:32px 24px;}\n/* \u2500\u2500 Typography \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-title{font-size:1.75rem;line-height:1.2;margin:0 0 12px;font-weight:700;letter-spacing:-0.01em;}\n.intent-summary{margin:8px 0 20px;padding:8px 0 8px 14px;border-left:2px solid #999;color:#333;font-style:italic;font-size:0.95rem;}\n.intent-section{margin:24px 0 8px;font-size:1.1rem;line-height:1.3;font-weight:600;padding-bottom:4px;border-bottom:1px solid #ccc;}\n.intent-sub{margin:16px 0 6px;font-size:1rem;line-height:1.3;font-weight:600;}\n.intent-note{margin:6px 0;color:#222;}\n.intent-prose{margin:0 0 1em;color:#222;font-size:1rem;line-height:1.8;max-width:65ch;text-wrap:pretty;}\n.intent-align-center{text-align:center;}\n.intent-align-right{text-align:right;}\n.intent-align-justify{text-align:justify;}\n/* \u2500\u2500 Divider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-divider{margin:18px 0;text-align:center;}\n.intent-divider-line{border:none;border-top:1px solid #ccc;margin:0;}\n.intent-divider-label{display:inline-block;padding:0 10px;background:#fff;color:#888;font-size:0.78rem;position:relative;top:-9px;}\n/* \u2500\u2500 Tasks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-task{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-task-checkbox{margin-top:3px;flex-shrink:0;}\n.intent-task-text{flex:1;}\n.intent-task-meta{display:flex;gap:6px;color:#888;font-size:0.78rem;white-space:nowrap;}\n.intent-task-owner::before{content:'@ ';opacity:0.6;}\n.intent-task-due::before{content:'due ';}\n.intent-task-time::before{content:'at ';}\n.intent-task-text-done{text-decoration:line-through;color:#999;}\n/* \u2500\u2500 Ask \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-ask{display:flex;gap:10px;margin:10px 0;padding:6px 0 6px 12px;border-left:2px solid #999;align-items:baseline;}\n.intent-ask-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#555;flex-shrink:0;line-height:1.65;}\n.intent-ask-content{flex:1;color:#333;font-style:italic;}\n/* \u2500\u2500 Quote \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-quote{margin:14px 0;padding:2px 0 2px 16px;border-left:2px solid #999;font-style:italic;color:#333;}\n.intent-quote p{margin:0;line-height:1.7;}\n.intent-quote-cite{display:block;margin-top:5px;font-style:normal;color:#888;font-size:0.82rem;}\n/* \u2500\u2500 Code \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-code{margin:10px 0;padding:10px 12px;background:#f5f5f5;border:1px solid #ddd;overflow-x:auto;}\n.intent-code code{font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:0.85rem;color:#111;}\n/* \u2500\u2500 Table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-table{width:100%;border-collapse:collapse;margin:12px 0;font-size:0.9em;}\n.intent-table th,.intent-table-th{padding:6px 10px;text-align:left;font-weight:600;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.04em;border-bottom:2px solid #333;}\n.intent-table td,.intent-table-td{padding:6px 10px;text-align:left;border-bottom:1px solid #ddd;vertical-align:top;}\n.intent-row:last-child .intent-table-td,.intent-row:last-child td{border-bottom:none;}\n/* \u2500\u2500 Image \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-image{margin:12px 0;}\n.intent-image-img{max-width:100%;height:auto;border:1px solid #ddd;}\n.intent-image-caption{margin-top:4px;color:#555;font-size:0.82rem;text-align:center;font-style:italic;}\n/* \u2500\u2500 Links / Refs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-link{margin:4px 0;}\n.intent-link a{color:#111;text-decoration:underline;}\n.intent-ref{margin:4px 0;}\n.intent-ref a{color:#111;text-decoration:underline;font-style:italic;}\n.intent-unknown{margin:6px 0;padding:6px 10px;border:1px dashed #ccc;color:#888;}\n/* \u2500\u2500 Embed \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-embed{margin:14px 0;}\n.intent-embed iframe,.intent-embed video,.intent-embed audio{display:block;width:100%;border:1px solid #ddd;}\n/* \u2500\u2500 Callouts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-callout{display:flex;gap:10px;margin:10px 0;padding:6px 0 6px 12px;border-left:2px solid #888;align-items:baseline;}\n.intent-callout-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;flex-shrink:0;white-space:nowrap;line-height:1.65;color:#444;}\n.intent-callout-content{flex:1;color:#222;}\n.intent-info{border-color:#888;}\n.intent-info .intent-callout-label{color:#444;}\n.intent-warning{border-color:#888;}\n.intent-warning .intent-callout-label{color:#444;}\n.intent-tip{border-color:#888;}\n.intent-tip .intent-callout-label{color:#444;}\n.intent-success{border-color:#888;}\n.intent-success .intent-callout-label{color:#444;}\n/* \u2500\u2500 Inline formatting \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-inline-link{color:#111;text-decoration:underline;}\n.intent-inline-highlight{background:#eee;padding:0 .15em;}\n.intent-inline-note{display:inline-block;padding:0 .3em;border:1px solid #ddd;color:#333;font-size:.92em;}\n.intent-inline-quote{color:#333;font-style:italic;}\n.intent-inline-date{font-weight:600;font-family:'SFMono-Regular',Consolas,monospace;}\n.intent-inline-mention{font-weight:600;}\n.intent-inline-tag{font-weight:600;}\n/* \u2500\u2500 Lists \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\nul,ol{margin:6px 0 6px 20px;padding:0;}\nli{margin:3px 0;color:#222;}\n/* \u2500\u2500 v2 Agentic Workflow Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-step{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-step-icon{font-size:0.85rem;flex-shrink:0;}\n.intent-step-content{flex:1;font-weight:500;}\n.intent-step-meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;}\n.intent-step-id{font-size:0.72rem;color:#888;font-family:monospace;}\n.intent-step-depends{font-size:0.75rem;color:#555;font-style:italic;}\n.intent-badge{font-size:0.7rem;padding:1px 6px;border:1px solid #bbb;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;}\n.intent-badge-tool{border-color:#999;}\n.intent-status-pending{color:#666;}\n.intent-status-running{color:#333;animation:intent-pulse 1.5s ease-in-out infinite;}\n.intent-status-blocked{color:#666;}\n.intent-status-failed{color:#333;text-decoration:line-through;}\n.intent-status-done{color:#333;}\n.intent-status-skipped,.intent-status-cancelled{color:#999;text-decoration:line-through;}\n@keyframes intent-pulse{0%,100%{opacity:1;}50%{opacity:0.4;}}\n.intent-decision{display:flex;gap:10px;margin:8px 0;padding:8px 12px;border:1px solid #bbb;}\n.intent-decision-diamond{width:16px;height:16px;border:2px solid #333;transform:rotate(45deg);flex-shrink:0;margin-top:4px;}\n.intent-decision-body{flex:1;}\n.intent-decision-label{font-weight:600;margin-bottom:3px;}\n.intent-decision-condition{font-size:0.85rem;color:#444;font-family:monospace;margin-bottom:3px;}\n.intent-decision-branches{display:flex;gap:14px;font-size:0.82rem;}\n.intent-decision-then{color:#333;}\n.intent-decision-else{color:#333;}\n.intent-trigger{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-trigger-icon{font-size:1rem;}\n.intent-trigger-content{flex:1;font-weight:500;}\n.intent-badge-event{border-color:#999;}\n.intent-loop{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-loop-icon{font-size:1rem;}\n.intent-loop-content{flex:1;font-weight:500;}\n.intent-loop-over,.intent-loop-do{font-size:0.8rem;color:#555;font-family:monospace;}\n.intent-checkpoint{display:flex;align-items:center;gap:8px;margin:16px 0;color:#555;font-size:0.85rem;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;}\n.intent-checkpoint-flag{font-size:1rem;}\n.intent-checkpoint-label{flex-shrink:0;}\n.intent-checkpoint-line{flex:1;border:none;border-top:1px dashed #bbb;margin:0;}\n.intent-audit{margin:4px 0;padding:4px 8px;font-family:'SFMono-Regular',Consolas,monospace;font-size:0.8rem;color:#555;border-left:2px solid #bbb;}\n.intent-audit-prefix{color:#888;font-weight:600;}\n.intent-error-block{border-color:#999;}\n.intent-error-block .intent-callout-label{color:#333;}\n.intent-error-fallback{font-size:0.8rem;color:#555;font-style:italic;margin-left:6px;}\n.intent-error-notify{font-size:0.8rem;color:#555;margin-left:6px;}\n.intent-context-table{width:auto;border-collapse:collapse;margin:6px 0;font-size:0.85rem;}\n.intent-context-key{padding:3px 10px 3px 8px;font-weight:600;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}\n.intent-context-val{padding:3px 12px 3px 6px;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}\n.intent-context{margin:4px 0;font-size:0.85rem;color:#333;}\n.intent-progress{display:flex;align-items:center;gap:8px;margin:6px 0;}\n.intent-progress-label{font-size:0.85rem;color:#222;flex-shrink:0;}\n.intent-progress-bar{flex:1;height:6px;background:#ddd;overflow:hidden;}\n.intent-progress-fill{height:100%;background:#555;}\n.intent-progress-pct{font-size:0.78rem;color:#555;font-weight:600;min-width:36px;text-align:right;}\n.intent-file-ref{display:flex;align-items:center;gap:6px;margin:4px 0;padding:4px 8px;border:1px dashed #ccc;font-size:0.82rem;color:#555;font-family:monospace;}\n.intent-file-ref-icon{font-size:0.9rem;}\n/* \u2500\u2500 v2.1 Agentic Workflow Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-emit-block{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-emit-icon{font-size:1rem;}\n.intent-emit-content{flex:1;font-weight:500;}\n.intent-emit-meta{display:flex;gap:5px;align-items:center;}\n.intent-emit-phase{font-size:0.78rem;color:#555;font-weight:600;}\n.intent-badge-level{border-color:#999;}\n.intent-result{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;flex-wrap:wrap;}\n.intent-result-success{border-color:#999;}\n.intent-result-error,.intent-result-failure{border-color:#999;}\n.intent-result-icon{font-size:1rem;flex-shrink:0;}\n.intent-result-content{flex:1;font-weight:500;}\n.intent-badge-code{border-color:#999;font-family:monospace;}\n.intent-result-data{width:100%;margin-top:3px;padding:4px 8px;font-size:0.82rem;overflow-x:auto;border-top:1px solid #ddd;}\n.intent-result-data code{font-family:'SFMono-Regular',Consolas,monospace;font-size:0.82rem;color:#333;}\n.intent-handoff{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-handoff-icon{font-size:1rem;}\n.intent-handoff-content{flex:1;font-weight:500;}\n.intent-handoff-arrow{display:flex;align-items:center;gap:5px;font-size:0.82rem;color:#444;font-weight:600;}\n.intent-handoff-agent{padding:1px 5px;border:1px solid #bbb;font-family:monospace;font-size:0.78rem;}\n.intent-wait{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;border-left:2px solid #999;}\n.intent-wait-icon{font-size:1rem;animation:intent-pulse 2s ease-in-out infinite;}\n.intent-wait-content{flex:1;font-weight:500;color:#333;}\n.intent-wait-meta{display:flex;gap:5px;align-items:center;}\n.intent-badge-timeout{border-color:#999;font-family:monospace;}\n.intent-wait-fallback{font-size:0.8rem;color:#555;font-style:italic;}\n.intent-parallel{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-parallel-icon{font-size:1rem;}\n.intent-parallel-content{flex:1;font-weight:500;}\n.intent-parallel-steps{display:flex;gap:4px;flex-wrap:wrap;}\n.intent-badge-parallel-step{border-color:#999;font-family:monospace;font-size:0.72rem;padding:1px 5px;}\n.intent-badge-join{border-color:#999;font-size:0.72rem;padding:1px 5px;}\n.intent-retry{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-retry-icon{font-size:1rem;}\n.intent-retry-content{flex:1;font-weight:500;}\n.intent-retry-meta{display:flex;gap:5px;align-items:center;}\n.intent-badge-retry-max{border-color:#999;font-size:0.72rem;}\n.intent-badge-retry-delay{border-color:#999;font-size:0.72rem;font-family:monospace;}\n.intent-badge-retry-backoff{border-color:#999;font-size:0.72rem;font-style:italic;}\n/* \u2500\u2500 v2.2 Agentic Workflow Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-gate{display:flex;gap:10px;margin:8px 0;padding:10px 12px;border:2px solid #888;}\n.intent-gate-icon{font-size:1.2rem;flex-shrink:0;margin-top:2px;}\n.intent-gate-body{flex:1;}\n.intent-gate-label{font-weight:600;margin-bottom:3px;}\n.intent-gate-meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;}\n.intent-badge-approver{border-color:#999;font-family:monospace;}\n.intent-gate-fallback{font-size:0.8rem;color:#555;font-style:italic;}\n.intent-call{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px dashed #999;margin:5px 0;}\n.intent-call-icon{font-size:1rem;}\n.intent-call-content{flex:1;font-weight:500;font-family:monospace;font-size:0.9rem;}\n.intent-call-meta{display:flex;gap:6px;align-items:center;}\n.intent-call-input{font-size:0.78rem;color:#555;font-family:monospace;}\n.intent-call-output{font-size:0.78rem;color:#555;font-family:monospace;}\n/* \u2500\u2500 v2.5 Document Generation Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.it-page-break{page-break-after:always;break-after:page;height:0;}\n.it-byline{margin:0 0 16px;font-size:0.9em;color:#333;}\n.it-byline-author{display:block;font-weight:bold;}\n.it-byline-meta{display:block;font-size:0.85em;color:#666;margin-top:2px;}\n.it-epigraph{font-style:italic;text-align:center;margin:20px 3em;border:none;padding:0;}\n.it-epigraph p{margin:0;}\n.it-epigraph .it-epigraph-by{display:block;text-align:right;font-size:0.9em;margin-top:4px;font-style:normal;color:#666;}\n.it-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:3px;margin-bottom:10px;}\n.it-dedication{font-style:italic;text-align:center;margin:3em auto;}\n.it-toc{margin:20px 0;}\n.it-toc-title{font-size:1.1rem;font-weight:600;margin-bottom:8px;border:none;}\n.it-toc ol{list-style:none;padding:0;margin:0;}\n.it-toc li{margin:3px 0;}\n.it-toc li a{color:#111;text-decoration:none;border-bottom:1px dotted #bbb;}\n.it-toc li a:hover{border-bottom-style:solid;}\n.it-toc .it-toc-sub{padding-left:20px;font-size:0.92em;}\n.it-footnotes{border-top:1px solid #ccc;margin-top:24px;padding-top:8px;font-size:0.85em;color:#444;}\n.it-footnotes ol{padding-left:1.5em;margin:0;}\n.it-footnotes li{margin:3px 0;}\nsup.it-fn-ref{font-size:0.7em;vertical-align:super;}\nsup.it-fn-ref a{color:#111;text-decoration:none;border-bottom:1px solid #999;}\n/* \u2500\u2500 v2.8 Document Trust \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.it-approval{display:flex;gap:10px;margin:10px 0;padding:10px 14px;border:1px solid #4caf50;background:#f8fdf8;}\n.it-approval__icon{font-size:1.2rem;color:#4caf50;flex-shrink:0;}\n.it-approval__body{display:flex;flex-direction:column;gap:2px;}\n.it-approval__label{font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#4caf50;}\n.it-approval__who{font-size:0.9rem;color:#222;}\n.it-approval__date{font-size:0.8rem;color:#666;}\n.it-signature{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0;padding:10px 14px;border:1px solid #daa520;background:#fffdf5;}\n.it-signature--valid{border-color:#4caf50;background:#f8fdf8;}\n.it-signature--invalid{border-color:#c62828;background:#fdf5f5;}\n.it-signature__name{font-weight:600;font-size:0.95rem;color:#111;}\n.it-signature__role{font-size:0.85rem;color:#555;}\n.it-signature__date{font-size:0.8rem;color:#666;}\n.it-signature__status{font-size:0.8rem;font-weight:600;margin-left:auto;}\n.it-sealed-banner{display:flex;gap:10px;align-items:center;margin:16px 0;padding:12px 16px;border:2px solid #c62828;background:#fdf5f5;font-weight:600;}\n.it-sealed-banner__icon{font-size:1.3rem;}\n.it-sealed-banner__text{font-size:1rem;color:#c62828;text-transform:uppercase;letter-spacing:0.04em;}\n.it-sealed-banner__date{font-size:0.8rem;color:#666;margin-left:auto;}\n.it-sealed-banner__hash{font-size:0.72rem;color:#888;font-family:monospace;}\n/* \u2500\u2500 v2.11 Keyword Expansion \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.it-ref-card{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.it-ref-icon{font-size:1rem;flex-shrink:0;}\n.it-ref-link{color:#111;text-decoration:underline;font-weight:500;}\n.it-ref-name{font-weight:500;}\n.it-ref-rel{font-size:0.7rem;padding:1px 6px;border:1px solid #bbb;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;}\n.it-def{margin:6px 0;padding:4px 0;}\n.it-def-term{font-weight:700;font-size:0.95rem;color:#111;}\n.it-def-abbr{font-weight:400;color:#555;}\n.it-def-meaning{margin:2px 0 0 0;color:#333;font-size:0.92rem;padding-left:1em;}\n.it-metric{display:inline-block;padding:10px 14px;border:1px solid #ddd;margin:5px;min-width:140px;vertical-align:top;}\n.it-metric-name{font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;color:#555;}\n.it-metric-value{font-size:1.6rem;font-weight:700;line-height:1.2;color:#111;}\n.it-metric-unit{font-size:0.85rem;font-weight:400;color:#666;margin-left:2px;}\n.it-metric-target{font-size:0.78rem;color:#888;}\n.it-metric-trend{font-size:1rem;font-weight:700;margin-top:2px;}\n.it-metric-period{font-size:0.72rem;color:#888;}\n.it-metric-green{border-color:#4caf50;}\n.it-metric-green .it-metric-value{color:#2e7d32;}\n.it-metric-red{border-color:#c62828;}\n.it-metric-red .it-metric-value{color:#c62828;}\n.it-metric-neutral{border-color:#ddd;}\n/* Document total/line rows (invoice, receipt, statement) \u2014 matches the editor's\n itMetric node so editor-designed templates print identically. */\n.it-metric-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:5px 0;border-bottom:1px solid var(--it-color-border,#e5e7eb);}\n.it-metric-row__label{color:var(--it-color-muted,#555);}\n.it-metric-row__value{font-variant-numeric:tabular-nums;font-weight:600;color:var(--it-color-text,#111);white-space:nowrap;}\n.it-metric-row--total{border-bottom:none;border-top:2px solid var(--it-color-text,#333);margin-top:2px;padding-top:8px;font-size:1.05em;}\n.it-metric-row--total .it-metric-row__label{color:var(--it-color-text,#111);font-weight:600;}\n.it-amendment{margin:10px 0;padding:10px 14px;border:2px solid #e65100;background:#fff8e1;}\n.it-amendment-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;}\n.it-amendment-icon{font-size:1rem;}\n.it-amendment-ref{font-size:0.72rem;font-weight:700;padding:1px 6px;border:1px solid #e65100;color:#e65100;text-transform:uppercase;letter-spacing:0.04em;}\n.it-amendment-title{font-weight:600;color:#111;}\n.it-amendment-section{font-size:0.85rem;color:#555;font-style:italic;}\n.it-amendment-was{font-size:0.85rem;color:#c62828;text-decoration:line-through;}\n.it-amendment-now{font-size:0.85rem;color:#2e7d32;font-weight:500;}\n.it-amendment-meta{display:flex;gap:8px;margin-top:4px;font-size:0.8rem;color:#666;}\n.it-figure{margin:14px 0;}\n.it-figure img{display:block;margin:0 auto;border:1px solid #ddd;}\n.it-figure-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:6px;}\n.it-signline{margin:20px 0;padding:0;}\n.it-signline-label{font-size:0.72rem;color:#888;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:4px;}\n.it-signline-rule{border-bottom:1px solid #111;margin-bottom:4px;}\n.it-signline-name{font-size:0.9rem;font-weight:500;color:#111;}\n.it-signline-role{font-size:0.82rem;color:#555;}\n.it-signline-date{font-size:0.82rem;color:#555;margin-top:4px;}\n.it-contact{padding:8px 12px;border:1px solid #ddd;margin:5px 0;}\n.it-contact-name{font-weight:600;font-size:0.95rem;color:#111;}\n.it-contact-role{font-size:0.82rem;color:#555;}\n.it-contact-org{font-size:0.82rem;color:#555;}\n.it-contact-email a,.it-contact-phone a,.it-contact-url a{color:#111;text-decoration:underline;font-size:0.85rem;}\n.it-deadline{padding:8px 12px;border-left:3px solid #4caf50;margin:5px 0;}\n.it-deadline-name{font-weight:600;color:#111;}\n.it-deadline-date{font-size:0.9rem;font-weight:600;color:#111;}\n.it-deadline-consequence{font-size:0.85rem;color:#555;font-style:italic;}\n.it-deadline-owner{font-size:0.82rem;color:#555;}\n.it-deadline-authority{font-size:0.82rem;color:#555;}\n.it-deadline-green{border-color:#4caf50;}\n.it-deadline-amber{border-color:#f57c00;}\n.it-deadline-red{border-color:#c62828;}\n";
1
+ export declare const DOCUMENT_CSS = "\n/* \u2500\u2500 Base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-document{font-family:Georgia,'Times New Roman',serif;line-height:1.7;color:#111;max-width:680px;margin:0 auto;padding:32px 24px;}\n/* \u2500\u2500 Typography \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-title{font-size:1.75rem;line-height:1.2;margin:0 0 12px;font-weight:700;letter-spacing:-0.01em;}\n.intent-summary{margin:8px 0 20px;padding-block:8px;padding-inline:0;padding-inline-start:14px;border-inline-start:2px solid #999;color:#333;font-style:italic;font-size:0.95rem;}\n.intent-section{margin:24px 0 8px;font-size:1.1rem;line-height:1.3;font-weight:600;padding-bottom:4px;border-bottom:1px solid #ccc;}\n.intent-sub{margin:16px 0 6px;font-size:1rem;line-height:1.3;font-weight:600;}\n.intent-note{margin:6px 0;color:#222;}\n.intent-prose{margin:0 0 1em;color:#222;font-size:1rem;line-height:1.8;max-width:65ch;text-wrap:pretty;}\n.intent-align-center{text-align:center;}\n.intent-align-right{text-align:end;}\n.intent-align-justify{text-align:justify;}\n/* \u2500\u2500 Two-sided rows (end:) \u2014 flex start/end, RTL-native \u2500\u2500 */\n.it-split{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}\n.it-split-main{min-width:0;}\n.it-split-end{flex-shrink:0;}\n/* \u2500\u2500 Divider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-divider{margin:18px 0;text-align:center;}\n.intent-divider-line{border:none;border-top:1px solid #ccc;margin:0;}\n.intent-divider-label{display:inline-block;padding:0 10px;background:#fff;color:#888;font-size:0.78rem;position:relative;top:-9px;}\n/* \u2500\u2500 Tasks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-task{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-task-checkbox{margin-top:3px;flex-shrink:0;}\n.intent-task-text{flex:1;}\n.intent-task-meta{display:flex;gap:6px;color:#888;font-size:0.78rem;white-space:nowrap;}\n.intent-task-owner::before{content:'@ ';opacity:0.6;}\n.intent-task-due::before{content:'due ';}\n.intent-task-time::before{content:'at ';}\n.intent-task-text-done{text-decoration:line-through;color:#999;}\n/* \u2500\u2500 Ask \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-ask{display:flex;gap:10px;margin:10px 0;padding-block:6px;padding-inline:0;padding-inline-start:12px;border-inline-start:2px solid #999;align-items:baseline;}\n.intent-ask-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#555;flex-shrink:0;line-height:1.65;}\n.intent-ask-content{flex:1;color:#333;font-style:italic;}\n/* \u2500\u2500 Quote \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-quote{margin:14px 0;padding-block:2px;padding-inline:0;padding-inline-start:16px;border-inline-start:2px solid #999;font-style:italic;color:#333;}\n.intent-quote p{margin:0;line-height:1.7;}\n.intent-quote-cite{display:block;margin-top:5px;font-style:normal;color:#888;font-size:0.82rem;}\n/* \u2500\u2500 Code \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-code{margin:10px 0;padding:10px 12px;background:#f5f5f5;border:1px solid #ddd;overflow-x:auto;}\n.intent-code code{font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:0.85rem;color:#111;}\n/* \u2500\u2500 Table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-table{width:100%;border-collapse:collapse;margin:12px 0;font-size:0.9em;}\n.intent-table th,.intent-table-th{padding:6px 10px;text-align:start;font-weight:600;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.04em;border-bottom:2px solid #333;}\n.intent-table td,.intent-table-td{padding:6px 10px;text-align:start;border-bottom:1px solid #ddd;vertical-align:top;}\n.intent-row:last-child .intent-table-td,.intent-row:last-child td{border-bottom:none;}\n/* \u2500\u2500 Image \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-image{margin:12px 0;}\n.intent-image-img{max-width:100%;height:auto;border:1px solid #ddd;}\n.intent-image-caption{margin-top:4px;color:#555;font-size:0.82rem;text-align:center;font-style:italic;}\n/* \u2500\u2500 Links / Refs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-link{margin:4px 0;}\n.intent-link a{color:#111;text-decoration:underline;}\n.intent-ref{margin:4px 0;}\n.intent-ref a{color:#111;text-decoration:underline;font-style:italic;}\n.intent-unknown{margin:6px 0;padding:6px 10px;border:1px dashed #ccc;color:#888;}\n/* \u2500\u2500 Embed \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-embed{margin:14px 0;}\n.intent-embed iframe,.intent-embed video,.intent-embed audio{display:block;width:100%;border:1px solid #ddd;}\n/* \u2500\u2500 Callouts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-callout{display:flex;gap:10px;margin:10px 0;padding-block:6px;padding-inline:0;padding-inline-start:12px;border-inline-start:2px solid #888;align-items:baseline;}\n.intent-callout-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;flex-shrink:0;white-space:nowrap;line-height:1.65;color:#444;}\n.intent-callout-content{flex:1;color:#222;}\n.intent-info{border-color:#888;}\n.intent-info .intent-callout-label{color:#444;}\n.intent-warning{border-color:#888;}\n.intent-warning .intent-callout-label{color:#444;}\n.intent-tip{border-color:#888;}\n.intent-tip .intent-callout-label{color:#444;}\n.intent-success{border-color:#888;}\n.intent-success .intent-callout-label{color:#444;}\n/* \u2500\u2500 Inline formatting \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-inline-link{color:#111;text-decoration:underline;}\n.intent-inline-highlight{background:#eee;padding:0 .15em;}\n.intent-inline-note{display:inline-block;padding:0 .3em;border:1px solid #ddd;color:#333;font-size:.92em;}\n.intent-inline-quote{color:#333;font-style:italic;}\n.intent-inline-date{font-weight:600;font-family:'SFMono-Regular',Consolas,monospace;}\n.intent-inline-mention{font-weight:600;}\n.intent-inline-tag{font-weight:600;}\n/* \u2500\u2500 Lists \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\nul,ol{margin:6px 0 6px 20px;padding:0;}\nli{margin:3px 0;color:#222;}\n/* \u2500\u2500 v2 Agentic Workflow Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-step{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-step-icon{font-size:0.85rem;flex-shrink:0;}\n.intent-step-content{flex:1;font-weight:500;}\n.intent-step-meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;}\n.intent-step-id{font-size:0.72rem;color:#888;font-family:monospace;}\n.intent-step-depends{font-size:0.75rem;color:#555;font-style:italic;}\n.intent-badge{font-size:0.7rem;padding:1px 6px;border:1px solid #bbb;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;}\n.intent-badge-tool{border-color:#999;}\n.intent-status-pending{color:#666;}\n.intent-status-running{color:#333;animation:intent-pulse 1.5s ease-in-out infinite;}\n.intent-status-blocked{color:#666;}\n.intent-status-failed{color:#333;text-decoration:line-through;}\n.intent-status-done{color:#333;}\n.intent-status-skipped,.intent-status-cancelled{color:#999;text-decoration:line-through;}\n@keyframes intent-pulse{0%,100%{opacity:1;}50%{opacity:0.4;}}\n.intent-decision{display:flex;gap:10px;margin:8px 0;padding:8px 12px;border:1px solid #bbb;}\n.intent-decision-diamond{width:16px;height:16px;border:2px solid #333;transform:rotate(45deg);flex-shrink:0;margin-top:4px;}\n.intent-decision-body{flex:1;}\n.intent-decision-label{font-weight:600;margin-bottom:3px;}\n.intent-decision-condition{font-size:0.85rem;color:#444;font-family:monospace;margin-bottom:3px;}\n.intent-decision-branches{display:flex;gap:14px;font-size:0.82rem;}\n.intent-decision-then{color:#333;}\n.intent-decision-else{color:#333;}\n.intent-trigger{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-trigger-icon{font-size:1rem;}\n.intent-trigger-content{flex:1;font-weight:500;}\n.intent-badge-event{border-color:#999;}\n.intent-loop{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.intent-loop-icon{font-size:1rem;}\n.intent-loop-content{flex:1;font-weight:500;}\n.intent-loop-over,.intent-loop-do{font-size:0.8rem;color:#555;font-family:monospace;}\n.intent-checkpoint{display:flex;align-items:center;gap:8px;margin:16px 0;color:#555;font-size:0.85rem;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;}\n.intent-checkpoint-flag{font-size:1rem;}\n.intent-checkpoint-label{flex-shrink:0;}\n.intent-checkpoint-line{flex:1;border:none;border-top:1px dashed #bbb;margin:0;}\n.intent-audit{margin:4px 0;padding:4px 8px;font-family:'SFMono-Regular',Consolas,monospace;font-size:0.8rem;color:#555;border-inline-start:2px solid #bbb;}\n.intent-audit-prefix{color:#888;font-weight:600;}\n.intent-error-block{border-color:#999;}\n.intent-error-block .intent-callout-label{color:#333;}\n.intent-error-fallback{font-size:0.8rem;color:#555;font-style:italic;margin-inline-start:6px;}\n.intent-error-notify{font-size:0.8rem;color:#555;margin-inline-start:6px;}\n.intent-context-table{width:auto;border-collapse:collapse;margin:6px 0;font-size:0.85rem;}\n.intent-context-key{padding:3px 10px 3px 8px;font-weight:600;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}\n.intent-context-val{padding:3px 12px 3px 6px;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}\n.intent-context{margin:4px 0;font-size:0.85rem;color:#333;}\n.intent-progress{display:flex;align-items:center;gap:8px;margin:6px 0;}\n.intent-progress-label{font-size:0.85rem;color:#222;flex-shrink:0;}\n.intent-progress-bar{flex:1;height:6px;background:#ddd;overflow:hidden;}\n.intent-progress-fill{height:100%;background:#555;}\n.intent-progress-pct{font-size:0.78rem;color:#555;font-weight:600;min-width:36px;text-align:end;}\n.intent-file-ref{display:flex;align-items:center;gap:6px;margin:4px 0;padding:4px 8px;border:1px dashed #ccc;font-size:0.82rem;color:#555;font-family:monospace;}\n.intent-file-ref-icon{font-size:0.9rem;}\n/* \u2500\u2500 v2.1 Agentic Workflow Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-emit-block{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-emit-icon{font-size:1rem;}\n.intent-emit-content{flex:1;font-weight:500;}\n.intent-emit-meta{display:flex;gap:5px;align-items:center;}\n.intent-emit-phase{font-size:0.78rem;color:#555;font-weight:600;}\n.intent-badge-level{border-color:#999;}\n.intent-result{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;flex-wrap:wrap;}\n.intent-result-success{border-color:#999;}\n.intent-result-error,.intent-result-failure{border-color:#999;}\n.intent-result-icon{font-size:1rem;flex-shrink:0;}\n.intent-result-content{flex:1;font-weight:500;}\n.intent-badge-code{border-color:#999;font-family:monospace;}\n.intent-result-data{width:100%;margin-top:3px;padding:4px 8px;font-size:0.82rem;overflow-x:auto;border-top:1px solid #ddd;}\n.intent-result-data code{font-family:'SFMono-Regular',Consolas,monospace;font-size:0.82rem;color:#333;}\n.intent-handoff{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-handoff-icon{font-size:1rem;}\n.intent-handoff-content{flex:1;font-weight:500;}\n.intent-handoff-arrow{display:flex;align-items:center;gap:5px;font-size:0.82rem;color:#444;font-weight:600;}\n.intent-handoff-agent{padding:1px 5px;border:1px solid #bbb;font-family:monospace;font-size:0.78rem;}\n.intent-wait{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;border-inline-start:2px solid #999;}\n.intent-wait-icon{font-size:1rem;animation:intent-pulse 2s ease-in-out infinite;}\n.intent-wait-content{flex:1;font-weight:500;color:#333;}\n.intent-wait-meta{display:flex;gap:5px;align-items:center;}\n.intent-badge-timeout{border-color:#999;font-family:monospace;}\n.intent-wait-fallback{font-size:0.8rem;color:#555;font-style:italic;}\n.intent-parallel{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-parallel-icon{font-size:1rem;}\n.intent-parallel-content{flex:1;font-weight:500;}\n.intent-parallel-steps{display:flex;gap:4px;flex-wrap:wrap;}\n.intent-badge-parallel-step{border-color:#999;font-family:monospace;font-size:0.72rem;padding:1px 5px;}\n.intent-badge-join{border-color:#999;font-size:0.72rem;padding:1px 5px;}\n.intent-retry{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}\n.intent-retry-icon{font-size:1rem;}\n.intent-retry-content{flex:1;font-weight:500;}\n.intent-retry-meta{display:flex;gap:5px;align-items:center;}\n.intent-badge-retry-max{border-color:#999;font-size:0.72rem;}\n.intent-badge-retry-delay{border-color:#999;font-size:0.72rem;font-family:monospace;}\n.intent-badge-retry-backoff{border-color:#999;font-size:0.72rem;font-style:italic;}\n/* \u2500\u2500 v2.2 Agentic Workflow Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intent-gate{display:flex;gap:10px;margin:8px 0;padding:10px 12px;border:2px solid #888;}\n.intent-gate-icon{font-size:1.2rem;flex-shrink:0;margin-top:2px;}\n.intent-gate-body{flex:1;}\n.intent-gate-label{font-weight:600;margin-bottom:3px;}\n.intent-gate-meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;}\n.intent-badge-approver{border-color:#999;font-family:monospace;}\n.intent-gate-fallback{font-size:0.8rem;color:#555;font-style:italic;}\n.intent-call{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px dashed #999;margin:5px 0;}\n.intent-call-icon{font-size:1rem;}\n.intent-call-content{flex:1;font-weight:500;font-family:monospace;font-size:0.9rem;}\n.intent-call-meta{display:flex;gap:6px;align-items:center;}\n.intent-call-input{font-size:0.78rem;color:#555;font-family:monospace;}\n.intent-call-output{font-size:0.78rem;color:#555;font-family:monospace;}\n/* \u2500\u2500 v2.5 Document Generation Blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.it-page-break{page-break-after:always;break-after:page;height:0;}\n.it-byline{margin:0 0 16px;font-size:0.9em;color:#333;}\n.it-byline-author{display:block;font-weight:bold;}\n.it-byline-meta{display:block;font-size:0.85em;color:#666;margin-top:2px;}\n.it-epigraph{font-style:italic;text-align:center;margin:20px 3em;border:none;padding:0;}\n.it-epigraph p{margin:0;}\n.it-epigraph .it-epigraph-by{display:block;text-align:end;font-size:0.9em;margin-top:4px;font-style:normal;color:#666;}\n.it-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:3px;margin-bottom:10px;}\n.it-dedication{font-style:italic;text-align:center;margin:3em auto;}\n.it-toc{margin:20px 0;}\n.it-toc-title{font-size:1.1rem;font-weight:600;margin-bottom:8px;border:none;}\n.it-toc ol{list-style:none;padding:0;margin:0;}\n.it-toc li{margin:3px 0;}\n.it-toc li a{color:#111;text-decoration:none;border-bottom:1px dotted #bbb;}\n.it-toc li a:hover{border-bottom-style:solid;}\n.it-toc .it-toc-sub{padding-inline-start:20px;font-size:0.92em;}\n.it-footnotes{border-top:1px solid #ccc;margin-top:24px;padding-top:8px;font-size:0.85em;color:#444;}\n.it-footnotes ol{padding-inline-start:1.5em;margin:0;}\n.it-footnotes li{margin:3px 0;}\nsup.it-fn-ref{font-size:0.7em;vertical-align:super;}\nsup.it-fn-ref a{color:#111;text-decoration:none;border-bottom:1px solid #999;}\n/* \u2500\u2500 v2.8 Document Trust \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n/* Trust blocks are typeset like entries in a legal document \u2014 hairlines and\n small-caps labels, no colored fills (ink-first; prints exactly as shown). */\n.it-approval{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;margin:12px 0;padding:7px 2px;border-bottom:1px solid #ddd;}\n.it-approval__icon{display:none;}\n.it-approval__body{display:contents;}\n.it-approval__label{font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:#2e7d32;flex-shrink:0;}\n.it-approval__label::before{content:'\u2713 ';}\n.it-approval__what{font-size:0.9rem;font-weight:600;color:#111;}\n.it-approval__who{font-size:0.9rem;color:#555;}\n.it-approval__date{font-size:0.8rem;color:#777;margin-inline-start:auto;font-variant-numeric:tabular-nums;}\n.it-signature{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;margin:14px 0 10px;padding:7px 2px 5px;border-top:1px solid #111;}\n.it-signature--valid{border-top-color:#111;}\n.it-signature--invalid{border-top-color:#c62828;}\n.it-signature__name{font-weight:600;font-size:0.95rem;color:#111;}\n.it-signature__role{font-size:0.85rem;color:#555;}\n.it-signature__date{font-size:0.8rem;color:#777;font-variant-numeric:tabular-nums;}\n.it-signature__status{font-size:0.72rem;font-weight:600;margin-inline-start:auto;text-transform:uppercase;letter-spacing:0.08em;color:#2e7d32;}\n.it-signature--invalid .it-signature__status{color:#c62828;}\n.it-sealed-banner{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;margin:18px 0;padding:8px 2px;border-top:1px solid #111;border-bottom:1px solid #111;}\n.it-sealed-banner__icon{display:none;}\n.it-sealed-banner__text{font-size:0.78rem;font-weight:700;color:#111;text-transform:uppercase;letter-spacing:0.14em;}\n.it-sealed-banner__date{font-size:0.8rem;color:#666;margin-inline-start:auto;font-variant-numeric:tabular-nums;}\n.it-sealed-banner__hash{font-size:0.72rem;color:#999;font-family:'SFMono-Regular',Consolas,monospace;}\n/* \u2500\u2500 v2.11 Keyword Expansion \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.it-ref-card{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}\n.it-ref-icon{font-size:1rem;flex-shrink:0;}\n.it-ref-link{color:#111;text-decoration:underline;font-weight:500;}\n.it-ref-name{font-weight:500;}\n.it-ref-rel{font-size:0.7rem;padding:1px 6px;border:1px solid #bbb;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;}\n.it-def{margin:6px 0;padding:4px 0;}\n.it-def-term{font-weight:700;font-size:0.95rem;color:#111;}\n.it-def-abbr{font-weight:400;color:#555;}\n.it-def-meaning{margin:2px 0 0 0;color:#333;font-size:0.92rem;padding-inline-start:1em;}\n.it-metric{display:inline-block;padding:10px 14px;border:1px solid #ddd;margin:5px;min-width:140px;vertical-align:top;}\n.it-metric-name{font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;color:#555;}\n.it-metric-value{font-size:1.6rem;font-weight:700;line-height:1.2;color:#111;}\n.it-metric-unit{font-size:0.85rem;font-weight:400;color:#666;margin-inline-start:2px;}\n.it-metric-target{font-size:0.78rem;color:#888;}\n.it-metric-trend{font-size:1rem;font-weight:700;margin-top:2px;}\n.it-metric-period{font-size:0.72rem;color:#888;}\n.it-metric-green{border-color:#4caf50;}\n.it-metric-green .it-metric-value{color:#2e7d32;}\n.it-metric-red{border-color:#c62828;}\n.it-metric-red .it-metric-value{color:#c62828;}\n.it-metric-neutral{border-color:#ddd;}\n/* Document total/line rows (invoice, receipt, statement) \u2014 matches the editor's\n itMetric node so editor-designed templates print identically. */\n.it-metric-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:5px 0;border-bottom:1px solid var(--it-color-border,#e5e7eb);}\n.it-metric-row__label{color:var(--it-color-muted,#555);}\n.it-metric-row__value{font-variant-numeric:tabular-nums;font-weight:600;color:var(--it-color-text,#111);white-space:nowrap;}\n.it-metric-row--total{border-bottom:none;border-top:2px solid var(--it-color-text,#333);margin-top:2px;padding-top:8px;font-size:1.05em;}\n.it-metric-row--total .it-metric-row__label{color:var(--it-color-text,#111);font-weight:600;}\n.it-amendment{margin:10px 0;padding:10px 14px;border:2px solid #e65100;background:#fff8e1;}\n.it-amendment-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;}\n.it-amendment-icon{font-size:1rem;}\n.it-amendment-ref{font-size:0.72rem;font-weight:700;padding:1px 6px;border:1px solid #e65100;color:#e65100;text-transform:uppercase;letter-spacing:0.04em;}\n.it-amendment-title{font-weight:600;color:#111;}\n.it-amendment-section{font-size:0.85rem;color:#555;font-style:italic;}\n.it-amendment-was{font-size:0.85rem;color:#c62828;text-decoration:line-through;}\n.it-amendment-now{font-size:0.85rem;color:#2e7d32;font-weight:500;}\n.it-amendment-meta{display:flex;gap:8px;margin-top:4px;font-size:0.8rem;color:#666;}\n.it-figure{margin:14px 0;}\n.it-figure img{display:block;margin:0 auto;border:1px solid #ddd;}\n.it-figure-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:6px;}\n.it-signline{margin:20px 0;padding:0;}\n.it-signline-label{font-size:0.72rem;color:#888;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:4px;}\n.it-signline-rule{border-bottom:1px solid #111;margin-bottom:4px;}\n.it-signline-name{font-size:0.9rem;font-weight:500;color:#111;}\n.it-signline-role{font-size:0.82rem;color:#555;}\n.it-signline-date{font-size:0.82rem;color:#555;margin-top:4px;}\n.it-contact{padding:8px 12px;border:1px solid #ddd;margin:5px 0;}\n.it-contact-name{font-weight:600;font-size:0.95rem;color:#111;}\n.it-contact-role{font-size:0.82rem;color:#555;}\n.it-contact-org{font-size:0.82rem;color:#555;}\n.it-contact-email a,.it-contact-phone a,.it-contact-url a{color:#111;text-decoration:underline;font-size:0.85rem;}\n.it-deadline{padding:8px 12px;border-inline-start:3px solid #4caf50;margin:5px 0;}\n.it-deadline-name{font-weight:600;color:#111;}\n.it-deadline-date{font-size:0.9rem;font-weight:600;color:#111;}\n.it-deadline-consequence{font-size:0.85rem;color:#555;font-style:italic;}\n.it-deadline-owner{font-size:0.82rem;color:#555;}\n.it-deadline-authority{font-size:0.82rem;color:#555;}\n.it-deadline-green{border-color:#4caf50;}\n.it-deadline-amber{border-color:#f57c00;}\n.it-deadline-red{border-color:#c62828;}\n";
@@ -6,14 +6,18 @@ exports.DOCUMENT_CSS = `
6
6
  .intent-document{font-family:Georgia,'Times New Roman',serif;line-height:1.7;color:#111;max-width:680px;margin:0 auto;padding:32px 24px;}
7
7
  /* ── Typography ────────────────────────────────────────── */
8
8
  .intent-title{font-size:1.75rem;line-height:1.2;margin:0 0 12px;font-weight:700;letter-spacing:-0.01em;}
9
- .intent-summary{margin:8px 0 20px;padding:8px 0 8px 14px;border-left:2px solid #999;color:#333;font-style:italic;font-size:0.95rem;}
9
+ .intent-summary{margin:8px 0 20px;padding-block:8px;padding-inline:0;padding-inline-start:14px;border-inline-start:2px solid #999;color:#333;font-style:italic;font-size:0.95rem;}
10
10
  .intent-section{margin:24px 0 8px;font-size:1.1rem;line-height:1.3;font-weight:600;padding-bottom:4px;border-bottom:1px solid #ccc;}
11
11
  .intent-sub{margin:16px 0 6px;font-size:1rem;line-height:1.3;font-weight:600;}
12
12
  .intent-note{margin:6px 0;color:#222;}
13
13
  .intent-prose{margin:0 0 1em;color:#222;font-size:1rem;line-height:1.8;max-width:65ch;text-wrap:pretty;}
14
14
  .intent-align-center{text-align:center;}
15
- .intent-align-right{text-align:right;}
15
+ .intent-align-right{text-align:end;}
16
16
  .intent-align-justify{text-align:justify;}
17
+ /* ── Two-sided rows (end:) — flex start/end, RTL-native ── */
18
+ .it-split{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
19
+ .it-split-main{min-width:0;}
20
+ .it-split-end{flex-shrink:0;}
17
21
  /* ── Divider ───────────────────────────────────────────── */
18
22
  .intent-divider{margin:18px 0;text-align:center;}
19
23
  .intent-divider-line{border:none;border-top:1px solid #ccc;margin:0;}
@@ -28,11 +32,11 @@ exports.DOCUMENT_CSS = `
28
32
  .intent-task-time::before{content:'at ';}
29
33
  .intent-task-text-done{text-decoration:line-through;color:#999;}
30
34
  /* ── Ask ───────────────────────────────────────────────── */
31
- .intent-ask{display:flex;gap:10px;margin:10px 0;padding:6px 0 6px 12px;border-left:2px solid #999;align-items:baseline;}
35
+ .intent-ask{display:flex;gap:10px;margin:10px 0;padding-block:6px;padding-inline:0;padding-inline-start:12px;border-inline-start:2px solid #999;align-items:baseline;}
32
36
  .intent-ask-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#555;flex-shrink:0;line-height:1.65;}
33
37
  .intent-ask-content{flex:1;color:#333;font-style:italic;}
34
38
  /* ── Quote ─────────────────────────────────────────────── */
35
- .intent-quote{margin:14px 0;padding:2px 0 2px 16px;border-left:2px solid #999;font-style:italic;color:#333;}
39
+ .intent-quote{margin:14px 0;padding-block:2px;padding-inline:0;padding-inline-start:16px;border-inline-start:2px solid #999;font-style:italic;color:#333;}
36
40
  .intent-quote p{margin:0;line-height:1.7;}
37
41
  .intent-quote-cite{display:block;margin-top:5px;font-style:normal;color:#888;font-size:0.82rem;}
38
42
  /* ── Code ──────────────────────────────────────────────── */
@@ -40,8 +44,8 @@ exports.DOCUMENT_CSS = `
40
44
  .intent-code code{font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:0.85rem;color:#111;}
41
45
  /* ── Table ─────────────────────────────────────────────── */
42
46
  .intent-table{width:100%;border-collapse:collapse;margin:12px 0;font-size:0.9em;}
43
- .intent-table th,.intent-table-th{padding:6px 10px;text-align:left;font-weight:600;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.04em;border-bottom:2px solid #333;}
44
- .intent-table td,.intent-table-td{padding:6px 10px;text-align:left;border-bottom:1px solid #ddd;vertical-align:top;}
47
+ .intent-table th,.intent-table-th{padding:6px 10px;text-align:start;font-weight:600;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.04em;border-bottom:2px solid #333;}
48
+ .intent-table td,.intent-table-td{padding:6px 10px;text-align:start;border-bottom:1px solid #ddd;vertical-align:top;}
45
49
  .intent-row:last-child .intent-table-td,.intent-row:last-child td{border-bottom:none;}
46
50
  /* ── Image ─────────────────────────────────────────────── */
47
51
  .intent-image{margin:12px 0;}
@@ -57,7 +61,7 @@ exports.DOCUMENT_CSS = `
57
61
  .intent-embed{margin:14px 0;}
58
62
  .intent-embed iframe,.intent-embed video,.intent-embed audio{display:block;width:100%;border:1px solid #ddd;}
59
63
  /* ── Callouts ──────────────────────────────────────────── */
60
- .intent-callout{display:flex;gap:10px;margin:10px 0;padding:6px 0 6px 12px;border-left:2px solid #888;align-items:baseline;}
64
+ .intent-callout{display:flex;gap:10px;margin:10px 0;padding-block:6px;padding-inline:0;padding-inline-start:12px;border-inline-start:2px solid #888;align-items:baseline;}
61
65
  .intent-callout-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;flex-shrink:0;white-space:nowrap;line-height:1.65;color:#444;}
62
66
  .intent-callout-content{flex:1;color:#222;}
63
67
  .intent-info{border-color:#888;}
@@ -115,12 +119,12 @@ li{margin:3px 0;color:#222;}
115
119
  .intent-checkpoint-flag{font-size:1rem;}
116
120
  .intent-checkpoint-label{flex-shrink:0;}
117
121
  .intent-checkpoint-line{flex:1;border:none;border-top:1px dashed #bbb;margin:0;}
118
- .intent-audit{margin:4px 0;padding:4px 8px;font-family:'SFMono-Regular',Consolas,monospace;font-size:0.8rem;color:#555;border-left:2px solid #bbb;}
122
+ .intent-audit{margin:4px 0;padding:4px 8px;font-family:'SFMono-Regular',Consolas,monospace;font-size:0.8rem;color:#555;border-inline-start:2px solid #bbb;}
119
123
  .intent-audit-prefix{color:#888;font-weight:600;}
120
124
  .intent-error-block{border-color:#999;}
121
125
  .intent-error-block .intent-callout-label{color:#333;}
122
- .intent-error-fallback{font-size:0.8rem;color:#555;font-style:italic;margin-left:6px;}
123
- .intent-error-notify{font-size:0.8rem;color:#555;margin-left:6px;}
126
+ .intent-error-fallback{font-size:0.8rem;color:#555;font-style:italic;margin-inline-start:6px;}
127
+ .intent-error-notify{font-size:0.8rem;color:#555;margin-inline-start:6px;}
124
128
  .intent-context-table{width:auto;border-collapse:collapse;margin:6px 0;font-size:0.85rem;}
125
129
  .intent-context-key{padding:3px 10px 3px 8px;font-weight:600;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}
126
130
  .intent-context-val{padding:3px 12px 3px 6px;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}
@@ -129,7 +133,7 @@ li{margin:3px 0;color:#222;}
129
133
  .intent-progress-label{font-size:0.85rem;color:#222;flex-shrink:0;}
130
134
  .intent-progress-bar{flex:1;height:6px;background:#ddd;overflow:hidden;}
131
135
  .intent-progress-fill{height:100%;background:#555;}
132
- .intent-progress-pct{font-size:0.78rem;color:#555;font-weight:600;min-width:36px;text-align:right;}
136
+ .intent-progress-pct{font-size:0.78rem;color:#555;font-weight:600;min-width:36px;text-align:end;}
133
137
  .intent-file-ref{display:flex;align-items:center;gap:6px;margin:4px 0;padding:4px 8px;border:1px dashed #ccc;font-size:0.82rem;color:#555;font-family:monospace;}
134
138
  .intent-file-ref-icon{font-size:0.9rem;}
135
139
  /* ── v2.1 Agentic Workflow Blocks ──────────────────────── */
@@ -152,7 +156,7 @@ li{margin:3px 0;color:#222;}
152
156
  .intent-handoff-content{flex:1;font-weight:500;}
153
157
  .intent-handoff-arrow{display:flex;align-items:center;gap:5px;font-size:0.82rem;color:#444;font-weight:600;}
154
158
  .intent-handoff-agent{padding:1px 5px;border:1px solid #bbb;font-family:monospace;font-size:0.78rem;}
155
- .intent-wait{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;border-left:2px solid #999;}
159
+ .intent-wait{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;border-inline-start:2px solid #999;}
156
160
  .intent-wait-icon{font-size:1rem;animation:intent-pulse 2s ease-in-out infinite;}
157
161
  .intent-wait-content{flex:1;font-weight:500;color:#333;}
158
162
  .intent-wait-meta{display:flex;gap:5px;align-items:center;}
@@ -192,7 +196,7 @@ li{margin:3px 0;color:#222;}
192
196
  .it-byline-meta{display:block;font-size:0.85em;color:#666;margin-top:2px;}
193
197
  .it-epigraph{font-style:italic;text-align:center;margin:20px 3em;border:none;padding:0;}
194
198
  .it-epigraph p{margin:0;}
195
- .it-epigraph .it-epigraph-by{display:block;text-align:right;font-size:0.9em;margin-top:4px;font-style:normal;color:#666;}
199
+ .it-epigraph .it-epigraph-by{display:block;text-align:end;font-size:0.9em;margin-top:4px;font-style:normal;color:#666;}
196
200
  .it-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:3px;margin-bottom:10px;}
197
201
  .it-dedication{font-style:italic;text-align:center;margin:3em auto;}
198
202
  .it-toc{margin:20px 0;}
@@ -201,31 +205,36 @@ li{margin:3px 0;color:#222;}
201
205
  .it-toc li{margin:3px 0;}
202
206
  .it-toc li a{color:#111;text-decoration:none;border-bottom:1px dotted #bbb;}
203
207
  .it-toc li a:hover{border-bottom-style:solid;}
204
- .it-toc .it-toc-sub{padding-left:20px;font-size:0.92em;}
208
+ .it-toc .it-toc-sub{padding-inline-start:20px;font-size:0.92em;}
205
209
  .it-footnotes{border-top:1px solid #ccc;margin-top:24px;padding-top:8px;font-size:0.85em;color:#444;}
206
- .it-footnotes ol{padding-left:1.5em;margin:0;}
210
+ .it-footnotes ol{padding-inline-start:1.5em;margin:0;}
207
211
  .it-footnotes li{margin:3px 0;}
208
212
  sup.it-fn-ref{font-size:0.7em;vertical-align:super;}
209
213
  sup.it-fn-ref a{color:#111;text-decoration:none;border-bottom:1px solid #999;}
210
214
  /* ── v2.8 Document Trust ───────────────────────────────── */
211
- .it-approval{display:flex;gap:10px;margin:10px 0;padding:10px 14px;border:1px solid #4caf50;background:#f8fdf8;}
212
- .it-approval__icon{font-size:1.2rem;color:#4caf50;flex-shrink:0;}
213
- .it-approval__body{display:flex;flex-direction:column;gap:2px;}
214
- .it-approval__label{font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#4caf50;}
215
- .it-approval__who{font-size:0.9rem;color:#222;}
216
- .it-approval__date{font-size:0.8rem;color:#666;}
217
- .it-signature{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0;padding:10px 14px;border:1px solid #daa520;background:#fffdf5;}
218
- .it-signature--valid{border-color:#4caf50;background:#f8fdf8;}
219
- .it-signature--invalid{border-color:#c62828;background:#fdf5f5;}
215
+ /* Trust blocks are typeset like entries in a legal document — hairlines and
216
+ small-caps labels, no colored fills (ink-first; prints exactly as shown). */
217
+ .it-approval{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;margin:12px 0;padding:7px 2px;border-bottom:1px solid #ddd;}
218
+ .it-approval__icon{display:none;}
219
+ .it-approval__body{display:contents;}
220
+ .it-approval__label{font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:#2e7d32;flex-shrink:0;}
221
+ .it-approval__label::before{content:'✓ ';}
222
+ .it-approval__what{font-size:0.9rem;font-weight:600;color:#111;}
223
+ .it-approval__who{font-size:0.9rem;color:#555;}
224
+ .it-approval__date{font-size:0.8rem;color:#777;margin-inline-start:auto;font-variant-numeric:tabular-nums;}
225
+ .it-signature{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;margin:14px 0 10px;padding:7px 2px 5px;border-top:1px solid #111;}
226
+ .it-signature--valid{border-top-color:#111;}
227
+ .it-signature--invalid{border-top-color:#c62828;}
220
228
  .it-signature__name{font-weight:600;font-size:0.95rem;color:#111;}
221
229
  .it-signature__role{font-size:0.85rem;color:#555;}
222
- .it-signature__date{font-size:0.8rem;color:#666;}
223
- .it-signature__status{font-size:0.8rem;font-weight:600;margin-left:auto;}
224
- .it-sealed-banner{display:flex;gap:10px;align-items:center;margin:16px 0;padding:12px 16px;border:2px solid #c62828;background:#fdf5f5;font-weight:600;}
225
- .it-sealed-banner__icon{font-size:1.3rem;}
226
- .it-sealed-banner__text{font-size:1rem;color:#c62828;text-transform:uppercase;letter-spacing:0.04em;}
227
- .it-sealed-banner__date{font-size:0.8rem;color:#666;margin-left:auto;}
228
- .it-sealed-banner__hash{font-size:0.72rem;color:#888;font-family:monospace;}
230
+ .it-signature__date{font-size:0.8rem;color:#777;font-variant-numeric:tabular-nums;}
231
+ .it-signature__status{font-size:0.72rem;font-weight:600;margin-inline-start:auto;text-transform:uppercase;letter-spacing:0.08em;color:#2e7d32;}
232
+ .it-signature--invalid .it-signature__status{color:#c62828;}
233
+ .it-sealed-banner{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;margin:18px 0;padding:8px 2px;border-top:1px solid #111;border-bottom:1px solid #111;}
234
+ .it-sealed-banner__icon{display:none;}
235
+ .it-sealed-banner__text{font-size:0.78rem;font-weight:700;color:#111;text-transform:uppercase;letter-spacing:0.14em;}
236
+ .it-sealed-banner__date{font-size:0.8rem;color:#666;margin-inline-start:auto;font-variant-numeric:tabular-nums;}
237
+ .it-sealed-banner__hash{font-size:0.72rem;color:#999;font-family:'SFMono-Regular',Consolas,monospace;}
229
238
  /* ── v2.11 Keyword Expansion ──────────────────────────── */
230
239
  .it-ref-card{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}
231
240
  .it-ref-icon{font-size:1rem;flex-shrink:0;}
@@ -235,11 +244,11 @@ sup.it-fn-ref a{color:#111;text-decoration:none;border-bottom:1px solid #999;}
235
244
  .it-def{margin:6px 0;padding:4px 0;}
236
245
  .it-def-term{font-weight:700;font-size:0.95rem;color:#111;}
237
246
  .it-def-abbr{font-weight:400;color:#555;}
238
- .it-def-meaning{margin:2px 0 0 0;color:#333;font-size:0.92rem;padding-left:1em;}
247
+ .it-def-meaning{margin:2px 0 0 0;color:#333;font-size:0.92rem;padding-inline-start:1em;}
239
248
  .it-metric{display:inline-block;padding:10px 14px;border:1px solid #ddd;margin:5px;min-width:140px;vertical-align:top;}
240
249
  .it-metric-name{font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;color:#555;}
241
250
  .it-metric-value{font-size:1.6rem;font-weight:700;line-height:1.2;color:#111;}
242
- .it-metric-unit{font-size:0.85rem;font-weight:400;color:#666;margin-left:2px;}
251
+ .it-metric-unit{font-size:0.85rem;font-weight:400;color:#666;margin-inline-start:2px;}
243
252
  .it-metric-target{font-size:0.78rem;color:#888;}
244
253
  .it-metric-trend{font-size:1rem;font-weight:700;margin-top:2px;}
245
254
  .it-metric-period{font-size:0.72rem;color:#888;}
@@ -278,7 +287,7 @@ sup.it-fn-ref a{color:#111;text-decoration:none;border-bottom:1px solid #999;}
278
287
  .it-contact-role{font-size:0.82rem;color:#555;}
279
288
  .it-contact-org{font-size:0.82rem;color:#555;}
280
289
  .it-contact-email a,.it-contact-phone a,.it-contact-url a{color:#111;text-decoration:underline;font-size:0.85rem;}
281
- .it-deadline{padding:8px 12px;border-left:3px solid #4caf50;margin:5px 0;}
290
+ .it-deadline{padding:8px 12px;border-inline-start:3px solid #4caf50;margin:5px 0;}
282
291
  .it-deadline-name{font-weight:600;color:#111;}
283
292
  .it-deadline-date{font-size:0.9rem;font-weight:600;color:#111;}
284
293
  .it-deadline-consequence{font-size:0.85rem;color:#555;font-style:italic;}
package/dist/parser.js CHANGED
@@ -1413,6 +1413,17 @@ function parseIntentText(fileContent, options) {
1413
1413
  const titleBlock = blocks.find((b) => b.type === "title");
1414
1414
  const summaryBlock = blocks.find((b) => b.type === "summary");
1415
1415
  const hasArabic = blocks.some((b) => detectArabic(b.content));
1416
+ const dirOverride = (() => {
1417
+ const m = metaAccumulator?.dir;
1418
+ if (m === "rtl" || m === "ltr")
1419
+ return m;
1420
+ for (const b of blocks) {
1421
+ const d = b.properties?.dir;
1422
+ if (d === "rtl" || d === "ltr")
1423
+ return d;
1424
+ }
1425
+ return undefined;
1426
+ })();
1416
1427
  const allBlocks = blocks.flatMap(function collect(b) {
1417
1428
  return [b, ...(b.children ?? []).flatMap(collect)];
1418
1429
  });
@@ -1430,7 +1441,7 @@ function parseIntentText(fileContent, options) {
1430
1441
  const metadata = {
1431
1442
  title: titleBlock?.content,
1432
1443
  summary: summaryBlock?.content,
1433
- language: hasArabic ? "rtl" : "ltr",
1444
+ language: dirOverride ?? (hasArabic ? "rtl" : "ltr"),
1434
1445
  ...(agenticMetadata.agent != null && { agent: agenticMetadata.agent }),
1435
1446
  ...(agenticMetadata.model != null && { model: agenticMetadata.model }),
1436
1447
  ...(agenticMetadata.context != null && {
package/dist/renderer.js CHANGED
@@ -89,6 +89,9 @@ function formatTrustDate(isoStr) {
89
89
  const day = d.getUTCDate();
90
90
  const month = months[d.getUTCMonth()];
91
91
  const year = d.getUTCFullYear();
92
+ if (/^\d{4}-\d{2}-\d{2}$/.test(isoStr.trim())) {
93
+ return `${day} ${month} ${year}`;
94
+ }
92
95
  const hours = String(d.getUTCHours()).padStart(2, "0");
93
96
  const minutes = String(d.getUTCMinutes()).padStart(2, "0");
94
97
  return `${day} ${month} ${year}, ${hours}:${minutes} UTC`;
@@ -183,6 +186,16 @@ function getAlignmentClass(props) {
183
186
  return " intent-align-justify";
184
187
  return "";
185
188
  }
189
+ function splitEnd(content, props) {
190
+ const end = props.end;
191
+ if (end === undefined || end === "") {
192
+ return { inner: content, splitClass: "" };
193
+ }
194
+ return {
195
+ inner: `<span class="it-split-main">${content}</span><span class="it-split-end" dir="auto">${escapeHtml(String(end))}</span>`,
196
+ splitClass: " it-split",
197
+ };
198
+ }
186
199
  const STYLE_PROPERTIES = {
187
200
  color: "color",
188
201
  size: "font-size",
@@ -190,7 +203,10 @@ const STYLE_PROPERTIES = {
190
203
  weight: "font-weight",
191
204
  align: "text-align",
192
205
  bg: "background-color",
193
- indent: "padding-left",
206
+ indent: "padding-inline-start",
207
+ leading: "line-height",
208
+ "space-before": "margin-top",
209
+ "space-after": "margin-bottom",
194
210
  opacity: "opacity",
195
211
  italic: "font-style",
196
212
  border: "border",
@@ -285,15 +301,16 @@ function renderBlock(block) {
285
301
  const alignClass = getAlignmentClass(props);
286
302
  const inlineStyle = extractInlineStyles(props);
287
303
  const styleAttr = inlineStyle ? ` style="${inlineStyle}"` : "";
304
+ const { inner: splitContent, splitClass } = splitEnd(content, props);
288
305
  switch (block.type) {
289
306
  case "title":
290
- return `<h1 class="intent-title${alignClass}"${styleAttr}>${content}</h1>`;
307
+ return `<h1 class="intent-title${alignClass}${splitClass}"${styleAttr}>${splitContent}</h1>`;
291
308
  case "summary":
292
309
  return `<div class="intent-summary${alignClass}"${styleAttr}>${content}</div>`;
293
310
  case "section":
294
- return `<h2 id="${slugify(block.content)}" class="intent-section${alignClass}"${styleAttr}>${content}</h2>`;
311
+ return `<h2 id="${slugify(block.content)}" class="intent-section${alignClass}${splitClass}"${styleAttr}>${splitContent}</h2>`;
295
312
  case "sub":
296
- return `<h3 id="${slugify(block.content)}" class="intent-sub${alignClass}"${styleAttr}>${content}</h3>`;
313
+ return `<h3 id="${slugify(block.content)}" class="intent-sub${alignClass}${splitClass}"${styleAttr}>${splitContent}</h3>`;
297
314
  case "divider":
298
315
  const dividerStyle = props.style
299
316
  ? escapeHtml(String(props.style).replace(/[;{}"]/g, ""))
@@ -306,9 +323,9 @@ function renderBlock(block) {
306
323
  ${label}
307
324
  </div>`;
308
325
  case "text":
309
- return `<p class="intent-text${alignClass}"${styleAttr}>${content}</p>`;
326
+ return `<p class="intent-text${alignClass}${splitClass}"${styleAttr}>${splitContent}</p>`;
310
327
  case "body-text":
311
- return `<p class="intent-prose${alignClass}"${styleAttr}>${content}</p>`;
328
+ return `<p class="intent-prose${alignClass}${splitClass}"${styleAttr}>${splitContent}</p>`;
312
329
  case "info": {
313
330
  const CALLOUT_VARIANTS = {
314
331
  info: "Note",
@@ -332,9 +349,9 @@ function renderBlock(block) {
332
349
  <input class="intent-task-checkbox" type="checkbox"${isDone ? " checked" : ""} />
333
350
  <span class="intent-task-text${isDone ? " intent-task-text-done" : ""}">${content}</span>
334
351
  <span class="intent-task-meta">
335
- ${props.owner ? `<span class="intent-task-owner">${escapeHtml(String(props.owner))}</span>` : ""}
336
- ${props.due ? `<span class="intent-task-due">${escapeHtml(String(props.due))}</span>` : ""}
337
- ${props.time ? `<span class="intent-task-time">${escapeHtml(String(props.time))}</span>` : ""}
352
+ ${props.owner ? `<span class="intent-task-owner" dir="auto">${escapeHtml(String(props.owner))}</span>` : ""}
353
+ ${props.due ? `<span class="intent-task-due" dir="auto">${escapeHtml(String(props.due))}</span>` : ""}
354
+ ${props.time ? `<span class="intent-task-time" dir="auto">${escapeHtml(String(props.time))}</span>` : ""}
338
355
  </span>
339
356
  </div>`;
340
357
  }
@@ -423,12 +440,12 @@ function renderBlock(block) {
423
440
  const rows = block.table?.rows || [];
424
441
  const thead = headers
425
442
  ? `<thead><tr>${headers
426
- .map((h) => `<th class="intent-table-th">${escapeHtml(h)}</th>`)
443
+ .map((h) => `<th class="intent-table-th" dir="auto">${escapeHtml(h)}</th>`)
427
444
  .join("")}</tr></thead>`
428
445
  : "";
429
446
  const tbody = `<tbody>${rows
430
447
  .map((row) => `<tr class="intent-row">${row
431
- .map((c) => `<td class="intent-table-td">${escapeHtml(c)}</td>`)
448
+ .map((c) => `<td class="intent-table-td" dir="auto">${escapeHtml(c)}</td>`)
432
449
  .join("")}</tr>`)
433
450
  .join("")}</tbody>`;
434
451
  return `<table class="intent-table">${thead}${tbody}</table>`;
@@ -437,9 +454,9 @@ function renderBlock(block) {
437
454
  const listItemProps = block.properties || {};
438
455
  const listItemMeta = [
439
456
  listItemProps.owner &&
440
- `<span class="intent-task-owner">${escapeHtml(String(listItemProps.owner))}</span>`,
457
+ `<span class="intent-task-owner" dir="auto">${escapeHtml(String(listItemProps.owner))}</span>`,
441
458
  listItemProps.due &&
442
- `<span class="intent-task-due">${escapeHtml(String(listItemProps.due))}</span>`,
459
+ `<span class="intent-task-due" dir="auto">${escapeHtml(String(listItemProps.due))}</span>`,
443
460
  ]
444
461
  .filter(Boolean)
445
462
  .join(" ");
@@ -525,7 +542,7 @@ function renderBlock(block) {
525
542
  return `<div class="intent-context"><code>${content}</code></div>`;
526
543
  }
527
544
  const ctxRows = ctxEntries
528
- .map(([k, v]) => `<tr><td class="intent-context-key">${escapeHtml(k)}</td><td class="intent-context-val">${escapeHtml(String(v))}</td></tr>`)
545
+ .map(([k, v]) => `<tr><td class="intent-context-key" dir="auto">${escapeHtml(k)}</td><td class="intent-context-val" dir="auto">${escapeHtml(String(v))}</td></tr>`)
529
546
  .join("");
530
547
  return `<table class="intent-context-table"><tbody>${ctxRows}</tbody></table>`;
531
548
  }
@@ -797,12 +814,10 @@ function renderBlock(block) {
797
814
  const approveRole = props.role ? escapeHtml(String(props.role)) : "";
798
815
  const approveAt = props.at ? formatTrustDate(String(props.at)) : "";
799
816
  return `<div class="it-approval">
800
- <span class="it-approval__icon">✓</span>
801
- <div class="it-approval__body">
802
- <span class="it-approval__label">APPROVED</span>
803
- <span class="it-approval__who">${approveBy}${approveRole ? ` — ${approveRole}` : ""}</span>
804
- ${approveAt ? `<span class="it-approval__date">${approveAt}</span>` : ""}
805
- </div>
817
+ <span class="it-approval__label">Approved</span>
818
+ ${content ? `<span class="it-approval__what">${content}</span>` : ""}
819
+ <span class="it-approval__who">${approveBy}${approveRole ? `, ${approveRole}` : ""}</span>
820
+ ${approveAt ? `<span class="it-approval__date">${approveAt}</span>` : ""}
806
821
  </div>`;
807
822
  }
808
823
  case "sign": {
@@ -814,7 +829,7 @@ function renderBlock(block) {
814
829
  <span class="it-signature__name">${signerName}</span>
815
830
  ${signRole ? `<span class="it-signature__role">${signRole}</span>` : ""}
816
831
  ${signAt ? `<span class="it-signature__date">${signAt}</span>` : ""}
817
- <span class="it-signature__status">${signValid ? " Verified" : "❌ Invalid"}</span>
832
+ <span class="it-signature__status">${signValid ? "Signed · verified" : "Unverified"}</span>
818
833
  </div>`;
819
834
  }
820
835
  case "freeze": {
@@ -823,8 +838,7 @@ function renderBlock(block) {
823
838
  ? escapeHtml(String(props.hash)).slice(0, 20) + "..."
824
839
  : "";
825
840
  return `<div class="it-sealed-banner">
826
- <span class="it-sealed-banner__icon">🔒</span>
827
- <span class="it-sealed-banner__text">Sealed Document</span>
841
+ <span class="it-sealed-banner__text">Sealed document</span>
828
842
  ${freezeAt ? `<span class="it-sealed-banner__date">${freezeAt}</span>` : ""}
829
843
  ${freezeHash ? `<span class="it-sealed-banner__hash">${freezeHash}</span>` : ""}
830
844
  </div>`;
@@ -852,7 +866,7 @@ function renderBlock(block) {
852
866
  const valueText = [val, unit].filter(Boolean).join(" ");
853
867
  return `<div class="it-metric-row${isTotal ? " it-metric-row--total" : ""}">
854
868
  <span class="it-metric-row__label">${content}</span>
855
- <span class="it-metric-row__value">${valueText}</span>
869
+ <span class="it-metric-row__value" dir="auto">${valueText}</span>
856
870
  </div>`;
857
871
  }
858
872
  const trendIcon = trend === "up"
@@ -869,7 +883,7 @@ function renderBlock(block) {
869
883
  }
870
884
  return `<div class="it-metric ${colorClass}">
871
885
  <div class="it-metric-name">${content}</div>
872
- <div class="it-metric-value">${val}<span class="it-metric-unit">${unit}</span></div>
886
+ <div class="it-metric-value" dir="auto">${val}<span class="it-metric-unit">${unit}</span></div>
873
887
  ${target ? `<div class="it-metric-target">Target: ${escapeHtml(target)}</div>` : ""}
874
888
  ${trendIcon ? `<div class="it-metric-trend">${trendIcon}</div>` : ""}
875
889
  ${period ? `<div class="it-metric-period">${period}</div>` : ""}
@@ -943,8 +957,8 @@ function renderBlock(block) {
943
957
  <div class="it-contact-name">${content}</div>
944
958
  ${cRole ? `<div class="it-contact-role">${cRole}</div>` : ""}
945
959
  ${cOrg ? `<div class="it-contact-org">${cOrg}</div>` : ""}
946
- ${cEmail ? `<div class="it-contact-email"><a href="mailto:${escapeHtml(cEmail)}">${escapeHtml(cEmail)}</a></div>` : ""}
947
- ${cPhone ? `<div class="it-contact-phone"><a href="tel:${escapeHtml(cPhone)}">${escapeHtml(cPhone)}</a></div>` : ""}
960
+ ${cEmail ? `<div class="it-contact-email" dir="auto"><a href="mailto:${escapeHtml(cEmail)}">${escapeHtml(cEmail)}</a></div>` : ""}
961
+ ${cPhone ? `<div class="it-contact-phone" dir="auto"><a href="tel:${escapeHtml(cPhone)}">${escapeHtml(cPhone)}</a></div>` : ""}
948
962
  ${cUrl2 ? `<div class="it-contact-url"><a href="${escapeHtml(sanitizeUrl(cUrl2))}">${escapeHtml(cUrl2)}</a></div>` : ""}
949
963
  </div>`;
950
964
  }
@@ -970,7 +984,7 @@ function renderBlock(block) {
970
984
  }
971
985
  return `<div class="it-deadline ${dlColorClass}">
972
986
  <div class="it-deadline-name">${content}</div>
973
- ${dlDate ? `<div class="it-deadline-date">${escapeHtml(dlDate)}</div>` : ""}
987
+ ${dlDate ? `<div class="it-deadline-date" dir="auto">${escapeHtml(dlDate)}</div>` : ""}
974
988
  ${dlConsequence ? `<div class="it-deadline-consequence">${dlConsequence}</div>` : ""}
975
989
  ${dlOwner ? `<div class="it-deadline-owner">${dlOwner}</div>` : ""}
976
990
  ${dlAuthority ? `<div class="it-deadline-authority">${dlAuthority}</div>` : ""}
@@ -1236,7 +1250,7 @@ body.it-print h2{font-size:1.3em;margin-top:1.5em;}
1236
1250
  body.it-print h3{font-size:1.1em;}
1237
1251
  body.it-print p{margin:0 0 0.8em 0;orphans:3;widows:3;}
1238
1252
  body.it-print table{width:100%;border-collapse:collapse;margin:1em 0;}
1239
- body.it-print th{border-bottom:2px solid #000;padding:4pt 8pt;text-align:left;}
1253
+ body.it-print th{border-bottom:2px solid #000;padding:4pt 8pt;text-align:start;}
1240
1254
  body.it-print td{border-bottom:1px solid #ccc;padding:4pt 8pt;}
1241
1255
  /* Keep table rows whole across page breaks so they aren't clipped behind the
1242
1256
  running footer/header, and repeat the table header on every page. */
@@ -1246,20 +1260,20 @@ body.it-print tfoot{display:table-footer-group;}
1246
1260
  /* Sections may legitimately span pages; only avoid splitting their headings. */
1247
1261
  body.it-print section{break-inside:auto;}
1248
1262
  body.it-print h1,body.it-print h2,body.it-print h3{break-after:avoid;page-break-after:avoid;}
1249
- body.it-print .intent-callout{border-left:3pt solid #000;padding-left:10pt;margin:1em 0;}
1263
+ body.it-print .intent-callout{border-inline-start:3pt solid #000;padding-inline-start:10pt;margin:1em 0;}
1250
1264
  body.it-print .intent-quote{font-style:italic;margin:1em 2em;}
1251
1265
  body.it-print .it-byline{font-size:0.9em;color:#333;margin-bottom:1.5em;}
1252
1266
  body.it-print .it-byline .it-byline-author{font-weight:bold;display:block;}
1253
1267
  body.it-print .it-byline .it-byline-meta{font-size:0.85em;color:#666;}
1254
1268
  body.it-print .it-epigraph{font-style:italic;text-align:center;margin:2em 3em;border:none;padding:0;}
1255
- body.it-print .it-epigraph .it-epigraph-by{display:block;text-align:right;font-size:0.9em;margin-top:0.5em;}
1269
+ body.it-print .it-epigraph .it-epigraph-by{display:block;text-align:end;font-size:0.9em;margin-top:0.5em;}
1256
1270
  body.it-print .it-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:0.3em;margin-bottom:1em;}
1257
1271
  body.it-print .it-dedication{font-style:italic;text-align:center;margin:4em auto;page-break-after:always;}
1258
1272
  body.it-print .it-toc{margin:2em 0;}
1259
1273
  body.it-print .it-toc ol{list-style:none;padding:0;}
1260
1274
  body.it-print .it-toc li{margin:0.3em 0;}
1261
1275
  body.it-print .it-footnotes{border-top:1pt solid #ccc;margin-top:2em;padding-top:0.5em;font-size:0.85em;}
1262
- body.it-print .it-footnotes ol{padding-left:1.5em;margin:0;}
1276
+ body.it-print .it-footnotes ol{padding-inline-start:1.5em;margin:0;}
1263
1277
  body.it-print .it-footnotes li{margin:0.3em 0;}
1264
1278
  body.it-print sup.it-fn-ref{font-size:0.7em;vertical-align:super;}
1265
1279
  body.it-print .it-page-break{page-break-after:always;break-after:page;height:0;}
@@ -1270,7 +1284,7 @@ body.it-print .intent-task-done::before{content:"\\2611 ";}
1270
1284
  body.it-print .it-ref-card{border:none;padding:0;margin:0.5em 0;font-style:italic;}
1271
1285
  body.it-print .it-def{margin:0.3em 0;}
1272
1286
  body.it-print .it-def-term{font-weight:bold;}
1273
- body.it-print .it-def-meaning{padding-left:1.5em;}
1287
+ body.it-print .it-def-meaning{padding-inline-start:1.5em;}
1274
1288
  body.it-print .it-metric{border:1pt solid #ccc;padding:6pt 10pt;display:inline-block;min-width:100pt;margin:4pt;vertical-align:top;}
1275
1289
  body.it-print .it-amendment{border:2pt solid #000;padding:8pt 12pt;margin:1em 0;}
1276
1290
  body.it-print .it-amendment-ref{border:1pt solid #000;color:#000;}
@@ -1280,7 +1294,7 @@ body.it-print .it-figure-caption{font-size:0.85em;font-style:italic;text-align:c
1280
1294
  body.it-print .it-signline{display:inline-block;width:45%;margin:2em 2%;vertical-align:top;}
1281
1295
  body.it-print .it-signline-rule{border-bottom:1pt solid #000;margin-bottom:4pt;}
1282
1296
  body.it-print .it-contact{border:none;padding:0;margin:0.3em 0;}
1283
- body.it-print .it-deadline{border-left:3pt solid #000;padding-left:8pt;margin:0.5em 0;}
1297
+ body.it-print .it-deadline{border-inline-start:3pt solid #000;padding-inline-start:8pt;margin:0.5em 0;}
1284
1298
  body.it-print .it-deadline-date{font-weight:bold;text-decoration:underline;}
1285
1299
  </style></head><body class="${bodyClass}"><div class="intent-document">${watermarkHtml}${html}</div></body></html>`;
1286
1300
  }
@@ -37,15 +37,15 @@
37
37
  "margin-top": "2em"
38
38
  },
39
39
  "warning": {
40
- "border-left": "4px solid",
40
+ "border-inline-start": "4px solid",
41
41
  "border-color": "trust-warning",
42
- "padding-left": "1em",
42
+ "padding-inline-start": "1em",
43
43
  "background": "#fef2f2"
44
44
  },
45
45
  "quote": {
46
- "border-left": "3px solid",
46
+ "border-inline-start": "3px solid",
47
47
  "border-color": "accent",
48
- "padding-left": "1em",
48
+ "padding-inline-start": "1em",
49
49
  "font-style": "italic",
50
50
  "color": "muted"
51
51
  },
@@ -42,15 +42,15 @@
42
42
  "border-radius": "4px"
43
43
  },
44
44
  "warning": {
45
- "border-left": "4px solid",
45
+ "border-inline-start": "4px solid",
46
46
  "border-color": "trust-warning",
47
- "padding-left": "1em",
47
+ "padding-inline-start": "1em",
48
48
  "background": "#1f1010"
49
49
  },
50
50
  "quote": {
51
- "border-left": "3px solid",
51
+ "border-inline-start": "3px solid",
52
52
  "border-color": "accent",
53
- "padding-left": "1em",
53
+ "padding-inline-start": "1em",
54
54
  "font-style": "italic",
55
55
  "color": "muted"
56
56
  }
@@ -38,9 +38,9 @@
38
38
  "border-bottom": true
39
39
  },
40
40
  "quote": {
41
- "border-left": "4px solid",
41
+ "border-inline-start": "4px solid",
42
42
  "border-color": "accent",
43
- "padding-left": "1em",
43
+ "padding-inline-start": "1em",
44
44
  "font-size": "1.15em",
45
45
  "font-style": "italic"
46
46
  }
@@ -36,7 +36,7 @@
36
36
  "margin-top": "2.5em"
37
37
  },
38
38
  "quote": {
39
- "padding-left": "1em",
39
+ "padding-inline-start": "1em",
40
40
  "font-style": "italic",
41
41
  "color": "muted"
42
42
  }
@@ -37,12 +37,12 @@
37
37
  "border-bottom": true
38
38
  },
39
39
  "quote": {
40
- "padding-left": "1em",
40
+ "padding-inline-start": "1em",
41
41
  "font-style": "italic"
42
42
  },
43
43
  "warning": {
44
- "border-left": "3px solid #000",
45
- "padding-left": "1em"
44
+ "border-inline-start": "3px solid #000",
45
+ "padding-inline-start": "1em"
46
46
  }
47
47
  },
48
48
  "print": {
@@ -44,9 +44,9 @@
44
44
  "border-color": "border"
45
45
  },
46
46
  "warning": {
47
- "border-left": "4px solid",
47
+ "border-inline-start": "4px solid",
48
48
  "border-color": "trust-warning",
49
- "padding-left": "1em",
49
+ "padding-inline-start": "1em",
50
50
  "background": "#fef2f2"
51
51
  }
52
52
  },
@@ -37,9 +37,9 @@
37
37
  "margin-top": "2em"
38
38
  },
39
39
  "quote": {
40
- "border-left": "3px solid",
40
+ "border-inline-start": "3px solid",
41
41
  "border-color": "accent",
42
- "padding-left": "1.2em",
42
+ "padding-inline-start": "1.2em",
43
43
  "font-style": "italic",
44
44
  "color": "muted"
45
45
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotit/core",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "description": "IntentText Parser, HTML Renderer, and Converters",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",