/*
|--------------------------------------------------------------------------
| PUBLIC-UI.CSS
|--------------------------------------------------------------------------
|
| Kleine gemeinsame UI-Helfer für die öffentlichen Seiten: kompakte mobile
| Navigation, Scroll-to-top und Mailcrypt-Darstellung. Die allgemeine
| Header-Geometrie liegt ausschliesslich in header.css.
|
*/

/* ==========================================================================
   Scroll-to-top
   ========================================================================== */

.scroll-top {
    position: fixed;
    right: clamp(1rem, 2vw, 1.5rem);
    bottom: clamp(1rem, 2vw, 1.5rem);
    z-index: calc(var(--z-header) - 1);
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    padding: 0;
    color: var(--color-text);
    background: rgba(17, 17, 34, 0.90);
    border: 1px solid var(--color-border-strong);
    border-radius: 50%;
    box-shadow: var(--shadow-medium);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    transform: translateY(0.75rem);
    transition:
        opacity var(--motion-duration-fast) var(--motion-ease-standard),
        visibility var(--motion-duration-fast) var(--motion-ease-standard),
        transform var(--motion-duration-fast) var(--motion-ease-standard),
        border-color var(--motion-duration-fast) var(--motion-ease-standard),
        background-color var(--motion-duration-fast) var(--motion-ease-standard);
}

.scroll-top.is-visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.scroll-top:hover,
.scroll-top:focus-visible {
    background: var(--color-primary-soft);
    border-color: rgba(139, 92, 246, 0.58);
}

.scroll-top__icon {
    display: block;
    width: 1.35rem;
    height: 1.35rem;
    background: currentColor;
    -webkit-mask: url('/assets/icons/arrow-up.svg') center / contain no-repeat;
    mask: url('/assets/icons/arrow-up.svg') center / contain no-repeat;
}

/* ==========================================================================
   Mailcrypt
   ========================================================================== */

.mailcrypt {
    cursor: pointer;
}

.mailcrypt__at {
    display: inline-block;
    margin-inline: 0.08em;
}

/* ==========================================================================
   Kompakte mobile Navigation
   ========================================================================== */

@media (max-width: 768px) {
    .site-nav {
        right: var(--space-3);
        left: auto;
        width: min(14rem, calc(100vw - 1.5rem));
        grid-template-columns: minmax(0, 1fr);
        justify-content: stretch;
        align-items: stretch;
        padding: 0.4rem;
        gap: 0.1rem;
        background: rgba(10, 10, 20, 0.97);
        border-color: var(--color-border-strong);
        border-radius: var(--radius-large);
        box-shadow: 0 18px 46px rgba(0, 0, 0, 0.42);
        backdrop-filter: blur(16px);
        -webkit-backdrop-filter: blur(16px);
    }

    .site-nav__link {
        justify-content: flex-start;
        width: 100%;
        min-height: 40px;
        padding: 0.6rem 0.75rem;
        text-align: left;
        font-size: 0.93rem;
    }
}

@media (max-width: 480px) {
    .site-nav {
        right: var(--space-3);
        width: min(13.5rem, calc(100vw - 1.5rem));
    }

    .scroll-top {
        right: 0.85rem;
        bottom: 0.85rem;
        width: 44px;
        height: 44px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .scroll-top {
        transition: none;
    }
}
