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