Project

General

Profile

« Previous | Next » 

Revision 1b8dfb1b

Added by Alexander Oppermann about 9 years ago

added new style information to cdm-vaadin

View differences:

.gitattributes
17 17
src/main/java/eu/etaxonomy/cdm/vaadin/model/DistributionDTO.java -text
18 18
src/main/java/eu/etaxonomy/cdm/vaadin/model/LazyLoadedContainer.java -text
19 19
src/main/java/eu/etaxonomy/cdm/vaadin/model/StatusDTO.java -text
20
src/main/java/eu/etaxonomy/cdm/vaadin/model/User.java -text
21
src/main/java/eu/etaxonomy/cdm/vaadin/model/Users.java -text
22 20
src/main/java/eu/etaxonomy/cdm/vaadin/model/taxonDTO.java -text
23 21
src/main/java/eu/etaxonomy/cdm/vaadin/presenter/AuthenticationPresenter.java -text
24 22
src/main/java/eu/etaxonomy/cdm/vaadin/presenter/NewTaxonBasePresenter.java -text
......
60 58
src/main/webapp/VAADIN/themes/edit/edit.scss -text
61 59
src/main/webapp/VAADIN/themes/edit/styles.css -text
62 60
src/main/webapp/VAADIN/themes/edit/styles.scss -text
61
src/main/webapp/VAADIN/themes/macosx/addons.scss -text
62
src/main/webapp/VAADIN/themes/macosx/favicon.ico -text
63
src/main/webapp/VAADIN/themes/macosx/icons/32/Thumbs.db -text
64
src/main/webapp/VAADIN/themes/macosx/icons/32/VLineSeparator.png -text
65
src/main/webapp/VAADIN/themes/macosx/icons/32/arrow-down.png -text
66
src/main/webapp/VAADIN/themes/macosx/icons/32/arrow-left.png -text
67
src/main/webapp/VAADIN/themes/macosx/icons/32/arrow-right.png -text
68
src/main/webapp/VAADIN/themes/macosx/icons/32/arrow-up.png -text
69
src/main/webapp/VAADIN/themes/macosx/icons/32/attention.png -text
70
src/main/webapp/VAADIN/themes/macosx/icons/32/bg-column.jpg -text
71
src/main/webapp/VAADIN/themes/macosx/icons/32/bg-right-column.jpg -text
72
src/main/webapp/VAADIN/themes/macosx/icons/32/bottom-left.png -text
73
src/main/webapp/VAADIN/themes/macosx/icons/32/bottom-right.png -text
74
src/main/webapp/VAADIN/themes/macosx/icons/32/calendar.png -text
75
src/main/webapp/VAADIN/themes/macosx/icons/32/cancel.png -text
76
src/main/webapp/VAADIN/themes/macosx/icons/32/document-add.png -text
77
src/main/webapp/VAADIN/themes/macosx/icons/32/document-delete.png -text
78
src/main/webapp/VAADIN/themes/macosx/icons/32/document-doc.png -text
79
src/main/webapp/VAADIN/themes/macosx/icons/32/document-edit.png -text
80
src/main/webapp/VAADIN/themes/macosx/icons/32/document-image.png -text
81
src/main/webapp/VAADIN/themes/macosx/icons/32/document-pdf.png -text
82
src/main/webapp/VAADIN/themes/macosx/icons/32/document-ppt.png -text
83
src/main/webapp/VAADIN/themes/macosx/icons/32/document-save.png -text
84
src/main/webapp/VAADIN/themes/macosx/icons/32/document-txt.png -text
85
src/main/webapp/VAADIN/themes/macosx/icons/32/document-web.png -text
86
src/main/webapp/VAADIN/themes/macosx/icons/32/document-xsl.png -text
87
src/main/webapp/VAADIN/themes/macosx/icons/32/document.png -text
88
src/main/webapp/VAADIN/themes/macosx/icons/32/email-reply.png -text
89
src/main/webapp/VAADIN/themes/macosx/icons/32/email-send.png -text
90
src/main/webapp/VAADIN/themes/macosx/icons/32/email.png -text
91
src/main/webapp/VAADIN/themes/macosx/icons/32/folder-add.png -text
92
src/main/webapp/VAADIN/themes/macosx/icons/32/folder-delete.png -text
93
src/main/webapp/VAADIN/themes/macosx/icons/32/folder.png -text
94
src/main/webapp/VAADIN/themes/macosx/icons/32/globe.png -text
95
src/main/webapp/VAADIN/themes/macosx/icons/32/help.png -text
96
src/main/webapp/VAADIN/themes/macosx/icons/32/lock.png -text
97
src/main/webapp/VAADIN/themes/macosx/icons/32/loginpanel.png -text
98
src/main/webapp/VAADIN/themes/macosx/icons/32/note.png -text
99
src/main/webapp/VAADIN/themes/macosx/icons/32/ok.png -text
100
src/main/webapp/VAADIN/themes/macosx/icons/32/reload.png -text
101
src/main/webapp/VAADIN/themes/macosx/icons/32/settings.png -text
102
src/main/webapp/VAADIN/themes/macosx/icons/32/top-left.png -text
103
src/main/webapp/VAADIN/themes/macosx/icons/32/top-right.png -text
104
src/main/webapp/VAADIN/themes/macosx/icons/32/trash-full.png -text
105
src/main/webapp/VAADIN/themes/macosx/icons/32/trash.png -text
106
src/main/webapp/VAADIN/themes/macosx/icons/32/user.png -text
107
src/main/webapp/VAADIN/themes/macosx/icons/32/users.png -text
108
src/main/webapp/VAADIN/themes/macosx/icons/32/vseparator.png -text
109
src/main/webapp/VAADIN/themes/macosx/icons/32/vseparator1.png -text
110
src/main/webapp/VAADIN/themes/macosx/icons/wizard/OSStack.png -text
111
src/main/webapp/VAADIN/themes/macosx/icons/wizard/arrow-down.png -text
112
src/main/webapp/VAADIN/themes/macosx/icons/wizard/arrow-up.png -text
113
src/main/webapp/VAADIN/themes/macosx/icons/wizard/red_nose_reindeer.jpg -text
114
src/main/webapp/VAADIN/themes/macosx/icons/wizard/reindeer.jpg -text
115
src/main/webapp/VAADIN/themes/macosx/icons/wizard/vaadin.png -text
116
src/main/webapp/VAADIN/themes/macosx/images/document-edit.png -text
117
src/main/webapp/VAADIN/themes/macosx/images/gradient.png -text
118
src/main/webapp/VAADIN/themes/macosx/images/logo.png -text
119
src/main/webapp/VAADIN/themes/macosx/images/table-header-bg.png -text
120
src/main/webapp/VAADIN/themes/macosx/styles.css -text
63 121
src/main/webapp/VAADIN/themes/mytheme/addons.scss -text
64 122
src/main/webapp/VAADIN/themes/mytheme/favicon.ico -text
65 123
src/main/webapp/VAADIN/themes/mytheme/icons/32/Thumbs.db -text
src/main/java/eu/etaxonomy/cdm/vaadin/model/User.java
1
package eu.etaxonomy.cdm.vaadin.model;
2

  
3
import java.io.Serializable;
4
import java.util.ArrayList;
5
import java.util.Collection;
6
import java.util.HashMap;
7
import java.util.List;
8
import java.util.Map;
9

  
10
public class User implements Serializable {
11

  
12
	/**
13
	 *
14
	 */
15
	private static final long serialVersionUID = 1L;
16
	private final String name;
17
	private final Map<String, String> prop;
18

  
19
	public User(String name) {
20
		this.name = name;
21
		prop = new HashMap<String, String>();
22
	}
23

  
24
	public void addProp(String column, String value) {
25
		prop.put(column, value);
26
	}
27
	
28
	public String getName(){
29
		return name;
30
	}
31

  
32
	public Collection<String> getPropertyId() {
33
		List<String> propertyId = new ArrayList<String>();
34
		for (Map.Entry<String, String> entry : prop.entrySet()) {
35
			propertyId.add(entry.getKey());
36
		}
37
		return propertyId;
38
	}
39

  
40
	public Collection<String> getItemId() {
41
		List<String> getItemId = new ArrayList<String>();
42
		for (Map.Entry<String, String> entry : prop.entrySet()) {
43
			getItemId.add(entry.getValue());
44
		}
45
		return getItemId;
46
	}
47

  
48
    /**
49
     * @param itemId
50
     */
51
    public Object getItem(Object itemId) {
52
        String item = itemId.toString();
53
        for (Map.Entry<String, String> entry : prop.entrySet()) {
54
            if(item.equalsIgnoreCase(entry.getValue())) {
55
                return entry.getValue();
56
            }
57
        }
58
        return null;
59
    }
60

  
61
    public Object getItemProperty(Object propertyId) {
62
        String item = propertyId.toString();
63
        for (Map.Entry<String, String> entry : prop.entrySet()) {
64
            if(item.equalsIgnoreCase(entry.getKey())) {
65
                return entry.getValue();
66
            }
67
        }
68
        return null;
69
    }
70
    /**
71
     * @param itemId
72
     * @param propertyId
73
     */
74
    public Object getContainerProperty(Object itemId, Object propertyId) {
75
        if(prop.containsKey(propertyId) && prop.containsValue(itemId)){
76
            for (Map.Entry<String, String> entry : prop.entrySet()) {
77
                if(propertyId.toString().equalsIgnoreCase(entry.getKey())) {
78
                    return entry.getValue();
79
                }
80
            }
81
        }
82
        return null;
83
    }
84
}
src/main/java/eu/etaxonomy/cdm/vaadin/model/Users.java
1
package eu.etaxonomy.cdm.vaadin.model;
2

  
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.List;
6

  
7
import com.vaadin.data.Container;
8
import com.vaadin.data.Item;
9
import com.vaadin.data.Property;
10
import com.vaadin.data.util.ObjectProperty;
11

  
12
public class Users implements Container {
13
	/**
14
	 *
15
	 */
16
	private static final long serialVersionUID = 1L;
17
	private final List<User> users;
18

  
19
	public Users() {
20

  
21
		User user1 = new User("first user");
22
		user1.addProp("taxon", "Marmorta marmorta");
23
		user1.addProp("p1", "val_b_1");
24
		user1.addProp("p2", "val_b_2");
25

  
26
		User user2 = new User("second_user");
27
		user2.addProp("taxon", "Moose");
28
		user2.addProp("p1", "val_a_1");
29
		user2.addProp("p2", "val_a_2");
30

  
31
		users = new ArrayList<User>();
32
		users.add(user1);
33
		users.add(user2);
34
	}
35

  
36
	@Override
37
	public Item getItem(Object itemId) {
38
		Item item = (Item) itemId;
39
		return item;
40
	}
41

  
42
	@Override
43
	public Collection<?> getContainerPropertyIds() {
44
	    Collection<String> c = new ArrayList<String>();
45
		for(User user:users){
46
			c.addAll(user.getPropertyId());
47
		}
48
		return c;
49
	}
50

  
51
	@Override
52
	public Collection<?> getItemIds() {
53
	    Collection<String> c = new ArrayList<String>();
54
		for(User user:users){
55
			c.addAll(user.getItemId());
56
		}
57
		return c;
58
	}
59

  
60
	@Override
61
	public Property getContainerProperty(Object itemId, Object propertyId) {
62
		ObjectProperty<String> property = null;
63
		for(User user:users){
64
			Object itemProperty = user.getItemProperty(propertyId);
65
			property = new ObjectProperty<String>((String)itemProperty);
66
		}
67
		return property;
68
	}
69

  
70
	@Override
71
	public Class<?> getType(Object propertyId) {
72
		// TODO Auto-generated method stub
73
		return String.class;
74
	}
75

  
76
	@Override
77
	public int size() {
78
		// TODO Auto-generated method stub
79
		return users.size();
80
	}
81

  
82
	@Override
83
	public boolean containsId(Object itemId) {
84
		// TODO Auto-generated method stub
85
		return false;
86
	}
87

  
88
	@Override
89
	public Item addItem(Object itemId) throws UnsupportedOperationException {
90
		// TODO Auto-generated method stub
91
		return null;
92
	}
93

  
94
	@Override
95
	public Object addItem() throws UnsupportedOperationException {
96
		// TODO Auto-generated method stub
97
		return null;
98
	}
99

  
100
	@Override
101
	public boolean removeItem(Object itemId)
102
			throws UnsupportedOperationException {
103
		// TODO Auto-generated method stub
104
		return false;
105
	}
106

  
107
	@Override
108
	public boolean addContainerProperty(Object propertyId, Class<?> type,
109
			Object defaultValue) throws UnsupportedOperationException {
110
		// TODO Auto-generated method stub
111
		return false;
112
	}
113

  
114
	@Override
115
	public boolean removeContainerProperty(Object propertyId)
116
			throws UnsupportedOperationException {
117
		// TODO Auto-generated method stub
118
		return false;
119
	}
120

  
121
	@Override
122
	public boolean removeAllItems() throws UnsupportedOperationException {
123
		// TODO Auto-generated method stub
124
		return false;
125
	}
126
}
src/main/java/eu/etaxonomy/cdm/vaadin/presenter/dbstatus/DistributionTablePresenter.java
3 3
import java.sql.SQLException;
4 4
import java.util.ArrayList;
5 5
import java.util.Arrays;
6
import java.util.Collection;
7
import java.util.Collections;
6 8
import java.util.HashMap;
7 9
import java.util.HashSet;
8 10
import java.util.List;
......
93 95
		for(DefinedTermBase dtb: terms){
94 96
			list.add(dtb.getTitleCache());
95 97
		}
98
		Collections.sort(list);
96 99
		return list;
97 100
	}
98 101

  
src/main/java/eu/etaxonomy/cdm/vaadin/ui/DbStatusUI.java
12 12
import eu.etaxonomy.cdm.vaadin.servlet.CdmVaadinConversationalServlet;
13 13
import eu.etaxonomy.cdm.vaadin.view.dbstatus.DistributionSelectionView;
14 14

  
15
@Theme("mytheme")
15
@Theme("macosx")
16 16
@Title("CDM Board")
17 17
@SuppressWarnings("serial")
18 18
public class DbStatusUI extends AbstractAuthenticatedUI{
src/main/java/eu/etaxonomy/cdm/vaadin/ui/StatusEditorUI.java
29 29
import eu.etaxonomy.cdm.vaadin.view.StatusEditorView;
30 30

  
31 31

  
32
@Theme("edit")
32
@Theme("mytheme")
33 33
public class StatusEditorUI extends AbstractAuthenticatedUI {
34 34

  
35 35
    Navigator navigator;
src/main/webapp/VAADIN/themes/macosx/addons.scss
1
/* This file is automatically managed and will be overwritten from time to time. */
2
/* Do not manually edit this file. */
3

  
4
/* Import and include this mixin into your project theme to include the addon themes */
5
@mixin addons {
6
}
7

  
src/main/webapp/VAADIN/themes/macosx/styles.css
1
/**
2
 * Checks if a list contains a certain value.
3
 * 
4
 * @param {list} $list - the list to check
5
 * @param {value} $var - the value to search for
6
 * @param {bool} $recursive (false) - should any contained lists be checked for the value
7
 * 
8
 * @return {bool} true if the value is found from the list, false otherwise
9
 * 
10
 * @group lists
11
 */
12

  
13
/**
14
 * Cross-browser opacity.
15
 *
16
 * @param {number} $value - opacity value from 0 to 1
17
 * @param {bool} $important (false) - should the property value be declared with !important
18
 *
19
 * @group util
20
 */
21

  
22

  
23
/*@import "";*/
24

  
25
@IMPORT url("../runo/legacy-styles.css");
26

  
27
/** 
28
 * "optional-" prefix means that the style is not necessarily used, it can be left blank
29
 * "generated-" prefix means that the style is calculated from some other color, and not directly selected by the editor user
30
 *
31
 **/
32
 
33

  
34
  
35
  .v-app {
36
/*background: white; #d0e2ec; */ 
37
background: url("icons/32/bg-column.jpg") repeat scroll 0 0 rgba(0, 0, 0, 0);
38
font-family: "Lucida Grande", Helvetica, Arial, sans-serif;
39
color: #222;
40
}
41

  
42

  
43
 .login{
44
  /* background:red; */
45
 /*  background-color:red; */
46
 /* width: 40px; */
47

  
48
 
49
 margin-left: auto;
50
 margin-right:auto;
51
 
52
 border-radius: 10px 10px 10px 10px;
53
-moz-border-radius: 10px 10px 10px 10px;
54
-webkit-border-radius: 10px 10px 10px 10px;
55
border: 0px solid #000000;
56
 
57
-webkit-box-shadow: 5px 5px 10px -3px rgba(0,0,0,0.85);
58
-moz-box-shadow: 5px 5px 10px -3px rgba(0,0,0,0.85);
59
box-shadow: 5px 5px 10px -3px rgba(0,0,0,0.85);
60
/*  -webkit-box-shadow: 7px 7px 7px -1px rgba(0,0,0,0.85);
61
-moz-box-shadow: 7px 7px 7px -1px rgba(0,0,0,0.85);
62
box-shadow: 7px 7px 7px -1px rgba(0,0,0,0.85);
63
 */
64

  
65
/*  -webkit-box-shadow: 7px 13px 14px -1px rgba(0,0,0,0.85);
66
-moz-box-shadow: 7px 13px 14px -1px rgba(0,0,0,0.85);
67
box-shadow: 7px 13px 14px -1px rgba(0,0,0,0.85); */
68
/* -webkit-box-shadow: 19px 10px 16px -1px rgba(0,0,0,0.85);
69
-moz-box-shadow: 19px 10px 16px -1px rgba(0,0,0,0.85);
70
box-shadow: 19px 10px 16px -1px rgba(0,0,0,0.85);  */
71
}
72

  
73
.defaults{
74
/* margin-left: auto;
75
 margin-right:auto;
76
 
77
 border-radius: 10px 10px 10px 10px;
78
-moz-border-radius: 10px 10px 10px 10px;
79
-webkit-border-radius: 10px 10px 10px 10px;
80
border: 0px solid #000000;
81
 
82
-webkit-box-shadow: 5px 5px 10px -3px rgba(0,0,0,0.85);
83
-moz-box-shadow: 5px 5px 10px -3px rgba(0,0,0,0.85);
84
box-shadow: 5px 5px 10px -3px rgba(0,0,0,0.85);	
85
 */
86
}
87

  
88
.v-panel {
89
    background: url("icons/32/top-left.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
90
}
91
/* .login .v-panel {
92
    background: url("icons/32/top-left.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
93
}
94
 */
95
.login .v-panel-nocaption {
96
    background: url("icons/32/top-right.png") no-repeat scroll right top rgba(0, 0, 0, 0);
97
}
98

  
99
.login .v-panel-content{
100
	border-style: none;
101
	background: url("icons/32/loginpanel.png"); /*#98a0ad; */
102
	background-url:http://api.thumbr.it/whitenoise-361x370.png?background=c1c6c9ff&noise=626262&density=47&opacity=10;	
103
}
104

  
105

  
106
.login .v-panel-deco:before {
107
    background: url("icons/32/bottom-left.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
108
}
109

  
110
.login .v-panel-deco {
111
    background: url("icons/32/bottom-right.png")  repeat-x scroll right top transparent;
112
}
113

  
114
.descriptiveView .v-verticallayout-descriptiveView{
115
	background: white;
116
}
117

  
118
.taxonDetailView{
119
	background: white;
120
}
121

  
122
.descriptiveView{
123
	background: white;
124
}
125

  
126
/* .descriptiveView .v-tabsheet-tabs-light .v-tabsheet-tabitem{
127
	background: url("images/table-header-bg.png") repeat-x bottom left;
128
}
129
.descriptiveView .v-tabsheet-tabs-light .v-tabsheet-tabitem-selected .v-caption {
130
    background: url("images/table-header-bg.png") no-repeat scroll -7px 0 rgba(0, 0, 0, 0);
131
}
132

  
133
.descriptiveView .v-tabsheet-tabs-light .v-tabsheet-spacertd div {
134
	background: url("images/table-header-bg.png") repeat-x bottom left;
135
}
136
 */
137
.toolbar {
138
	background: #ccc url(images/gradient.png) repeat-x bottom left;
139
}
140

  
141
.toolbar .v-image{
142
   margin-right: 30px; 
143
}
144
.toolbar .v-label{
145
  display: block;
146
  height: 30px;
147
  color: #464f52;
148
  background: transparent;
149
  border: none;
150
  text-align: center;
151
  margin-left: auto;
152
  margin-right: auto;
153
  margin-top: 5px;
154
  padding-top: 2px;
155
  font-size: x-small;
156
  text-shadow: #fafafa 1px 1px 0;
157
/*  border: none;
158
  -webkit-border-radius: 0;
159
  -moz-border-radius: 0;
160
  border-radius: 0
161
  -webkit-box-shadow: none;
162
  -moz-box-shadow: none;
163
  box-shadow: none;
164
  background: transparent;
165
  -webkit-box-shadow: none;
166
  -moz-box-shadow: none;
167
  box-shadow: none; */
168
}
169

  
170
.toolbar .v-button {
171
display: block;
172
height: 55px;
173
background: transparent;
174
border: none;
175
text-align: center;
176
}
177

  
178
.toolbar .v-button img {
179
display: block;
180
margin-left: auto;
181
margin-right: auto;
182
margin-bottom: 5px;
183
}
184

  
185
	.toolbar .v-button span {
186
font-size: x-small;
187
text-shadow: #fafafa 1px 1px 0;
188
}
189
	.toolbar .v-button .v-button-wrap,
190
.toolbar .v-disabled.v-button .v-button-wrap {
191
background: transparent;
192
border: none;
193
-webkit-border-radius: 0;
194
-moz-border-radius: 0;
195
border-radius: 0;
196
-webkit-box-shadow: none;
197
-moz-box-shadow: none;
198
box-shadow: none;
199
}
200
.toolbar .v-button:active .v-button-wrap,
201
.toolbar .v-button.v-pressed .v-button-wrap {
202
background: transparent;
203
-webkit-box-shadow: none;
204
-moz-box-shadow: none;
205
box-shadow: none;
206
}
207
	
208
.v-panel-caption-view {
209
color: #004b98;
210
}
211
.view {
212
background: white;
213
}
214

  
215
.v-tree {
216
padding-top: 8px;
217
padding-left: 4px;
218
}
219

  
220
/*Tabsheet*/
221

  
222
.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected{
223
	color: rgb(94, 92, 92);
224
	font-weight: bold;
225
}
226

  
227
.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected:hover{
228
	color: rgb(94, 92, 92);
229
	font-weight: bold;
230
}
231

  
232

  
233
/* Theme table to look bit lighter */
234
.v-table-header-wrap {
235
height: 20px;
236
border: none;
237
border-bottom: 1px solid #555;
238
background: transparent url(images/table-header-bg.png);
239
}
240
.v-table-sort-indicator,
241
.v-table-header-cell-asc .v-table-sort-indicator,
242
.v-table-header-cell-desc .v-table-sort-indicator {
243
height: 20px;
244
}
245
.v-table-caption-container {
246
font-size: 11px;
247
color: #000;
248
font-weight: bold;
249
text-shadow: #fff 0 1px 0;
250
padding: 0;
251
}
252
.v-table-bodyborder:}
253
{
254
none;
255
.v-table-row-odd {
256
background: #f1f5fa;
257
}
258
.v-table-row:hover {
259
background: #fff;
260
}
261
.v-table-row-odd:hover {
262
background: #f1f5fa;
263
}
264
.v-table .v-selected {
265
background: #3d80df;
266
}
267
.v-table-cell-content {
268
padding: 2px 0 2px 3px;
269
line-height: normal;
270
font-size: 85%;
271
}
272

  
273
.wizard .v-panel-content pre,
274
.wizard .v-panel-content code {
275
font-family: Monaco, Courier, sans-serif;
276
}
277

  
278
.wizard .v-panel-content pre {
279
padding-left: 10px;
280
}
281

  
282
.wizard .v-panel-content p.narrow {
283
width: 400px;
284
}
285

  
286
.intro-arrow {
287
position: absolute;
288
bottom: 5px;
289
right: 70px;
290
-webkit-animation: hovering 2s infinite;
291
-moz-animation: hovering 2s infinite;
292
}
293

  
294
@-webkit-keyframes hovering {
295
0% { bottom: 5px; }
296
50% { bottom: 10px; }
297
100% { bottom: 5px; }
298
}
299
@-moz-keyframes hovering {
300
0% { bottom: 5px; }
301
50% { bottom: 10px; }
302
100% { bottom: 5px; }
303
}
304

  
305
.listen-arrow {
306
position: absolute;
307
top: 5px;
308
right: 280px;
309
-webkit-animation: hovering-top 2s infinite;
310
-moz-animation: hovering-top 2s infinite;
311
}
312

  
313
@-webkit-keyframes hovering-top {
314
0% { top: 5px; }
315
50% { top: 10px; }
316
100% { top: 5px; }
317
}
318
@-moz-keyframes hovering-top {
319
0% { top: 5px; }
320
50% { top: 10px; }
321
100% { top: 5px; }
322
}

Also available in: Unified diff