@layer reset, base, layout, components, utilities, overrides;

@import url('settings/colors.css') layer(settings);
@import url('settings/variables.css') layer(settings);
@import url('base/reset.css') layer(reset);
@import url('base') layer(base);
@import url('layout/container.css') layer(layout);
@import url('components/header.css') layer(components);
@import url('components/footer.css') layer(components);
@import url('components/sidebar.css') layer(components);
@import url('components/nav.css') layer(components);
@import url('components/buttons.css') layer(components);
@import url('components/card.css') layer(components);
@import url('forms/inputs.css') layer(components);
@import url('utilities/helpers.css') layer(utilities);
@import url('utilities/animations.css') layer(utilities);
@import url('utilities/noise.css') layer(utilities);
@import url('utilities/scroll.css') layer(utilities);

@layer overrides {
    /* Benutzerdefinierte Styles */
}

:root {
    overscroll-behavior: none;

    accent-color: #412785;

    /* thumb = brighter brand-color */
    scrollbar-color: #5d37bc rgba(0 0 0 / 0); /* thumb + track */


    color-scheme: dark light;

    --duration-default: 0.2s;
    --duration-medium: 0.35s;
    --duration-slow: 0.5s;

    --easing-default: cubic-bezier(0.22, 0.61, 0.36, 1);
    --easing-bounce: linear(0 0%, 0 0.27%, 0.02 4,53%);
}

::selection {
    --_selection-bg-color: var(--selection-bg-color, #ff4081);
    --_selection-text-color: var(--selection-text-color, #fff);


    background-color: var(--_selection-bg-color); /* Pink */
    color: var(--_selection-text-color);

    text-shadow: 0 0 0.25rem var(--_selection-text-color);

    text-decoration: var(--selection-text-decoration, none);
}

::-webkit-scrollbar {
    /*width: 0.5rem;*/
}



@media(prefers-reduced-motion: no-preference) {
    :focus {
        transition: outline-offset .25s ease;
    }
    :focus:not(:active) {
        outline-offset: 5px;
    }
}

html {
    /* evtl per Mediaquery auf thin umschalten */
    scrollbar-width: auto;
    /*scrollbar-color: #412785 #412785;*/

    /* @link: https://moderncss.dev/12-modern-css-one-line-upgrades/#scrollbar-gutter */
    scrollbar-gutter: stable /*both-edges*/;
}

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

    overflow-x: clip;
    overscroll-behavior: contain;

    /* move body back in 3d:
    border-radius: 10px;
    overflow: hidden;
    scale: 95%;
    background-color: #2c1;

    * {
        visibility: hidden;
    }
    */
}


picture {
    user-select: none;
}

/*section,
.page-container > * {
    padding-inline: clamp(2.5rem, 20%, 10rem);
}*/

section.hero {
    display: flex;
    min-height: 100vh;
    /*height: 100%;
    width: 100%;*/
    /*background-color: #412785;*/
    background-color: var(--bg);
    color: var(--accent);
    padding-block-start: 10rem;

    /*background-image: url("https://localhost/assets/images/hero_small.jpg");
    background-size: cover;
    background-position: center;*/

    :where(:not(picture, img, h1)) {
        position: relative;
    }

    flex-direction: column;
    gap: 2ch;
}

.hero picture, .hero img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}

/* Lazy loading? */
section {
    content-visibility: auto;
}



h1 {
    user-select: none;
    padding-block-end: 3.33rem; /* front-size / 3 */
    /*text-align: center;*/


    text-shadow: 0 0 4px rgba(0, 0, 0, 0.1);

    background: linear-gradient(
        90deg,
        oklch(70% 0.25 280),
        oklch(80% 0.3 340),
        oklch(70% 0.25 280)
    );
    background-size: 200% auto;

    /* Für Firefox */
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;

    background-clip: text;
    color: transparent;

    animation: shimmer 10s linear infinite;

    /*animation: shimmer 4s alternate-reverse infinite;*/
}



/*@keyframes shimmer {
    0% { opacity: 0.5; }
    100% { opacity: 1; }
}*/

@keyframes shimmer {
    0% { background-position: 0 center; }
    100% { background-position: -200% center; }
}

::backdrop {
    background-color: #412785;
    /*opacity: 0.7;*/
    background-color: rgba(0, 0, 0, 0.2);

    filter: blur(5px);
    backdrop-filter: blur(5px);
}



@starting-style {
    #mypopover {
        &:popover-open {
            opacity: 0;
            translate: 100% 0;
        }
    }
}

html:has(aside.show) {
    /*scrollbar-width: none;*/
}

.fade-in-on-scroll {
    opacity: 0;
    transform: translateY(100px);
    transition: opacity 0.6s ease, transform 0.6s ease;
    will-change: opacity, transform;
}

.fade-in-on-scroll.visible {
    opacity: 1;
    transform: translateY(0);
}


/*body::before {
    content: '';
    position: fixed;
    top: 50%;
    left: 0;
    right: 0;
    height: 2px;
    background: red;
    pointer-events: none;
    z-index: 9999;
}*/

[aria-current="page"] {}

form>div {
    display: flex;
    flex-direction: column;
    gap: 1rem;

    border: 1px solid var(--muted);

    &:has(input:user-invalid:not(:placeholder-shown, :focus)) {
        [role="alert"] {
            visibility: visible;
        }
    }
}

[role="alert"] {
    visibility: hidden;
    min-height: 2rem;
    font-size: 1rem;

    background-color: red;
    border: darkred 2px solid;
    border-radius: 0.5em;
    padding: 0.25em;
    color: black;
}

span[id^="hint"] {
    color: var(--muted);
}
