#page-progress-bar {
    position: fixed; top: 0; left: 0; right: 0;
    height: 2px; z-index: 9999; pointer-events: none;
}
#page-progress-fill {
    height: 100%; width: 0%;
    background: #2f9e52;
    border-radius: 0 2px 2px 0;
    transition: width 0.3s ease;
}
[data-theme="light"] #page-progress-fill { background: #16a34a; }

#page-splash {
    position: fixed; inset: 0; z-index: 10000;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: 24px;
    background: #0c0d11;
    transition: opacity 350ms ease;
}
[data-theme="light"] #page-splash { background: #f2f4f7; }
#page-splash.splash--hide { opacity: 0; pointer-events: none; }

#page-splash .splash-logo {
    display: flex; align-items: center; gap: 12px;
    animation: splash-pop 0.38s ease both;
}
#page-splash .splash-logo svg { }
#page-splash .splash-name { font-size: 2rem; font-weight: 700; letter-spacing: -0.8px; color: #c8d0da; }
[data-theme="light"] #page-splash .splash-name { color: #1e2738; }
#page-splash .splash-name span { color: #2f9e52; }

#page-splash .splash-bar-wrap {
    width: 120px; height: 2px;
    background: #1a1f28; overflow: hidden;
}
[data-theme="light"] #page-splash .splash-bar-wrap { background: #d8dce8; }
#page-splash .splash-bar-fill {
    height: 100%; width: 0%; background: #2f9e52;
    transition: width 700ms ease;
}

@keyframes splash-pop {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* навигационная подчёркивающая линия */
.site-nav__link { position: relative; overflow: hidden; }
.site-nav__link::after {
    content: ''; position: absolute;
    bottom: 0; left: 50%; right: 50%;
    height: 1px; background: #5a7aaa;
    transition: left 0.18s ease, right 0.18s ease;
}
.site-nav__link:hover::after,
.site-nav__link.active::after { left: 9px; right: 9px; }

#mobile-nav { display: none; }

@media (max-width: 600px) {
    .site-header .site-nav { display: none; }
    .topbar-nav { display: none; }

    #mobile-nav {
        display: flex;
        position: fixed; bottom: 0; left: 0; right: 0;
        z-index: 200;
        background: #0a0c10;
        border-top: 1px solid #1a1f28;
        align-items: stretch;
        padding-bottom: env(safe-area-inset-bottom, 0px);
        transform: translate3d(0, 0, 0);
        -webkit-transform: translate3d(0, 0, 0);
        backface-visibility: hidden;
        isolation: isolate;
        contain: layout style paint;
    }
    [data-theme="light"] #mobile-nav { background: #f2f4f7; border-top-color: #dde2ea; }

    .mobile-nav__item {
        flex: 1;
        display: flex; flex-direction: column;
        align-items: center; justify-content: center;
        gap: 3px; padding: 8px 4px 10px;
        text-decoration: none;
        color: var(--muted);
        font-size: 10px; font-weight: 500;
        transition: color 0.12s;
        -webkit-tap-highlight-color: transparent;
        touch-action: pan-y;
        user-select: none;
        -webkit-user-select: none;
        position: relative; overflow: hidden;
    }
    .mobile-nav__item:active { opacity: 0.6; }
    .mobile-nav__item.active { color: #2f9e52; }

    .mobile-nav__icon { font-size: 19px; line-height: 1; display: block; }
    .mobile-nav__item.active .mobile-nav__icon { transform: scale(1.1) translateY(-1px); }

    .mobile-nav__item.active::before {
        content: '';
        position: absolute; top: 0; left: 25%; right: 25%;
        height: 1px; background: #2f9e52;
    }

    body {
        padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-y: none;
    }
    .site-footer__links { display: none; }
}

@keyframes ripple-out {
    from { transform: scale(0); opacity: 0.3; }
    to   { transform: scale(3); opacity: 0; }
}
.ripple {
    position: absolute; border-radius: 50%;
    background: rgba(47, 158, 82, 0.3);
    width: 36px; height: 36px;
    margin-left: -18px; margin-top: -18px;
    pointer-events: none;
    animation: ripple-out 0.45s ease-out forwards;
}