@use '@/theme/viewerDefs' as *; $timeline-height: 1rem; $group-band-height: 0.5rem; $group-band-gap: 0.25rem; $timeline-color: color-mix(in srgb, transparent 60%, var(--background-color-override, $viewer-background-color)); .timelineContainer { flex: 1; color: var(--color-override, $viewer-color); background: var(--background-color-override, $viewer-background-color); &.scroll { overflow-x: scroll; } } .timeline { position: relative; font-weight: 600; height: 100%; // reserve the top region (progress bar + gap + group band) with the card background box-shadow: inset 0 calc(#{$timeline-height} + #{$group-band-gap} + #{$group-band-height}) 0 0 var(--card-background-color-override, $viewer-card-bg-color); } .groupBand { height: $group-band-height; margin-top: $group-band-gap; width: 100%; background: var(--group-colour, transparent); display: flex; align-items: center; position: relative; z-index: 2; overflow: visible; } .column { display: flex; flex-direction: column; position: absolute; border-left: 1px solid var(--background-color-override, $viewer-background-color); height: 100%; } .maybeInline { display: flex; align-items: center; gap: 0.5em; flex-wrap: wrap; } // generate combined timeline .timelineBlock { height: $timeline-height; background: $timeline-color; width: 100%; &[data-status='done'] { background: $active-red; } &[data-status='live'] { background: linear-gradient(to right, $active-red var(--progress, 0%), $timeline-color var(--progress, 0%)); } } .smallArea { .content { gap: 0rem; writing-mode: vertical-rl; align-items: start; justify-content: center; } .maybeInline { flex-wrap: nowrap; gap: 0.25rem; overflow: hidden; justify-content: center; } .timeOverview { opacity: 0; } } .hide { // hide text elements & > div { display: none; } } .content { flex: 1; display: flex; flex-direction: column; gap: 1rem; padding-top: 0.25rem; padding-inline-start: 0.25rem; overflow: hidden; line-height: 1rem; background-color: var(--lighter, var(--card-background-color-override, $viewer-card-bg-color)); border-bottom: 2px solid var(--background-color-override, $viewer-background-color); border-top: 2px solid var(--background-color-override, $viewer-background-color); box-shadow: 0 0.25rem 0 0 var(--color, $gray-300); white-space: normal; &[data-status='done'] { opacity: $opacity-disabled; } &[data-status='live'] { box-shadow: 0 0.25rem 0 0 $active-red; .status { padding: 0.125rem 0.25rem; border-radius: $component-border-radius-sm; background: $active-red; text-transform: uppercase; } } &[data-status='future'] { .status { padding: 0.125rem 0.25rem; border-radius: $component-border-radius-sm; background: $green-500; } } .status { width: fit-content; text-transform: uppercase; } .status.due { background: $orange-600; } } .title { min-width: 0; min-height: 0; overflow: hidden; word-break: break-word; overflow-wrap: anywhere; } .delay { color: $ontime-delay-text; } .timeOverview { padding-top: 0.25rem; padding-inline-start: 0.25em; height: 3rem; } .cross { text-decoration: line-through; text-decoration-thickness: 2px; text-decoration-color: $ontime-delay-text; } .separeLeft { border-left: 1px solid var(--color, $gray-300); }