astro_advokat/frontend/src/components/services/civil/ServicesHero.astro
2026-03-30 20:21:41 +05:00

339 lines
11 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
import { CONTACT_CONSTANTS } from "@constants/constants.ts";
interface Props {
title?: string;
subtitle?: string;
}
const {
title = "Гражданские правовые споры",
subtitle = "Решение сложных имущественных и семейных конфликтов. Полное сопровождение от консультации до исполнения решения суда.",
} = Astro.props;
const features = [
"Бесплатный первичный анализ",
"Работаем по всему ХМАО-Югра",
"Оплата по результату",
];
---
<section
class="relative min-h-screen flex items-center overflow-hidden bg-[var(--color-navy)]"
>
<!-- Диагональный фон -->
<div class="absolute inset-0 z-0">
<div
class="absolute inset-0 bg-gradient-to-br from-[var(--color-navy)] via-[var(--color-navy)] to-[var(--color-navy-dark)]"
>
</div>
<div
class="absolute top-0 right-0 w-2/3 h-full bg-[var(--color-gold)] opacity-[0.02] transform skew-x-12 translate-x-1/4"
>
</div>
<div
class="absolute bottom-0 left-0 w-1/2 h-1/2 bg-[var(--color-gold)] opacity-[0.03] rounded-full blur-[150px]"
>
</div>
</div>
<!-- Анимированные линии -->
<div class="absolute inset-0 overflow-hidden pointer-events-none">
<div
class="absolute top-1/4 left-0 w-full h-px bg-gradient-to-r from-transparent via-[var(--color-gold)]/20 to-transparent animate-slide-right"
>
</div>
<div
class="absolute top-1/2 left-0 w-full h-px bg-gradient-to-r from-transparent via-[var(--color-gold)]/10 to-transparent animate-slide-left"
>
</div>
<div
class="absolute top-3/4 left-0 w-full h-px bg-gradient-to-r from-transparent via-[var(--color-gold)]/20 to-transparent animate-slide-right"
style="animation-delay: 1s;"
>
</div>
</div>
<!-- Плавающие декорации -->
<div
class="absolute top-20 right-20 w-32 h-32 border border-[var(--color-gold)]/10 rounded-full animate-float"
>
</div>
<div
class="absolute top-20 right-20 w-24 h-24 border border-[var(--color-gold)]/20 rounded-full animate-float-delayed"
>
</div>
<div
class="absolute bottom-32 left-20 w-40 h-40 bg-[var(--color-gold)]/5 rounded-full blur-3xl animate-pulse-slow"
>
</div>
<div
class="container mx-auto px-4 md:px-8 lg:px-16 relative z-10 pt-8 md:pt-0"
>
<div class="max-w-4xl mx-auto md:mx-0">
<!-- Тег -->
<div class="flex justify-center md:justify-start mb-8">
<div
class="inline-flex items-center gap-2 px-4 py-2 bg-[var(--color-gold)]/10 border border-[var(--color-gold)]/20 rounded-full text-[var(--color-gold)] text-xs font-bold uppercase tracking-wider backdrop-blur-sm"
>
<span
class="w-2 h-2 bg-[var(--color-gold)] rounded-full animate-pulse"
></span>
Гражданское право
</div>
</div>
<!-- Заголовок с выделением -->
<h1
class="text-5xl md:text-7xl font-bold text-[var(--color-white)] leading-[1.05] mb-8 text-center md:text-left"
>
{
title
.split(" ")
.map((word, i) =>
i === 0 ? (
<span class="block text-[var(--color-gold)] mb-2">{word}</span>
) : (
<span class="inline-block mr-4">{word}</span>
),
)
}
</h1>
<!-- Подзаголовок с линией -->
<div class="relative pl-0 md:pl-8 mb-12 text-center md:text-left">
<div
class="hidden md:block absolute left-0 top-0 bottom-0 w-1 bg-gradient-to-b from-[var(--color-gold)] to-transparent"
>
</div>
<p
class="text-[var(--color-gray-400)] text-xl md:text-2xl leading-relaxed"
>
{subtitle}
</p>
</div>
<!-- Быстрые фичи -->
<div class="flex flex-wrap gap-4 mb-12 justify-center md:justify-start">
{
features.map((feature) => (
<div class="flex items-center gap-2 px-4 py-2 bg-[var(--color-navy-dark)]/50 border border-[var(--color-gray-600)]/20 rounded-lg text-[var(--color-gray-400)] text-sm">
<svg
class="w-4 h-4 text-[var(--color-gold)]"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M5 13l4 4L19 7"
/>
</svg>
{feature}
</div>
))
}
</div>
<!-- CTA группа -->
<div class="flex flex-col sm:flex-row gap-4">
<button
data-consultation-modal
class="group relative px-8 py-4 bg-[var(--color-gold)] hover:bg-[var(--color-gold-hover)] text-[var(--color-white)] font-bold rounded-lg overflow-hidden transition-all hover:shadow-[0_0_40px_rgba(191,155,88,0.3)] hover:-translate-y-1 cursor-pointer"
>
<span
class="absolute inset-0 bg-gradient-to-r from-transparent via-white/20 to-transparent -translate-x-full group-hover:translate-x-full transition-transform duration-700"
></span>
<span class="relative flex items-center justify-center gap-3">
<svg
class="w-5 h-5"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"
></path>
</svg>
Бесплатная консультация
</span>
</button>
<button
onclick="document.getElementById('calculator').scrollIntoView({behavior: 'smooth'})"
class="px-8 py-4 bg-transparent border-2 border-[var(--color-gray-600)]/30 text-[var(--color-white)] font-bold rounded-lg hover:border-[var(--color-gold)]/50 hover:bg-[var(--color-gold)]/5 transition-all flex items-center justify-center gap-2 group"
>
<svg
class="w-5 h-5 text-[var(--color-gold)] group-hover:scale-110 transition-transform"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"
></path>
</svg>
Рассчитать стоимость
</button>
</div>
<!-- Статистика в ряд -->
<div class="mt-16 pt-8 border-t border-[var(--color-gray-600)]/10">
<div class="grid grid-cols-3 gap-8 text-center md:text-left">
<div>
<div class="text-3xl font-black text-[var(--color-gold)] mb-1">
1000+
</div>
<div class="text-sm text-[var(--color-gray-500)]">
Выигранных дел
</div>
</div>
<div>
<div class="text-3xl font-black text-[var(--color-gold)] mb-1">
95%
</div>
<div class="text-sm text-[var(--color-gray-500)]">
Успешных исходов
</div>
</div>
<div>
<div class="text-3xl font-black text-[var(--color-gold)] mb-1">
12 лет
</div>
<div class="text-sm text-[var(--color-gray-500)]">
Юридической практики
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Декоративная плашка справа -->
<div class="hidden xl:block absolute right-16 top-1/2 -translate-y-1/2">
<div class="relative">
<div
class="absolute -inset-4 bg-[var(--color-gold)]/10 rounded-2xl blur-xl"
>
</div>
<div
class="relative bg-[var(--color-navy-dark)]/80 backdrop-blur border border-[var(--color-gold)]/20 rounded-2xl p-6 w-80"
>
<div class="flex items-center gap-3 mb-4">
<div
class="w-10 h-10 rounded-lg bg-[var(--color-gold)]/20 flex items-center justify-center"
>
<svg
class="w-5 h-5 text-[var(--color-gold)]"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
</div>
<div>
<div class="text-[var(--color-white)] font-bold text-sm">
Срочная помощь
</div>
<div class="text-[var(--color-gray-500)] text-xs">
Ответ за 15 минут
</div>
</div>
</div>
<div class="space-y-2">
<div class="flex justify-between text-sm">
<span class="text-[var(--color-gray-500)]">Семейные дела</span>
<span class="text-[var(--color-gold)]">24/7</span>
</div>
<div class="flex justify-between text-sm">
<span class="text-[var(--color-gray-500)]">Недвижимость</span>
<span class="text-[var(--color-gold)]">24/7</span>
</div>
<div class="flex justify-between text-sm">
<span class="text-[var(--color-gray-500)]">Наследство</span>
<span class="text-[var(--color-gold)]">Пн-Пт</span>
</div>
</div>
</div>
</div>
</div>
</section>
<style>
@keyframes slide-right {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
@keyframes slide-left {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(-100%);
}
}
@keyframes float {
0%,
100% {
transform: translateY(0) rotate(0deg);
}
50% {
transform: translateY(-20px) rotate(5deg);
}
}
@keyframes float-delayed {
0%,
100% {
transform: translateY(0) rotate(0deg);
}
50% {
transform: translateY(-15px) rotate(-5deg);
}
}
@keyframes pulse-slow {
0%,
100% {
opacity: 0.05;
transform: scale(1);
}
50% {
opacity: 0.1;
transform: scale(1.1);
}
}
.animate-slide-right {
animation: slide-right 8s linear infinite;
}
.animate-slide-left {
animation: slide-left 8s linear infinite;
}
.animate-float {
animation: float 6s ease-in-out infinite;
}
.animate-float-delayed {
animation: float-delayed 8s ease-in-out infinite;
}
.animate-pulse-slow {
animation: pulse-slow 4s ease-in-out infinite;
}
</style>