diff --git a/resources/views/email.phtml b/resources/views/email.phtml index 3ef724d..acf48ba 100644 --- a/resources/views/email.phtml +++ b/resources/views/email.phtml @@ -465,12 +465,19 @@ $event_row = static function ( $parts = $date_parts($fact); + // The rail TD has padding-left:24 + border-left:4. Inline + // content therefore starts 26px right of the rail centre + // (with border-collapse:collapse the 4px border straddles the + // cell boundary, putting half its width into our cell). A + // 14px-wide dot wants margin-left = -(26 + 7) = -33 to land + // its centre on the rail. $dot_html = $show_dot ? '' - : ''; + . ';border-radius:50%;margin-left:-33px;margin-right:16px;' + . 'vertical-align:middle;box-shadow:0 0 0 4px ' . $palette['bg'] . ';">' + : ''; if ($show_dot) { $date_html = @@ -501,18 +508,27 @@ $card_open = ''; $card_close = '
'; -// Downward-pointing CSS triangle, coloured to match the rail, used as -// the closing arrow that visually caps each section's timeline. +// Closing arrow that visually caps each section's timeline. Inline +// SVG chevron with stroke-linecap:round so the line ends are blunted +// — matches the look of UI arrowheads rather than a filled triangle. +// margin-left mirrors the dot's offset so both elements sit on the +// same vertical axis. +$arrow_svg = '' + . '' + . ''; + $timeline_close_row = '' . '' . '' - . '' - . '' + . '' + . $arrow_svg + . '' . ''; ?>