@cyber-dash-tech/revela 0.18.15 → 0.18.16

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.
@@ -35,6 +35,27 @@ Inspired by Claude Monet's *Le Bassin aux Nymphéas* — mist, water, and soft l
35
35
  --shadow-soft: rgba(0, 55, 102, 0.18);
36
36
  --font-display: 'EB Garamond', 'Georgia', ui-serif, serif;
37
37
  --font-body: 'EB Garamond', 'Georgia', ui-serif, serif;
38
+ --grid-page-inset: 40px;
39
+ --grid-content-width: 1480px;
40
+ --grid-text-col: 480px;
41
+ --grid-image-col: 880px;
42
+ --grid-gutter: 40px;
43
+ --grid-safe-x: 80px;
44
+ --grid-safe-y: 72px;
45
+ --space-1: 8px;
46
+ --space-2: 16px;
47
+ --space-3: 24px;
48
+ --space-4: 32px;
49
+ --space-5: 48px;
50
+ --space-6: 72px;
51
+ --font-size-meta: 13px;
52
+ --font-size-body: 17px;
53
+ --font-size-body-strong: 20px;
54
+ --font-size-h3: 24px;
55
+ --font-size-h2: 36px;
56
+ --font-size-hero: 116px;
57
+ --surface-radius: 0px;
58
+ --surface-shadow: 0 24px 80px var(--shadow-soft);
38
59
  }
39
60
  ```
40
61
 
@@ -85,6 +106,14 @@ All sizes are fixed `px` for the 1920x1080 canvas. JS `transform: scale()` handl
85
106
  - Headings align to the text column, not to the full canvas.
86
107
  - Let images carry visual weight; text should remain narrow, calm, and readable.
87
108
 
109
+ Design contract:
110
+ - Grid: use `--grid-page-inset`, `--grid-content-width`, and editorial split ratios as the source of layout alignment; do not scatter content with unrelated absolute offsets.
111
+ - Safe area: image captions, source notes, page numbers, and brand marks stay inside `--grid-safe-x` / `--grid-safe-y` unless the `hero` component owns the full canvas.
112
+ - Spacing: use the `--space-*` rhythm for editorial gaps, plaques, captions, and component padding. Dense pages may tighten within the scale, but should not invent one-off spacing systems.
113
+ - Type scale: use fixed 1920x1080 type tokens and the Monet serif stack. Do not introduce viewport-relative text sizing or sans-serif fallbacks for deck body copy.
114
+ - Surfaces: panels remain paper-like and flat. Use tonal blocks, whitespace, and `--surface-shadow`; avoid default container outlines, glass, neon, blob, or dashboard-card treatments.
115
+ - Chart tokens: charts use Monet accents, quiet gridlines, transparent backgrounds, explicit axis text colors, and stable `echart-panel` containers.
116
+
88
117
  ### Image Treatment
89
118
 
90
119
  - Use impressionist-inspired photography: water surfaces, gardens, soft natural light, reflections, and botanical subjects.
@@ -884,7 +913,7 @@ Card/group primitive for one idea, case, evidence item, metric, objection, risk,
884
913
  ```
885
914
 
886
915
  ```css
887
- .box { height: 100%; min-height: 0; padding: 28px; border: 1px solid var(--line); background: rgba(255,255,255,0.46); display: flex; flex-direction: column; gap: 18px; overflow: hidden; }
916
+ .box { height: 100%; min-height: 0; padding: 28px; background: rgba(255,255,255,0.46); display: flex; flex-direction: column; gap: 18px; overflow: hidden; }
888
917
  .box--quiet { background: transparent; }
889
918
  .box--mist { background: rgba(240,244,247,0.72); }
890
919
  .box--dark { background: #0d1a24; --text-primary:#f0f4f7; --text-secondary:rgba(240,244,247,0.72); --text-muted:rgba(240,244,247,0.55); --line:rgba(240,244,247,0.16); }
@@ -2630,6 +2659,7 @@ A horizontal milestone timeline with a central axis line. Nodes sit on the axis;
2630
2659
 
2631
2660
  Rules:
2632
2661
  - Position nodes with `left: X%` inline style. For N nodes, space them at `(100/(N+1)) * k %` or manually distribute to reflect time proportions.
2662
+ - Treat `left: X%` as the milestone centreline. The label, tip dot, stem, and axis dot must remain centered on that same x-position; do not left-align the label block away from the marker.
2633
2663
  - Each node requires `--tjh-item-color` set inline (use any summit accent colour).
2634
2664
  - **`--up` DOM order**: label → tip-dot → stem → axis-dot (label at top, axis-dot at bottom touching axis).
2635
2665
  - **`--down` DOM order**: axis-dot → stem → tip-dot → label (axis-dot at top touching axis, label at bottom).
@@ -2718,19 +2748,20 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
2718
2748
  position: absolute;
2719
2749
  display: flex;
2720
2750
  align-items: center;
2751
+ min-width: 260px;
2721
2752
  height: 80px; /* vertical size of the clickable/hover zone */
2722
2753
  transform: translateY(-50%); /* center the row on the top: Y% point */
2723
2754
  }
2724
2755
 
2725
2756
  /* LEFT: row-reverse flips DOM order so axis-dot appears on the right (on the axis) */
2726
2757
  .tjv-item--left {
2727
- right: 50%;
2758
+ right: calc(50% - var(--tjv-node) / 2);
2728
2759
  flex-direction: row-reverse;
2729
2760
  }
2730
2761
 
2731
2762
  /* RIGHT: standard row; axis-dot appears on the left (on the axis) */
2732
2763
  .tjv-item--right {
2733
- left: 50%;
2764
+ left: calc(50% - var(--tjv-node) / 2);
2734
2765
  flex-direction: row;
2735
2766
  }
2736
2767
 
@@ -2746,13 +2777,9 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
2746
2777
  }
2747
2778
 
2748
2779
  /* LEFT: axis-dot is visually rightmost (row-reverse); push right to straddle axis */
2749
- .tjv-item--left .tjv-axis-dot {
2750
- margin-right: calc(-1 * var(--tjv-node) / 2);
2751
- }
2752
-
2753
- /* RIGHT: axis-dot is visually leftmost; push left to straddle axis */
2780
+ .tjv-item--left .tjv-axis-dot,
2754
2781
  .tjv-item--right .tjv-axis-dot {
2755
- margin-left: calc(-1 * var(--tjv-node) / 2);
2782
+ margin: 0;
2756
2783
  }
2757
2784
 
2758
2785
  /* Tip dot — small square at the stem end near the label */
@@ -2831,6 +2858,9 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
2831
2858
  Rules:
2832
2859
  - **DOM order is identical for left and right nodes**: `axis-dot → stem → tip-dot → label`. The visual direction is controlled by CSS (`row-reverse` for left, `row` for right) — never by changing the DOM order.
2833
2860
  - Position each node with `top: Y%` inline style. For N nodes, distribute evenly: `(100 / (N + 1)) * k %` or manually to reflect actual time proportions.
2861
+ - Treat `top: Y%` as the milestone row centre. The axis dot, stem, tip dot, and label row must stay vertically centered on that same y-position.
2862
+ - Anchor left/right rows at `calc(50% - var(--tjv-node) / 2)` rather than using negative margins on `.tjv-axis-dot`; this keeps the marker centered on the axis without creating export/QA overflow.
2863
+ - Give `.tjv-item` an explicit `min-width` large enough to include label + tip + stem + axis-dot, rather than relying on intrinsic content width.
2834
2864
  - Every node must set `--tjv-item-color` inline (use any Monet accent: `--accent-earth`, `--accent-gold`, `--accent-olive`, `--accent-sage`).
2835
2865
  - Alternate `--left` and `--right` across nodes for visual rhythm. Do not place consecutive same-side nodes unless intentional.
2836
2866
  - The parent container must have a defined height. Use `height: 100%` when inside a layout slot, or set an explicit `px` height when used standalone.