/* Base
   Shared typography, document sizing, and utility classes for tychen.org. */
:root {
    --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    --font-serif: Georgia, "Times New Roman", serif;
}

html,
body {
    min-height: 100vh;
    margin: 0;
    font-size: 14px;
    line-height: 1.35 !important;
    overflow-y: scroll;
}

body {
    display: flex;
    flex-direction: column;
}

.container-fluid {
    max-width: 1100px;
    color: #333333DD;
    font-family: var(--font-sans);
    font-size: .85rem;
}

strong {
    font-weight: 600;
}

a,
a:link,
a:visited {
    color: #555555;
    background-color: transparent;
    text-decoration: none !important;
}

a:active,
a:hover {
    color: darkgreen !important;
    background-color: transparent;
    text-decoration: none !important;
    transition: color 0.2s;
}

.bold {
    color: #333333;
    font-weight: 600;
}

.hide {
    display: none;
}

.invisible {
    visibility: hidden;
}

.border-red {
    border: 1px solid red;
}

.border-blue {
    border: 1px solid blue;
}

.border-green {
    border: 1px solid green;
}

/* Shared Header
   Two-column header aligns the TY mark with the left gutter of the content grid. */
.site-header {
    width: 95%;
    max-width: 800px;
    margin: 0 auto;
}

.site-header-grid {
    display: grid;
    grid-template-columns: 2fr 5fr;
    align-items: center;
    column-gap: 12px;
}

.site-nav {
    grid-column: 2;
    padding: .75rem 0 1.25rem 0 !important;
}

.site-brand {
    display: inline-flex;
    align-items: center;
    margin: 0 1rem 0 0;
    padding: 0;
}

.site-brand img {
    border-radius: 3px;
}

.site-nav .nav-link {
    color: #555555;
    font-family: var(--font-sans);
    font-size: .9rem;
    letter-spacing: 0;
    padding: 0 .75rem !important;
    text-decoration: none !important;
    text-transform: none;
    border-bottom: 0 !important;
}

.site-nav .nav-link:hover,
.site-nav .nav-link:focus,
.site-nav .nav-link.active {
    background-color: transparent;
    color: darkgreen !important;
    text-decoration: none !important;
    border-bottom: 0 !important;
}

/* Site Content Grid
   Main CV/publication/course content uses a date/meta column plus content column. */
.tychen_wrapper .grid-container {
    width: 95%;
    max-width: 800px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 2fr 5fr;
    row-gap: 6px;
    column-gap: 12px;
    color: #757575;
    font-family: var(--font-sans);
    font-size: .86rem;
    font-style: normal;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
}

.grid-container > div {
    padding: 0;
}

.grid-container > div:nth-child(odd) {
    line-height: 1.2rem;
    text-align: right;
}

.grid-container .title {
    display: inline;
}

/* Footer */
.site-footer {
    width: 95%;
    max-width: 800px;
    margin: auto auto 2.5rem auto;
    padding-top: 4rem;
    color: #8A8A8A;
    font-family: var(--font-sans);
    font-size: .78rem;
}

.site-footer-grid {
    display: grid;
    grid-template-columns: 2fr 5fr;
    column-gap: 12px;
}

.site-footer-content {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    align-items: center;
}

.site-footer a {
    color: #8A8A8A !important;
}

.site-footer-separator {
    color: #C0C0C0;
}

/* Homepage */
.home-summary {
    max-width: 620px;
    margin-top: 1.4rem;
    color: #555555;
    font-family: var(--font-sans);
    font-size: .95rem;
    line-height: 1.55;
}

.home-summary p {
    margin: 0 0 .75rem 0;
}

/* CV and Publications */
.cv.grid-container ul li::before {
    display: inline;
    margin-left: -10px;
    color: #BBBBBB;
    content: "- ";
    text-indent: 30px;
}

.cv .institute {
    display: inline;
}

.cv .institute::before {
    display: block;
    content: " ";
}

.cv .institute::after {
    content: ",";
}

.cv .remark,
.cv .location {
    display: inline;
}

.cv .bullets {
    margin-top: 1px !important;
    margin-bottom: 1px !important;
    padding-left: 0;
    list-style: none;
    text-indent: 3px;
}

.cv a {
    display: inline;
    padding: 0;
    color: #BBBBBB !important;
    text-decoration: none;
}

.cv a::before {
    content: "@" !important;
}

.cv .funded::after {
    content: "*" !important;
}

.keywords {
    margin-top: 5px;
    color: #B3B3B3;
    font-size: .9rem;
}

.keywords::before {
    content: "Keywords: ";
}

/* Headings and Inline Metadata */
.heading_page {
    display: block;
    margin: 5px 0 8px 0;
    padding: 5px 0 0 0;
    overflow: hidden;
    color: darkgreen;
    font-family: var(--font-sans);
    font-size: 1rem;
    font-weight: 900;
    text-transform: uppercase;
}

.heading_section {
    display: block;
    margin: 1.4rem 0 .15rem 0;
    overflow: hidden;
    color: #222222;
    background-image: linear-gradient(to right, #F5F5F5, white);
    font-family: var(--font-sans);
    font-size: .85rem;
    font-weight: 700;
    text-transform: uppercase;
}

.heading_section2 {
    display: block;
    margin: .8rem 0 0 0;
    overflow: hidden;
    color: #333333;
    font-weight: 700;
}

.header-sub {
    position: relative;
    display: block;
    margin: 2px;
    padding: 2px;
    line-height: normal;
}

#contact_info span a {
    display: inline;
    margin: 0;
    padding: 0;
    overflow: hidden;
    color: #757575;
    font-size: 10px;
    font-weight: normal;
    line-height: 1rem !important;
    text-transform: none;
}

.fas,
.fa-caret-down {
    color: #999999;
    font-size: .5em;
}

/* Course Overview Page */
#courses .paragraph {
    padding: 0 0 5px 0;
}

#courses ol,
#courses ul {
    margin: 5px 0 0 0;
    padding-left: 1.25rem;
}

#courses .notes,
.notes * {
    color: #B3B3B3 !important;
    font-size: .86rem;
}

#courses .keywords {
    margin: .2rem 0 0 0;
    line-height: 1.25;
}

#course_summary tr.detail_list td {
    padding: 0 5px;
}

.row {
    margin: 1em 0;
}

.one-fourth.column {
    width: 23.5%;
}

.one-half.column {
    width: 49%;
}

.three-fourths.column {
    width: 74.5%;
}

/* Canvas Course Pages
   Exported class pages load this same stylesheet for lightweight Canvas overrides. */
.kl_flat_sections_main > div,
.kl_flat_sections > div {
    overflow-x: auto;
    overflow-y: hidden;
    font-size: 1rem !important;
}

.kl_flat_sections_main h4,
.kl_flat_sections h4 {
    margin: 1rem 0 0 0 !important;
    color: #000;
    border-bottom: 1px solid #E0E0E0;
}

.kl_panel_heading {
    margin-top: 10px !important;
    margin-bottom: 0 !important;
}

.kl_panel_heading h4 {
    margin: 1rem 0 0 0.5rem;
    color: #000;
    font-size: 1.5rem;
    font-weight: bold;
}

.kl_panel_content div {
    margin: 0;
    padding: 0;
}

#kl_wrapper_3.kl_flat_sections_main h4,
#kl_wrapper_3.kl_flat_sections h4 {
    margin-top: 10px !important;
    margin-bottom: 0 !important;
}

#kl_wrapper_3.kl_flat_sections > div,
#kl_wrapper_3.kl_flat_sections_main > div {
    font-size: 1rem;
    line-height: 1.4rem;
}

table {
    margin: 1rem 0;
}

@media only screen and (min-width: 500px) {
    .off-sm-12,
    .col-sm-12,
    .off-sm-11,
    .col-sm-11,
    .off-sm-10,
    .col-sm-10,
    .off-sm-9,
    .col-sm-9,
    .off-sm-8,
    .col-sm-8,
    .off-sm-7,
    .col-sm-7,
    .off-sm-6,
    .col-sm-6,
    .off-sm-5,
    .col-sm-5,
    .off-sm-4,
    .col-sm-4,
    .off-sm-3,
    .col-sm-3,
    .off-sm-2,
    .col-sm-2,
    .off-sm-1,
    .col-sm-1,
    .col-sm {
        padding-left: 6px;
        padding-right: 6px;
    }
}

/* Responsive Layout */
@media (max-width: 775px) {
    .container-fluid {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    .site-header-grid {
        grid-template-columns: auto 1fr;
    }

    .site-nav {
        grid-column: 1 / -1;
    }

    .site-brand {
        margin-right: .75rem;
    }

    .site-nav .navbar-collapse {
        padding-top: .75rem;
        text-align: right;
    }

    .site-nav .navbar-nav {
        align-items: flex-end;
        margin-left: auto !important;
    }

    .site-nav .nav-link {
        padding: .35rem 0 !important;
    }

    .tychen_wrapper .grid-container {
        width: 100%;
        max-width: 100%;
        grid-template-columns: 1fr;
        row-gap: .25rem;
    }

    .tychen_wrapper .grid-container > div:nth-child(odd) {
        text-align: left;
    }

    .grid-spacer {
        display: none;
    }

    .cv > div:empty {
        display: none;
    }

    .cv > div[style*="visibility: hidden"] {
        display: none;
    }

    .cv .bullets {
        margin-top: 0 !important;
        margin-bottom: 0 !important;
    }

    .cv .heading_section {
        margin-top: .85rem;
    }

    .heading_page {
        font-size: .95rem;
    }

    .heading_section {
        margin-top: 1.2rem;
    }

    .home-summary {
        font-size: .92rem;
    }

    .site-footer {
        width: 100%;
        max-width: 100%;
        padding-top: 3rem;
        padding-left: 1rem;
        padding-right: 1rem;
    }

    .site-footer-grid {
        grid-template-columns: 1fr;
    }
}
