/* SVG timeline positioning keeps marker coordinates reliable across preview and CSP modes. */
.timeline-svg{display:block;width:100%;min-width:650px;height:280px;overflow:visible;font-variant-numeric:tabular-nums}
.timeline-svg-axis{stroke:#6e8877;stroke-width:2}
.timeline-svg-arrow{fill:#6e8877}
.timeline-svg-tick{font-size:9px;fill:#8a9889;text-anchor:middle}
.timeline-svg-tick line{stroke:#b9c8b7;stroke-width:1}
.timeline-svg-tick:first-child{text-anchor:start}
.timeline-svg-tick:last-child{text-anchor:end}
.timeline-svg-label{stroke:none}
.top-svg-label{fill:#edf4ed}
.bottom-svg-label{fill:#faece7}
.timeline-svg-label-text{font-size:9px;font-weight:700;letter-spacing:.4px}
.top-svg-label-text{fill:#287563}
.bottom-svg-label-text{fill:#aa514d}
.timeline-svg-event{text-anchor:middle}
.timeline-svg-dot{fill:#e8f2e8;stroke:#2e7f6d;stroke-width:2;filter:drop-shadow(0 1px 1px #203e3722)}
.timeline-svg-event.bottom-lane .timeline-svg-dot{fill:#fae9e5;stroke:#c35d57}
.timeline-svg-event.scheduled .timeline-svg-dot{fill:#fff1db;stroke:#97641b;stroke-dasharray:3 2}
.timeline-svg-route{font-size:9px;font-weight:750;fill:#246b5b}
.timeline-svg-event.bottom-lane .timeline-svg-route{fill:#a64e4a}
.timeline-svg-event.scheduled .timeline-svg-route{fill:#97641b}
.timeline-svg-time{font-size:9px;fill:#6d7e6d}
.timeline-svg-event.scheduled .timeline-svg-time{fill:#9a702d}
.timeline-canvas{height:295px}
.timeline-svg{height:285px}
.timeline-svg-event.route-26 .timeline-svg-dot{fill:#e7f3ed;stroke:#2f8b73}
.timeline-svg-event.route-27 .timeline-svg-dot{fill:#e6f2ed;stroke:#3f987d}
.timeline-svg-event.route-42 .timeline-svg-dot{fill:#e5f1eb;stroke:#267d68}
.timeline-svg-event.route-29M .timeline-svg-dot{fill:#eaf5ef;stroke:#58a789}
.timeline-svg-event.route-26 .timeline-svg-route{fill:#287861}
.timeline-svg-event.route-27 .timeline-svg-route{fill:#347f69}
.timeline-svg-event.route-42 .timeline-svg-route{fill:#236d5a}
.timeline-svg-event.route-29M .timeline-svg-route{fill:#4c9277}
.timeline-svg-event.scheduled .timeline-svg-dot{fill:#fff1db;stroke:#97641b;stroke-dasharray:3 2}
.timeline-svg-event.scheduled .timeline-svg-route,.timeline-svg-event.scheduled .timeline-svg-time{fill:#97641b}
.timeline-svg-event.passed-king-tai .timeline-svg-dot{fill:#e7f0f8;stroke:#4e82ad;stroke-dasharray:none}
.timeline-svg-event.passed-king-tai .timeline-svg-route,.timeline-svg-event.passed-king-tai .timeline-svg-time{fill:#3f6f99}
.timeline-svg-event.top-lane:not(.passed-king-tai) .pak-hung-time{fill:#276d52}
.timeline-svg-event.passed-king-tai .pak-hung-time{fill:#3f6f99}
.timeline-arrow{fill:#6d756d}
.king-tai-time{fill:#b24f4f}
.timeline-svg-event.bottom-lane .pak-hung-time{fill:#b24f4f}
.hkust-time{fill:#2f815e}
.timeline-svg-event.top-lane:not(.passed-king-tai) .pak-hung-time,.timeline-svg-event.bottom-lane .pak-hung-time{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.connection-panel .timeline-svg-tick,.connection-panel .timeline-svg-route,.connection-panel .timeline-svg-time{font-size:calc(9px + 1pt)}
