.graph-grid-horizontal * {
    stroke-width: 1;
    fill: none;
    stroke: #909090;
    vector-effect: non-scaling-stroke;
}

.graph-grid-vertical * {
    stroke-width: 1;
    fill: none;
    stroke: #909090;
    vector-effect: non-scaling-stroke;
}

.graph-grid-vertical-minutes * {
    stroke-width: 0.2;
    opacity: 0.5;
}

.graph-stringlines {
}

.graph-stringline {
    stroke-width: 1.5;
    stroke-linejoin: round;  
    vector-effect: non-scaling-stroke; /* but doesn't work as CSS in Firefox */
    opacity: 0.8;
}

.graph-stringlines.deadhead, graph-animation .deadhead {
    stroke-dasharray: 2 2;
}

.graph-stringline.external-service, graph-animation .external-service {
    stroke-dasharray: 2 2;
    opacity: 0.6;
}

/* 90 seconds ahead of schedule stringline */
.graph-stringline-90-ahead {
    z-index: -90;
    fill-opacity: 0.06;
    stroke-width: 1;
    stroke-opacity: 0.3;
    stroke-dasharray: 2 2;
}
/* 120 seconds ahead of schedule stringline */
.graph-stringline-120-ahead {
    /* display: none; */
    z-index: -120;
    fill-opacity: 0.04;
    stroke-width: 1;
    stroke-opacity: 0.1;
    stroke-dasharray: 1 4;
}
/* 180 seconds ahead of schedule -- not used; too cluttered */
.graph-stringline-180-ahead {
    z-index: -180;
    fill-opacity: 0.03 /*0.10*/;
    stroke-width: 0.5;
    stroke-opacity: 0.1;
    stroke-dasharray: 1 5;
}
/* 300 seconds ahead of stringline -- not used; too cluttered */
.graph-stringline-300-ahead {
    /* display: none; */
    z-index: -300;
    fill-opacity: 0.07;
    stroke-width: 0.5;
    stroke-opacity: 0.1;
    stroke-dasharray: 1 6;
}


.graph-conflict {
    stroke: grey;
    stroke-width: 0.3;
    /* stroke-opacity: 0.5; */
    /* opacity: 0.1; */
}
.graph-conflict-90 {
    fill: #FFD479;     /* fill: #FF9300; */
}
.graph-conflict-120 {
    fill: #FFFF33;
}
.graph-conflict-180 {
    fill: #EEEEAA;
}
.graph-conflict-300 {
    fill: #EAEAEA;
}

.graph-animation {
}

.graph-animated {
    animation-timing-function: linear;
    animation-iteration-count: infinite;
}

.graph-animated-train {
    fill-opacity: 0.2;
    stroke-opacity: 0.7;
    stroke-width: 0.1;
    vector-effect: non-scaling-stroke;
    will-change: translate, opacity, visibility, stroke;
}

.graph-time-slider {
    fill-opacity: 0.5;
    fill: Yellow; /* LightGrey; */
    stroke: none;
}

.graph-animation-paused .graph-animated {
    animation-play-state: paused;
}
