webby 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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}