blob: bb269309be29ca82b3e6ae5ed29d5c35552ff408 [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 {
199 stroke: #000000;
200}
201
Steven Burrows6deb4ce2016-08-26 16:06:23 +0100202#ov-topo2 svg .node.sub-region use {
203 /* NOTE: this gets overridden programatically */
204 fill: #454545;
205}
206
Steven Burrows68d6f952017-03-10 13:53:35 +0000207#ov-topo2 svg .node.peer-region rect {
208 fill: #ffffff;
209}
210
Steven Burrows86af4352016-11-16 18:19:12 -0600211#ov-topo2 svg .node.selected .node-container {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100212 stroke-width: 2.0;
213 stroke: #009fdb;
214}
215
Steven Burrowsb11a8b82017-03-10 16:00:31 +0000216#ov-topo2 svg .node.hovered .node-container {
217 stroke-width: 2.0;
218 stroke: #454545;
219}
220
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100221/* Badges */
222/* (... works for bothand dark themes...) */
223#ov-topo2 svg .node .badge circle {
224 stroke: #aaa;
225}
226
227#ov-topo2 svg .node .badge.badgeInfo circle {
228 fill: #99d;
229}
230
231#ov-topo2 svg .node .badge.badgeWarn circle {
232 fill: #da2;
233}
234
235#ov-topo2 svg .node .badge.badgeError circle {
236 fill: #e44;
237}
238
239#ov-topo2 svg .node .badge use {
240 fill: white !important;
241}
242
243#ov-topo2 svg .node .badge.badgeInfo use {
244 fill: #448;
245}
246
247#ov-topo2 svg .node .badge text {
248 fill: white !important;
249}
250
251#ov-topo2 svg .node .badge.badgeInfo text {
252 fill: #448;
253}
254
255/* Host Nodes */
256
257#ov-topo2 svg .node.host {
258}
259
260#ov-topo2 svg .node.host text {
261 stroke: none;
262 font: 9pt sans-serif;
263 fill: #846;
264}
265
266#ov-topo2 svg .node.host circle {
267 stroke: #a3a596;
268 fill: #e0dfd6;
269}
270#ov-topo2 svg .node.host.selected .hostIcon > circle {
271 stroke-width: 2.0;
272 stroke: #009fdb;
273}
274
275#ov-topo2 svg .node.host use {
276 fill: #3c3a3a;
277}
278
279/* --- Topo Links --- */
280
281#ov-topo2 svg .link {
282 opacity: .9;
283}
284
285#ov-topo2 svg .link.selected,
286#ov-topo2 svg .link.enhanced {
287 stroke-width: 3.5;
288 stroke: #009fdb;
289}
290
291#ov-topo2 svg .link.inactive {
292 opacity: .5;
Steven Burrows583f4be2016-11-04 14:06:50 +0100293 stroke-dasharray: 4 2;
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100294}
295/* TODO: Review for not-permitted links */
296#ov-topo2 svg .link.not-permitted {
297 stroke: rgb(255,0,0);
298 stroke-width: 5.0;
299 stroke-dasharray: 8 4;
300}
301
302#ov-topo2 svg .link.secondary {
303 stroke-width: 3px;
304 stroke: rgba(0,153,51,0.5);
305}
306
307/* Port traffic color visualization for Kbps, Mbps, and Gbps */
308
309#ov-topo2 svg .link.secondary.port-traffic-Kbps {
310 stroke: rgb(0,153,51);
311 stroke-width: 5.0;
312}
313
314#ov-topo2 svg .link.secondary.port-traffic-Mbps {
315 stroke: rgb(128,145,27);
316 stroke-width: 6.5;
317}
318
319#ov-topo2 svg .link.secondary.port-traffic-Gbps {
320 stroke: rgb(255, 137, 3);
321 stroke-width: 8.0;
322}
323
324#ov-topo2 svg .link.secondary.port-traffic-Gbps-choked {
325 stroke: rgb(183, 30, 21);
326 stroke-width: 8.0;
327}
328
329
330
331#ov-topo2 svg .link.animated {
332 stroke-dasharray: 8 5;
333 animation: ants 5s infinite linear;
334 /* below line could be added via Javascript, based on path, if we cared
335 * enough about the direction of ant-flow
336 */
337 /*animation-direction: reverse;*/
338}
339@keyframes ants {
340 from {
341 stroke-dashoffset: 0;
342 }
343 to {
344 stroke-dashoffset: 400;
345 }
346}
347
348#ov-topo2 svg .link.primary {
349 stroke-width: 4px;
350 stroke: #ffA300;
351}
352
353#ov-topo2 svg .link.secondary.optical {
354 stroke-width: 4px;
355 stroke: rgba(128,64,255,0.5);
356}
357
358#ov-topo2 svg .link.primary.optical {
359 stroke-width: 6px;
360 stroke: #74f;
361}
362
363/* Link Labels */
364#ov-topo2 svg .linkLabel rect {
365 stroke: none;
366 fill: #ffffff;
367}
368
369#ov-topo2 svg .linkLabel text {
370 fill: #444;
371}
372
373/* Port Labels */
374
375#ov-topo2 svg .portLabel rect {
376 stroke: #a3a596;
377 fill: #ffffff;
378}
379
380#ov-topo2 svg .portLabel text {
381 fill: #444;
382}
383
384/* Number of Links Labels */
385
386
387#ov-topo2 text.numLinkText {
388 fill: #444;
389}
390
391/* ------------------------------------------------- */
392/* Sprite Layer */
393
Simon Hunt95f4b422017-03-03 13:49:05 -0800394#ov-topo2 svg #topo2-sprites .gold1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100395 stroke: #fda;
396 fill: none;
397}
Simon Hunt95f4b422017-03-03 13:49:05 -0800398#ov-topo2 svg #topo2-sprites .gold1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100399 fill: #eda;
400}
401
Simon Hunt95f4b422017-03-03 13:49:05 -0800402#ov-topo2 svg #topo2-sprites .blue1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100403 stroke: #bbd;
404 fill: none;
405}
Simon Hunt95f4b422017-03-03 13:49:05 -0800406#ov-topo2 svg #topo2-sprites .blue1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100407 fill: #cce;
408}
409
Simon Hunt95f4b422017-03-03 13:49:05 -0800410#ov-topo2 svg #topo2-sprites .gray1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100411 stroke: #ccc;
412 fill: none;
413}
Simon Hunt95f4b422017-03-03 13:49:05 -0800414#ov-topo2 svg #topo2-sprites .gray1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100415 fill: #ddd;
416}
417
418/* fills */
Simon Hunt95f4b422017-03-03 13:49:05 -0800419#ov-topo2 svg #topo2-sprites use.fill-gray2 {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100420 fill: #eee;
421}
422
Simon Hunt95f4b422017-03-03 13:49:05 -0800423#ov-topo2 svg #topo2-sprites use.fill-blue2 {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100424 fill: #bce;
425}
Simon Hunt6e6e80b2017-04-03 12:03:41 -0700426
427
428/* ==================================================================== */
429/* From here are the DARK theme styles - mirroring the above styles */
430/* ==================================================================== */
431
432/* --- Base SVG Layer --- */
433
434.dark #ov-topo2 svg {
435 background-color: #152439;
436}
437
438/* --- "No Devices" Layer --- */
439
440.dark #ov-topo2 svg .noDevsBird {
441 fill: #8f4848;
442}
443
444.dark #ov-topo2 svg #topo-noDevsLayer text {
445 fill: #445461;
446}
447
448/* --- Breadcrumbs --- */
449
450.dark #breadcrumbs {
451 background: #142235;
452 border-bottom: 1px solid #111111;
453}
454
455.dark #breadcrumbs span {
456 color: #777778;
457}
458
459.dark #breadcrumbs .breadcrumb:after {
460 color: #555555;
461}
462
463.dark #breadcrumbs .breadcrumb:last-child a {
464 color: #d0d0d0;
465}
466
467/* --- Topo Map --- */
468
469.dark #ov-topo2 svg #topo2-map {
470 stroke-width: 2px;
471 stroke: #37404d;
472 fill: #212c3a;
473}
474
475/* --- general topo-panel styling --- */
476
477.dark .topo2-p {
478 background-color: #2f313c;
479 color: #c2c2b7;
480}
481.dark .topo2-p svg {
482 background: #8e1e24;
483}
484
485.dark .topo2-p svg .glyph {
486 fill: #c2c2b7;
487}
488
489.dark .topo2-p hr {
490 background-color: #616876;
491}
492
493.dark .topo2-p div.actionBtn svg use.glyph {
494 fill: #5a7f96;
495}
496
497.dark #topo2-p-detail .header svg .glyph {
498 fill: #91292f;
499}
500
501.dark #toolbar-topo2-toolbar .tbar-row.right {
502 color: #666;
503}
504
505/* --- Topo Instance Panel --- */
506
507.dark #topo2-p-instance {
508 background-color: #2f313c;
509 color: #c2c2b7;
510 border: 1px solid #364144;
511
512}
513
514.dark #topo2-p-instance svg rect {
515 stroke-width: 0;
516 fill: #525660;
517}
518
519/* body of an instance */
520.dark #topo2-p-instance .online svg rect {
521 opacity: 1;
522 fill: #838992;
523}
524
525.dark #topo2-p-instance svg .glyph {
526 fill: #ddd;
527}
528.dark #topo2-p-instance .online svg .glyph {
529 fill: #fff;
530}
531.dark #topo2-p-instance .online svg .glyph.overlay {
532 fill: #c7c7c7;
533}
534
535/* offline */
536.dark #topo2-p-instance svg .badgeIcon {
537 opacity: 0.4;
538 fill: #939598;
539}
540
541/* online */
542.dark #topo2-p-instance .online svg .badgeIcon {
543 opacity: 1.0;
544 fill: #939598;
545}
546.dark #topo2-p-instance .online svg .badgeIcon.bird {
547 fill: #ffffff;
548}
549
550.dark #topo2-p-instance svg text {
551 text-anchor: left;
552 opacity: 0.5;
553 fill: #aaa;
554}
555
556.dark #topo2-p-instance .online svg text {
557 opacity: 1.0;
558 fill: #fff;
559}
560
561.dark #topo2-p-instance .onosInst.mastership {
562 opacity: 0.3;
563}
564.dark #topo2-p-instance .onosInst.mastership.affinity {
565 opacity: 1.0;
566}
567.dark #topo2-p-instance .onosInst.mastership.affinity svg rect {
568 filter: url(#blue-glow);
569}
570
571.dark.firefox #topo2-p-instance .onosInst.mastership.affinity svg rect {
572 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");
573}
574
575/* --- Topo Nodes --- */
576
577/* Device Nodes */
578
579/* note: device without the 'online' class is offline */
580.dark #ov-topo2 svg .node.device rect {
581 fill: #707070;
582}
583.dark #ov-topo2 svg .node.device text {
584 fill: #444;
585}
586.dark #ov-topo2 svg .node.device use {
587 fill: #eee;
588}
589
590.dark #ov-topo2 svg .node.device.online rect {
591 fill: #525660;
592}
593.dark #ov-topo2 svg .node.device.online text {
594 fill: #fff;
595}
596.dark #ov-topo2 svg .node.device.online use {
597 fill: #fff;
598}
599
600.dark #ov-topo2 svg .node.device.selected rect {
601 stroke-width: 2.0;
602 stroke: #009fdb;
603}
604
605.dark #ov-topo2 svg .node.sub-region rect {
606 fill: #525660;
607}
608
Simon Huntb3656d42017-04-07 18:15:35 -0700609.dark #ov-topo2 svg .node.sub-region text {
610 stroke: #eeeeee;
611}
612
Simon Hunt6e6e80b2017-04-03 12:03:41 -0700613.dark #ov-topo2 svg .node.sub-region use {
614 /* NOTE: this gets overridden programatically */
615 fill: #eeeeee;
616}
617
618.dark #ov-topo2 svg .node.peer-region rect {
619 fill: #525660;
620}
621
622/* Host Nodes */
623
624.dark #ov-topo2 svg .node.host {
625}
626
627.dark #ov-topo2 svg .node.host text {
628 stroke: none;
629 font: 9pt sans-serif;
630 fill: #ad5781;
631}
632
633.dark #ov-topo2 svg .node.host circle {
634 stroke: #a3a596;
635 fill: #8f8272;
636}
637.dark #ov-topo2 svg .node.host.selected .hostIcon > circle {
638 stroke-width: 2.0;
639 stroke: #009fdb;
640}
641
642.dark #ov-topo2 svg .node.host use {
643 fill: #000;
644}
645
646
647/* --- Topo Links --- */
648.dark #ov-topo2 svg .link.not-permitted {
649 stroke: rgb(255, 60, 60);
650}
651
652/* Port traffic color visualization for Kbps, Mbps, and Gbps */
653/* .. values good for both light and dark themes */
654
655/* Primary, Secondary (optical too) colors good for both themes */
656
657/* Link Labels */
658.dark #ov-topo svg .linkLabel rect {
659 fill: #555;
660}
661
662.dark #ov-topo svg .linkLabel text {
663 fill: #eee;
664}
665
666/* Port Labels */
667
668.dark #ov-topo svg .portLabel rect {
669 fill: #222;
670}
671
672.dark #ov-topo svg .portLabel text {
673 fill: #eee;
674}
675
676/* Number of Links Labels */
677
678.dark #ov-topo text.numLinkText {
679 fill: #eee;
680}
681
682
683/* Sprite Layer */
684
685.dark #ov-topo2 svg #topo2-sprites .gold1 use {
686 stroke: #541;
687}
688.dark #ov-topo2 svg #topo2-sprites .gold1 text {
689 fill: #543;
690}
691
692.dark #ov-topo2 svg #topo2-sprites .blue1 use {
693 stroke: #445;
694}
695.dark #ov-topo2 svg #topo2-sprites .blue1 text {
696 fill: #446;
697}
698
699.dark #ov-topo2 svg #topo2-sprites .gray1 use {
700 stroke: #333;
701}
702.dark #ov-topo2 svg #topo2-sprites .gray1 text {
703 fill: #444;
704}
705
706/* fills */
707.dark #ov-topo2 svg #topo2-sprites use.fill-gray2 {
708 fill: #444;
709}
710
711.dark #ov-topo2 svg #topo2-sprites use.fill-blue2 {
712 fill: #447;
713}