html,
body {
    overflow-x: hidden !important;
    width: 100vw;
    height: 100vh;
    margin: 0;
    padding: 0;
    user-select: none;
    position: relative;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 17px;
    font-family: 'Rubik', sans-serif;
    flex-direction: column;
    gap: 20px;
}

h1,
h2,
h3,
h4,
h5,
h6,
p {
    margin: 0;
}

a,
a:hover {
    text-decoration: none;
    color: rgba(0, 0, 0, .8);
}

main {
    width: 600px;
    max-width: calc(100vw - 50px);
}

.hide {
    opacity: 0;
}

.date {
    display: inline-block;
    margin: 10px 0 30px 0;
    padding: 5px 10px;
    border-radius: 10px;
    color: rgba(0, 0, 0, .6);
    background: rgba(0, 0, 0, .05);
}

.next-task {
    margin: 20px 0;
}

.next-task>span {
    display: block;
    margin: 10px 0;
    font-size: 130%;
}

.next-task>small {
    display: inline-block;
    padding: 5px 10px;
    border-radius: 10px;
    color: rgb(105, 105, 105);
    background: rgba(0, 0, 0, .05);
    font-size: 80%;
}

#menu input {
    display: none;
}

#menu label {
    display: block;
    cursor: pointer;
    position: absolute;
    width: 50vw;
    height: 50vw;
    max-width: 150px;
    max-height: 150px;
    top: 0;
    right: 0;
    z-index: 1;

    -moz-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
    -ms-filter: "FlipH";
    filter: FlipH;
}

#menu path {
    --length: 24;
    --offset: -38;
    fill: none;
    stroke: rgb(105, 105, 105);
    stroke-width: 3;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: var(--length) var(--total-length);
    stroke-dashoffset: var(--offset);
    transition: all .8s cubic-bezier(.645, .045, .355, 1);
}

#menu circle {
    opacity: 0;
    fill: rgba(0, 0, 0, .1);
    transition: opacity .5s;
}

#menu label:hover circle {
    opacity: 1;
}

#menu .line--1,
#menu .line--3 {
    --total-length: 126.38166809082031;
}

#menu .line--2 {
    --total-length: 80;
}

#menu input:checked+svg .line--1,
#menu input:checked+svg .line--3 {
    --length: 8.602325267;
    --offset: -109.1770175568;
}

.debug {
    display: none;
}

.line--debug {
    opacity: 0;
    stroke-dasharray: none;
}

#list {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto 1fr;
    position: absolute;
    top: 0;
    left: 100vw;
    width: calc(100vw - 100px);
    height: calc(100vh - 100px);
    padding: 50px;
    background-color: rgb(241, 241, 241);
    transition: all .5s ease-in-out;
}

body[list=open] #list {
    left: 0;
}

.list-header {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
}

.list-header .list-year-prev,
.list-header .list-year-next {
    padding: 10px;
}

.list-header .list-year-prev:not(.hide),
.list-header .list-year-next:not(.hide) {
    cursor: pointer;
}

.list-header .list-year-prev {
    -moz-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
    -ms-filter: "FlipH";
    filter: FlipH;
    text-align: right;
}

.list-loader {
    display: flex;
    justify-content: center;
    align-items: center;
}

.list-loader>div {
    width: 40px;
    height: 26px;
    --c: no-repeat linear-gradient(rgba(0, 0, 0, .4) 0 0);
    background:
        var(--c) 0 100%,
        var(--c) 50% 100%,
        var(--c) 100% 100%;
    background-size: 8px calc(100% - 4px);
    position: relative;
}

.list-loader>div:before {
    content: "";
    position: absolute;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: rgba(0, 0, 0, .4);
    left: 0;
    top: 0;
    animation:
        l3-1 1.5s linear infinite alternate,
        l3-2 0.75s cubic-bezier(0, 200, .8, 200) infinite;
}

@keyframes l3-1 {
    100% {
        left: calc(100% - 8px)
    }
}

@keyframes l3-2 {
    100% {
        top: -0.1px
    }
}

body[loaded=true] .list-loader,
body:not([loaded=true]) .list-content {
    display: none;
}

.list-search {
    padding: 10px 0;
    width: 600px;
    max-width: calc(100vw - 40px);
    margin: 0 auto;
}

.list-search input {
    width: calc(100% - 30px);
    border: none;
    border-radius: 20px;
    padding: 10px 15px;
    background-color: rgba(255, 255, 255, .8);
    outline: none;
    font-size: 16px;
}

.list-content {
    height: 100%;
    overflow-y: auto;
    padding: 10px 0;
    width: 600px;
    max-width: calc(100vw - 40px);
    margin: 0 auto;
}

.event {
    background-color: white;
    border-radius: 20px;
    padding: 10px 15px;
    margin-bottom: 10px;
}

.event.search-hide {
    display: none;
}

.event .event-header {
    display: flex;
    gap: 10px;
    align-items: center;
    margin-bottom: 5px;
}

.event .event-header h3 {
    font-weight: 500;
}

.event .event-header p {
    font-size: 80%;
    padding: 3px 7px;
    border-radius: 10px;
    color: rgba(0, 0, 0, .5);
    background-color: rgba(0, 0, 0, .05);
}

.event .event-tasks {
    margin-top: 10px;
}

.event .event-tasks>div {
    display: inline-block;
    margin: 0 10px 10px 0;
    padding: 3px 7px;
    border-radius: 10px;
    color: rgba(0, 0, 0, .8);
    background-color: rgba(0, 0, 0, .05);
    font-size: 80%;
}

@media screen and (max-width: 800px) {
    h1 {
        font-size: 130%;
    }

    #menu label {
        max-width: 100px;
        max-height: 100px;
    }

    #list {
        width: calc(100vw - 40px);
        height: calc(100vh - 40px);
        padding: 20px;
    }
}

footer span,
footer a {
    color: rgba(0, 0, 0, .5);
    font-size: small;
}

footer a {
    text-decoration: underline;
}