blob: cdd84b31bff9fa9c6270aafcd81554cb34c60e79 [file] [log] [blame]
Simon Huntd5b96732016-07-08 13:22:27 -07001/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Simon Huntd5b96732016-07-08 13:22:27 -070017/*
18 ONOS GUI -- Topology View (theme) -- CSS file
19 */
20
21/* --- Base SVG Layer --- */
22
23#ov-topo2 svg {
Steven Burrowsec1f45c2016-08-08 16:14:41 +010024 background-color: #f4f4f4;
Simon Huntd5b96732016-07-08 13:22:27 -070025}
26
27/* --- "No Devices" Layer --- */
28
29#ov-topo2 svg .noDevsBird {
30 fill: #db7773;
31}
32
Simon Hunt95f4b422017-03-03 13:49:05 -080033#ov-topo2 svg #topo2-noDevsLayer text {
Simon Huntd5b96732016-07-08 13:22:27 -070034 fill: #7e9aa8;
35}
36
Simon Hunt6e6e80b2017-04-03 12:03:41 -070037/* --- Breadcrumbs --- */
38
39.light #breadcrumbs {
40 background: #f5f5f5;
41 border-bottom: 1px solid #c7c7c0;
42}
43
44.light #breadcrumbs .breadcrumb:after {
45 color: #353535;
46}
47
48.light #breadcrumbs .breadcrumb:last-child a {
49 color: #757575;
50}
51
52
Simon Huntd5b96732016-07-08 13:22:27 -070053/* --- Topo Map --- */
54
Simon Hunt95f4b422017-03-03 13:49:05 -080055#ov-topo2 svg #topo2-map {
Simon Huntd5b96732016-07-08 13:22:27 -070056 stroke-width: 2px;
57 stroke: #f4f4f4;
58 fill: #e5e5e6;
59}
60
Simon Hunt95f4b422017-03-03 13:49:05 -080061/* --- general topo2-panel styling --- */
Steven Burrowsec1f45c2016-08-08 16:14:41 +010062
Simon Hunt95f4b422017-03-03 13:49:05 -080063.topo2-p h2 {
64 display: inline-block;
65 padding: 6px;
Steven Burrowsec1f45c2016-08-08 16:14:41 +010066}
67
Simon Hunt95f4b422017-03-03 13:49:05 -080068.topo2-p svg {
69 background: #c0242b;
70 width: 28px;
71 height: 28px;
72}
73
74.topo2-p svg .glyph {
Steven Burrowsec1f45c2016-08-08 16:14:41 +010075 fill: #ffffff;
76}
77
Simon Hunt95f4b422017-03-03 13:49:05 -080078.topo2-p hr {
Steven Burrowsec1f45c2016-08-08 16:14:41 +010079 background-color: #cccccc;
80}
81
Steven Burrows7a9d04e2016-09-26 17:05:37 -070082#topo2-p-detail svg {
Steven Burrowsec1f45c2016-08-08 16:14:41 +010083 background: none;
84}
85
Steven Burrows7a9d04e2016-09-26 17:05:37 -070086#topo2-p-detail .header svg .glyph {
Steven Burrowsec1f45c2016-08-08 16:14:41 +010087 fill: #c0242b;
88}
89
90
91/* --- Topo Instance Panel --- */
92
Steven Burrows7a9d04e2016-09-26 17:05:37 -070093#topo2-p-instance svg rect {
Steven Burrowsec1f45c2016-08-08 16:14:41 +010094 stroke-width: 0;
95 fill: #fbfbfb;
96}
97
98/* body of an instance */
Steven Burrows7a9d04e2016-09-26 17:05:37 -070099#topo2-p-instance .online svg rect {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100100 opacity: 1;
101 fill: #fbfbfb;
102}
103
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700104#topo2-p-instance svg .glyph {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100105 fill: #fff;
106}
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700107#topo2-p-instance .online svg .glyph {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100108 fill: #fff;
109}
110
111
112/* offline */
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700113#topo2-p-instance svg .badgeIcon {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100114 opacity: 0.4;
115 fill: #939598;
116}
117
118/* online */
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700119#topo2-p-instance .online svg .badgeIcon {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100120 opacity: 1.0;
121 fill: #939598;
122}
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700123#topo2-p-instance .online svg .badgeIcon.bird {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100124 fill: #ffffff;
125}
126
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700127#topo2-p-instance svg .readyBadge {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100128 visibility: hidden;
129}
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700130#topo2-p-instance .ready svg .readyBadge {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100131 visibility: visible;
132}
133
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700134#topo2-p-instance svg text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100135 text-anchor: left;
136 opacity: 0.5;
137 fill: #3c3a3a;
138}
139
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700140#topo2-p-instance .online svg text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100141 opacity: 1.0;
142 fill: #3c3a3a;
143}
144
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700145#topo2-p-instance .onosInst.mastership {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100146 opacity: 0.3;
147}
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700148#topo2-p-instance .onosInst.mastership.affinity {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100149 opacity: 1.0;
150}
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700151#topo2-p-instance .onosInst.mastership.affinity svg rect {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100152 filter: url(#blue-glow);
153}
154
Steven Burrows7a9d04e2016-09-26 17:05:37 -0700155.firefox #topo2-p-instance .onosInst.mastership.affinity svg rect {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100156 filter: url("data:image/svg+xml;utf8, <svg xmlns = \'http://www.w3.org/2000/svg\'><filter x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\" id=\"blue-glow\"><feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7 0 0 0 1 0 \"></feColorMatrix><feGaussianBlur stdDeviation=\"3\" result=\"coloredBlur\"></feGaussianBlur><feMerge><feMergeNode in=\"coloredBlur\"></feMergeNode><feMergeNode in=\"SourceGraphic\"></feMergeNode></feMerge></filter></svg>#blue-glow");
157}
158
159/* --- Topo Nodes --- */
160
161#ov-topo2 svg .suppressed {
162 opacity: 0.5 !important;
163}
164
165#ov-topo2 svg .suppressedmax {
166 opacity: 0.2 !important;
167}
168
169/* Device Nodes */
170
171/* note: device without the 'online' class is offline */
172#ov-topo2 svg .node.device rect {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100173 fill: #f0f0f0;
174}
175#ov-topo2 svg .node.device text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100176 fill: #bbb;
177}
178#ov-topo2 svg .node.device use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100179 fill: #777;
180}
181
182
183#ov-topo2 svg .node.device.online rect {
184 fill: #ffffff;
185}
186#ov-topo2 svg .node.device.online text {
187 fill: #3c3a3a;
188}
189#ov-topo2 svg .node.device.online use {
190 /* NOTE: this gets overridden programatically */
191 fill: #454545;
192}
193
Steven Burrows6deb4ce2016-08-26 16:06:23 +0100194#ov-topo2 svg .node.sub-region rect {
195 fill: #ffffff;
196}
197
Simon Huntb3656d42017-04-07 18:15:35 -0700198#ov-topo2 svg .node.sub-region text {
Simon Huntb3656d42017-04-07 18:15:35 -0700199}
200
Steven Burrows6deb4ce2016-08-26 16:06:23 +0100201#ov-topo2 svg .node.sub-region use {
202 /* NOTE: this gets overridden programatically */
203 fill: #454545;
204}
205
Steven Burrows68d6f952017-03-10 13:53:35 +0000206#ov-topo2 svg .node.peer-region rect {
207 fill: #ffffff;
208}
209
Steven Burrows86af4352016-11-16 18:19:12 -0600210#ov-topo2 svg .node.selected .node-container {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100211 stroke-width: 2.0;
212 stroke: #009fdb;
213}
214
Steven Burrowsb11a8b82017-03-10 16:00:31 +0000215#ov-topo2 svg .node.hovered .node-container {
216 stroke-width: 2.0;
217 stroke: #454545;
218}
219
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100220/* Badges */
221/* (... works for bothand dark themes...) */
222#ov-topo2 svg .node .badge circle {
223 stroke: #aaa;
224}
225
226#ov-topo2 svg .node .badge.badgeInfo circle {
227 fill: #99d;
228}
229
230#ov-topo2 svg .node .badge.badgeWarn circle {
231 fill: #da2;
232}
233
234#ov-topo2 svg .node .badge.badgeError circle {
235 fill: #e44;
236}
237
238#ov-topo2 svg .node .badge use {
239 fill: white !important;
240}
241
242#ov-topo2 svg .node .badge.badgeInfo use {
243 fill: #448;
244}
245
246#ov-topo2 svg .node .badge text {
247 fill: white !important;
248}
249
250#ov-topo2 svg .node .badge.badgeInfo text {
251 fill: #448;
252}
253
254/* Host Nodes */
255
256#ov-topo2 svg .node.host {
257}
258
259#ov-topo2 svg .node.host text {
260 stroke: none;
261 font: 9pt sans-serif;
262 fill: #846;
263}
264
265#ov-topo2 svg .node.host circle {
266 stroke: #a3a596;
267 fill: #e0dfd6;
268}
269#ov-topo2 svg .node.host.selected .hostIcon > circle {
270 stroke-width: 2.0;
271 stroke: #009fdb;
272}
273
274#ov-topo2 svg .node.host use {
275 fill: #3c3a3a;
276}
277
278/* --- Topo Links --- */
279
280#ov-topo2 svg .link {
281 opacity: .9;
282}
283
284#ov-topo2 svg .link.selected,
285#ov-topo2 svg .link.enhanced {
286 stroke-width: 3.5;
287 stroke: #009fdb;
288}
289
290#ov-topo2 svg .link.inactive {
291 opacity: .5;
Steven Burrows583f4be2016-11-04 14:06:50 +0100292 stroke-dasharray: 4 2;
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100293}
294/* TODO: Review for not-permitted links */
295#ov-topo2 svg .link.not-permitted {
296 stroke: rgb(255,0,0);
297 stroke-width: 5.0;
298 stroke-dasharray: 8 4;
299}
300
301#ov-topo2 svg .link.secondary {
302 stroke-width: 3px;
303 stroke: rgba(0,153,51,0.5);
304}
305
306/* Port traffic color visualization for Kbps, Mbps, and Gbps */
307
308#ov-topo2 svg .link.secondary.port-traffic-Kbps {
309 stroke: rgb(0,153,51);
310 stroke-width: 5.0;
311}
312
313#ov-topo2 svg .link.secondary.port-traffic-Mbps {
314 stroke: rgb(128,145,27);
315 stroke-width: 6.5;
316}
317
318#ov-topo2 svg .link.secondary.port-traffic-Gbps {
319 stroke: rgb(255, 137, 3);
320 stroke-width: 8.0;
321}
322
323#ov-topo2 svg .link.secondary.port-traffic-Gbps-choked {
324 stroke: rgb(183, 30, 21);
325 stroke-width: 8.0;
326}
327
328
329
330#ov-topo2 svg .link.animated {
331 stroke-dasharray: 8 5;
332 animation: ants 5s infinite linear;
333 /* below line could be added via Javascript, based on path, if we cared
334 * enough about the direction of ant-flow
335 */
336 /*animation-direction: reverse;*/
337}
338@keyframes ants {
339 from {
340 stroke-dashoffset: 0;
341 }
342 to {
343 stroke-dashoffset: 400;
344 }
345}
346
347#ov-topo2 svg .link.primary {
348 stroke-width: 4px;
349 stroke: #ffA300;
350}
351
352#ov-topo2 svg .link.secondary.optical {
353 stroke-width: 4px;
354 stroke: rgba(128,64,255,0.5);
355}
356
357#ov-topo2 svg .link.primary.optical {
358 stroke-width: 6px;
359 stroke: #74f;
360}
361
362/* Link Labels */
363#ov-topo2 svg .linkLabel rect {
364 stroke: none;
365 fill: #ffffff;
366}
367
368#ov-topo2 svg .linkLabel text {
369 fill: #444;
370}
371
372/* Port Labels */
373
374#ov-topo2 svg .portLabel rect {
375 stroke: #a3a596;
376 fill: #ffffff;
377}
378
379#ov-topo2 svg .portLabel text {
380 fill: #444;
381}
382
383/* Number of Links Labels */
384
385
386#ov-topo2 text.numLinkText {
387 fill: #444;
388}
389
390/* ------------------------------------------------- */
391/* Sprite Layer */
392
Simon Hunt95f4b422017-03-03 13:49:05 -0800393#ov-topo2 svg #topo2-sprites .gold1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100394 stroke: #fda;
395 fill: none;
396}
Simon Hunt95f4b422017-03-03 13:49:05 -0800397#ov-topo2 svg #topo2-sprites .gold1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100398 fill: #eda;
399}
400
Simon Hunt95f4b422017-03-03 13:49:05 -0800401#ov-topo2 svg #topo2-sprites .blue1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100402 stroke: #bbd;
403 fill: none;
404}
Simon Hunt95f4b422017-03-03 13:49:05 -0800405#ov-topo2 svg #topo2-sprites .blue1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100406 fill: #cce;
407}
408
Simon Hunt95f4b422017-03-03 13:49:05 -0800409#ov-topo2 svg #topo2-sprites .gray1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100410 stroke: #ccc;
411 fill: none;
412}
Simon Hunt95f4b422017-03-03 13:49:05 -0800413#ov-topo2 svg #topo2-sprites .gray1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100414 fill: #ddd;
415}
416
417/* fills */
Simon Hunt95f4b422017-03-03 13:49:05 -0800418#ov-topo2 svg #topo2-sprites use.fill-gray2 {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100419 fill: #eee;
420}
421
Simon Hunt95f4b422017-03-03 13:49:05 -0800422#ov-topo2 svg #topo2-sprites use.fill-blue2 {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100423 fill: #bce;
424}
Simon Hunt6e6e80b2017-04-03 12:03:41 -0700425
426
427/* ==================================================================== */
428/* From here are the DARK theme styles - mirroring the above styles */
429/* ==================================================================== */
430
431/* --- Base SVG Layer --- */
432
433.dark #ov-topo2 svg {
434 background-color: #152439;
435}
436
437/* --- "No Devices" Layer --- */
438
439.dark #ov-topo2 svg .noDevsBird {
440 fill: #8f4848;
441}
442
443.dark #ov-topo2 svg #topo-noDevsLayer text {
444 fill: #445461;
445}
446
447/* --- Breadcrumbs --- */
448
449.dark #breadcrumbs {
450 background: #142235;
451 border-bottom: 1px solid #111111;
452}
453
454.dark #breadcrumbs span {
455 color: #777778;
456}
457
458.dark #breadcrumbs .breadcrumb:after {
459 color: #555555;
460}
461
462.dark #breadcrumbs .breadcrumb:last-child a {
463 color: #d0d0d0;
464}
465
466/* --- Topo Map --- */
467
468.dark #ov-topo2 svg #topo2-map {
469 stroke-width: 2px;
470 stroke: #37404d;
471 fill: #212c3a;
472}
473
474/* --- general topo-panel styling --- */
475
476.dark .topo2-p {
477 background-color: #2f313c;
478 color: #c2c2b7;
479}
480.dark .topo2-p svg {
481 background: #8e1e24;
482}
483
484.dark .topo2-p svg .glyph {
485 fill: #c2c2b7;
486}
487
488.dark .topo2-p hr {
489 background-color: #616876;
490}
491
492.dark .topo2-p div.actionBtn svg use.glyph {
493 fill: #5a7f96;
494}
495
496.dark #topo2-p-detail .header svg .glyph {
497 fill: #91292f;
498}
499
500.dark #toolbar-topo2-toolbar .tbar-row.right {
501 color: #666;
502}
503
504/* --- Topo Instance Panel --- */
505
506.dark #topo2-p-instance {
507 background-color: #2f313c;
508 color: #c2c2b7;
509 border: 1px solid #364144;
510
511}
512
513.dark #topo2-p-instance svg rect {
514 stroke-width: 0;
515 fill: #525660;
516}
517
518/* body of an instance */
519.dark #topo2-p-instance .online svg rect {
520 opacity: 1;
521 fill: #838992;
522}
523
524.dark #topo2-p-instance svg .glyph {
525 fill: #ddd;
526}
527.dark #topo2-p-instance .online svg .glyph {
528 fill: #fff;
529}
530.dark #topo2-p-instance .online svg .glyph.overlay {
531 fill: #c7c7c7;
532}
533
534/* offline */
535.dark #topo2-p-instance svg .badgeIcon {
536 opacity: 0.4;
537 fill: #939598;
538}
539
540/* online */
541.dark #topo2-p-instance .online svg .badgeIcon {
542 opacity: 1.0;
543 fill: #939598;
544}
545.dark #topo2-p-instance .online svg .badgeIcon.bird {
546 fill: #ffffff;
547}
548
549.dark #topo2-p-instance svg text {
550 text-anchor: left;
551 opacity: 0.5;
552 fill: #aaa;
553}
554
555.dark #topo2-p-instance .online svg text {
556 opacity: 1.0;
557 fill: #fff;
558}
559
560.dark #topo2-p-instance .onosInst.mastership {
561 opacity: 0.3;
562}
563.dark #topo2-p-instance .onosInst.mastership.affinity {
564 opacity: 1.0;
565}
566.dark #topo2-p-instance .onosInst.mastership.affinity svg rect {
567 filter: url(#blue-glow);
568}
569
570.dark.firefox #topo2-p-instance .onosInst.mastership.affinity svg rect {
571 filter: url("data:image/svg+xml;utf8, <svg xmlns = \'http://www.w3.org/2000/svg\'><filter x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\" id=\"blue-glow\"><feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7 0 0 0 1 0 \"></feColorMatrix><feGaussianBlur stdDeviation=\"3\" result=\"coloredBlur\"></feGaussianBlur><feMerge><feMergeNode in=\"coloredBlur\"></feMergeNode><feMergeNode in=\"SourceGraphic\"></feMergeNode></feMerge></filter></svg>#blue-glow");
572}
573
574/* --- Topo Nodes --- */
575
576/* Device Nodes */
577
578/* note: device without the 'online' class is offline */
579.dark #ov-topo2 svg .node.device rect {
580 fill: #707070;
581}
582.dark #ov-topo2 svg .node.device text {
583 fill: #444;
584}
585.dark #ov-topo2 svg .node.device use {
586 fill: #eee;
587}
588
589.dark #ov-topo2 svg .node.device.online rect {
590 fill: #525660;
591}
592.dark #ov-topo2 svg .node.device.online text {
593 fill: #fff;
594}
595.dark #ov-topo2 svg .node.device.online use {
596 fill: #fff;
597}
598
599.dark #ov-topo2 svg .node.device.selected rect {
600 stroke-width: 2.0;
601 stroke: #009fdb;
602}
603
604.dark #ov-topo2 svg .node.sub-region rect {
605 fill: #525660;
606}
607
Simon Huntb3656d42017-04-07 18:15:35 -0700608.dark #ov-topo2 svg .node.sub-region text {
Simon Huntb3656d42017-04-07 18:15:35 -0700609}
610
Simon Hunt6e6e80b2017-04-03 12:03:41 -0700611.dark #ov-topo2 svg .node.sub-region use {
612 /* NOTE: this gets overridden programatically */
613 fill: #eeeeee;
614}
615
616.dark #ov-topo2 svg .node.peer-region rect {
617 fill: #525660;
618}
619
620/* Host Nodes */
621
622.dark #ov-topo2 svg .node.host {
623}
624
625.dark #ov-topo2 svg .node.host text {
626 stroke: none;
627 font: 9pt sans-serif;
628 fill: #ad5781;
629}
630
631.dark #ov-topo2 svg .node.host circle {
632 stroke: #a3a596;
633 fill: #8f8272;
634}
635.dark #ov-topo2 svg .node.host.selected .hostIcon > circle {
636 stroke-width: 2.0;
637 stroke: #009fdb;
638}
639
640.dark #ov-topo2 svg .node.host use {
641 fill: #000;
642}
643
644
645/* --- Topo Links --- */
646.dark #ov-topo2 svg .link.not-permitted {
647 stroke: rgb(255, 60, 60);
648}
649
650/* Port traffic color visualization for Kbps, Mbps, and Gbps */
651/* .. values good for both light and dark themes */
652
653/* Primary, Secondary (optical too) colors good for both themes */
654
655/* Link Labels */
656.dark #ov-topo svg .linkLabel rect {
657 fill: #555;
658}
659
660.dark #ov-topo svg .linkLabel text {
661 fill: #eee;
662}
663
664/* Port Labels */
665
666.dark #ov-topo svg .portLabel rect {
667 fill: #222;
668}
669
670.dark #ov-topo svg .portLabel text {
671 fill: #eee;
672}
673
674/* Number of Links Labels */
675
676.dark #ov-topo text.numLinkText {
677 fill: #eee;
678}
679
680
681/* Sprite Layer */
682
683.dark #ov-topo2 svg #topo2-sprites .gold1 use {
684 stroke: #541;
685}
686.dark #ov-topo2 svg #topo2-sprites .gold1 text {
687 fill: #543;
688}
689
690.dark #ov-topo2 svg #topo2-sprites .blue1 use {
691 stroke: #445;
692}
693.dark #ov-topo2 svg #topo2-sprites .blue1 text {
694 fill: #446;
695}
696
697.dark #ov-topo2 svg #topo2-sprites .gray1 use {
698 stroke: #333;
699}
700.dark #ov-topo2 svg #topo2-sprites .gray1 text {
701 fill: #444;
702}
703
704/* fills */
705.dark #ov-topo2 svg #topo2-sprites use.fill-gray2 {
706 fill: #444;
707}
708
709.dark #ov-topo2 svg #topo2-sprites use.fill-blue2 {
710 fill: #447;
711}