body {
    font-family: Roboto, sans-serif;
    transition: background-color 3s ease;
    margin: 0;
    cursor: default;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
    overflow-x: hidden;
}

@font-face {
    font-family: 'Roboto';
    font-style: normal;
    font-weight: 400;
    src: url(/fonts/roboto/Roboto-Regular.eot);
    /* For IE6-8 */
    src: local('Roboto'),
        local('Roboto-Regular'),
        url(/fonts/roboto/Roboto-Regular.woff2) format('woff2'),
        url(/fonts/roboto/Roboto-Regular.woff) format('woff'),
        url(/fonts/roboto/Roboto-Regular.ttf) format('truetype');
}


/* from http://google.github.io/material-design-icons/#icon-font-for-the-web */
@font-face {
    font-family: 'Material Icons';
    font-style: normal;
    font-weight: 400;
    src: url(/icons/iconfont/MaterialIcons-Regular.eot);
    /* For IE6-8 */
    src: local('Material Icons'),
        local('MaterialIcons-Regular'),
        url(/icons/iconfont/MaterialIcons-Regular.woff2) format('woff2'),
        url(/icons/iconfont/MaterialIcons-Regular.woff) format('woff'),
        url(/icons/iconfont/MaterialIcons-Regular.ttf) format('truetype');
}

.material-icons {
    font-family: 'Material Icons';
    font-weight: normal;
    font-style: normal;
    font-size: 24px;
    /* Preferred icon size */
    display: inline-block;
    line-height: 1;
    text-transform: none;
    letter-spacing: normal;
    word-wrap: normal;
    white-space: nowrap;
    direction: ltr;

    /* Support for all WebKit browsers. */
    -webkit-font-smoothing: antialiased;
    /* Support for Safari and Chrome. */
    text-rendering: optimizeLegibility;

    /* Support for Firefox. */
    -moz-osx-font-smoothing: grayscale;

    /* Support for IE. */
    font-feature-settings: 'liga';
}

.selector input {
    width: 100%;
}

.selector-dropdown {
    max-height: 12em !important;
}

.centered {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.container {
    padding: 0;
    margin: 0;
    height: 100vh;
    position: relative;
    -webkit-backface-visibility: hidden;
    overflow-x: hidden;
    background-position: center;
    animation: fade-in 0.5s;
    overflow-y: hidden;
}

.header {
    padding: 20px;
    background-color: #ddd;
    transition: background-color 3s ease;
    text-align: center;
}

.desc {
    color: #555;
    text-align: justify;
    margin: 1em 0;
    font-size: 12px;
}

.background {
    transition: opacity 3s ease;
}

.fill-parent {
    width: 100%;
    height: 100%;
    position: absolute;
}

.no-classes {
    color: #999999;
    font-style: italic;
    font-size: 1.5em;
}

#enter-section input,
#enter-section select {
    margin: 0.1em 0.5em;
}

select {
    -webkit-appearance: none;
    -webkit-border-radius: 0px;
    width: 13em;
    font-family: 'Roboto', sans-serif;
    border: 1px solid #dddddd;
    border-radius: 0px;
    font-size: 20px;
    padding: 10px;
    background: white;
    outline: none;
    transition: border-color 1s ease;
}

select:focus {
    border-color: darkturquoise;
}

.course-input {
    text-align: center;
}

.school-indicator {
    animation: fade-out-school-indicator 4s;
    opacity: 0;
    transition: opacity 2s ease;
}

.school-indicator:hover {
    opacity: 0.5;
}

@keyframes fade-out-school-indicator {
    from {
        opacity: 0.5;
    }

    to {
        opacity: 0;
    }
}

.selectize-dropdown,
.selectize-input {
    border-radius: 0;
    border: 1px solid #fff;
    line-height: 32px;
    font-size: 16px;
}

.selectize-input input {
    font-size: 16px;
}

.selectize-input.dropdown-active {
    border-radius: 0;
    border-color: darkturquoise;
}

.selectize-control.single .selectize-input {
    background-color: white;
    background-image: none;
    border-color: #eee;
}

.selectize-dropdown.single {
    border-color: #eee;
}

.loading {
    text-align: center;
    font-size: 1.5em;
    position: fixed;
    opacity: 0.3;
    transition: opacity 0.3s ease;
}

.loading-icon {
    font-size: 6em;
}

.spin {
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    100% {
        transform: rotate(-360deg);
    }
}

.no-decoration {
    text-decoration: none;
}

.popup {
    margin: 1em;
    font-size: 0.8em;
    padding: 0.2em;
    width: auto;
    z-index: 3;
}

@media (pointer: coarse) {
    .popup {
        width: 100%;
        margin: 0;
        padding: 0;
        font-size: 2em;
    }

    .popup table {
        margin: auto auto;
    }
}

@media (pointer: coarse) and (-webkit-min-device-pixel-ratio: 3) {
    .popup {
        font-size: 1.5em;
    }
}

.link:link,
.link:visited {
    text-decoration: none;
}

.link:hover {
    text-decoration: underline;
}

.dismiss-enter i {
    font-size: 16px;
}

.dismiss-enter:link,
.dismiss-enter:visited {
    color: #aaaaaa;
    transition: color 0.5s ease;
}

.dismiss-enter:hover {
    color: red;
}

.dismiss-icon {
    margin-top: 0.3em;
    margin-bottom: 0.3em;
    font-size: 1em;
}

.collapse-icon {
    margin-top: 0.1em;
    margin-bottom: 0.1em;
    font-size: 1.4em;
}

.dismiss,
.collapse {
    font-size: 1em;
}

.dismiss:link,
.dismiss:visited,
.collapse:link,
.collapse:visited {
    color: #aaaaaa;
    transition: color 0.5s ease;
}

.dismiss:hover,
.collapse:hover {
    color: red;
}

.faded {
    opacity: 0.5;
}

.top {
    position: absolute;
    top: 0px;
}

.right {
    position: absolute;
    right: 0px;
}

.left {
    position: absolute;
    left: 0px;
}

.bottom {
    position: absolute;
    ;
    bottom: 0px;
}

.down-arrow {
    position: fixed;
    bottom: 5%;
    left: 50%;
    transform: translate(-50%, -5%);
    transition: opacity 1s linear;
    font-size: 8em;
    cursor: pointer;
    z-index: 3;
}

.pulse {
    animation: pulse 4s linear infinite;
}

input.course-name {
    margin: 2em 0.5em;
    width: 20em;
}

input.subscribe-name {
    margin-bottom: 0.3em;
}

ul.class-list {
    padding: 0;
}

ul.class-list li {
    font-size: 1.2em;
    list-style: none;
    margin: 0.2em 8em;
    padding: 0.3em;
    border: 1px solid #ddd;
    font-weight: 700;
}

table.sections tbody tr td {
    color: #555;
    font-size: 0.7em;
    font-weight: 400;
    margin: 0;
    border: none;
    padding: 0;
    padding-right: 0.4em;
}

table.sections tbody tr td.day {
    font-weight: 800;
}

a.delete-link:link,
a.delete-link:visited {
    font-weight: 300;
    text-decoration: none;
    font-size: 1em;
    color: #aaa;
}

a.delete-link:hover {
    color: red;
}

a.delete-link {
    transition: color 0.6s ease;
}

a.course-link:link,
a.course-link:visited {
    color: #000;
    text-decoration: none;
}

a.course-link:hover {
    color: darkturquoise;
}

a.course-link {
    transition: color 0.6s ease;
}

@keyframes pulse {
    0% {
        opacity: 0;
    }

    50% {
        opacity: 0.5;
    }

    100% {
        opacity: 0;
    }
}

.footer-right {
    position: absolute;
    right: 1em;
    bottom: 1em;
    color: #aaa;
}

.footer-left {
    position: absolute;
    left: 1em;
    bottom: 1em;
}

.footer-left a:link,
.footer-left a:visited {
    color: #aaa;
    text-decoration: none;
    transition: color 1s ease;
}

.footer-left a:hover {
    color: #000;
}

.icon {
    color: #aaa;
    cursor: pointer;
    transition: color 1s ease, transform 1s ease;
    font-size: 4em;
}

.done-icon:hover {
    color: limegreen;
}

.settings-icon:hover {
    color: black;
    transform: rotate(2rad);
}

@media (pointer: coarse) and (-webkit-min-device-pixel-ratio: 3) {
    .icon {
        font-size: 6em;
    }
}

.inputBox {
    font-family: 'Roboto', sans-serif;
    border: 1px solid #dddddd;
    font-size: 20px;
    padding: 10px;
    outline: none;
    width: 12em;
    transition: border-color 1s ease;
}

.inputBox:focus {
    border-color: darkturquoise;
    outline: none;
}

.inputBox:disabled {
    text-decoration: line-through;
    background-color: #eeeeee;
}

.add-link {
    text-align: center;
    margin: 2em;
    margin-top: 1em;
}

a.add:link,
a.add:visited {
    text-decoration: none;
    color: #aaa;
    margin: 0 0.5em;
    padding: 0.5em;
    border: 1px solid #aaa;
    transition: color 0.5s ease, border-color 0.5s ease;
}

a.add:hover {
    color: darkturquoise;
    border-color: darkturquoise;
}

#page1 {
    background-color: white;
}

.time-text {
    z-index: 1;
}

.fade-in {
    animation: fade-in 0.5s;
}

@keyframes fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

.fade-out {
    animation: fade-out 0.5s;
}

@keyframes fade-out {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

div.time {
    font-size: 10em;
    transition: color 3s ease;
}

.period {
    font-size: 3em;
    transition: color 3s ease;
}

.schedule {
    font-size: 3em;
    transition: color 3s ease;
    opacity: 0.3;
}

table {
    font-size: 1.2em;
    border-collapse: collapse;
    border-spacing: 0;
}

td {
    padding: 0.5em;
}

td.time {
    color: #999;
    text-align: right;
}

tr.current {
    background-color: #eee;
    font-size: 1.75em;
}

tr.current td {
    padding: 0.3em;
}

tr.completed {
    color: #999;
    text-decoration: line-through;
}

canvas {
    opacity: 0.1;
}

.settings-section {
    margin: 1em auto;
    width: 24em;
}

.sound-interaction {
    display: inline-block;
    margin: 1em;
    padding-left: 1em;
    padding-right: 1em;
    padding-top: 0.5em;
    padding-bottom: 0.5em;
    border: none;
    border-radius: 0.5em;
    transition: border-color 1s ease;
}

.sound-interaction-text {
    position: relative;
    top: 0.075em;
}

/*
checkbox css is modified from https://kyusuf.com/post/completely-css-custom-checkbox-radio-buttons-and-select-boxes
*/
.control-group {
    display: inline-block;
    width: 200px;
    height: 210px;
    margin: 10px;
    padding: 30px;
    text-align: left;
    vertical-align: top;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .1);
}

.control {
    font-size: 18px;
    position: relative;
    display: block;
    margin-bottom: 15px;
    padding-left: 30px;
    cursor: pointer;
}

.control input {
    position: absolute;
    z-index: -1;
    opacity: 0;
}

.control__indicator {
    position: absolute;
    top: 0px;
    left: 0;
    width: 20px;
    height: 20px;
    background: #e6e6e6;
    transform: rotate(180deg);
    transition: background-color 0.5s ease, transform 0.5s ease;
}

/* Checked state */
.control input:checked~.control__indicator {
    background: darkturquoise;
    transform: rotate(0deg);
}

/* Check mark */
.control__indicator:after {
    position: absolute;
    display: none;
    content: '';
}

/* Show check mark */
.control input:checked~.control__indicator:after {
    display: block;
}

/* Checkbox tick */
.control--checkbox .control__indicator:after {
    top: 4px;
    left: 8px;
    width: 3px;
    height: 8px;
    transform: rotate(45deg);
    border: solid #fff;
    border-width: 0 2px 2px 0;
}

.checkbox {
    width: 0px;
}

/** For snowflakes */
.snowflakes {
    width: 100vw;
    height: 100vh;
    position: absolute;
    top: 0;
    left: 0;
    overflow: hidden;
    opacity: 1;
    z-index: 2;
}