/* ГеоАльянсСервис landing custom styles */
:root { color-scheme: dark; }
        html:not(.dark) { color-scheme: light; }
        body { font-family: Manrope, Inter, system-ui, sans-serif; }
        .glass { backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px); }
        .noise::before {
            content: '';
            position: fixed;
            inset: 0;
            pointer-events: none;
            z-index: 60;
            opacity: .035;
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
        }
        .orb { filter: blur(72px); transform: translateZ(0); }
        .shine { position: relative; overflow: hidden; }
        .shine::after {
            content: '';
            position: absolute;
            inset: -120% auto auto -80%;
            width: 70%;
            height: 260%;
            transform: rotate(28deg);
            background: linear-gradient(90deg, transparent, rgba(255,255,255,.18), transparent);
            transition: .7s ease;
        }
        .shine:hover::after { left: 120%; }

        /* Hero photo slider */
        .photo-slide {
            position: absolute;
            inset: 0;
            opacity: 0;
            transform: translateX(18%) scale(.96);
            transition: opacity .55s ease, transform .55s ease;
            pointer-events: none;
        }
        .photo-slide.is-active {
            opacity: 1;
            transform: translateX(0) scale(1);
            pointer-events: auto;
        }
        .photo-slide-img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            cursor: zoom-in;
            user-select: none;
        }
        .photo-slide::after {
            content: '';
            position: absolute;
            inset: 0;
            background:
                    linear-gradient(to top, rgba(2, 6, 23, .72), transparent 45%),
                    radial-gradient(circle at 20% 10%, rgba(0, 212, 255, .22), transparent 32%);
            pointer-events: none;
        }
        .photo-caption {
            position: absolute;
            left: 1.25rem;
            right: 1.25rem;
            bottom: 1.25rem;
            z-index: 2;
            /*display: flex;*/
            align-items: center;
            justify-content: space-between;
            gap: 1rem;
            border: 1px solid rgba(255,255,255,.12);
            border-radius: 1.5rem;
            background: rgba(15, 23, 42, .58);
            padding: 1rem;
            backdrop-filter: blur(18px);
            -webkit-backdrop-filter: blur(18px);
        }
        .photo-caption span {
            color: rgb(165 243 252);
            font-size: .75rem;
            font-weight: 900;
            letter-spacing: .22em;
        }
        .photo-caption strong {
            font-size: .95rem;
            font-weight: 900;
            color: white;
            text-align: right;
        }
        .slider-arrow {
            position: absolute;
            top: 50%;
            z-index: 5;
            display: grid;
            height: 3rem;
            width: 3rem;
            transform: translateY(-50%);
            place-items: center;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,.14);
            background: rgba(15, 23, 42, .56);
            color: white;
            font-size: 1.35rem;
            font-weight: 900;
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
            transition: .25s ease;
        }
        .slider-arrow:hover { transform: translateY(-50%) scale(1.08); background: rgba(255,255,255,.18); }
        .slider-dot {
            height: .55rem;
            width: .55rem;
            border-radius: 999px;
            background: rgba(148, 163, 184, .45);
            transition: .25s ease;
        }
        .slider-dot.is-active {
            width: 2rem;
            background: rgb(103 232 249);
            box-shadow: 0 0 20px rgba(103, 232, 249, .65);
        }
        body.lightbox-open { overflow: hidden; }

        .russia-map-card {
            position: relative;
            overflow: hidden;
            border-radius: 2rem;
            border: 1px solid rgba(15,23,42,.08);
            background: linear-gradient(180deg, rgba(255,255,255,.86), rgba(248,250,252,.74));
            box-shadow: 0 24px 80px rgba(2, 12, 27, .10);
        }
        .dark .russia-map-card {
            border-color: rgba(255,255,255,.10);
            background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.04));
            box-shadow: 0 24px 80px rgba(0, 0, 0, .24);
        }
        .russia-map-card::before {
            content: '';
            position: absolute;
            inset: 0;
            pointer-events: none;
            background:
                    radial-gradient(circle at 16% 18%, rgba(0, 212, 255, .16), transparent 28%),
                    radial-gradient(circle at 82% 16%, rgba(139, 92, 246, .16), transparent 24%),
                    radial-gradient(circle at 50% 100%, rgba(105, 245, 200, .10), transparent 34%);
        }

        .russia-map-svg {
            display: block;
            width: 100%;
            height: auto;
        }

        .russia-map__grid path {
            fill: none;
            stroke: rgba(15, 23, 42, 0.08);
            stroke-width: 1;
        }

        .dark .russia-map__grid path {
            stroke: rgba(255, 255, 255, 0.08);
        }

        .russia-map__land-shadow {
            fill: rgba(2, 6, 23, 0.10);
        }

        .dark .russia-map__land-shadow {
            fill: rgba(0, 0, 0, 0.28);
        }

        .russia-map__land {
            fill: rgba(0, 212, 255, 0.12);
            stroke: rgba(0, 212, 255, 0.75);
            stroke-width: 2;
            transition: fill .25s ease, stroke .25s ease;
        }

        .dark .russia-map__land {
            fill: rgba(182, 255, 250, 0.08);
            stroke: rgba(105, 245, 200, 0.85);
        }

        .russia-map__labels {
            pointer-events: none;
        }

        .russia-map__label {
            font-family: Manrope, Inter, system-ui, sans-serif;
            font-size: 16px;
            font-weight: 800;
            fill: rgba(15, 23, 42, 0.85);
        }

        .dark .russia-map__label {
            fill: rgba(255, 255, 255, 0.9);
        }

        .russia-map__marker {
            fill: #00d4ff;
            stroke: #ffffff;
            stroke-width: 2.5;
        }

        .dark .russia-map__marker {
            fill: #69f5c8;
            stroke: #07111f;
        }

        .russia-map__pulse {
            fill: rgba(0, 212, 255, 0.22);
            transform-box: fill-box;
            transform-origin: center;
            animation: mapPulse 2.2s infinite ease-out;
        }

        .dark .russia-map__pulse {
            fill: rgba(105, 245, 200, 0.22);
        }

        .russia-map__point:hover .russia-map__marker,
        .russia-map__point:focus .russia-map__marker {
            filter: drop-shadow(0 0 10px rgba(0, 212, 255, 0.6));
        }

        .dark .russia-map__point:hover .russia-map__marker,
        .dark .russia-map__point:focus .russia-map__marker {
            filter: drop-shadow(0 0 12px rgba(105, 245, 200, 0.7));
        }

        @keyframes mapPulse {
            0% {
                transform: scale(0.7);
                opacity: 0.9;
            }
            70% {
                transform: scale(1.8);
                opacity: 0;
            }
            100% {
                transform: scale(1.8);
                opacity: 0;
            }
        }



        /* Примеры работ */
        /* Works gallery */
        .works-card {
            position: relative;
            aspect-ratio: 1 / 1;
            overflow: hidden;
            border-radius: 2rem;
            border: 1px solid rgba(15, 23, 42, .10);
            background: rgba(255,255,255,.65);
            box-shadow: 0 24px 70px rgba(2, 12, 27, .10);
            cursor: pointer;
            isolation: isolate;
            transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
        }

        .dark .works-card {
            border-color: rgba(255,255,255,.10);
            background: rgba(255,255,255,.07);
            box-shadow: 0 24px 80px rgba(0,0,0,.28);
        }

        .works-card:hover {
            transform: translateY(-8px) scale(1.015);
            box-shadow: 0 34px 100px rgba(0, 212, 255, .18);
            border-color: rgba(0, 212, 255, .35);
        }

        .works-card img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transform: scale(1.03);
            transition: transform .55s ease, filter .55s ease;
        }

        .works-card:hover img {
            transform: scale(1.11);
            filter: saturate(1.12) contrast(1.05);
        }

        .works-card::after {
            content: '';
            position: absolute;
            inset: 0;
            z-index: 1;
            background:
                    linear-gradient(to top, rgba(2, 6, 23, .86), rgba(2, 6, 23, .08) 58%, transparent),
                    radial-gradient(circle at 18% 12%, rgba(0, 212, 255, .26), transparent 38%);
            opacity: .92;
            transition: opacity .35s ease;
        }

        .works-card:hover::after {
            opacity: 1;
        }

        .works-card__content {
            position: absolute;
            left: 1rem;
            right: 1rem;
            bottom: 1rem;
            z-index: 2;
        }

        .works-card__tag {
            display: inline-flex;
            margin-bottom: .65rem;
            border-radius: 999px;
            border: 1px solid rgba(255,255,255,.16);
            background: rgba(255,255,255,.12);
            padding: .35rem .7rem;
            color: rgb(165 243 252);
            font-size: .67rem;
            font-weight: 900;
            letter-spacing: .18em;
            text-transform: uppercase;
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
        }

        .works-card__title {
            color: white;
            font-size: 1rem;
            font-weight: 900;
            line-height: 1.25;

            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .works-modal-open {
            overflow: hidden;
        }

        .works-modal {
            background:
                    radial-gradient(circle at 15% 15%, rgba(0, 212, 255, .18), transparent 30%),
                    radial-gradient(circle at 85% 20%, rgba(139, 92, 246, .20), transparent 28%),
                    rgba(2, 6, 23, .96);
        }

        .works-modal-panel {
            animation: worksModalIn .35s ease both;
        }

        @keyframes worksModalIn {
            from {
                opacity: 0;
                transform: translateY(18px) scale(.985);
            }
            to {
                opacity: 1;
                transform: translateY(0) scale(1);
            }
        }

        .works-modal-thumb {
            aspect-ratio: 1 / 1;
            overflow: hidden;
            border-radius: 1.25rem;
            border: 1px solid rgba(255,255,255,.12);
            background: rgba(255,255,255,.06);
            cursor: pointer;
            opacity: .72;
            transition: .25s ease;
        }

        .works-modal-thumb:hover,
        .works-modal-thumb.is-active {
            opacity: 1;
            transform: translateY(-3px);
            border-color: rgba(103, 232, 249, .65);
            box-shadow: 0 0 34px rgba(103, 232, 249, .20);
        }

        .works-modal-thumb img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .works-modal-panel {
            max-height: none;
        }

        @media (min-width: 1024px) {
            .works-modal-panel {
                max-height: calc(100dvh - 4rem);
            }
        }

        .works-modal aside::-webkit-scrollbar {
            width: 8px;
        }

        .works-modal aside::-webkit-scrollbar-track {
            background: rgba(255,255,255,.05);
            border-radius: 999px;
        }

        .works-modal aside::-webkit-scrollbar-thumb {
            background: rgba(103, 232, 249, .45);
            border-radius: 999px;
        }

        .works-modal aside::-webkit-scrollbar-thumb:hover {
            background: rgba(103, 232, 249, .7);
        }

        /* Documents */
        .documents-window {
            position: relative;
            overflow: hidden;
            border-radius: 2.5rem;
            border: 1px solid rgba(15, 23, 42, .10);
            background:
                    linear-gradient(180deg, rgba(255,255,255,.82), rgba(248,250,252,.68));
            box-shadow: 0 28px 90px rgba(2, 12, 27, .12);
        }

        .dark .documents-window {
            border-color: rgba(255,255,255,.10);
            background:
                    linear-gradient(180deg, rgba(255,255,255,.09), rgba(255,255,255,.045));
            box-shadow: 0 28px 110px rgba(0,0,0,.32);
        }

        .documents-window::before {
            content: '';
            position: absolute;
            inset: 0;
            pointer-events: none;
            background:
                    radial-gradient(circle at 16% 12%, rgba(0, 212, 255, .16), transparent 30%),
                    radial-gradient(circle at 88% 18%, rgba(139, 92, 246, .16), transparent 28%),
                    radial-gradient(circle at 50% 100%, rgba(105, 245, 200, .10), transparent 36%);
        }

        .documents-toolbar {
            position: relative;
            z-index: 1;
            border-bottom: 1px solid rgba(15, 23, 42, .08);
            background: rgba(255,255,255,.38);
        }

        .dark .documents-toolbar {
            border-bottom-color: rgba(255,255,255,.10);
            background: rgba(255,255,255,.045);
        }

        .documents-dot {
            width: .8rem;
            height: .8rem;
            border-radius: 999px;
            background: rgba(148, 163, 184, .65);
        }

        .documents-path {
            display: inline-flex;
            align-items: center;
            gap: .45rem;
            max-width: 100%;
            overflow: hidden;
            border-radius: 999px;
            border: 1px solid rgba(15, 23, 42, .08);
            background: rgba(255,255,255,.72);
            padding: .65rem 1rem;
            color: rgba(15, 23, 42, .72);
            font-size: .82rem;
            font-weight: 900;
            white-space: nowrap;
        }

        .dark .documents-path {
            border-color: rgba(255,255,255,.10);
            background: rgba(255,255,255,.08);
            color: rgba(255,255,255,.78);
        }

        .document-card {
            position: relative;
            z-index: 1;
            display: flex;
            min-height: 190px;
            flex-direction: column;
            justify-content: space-between;
            overflow: hidden;
            border-radius: 2rem;
            border: 1px solid rgba(15, 23, 42, .08);
            background: rgba(255,255,255,.70);
            padding: 1.35rem;
            box-shadow: 0 18px 60px rgba(2, 12, 27, .08);
            transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease, background .35s ease;
        }

        .dark .document-card {
            border-color: rgba(255,255,255,.10);
            background: rgba(255,255,255,.065);
            box-shadow: 0 18px 70px rgba(0,0,0,.24);
        }

        .document-card:hover {
            transform: translateY(-7px);
            border-color: rgba(0, 212, 255, .38);
            box-shadow: 0 32px 100px rgba(0, 212, 255, .16);
        }

        .document-card::after {
            content: '';
            position: absolute;
            inset: auto -30% -45% auto;
            width: 11rem;
            height: 11rem;
            border-radius: 999px;
            background: rgba(0, 212, 255, .12);
            filter: blur(34px);
            opacity: 0;
            transition: opacity .35s ease;
        }

        .document-card:hover::after {
            opacity: 1;
        }

        .document-card__top {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 1rem;
        }

        .document-icon {
            position: relative;
            display: grid;
            height: 4.3rem;
            width: 3.55rem;
            place-items: end center;
            border-radius: .8rem;
            color: white;
            font-size: .72rem;
            font-weight: 1000;
            letter-spacing: .08em;
            box-shadow: 0 18px 45px rgba(2, 12, 27, .18);
        }

        .document-icon::before {
            content: '';
            position: absolute;
            right: 0;
            top: 0;
            border-left: .85rem solid rgba(255,255,255,.45);
            border-bottom: .85rem solid rgba(0,0,0,.14);
            border-top-right-radius: .8rem;
        }

        .document-icon span {
            position: relative;
            z-index: 1;
            margin-bottom: .65rem;
        }

        .document-icon--pdf {
            background: linear-gradient(145deg, #ef4444, #991b1b);
        }

        .document-icon--doc {
            background: linear-gradient(145deg, #38bdf8, #1d4ed8);
        }

        .document-icon--xls {
            background: linear-gradient(145deg, #34d399, #047857);
        }

        .document-meta {
            display: inline-flex;
            border-radius: 999px;
            border: 1px solid rgba(15, 23, 42, .08);
            background: rgba(255,255,255,.68);
            padding: .4rem .75rem;
            color: rgba(15, 23, 42, .58);
            font-size: .7rem;
            font-weight: 900;
            letter-spacing: .16em;
            text-transform: uppercase;
        }

        .dark .document-meta {
            border-color: rgba(255,255,255,.10);
            background: rgba(255,255,255,.08);
            color: rgba(255,255,255,.58);
        }

        .document-title {
            margin-top: 1.25rem;
            color: rgb(15 23 42);
            font-size: 1.05rem;
            font-weight: 1000;
            line-height: 1.25;

            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .dark .document-title {
            color: white;
        }

        .document-description {
            margin-top: .65rem;
            color: rgb(71 85 105);
            font-size: .92rem;
            font-weight: 600;
            line-height: 1.65;

            display: -webkit-box;
            -webkit-line-clamp: 3;
            -webkit-box-orient: vertical;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .dark .document-description {
            color: rgb(203 213 225);
        }

        .document-action {
            margin-top: 1.1rem;
            display: inline-flex;
            align-items: center;
            color: rgb(8 145 178);
            font-size: .9rem;
            font-weight: 1000;
        }

        .dark .document-action {
            color: rgb(165 243 252);
        }


#worksModalMainImage {
    object-fit: contain;
    object-position: center;
    background: #000;
}


.russia-map-card {
    width: 100%;
}

.russia-map-svg {
    display: block;
    width: 100%;
    height: auto;
    min-height: 420px;
}

@media (max-width: 640px) {
    .russia-map-svg {
        min-height: 260px;
    }
}

.russia-map-card.has-active-point .russia-map__land {
    fill: rgba(0, 212, 255, 0.18);
    stroke: rgba(0, 212, 255, 0.95);
}

.dark .russia-map-card.has-active-point .russia-map__land {
    fill: rgba(105, 245, 200, 0.13);
    stroke: rgba(105, 245, 200, 1);
}

.russia-map__point {
    cursor: pointer;
    outline: none;
}

.russia-map__hit {
    fill: transparent;
    pointer-events: all;
}

.russia-map__region-halo {
    fill: rgba(0, 212, 255, 0.14);
    stroke: rgba(0, 212, 255, 0.58);
    stroke-width: 1.4;
    opacity: 0;
    transform-box: fill-box;
    transform-origin: center;
    transform: scale(.35);
    transition: opacity .25s ease, transform .35s ease, fill .25s ease, stroke .25s ease;
    filter: drop-shadow(0 0 18px rgba(0, 212, 255, .38));
}

.dark .russia-map__region-halo {
    fill: rgba(105, 245, 200, 0.16);
    stroke: rgba(105, 245, 200, 0.68);
    filter: drop-shadow(0 0 20px rgba(105, 245, 200, .42));
}

.russia-map__point:hover .russia-map__region-halo,
.russia-map__point:focus .russia-map__region-halo,
.russia-map__point.is-active .russia-map__region-halo {
    opacity: 1;
    transform: scale(1);
}

.russia-map__marker {
    transition: transform .25s ease, filter .25s ease, stroke-width .25s ease;
    transform-box: fill-box;
    transform-origin: center;
}

.russia-map__point:hover .russia-map__marker,
.russia-map__point:focus .russia-map__marker,
.russia-map__point.is-active .russia-map__marker {
    transform: scale(1.55);
    stroke-width: 3;
    filter: drop-shadow(0 0 16px rgba(0, 212, 255, .75));
}

.dark .russia-map__point:hover .russia-map__marker,
.dark .russia-map__point:focus .russia-map__marker,
.dark .russia-map__point.is-active .russia-map__marker {
    filter: drop-shadow(0 0 18px rgba(105, 245, 200, .85));
}

.russia-map-tooltip {
    position: absolute;
    z-index: 4;
    left: clamp(7rem, var(--map-tooltip-x, 50%), calc(100% - 7rem));
    top: clamp(4.5rem, var(--map-tooltip-y, 50%), calc(100% - 2rem));
    min-width: 170px;
    transform: translate(-50%, calc(-100% - 18px)) scale(.96);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    border: 1px solid rgba(15, 23, 42, .10);
    border-radius: 1.35rem;
    background: rgba(255, 255, 255, .84);
    padding: .85rem 1rem;
    box-shadow: 0 24px 80px rgba(2, 12, 27, .18);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    transition: opacity .25s ease, visibility .25s ease, transform .25s ease;
}

.dark .russia-map-tooltip {
    border-color: rgba(255, 255, 255, .14);
    background: rgba(7, 17, 31, .78);
    box-shadow: 0 24px 90px rgba(0, 0, 0, .36);
}

.russia-map-card.has-active-point .russia-map-tooltip {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, calc(-100% - 18px)) scale(1);
}

.russia-map-tooltip::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -8px;
    width: 16px;
    height: 16px;
    transform: translateX(-50%) rotate(45deg);
    border-right: 1px solid rgba(15, 23, 42, .10);
    border-bottom: 1px solid rgba(15, 23, 42, .10);
    background: inherit;
}

.dark .russia-map-tooltip::after {
    border-color: rgba(255, 255, 255, .14);
}

.russia-map-tooltip__eyebrow {
    display: block;
    color: rgb(8 145 178);
    font-size: .62rem;
    font-weight: 1000;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.dark .russia-map-tooltip__eyebrow {
    color: rgb(165 243 252);
}

.russia-map-tooltip strong {
    display: block;
    margin-top: .25rem;
    color: rgb(15 23 42);
    font-size: 1rem;
    font-weight: 1000;
    line-height: 1.15;
}

.dark .russia-map-tooltip strong {
    color: white;
}

.russia-cities-panel {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 1.75rem;
    background: rgba(255, 255, 255, .64);
    padding: .9rem;
    box-shadow: 0 16px 50px rgba(2, 12, 27, .07);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}

.dark .russia-cities-panel {
    border-color: rgba(255, 255, 255, .10);
    background: rgba(255, 255, 255, .055);
    box-shadow: 0 18px 60px rgba(0, 0, 0, .18);
}

.russia-location-chip {
    border-radius: 999px;
    border: 1px solid rgba(15, 23, 42, .08);
    background: rgba(255, 255, 255, .76);
    padding: .5rem .75rem;
    color: rgb(71 85 105);
    font-size: .74rem;
    font-weight: 900;
    line-height: 1;
    transition: transform .2s ease, border-color .2s ease, background .2s ease, color .2s ease, box-shadow .2s ease;
}

.dark .russia-location-chip {
    border-color: rgba(255, 255, 255, .10);
    background: rgba(255, 255, 255, .07);
    color: rgb(203 213 225);
}

.geography-city-pill.is-active,
.russia-location-chip:hover,
.russia-location-chip:focus,
.russia-location-chip.is-active {
    transform: translateY(-1px);
    border-color: rgba(0, 212, 255, .48);
    background: rgba(0, 212, 255, .12);
    color: rgb(8 145 178);
    box-shadow: 0 10px 30px rgba(0, 212, 255, .14);
    outline: none;
}

.dark .geography-city-pill.is-active,
.dark .russia-location-chip:hover,
.dark .russia-location-chip:focus,
.dark .russia-location-chip.is-active {
    border-color: rgba(105, 245, 200, .46);
    background: rgba(105, 245, 200, .12);
    color: rgb(165 243 252);
    box-shadow: 0 10px 34px rgba(105, 245, 200, .12);
}
