deckrb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/README.md +63 -0
  2. data/bin/deck +59 -0
  3. data/deck/GPL-license.txt +278 -0
  4. data/deck/MIT-license.txt +21 -0
  5. data/deck/README.md +57 -0
  6. data/deck/core/deck.core.css +404 -0
  7. data/deck/core/deck.core.html +39 -0
  8. data/deck/core/deck.core.js +498 -0
  9. data/deck/core/deck.core.scss +447 -0
  10. data/deck/extensions/goto/deck.goto.css +41 -0
  11. data/deck/extensions/goto/deck.goto.html +7 -0
  12. data/deck/extensions/goto/deck.goto.js +134 -0
  13. data/deck/extensions/goto/deck.goto.scss +46 -0
  14. data/deck/extensions/hash/deck.hash.css +13 -0
  15. data/deck/extensions/hash/deck.hash.html +2 -0
  16. data/deck/extensions/hash/deck.hash.js +129 -0
  17. data/deck/extensions/hash/deck.hash.scss +15 -0
  18. data/deck/extensions/menu/deck.menu.css +47 -0
  19. data/deck/extensions/menu/deck.menu.js +187 -0
  20. data/deck/extensions/menu/deck.menu.scss +58 -0
  21. data/deck/extensions/navigation/deck.navigation.css +43 -0
  22. data/deck/extensions/navigation/deck.navigation.html +3 -0
  23. data/deck/extensions/navigation/deck.navigation.js +91 -0
  24. data/deck/extensions/navigation/deck.navigation.scss +56 -0
  25. data/deck/extensions/scale/deck.scale.css +16 -0
  26. data/deck/extensions/scale/deck.scale.js +155 -0
  27. data/deck/extensions/scale/deck.scale.scss +17 -0
  28. data/deck/extensions/status/deck.status.css +18 -0
  29. data/deck/extensions/status/deck.status.html +6 -0
  30. data/deck/extensions/status/deck.status.js +95 -0
  31. data/deck/extensions/status/deck.status.scss +22 -0
  32. data/deck/extensions/theme-picker/deck.theme-picker.css +55 -0
  33. data/deck/extensions/theme-picker/deck.theme-picker.js +13 -0
  34. data/deck/introduction/index.html +221 -0
  35. data/deck/introduction/index.rb +101 -0
  36. data/deck/jquery-1.7.min.js +4 -0
  37. data/deck/modernizr.custom.js +4 -0
  38. data/deck/test/fixtures/complex.html +24 -0
  39. data/deck/test/fixtures/empty.html +19 -0
  40. data/deck/test/fixtures/iframe_simple.html +10 -0
  41. data/deck/test/fixtures/iframes.html +32 -0
  42. data/deck/test/fixtures/nesteds.html +36 -0
  43. data/deck/test/fixtures/standard.html +42 -0
  44. data/deck/test/index.html +39 -0
  45. data/deck/test/lib/jasmine-html.js +190 -0
  46. data/deck/test/lib/jasmine-jquery.js +288 -0
  47. data/deck/test/lib/jasmine.css +166 -0
  48. data/deck/test/lib/jasmine.js +2477 -0
  49. data/deck/test/settings.js +3 -0
  50. data/deck/test/spec.core.js +434 -0
  51. data/deck/test/spec.goto.js +119 -0
  52. data/deck/test/spec.hash.js +81 -0
  53. data/deck/test/spec.menu.js +66 -0
  54. data/deck/test/spec.navigation.js +51 -0
  55. data/deck/test/spec.scale.js +57 -0
  56. data/deck/test/spec.status.js +58 -0
  57. data/deck/themes/style/neon.css +114 -0
  58. data/deck/themes/style/neon.scss +139 -0
  59. data/deck/themes/style/swiss.css +75 -0
  60. data/deck/themes/style/swiss.scss +91 -0
  61. data/deck/themes/style/web-2.0.css +205 -0
  62. data/deck/themes/style/web-2.0.scss +236 -0
  63. data/deck/themes/transition/fade.css +44 -0
  64. data/deck/themes/transition/fade.scss +70 -0
  65. data/deck/themes/transition/horizontal-slide.css +79 -0
  66. data/deck/themes/transition/horizontal-slide.scss +94 -0
  67. data/deck/themes/transition/vertical-slide.css +97 -0
  68. data/deck/themes/transition/vertical-slide.scss +116 -0
  69. data/lib/deck.rb +7 -0
  70. data/lib/deck/app.rb +16 -0
  71. data/lib/deck/deck.rb +166 -0
  72. data/lib/deck/rack_static_patch.rb +13 -0
  73. data/lib/deck/slide.rb +120 -0
  74. data/lib/deck/version.rb +3 -0
  75. data/spec/deck_spec.rb +98 -0
  76. data/spec/javascripts/support/jasmine_config.rb +23 -0
  77. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  78. data/spec/slide_spec.rb +285 -0
  79. data/spec/spec_helper.rb +7 -0
  80. metadata +172 -0
@@ -0,0 +1,81 @@
1
+ describe('Deck JS Hash Extension', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should assign ids to slides that do not have them', function() {
14
+ var slides = $.deck('getSlides');
15
+ $.each(slides, function(i, $e) {
16
+ expect($e.attr('id')).toBeTruthy();
17
+ });
18
+ });
19
+
20
+ it('should reassign ids on reinitialization', function() {
21
+ var $firstSlide = $.deck('getSlide', 0),
22
+ firstID = $firstSlide.attr('id');
23
+
24
+ $firstSlide.before('<div class="slide"></div>');
25
+ $.deck('.slide');
26
+ expect($firstSlide).not.toHaveId(firstID);
27
+ });
28
+
29
+ it('should update container with a state class including the slide id', function() {
30
+ var $c = $.deck('getContainer'),
31
+ osp = defaults.classes.onPrefix;
32
+
33
+ expect($c).toHaveClass(osp + $.deck('getSlide', 0).attr('id'));
34
+ $.deck('next');
35
+ expect($c).toHaveClass(osp + $.deck('getSlide', 1).attr('id'));
36
+ $.deck('next');
37
+ expect($c).not.toHaveClass(osp + $.deck('getSlide', 1).attr('id'));
38
+ expect($c).toHaveClass(osp + $.deck('getSlide', 2).attr('id'));
39
+ });
40
+
41
+ it('should update the href on slide change', function() {
42
+ var $hashLink = $(defaults.selectors.hashLink);
43
+ $.deck('go', 3);
44
+ expect($hashLink).toHaveAttr('href', '#slide-3');
45
+ });
46
+
47
+ it('should use existing ids if they exist', function() {
48
+ var $hashLink = $(defaults.selectors.hashLink);
49
+ $.deck('go', 1);
50
+ expect($hashLink).toHaveAttr('href', '#custom-id');
51
+ });
52
+
53
+ it('should update the URL on slide change (if supported)', function() {
54
+ if (Modernizr.history) {
55
+ $.deck('go', 3);
56
+ expect(window.location.hash).toEqual('#slide-3');
57
+ }
58
+ });
59
+
60
+ it('should deep link to slide on deck init', function() {
61
+ window.location.hash = "#slide-3";
62
+ $.deck('.slide');
63
+ expect($.deck('getSlide')).toHaveId('slide-3');
64
+ });
65
+
66
+ it('should follow internal hash links using hashchange (if supported)', function() {
67
+ if (Modernizr.hashchange) {
68
+ window.location.hash = "#slide-3";
69
+
70
+ // Hashchange event doesn't fire right when the hash changes?
71
+ waitsFor(function() {
72
+ return $.deck('getSlide').attr('id') === 'slide-3';
73
+ }, 'hash to change to slide-3', 2000);
74
+ }
75
+ });
76
+
77
+ it('should follow internal hash links on click', function() {
78
+ /* Triggered clicks dont generate hashchanges, so until I find
79
+ a way to do this in an automated fashion, needs to be hand tested. */
80
+ });
81
+ });
@@ -0,0 +1,66 @@
1
+ describe('Deck JS Menu', function() {
2
+ var $d = $(document),
3
+ dsc = defaults.selectors.container;
4
+
5
+ beforeEach(function() {
6
+ loadFixtures('standard.html');
7
+ if (Modernizr.history) {
8
+ history.replaceState({}, "", "#")
9
+ }
10
+ else {
11
+ window.location.hash = '#';
12
+ }
13
+ $.deck('.slide');
14
+ });
15
+
16
+ describe('showMenu()', function() {
17
+ it('should show the menu', function() {
18
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
19
+ $.deck('showMenu');
20
+ expect($(dsc)).toHaveClass(defaults.classes.menu);
21
+ });
22
+
23
+ it('should do nothing if menu is already showing', function() {
24
+ if (Modernizr.csstransforms) {
25
+ $.deck('showMenu');
26
+ $.deck('showMenu');
27
+ $.deck('hideMenu');
28
+ expect($('.slide').attr('style')).toBeFalsy();
29
+ }
30
+ });
31
+ });
32
+
33
+ describe('hideMenu()', function() {
34
+ it('should hide the menu', function() {
35
+ $.deck('showMenu');
36
+ $.deck('hideMenu');
37
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
38
+ });
39
+ });
40
+
41
+ describe('toggleMenu()', function() {
42
+ it('should toggle menu on and off', function() {
43
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
44
+ $.deck('toggleMenu');
45
+ expect($(dsc)).toHaveClass(defaults.classes.menu);
46
+ $.deck('toggleMenu');
47
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
48
+ });
49
+ });
50
+
51
+ describe('key bindings', function() {
52
+ var e;
53
+
54
+ beforeEach(function() {
55
+ e = jQuery.Event('keydown.deckmenu');
56
+ });
57
+
58
+ it('should toggle the menu if the specified key is pressed', function() {
59
+ e.which = 77; // m
60
+ $d.trigger(e);
61
+ expect($(dsc)).toHaveClass(defaults.classes.menu);
62
+ $d.trigger(e);
63
+ expect($(dsc)).not.toHaveClass(defaults.classes.menu);
64
+ });
65
+ });
66
+ });
@@ -0,0 +1,51 @@
1
+ describe('Deck JS Navigation Buttons', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should go to the next slide if next link is clicked', function() {
14
+ $(defaults.selectors.nextLink).click();
15
+ expect($.deck('getSlide')).toHaveClass('slide2');
16
+ });
17
+
18
+ it('should go to the previous slide if previous link is clicked', function() {
19
+ $.deck('go', 2);
20
+ $(defaults.selectors.previousLink).click();
21
+ expect($.deck('getSlide')).toHaveClass('slide2');
22
+ });
23
+
24
+ it('should add the disabled class to the previous link if on first slide', function() {
25
+ expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled);
26
+ $(defaults.selectors.nextLink).click();
27
+ expect($(defaults.selectors.previousLink)).not.toHaveClass(defaults.classes.navDisabled);
28
+ $(defaults.selectors.previousLink).click();
29
+ expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled);
30
+ });
31
+
32
+ it('should add the disabled class to the next link if on last slide', function() {
33
+ expect($(defaults.selectors.nextLink)).not.toHaveClass(defaults.classes.navDisabled);
34
+ $.deck('go', $.deck('getSlides').length - 1);
35
+ expect($(defaults.selectors.nextLink)).toHaveClass(defaults.classes.navDisabled);
36
+ });
37
+
38
+ it('should not start disabled if deck initialized in the middle', function() {
39
+ $.deck('go', 2);
40
+ $.deck('.slide');
41
+ expect($(defaults.selectors.previousLink)).not.toHaveClass(defaults.classes.navDisabled);
42
+ });
43
+
44
+ it('should update the links hrefs with real fragment ids', function() {
45
+ expect($(defaults.selectors.previousLink)).toHaveAttr('href', '#');
46
+ expect($(defaults.selectors.nextLink)).toHaveAttr('href', '#custom-id');
47
+ $.deck('go', 2);
48
+ expect($(defaults.selectors.previousLink)).toHaveAttr('href', '#custom-id');
49
+ expect($(defaults.selectors.nextLink)).toHaveAttr('href', '#slide-3');
50
+ });
51
+ });
@@ -0,0 +1,57 @@
1
+ describe('Deck JS Status Indicator', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should start with scaling enabled', function() {
14
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
15
+ });
16
+
17
+ describe('disableScale()', function() {
18
+ it('should remove the scale class from the container', function() {
19
+ $.deck('disableScale');
20
+ expect($.deck('getContainer')).not.toHaveClass(defaults.classes.scale);
21
+ });
22
+ });
23
+
24
+ describe('enableScale()', function() {
25
+ it('should add the scale class to the container', function() {
26
+ $.deck('disableScale');
27
+ $.deck('enableScale');
28
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
29
+ });
30
+ });
31
+
32
+ describe('toggleScale()', function() {
33
+ it('should toggle between adding and removing the scale class', function() {
34
+ $.deck('toggleScale');
35
+ expect($.deck('getContainer')).not.toHaveClass(defaults.classes.scale);
36
+ $.deck('toggleScale');
37
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
38
+ });
39
+ });
40
+
41
+ describe('key bindings', function() {
42
+ var e,
43
+ $d = $(document);
44
+
45
+ beforeEach(function() {
46
+ e = jQuery.Event('keydown.deckscale');
47
+ });
48
+
49
+ it('should toggle scaling if the specified key is pressed', function() {
50
+ e.which = 83; // s
51
+ $d.trigger(e);
52
+ expect($.deck('getContainer')).not.toHaveClass(defaults.classes.scale);
53
+ $d.trigger(e);
54
+ expect($.deck('getContainer')).toHaveClass(defaults.classes.scale);
55
+ });
56
+ });
57
+ });
@@ -0,0 +1,58 @@
1
+ describe('Deck JS Status Indicator', function() {
2
+ beforeEach(function() {
3
+ loadFixtures('standard.html');
4
+ if (Modernizr.history) {
5
+ history.replaceState({}, "", "#")
6
+ }
7
+ else {
8
+ window.location.hash = '#';
9
+ }
10
+ $.deck('.slide');
11
+ });
12
+
13
+ it('should show the correct total number of slides', function() {
14
+ expect($(defaults.selectors.statusTotal)).toHaveText($.deck('getSlides').length);
15
+ });
16
+
17
+ it('should start at the right current slide', function() {
18
+ expect($(defaults.selectors.statusCurrent)).toHaveText(1);
19
+ $.deck('go', 2);
20
+ $.deck('.slide');
21
+ expect($(defaults.selectors.statusCurrent)).toHaveText(3);
22
+ });
23
+
24
+ it('should update to the correct number on slide change', function() {
25
+ $.deck('go', 2);
26
+ expect($(defaults.selectors.statusCurrent)).toHaveText('3');
27
+ });
28
+ });
29
+
30
+ describe('countNested false indicator', function() {
31
+ beforeEach(function() {
32
+ loadFixtures('nesteds.html');
33
+ if (Modernizr.history) {
34
+ history.replaceState({}, "", "#")
35
+ }
36
+ else {
37
+ window.location.hash = '#';
38
+ }
39
+ $.deck('.slide', {
40
+ countNested: false
41
+ });
42
+ });
43
+
44
+ it('should ignore nested slides in the total', function() {
45
+ expect($(defaults.selectors.statusTotal)).toHaveText('5');
46
+ });
47
+
48
+ it('should update to the root slide number when nested becomes active', function() {
49
+ $.deck('go', 10);
50
+ expect($(defaults.selectors.statusCurrent)).toHaveText('4');
51
+ $.deck('prev');
52
+ expect($(defaults.selectors.statusCurrent)).toHaveText('3');
53
+ $.deck('go', 3);
54
+ expect($(defaults.selectors.statusCurrent)).toHaveText('3');
55
+ $.deck('go', 1);
56
+ expect($(defaults.selectors.statusCurrent)).toHaveText('2');
57
+ });
58
+ });
@@ -0,0 +1,114 @@
1
+ .deck-container {
2
+ font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
3
+ font-size: 1.25em;
4
+ color: #aaa;
5
+ background: #000;
6
+ }
7
+ .deck-container .slide {
8
+ background: #000;
9
+ }
10
+ .deck-container .slide h1 {
11
+ color: #0af;
12
+ font-weight: normal;
13
+ font-weight: 100;
14
+ text-shadow: 0 0 50px #0af, 0 0 3px #fff;
15
+ }
16
+ .deck-container .slide h2 {
17
+ color: #af0;
18
+ border-bottom-color: #ccc;
19
+ font-weight: normal;
20
+ font-weight: 100;
21
+ text-shadow: 0 0 15px #af0, 0 0 2px #fff;
22
+ border-bottom: 1px solid #333;
23
+ }
24
+ .deck-container .slide h3 {
25
+ color: #fff;
26
+ font-weight: normal;
27
+ font-weight: 100;
28
+ text-shadow: 0 0 10px #fff, 0 0 2px #fff;
29
+ }
30
+ .deck-container .slide pre {
31
+ border-color: #333;
32
+ }
33
+ .deck-container .slide pre code {
34
+ color: #fff;
35
+ }
36
+ .deck-container .slide code {
37
+ color: #f0a;
38
+ }
39
+ .deck-container .slide blockquote {
40
+ font-size: 2em;
41
+ padding: 1em 2em;
42
+ color: #fff;
43
+ border-left: 5px solid #fff;
44
+ }
45
+ .deck-container .slide blockquote p {
46
+ margin: 0;
47
+ }
48
+ .deck-container .slide blockquote cite {
49
+ font-size: .5em;
50
+ font-style: normal;
51
+ font-weight: normal;
52
+ font-weight: 100;
53
+ color: #aaa;
54
+ text-shadow: 0 0 15px #fff, 0 0 2px #fff;
55
+ }
56
+ .deck-container .slide ::-moz-selection {
57
+ background: #a0f;
58
+ }
59
+ .deck-container .slide ::selection {
60
+ background: #a0f;
61
+ }
62
+ .deck-container .slide a, .deck-container .slide a:hover, .deck-container .slide a:focus, .deck-container .slide a:active, .deck-container .slide a:visited {
63
+ color: #f0a;
64
+ text-decoration: none;
65
+ }
66
+ .deck-container .slide a:hover, .deck-container .slide a:focus {
67
+ text-decoration: underline;
68
+ }
69
+ .deck-container .deck-prev-link, .deck-container .deck-next-link {
70
+ background: #f0a;
71
+ text-shadow: 0 0 3px #fff;
72
+ }
73
+ .deck-container .deck-prev-link, .deck-container .deck-prev-link:hover, .deck-container .deck-prev-link:focus, .deck-container .deck-prev-link:active, .deck-container .deck-prev-link:visited, .deck-container .deck-next-link, .deck-container .deck-next-link:hover, .deck-container .deck-next-link:focus, .deck-container .deck-next-link:active, .deck-container .deck-next-link:visited {
74
+ color: #fff;
75
+ }
76
+ .deck-container .deck-prev-link:hover, .deck-container .deck-prev-link:focus, .deck-container .deck-next-link:hover, .deck-container .deck-next-link:focus {
77
+ text-decoration: none;
78
+ }
79
+ .boxshadow .deck-container .deck-prev-link:hover, .boxshadow .deck-container .deck-prev-link:focus, .boxshadow .deck-container .deck-next-link:hover, .boxshadow .deck-container .deck-next-link:focus {
80
+ -webkit-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
81
+ -moz-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
82
+ box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
83
+ }
84
+ .deck-container .deck-status {
85
+ font-size: 0.6666em;
86
+ }
87
+ .deck-container .goto-form {
88
+ background: #000;
89
+ border: 1px solid #f0a;
90
+ }
91
+ .deck-container .goto-form label {
92
+ color: #fff;
93
+ }
94
+ .deck-container.deck-menu .slide {
95
+ background: #333;
96
+ }
97
+ .deck-container.deck-menu .deck-current {
98
+ background: #444;
99
+ }
100
+ .boxshadow .deck-container.deck-menu .deck-current {
101
+ background: #000;
102
+ -webkit-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
103
+ -moz-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
104
+ box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
105
+ }
106
+ .no-touch .deck-container.deck-menu .slide:hover {
107
+ background: #444;
108
+ }
109
+ .no-touch.boxshadow .deck-container.deck-menu .slide:hover {
110
+ background: #000;
111
+ -webkit-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
112
+ -moz-box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
113
+ box-shadow: 0 0 20px #f0a, 0 0 5px #fff;
114
+ }
@@ -0,0 +1,139 @@
1
+ .deck-container {
2
+ font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
3
+ font-size:1.25em;
4
+ color:#aaa;
5
+ background:#000;
6
+
7
+ .slide {
8
+ background:#000;
9
+
10
+ h1 {
11
+ color:#0af;
12
+ font-weight:normal;
13
+ font-weight:100;
14
+ text-shadow:0 0 50px #0af, 0 0 3px #fff;
15
+ }
16
+
17
+ h2 {
18
+ color:#af0;
19
+ border-bottom-color:#ccc;
20
+ font-weight:normal;
21
+ font-weight:100;
22
+ text-shadow:0 0 15px #af0, 0 0 2px #fff;
23
+ border-bottom:1px solid #333;
24
+ }
25
+
26
+ h3 {
27
+ color:#fff;
28
+ font-weight:normal;
29
+ font-weight:100;
30
+ text-shadow:0 0 10px #fff, 0 0 2px #fff;
31
+ }
32
+
33
+ pre {
34
+ border-color:#333;
35
+
36
+ code {
37
+ color:#fff;
38
+ }
39
+ }
40
+
41
+ code {
42
+ color:#f0a;
43
+ }
44
+
45
+ blockquote {
46
+ font-size:2em;
47
+ padding:1em 2em;
48
+ color:#fff;
49
+ border-left:5px solid #fff;
50
+
51
+ p {
52
+ margin:0;
53
+ }
54
+
55
+ cite {
56
+ font-size:.5em;
57
+ font-style:normal;
58
+ font-weight:normal;
59
+ font-weight:100;
60
+ color:#aaa;
61
+ text-shadow:0 0 15px #fff, 0 0 2px #fff;
62
+ }
63
+ }
64
+
65
+ ::-moz-selection{ background:#a0f; }
66
+ ::selection { background:#a0f; }
67
+
68
+ a {
69
+ &, &:hover, &:focus, &:active, &:visited {
70
+ color:#f0a;
71
+ text-decoration:none;
72
+ }
73
+
74
+ &:hover, &:focus {
75
+ text-decoration:underline;
76
+ }
77
+ }
78
+ }
79
+
80
+ .deck-prev-link, .deck-next-link {
81
+ background:#f0a;
82
+ text-shadow:0 0 3px #fff;
83
+
84
+ &, &:hover, &:focus, &:active, &:visited {
85
+ color:#fff;
86
+ }
87
+
88
+ &:hover, &:focus {
89
+ text-decoration:none;
90
+
91
+ .boxshadow & {
92
+ -webkit-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
93
+ -moz-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
94
+ box-shadow:0 0 20px #f0a, 0 0 5px #fff;
95
+ }
96
+ }
97
+ }
98
+
99
+ .deck-status {
100
+ font-size:0.6666em;
101
+ }
102
+
103
+ .goto-form {
104
+ background:#000;
105
+ border:1px solid #f0a;
106
+
107
+ label {
108
+ color:#fff;
109
+ }
110
+ }
111
+
112
+ &.deck-menu {
113
+ .slide {
114
+ background:#333;
115
+ }
116
+
117
+ .deck-current {
118
+ background:#444;
119
+
120
+ .boxshadow & {
121
+ background:#000;
122
+ -webkit-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
123
+ -moz-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
124
+ box-shadow:0 0 20px #f0a, 0 0 5px #fff;
125
+ }
126
+ }
127
+
128
+ .no-touch & .slide:hover {
129
+ background:#444;
130
+ }
131
+
132
+ .no-touch.boxshadow & .slide:hover {
133
+ background:#000;
134
+ -webkit-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
135
+ -moz-box-shadow:0 0 20px #f0a, 0 0 5px #fff;
136
+ box-shadow:0 0 20px #f0a, 0 0 5px #fff;
137
+ }
138
+ }
139
+ }