blob: a9ba89e04e5042193d5a3d3be1ff8328aecfde2e [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 {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100286 stroke: #009fdb;
287}
288
289#ov-topo2 svg .link.inactive {
290 opacity: .5;
Steven Burrows583f4be2016-11-04 14:06:50 +0100291 stroke-dasharray: 4 2;
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100292}
293/* TODO: Review for not-permitted links */
294#ov-topo2 svg .link.not-permitted {
295 stroke: rgb(255,0,0);
296 stroke-width: 5.0;
297 stroke-dasharray: 8 4;
298}
299
300#ov-topo2 svg .link.secondary {
301 stroke-width: 3px;
302 stroke: rgba(0,153,51,0.5);
303}
304
305/* Port traffic color visualization for Kbps, Mbps, and Gbps */
306
307#ov-topo2 svg .link.secondary.port-traffic-Kbps {
308 stroke: rgb(0,153,51);
309 stroke-width: 5.0;
310}
311
312#ov-topo2 svg .link.secondary.port-traffic-Mbps {
313 stroke: rgb(128,145,27);
314 stroke-width: 6.5;
315}
316
317#ov-topo2 svg .link.secondary.port-traffic-Gbps {
318 stroke: rgb(255, 137, 3);
319 stroke-width: 8.0;
320}
321
322#ov-topo2 svg .link.secondary.port-traffic-Gbps-choked {
323 stroke: rgb(183, 30, 21);
324 stroke-width: 8.0;
325}
326
327
328
329#ov-topo2 svg .link.animated {
330 stroke-dasharray: 8 5;
331 animation: ants 5s infinite linear;
332 /* below line could be added via Javascript, based on path, if we cared
333 * enough about the direction of ant-flow
334 */
335 /*animation-direction: reverse;*/
336}
337@keyframes ants {
338 from {
339 stroke-dashoffset: 0;
340 }
341 to {
342 stroke-dashoffset: 400;
343 }
344}
345
346#ov-topo2 svg .link.primary {
347 stroke-width: 4px;
348 stroke: #ffA300;
349}
350
351#ov-topo2 svg .link.secondary.optical {
352 stroke-width: 4px;
353 stroke: rgba(128,64,255,0.5);
354}
355
356#ov-topo2 svg .link.primary.optical {
357 stroke-width: 6px;
358 stroke: #74f;
359}
360
361/* Link Labels */
362#ov-topo2 svg .linkLabel rect {
363 stroke: none;
364 fill: #ffffff;
365}
366
367#ov-topo2 svg .linkLabel text {
368 fill: #444;
369}
370
371/* Port Labels */
372
373#ov-topo2 svg .portLabel rect {
374 stroke: #a3a596;
375 fill: #ffffff;
376}
377
378#ov-topo2 svg .portLabel text {
379 fill: #444;
380}
381
382/* Number of Links Labels */
383
384
385#ov-topo2 text.numLinkText {
386 fill: #444;
387}
388
389/* ------------------------------------------------- */
390/* Sprite Layer */
391
Simon Hunt95f4b422017-03-03 13:49:05 -0800392#ov-topo2 svg #topo2-sprites .gold1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100393 stroke: #fda;
394 fill: none;
395}
Simon Hunt95f4b422017-03-03 13:49:05 -0800396#ov-topo2 svg #topo2-sprites .gold1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100397 fill: #eda;
398}
399
Simon Hunt95f4b422017-03-03 13:49:05 -0800400#ov-topo2 svg #topo2-sprites .blue1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100401 stroke: #bbd;
402 fill: none;
403}
Simon Hunt95f4b422017-03-03 13:49:05 -0800404#ov-topo2 svg #topo2-sprites .blue1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100405 fill: #cce;
406}
407
Simon Hunt95f4b422017-03-03 13:49:05 -0800408#ov-topo2 svg #topo2-sprites .gray1 use {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100409 stroke: #ccc;
410 fill: none;
411}
Simon Hunt95f4b422017-03-03 13:49:05 -0800412#ov-topo2 svg #topo2-sprites .gray1 text {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100413 fill: #ddd;
414}
415
416/* fills */
Simon Hunt95f4b422017-03-03 13:49:05 -0800417#ov-topo2 svg #topo2-sprites use.fill-gray2 {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100418 fill: #eee;
419}
420
Simon Hunt95f4b422017-03-03 13:49:05 -0800421#ov-topo2 svg #topo2-sprites use.fill-blue2 {
Steven Burrowsec1f45c2016-08-08 16:14:41 +0100422 fill: #bce;
423}
Simon Hunt6e6e80b2017-04-03 12:03:41 -0700424
425
426/* ==================================================================== */
427/* From here are the DARK theme styles - mirroring the above styles */
428/* ==================================================================== */
429
430/* --- Base SVG Layer --- */
431
432.dark #ov-topo2 svg {
433 background-color: #152439;
434}
435
436/* --- "No Devices" Layer --- */
437
438.dark #ov-topo2 svg .noDevsBird {
439 fill: #8f4848;
440}
441
442.dark #ov-topo2 svg #topo-noDevsLayer text {
443 fill: #445461;
444}
445
446/* --- Breadcrumbs --- */
447
448.dark #breadcrumbs {
449 background: #142235;
450 border-bottom: 1px solid #111111;
451}
452
453.dark #breadcrumbs span {
454 color: #777778;
455}
456
457.dark #breadcrumbs .breadcrumb:after {
458 color: #555555;
459}
460
461.dark #breadcrumbs .breadcrumb:last-child a {
462 color: #d0d0d0;
463}
464
465/* --- Topo Map --- */
466
467.dark #ov-topo2 svg #topo2-map {
468 stroke-width: 2px;
469 stroke: #37404d;
470 fill: #212c3a;
471}
472
473/* --- general topo-panel styling --- */
474
475.dark .topo2-p {
476 background-color: #2f313c;
477 color: #c2c2b7;
478}
479.dark .topo2-p svg {
480 background: #8e1e24;
481}
482
483.dark .topo2-p svg .glyph {
484 fill: #c2c2b7;
485}
486
487.dark .topo2-p hr {
488 background-color: #616876;
489}
490
491.dark .topo2-p div.actionBtn svg use.glyph {
492 fill: #5a7f96;
493}
494
495.dark #topo2-p-detail .header svg .glyph {
496 fill: #91292f;
497}
498
499.dark #toolbar-topo2-toolbar .tbar-row.right {
500 color: #666;
501}
502
503/* --- Topo Instance Panel --- */
504
505.dark #topo2-p-instance {
506 background-color: #2f313c;
507 color: #c2c2b7;
508 border: 1px solid #364144;
509
510}
511
512.dark #topo2-p-instance svg rect {
513 stroke-width: 0;
514 fill: #525660;
515}
516
517/* body of an instance */
518.dark #topo2-p-instance .online svg rect {
519 opacity: 1;
520 fill: #838992;
521}
522
523.dark #topo2-p-instance svg .glyph {
524 fill: #ddd;
525}
526.dark #topo2-p-instance .online svg .glyph {
527 fill: #fff;
528}
529.dark #topo2-p-instance .online svg .glyph.overlay {
530 fill: #c7c7c7;
531}
532
533/* offline */
534.dark #topo2-p-instance svg .badgeIcon {
535 opacity: 0.4;
536 fill: #939598;
537}
538
539/* online */
540.dark #topo2-p-instance .online svg .badgeIcon {
541 opacity: 1.0;
542 fill: #939598;
543}
544.dark #topo2-p-instance .online svg .badgeIcon.bird {
545 fill: #ffffff;
546}
547
548.dark #topo2-p-instance svg text {
549 text-anchor: left;
550 opacity: 0.5;
551 fill: #aaa;
552}
553
554.dark #topo2-p-instance .online svg text {
555 opacity: 1.0;
556 fill: #fff;
557}
558
559.dark #topo2-p-instance .onosInst.mastership {
560 opacity: 0.3;
561}
562.dark #topo2-p-instance .onosInst.mastership.affinity {
563 opacity: 1.0;
564}
565.dark #topo2-p-instance .onosInst.mastership.affinity svg rect {
566 filter: url(#blue-glow);
567}
568
569.dark.firefox #topo2-p-instance .onosInst.mastership.affinity svg rect {
570 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");
571}
572
573/* --- Topo Nodes --- */
574
575/* Device Nodes */
576
577/* note: device without the 'online' class is offline */
578.dark #ov-topo2 svg .node.device rect {
579 fill: #707070;
580}
581.dark #ov-topo2 svg .node.device text {
582 fill: #444;
583}
584.dark #ov-topo2 svg .node.device use {
585 fill: #eee;
586}
587
588.dark #ov-topo2 svg .node.device.online rect {
589 fill: #525660;
590}
591.dark #ov-topo2 svg .node.device.online text {
592 fill: #fff;
593}
594.dark #ov-topo2 svg .node.device.online use {
595 fill: #fff;
596}
597
598.dark #ov-topo2 svg .node.device.selected rect {
599 stroke-width: 2.0;
600 stroke: #009fdb;
601}
602
603.dark #ov-topo2 svg .node.sub-region rect {
604 fill: #525660;
605}
606
Simon Huntb3656d42017-04-07 18:15:35 -0700607.dark #ov-topo2 svg .node.sub-region text {
Simon Huntb3656d42017-04-07 18:15:35 -0700608}
609
Simon Hunt6e6e80b2017-04-03 12:03:41 -0700610.dark #ov-topo2 svg .node.sub-region use {
611 /* NOTE: this gets overridden programatically */
612 fill: #eeeeee;
613}
614
615.dark #ov-topo2 svg .node.peer-region rect {
616 fill: #525660;
617}
618
619/* Host Nodes */
620
621.dark #ov-topo2 svg .node.host {
622}
623
624.dark #ov-topo2 svg .node.host text {
625 stroke: none;
626 font: 9pt sans-serif;
627 fill: #ad5781;
628}
629
630.dark #ov-topo2 svg .node.host circle {
631 stroke: #a3a596;
632 fill: #8f8272;
633}
634.dark #ov-topo2 svg .node.host.selected .hostIcon > circle {
635 stroke-width: 2.0;
636 stroke: #009fdb;
637}
638
639.dark #ov-topo2 svg .node.host use {
640 fill: #000;
641}
642
643
644/* --- Topo Links --- */
645.dark #ov-topo2 svg .link.not-permitted {
646 stroke: rgb(255, 60, 60);
647}
648
649/* Port traffic color visualization for Kbps, Mbps, and Gbps */
650/* .. values good for both light and dark themes */
651
652/* Primary, Secondary (optical too) colors good for both themes */
653
654/* Link Labels */
655.dark #ov-topo svg .linkLabel rect {
656 fill: #555;
657}
658
659.dark #ov-topo svg .linkLabel text {
660 fill: #eee;
661}
662
663/* Port Labels */
664
665.dark #ov-topo svg .portLabel rect {
666 fill: #222;
667}
668
669.dark #ov-topo svg .portLabel text {
670 fill: #eee;
671}
672
673/* Number of Links Labels */
674
675.dark #ov-topo text.numLinkText {
676 fill: #eee;
677}
678
679
680/* Sprite Layer */
681
682.dark #ov-topo2 svg #topo2-sprites .gold1 use {
683 stroke: #541;
684}
685.dark #ov-topo2 svg #topo2-sprites .gold1 text {
686 fill: #543;
687}
688
689.dark #ov-topo2 svg #topo2-sprites .blue1 use {
690 stroke: #445;
691}
692.dark #ov-topo2 svg #topo2-sprites .blue1 text {
693 fill: #446;
694}
695
696.dark #ov-topo2 svg #topo2-sprites .gray1 use {
697 stroke: #333;
698}
699.dark #ov-topo2 svg #topo2-sprites .gray1 text {
700 fill: #444;
701}
702
703/* fills */
704.dark #ov-topo2 svg #topo2-sprites use.fill-gray2 {
705 fill: #444;
706}
707
708.dark #ov-topo2 svg #topo2-sprites use.fill-blue2 {
709 fill: #447;
710}