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