adyen-ruby-api-library 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.travis.yml +14 -0
  4. data/Gemfile +12 -0
  5. data/LICENSE +21 -0
  6. data/README.md +140 -0
  7. data/Rakefile +6 -0
  8. data/adyen-ruby-api-library.gemspec +28 -0
  9. data/bin/console +13 -0
  10. data/bin/setup +8 -0
  11. data/docs/checkout.html +111 -0
  12. data/docs/index.html +50 -0
  13. data/docs/install-library.html +61 -0
  14. data/docs/javascripts/prism.js +5 -0
  15. data/docs/javascripts/scale.fix.js +17 -0
  16. data/docs/marketpay.html +169 -0
  17. data/docs/params.json +1 -0
  18. data/docs/payment.html +106 -0
  19. data/docs/payout.html +135 -0
  20. data/docs/recurring.html +113 -0
  21. data/docs/stylesheets/github-light.css +115 -0
  22. data/docs/stylesheets/prism.css +140 -0
  23. data/docs/stylesheets/styles.css +324 -0
  24. data/docs/using-library.html +67 -0
  25. data/lib/adyen-ruby-api-library.rb +21 -0
  26. data/lib/adyen/client.rb +174 -0
  27. data/lib/adyen/errors.rb +76 -0
  28. data/lib/adyen/services/checkout.rb +50 -0
  29. data/lib/adyen/services/checkout_utility.rb +16 -0
  30. data/lib/adyen/services/marketpay.rb +92 -0
  31. data/lib/adyen/services/payments.rb +23 -0
  32. data/lib/adyen/services/payouts.rb +21 -0
  33. data/lib/adyen/services/recurring.rb +19 -0
  34. data/lib/adyen/services/service.rb +19 -0
  35. data/lib/adyen/version.rb +4 -0
  36. data/spec/account_spec.rb +27 -0
  37. data/spec/checkout_spec.rb +94 -0
  38. data/spec/checkout_utility_spec.rb +27 -0
  39. data/spec/client_spec.rb +40 -0
  40. data/spec/fund_spec.rb +19 -0
  41. data/spec/mocks/requests/Account/close_account.json +3 -0
  42. data/spec/mocks/requests/Account/close_account_holder.json +3 -0
  43. data/spec/mocks/requests/Account/create_account.json +3 -0
  44. data/spec/mocks/requests/Account/create_account_holder.json +15 -0
  45. data/spec/mocks/requests/Account/delete_bank_accounts.json +6 -0
  46. data/spec/mocks/requests/Account/delete_shareholders.json +6 -0
  47. data/spec/mocks/requests/Account/get_account_holder.json +3 -0
  48. data/spec/mocks/requests/Account/get_uploaded_documents.json +4 -0
  49. data/spec/mocks/requests/Account/suspend_account_holder.json +3 -0
  50. data/spec/mocks/requests/Account/un_suspend_account_holder.json +3 -0
  51. data/spec/mocks/requests/Account/update_account.json +7 -0
  52. data/spec/mocks/requests/Account/update_account_holder.json +33 -0
  53. data/spec/mocks/requests/Account/update_account_holder_state.json +6 -0
  54. data/spec/mocks/requests/Account/upload_document.json +9 -0
  55. data/spec/mocks/requests/Checkout/payment-details.json +18 -0
  56. data/spec/mocks/requests/Checkout/payment-result.json +3 -0
  57. data/spec/mocks/requests/Checkout/payment_methods.json +3 -0
  58. data/spec/mocks/requests/Checkout/payment_session.json +15 -0
  59. data/spec/mocks/requests/Checkout/payments.json +17 -0
  60. data/spec/mocks/requests/Checkout/verify.json +3 -0
  61. data/spec/mocks/requests/CheckoutUtility/origin_keys.json +7 -0
  62. data/spec/mocks/requests/Fund/account_holder_balance.json +3 -0
  63. data/spec/mocks/requests/Fund/account_holder_transaction_list.json +16 -0
  64. data/spec/mocks/requests/Fund/payout_account_holder.json +10 -0
  65. data/spec/mocks/requests/Fund/refund_not_paid_out_transfers.json +4 -0
  66. data/spec/mocks/requests/Fund/setup_beneficiary.json +5 -0
  67. data/spec/mocks/requests/Fund/transfer_funds.json +9 -0
  68. data/spec/mocks/requests/Notification/create_notification_configuration.json +20 -0
  69. data/spec/mocks/requests/Notification/delete_notification_configurations.json +6 -0
  70. data/spec/mocks/requests/Notification/get_notification_configuration.json +3 -0
  71. data/spec/mocks/requests/Notification/get_notification_configuration_list.json +1 -0
  72. data/spec/mocks/requests/Notification/test_notification_configuration.json +4 -0
  73. data/spec/mocks/requests/Notification/update_notification_configuration.json +26 -0
  74. data/spec/mocks/requests/Payment/adjust_authorisation.json +12 -0
  75. data/spec/mocks/requests/Payment/authorise.json +28 -0
  76. data/spec/mocks/requests/Payment/authorise3d.json +6 -0
  77. data/spec/mocks/requests/Payment/cancel.json +4 -0
  78. data/spec/mocks/requests/Payment/cancel_or_refund.json +4 -0
  79. data/spec/mocks/requests/Payment/capture.json +8 -0
  80. data/spec/mocks/requests/Payment/refund.json +8 -0
  81. data/spec/mocks/requests/Payout/confirm_third_party.json +4 -0
  82. data/spec/mocks/requests/Payout/decline_third_party.json +4 -0
  83. data/spec/mocks/requests/Payout/store_detail.json +33 -0
  84. data/spec/mocks/requests/Payout/store_detail_and_submit_third_party.json +33 -0
  85. data/spec/mocks/requests/Payout/submit_third_party.json +22 -0
  86. data/spec/mocks/requests/Recurring/disable.json +5 -0
  87. data/spec/mocks/requests/Recurring/list_recurring_details.json +4 -0
  88. data/spec/mocks/requests/Recurring/store_token.json +15 -0
  89. data/spec/mocks/responses/Account/close_account.json +5 -0
  90. data/spec/mocks/responses/Account/close_account_holder.json +7 -0
  91. data/spec/mocks/responses/Account/create_account.json +7 -0
  92. data/spec/mocks/responses/Account/create_account_holder.json +116 -0
  93. data/spec/mocks/responses/Account/delete_bank_accounts.json +4 -0
  94. data/spec/mocks/responses/Account/delete_shareholders.json +4 -0
  95. data/spec/mocks/responses/Account/get_account_holder.json +71 -0
  96. data/spec/mocks/responses/Account/get_uploaded_documents.json +16 -0
  97. data/spec/mocks/responses/Account/suspend_account_holder.json +24 -0
  98. data/spec/mocks/responses/Account/un_suspend_account_holder.json +24 -0
  99. data/spec/mocks/responses/Account/update_account.json +9 -0
  100. data/spec/mocks/responses/Account/update_account_holder.json +95 -0
  101. data/spec/mocks/responses/Account/update_account_holder_state.json +27 -0
  102. data/spec/mocks/responses/Account/upload_document.json +77 -0
  103. data/spec/mocks/responses/Checkout/payment-details.json +14 -0
  104. data/spec/mocks/responses/Checkout/payment-result.json +4 -0
  105. data/spec/mocks/responses/Checkout/payment_methods.json +66 -0
  106. data/spec/mocks/responses/Checkout/payment_session.json +572 -0
  107. data/spec/mocks/responses/Checkout/payments.json +95 -0
  108. data/spec/mocks/responses/Checkout/verify.json +121 -0
  109. data/spec/mocks/responses/CheckoutUtility/origin_keys.json +7 -0
  110. data/spec/mocks/responses/Fund/account_holder_balance.json +47 -0
  111. data/spec/mocks/responses/Fund/account_holder_transaction_list.json +73 -0
  112. data/spec/mocks/responses/Fund/payout_account_holder.json +6 -0
  113. data/spec/mocks/responses/Fund/refund_not_paid_out_transfers.json +5 -0
  114. data/spec/mocks/responses/Fund/setup_beneficiary.json +5 -0
  115. data/spec/mocks/responses/Fund/transfer_funds.json +6 -0
  116. data/spec/mocks/responses/Notification/create_notification_configuration.json +41 -0
  117. data/spec/mocks/responses/Notification/delete_notification_configurations.json +23 -0
  118. data/spec/mocks/responses/Notification/get_notification_configuration.json +41 -0
  119. data/spec/mocks/responses/Notification/get_notification_configuration_list.json +65 -0
  120. data/spec/mocks/responses/Notification/test_notification_configuration.json +49 -0
  121. data/spec/mocks/responses/Notification/update_notification_configuration.json +47 -0
  122. data/spec/mocks/responses/Payment/adjust_authorisation.json +4 -0
  123. data/spec/mocks/responses/Payment/authorise.json +95 -0
  124. data/spec/mocks/responses/Payment/authorise3d.json +30 -0
  125. data/spec/mocks/responses/Payment/cancel.json +4 -0
  126. data/spec/mocks/responses/Payment/cancel_or_refund.json +4 -0
  127. data/spec/mocks/responses/Payment/capture.json +4 -0
  128. data/spec/mocks/responses/Payment/refund.json +4 -0
  129. data/spec/mocks/responses/Payout/confirm_third_party.json +4 -0
  130. data/spec/mocks/responses/Payout/decline_third_party.json +4 -0
  131. data/spec/mocks/responses/Payout/store_detail.json +5 -0
  132. data/spec/mocks/responses/Payout/store_detail_and_submit_third_party.json +8 -0
  133. data/spec/mocks/responses/Payout/submit_third_party.json +8 -0
  134. data/spec/mocks/responses/Recurring/disable.json +30 -0
  135. data/spec/mocks/responses/Recurring/list_recurring_details.json +62 -0
  136. data/spec/mocks/responses/Recurring/store_token.json +7 -0
  137. data/spec/notification_spec.rb +19 -0
  138. data/spec/payments_spec.rb +20 -0
  139. data/spec/payouts_spec.rb +18 -0
  140. data/spec/recurring_spec.rb +17 -0
  141. data/spec/spec_helper.rb +94 -0
  142. metadata +246 -0
@@ -0,0 +1,115 @@
1
+ /*
2
+ Copyright 2014 GitHub Inc.
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
+ */
17
+
18
+ .pl-c /* comment */ {
19
+ color: #969896;
20
+ }
21
+
22
+ .pl-c1 /* constant, markup.raw, meta.diff.header, meta.module-reference, meta.property-name, support, support.constant, support.variable, variable.other.constant */,
23
+ .pl-s .pl-v /* string variable */ {
24
+ color: #0086b3;
25
+ }
26
+
27
+ .pl-e /* entity */,
28
+ .pl-en /* entity.name */ {
29
+ color: #795da3;
30
+ }
31
+
32
+ .pl-s .pl-s1 /* string source */,
33
+ .pl-smi /* storage.modifier.import, storage.modifier.package, storage.type.java, variable.other, variable.parameter.function */ {
34
+ color: #333;
35
+ }
36
+
37
+ .pl-ent /* entity.name.tag */ {
38
+ color: #63a35c;
39
+ }
40
+
41
+ .pl-k /* keyword, storage, storage.type */ {
42
+ color: #a71d5d;
43
+ }
44
+
45
+ .pl-pds /* punctuation.definition.string, string.regexp.character-class */,
46
+ .pl-s /* string */,
47
+ .pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
48
+ .pl-sr /* string.regexp */,
49
+ .pl-sr .pl-cce /* string.regexp constant.character.escape */,
50
+ .pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */,
51
+ .pl-sr .pl-sre /* string.regexp source.ruby.embedded */ {
52
+ color: #183691;
53
+ }
54
+
55
+ .pl-v /* variable */ {
56
+ color: #ed6a43;
57
+ }
58
+
59
+ .pl-id /* invalid.deprecated */ {
60
+ color: #b52a1d;
61
+ }
62
+
63
+ .pl-ii /* invalid.illegal */ {
64
+ background-color: #b52a1d;
65
+ color: #f8f8f8;
66
+ }
67
+
68
+ .pl-sr .pl-cce /* string.regexp constant.character.escape */ {
69
+ color: #63a35c;
70
+ font-weight: bold;
71
+ }
72
+
73
+ .pl-ml /* markup.list */ {
74
+ color: #693a17;
75
+ }
76
+
77
+ .pl-mh /* markup.heading */,
78
+ .pl-mh .pl-en /* markup.heading entity.name */,
79
+ .pl-ms /* meta.separator */ {
80
+ color: #1d3e81;
81
+ font-weight: bold;
82
+ }
83
+
84
+ .pl-mq /* markup.quote */ {
85
+ color: #008080;
86
+ }
87
+
88
+ .pl-mi /* markup.italic */ {
89
+ color: #333;
90
+ font-style: italic;
91
+ }
92
+
93
+ .pl-mb /* markup.bold */ {
94
+ color: #333;
95
+ font-weight: bold;
96
+ }
97
+
98
+ .pl-md /* markup.deleted, meta.diff.header.from-file */ {
99
+ background-color: #ffecec;
100
+ color: #bd2c00;
101
+ }
102
+
103
+ .pl-mi1 /* markup.inserted, meta.diff.header.to-file */ {
104
+ background-color: #eaffea;
105
+ color: #55a532;
106
+ }
107
+
108
+ .pl-mdr /* meta.diff.range */ {
109
+ color: #795da3;
110
+ font-weight: bold;
111
+ }
112
+
113
+ .pl-mo /* meta.output */ {
114
+ color: #1d3e81;
115
+ }
@@ -0,0 +1,140 @@
1
+ /* PrismJS 1.14.0
2
+ http://prismjs.com/download.html#themes=prism&languages=clike+ruby */
3
+ /**
4
+ * prism.js default theme for JavaScript, CSS and HTML
5
+ * Based on dabblet (http://dabblet.com)
6
+ * @author Lea Verou
7
+ */
8
+
9
+ code[class*="language-"],
10
+ pre[class*="language-"] {
11
+ color: black;
12
+ background: none;
13
+ text-shadow: 0 1px white;
14
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
15
+ text-align: left;
16
+ white-space: pre;
17
+ word-spacing: normal;
18
+ word-break: normal;
19
+ word-wrap: normal;
20
+ line-height: 1.5;
21
+
22
+ -moz-tab-size: 4;
23
+ -o-tab-size: 4;
24
+ tab-size: 4;
25
+
26
+ -webkit-hyphens: none;
27
+ -moz-hyphens: none;
28
+ -ms-hyphens: none;
29
+ hyphens: none;
30
+ }
31
+
32
+ pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
33
+ code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
34
+ text-shadow: none;
35
+ background: #b3d4fc;
36
+ }
37
+
38
+ pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
39
+ code[class*="language-"]::selection, code[class*="language-"] ::selection {
40
+ text-shadow: none;
41
+ background: #b3d4fc;
42
+ }
43
+
44
+ @media print {
45
+ code[class*="language-"],
46
+ pre[class*="language-"] {
47
+ text-shadow: none;
48
+ }
49
+ }
50
+
51
+ /* Code blocks */
52
+ pre[class*="language-"] {
53
+ padding: 1em;
54
+ margin: .5em 0;
55
+ overflow: auto;
56
+ }
57
+
58
+ :not(pre) > code[class*="language-"],
59
+ pre[class*="language-"] {
60
+ background: #f8f8f8;
61
+ }
62
+
63
+ /* Inline code */
64
+ :not(pre) > code[class*="language-"] {
65
+ padding: .1em;
66
+ border-radius: .3em;
67
+ white-space: normal;
68
+ }
69
+
70
+ .token.comment,
71
+ .token.prolog,
72
+ .token.doctype,
73
+ .token.cdata {
74
+ color: slategray;
75
+ }
76
+
77
+ .token.punctuation {
78
+ color: #999;
79
+ }
80
+
81
+ .namespace {
82
+ opacity: .7;
83
+ }
84
+
85
+ .token.property,
86
+ .token.tag,
87
+ .token.boolean,
88
+ .token.number,
89
+ .token.constant,
90
+ .token.symbol,
91
+ .token.deleted {
92
+ color: #905;
93
+ }
94
+
95
+ .token.selector,
96
+ .token.attr-name,
97
+ .token.string,
98
+ .token.char,
99
+ .token.builtin,
100
+ .token.inserted {
101
+ color: #690;
102
+ }
103
+
104
+ .token.operator,
105
+ .token.entity,
106
+ .token.url,
107
+ .language-css .token.string,
108
+ .style .token.string {
109
+ color: #9a6e3a;
110
+ }
111
+
112
+ .token.atrule,
113
+ .token.attr-value,
114
+ .token.keyword {
115
+ color: #07a;
116
+ }
117
+
118
+ .token.function,
119
+ .token.class-name {
120
+ color: #DD4A68;
121
+ }
122
+
123
+ .token.regex,
124
+ .token.important,
125
+ .token.variable {
126
+ color: #e90;
127
+ }
128
+
129
+ .token.important,
130
+ .token.bold {
131
+ font-weight: bold;
132
+ }
133
+ .token.italic {
134
+ font-style: italic;
135
+ }
136
+
137
+ .token.entity {
138
+ cursor: help;
139
+ }
140
+
@@ -0,0 +1,324 @@
1
+ @font-face {
2
+ font-family: 'Noto Sans';
3
+ font-weight: 400;
4
+ font-style: normal;
5
+ src: url('../fonts/Noto-Sans-regular/Noto-Sans-regular.eot');
6
+ src: url('../fonts/Noto-Sans-regular/Noto-Sans-regular.eot?#iefix') format('embedded-opentype'),
7
+ local('Noto Sans'),
8
+ local('Noto-Sans-regular'),
9
+ url('../fonts/Noto-Sans-regular/Noto-Sans-regular.woff2') format('woff2'),
10
+ url('../fonts/Noto-Sans-regular/Noto-Sans-regular.woff') format('woff'),
11
+ url('../fonts/Noto-Sans-regular/Noto-Sans-regular.ttf') format('truetype'),
12
+ url('../fonts/Noto-Sans-regular/Noto-Sans-regular.svg#NotoSans') format('svg');
13
+ }
14
+
15
+ @font-face {
16
+ font-family: 'Noto Sans';
17
+ font-weight: 700;
18
+ font-style: normal;
19
+ src: url('../fonts/Noto-Sans-700/Noto-Sans-700.eot');
20
+ src: url('../fonts/Noto-Sans-700/Noto-Sans-700.eot?#iefix') format('embedded-opentype'),
21
+ local('Noto Sans Bold'),
22
+ local('Noto-Sans-700'),
23
+ url('../fonts/Noto-Sans-700/Noto-Sans-700.woff2') format('woff2'),
24
+ url('../fonts/Noto-Sans-700/Noto-Sans-700.woff') format('woff'),
25
+ url('../fonts/Noto-Sans-700/Noto-Sans-700.ttf') format('truetype'),
26
+ url('../fonts/Noto-Sans-700/Noto-Sans-700.svg#NotoSans') format('svg');
27
+ }
28
+
29
+ @font-face {
30
+ font-family: 'Noto Sans';
31
+ font-weight: 400;
32
+ font-style: italic;
33
+ src: url('../fonts/Noto-Sans-italic/Noto-Sans-italic.eot');
34
+ src: url('../fonts/Noto-Sans-italic/Noto-Sans-italic.eot?#iefix') format('embedded-opentype'),
35
+ local('Noto Sans Italic'),
36
+ local('Noto-Sans-italic'),
37
+ url('../fonts/Noto-Sans-italic/Noto-Sans-italic.woff2') format('woff2'),
38
+ url('../fonts/Noto-Sans-italic/Noto-Sans-italic.woff') format('woff'),
39
+ url('../fonts/Noto-Sans-italic/Noto-Sans-italic.ttf') format('truetype'),
40
+ url('../fonts/Noto-Sans-italic/Noto-Sans-italic.svg#NotoSans') format('svg');
41
+ }
42
+
43
+ @font-face {
44
+ font-family: 'Noto Sans';
45
+ font-weight: 700;
46
+ font-style: italic;
47
+ src: url('../fonts/Noto-Sans-700italic/Noto-Sans-700italic.eot');
48
+ src: url('../fonts/Noto-Sans-700italic/Noto-Sans-700italic.eot?#iefix') format('embedded-opentype'),
49
+ local('Noto Sans Bold Italic'),
50
+ local('Noto-Sans-700italic'),
51
+ url('../fonts/Noto-Sans-700italic/Noto-Sans-700italic.woff2') format('woff2'),
52
+ url('../fonts/Noto-Sans-700italic/Noto-Sans-700italic.woff') format('woff'),
53
+ url('../fonts/Noto-Sans-700italic/Noto-Sans-700italic.ttf') format('truetype'),
54
+ url('../fonts/Noto-Sans-700italic/Noto-Sans-700italic.svg#NotoSans') format('svg');
55
+ }
56
+
57
+ body {
58
+ background-color: #fff;
59
+ padding:50px;
60
+ font: 14px/1.5 "Noto Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
61
+ color:#727272;
62
+ font-weight:400;
63
+ }
64
+
65
+ h1, h2, h3, h4, h5, h6 {
66
+ color:#222;
67
+ margin:0 0 20px;
68
+ }
69
+
70
+ p, ul, ol, table, pre, dl {
71
+ margin:0 0 20px;
72
+ }
73
+
74
+ h1, h2, h3 {
75
+ line-height:1.1;
76
+ }
77
+
78
+ h1 {
79
+ font-size:28px;
80
+ }
81
+
82
+ h2 {
83
+ color:#393939;
84
+ }
85
+
86
+ h3, h4, h5, h6 {
87
+ color:#494949;
88
+ }
89
+
90
+ a {
91
+ color:#39c;
92
+ text-decoration:none;
93
+ }
94
+
95
+ a:hover {
96
+ color:#069;
97
+ }
98
+
99
+ a small {
100
+ font-size:11px;
101
+ color:#777;
102
+ margin-top:-0.3em;
103
+ display:block;
104
+ }
105
+
106
+ a:hover small {
107
+ color:#777;
108
+ }
109
+
110
+ .wrapper {
111
+ width:860px;
112
+ margin:0 auto;
113
+ }
114
+
115
+ blockquote {
116
+ border-left:1px solid #e5e5e5;
117
+ margin:0;
118
+ padding:0 0 0 20px;
119
+ font-style:italic;
120
+ }
121
+
122
+ code, pre {
123
+ font-family:Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal, Consolas, Liberation Mono, DejaVu Sans Mono, Courier New, monospace;
124
+ color:#333;
125
+ font-size:12px;
126
+ }
127
+
128
+ pre {
129
+ padding:8px 15px;
130
+ background: #f8f8f8;
131
+ border-radius:5px;
132
+ border:1px solid #e5e5e5;
133
+ overflow-x: auto;
134
+ }
135
+
136
+ table {
137
+ width:100%;
138
+ border-collapse:collapse;
139
+ }
140
+
141
+ th, td {
142
+ text-align:left;
143
+ padding:5px 10px;
144
+ border-bottom:1px solid #e5e5e5;
145
+ }
146
+
147
+ dt {
148
+ color:#444;
149
+ font-weight:700;
150
+ }
151
+
152
+ th {
153
+ color:#444;
154
+ }
155
+
156
+ img {
157
+ max-width:100%;
158
+ }
159
+
160
+ header {
161
+ width:270px;
162
+ float:left;
163
+ position:fixed;
164
+ -webkit-font-smoothing:subpixel-antialiased;
165
+ }
166
+
167
+ header ul {
168
+ list-style:none;
169
+ height:40px;
170
+ padding:0;
171
+ background: #f4f4f4;
172
+ border-radius:5px;
173
+ border:1px solid #e0e0e0;
174
+ width:270px;
175
+ }
176
+
177
+ header li {
178
+ width:89px;
179
+ float:left;
180
+ border-right:1px solid #e0e0e0;
181
+ height:40px;
182
+ }
183
+
184
+ header li:first-child a {
185
+ border-radius:5px 0 0 5px;
186
+ }
187
+
188
+ header li:last-child a {
189
+ border-radius:0 5px 5px 0;
190
+ }
191
+
192
+ header ul a {
193
+ line-height:1;
194
+ font-size:11px;
195
+ color:#999;
196
+ display:block;
197
+ text-align:center;
198
+ padding-top:6px;
199
+ height:34px;
200
+ }
201
+
202
+ header ul a:hover {
203
+ color:#999;
204
+ }
205
+
206
+ header ul a:active {
207
+ background-color:#f0f0f0;
208
+ }
209
+
210
+ strong {
211
+ color:#222;
212
+ font-weight:700;
213
+ }
214
+
215
+ header ul li + li + li {
216
+ border-right:none;
217
+ width:89px;
218
+ }
219
+
220
+ header ul a strong {
221
+ font-size:14px;
222
+ display:block;
223
+ color:#222;
224
+ }
225
+
226
+ section {
227
+ width:500px;
228
+ float:right;
229
+ padding-bottom:50px;
230
+ }
231
+
232
+ small {
233
+ font-size:11px;
234
+ }
235
+
236
+ hr {
237
+ border:0;
238
+ background:#e5e5e5;
239
+ height:1px;
240
+ margin:0 0 20px;
241
+ }
242
+
243
+ footer {
244
+ width:270px;
245
+ float:left;
246
+ position:fixed;
247
+ bottom:50px;
248
+ -webkit-font-smoothing:subpixel-antialiased;
249
+ }
250
+
251
+ @media print, screen and (max-width: 960px) {
252
+
253
+ div.wrapper {
254
+ width:auto;
255
+ margin:0;
256
+ }
257
+
258
+ header, section, footer {
259
+ float:none;
260
+ position:static;
261
+ width:auto;
262
+ }
263
+
264
+ header {
265
+ padding-right:320px;
266
+ }
267
+
268
+ section {
269
+ border:1px solid #e5e5e5;
270
+ border-width:1px 0;
271
+ padding:20px 0;
272
+ margin:0 0 20px;
273
+ }
274
+
275
+ header a small {
276
+ display:inline;
277
+ }
278
+
279
+ header ul {
280
+ position:absolute;
281
+ right:50px;
282
+ top:52px;
283
+ }
284
+ }
285
+
286
+ @media print, screen and (max-width: 720px) {
287
+ body {
288
+ word-wrap:break-word;
289
+ }
290
+
291
+ header {
292
+ padding:0;
293
+ }
294
+
295
+ header ul, header p.view {
296
+ position:static;
297
+ }
298
+
299
+ pre, code {
300
+ word-wrap:normal;
301
+ }
302
+ }
303
+
304
+ @media print, screen and (max-width: 480px) {
305
+ body {
306
+ padding:15px;
307
+ }
308
+
309
+ header ul {
310
+ width:99%;
311
+ }
312
+
313
+ header li, header ul li + li + li {
314
+ width:33%;
315
+ }
316
+ }
317
+
318
+ @media print {
319
+ body {
320
+ padding:0.4in;
321
+ font-size:12pt;
322
+ color:#444;
323
+ }
324
+ }