web/assets/css/main.scss

1282 lines
21 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
---
/*!
* The main styles.
* © 2018-2019 Cotes Chung
* MIT Licensed
*/
@import "_typograph/syntax";
@import "_typograph/fonts";
html, body {
height: 100%;
font-size: 16px;
}
/* Solved jumping scrollbar */
html {
overflow-y: scroll;
}
body {
line-height: 1.75rem;
background: #fafafa;
color: #212529;
-webkit-font-smoothing: antialiased;
font-family: 'Source Sans Pro', 'Microsoft Yahei', sans-serif;
}
/*--- sidebar layout ---*/
#sidebar {
padding-left: 0;
padding-right: 0;
position: fixed;
top: 0;
left: 0;
height: 100%;
overflow-y: auto;
width: 260px;
z-index: 99;
-webkit-transition: transform 0.4s ease;
transition: transform 0.4s ease;
background: rgb(42, 30, 107);
background: radial-gradient(circle, rgba(42, 30, 107, 1) 0%, rgba(35, 37, 46, 1) 100%);
}
#sidebar a {
color: rgba(255, 255, 255, 0.5);
transition: color 0.35s ease-in-out;
}
#sidebar .nav-item {
height: 20%;
}
#sidebar .nav-link {
border-radius: 0;
font-size: .95rem;
font-weight: 600;
letter-spacing: 1px;
}
#sidebar .nav-item:hover .nav-link {
color: #f8f9facf;
}
#sidebar .nav-item.active .nav-link {
color: #fcfcfc;
}
#sidebar ul {
height: 16.5rem;
display: -webkit-box;
display: -ms-flexbox;
}
#sidebar ul > li.active:nth-child(1) ~ li:last-child::after,
#sidebar ul > li.nav-item:nth-child(1):hover ~ li:last-child::after {
// top: calc(-400% + (26px / 2));
top: -195px;
visibility: visible;
}
#sidebar ul > li.active:nth-child(2) ~ li:last-child::after,
#sidebar ul > li.nav-item:nth-child(2):hover ~ li:last-child::after {
// top: calc(-300% + (26px / 2));
top: -143px;
visibility: visible;
}
#sidebar ul > li.active:nth-child(3) ~ li:last-child::after,
#sidebar ul > li.nav-item:nth-child(3):hover ~ li:last-child::after {
// top: calc(-200% + (26px / 2));
top: -91px;
visibility: visible;
}
#sidebar ul > li.active:nth-child(4) ~ li:last-child::after,
#sidebar ul > li.nav-item:nth-child(4):hover ~ li:last-child::after {
// top: calc(-100% + (26px / 2));
top: -39px;
visibility: visible;
}
#sidebar ul > li.active:nth-child(5):last-child::after,
#sidebar ul > li.nav-item:nth-child(5):last-child:hover::after {
// top: calc(26px / 2);
top: 13px;
visibility: visible;
}
#sidebar ul > li:last-child > a {
margin-right: -3px;
max-width: calc(100% - 3px);
}
#sidebar ul > li:last-child::after {
visibility: hidden;
content: "";
position: relative;
width: 3px;
height: 26px;
background: #fcfcfc;;
pointer-events: none;
}
@media (hover: hover) {
#sidebar ul>li:last-child::after {
-webkit-transition: top .5s ease;
-moz-transition: top .5s ease;
-o-transition: top .5s ease;
transition: top .5s ease;
}
}
#nav-wrap {
width: 100%;
flex-grow: 1;
}
#profile-wrap {
margin-top: 2rem;
}
#avatar>a {
display: block;
width: 6rem;
height: 6rem;
border-radius: 50%;
border: 2px solid #b6b6b6;
overflow: hidden;
transform: translateZ(0); /* fixed the zoom in Safari */
-webkit-transition: border-color 0.35s ease-in-out;
-moz-transition: border-color 0.35s ease-in-out;
transition: border-color 0.35s ease-in-out;
}
#avatar:hover>a {
border-color: #fff;
}
#avatar img {
width: 100%;
height: 100%;
background-size: cover;
background-repeat: no-repeat;
-webkit-transition: all .5s !important;
-moz-transition: all .5s !important;
transition: all .5s !important;
}
#avatar img:hover {
-ms-transform: scale(1.2);
-moz-transform: scale(1.2);
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
#site-title {
text-align: center;
}
#site-title a {
color: #b6b6b6;
font-weight: 900;
font-size: 1.5rem;
letter-spacing: .5px;
}
#site-title a:hover {
color: #fff;
text-decoration: none;
}
#site-subtitle {
font-size: 95%;
text-align: center;
color: #828282;
line-height: 1.2rem;
word-spacing: 1px;
margin: .5rem 1.5rem 2rem 1.5rem;
}
.sidebar-expand {
box-shadow: 4px 0 8px 0 rgba(0, 0, 0, 0.2), 6px 0 20px 0 rgba(0, 0, 0, 0.19) !important;
}
#search-result-wrap {
display: none;
position: fixed;
top: 3rem;
height: 100%;
width: calc(100% - 260px);
overflow: auto;
}
#search-result-wrap>div.row>div {
min-height: calc(100vh - 3rem - 2rem);
}
#search-result-wrap .post-content {
margin-top: 2rem;
}
.contact {
font-size: 1.2rem;
margin: 2rem 2.5rem;
flex-shrink: 0;
-webkit-flex-shrink: 0;
-ms-flex-shrink: 0;
/*box-shadow: inset 0 0 0.25em 0 rgba(0, 0, 0, 0.22);*/
}
#sidebar .contact a:hover {
color: #fff;
}
/*--- top-bar ---*/
#topbar {
height: 3rem;
position: fixed;
top: 0;
left: 260px; /* same as sidebar width */
right: 0;
transition: top 0.2s ease-in-out;
z-index: 50;
border-bottom: 1px solid rgba(0, 0, 0, 0.07);
box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.05);
}
#topbar i.fas { // icons
color: #999;
}
#breadcrumb {
font-size: 1rem;
color: gray;
padding-left: .5rem;
}
#breadcrumb span:not(:last-child)::after {
content: "";
padding: 0 .3rem;
}
#sidebar-trigger,
#search-trigger {
margin: 0 1rem;
display: none;
}
#search-wrap i.fas {
position: relative;
top: 1rem;
left: .5rem;
z-index: 2;
font-size: .9rem;
color: #c2c6cc;
}
#search-input {
position: relative;
top: -.86rem;
background: #f5f5f5;
border-color: #fff;
border-radius: 0.9rem;
padding: .18rem .75rem .18rem 2rem;
}
#search-input:focus {
box-shadow: none;
background: center;
border-color: #e9ecef;
}
#search-input:focus.form-control::-webkit-input-placeholder { opacity: 0.6; }
#search-input:focus.form-control::-moz-placeholder { opacity: 0.6; }
#search-input:focus.form-control:-ms-input-placeholder { opacity: 0.6; }
#search-input:focus.form-control::placeholder { opacity: 0.6; }
#topbar-title {
display: none;
font-size: 1.1rem;
font-weight: 600;
font-family: sans-serif;
color: rgb(78, 78, 78);
text-align: center;
width: 70%;
overflow: hidden;
text-overflow: ellipsis;
word-break: keep-all;
white-space: nowrap;
}
#search-wrap+a {
color: #2a408e;
display: none;
}
#mask {
display: none;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
height: 100%;
width: 100%;
background: #c1c3c5;
opacity: 0.5;
z-index: 1;
}
.sidebar-expand~#mask {
display: block!important;
}
/*--- main wrap ---*/
#main-wrap {
position: relative;
min-height: 100%;
padding-bottom: 6rem; /* equals to or greatter than footer's height */
padding-left: 0;
padding-right: 0;
margin-left: 260px;
transition: transform 0.4s ease;
-webkit-transition: transform 0.4s ease;
}
#main>div.row>div:nth-child(1),
#main>div.row>div:nth-child(2) {
margin-top: 3rem; /* same as the height of topbar */
}
#main>div.row>div:first-child {
min-height: calc(100vh - 3rem - 6rem); /* 3rem for topbar, 6rem for footer */
}
#topbar.row,
#main>.row,
#search-result-wrap>.row {
margin-left: 0;
margin-right: 0;
}
footer {
position: absolute;
bottom: 0;
height: 6rem; /* see the height of #main-wrap */
padding: 1rem;
font-size: 0.8rem;
color: #7a7b7d;
background: #f3f3f3;
}
footer>div.d-flex {
line-height: 1.2rem;
width: 95%;
max-width: 1035px;
}
footer a:link,
footer a:hover {
text-decoration: none;
}
footer>.d-flex>div {
width: 350px;
}
footer .copyright a,
footer .license a {
font-weight: 600;
color: inherit;
}
/*--- Panels ---*/
.access {
top: 2rem;
transition: top 0.2s ease-in-out;
margin-right: 1.5rem;
margin-top: 3rem;
margin-bottom: 6rem;
color: #6c757d;
}
.access:only-child {
position: -webkit-sticky; /* Safari */
position: sticky;
}
.access.topbar-down {
top: 6rem;
}
.access>div {
padding-left: 1rem;
border-left: 1px solid rgba(158, 158, 158, 0.17);
}
.access>div:not(:first-child) {
margin-top: 4rem;
}
.access h3 {
padding-top: .5rem;
padding-bottom: .5rem;
margin-top: 0;
margin-bottom: 0;
letter-spacing: -0.02em;
font-size: 1rem;
font-family: 'Oswald', sans-serif;
}
.access .post-content {
font-size: .9rem;
}
#access-tags>div.post-content>div {
max-width: 80%;
}
#access-tags .post-tag {
display: inline-block;
line-height: 1rem;
font-size: 0.85rem;
background: none;
border: 1px solid #e9ecef;
border-radius: .8rem;
padding: .3rem .5rem;
margin: 0 .35rem .5rem 0;
}
#access-tags .post-tag:hover {
background-color: #2a408e;
border-color: #2a408e;
color: #fff;
transition: none;
}
#access-lastmod ul>li {
height: 1.8rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
list-style: none;
}
#access-lastmod ul a {
color: #6c757d;
}
/*--- button back-to-top ---*/
#back-to-top {
display: none;
z-index: 1;
cursor: pointer;
position: fixed;
background: #fff;
color: #686868;
height: 2.6em;
width: 2.7em;
border-radius: 50%;
border: 1px solid #f1f1f1;
transition: 0.2s ease-out;
-webkit-transition: 0.2s ease-out;
}
#back-to-top:hover {
transform: translate3d(0, -5px, 0);
-webkit-transform: translate3d(0, -5px, 0);
}
/*--- Typography ---*/
h1 {
font-size: 1.8rem;
font-weight: 400;
}
h2 {
font-size: 1.35rem;
font-weight: 400;
}
h3 {
font-size: 1.25rem;
}
h4 {
font-size: 1.15rem;
}
h5 {
font-size: 1.1rem;
}
h2, h3, h4 {
line-height: 1.2;
margin-bottom: 1rem;
}
blockquote {
border-left: 5px solid #eee;
padding-left: 1rem;
color: #9a9a9a;
}
.post-content blockquote a {
color: #2a408e;
}
kbd {
margin: 0 .3rem;
}
h2, h3, h4, sup {
padding-top: 4rem;
margin-top: -2.5rem;
}
div.footnotes>ol {
padding-inline-start: 2rem;
margin-top: .5rem;
}
div.footnotes>ol>li>p {
padding-left: .2em;
}
div.footnotes>ol>li:not(:last-child) {
margin-bottom: -.8rem;
}
div.footnotes>ol>li:target>p {
background-color: lightcyan;
width: fit-content;
-webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */
transition: background-color 1.5s ease-in-out;
}
a.footnote {
margin: 0 .2em;
-webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */
transition: background-color 1.5s ease-in-out;
}
sup:target>a.footnote {
background-color: lightcyan;
padding: 0 2px;
outline: thin dotted;
}
a.reversefootnote {
font-size: .6rem;
position: absolute;
line-height: 1;
padding-top: .5em;
margin-left: .5em;
border-bottom-style: none !important;
}
.post-content a {
color: #2a408e;
border-bottom: 1px dotted #c2c6cc;
}
#search-results a {
font-size: 1.1rem;
line-height: 2.5rem;
}
p>a, span>a,
.post-preview a,
.categories a,
#tags a,
#page-category a,
#page-tag a,
#archives a,
#search-results a {
color: #2a408e;
}
.categories a,
.access a,
#archives a,
#page-tag a,
#page-category a,
#search-results a {
border-bottom: none;
}
.post h1 {
margin-top: 3rem;
}
#breadcrumb a:hover,
#search-results a:hover,
.post-preview a:hover,
.post-meta a:hover,
.post-content a:hover,
.post a:hover code,
footer a:hover,
#post-wrap .post-content a:hover,
#page .post-content a:hover,
#access-lastmod a:hover {
color: #d2603a;
border-bottom: 1px solid #d2603a;
text-decoration: none;
}
.post em { /* MarkDown italic */
padding-right: .2rem;
}
/*--- Begin of Markdown table style ---*/
div.post-content>table,
div.post-content li>table {
min-width: 60%;
border-collapse: collapse;
border-spacing: 0;
margin-bottom: 1.5rem;
}
table thead {
border-bottom: solid 2px rgba(210, 215, 217, 0.75);
}
table thead+tbody tr {
border-bottom: solid 1px rgba(210, 215, 217, 0.75);
}
table thead+tbody tr:nth-child(2n + 1) {
background-color: #f8f9fa;
}
table thead th,
table tbody td {
padding: .35rem .8rem;
font-size: 95%;
}
/*--- post ---*/
.post-meta {
font-size: 0.85rem;
word-spacing: 1px;
}
.post-meta a {
color: #2a408e;
border-bottom: 1px dotted #c2c6cc;
}
.post-meta a:not(:last-child) {
margin-right: 2px;
}
.post-content {
line-height: 1.8;
font-size: 1rem;
margin-top: 2rem;
overflow-wrap: break-word;
word-wrap: break-word;
}
.post-tail {
margin-top: 3.5rem;
border-bottom: 1px double #e9ecef;
font-size: 0.85rem;
}
.post-tag {
background: rgba(0, 0, 0, 0.075);
border-radius: .34rem;
padding: .25rem .4rem;
margin: 0 .1rem;
color: #818182;
line-height: 1.6rem;
}
.tag:hover,
.post-tag:hover {
background: rgb(222, 226, 230);
transition: background 0.35s ease-in-out;
}
.post-tag:hover {
border-bottom: none;
text-decoration: none;
color: #d2603a;
}
.post-pager {
margin: 1rem 0 2rem;
}
.post-pager .btn,
.post-pager .btn.disabled {
color: #2a408e;
border-color: #2a408e;
}
.post-pager .btn:hover {
background: #2a408e;
color: #fff;
}
.post-pager a.btn.disabled {
pointer-events: auto;
cursor: not-allowed;
background: none;
color: gray;
border-color: gray;
}
.post img {
margin-top: .5rem;
margin-bottom: 1.5rem;
max-width: 100%;
height: auto;
filter: drop-shadow(2px 4px 6px rgba(0,0,0,0.08));
}
/* --- Effects classes --- */
.hidden {
display: none!important;
}
.shown {
display: block!important;
}
.no-scroll {
position: fixed;
width: 100%;
}
.flex-grow-1 {
-ms-flex-positive: 1!important;
flex-grow: 1!important;
}
.btn-box-shadow {
box-shadow: 0 0 8px 0 #eaeaea!important;
}
.topbar-up {
top: -3rem !important; /* same as topbar height. */
}
.no-text-decoration {
text-decoration: none;
}
div.tooltip-inner { /* Overrided BS4 Tooltip */
font-size: .7rem;
max-width: 220px;
}
.disabled {
color: rgb(206, 196, 196);
pointer-events: auto;
cursor: not-allowed;
}
.hide-border-bottom {
border-bottom: none!important;
}
/*--- Responsive Design ---*/
@media all and (max-width: 576px) {
#main>div.row>div:first-child {
min-height: calc(100vh - 3rem - 10rem); /* topbar is 3rem and footer is 10rem */
}
#main-wrap {
padding-bottom: 10rem; /* footer height */
}
#avatar>a {
width: 5rem;
height: 5rem;
}
#site-subtitle {
margin-left: 1.8rem;
margin-right: 1.8rem;
}
#post-wrap h1 {
margin-top: 2.2rem;
font-size: 1.55rem;
}
.post-content {
font-size: 1.08rem;
}
/* table text in small screens */
div>table, p~table {
width: 100%;
table-layout: fixed;
word-wrap: break-word;
}
/* footer and #main-wrap expand vertical */
footer {
height: 10rem;
}
footer>div.d-flex {
flex-wrap: wrap;
justify-content: left!important;
-ms-flex-pack: distribute!important;
justify-content: space-around!important;
}
}
@media all and (max-width: 768px) {
.post img {
max-width: calc(100% + 1rem);
}
}
@media all and (min-width: 768px) {
.post .post-meta>div:not(:first-child)::before {
content: "\2022";
color: rgba(158, 158, 158, 0.8);
font-weight: bold;
padding-left: .5rem;
padding-right: .3rem;
}
.post .post-meta.flex-column {
-webkit-box-orient: horizontal!important;
-webkit-box-direction: normal!important;
-ms-flex-direction: row!important;
flex-direction: row!important;
}
}
@media all and (min-width: 831px) {
/* button 'back-to-Top' position */
#back-to-top {
bottom: 9.2rem;
right: 1.2rem;
}
.topbar-up {
box-shadow: none !important;
}
#topbar-title {
text-align: left;
}
footer>div.d-flex {
width: 92%;
}
}
/* iPad 9.7" horizontal */
@media all and (min-width: 992px) and (max-width: 1024px) {
#main-wrap .col-lg-11 {
-webkit-box-flex: 0;
-ms-flex: 0 0 96%;
flex: 0 0 96%;
max-width: 96%;
}
}
@media all and (min-width: 768px) and (max-width: 830px) {
.post img {
max-width: calc(100% + 2rem);
}
}
/* Hide SideBar and TOC */
@media all and (max-width: 830px) {
.sidebar-expand {
transform: translateX(0) !important;
}
.sidebar-expand~#main-wrap {
transform: translateX(260px) !important;
}
#sidebar {
transform: translateX(-260px); /* hide */
-webkit-transform: translateX(-260px);
}
#sidebar .cursor {
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
#main-wrap {
margin-left: 0;
}
#search-result-wrap {
width: 100%
}
#page h1.dynamic-title {
display: none;
}
#page h1.dynamic-title ~ .post-content {
margin-top: 3rem;
}
#breadcrumb,
#search-wrap {
display: none;
}
#topbar {
position: -webkit-sticky;
position: sticky;
left: 0;
}
.topbar-up {
top: 0 !important;
}
#main>div.row>div:nth-child(1),
#main>div.row>div:nth-child(2) {
margin-top: 0;
}
.post img {
position: relative;
left: 50%;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
}
#topbar-title,
#sidebar-trigger,
#search-trigger {
display: block;
}
#search-wrap.shown {
padding-left: 1rem;
}
#search-wrap.shown~a {
padding-right: 1rem;
}
#search-input {
margin-left: 0;
width: 95%;
}
#search-result-wrap .post-content {
letter-spacing: 0;
}
#tags {
-webkit-box-pack: center!important;
-ms-flex-pack: center!important;
justify-content: center!important;
}
sup {
padding-top: 3.4rem;
}
div.footnotes>ol>li {
padding-top: 3.5rem;
margin-top: -4.3rem;
}
div.footnotes>ol>li:first-child {
margin-top: -3.5rem;
}
}
/* Compact icons in sidebar & TOC hidden */
@media all and (min-width: 832px) and (max-width: 1200px) {
#sidebar {
width: 210px;
}
#topbar {
left: 210px;
}
#search-result-wrap {
width: calc(100% - 210px);
}
#site-title {
font-size: 1.3rem;
margin-left: 0!important;
}
#site-subtitle {
font-size: 90%;
margin-left: 1rem;
margin-right: 1rem;
}
.contact a {
padding: 0 0.6rem;
}
#main-wrap {
margin-left: 210px;
}
#breadcrumb {
width: 65%;
overflow: hidden;
text-overflow: ellipsis;
word-break: keep-all;
white-space: nowrap;
}
}
/* Pannel hidden */
@media all and (max-width: 1200px) {
#panel-wrap {
display: none;
}
#topbar-main {
padding: 0;
}
}
/*--- desktop mode, both sidebar and panel are visible ---*/
@media all and (min-width: 1201px) {
#main>div.row>div.col-xl-8 {
-webkit-box-flex: 0;
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 850px;
padding-left: 3%;
}
#panel-wrap {
max-width: 300px;
}
#breadcrumb {
padding-left: 0;
}
#topbar-main {
padding: 0 calc((100% - 1150px) / 2)!important;
}
#back-to-top {
bottom: 9rem;
right: 4.3rem;
}
#search-wrap {
width: 22%;
margin-right: 1rem;
}
#search-input {
width: 100%;
-webkit-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
}
@media all and (min-width: 1650px) {
#main>div.row>div.col-xl-8 {
padding-left: 0px;
max-width: 850px;
}
#main-wrap {
margin-left: 350px;
}
#panel-wrap {
margin-left: calc((100% - 1150px) / 10);
}
#topbar {
left: 350px;
}
#topbar-main {
padding: 0 calc((100% - 1150px - 8%) / 2) !important;
}
#search-wrap {
margin-right: 3%;
}
#sidebar {
width: 350px;
}
#profile-wrap {
margin-top: 4rem;
margin-bottom: 5rem;
-ms-flex-direction: column!important;
flex-direction: row!important;
}
#avatar {
margin-left: 2.5rem;
}
#avatar>a {
width: 5rem;
height: 5rem;
}
.profile-text {
margin-top: 0!important;
/* .d-flex */
display: -webkit-box!important;
display: -ms-flexbox!important;
display: flex!important;
/* .flex-wrap */
-ms-flex-wrap: wrap!important;
flex-wrap: wrap!important;
/* .align-content-center */
-ms-flex-line-pack: center!important;
align-content: center!important;
}
#site-title a {
letter-spacing: 1px;
}
#site-title, #site-subtitle {
text-align: left;
margin-left: 1.1rem;
}
#site-subtitle {
word-spacing: 0;
margin-top: .3rem;
margin-bottom: 0;
}
#sidebar ul>li>a {
padding-left: 2.5rem;
-webkit-box-pack: start!important;
-ms-flex-pack: start!important;
justify-content: flex-start!important;
}
#sidebar .nav-link>span {
letter-spacing: 3px;
}
#sidebar .nav-link>i {
border: 1px solid;
border-radius: 50%;
width: 1.65rem;
height: 1.65rem;
line-height: 1rem;
font-size: .6rem;
padding: .5em 0 0 .1em;
display: inline-block!important;
}
.contact {
margin-left: 2.5rem;
margin-right: 4.5rem;
font-size: 1.3rem;
padding-bottom: 1rem;
}
.contact a {
border: 1px solid;
border-radius: 50%;
font-size: 1rem;
width: 2rem;
height: 2rem;
text-align: center;
}
.contact a>i {
text-align: center;
width: 1.25em;
padding-top: .45rem;
}
footer>div.d-flex {
max-width: 1130px;
}
}
@media all and (min-width: 1700px) {
#topbar-main {
padding: 0 calc((100% - 1150px - 10%) / 2) !important;
}
#topbar {
padding-right: calc(100% - 350px - 1570px) /* 100% - 350px - (1920px - 350px); */
}
#main>div.row {
padding-right: calc(100% - 1570px); /* 100% - (1920px - 350px) */
}
#panel-wrap {
margin-left: calc((100% - 1150px) / 8);
}
footer {
padding-right: calc(100% - 350px - 1180px);
}
footer>div.d-flex {
max-width: 1150px;
}
#back-to-top {
right: calc(100% - 1920px + 15rem);
}
}