:root {
    --bg-image-tint: #c9c9c9;

    --panel-text: #f2f2f2;
    --panel-bg-top: #005582;
    --panel-bg-bottom: #004e74;
    --panel-outline: #003563;

    --timeline-text: #dde0e2;
    --timeline-bg: #004669;

    --link: #f2f2f2;
    --link-hover: #8dd2ff;
    --link-active: #b6fffc;

    --deleted: #002550;
    --deleted-hover: #0073a8;

    --border-soft: rgba(255, 255, 255, 0.06);
    --border-radius: 2.5rem;

    --brief-outline: rgba(255, 255, 255, 1);

    --transition: 0.18s ease;
}

@font-face {
    font-family: "Bebas Neue";
    src: url(./fonts/Bebas_Neue/BebasNeue-Regular.ttf);
}

@font-face {
    font-family: "Roboto Condensed";
    src: url(./fonts/Roboto_Condensed/RobotoCondensed-VariableFont_wght.ttf);
}

body {
    margin: 0;
    min-height: 100vh;

    background-color: var(--bg-image-tint);
    background-image: url("./images/G_Tiled_T.png");
    background-size: 1536px;
    background-blend-mode: multiply;

    font-family: "Roboto Condensed", sans-serif;
    line-height: 1.5;
}

#repository-list-container {
    max-width: 800px;
    margin: 2rem auto;
    padding: 0 1rem;
}

h2 {
    margin: 0.25rem 0 0.75rem;
    padding-bottom: 0;

    color: var(--panel-text);

    font-family: "Bebas Neue", sans-serif;
    font-size: 2.25rem;
    font-weight: 500;
    line-height: 1.25;
    letter-spacing: 1px;
    text-align: center;

    border-bottom: 3px solid rgba(255, 255, 255, 0.75);

    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25);
}

h3 {
    padding-bottom: 0;

    color: var(--panel-text);

    font-family: "Bebas Neue", sans-serif;
    font-size: 1.25rem;
    font-weight: 500;
    line-height: 1.25;
    letter-spacing: 1px;
    text-align: center;

    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25);
}

ul {
    margin: 0;
    padding: 0;

    list-style: none;
}

li {
    margin: 0.5rem 0;
    padding: 0.25rem 0;

    line-height: 1;

    border-bottom: 1px dashed var(--border-soft);
}

li:last-child {
    margin: 0.25rem 0;

    border-bottom: none;
}

a,
.world-deleted {
    font-weight: 600;
    text-decoration: none;

    transition: color var(--transition), opacity var(--transition);
}

a {
    color: var(--link);
}

a:hover {
    color: var(--link-hover);
}

a:active {
    color: var(--link-active);
}

.world-deleted {
    color: var(--deleted);
    opacity: 0.75;

    cursor: not-allowed;
}

.world-deleted:hover {
    color: var(--deleted-hover);
    opacity: 1;
}

.panel {
    margin-bottom: 1.5rem;
    padding: 0.25rem 1rem;

    background: linear-gradient(to bottom, var(--panel-bg-top), var(--panel-bg-bottom));

    border: 2px solid var(--panel-outline);
    border-radius: var(--border-radius) 0px var(--border-radius) 0px;

    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.05);

    corner-shape: bevel;
}

.drop-shadow {
    filter: drop-shadow(0px 0px 20px rgb(6, 104, 161));
}

.loading-area {
    position: fixed;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100vh;
    background-color: #071920;
    backdrop-filter: blur(100px);
    z-index: 9999;
}

.loading-area-title {
    position: absolute;
    color: var(--panel-text);
    font-family: "Bebas Neue", sans-serif;
    font-size: 4rem;
    line-height: 4.25rem;
    text-align: center;
    user-select: none;
}

.fade-out {
    animation: fadeOut 2s ease forwards;
}

@keyframes fadeOut {
    from {
        opacity: 1;
    }
    to {
        opacity: 0;
        visibility: hidden;
    }
}

.loading-icon-out {
    animation: loadingIconOut 6s cubic-bezier(0.19, 1, 0.22, 1) forwards;
}

@keyframes loadingIconOut {
    from {
        transform: rotate(0deg) scale(1);
    }
    to {
        transform: rotate(360deg) scale(0.75);
        filter: blur(10px);
    }
}

.brief-outline-floor {
    position: relative;
    box-shadow: 0 0 0 3px rgba(255, 230, 128, 0.95);
    animation: brief-outline-fade-floor 5000ms ease-out forwards;
    outline: none;
}

@keyframes brief-outline-fade-floor {
    0% {
        box-shadow: 0 0 0 0 rgba(255, 230, 128, 0);
    }
    20% {
        box-shadow: 0 0 0 0 rgba(255, 230, 128, 0);
    }
    60% {
        box-shadow: 0 0 10px 2px var(--brief-outline);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(255, 230, 128, 0);
    }
}

.brief-outline-world {
    position: relative;
    text-shadow: 0px 0px 10px var(--brief-outline), 0px 0px 20px var(--brief-outline), 0px 0px 40px var(--brief-outline);
    animation: brief-outline-fade-world 5000ms ease-out forwards;
}

@keyframes brief-outline-fade-world {
    0% {
        text-shadow: 0px 0px 10px rgba(255, 255, 255, 0), 0px 0px 20px rgba(255, 255, 255, 0);
    }
    20% {
        text-shadow: 0px 0px 10px rgba(255, 255, 255, 0), 0px 0px 20px rgba(255, 255, 255, 0);
    }
    60% {
        text-shadow: 0px 0px 10px var(--brief-outline), 0px 0px 15px var(--brief-outline), 0px 0px 30px var(--brief-outline),
            0px 0px 30px var(--brief-outline);
    }
    100% {
        text-shadow: 0px 0px 10px rgba(255, 255, 255, 0), 0px 0px 20px rgba(255, 255, 255, 0);
    }
}

#timeline-list-container {
    position: absolute;
}

.timeline-segment {
    position: absolute;

    box-sizing: border-box;
    pointer-events: none;

    background: var(--timeline-bg);
    border-radius: 15px 0px 0px 15px;
    opacity: 1;
    corner-shape: bevel;

    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18), inset 1px 1px 0 rgba(255, 255, 255, 0.025);

    border-width: 2px;
    border-style: solid;
    border-color: var(--panel-outline);
}

.timeline-segment::before {
    position: absolute;
    content: "";
    display: inline-block;

    width: 8px;
    height: 8px;

    right: -10px;
    top: -2px;

    background-color: inherit;

    box-shadow: inset 0px 1px 0 rgba(255, 255, 255, 0.025);

    border-width: 2px;
    border-left-width: 0px;
    border-style: solid;
    border-color: var(--panel-outline);
}

.timeline-segment::after {
    position: absolute;
    content: "";
    display: inline-block;

    width: 8px;
    height: 8px;

    right: -10px;
    bottom: -2px;

    background-color: inherit;

    border-width: 2px;
    border-left-width: 0px;
    border-style: solid;
    border-color: var(--panel-outline);
}

.timeline-label {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    text-align: right;

    font-family: "Bebas Neue", sans-serif;
    color: var(--timeline-text);
    font-size: 1.5rem;
    line-height: 1;

    height: 100%;
    padding: 5px;
}
