Fix media queries that disable justification.
[homepage.git] / content / style.scss
1 /*
2  * Nick's web site: default stylesheet
3  *
4  * Copyright © 2018-2020 Nick Bowler
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
18  */
19
20 // colour definitions
21 $backgroundcolour:  #ffffff;
22 $foregroundcolour:  #000000;
23
24 $linkdefaultcolour: #0000cd;
25 $linkactivecolour:  #ff0000;
26 $linkvisitedcolour: #800080;
27
28 $ruledefaultcolour: #d3d3d3;
29 $rulestrongcolour:  #696969;
30
31 $annotationcolour:  #708090;
32
33 $tableshadecolour:  #f5f5f5;
34
35 @mixin header_size($maxwidth, $fontsize) {
36     font-size: $fontsize;
37     max-width: 1em * ($maxwidth / $fontsize);
38 }
39
40 body {
41     background-color: $backgroundcolour;
42     color: $foregroundcolour;
43     font-family: sans-serif;
44     margin: 1em;
45 }
46
47 a:link { color: $linkdefaultcolour; }
48 a:visited { color: $linkvisitedcolour; }
49 a:active { color: $linkactivecolour; }
50
51 h1 { @include header_size(60em, 2em); }
52 h2 { @include header_size(60em, 1.5em); }
53 h5 { @include header_size(60em, 1em); }
54
55 p>img { max-width: 40em; width: 100%; height: auto; }
56
57 p, dt, dd, li {
58     text-align: justify;
59     @media (max-width: 28em) { text-align: left; }
60     padding: 0;
61     margin: 0;
62 }
63
64 p, table, div, ul, ol, dl, hr {
65     max-width: 50em;
66     padding: 0;
67     margin: 0;
68 }
69
70 p, table, body>div, h5 { margin: 1em 0; }
71
72 li { margin: 0 0 0 2em; }
73 dd { margin: 0 0 0 1em; }
74
75 hr {
76     clear: both;
77     margin: 0.5em 0;
78     border: 0;
79     border-top: 1px solid $ruledefaultcolour;
80 }
81
82 kbd {
83     font-family: monospace;
84     font-size: 0.95em;
85     &:before { content: "% "; }
86 }
87
88 .permalink {
89     font-size: small;
90     color: $annotationcolour;
91
92     a:link, a:visited { color: inherit; }
93     @media not screen { visibility: hidden; }
94 }
95
96 // General table styles.
97 table {
98     border: 1px solid $ruledefaultcolour;
99     border-collapse: collapse;
100     width: 100%;
101 }
102
103 table>* { font-size: 0.9em; }
104 caption {
105     caption-side: top;
106     font-weight: bold;
107     font-size: 1em;
108     text-align: left;
109     margin: 0 0 0.5em 0;
110 }
111
112 td, th {
113     vertical-align: middle;
114     text-align: left;
115     padding: 1ex;
116     margin: 0;
117 }
118
119 thead>tr, tbody>tr { border: solid $ruledefaultcolour; }
120 th, thead>tr { border-bottom: 1px solid $rulestrongcolour; }
121 *>table, *>th { border: none; }
122 thead>tr { border-width: 1px; }
123 tbody>tr { border-width: 0 1px; }
124
125 td + td { box-shadow: -1px 0 $backgroundcolour; }
126
127 tbody>tr {
128     &:nth-of-type(even) { background-color: $tableshadecolour; }
129     &:last-child { border-bottom: solid 1px $ruledefaultcolour; }
130 }
131
132 // Specific table styles
133 table.cc {
134     &>tr>*:first-child, &>*>tr>*:first-child {
135         &+* { text-align: center; }
136         text-align: center;
137     }
138 }
139
140 // Site header rules
141 #breadcrumbs>*, #sitetitle>* { font-size: 0.8em; }
142 #breadcrumbs {
143     * {
144         display: inline;
145         list-style-type: none;
146         vertical-align: top;
147         padding: 0;
148         margin: 0;
149     }
150
151     li + li:before { content: "/ "; }
152 }
153 #sitetitle * {
154     display: inline-block;
155     float: right;
156 }
157
158 // Site footer rules
159 #footer, #article-info {
160     text-align: center;
161     max-width: 44em;
162     padding: 0 3em;
163     margin: 0;
164
165     p {
166         display: inline-block;
167         font-size: 0.8em;
168         max-width: 100%;
169         margin: 0.2em 0;
170     }
171 }
172
173 #footer p { color: $annotationcolour; }
174 #article-info p { font-style: italic; }
175
176 // "unordered" lists with explicit ordering in content
177 ul.ordered > {
178     li { list-style: none; }
179     li>span:first-child, li>*:first-child>span:first-child {
180         display: inline-block;
181         text-align: right;
182         margin-left: -1.8em;
183         min-width: 1.8em;
184     }
185 }
186
187 @media (max-width: 512px) {
188     body { margin: 0.6em; }
189     ul ul { margin-left: -1.2em; }
190     dd { margin: 0; }
191 }
192
193 @media (max-width: 35em) {
194     #sitetitle * { float: none; }
195     #footer { padding: 0 1em; }
196 }