@font-face { font-family: sf-mono-semibold; src: url(src/fonts/sf-mono/semibold.otf); }
@font-face { font-family: sf-mono-regular; src: url(src/fonts/sf-mono/regular.otf); }
@font-face { font-family: sf-mono-light; src: url(src/fonts/sf-mono/light.otf); }

@font-face { font-family: cal-sans; src: url(src/fonts/cal-sans.ttf); }
@font-face { font-family: lexend-exa; src: url(src/fonts/lexend-exa.ttf); }

* { font-family: lexend-exa; color: #ffffffA0; }

body
{
    background: #0E0E14FF;
    background-image: url(src/icons/grid-pattern.png);
    background-size: 32px 32px;
    image-rendering: pixelated;
    margin: 0;
    overflow-x: hidden;
}

p { font-weight: 250; }

header
{
	width: 100%;
	height: fit-content;
    position: relative;
    z-index: 1;
    animation: header-fade 700ms ease-out;
}
header > div:first-child
{
    position: absolute;
	width: 100%;
	height: 100%;
    margin: 0;
	background-image: linear-gradient(90deg, rgb(127, 255, 206), #7b80ff);
	mask-image: linear-gradient(0deg, transparent, #ffffff80);
    animation: header-fade-gradient 700ms ease-out;
}
@keyframes header-fade-gradient
{
    0% { translate: 0 -100%; }
    100% { translate: 0 0%; }
}
header > div:last-child
{
    position: relative;
	width: calc(100% - 2em);
	height: calc(100% - 2em);
    margin: 0;
    padding: 1em;
    animation: header-fade-content 700ms ease-in-out;
}
@keyframes header-fade-content
{
    0% { opacity: 0; }
    100% { opacity: 1; }
}
header > div > h1
{
    width: calc(100vw - .25em);
    margin-left: -.25em;
    margin-top: 0;
    text-align: center;
    font-size: min(16vw, 4em);
    margin-bottom: 0;

    background-image: linear-gradient(90deg, rgb(127, 255, 206) 30%, #7F8FFF 70%);
    background-clip: text;
    background-size: cover;
    color: transparent;
}
header > div > span
{
    background-image: linear-gradient(90deg, rgb(127, 255, 206) 30%, #7F8FFF 70%);
    background-clip: text;
    background-size: cover;
    color: #ffffff70;

    width: 100%;
    text-align: center;
    font-size: 1em;
    font-weight: 300;
    opacity: .6;
    animation: alias-fade 1s ease-out;
    display: inline-block;
    margin-bottom: 8px;
}
@keyframes alias-fade
{
    0% { opacity: 0; translate: 0 -10%; }
    100% { opacity: .6; translate: 0 0; }
}
header > div > h2
{
    width: 100%;
    margin-top: 0;
    text-align: center;
    font-size: larger;
    color: #ffffffC0;
    margin-bottom: .5em;
}
header > div > p
{
    font-size: medium;
    width: 100%;
    margin-top: 0;
    text-align: center;
    font-weight: 200;
    color: #ffffff70;
}
header > div > div
{
    display: flex;
    width: fit-content;
    position: relative;
    left: 50%;
    translate: -50% 0;
}

header > div > div:first-of-type > button
{
    border-radius: 0;
    min-width: 4em; min-height: 4em;
    width: 4em; height: 4em;
    image-rendering: auto;
    background-color: transparent;
    background-size: cover;
    background-position: 50% 50%;
    padding: 0;
    margin-bottom: 1em;
    transition: scale 100ms ease-out;
}
header > div > div:first-of-type > button:hover
{
    background-size: cover;
    background-position: 50% 50%;
    scale: 1.1;
}

header > div > div:last-of-type > button { background: transparent; padding: 0; }
header > div > div:last-of-type > button:hover { background: transparent; text-decoration: underline; }

button
{
    padding: .5em;
    font-size: 1em;
    color: #ffffffB0;
    background-color: #505050;
    background-image: linear-gradient(90deg, #58ffb150 0%, #8793fb50 100%);
    background-size: 300% 300%;
    background-position: 75% 75%;

    border: transparent;
    border-radius: 1em;

    transition: background 100ms linear, color 100ms linear;
    cursor: pointer;
    margin-left: 1em;
}
button[current]
{
    background-color: #505050;
    background-image: linear-gradient(90deg, #58ffb1B0 0%, #8793fbB0 100%);
    background-size: 100% 100%;
    background-position: 50% 50%;

    border: transparent;
    border-radius: 1em;

    transition: background 100ms linear, color 100ms linear;
    cursor: pointer;
    margin-left: 1em;
}
button:first-of-type { margin-left: 0; }
button:not(:disabled):hover
{
    color: #ffffff;
    background-size: 200% 200%;
    background-position: 50% 50%;
}
button:disabled
{
    opacity: .5;
    cursor: no-drop;
}

/* Media */
#media-access
{
    width: 100%;
    text-align: center;
    margin-top: 1em;
    margin-bottom: 2em;
}
#media-access > h2 { font-size: 2em; }
#media-access > div
{
    position: relative;
    display: flex;
    width: fit-content;
    left: 50%;
    translate: -50% 0;
    margin-top: 3em;
    max-width: calc(100vw - 1em);
}
#media-access > div > button
{
    margin-left: max(3vw, 1em);
    font-size: min(1em, 3.5vw);
}
#media-access > div > button:first-of-type { margin-left: 0; }

/* Content */
main
{
    padding-left: min(5vw, 2em);
    padding-right: min(5vw, 2em);
    min-height: 50vh;
    overflow: hidden;
}

/* main > * { animation: fade 500ms ease-out; } */

main h2 { font-size: 2em; margin-top: 2em; }
main div:has(> video)
{
    position: relative;
    width: fit-content;
    max-width: calc(100vw - 4em);
    margin-bottom: 2em;
    height: fit-content;
}
main div > video
{
    border-radius: .5em;
    width: 100%;
    box-shadow: #000 min(3vw, 2em) min(3vw, 2em) 0;
}
main div:has(> video) > span
{
    opacity: .5;
    position: absolute;
    bottom: 1em;
    left: 1em;
    transition: opacity 50ms linear;
    font-size: min(2vw, 1em);
}
main div:has(> video):hover > span
{ opacity: 1; }
main div > div:has(> video):not(:first-of-type)
{
    margin-left: min(5%, 4em);
}

main div:has(> img)
{
    position: relative;
    width: fit-content;
    max-width: calc(100vw - 4em);
    margin-bottom: min(5%, 2em);
    height: fit-content;
}
main div > img
{
    border-radius: .5em;
    width: 100%;
    box-shadow: #000 min(3vw, 2em) min(3vw, 2em) 0;
}
main div:has(> img) > span
{
    opacity: .5;
    position: absolute;
    bottom: 1em;
    left: 1em;
    transition: opacity 50ms linear;
    font-size: min(2vw, 1em);
}
main div:has(> img):hover > span
{ opacity: 1; }

main div > div:has(> img):not(:first-of-type)
{
    margin-left: min(5%, 4em);
}

main div:has(> audio)
{
    background: linear-gradient(90deg, #528f8e, #4d6794);
    box-shadow: #00000080 1em 1em 0;
}
div:has(> audio)
{
    position: relative;
    width: fit-content;
    max-width: calc(100vw - 4em);
    margin-bottom: 2em;
    height: fit-content !important;
    border-radius: .5em;
    border-bottom-left-radius: 1.5em; border-bottom-right-radius: 1.5em;
    margin-bottom: -4px;
    padding-top: .5em;
}
div:has(> audio) > span
{
    padding: .5em;
    text-overflow: ellipsis;
    display: block;
    margin: 0;
    height: 1em;
    overflow: clip;
    padding-top: 0;
    padding-bottom: 0.25em;
}
div > audio { margin-bottom: -4px; border-radius: 1.5em; width: 100%; }
main div > div:has(> audio):not(:first-of-type)
{
    margin-left: 2em;
}


/* Footer */
footer
{
    position: relative;
    z-index: 1;
    padding: min(4em, 5vw);
    background: linear-gradient(transparent 0%, #000 70%);
    animation: fade 700ms ease-out;
    padding-bottom: min(4em, 7.5vw);
    padding-top: min(4em, 10vw);
}
footer > div
{
    display: flex;
    width: fit-content;
    position: relative;
    left: 50%;
    translate: -50% 0;
    margin-top: 2em;
}
footer > div > button { background: transparent; padding: 0; }
footer > div > button:hover { text-decoration: underline; }


/* Scroll */
* { scrollbar-color: #1c1c1f #0e0e14; }

/* Media */
#media
{
    position: relative;
    width: calc(100vw - 1em);
    z-index: 0;
    display: none;
    min-height: 50vh;
}
#media > h1 { text-align: center; }
#media > p { text-align: center; }

#media > div:first-of-type
{
    display: flex;
    width: fit-content;
    position: relative;
    left: 50%;
    translate: -50% 0;
}

#media > div:last-of-type
{
    margin-top: 1em;
    width: calc(100% - 1em);
    height: 100%;
    display: block;
    padding: .5em;
    word-spacing: .5em;
    line-height: 2.5em;
}
#media > div:last-of-type > div
{
    background: transparent;
    width: max(calc(25vw - 1.5em), min(15em, calc(50% - 1em)));
    height: max(calc(25vw - 1.5em), 8em);
    display: inline-block;
    cursor: pointer;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: 50% 50%;
}
#media > button
{
    border: none;
    background: transparent;
    padding: 2em;
    position: relative;
    left: 50%; top: 0;
    translate: -50% 0;
    text-shadow: #000 0 0 3em, #000 0 0 1em;
}

#fullscreen
{
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    background: #000000C0;
    width: 100vw; height: 100vh;
    max-width: 100vw; max-height: 100vh;
    z-index: 10;
}
#fullscreen > :not(button)
{
	width: calc(100vw - min(5vw, 8em));
	position: absolute;
	left: 50vw;
	top: 50vh;
	translate: -50% -50%;
	image-rendering: optimizequality;
	object-fit: contain;
	max-height: calc(100vh - min(5vw, 2em));
}
#fullscreen > button
{
    border: none;
    background: transparent;
    padding: 2em;
    position: fixed;
    left: 0; top: 0;
    text-shadow: #000 0 0 3em, #000 0 0 1em;
}

/* Scroll Animation */
@keyframes fade
{
    0% { translate: 0 30%; opacity: 0; }
    100% { translate: initial; opacity: initial; }   
}

/* Text Selection */
*::selection{ background: rgb(94, 255, 193,); color: #313978; }
*::-moz-selection { background: rgb(94, 255, 193); color: #313978; }
*::-webkit-selection { background: rgb(94, 255, 193); color: #313978; }