webby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/History.txt +3 -0
  2. data/Manifest.txt +44 -0
  3. data/README.txt +50 -0
  4. data/Rakefile +29 -0
  5. data/bin/webby +14 -0
  6. data/data/Rakefile +6 -0
  7. data/data/content/css/blueprint/License.txt +21 -0
  8. data/data/content/css/blueprint/Readme.txt +93 -0
  9. data/data/content/css/blueprint/lib/buttons.css +112 -0
  10. data/data/content/css/blueprint/lib/compressed.css +127 -0
  11. data/data/content/css/blueprint/lib/grid.css +177 -0
  12. data/data/content/css/blueprint/lib/img/baseline-black.png +0 -0
  13. data/data/content/css/blueprint/lib/img/baseline.png +0 -0
  14. data/data/content/css/blueprint/lib/img/grid.png +0 -0
  15. data/data/content/css/blueprint/lib/img/icons/cross.png +0 -0
  16. data/data/content/css/blueprint/lib/img/icons/textfield_key.png +0 -0
  17. data/data/content/css/blueprint/lib/img/icons/tick.png +0 -0
  18. data/data/content/css/blueprint/lib/reset.css +37 -0
  19. data/data/content/css/blueprint/lib/typography.css +159 -0
  20. data/data/content/css/blueprint/print.css +75 -0
  21. data/data/content/css/blueprint/screen.css +34 -0
  22. data/data/content/css/site.css +0 -0
  23. data/data/content/index.rhtml +18 -0
  24. data/data/layouts/default.rhtml +55 -0
  25. data/data/tasks/create.rake +7 -0
  26. data/data/templates/page.erb +18 -0
  27. data/lib/webby.rb +67 -0
  28. data/lib/webby/auto_builder.rb +75 -0
  29. data/lib/webby/builder.rb +165 -0
  30. data/lib/webby/file.rb +191 -0
  31. data/lib/webby/main.rb +129 -0
  32. data/lib/webby/pages_db.rb +70 -0
  33. data/lib/webby/renderer.rb +94 -0
  34. data/lib/webby/resource.rb +174 -0
  35. data/lib/webby/utils.rb +24 -0
  36. data/lib/webby/webby_task.rb +136 -0
  37. data/spec/spec.opts +1 -0
  38. data/spec/spec_helper.rb +12 -0
  39. data/spec/webby/file_spec.rb +107 -0
  40. data/tasks/doc.rake +60 -0
  41. data/tasks/gem.rake +112 -0
  42. data/tasks/manifest.rake +39 -0
  43. data/tasks/setup.rb +108 -0
  44. data/tasks/spec.rake +37 -0
  45. metadata +128 -0
@@ -0,0 +1,3 @@
1
+ == 0.1.0 / 2007-08-22
2
+
3
+ * Birthday!
@@ -0,0 +1,44 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/webby
6
+ data/Rakefile
7
+ data/content/css/blueprint/License.txt
8
+ data/content/css/blueprint/Readme.txt
9
+ data/content/css/blueprint/lib/buttons.css
10
+ data/content/css/blueprint/lib/compressed.css
11
+ data/content/css/blueprint/lib/grid.css
12
+ data/content/css/blueprint/lib/img/baseline-black.png
13
+ data/content/css/blueprint/lib/img/baseline.png
14
+ data/content/css/blueprint/lib/img/grid.png
15
+ data/content/css/blueprint/lib/img/icons/cross.png
16
+ data/content/css/blueprint/lib/img/icons/textfield_key.png
17
+ data/content/css/blueprint/lib/img/icons/tick.png
18
+ data/content/css/blueprint/lib/reset.css
19
+ data/content/css/blueprint/lib/typography.css
20
+ data/content/css/blueprint/print.css
21
+ data/content/css/blueprint/screen.css
22
+ data/content/css/site.css
23
+ data/content/index.rhtml
24
+ data/layouts/default.rhtml
25
+ data/tasks/create.rake
26
+ data/templates/page.erb
27
+ lib/webby.rb
28
+ lib/webby/auto_builder.rb
29
+ lib/webby/builder.rb
30
+ lib/webby/file.rb
31
+ lib/webby/main.rb
32
+ lib/webby/pages_db.rb
33
+ lib/webby/renderer.rb
34
+ lib/webby/resource.rb
35
+ lib/webby/utils.rb
36
+ lib/webby/webby_task.rb
37
+ spec/spec.opts
38
+ spec/spec_helper.rb
39
+ spec/webby/file_spec.rb
40
+ tasks/doc.rake
41
+ tasks/gem.rake
42
+ tasks/manifest.rake
43
+ tasks/setup.rb
44
+ tasks/spec.rake
@@ -0,0 +1,50 @@
1
+ Webby
2
+
3
+ * {Homepage}[http://webby.rubyforge.org/]
4
+ * {Rubyforge Project}[http://rubyforge.org/projects/webby]
5
+ * email tim dot pease at gmail dot com
6
+
7
+ == DESCRIPTION:
8
+
9
+ Webby is a tool for creating and managing static websites. Web pages
10
+ are written using ERB, Textile, Markdown, HAML, etc. The Webby rake tasks
11
+ transform the pages into valid HTML, and these pages can be uploaded to a
12
+ web server for general consumption.
13
+
14
+ == FEATURES:
15
+
16
+ * Provides +webby+ for creating new websites
17
+ * Uses rake for building HTML from the pages and layouts
18
+ * Provides templates for quickly creating new pages
19
+
20
+ == INSTALL:
21
+
22
+ gem install webby
23
+
24
+ == EXAMPLE:
25
+
26
+ $ webby my_site
27
+ creating my_site
28
+
29
+ $ cd my_site
30
+
31
+ $ rake create:page new_page.rhtml
32
+ creating content/new_page.rhtml
33
+
34
+ $ rake create:page another/new_page.rhtml
35
+ creating content/another/new_page.rhtml
36
+
37
+ $ rake build
38
+ creating output/index.html
39
+ creating output/new_page.html
40
+ creating output/another/new_page.html
41
+
42
+ == REQUIREMENTS:
43
+
44
+ * rake
45
+ * rspec
46
+ * directory_watcher
47
+
48
+ == LICENSE:
49
+
50
+ MIT
@@ -0,0 +1,29 @@
1
+ # $Id$
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+ require 'spec'
6
+ require 'webby'
7
+ load './tasks/setup.rb'
8
+
9
+ task :default => 'spec:run'
10
+
11
+ PROJ.name = 'webby'
12
+ PROJ.summary = 'static website creation and management'
13
+ PROJ.authors = 'Tim Pease'
14
+ PROJ.email = 'tim.pease@gmail.com'
15
+ PROJ.url = 'http://webby.rubyforge.org/'
16
+ PROJ.description = paragraphs_of('README.txt', 3).join("\n\n")
17
+ PROJ.changes = paragraphs_of('History.txt', 0..1).join("\n\n")
18
+ PROJ.rubyforge_name = 'webby'
19
+
20
+ PROJ.version = Webby::VERSION
21
+
22
+ PROJ.exclude << '^(\.\/|\/)?site'
23
+
24
+ PROJ.spec_opts << '--color'
25
+
26
+ PROJ.dependencies << ['rspec', ">= #{Spec::VERSION::STRING}"]
27
+ PROJ.dependencies << ['directory_watcher', ">= #{DirectoryWatcher::VERSION}"]
28
+
29
+ # EOF
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'webby'
5
+ rescue LoadError
6
+ path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ raise if $:.include? path
8
+ $: << path
9
+ retry
10
+ end
11
+
12
+ ::Webby::Main.run *ARGV
13
+
14
+ # EOF
@@ -0,0 +1,6 @@
1
+
2
+ task :default => :build
3
+
4
+ # import rake tasks
5
+ FileList['tasks/*.rake'].each {|task| import task}
6
+
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2007 Olav Bjorkoy (http://bjorkoy.com)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sub-license, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice, and every other copyright notice found in this
11
+ software, and all the attributions in every file, and this permission notice
12
+ shall be included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+
@@ -0,0 +1,93 @@
1
+ Blueprint CSS framework (http://bjorkoy.com/blueprint)
2
+ ----------------------------------------------------------------
3
+
4
+ Welcome to Blueprint! This is a CSS framework designed to
5
+ cut down on your CSS development time. It gives you a solid
6
+ foundation to build your own CSS on. Here are some of the
7
+ features BP provides out-of-the-box:
8
+
9
+ * An easily customizable grid
10
+ * Sensible default typography
11
+ * A typographic baseline
12
+ * Perfected browser CSS reset
13
+ * A stylesheet for printing
14
+ * Absolutely no bloat
15
+
16
+
17
+ Setup instructions
18
+ ----------------------------------------------------------------
19
+
20
+ Here's how you set up Blueprint on your site.
21
+
22
+ 1) Upload BP to your server, and place it in whatever folder
23
+ you'd like. A good choice would be your CSS folder.
24
+
25
+ 2) Add the following lines to every <head> section of your
26
+ site. Make sure the link path is correct (here, BP is in my CSS folder):
27
+
28
+ <link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection">
29
+ <link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print">
30
+
31
+ 3) That's it! Blueprint is now ready to shine.
32
+
33
+
34
+ How to use Blueprint
35
+ ----------------------------------------------------------------
36
+
37
+ Here's a quick primer on how to use BP:
38
+ http://code.google.com/p/blueprintcss/wiki/Tutorial
39
+
40
+ Each file is also heavily commented, so you'll learn a
41
+ lot by reading through them.
42
+
43
+
44
+ Files in Blueprint
45
+ ----------------------------------------------------------------
46
+
47
+ The framework has a few files you should check out. Every file
48
+ contains lots of (hopefully) clarifying comments.
49
+
50
+ * screen.css
51
+ This is the main file of the framework. It imports other CSS
52
+ files from the "lib" directory, and should be included on
53
+ every page.
54
+
55
+ * print.css
56
+ This file sets some default print rules, so that printed versions
57
+ of your site looks better than they usually would. It should be
58
+ included on every page.
59
+
60
+ * lib/grid.css
61
+ This file sets up the grid (it's true). It has a lot of classes
62
+ you apply to divs to set up any sort of column-based grid.
63
+
64
+ * lib/typography.css
65
+ This file sets some default typography. It also has a few
66
+ methods for some really fancy stuff to do with your text.
67
+
68
+ * lib/reset.css
69
+ This file resets CSS values that browsers tend to set for you.
70
+
71
+
72
+ Credits
73
+ ----------------------------------------------------------------
74
+
75
+ Many parts of BP are directly inspired by other peoples work.
76
+ You may thank them for their brilliance. However, *do not* ask
77
+ them for support or any kind of help with BP.
78
+
79
+ * Jeff Croft [jeffcroft.com]
80
+ * Nathan Borror [playgroundblues.com]
81
+ * Christian Metts [mintchaos.com]
82
+ * Wilson Miner [wilsonminer.com]
83
+ * The Typogrify Project [code.google.com/p/typogrify]
84
+ * Eric Meyer [meyerweb.com/eric]
85
+ * Angus Turnbull [twinhelix.com]
86
+ * Khoi Vinh [subtraction.com]
87
+
88
+ Questions, comments, suggestions or bug reports all go to
89
+ olav at bjorkoy dot com. Thanks for your interest!
90
+
91
+
92
+ == By Olav Bjorkoy
93
+ == http://bjorkoy.com
@@ -0,0 +1,112 @@
1
+ /* --------------------------------------------------------------
2
+
3
+ Buttons.css
4
+ * Gives you some great buttons for many purposes.
5
+
6
+ Created by Kevin Hale [particletree.com]
7
+ * particletree.com/features/rediscovering-the-button-element
8
+
9
+ W3C: "Buttons created with the BUTTON element function
10
+ just like buttons created with the INPUT element,
11
+ but they offer richer rendering possibilities."
12
+
13
+ Usage:
14
+
15
+ <button type="submit" class="button positive">
16
+ <img src="css/blueprint/lib/img/icons/tick.png" alt=""/> Save
17
+ </button>
18
+
19
+ <a class="button" href="/password/reset/">
20
+ <img src="css/blueprint/lib/img/icons/textfield_key.png" alt=""/> Change Password
21
+ </a>
22
+
23
+ <a href="#" class="button negative">
24
+ <img src="css/blueprint/lib/img/icons/cross.png" alt=""/> Cancel
25
+ </a>
26
+
27
+
28
+ -------------------------------------------------------------- */
29
+
30
+ a.button, button {
31
+ display:block;
32
+ float:left;
33
+ margin:0 0.583em 0.667em 0;
34
+ padding:5px 10px 6px 7px; /* Links */
35
+
36
+ border:0.1em solid #dedede;
37
+ border-top:0.1em solid #eee;
38
+ border-left:0.1em solid #eee;
39
+
40
+ background-color:#f5f5f5;
41
+ font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
42
+ font-size:100%;
43
+ line-height:130%;
44
+ text-decoration:none;
45
+ font-weight:bold;
46
+ color:#565656;
47
+ cursor:pointer;
48
+ }
49
+ button {
50
+ width:auto;
51
+ overflow:visible;
52
+ padding:4px 10px 3px 7px; /* IE6 */
53
+ }
54
+ button[type] {
55
+ padding:5px 10px 5px 7px; /* Firefox */
56
+ line-height:17px; /* Safari */
57
+ }
58
+ *:first-child+html button[type] {
59
+ padding:4px 10px 3px 7px; /* IE7 */
60
+ }
61
+ button img, a.button img{
62
+ margin:0 3px -3px 0 !important;
63
+ padding:0;
64
+ border:none;
65
+ width:16px;
66
+ height:16px;
67
+ }
68
+
69
+
70
+ /* Button colors
71
+ -------------------------------------------------------------- */
72
+
73
+ /* Standard */
74
+ button:hover, a.button:hover{
75
+ background-color:#dff4ff;
76
+ border:0.1em solid #c2e1ef;
77
+ color:#336699;
78
+ }
79
+ a.button:active{
80
+ background-color:#6299c5;
81
+ border:1px solid #6299c5;
82
+ color:#fff;
83
+ }
84
+
85
+ /* Positive */
86
+ .positive {
87
+ color:#529214;
88
+ }
89
+ a.positive:hover, button.positive:hover {
90
+ background-color:#E6EFC2;
91
+ border:0.1em solid #C6D880;
92
+ color:#529214;
93
+ }
94
+ a.positive:active {
95
+ background-color:#529214;
96
+ border:0.1em solid #529214;
97
+ color:#fff;
98
+ }
99
+
100
+ /* Negative */
101
+ .negative {
102
+ color:#d12f19;
103
+ }
104
+ a.negative:hover, button.negative:hover {
105
+ background:#fbe3e4;
106
+ border:0.1em solid #fbc2c4;
107
+ }
108
+ a.negative:active {
109
+ background-color:#d12f19;
110
+ border:0.1em solid #d12f19;
111
+ color:#fff;
112
+ }
@@ -0,0 +1,127 @@
1
+ /* Blueprint Comressed Version */
2
+
3
+ /* reset.css */
4
+ html,body,div,span,applet,object,iframe, h1,h2,h3,h4,h5,h6,p,blockquote,pre, a,abbr,acronym,address,big,cite,code, del,dfn,em,font,img,ins,kbd,q,s,samp, small,strike,strong,sub,sup,tt,var, dl,dt,dd,ol,ul,li, fieldset,form,label,legend, table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
5
+ body{line-height:1;color:#333;background:white;}
6
+ table{border-collapse:separate;border-spacing:0;}
7
+ caption,th,td{text-align:left;font-weight:normal;}
8
+ blockquote:before,blockquote:after,q:before,q:after{content:"";}
9
+ blockquote,q{quotes:"" "";}
10
+
11
+ /* typograpghy.css */
12
+ body{font-family:"Lucida Grande",Helvetica,Arial,Verdana,sans-serif;line-height:1.5;}
13
+ body{font-size:75%;}
14
+ html > body{font-size:12px;}
15
+ h1,h2,h3,h4,h5,h6{font-family:Helvetica,Arial,"Lucida Grande",Verdana,sans-serif;color:#111;clear:both;}
16
+ h1{font-size:3em;}
17
+ h2{font-size:2em;}
18
+ h3{font-size:1.5em;line-height:2;}
19
+ h4{font-size:1.2em;line-height:1.25;font-weight:bold;}
20
+ h5{font-size:1em;font-weight:bold;}
21
+ h6{font-size:1em;}
22
+ p{margin:0 0 1.5em 0;text-align:justify;}
23
+ p.last{margin-bottom:0;}
24
+ p img{float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
25
+ p img.top{margin-top:0;}
26
+ ul,ol{margin:0 0 1.5em 1.5em;}
27
+ ol{list-style-type:decimal;}
28
+ dl{margin:1.5em 0;}
29
+ dl dt{font-weight:bold;}
30
+ a{color:#125AA7;text-decoration:underline;outline:none;}
31
+ a:hover{color:#000;}
32
+ blockquote{margin:1.5em 0 1.5em 1.5em;color:#666;font-style:italic;}
33
+ strong{font-weight:bold;}
34
+ em{font-style:italic;}
35
+ pre{margin-bottom:1.3em;background:#eee;border:0.1em solid #ddd;padding:1.5em;}
36
+ code{font:0.9em Monaco,monospace;}
37
+ hr{background:#B2CCFF;color:#B2CCFF;clear:both;float:none;width:100%;height:0.1em;margin:0 0 1.4em 0;border:none;}
38
+ * html hr{margin:0 0 1.2em 0;}
39
+ table{margin-bottom:1.4em;border-top:0.1em solid #ddd;border-left:0.1em solid #ddd;}
40
+ th,td{height:1em;padding:0.2em 0.4em;border-bottom:0.1em solid #ddd;border-right:0.1em solid #ddd;}
41
+ th{font-weight:bold;}
42
+ label{font-weight:bold;}
43
+ textarea{height:180px;width:300px;}
44
+ p.small{font-size:0.8em;margin-bottom:1.875em;line-height:1.875em;}
45
+ p.large{font-size:1.2em;line-height:2.5em;}
46
+ p.quiet{color:#666;}
47
+ .hide{display:none;}
48
+ .alt{color:#666;font-family:"Warnock Pro","Goudy Old Style","Palatino","Book Antiqua",serif;font-size:1.2em;line-height:1%;font-style:italic;}
49
+ .dquo{margin-left:-.7em;}
50
+ p.incr,.incr p{font-size:0.83333em;line-height:1.44em;margin-bottom:1.8em;}
51
+
52
+ /* grid.css */
53
+ body{text-align:center;margin:36px 0;}
54
+ .container{text-align:left;position:relative;padding:0;margin:0 auto;width:960px;}
55
+ .column{float:left;margin:0 10px;padding:0;}
56
+ * html .column{overflow-x:hidden;}
57
+ .border{padding-right:9px;margin-right:0;border-right:1px solid #ddd;}
58
+ .first{margin-left:0;}
59
+ .last{margin-right:0;}
60
+ .span-1{width:50px;}
61
+ .span-2{width:120px;}
62
+ .span-3{width:190px;}
63
+ .span-4{width:260px;}
64
+ .span-5{width:330px;}
65
+ .span-6{width:400px;}
66
+ .span-7{width:470px;}
67
+ .span-8{width:540px;}
68
+ .span-9{width:610px;}
69
+ .span-10{width:680px;}
70
+ .span-11{width:750px;}
71
+ .span-12{width:820px;}
72
+ .span-13{width:890px;}
73
+ .span-14{width:960px;margin:0;}
74
+ .append-1{padding-right:70px;}
75
+ .append-2{padding-right:140px;}
76
+ .append-3{padding-right:210px;}
77
+ .append-4{padding-right:280px;}
78
+ .append-5{padding-right:350px;}
79
+ .append-6{padding-right:420px;}
80
+ .append-7{padding-right:490px;}
81
+ .append-8{padding-right:560px;}
82
+ .append-9{padding-right:630px;}
83
+ .append-10{padding-right:700px;}
84
+ .append-11{padding-right:770px;}
85
+ .append-12{padding-right:840px;}
86
+ .append-13{padding-right:910px;}
87
+ .prepend-1{padding-left:70px;}
88
+ .prepend-2{padding-left:140px;}
89
+ .prepend-3{padding-left:210px;}
90
+ .prepend-4{padding-left:280px;}
91
+ .prepend-5{padding-left:350px;}
92
+ .prepend-6{padding-left:420px;}
93
+ .prepend-7{padding-left:490px;}
94
+ .prepend-8{padding-left:560px;}
95
+ .prepend-9{padding-left:630px;}
96
+ .prepend-10{padding-left:700px;}
97
+ .prepend-11{padding-left:770px;}
98
+ .prepend-12{padding-left:840px;}
99
+ .prepend-13{padding-left:910px;}
100
+ .box{padding:1.5em;margin-bottom:1.5em;background:#F0F0F0;}
101
+ .clear{display:inline-block;}
102
+ .clear:after,.container:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
103
+ * html .clear{height:1%;}
104
+ .clear{display:block;}
105
+ img{margin:0 0 1.5em 0;}
106
+ .pull-1{margin-left:-70px;}
107
+ .pull-2{margin-left:-140px;}
108
+ .pull-3{margin-left:-210px;}
109
+ .push-0{margin:0 0 0 1.5em;float:right;}
110
+ .push-1{margin:0 -88px 0 1.5em;float:right;}
111
+ .push-2{margin:0 -158px 0 1.5em;float:right;}
112
+ .push-3{margin:0 -228px 0 1.5em;float:right;}
113
+
114
+ /* buttons.css */
115
+ a.button,button{display:block;float:left;margin:0 0.583em 0.667em 0;padding:5px 10px 6px 7px;border:0.1em solid #dedede;border-top:0.1em solid #eee;border-left:0.1em solid #eee;background-color:#f5f5f5;line-height:130%;text-decoration:none;font-weight:bold;color:#565656;cursor:pointer;font:100% "Lucida Grande",Tahoma,Arial,Verdana,sans-serif}
116
+ button{width:auto;overflow:visible;padding:4px 10px 3px 7px}
117
+ button[type]{padding:5px 10px 5px 7px;line-height:17px}
118
+ *:first-child+html button[type]{padding:4px 10px 3px 7px}
119
+ button img,a.button img{margin:0 3px -3px 0 !important;padding:0;border:none;width:16px;height:16px}
120
+ button:hover,a.button:hover{background-color:#dff4ff;border:0.1em solid #c2e1ef;color:#336699}
121
+ a.button:active{background-color:#6299c5;border:1px solid #6299c5;color:#fff}
122
+ .positive{color:#529214}
123
+ a.positive:hover,button.positive:hover{background-color:#E6EFC2;border:0.1em solid #C6D880;color:#529214}
124
+ a.positive:active{background-color:#529214;border:0.1em solid #529214;color:#fff}
125
+ .negative{color:#d12f19}
126
+ a.negative:hover,button.negative:hover{background:#fbe3e4;border:0.1em solid #fbc2c4}
127
+ a.negative:active{background-color:#d12f19;border:0.1em solid #d12f19;color:#fff}