]> jfr.im git - irc/freenode/web-7.0.git/blame - static/css/style.css
Technical styleguide
[irc/freenode/web-7.0.git] / static / css / style.css
CommitLineData
2ed0f35d 1/* vars */
f38f696b 2:root {
d439b099
EK
3 --c-dark: #292f2f;
4 --c-bg-dark: #3a4346;
5 --c-bg-light: #4c5456;
6 --c-light: #ecf7fa;
7 --c-hl-dark: #008499;
8 --c-hl-light: #3baec4;
1fb25165 9 --c-shadow: #dae5e2;
d439b099 10
d1cee50f 11 /* backgrounds */
d439b099
EK
12 --navbar-bg: var(--c-dark);
13 --jumbotron-bg: var(--c-bg-dark);
14 --copyright-bg: var(--c-dark);
15
d1cee50f 16 /* link colors */
d439b099
EK
17 --link-color: var(--c-hl-dark);
18 --link-hover-color: var(--c-hl-light);
19 --footer-link-color: var(--c-light);
20 --footer-hover-color: #fff;
21
d1cee50f 22 /* text colors */
d439b099
EK
23 --text-color: var(--c-dark);
24 --footer-text-color: var(--c-light);
25 --copyright-text-color: var(--c-light);
26 --jumbotron-text-color: var(--c-light);
27 --art-date-color: color(var(--c-dark) tint(50%));
28
d1cee50f 29 /* box colors */
d439b099
EK
30 --border-color: var(--c-dark);
31 --box-color: var(--c-bg-light);
32 --box-hover-color: var(--c-dark);;
d1cee50f 33 --box-round: 10px;
d439b099 34
d1cee50f 35 /* other */
46687d13 36 --max-width: 600px;
d1cee50f
SB
37 --max-width-box: 800px;
38 --margin-box-fa: 5px;
f38f696b 39}
d1cee50f
SB
40@custom-media --max-sm all and (max-width: 600px);
41@custom-media --max-md all and (max-width: 800px);
42@custom-media --max-rem all and (max-width: 60rem);
2ed0f35d 43
2ed0f35d 44/* reset css for browser compat */
2ed0f35d 45* {
f38f696b
EK
46 margin: 0;
47 padding: 0;
48 box-sizing: border-box;
2ed0f35d
S
49}
50
51/* global */
2ed0f35d 52body {
3bb8ef3b 53 font-family: 'Open Sans', sans-serif;
512215ac
EK
54 font-feature-settings: "lnum";
55 font-variant-numeric: lining-nums;
f38f696b
EK
56 color: var(--text-color);
57 font-size: 14px;
58 min-height: 100vh;
59 height: auto;
2ed0f35d
S
60}
61
834273d1
EK
62.invisible {
63 display: none;
64}
65
2ed0f35d 66a {
ef54eedd 67 color: var(--link-color);
f38f696b 68 text-decoration: none;
2ed0f35d
S
69}
70
d439b099
EK
71a:hover {
72 color: var(--link-hover-color);
73}
a9a27d4b
SB
74img {
75 max-width: 100%;
76}
d439b099 77
2ed0f35d 78/* navbar */
2ed0f35d 79.navbar {
ffc164dc 80 color: var(--c-light);
f38f696b
EK
81 width: 100%;
82 height: 50px;
83 background-color: var(--navbar-bg);
545c8ea4 84 box-shadow: 0 3px 4px rgba(0, 0, 0, 0.5);
f38f696b
EK
85 position: fixed;
86 left: 0;
87 right: 0;
88 top: 0;
89 display: flex;
90 flex-wrap: nowrap;
91 justify-content: space-between;
92 align-items: center;
545c8ea4 93 border-bottom: 1px solid var(--border-color);
f38f696b 94 z-index: 100;
15bc3c0b 95 padding-right: 5px;
2ed0f35d
S
96}
97
e43e6fbd 98@media (--max-sm) {
545c8ea4
EK
99 .navbar {
100 position: absolute;
101 }
102}
103
104.navbar a {
15bc3c0b 105 margin-top: 2px;
545c8ea4
EK
106 height: 40px;
107}
108
457df43b
SB
109/* nav = navbar
110 * pia = Private Internet access
111 */
ffc164dc
EK
112#nav-logo { order: 10; }
113#nav-pia { order: 30; }
114
115#nav-jump { order: 1000; }
116
117#nav-search {
118 order: 20;
119 margin-left: auto;
120 line-height: 35px;
121}
122
123#nav-search input {
124 background-color: var(--c-bg-dark);
125 border-style: none;
126 border-radius: 2px;
127 color: var(--c-light);
128 padding: .5em;
129 padding-right: 2em;
130 margin-right: -2em;
131}
132
133#nav-label {
134 display: inline-block;
135 width: 2em;
136 margin-right: .7em;
137}
138
139@media (--max-sm) {
140 #nav-search {
141 order: 100;
142 margin: 0 .5em;
143 }
144
145 #nav-pia {
146 margin-left: auto;
147 }
148
149 #nav-label {
150 width: auto;
151 margin: 0 .5em;
152 }
153
154 #nav-searchbox:not(:focus) {
155 display: inline-block;
156 position: absolute;
157 height: 0;
158 width: 0;
159 padding: 0;
160 margin: 0;
161 background: transparent;
162 overflow: hidden;
163 }
164
165 #nav-searchbox:focus {
166 position: absolute;
167 visibility: visible;
168 outline: none;
169 top: 0;
170 left: 0;
171 right: 0;
172 height: 50px;
173 line-height: 50px;
174 font-size: 1.5em;
175 padding-right: 2.5em;
176 width: 100%;
177 }
178
179 #nav-searchbox:focus + #nav-label {
180 display: block;
181 position: absolute;
182 pointer-events: none;
183 top: 0;
184 right: 0;
185 width: 1.5em;
186 font-size: 2em;
187 line-height: 50px;
188 padding-top: -.1em;
189 margin: 0;
190 }
191}
192
457df43b
SB
193/* n = nav */
194.nlogo { height: 40px; }
2ed0f35d 195
457df43b 196/* t = text (used in jumbotron for small logo as text) */
90257b61 197.tlogo {
e46a0cc3
EK
198 height: 2.4ex;
199 margin-bottom: -.47ex;
90257b61
AM
200 margin-left: -10px;
201 margin-right: -10px;
202}
203
2ed0f35d 204/* main */
2ed0f35d 205.container {
f38f696b 206 width: 100%;
0a1e9a90
EK
207 min-height: 100vh;
208 padding-top: 50px;
ea5b3fae 209 padding-bottom: 17.5rem;
2ed0f35d
S
210}
211
212.main {
0a1e9a90 213 margin: 2em auto;
588c2afb 214 padding: 0 .75em;
4f236e86 215 max-width: var(--max-width);
10218a76 216 line-height: 1.8;
2ed0f35d
S
217}
218
0e9ffab7
EK
219.main h1,
220.main h2,
221.main h3,
19ea0778 222.main h4,
6908d6d7
EK
223.main h5,
224.main h6,
96915a91 225.main li,
19ea0778 226.main pre,
cc0249fc 227.main p,
9bb233b4 228.main blockquote {
588c2afb 229 margin-top: .7em;
0e9ffab7
EK
230}
231
96915a91
EK
232.artlist li {
233 margin-top: 0;
234}
235
19ea0778
EK
236.main h1 + p,
237.main h2 + p,
238.main h3 + p,
6908d6d7
EK
239.main h4 + p,
240.main h5 + p,
241.main h6 + p,
9bb233b4 242.main blockquote > p:first-child {
19ea0778
EK
243 margin-top: 0;
244}
245
81cae952 246ul {
50d68b4a
EK
247 padding-left: 2em;
248 list-style-type: disc;
249}
250
f2fdabcd
SB
251ol {
252 padding-left: 2em;
253 list-style-type: decimal;
254}
255
19ea0778
EK
256hr {
257 margin-top: .8em;
258 margin-bottom: .8em;
259}
260
30b54282
EK
261table {
262 border: 1px solid var(--c-dark);
263 border-collapse: collapse;
264}
265
266th, td {
267 margin: .2em;
268}
269
270th {
271 background-color: var(--c-bg-dark);
272 color: var(--c-light);
273}
274
275td {
276 padding: .2em .5em;
277}
278
279td:not(:first-child), th:not(:first-child) {
280 border-left: 1px solid var(--c-dark);
281}
282
1fb25165
EK
283tr:nth-child(odd) {
284 background-color: var(--c-shadow);
285}
286
2ed0f35d 287/* jumbotron */
2ed0f35d 288.jumbotron {
f38f696b
EK
289 position: relative;
290 width: 100%;
0a1e9a90 291 margin-top: -50px;
f38f696b 292 background: var(--jumbotron-bg);
545c8ea4 293 box-shadow: 0 1px 5px rgba(0, 0, 0, 0.6);
f38f696b 294 color: var(--jumbotron-text-color);
7e59dd2d
SB
295 padding: 4em 0 4em 0;
296}
297
457df43b 298/* j = jumbotron */
7e59dd2d 299.jindex {
90257b61 300 z-index: 99;
7e59dd2d
SB
301}
302
303.jlogo {
304 display: block;
305 margin: 25px auto;
306}
307
308.jpia {
309 position: absolute;
310 height: 40px;
ea5b3fae 311 right: 0;
7e59dd2d
SB
312 top: 0;
313 margin: 25px;
314}
315
316@media (--max-sm) {
317 .jlogo {
318 margin: 2em auto -2em auto;
319 }
320 .jumbotron {
321 padding-bottom: 2em;
322 }
2ed0f35d
S
323}
324
325.child {
f38f696b 326 text-align: center;
ef54eedd 327 margin: .5em auto;
f38f696b
EK
328 font-size: 32px;
329 line-height: 48px;
ef54eedd 330 max-width: 75%;
2ed0f35d
S
331}
332
333.box-container {
f38f696b
EK
334 display: flex;
335 flex-wrap: wrap;
336 justify-content: space-around;
337 align-items: stretch;
d1cee50f 338 max-width: var(--max-width-box);
6c2065c4 339 margin: 0 auto;
2ed0f35d
S
340}
341
342.box {
6c2065c4 343 text-align: center;
f38f696b 344 text-decoration: none;
ef54eedd 345 color: var(--jumbotron-text-color);
f38f696b 346 margin-bottom: 5px;
f38f696b 347 flex-basis: 30%;
81cae952 348 min-width: 26%;
ef54eedd 349 background-color: var(--box-color);
f38f696b 350 border-radius: var(--box-round);
81cae952 351 padding: 1em;
f38f696b
EK
352}
353
354.box:hover,.box:active {
d439b099 355 color: var(--jumbotron-text-color);
f38f696b
EK
356 background-color: var(--box-hover-color);
357}
358
57bd8f7d 359.box span {
f38f696b 360 position: relative;
d4b00db0 361 top: initial;
257112d0 362 font-size: 20px;
ef54eedd 363 font-weight: 600;
d4b00db0 364 line-height: 16px;
d4b00db0 365 display: block;
81cae952 366 margin-top: .75em;
e9725e62 367}
368
457df43b 369/* fa = font awesome */
2ed0f35d 370.fa-users {
d1cee50f 371 margin-top: var(--margin-box-fa);
2ed0f35d
S
372}
373
cd9b0475 374.fa-comments,.fa-question {
d1cee50f 375 margin-bottom: var(--margin-box-fa);
2ed0f35d
S
376}
377
378.title {
f38f696b 379 text-align: center;
2ed0f35d
S
380}
381
d1cee50f
SB
382@media (--max-md) {
383 .box {
384 text-align: center;
385 }
386
387 .child {
388 font-size: 20px;
389 line-height: 30px;
390 padding: 10px 0 5px;
391 }
392
393 .fa-4x {
394 padding: 0;
395 margin: 0;
396 width: 60px;
397 text-align: center;
398 font-size: 28px;
399 }
400
401 .box-container {
402 flex-direction: column;
403 margin: 0 .5em;
404 }
405
57bd8f7d 406 .box span {
d1cee50f
SB
407 font-size: 22px;
408 line-height: 22px;
409 padding-left: 8px;
57bd8f7d 410 font-weight: bold;
d1cee50f 411 position: relative;
57bd8f7d 412 display: inline-block;
d1cee50f 413 text-align: center;
da5e0658 414 margin-top: 0;
d1cee50f
SB
415 }
416
417 .box {
418 text-align: left;
419 border-radius: calc(var(--box-round) / 2);
420 margin: 5px 0;
421 }
422}
423
b9f1cb69 424/* articles */
2ed0f35d 425h1 {
f38f696b 426 margin: 0;
2ed0f35d 427}
457df43b 428/* art = article */
8e4058cf
EK
429.artlist ul {
430 padding: 0;
5a791e57
EK
431 list-style-type: none;
432}
433
b9f1cb69 434.art-info {
512215ac 435 display: flex;
512215ac 436 flex-direction: row;
ea0081b5 437 flex-wrap: wrap;
512215ac 438 justify-content: space-between;
ea0081b5 439 align-items: baseline;
2ed0f35d
S
440}
441
b7b20c22 442.art-info h1 {
b7b20c22 443 margin-top: 0;
ea0081b5 444 display: inline;
0f23d7fd 445 margin-right: 2em;
b7b20c22
EK
446}
447
df8e5765
EK
448.art-warning {
449 margin-bottom: 2em;
450 padding: .5em;
451 border: 1px solid var(--border-color);
452 color: red;
453}
454
b9f1cb69
EK
455.art-body {
456 margin-bottom: 1em;
457}
458
8e4058cf
EK
459@media(--max-sm) {
460 .artlist .heading {
461 padding: 0 0.75em;
462 }
fd277af5
SB
463}
464
8e4058cf
EK
465.artlist ul {
466 max-width: var(--max-width);
467 margin: 2em auto;
468 margin-top: .5em;
d535feaa 469}
470
5a791e57 471.artlist li:not(:first-child) {
545c8ea4 472 border-top: 1px solid var(--border-color);
2ed0f35d
S
473}
474
a7a6cb8f 475.artlist .art {
5a791e57
EK
476 font-weight: bold;
477 font-size: 120%;
478}
479
dbdcf68c 480.art-date {
ea0081b5 481 display: inline-block;
0f23d7fd 482 vertical-align: baseline;
ea0081b5
EK
483 line-height: 1;
484 white-space: nowrap;
d1cee50f 485 color: var(--art-date-color);
512215ac
EK
486 font-feature-settings: "tnum";
487 font-variant-numeric: tabular-nums;
2ed0f35d
S
488}
489
5a791e57
EK
490.artlist .art-date {
491 margin-bottom: .5em;
492}
493
b9f1cb69
EK
494.art-nav {
495 display: flex;
496 flex-direction: row;
497 justify-content: space-between;
498 width: 100%;
2ed0f35d
S
499}
500
76f0d8e1
EK
501.art-nav * {
502 flex-basis: 30%;
503}
504
505.art-nav *:nth-child(1) { text-align: left; }
506.art-nav *:nth-child(2) { text-align: center; }
507.art-nav *:nth-child(3) { text-align: right; }
508
cc0249fc
SB
509blockquote {
510 padding-left: 1em;
cc0249fc
SB
511 display: inline-block;
512 border-left: .5em solid var(--c-shadow);
513 font-style: italic;
514}
515
d1cee50f 516@media (--max-md) {
4ec635fa
EK
517 .main.artlist {
518 padding-left: 0;
519 padding-right: 0;
520 }
521
512215ac 522 .artlist .art-info {
4ec635fa
EK
523 padding: 0 .75em;
524 }
525}
526
81cae952 527/* faq */
457df43b 528/* kb = knowledge base */
91b0633e 529.kb-index {
81cae952
EK
530 list-style-type: none;
531 padding-left: 0;
aad4ef42
EK
532 display: flex;
533 flex-direction: row;
534 flex-wrap: wrap;
535 justify-content: stretch;
81cae952
EK
536}
537
91b0633e 538.kb-index li {
aad4ef42
EK
539 display: block;
540 flex: 1 1 15em;
528842a3 541 height: 3em;
aad4ef42
EK
542 margin: 1em;
543}
544
91b0633e 545.kb-index li h2 {
aad4ef42
EK
546 margin-top: 0;
547}
548
91b0633e 549.kb-index a {
aad4ef42
EK
550 display: block;
551 color: var(--text-color);
552 width: 100%;
553 height: 100%;
554}
91b0633e 555.kb-index a h2 {
aad4ef42
EK
556 color: var(--link-color);
557}
91b0633e 558.kb-index a:hover h2 {
aad4ef42 559 color: var(--link-hover-color);
81cae952
EK
560}
561
2ed0f35d 562/* footer */
daf4b56e 563.footers {
28507109 564 /*min-height: 30vh;*/
ea5b3fae
EK
565 margin-top: -17rem;
566 min-height: 17rem;
daf4b56e
S
567}
568
2ed0f35d 569.footer {
f38f696b 570 background: var(--jumbotron-bg);
545c8ea4 571 color: var(--footer-text-color);
502cdd50 572 width: 100%;
502cdd50 573 box-shadow: 0 -3px 5px rgba(150,150,150,.36);
ea5b3fae 574 min-height: 15.4rem;
0f23d7fd 575 padding: 3em 0;
502cdd50 576}
577
57025cf5
EK
578.footer .fa-fw {
579 height: 14px;
580}
581
502cdd50 582.footer-container {
f38f696b 583 display: flex;
6c2065c4 584 flex-wrap: wrap;
0f23d7fd 585 justify-content: center;
f38f696b 586 align-items: flex-start;
502cdd50 587 margin: 0 auto;
2ed0f35d
S
588}
589
590.footerchild {
502cdd50 591 margin: 0 2em;
f38f696b 592 margin-top: .5em;
0f23d7fd 593 flex-grow: 1;
594 flex-shrink: 0;
28507109
EK
595}
596
597.footerchild:last-child {
7e59dd2d 598 margin-bottom: .5em;
6c2065c4
EK
599}
600
51b09107
EV
601.footer-push {
602 margin-left: auto;
603 width: max-content;
2ed0f35d
S
604}
605
502cdd50 606footer a {
545c8ea4 607 color: var(--footer-link-color);
2ed0f35d
S
608}
609
502cdd50 610footer a:hover {
d1cee50f 611 color: var(--footer-hover-color);
ef54eedd
EK
612}
613
f8883dc0 614.footer h2 {
28507109 615 margin-bottom: .1em;
f38f696b 616 display: inline-block;
f8883dc0
S
617}
618
81cae952
EK
619.footerchild ul, .footerchild ul ul {
620 padding-left: 0;
f38f696b
EK
621 margin-left: 10px;
622 margin-right: 10px;
623 list-style-type: none;
2ed0f35d
S
624}
625
626.footerchild ul ul {
f38f696b 627 padding-left: 30px;
2ed0f35d
S
628}
629
7e59dd2d 630@media (--max-sm) {
a406ba13 631 .footer-container {
f38f696b
EK
632 flex-direction: column;
633 }
db572d44 634
a406ba13
EV
635 .footer-push {
636 margin-left: 0;
7e59dd2d 637 width: 100%;
f38f696b 638 }
db572d44 639
f38f696b
EK
640 .footerchild ul li:last-child {
641 margin-bottom: .5em;
642 }
e9725e62 643
7e59dd2d
SB
644 .footer-push ul li:last-child {
645 margin-bottom: .1em;
646 }
647
457df43b 648 /* hdn = hidden */
f38f696b
EK
649 .hdn {
650 display: none;
651 }
7e59dd2d
SB
652 .footer {
653 padding: .5em 0;
654 }
fbbfcaa8
EK
655 .footer li a {
656 line-height: 1.8;
657 }
7e59dd2d
SB
658 .footer-push ul {
659 display: flex;
660 flex-wrap: wrap;
661 flex-direction: row;
662 justify-content: space-between;
663 align-items: flex-start;
664 text-align: center;
665 }
666 .footer-push ul li {
667 display: inline-block;
fbbfcaa8 668 font-size: 2.5rem;
7e59dd2d 669 }
fbbfcaa8
EK
670 .footerchild ul li img,
671 .footerchild ul li .fa-fw {
672 height: 2.5rem;
7e59dd2d 673 }
2ed0f35d
S
674}
675
502cdd50 676.footer h2, .footer h3 {
f38f696b
EK
677 margin-left: 10px;
678 margin-right: 10px;
2ed0f35d
S
679}
680
81cae952 681footer.copyright {
f38f696b 682 display: flex;
545c8ea4 683 flex-wrap: wrap;
f38f696b 684 justify-content: space-between;
545c8ea4
EK
685 background: var(--copyright-bg);
686 min-height: 1.5rem;
687 color: var(--copyright-text-color);
81cae952
EK
688 padding-left: .5em;
689 padding-right: .5em;
690 overflow: hidden;
db572d44
SB
691}
692
81cae952
EK
693footer.copyright div {
694 display: flex;
695 align-items: center;
ea5b3fae
EK
696 height: 1.6rem;
697 line-height: 1.6rem;
81cae952 698 vertical-align: top;
db572d44
SB
699}
700
81cae952
EK
701.copyright * {
702 margin: 0;
ea5b3fae
EK
703 height: 1.6rem;
704 line-height: 1.6rem;
df74dd1d
SB
705}
706
502cdd50 707.copyright .fa {
708 height: 100%;
5b76ff14
SB
709 vertical-align: top;
710 font-size: 1.4em;
502cdd50 711}
712
81cae952
EK
713.copyright .footer-link {
714 height: 28px;
f38f696b 715 margin-right: .5em;
81cae952
EK
716}
717
718.copyright img {
81cae952 719 width: auto;
ebee5e25 720}