index.astro 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. ---
  2. import Base from "../layouts/Base.astro";
  3. import CTAForm from "../components/CTAForm.astro";
  4. import TelegramWidget from "../components/TelegramWidget.astro";
  5. import { services } from "../data/services";
  6. import { products } from "../data/products";
  7. import { site } from "../data/site";
  8. const whyUs = [
  9. {
  10. title: "Разработки",
  11. text: "Собственные программные и аппаратные решения позволяют решать задачи, которые другие считают невозможными. В команде работают не только инженеры, но и программисты.",
  12. },
  13. {
  14. title: "Инновации",
  15. text: "Регулярно тестируем и внедряем технические новшества, что поддерживает актуальность наших услуг.",
  16. },
  17. {
  18. title: "Открытость",
  19. text: "В отчётах подробно описываются все параметры, решения и допущения. Клиенты получают развёрнутые консультации.",
  20. },
  21. {
  22. title: "Эффективность",
  23. text: "Важна не только безопасность, но и экономика решений. Поиск потенциала для экономии — одна из задач геомеханика.",
  24. },
  25. ];
  26. const clients = [
  27. "___1.png", "_2.jpg", "photo-610z4l.jpg", "29595058_20159791717.jpg",
  28. "9f97a370e8530d40a0ff.jpg", "unnamed.jpg", "321.JPG", "evraz.jpg",
  29. "c5aa9760-2920-4b4d-b.png", "17304586690.jpg",
  30. ].map((f) => "/images/" + f);
  31. ---
  32. <Base
  33. title="Геомеханическое моделирование и ПО. Горная геомеханика — Scientia"
  34. description="Институт геомеханики оценивает геомеханические риски, ведёт геотехнический мониторинг, кинематический анализ, расчет прочности и устойчивости горных работ, мониторинг бортов карьера, инженерно геологическая съемка, геомеханическая модель"
  35. >
  36. <!-- Cinematic full-viewport hero -->
  37. <section class="relative flex h-[100svh] min-h-[640px] items-end overflow-hidden bg-night-950 text-white">
  38. <img
  39. src="/images/1655676643_10-kartin.jpg"
  40. alt=""
  41. class="absolute inset-0 h-full w-full object-cover"
  42. loading="eager"
  43. />
  44. <div class="absolute inset-0 bg-gradient-to-t from-black/80 via-black/25 to-black/40"></div>
  45. <div class="relative mx-auto w-full max-w-[1400px] px-5 pb-28 sm:px-8">
  46. <p class="text-xs font-semibold uppercase tracking-[0.25em] text-accent-300">{site.tagline}</p>
  47. <h1 class="display mt-5 max-w-4xl text-5xl sm:text-7xl lg:text-8xl">
  48. Разработки, инновации и&nbsp;открытость<span class="dot">.</span>
  49. </h1>
  50. <p class="mt-6 max-w-xl text-lg leading-relaxed text-white/75">
  51. Для эффективности горной промышленности: комплексные геомеханические исследования,
  52. собственное ПО и аппаратура.
  53. </p>
  54. <div class="mt-9 flex flex-wrap items-center gap-4">
  55. <a
  56. href="#razrabotki"
  57. class="group flex items-center gap-3 rounded-full bg-accent-300 py-3.5 pl-7 pr-4 font-semibold text-night-950 transition-colors hover:bg-accent-200"
  58. >
  59. Наши разработки
  60. <span class="flex h-8 w-8 items-center justify-center rounded-full bg-night-950 text-accent-300" aria-hidden="true">→</span>
  61. </a>
  62. <a
  63. href="#uslugi"
  64. class="rounded-full border border-white/40 px-7 py-3.5 font-semibold text-white transition-colors hover:border-white hover:bg-white/10"
  65. >
  66. Услуги
  67. </a>
  68. </div>
  69. </div>
  70. <!-- Telegram news window (right side) -->
  71. <div class="absolute bottom-24 right-20 z-10 hidden xl:block">
  72. <TelegramWidget />
  73. </div>
  74. <!-- Scroll indicator -->
  75. <a
  76. href="#uslugi"
  77. class="absolute bottom-6 left-1/2 -translate-x-1/2 text-white/70 transition-colors hover:text-white"
  78. aria-label="Листайте вниз"
  79. >
  80. <svg class="h-7 w-7 animate-bounce" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true">
  81. <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" />
  82. </svg>
  83. </a>
  84. </section>
  85. <!-- Services — Rocscience-style section header + card deck -->
  86. <section id="uslugi" class="scroll-mt-20 bg-white">
  87. <div class="mx-auto max-w-[1400px] px-5 py-24 sm:px-8 lg:py-32">
  88. <div class="flex flex-wrap items-end justify-between gap-6">
  89. <h2 class="display text-5xl sm:text-6xl">Услуги<span class="dot">.</span></h2>
  90. <p class="max-w-md text-slate-500">
  91. Полный цикл: от структурно-геологического картирования до мониторинга деформаций
  92. и аналитических исследований.
  93. </p>
  94. </div>
  95. <div class="mt-14 grid gap-x-8 gap-y-14 sm:grid-cols-2 lg:grid-cols-4">
  96. {services.map((s) => (
  97. <a
  98. href={s.href ?? (s.external ? s.href : "#contacts")}
  99. class="group block"
  100. {...s.external ? { target: "_blank", rel: "noopener" } : {}}
  101. >
  102. <div class="relative aspect-[4/3] overflow-hidden">
  103. <img
  104. src={s.image}
  105. alt={s.title}
  106. class="h-full w-full object-cover transition-transform duration-700 group-hover:scale-105"
  107. loading="lazy"
  108. />
  109. {"tag" in s && s.tag && (
  110. <span class="absolute left-4 top-4 bg-accent-300 px-2.5 py-1 text-xs font-bold text-night-950">{s.tag}</span>
  111. )}
  112. </div>
  113. <div class="mt-5">
  114. <h3 class="display text-2xl">{s.title}</h3>
  115. {s.items && (
  116. <p class="mt-2 line-clamp-2 text-sm leading-relaxed text-slate-500">{s.items[0]}</p>
  117. )}
  118. {s.description && (
  119. <p class="mt-2 line-clamp-2 text-sm leading-relaxed text-slate-500">{s.description}</p>
  120. )}
  121. </div>
  122. </a>
  123. ))}
  124. </div>
  125. </div>
  126. </section>
  127. <!-- Products — Porsche-style full-bleed stages -->
  128. <section id="razrabotki" class="scroll-mt-20 bg-night-950 text-white">
  129. {products.map((p) => (
  130. <a href={p.href} class="group relative block h-[82svh] min-h-[560px] overflow-hidden border-t border-white/10">
  131. <img
  132. src={p.image}
  133. alt={p.name}
  134. class="absolute inset-0 h-full w-full object-cover opacity-80 transition-all duration-700 group-hover:scale-[1.03] group-hover:opacity-100"
  135. loading="lazy"
  136. />
  137. <div class="absolute inset-0 bg-gradient-to-t from-black/85 via-black/20 to-black/30"></div>
  138. <div class="relative mx-auto flex h-full max-w-[1400px] items-end px-5 pb-16 sm:px-8">
  139. <div class="w-full">
  140. <p class="text-xs font-semibold uppercase tracking-[0.25em] text-accent-300">{p.tagline}</p>
  141. <div class="mt-3 flex flex-wrap items-end justify-between gap-6">
  142. <div class="max-w-2xl">
  143. <h3 class="display text-5xl sm:text-6xl lg:text-7xl">{p.name}<span class="dot">.</span></h3>
  144. <p class="mt-4 max-w-xl text-white/75">{p.description}</p>
  145. </div>
  146. <span class="chip-arrow" aria-hidden="true">
  147. <svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  148. <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12l-7.5 7.5M21 12H3" />
  149. </svg>
  150. </span>
  151. </div>
  152. </div>
  153. </div>
  154. </a>
  155. ))}
  156. </section>
  157. <!-- Why us — editorial dark numbers -->
  158. <section class="bg-white">
  159. <div class="mx-auto max-w-[1400px] px-5 py-24 sm:px-8 lg:py-32">
  160. <h2 class="display max-w-3xl text-5xl sm:text-6xl">
  161. Почему выбирают нас<span class="dot">.</span>
  162. </h2>
  163. <div class="mt-16 grid gap-x-8 gap-y-12 sm:grid-cols-2 lg:grid-cols-4">
  164. {whyUs.map((w, i) => (
  165. <div class="border-t-2 border-night-950 pt-6">
  166. <span class="display text-6xl text-accent-300">{String(i + 1).padStart(2, "0")}</span>
  167. <h3 class="display mt-4 text-2xl">{w.title}</h3>
  168. <p class="mt-3 text-sm leading-relaxed text-slate-500">{w.text}</p>
  169. </div>
  170. ))}
  171. </div>
  172. <!-- Client logos -->
  173. <div class="mt-20 border-t border-slate-200 pt-14">
  174. <h3 class="text-xs font-semibold uppercase tracking-[0.25em] text-slate-400">Наши заказчики</h3>
  175. <div class="mt-10 grid grid-cols-2 items-center justify-items-center gap-x-10 gap-y-10 sm:grid-cols-3 lg:grid-cols-5">
  176. {clients.map((src) => (
  177. <img src={src} alt="Логотип заказчика" class="max-h-24 w-auto max-w-[220px] object-contain opacity-70 grayscale transition hover:opacity-100 hover:grayscale-0" loading="lazy" />
  178. ))}
  179. </div>
  180. </div>
  181. </div>
  182. </section>
  183. <!-- Community — Porsche-style tiles -->
  184. <section class="bg-night-950 text-white">
  185. <div class="mx-auto grid max-w-[1400px] gap-px px-0 sm:grid-cols-2">
  186. <a href="https://t.me/scientia_ru" target="_blank" rel="noopener" class="group relative block min-h-[420px] overflow-hidden">
  187. <img src="/images/20200629_141121.jpg" alt="" class="absolute inset-0 h-full w-full object-cover opacity-40 transition-all duration-700 group-hover:scale-[1.03] group-hover:opacity-60" loading="lazy" />
  188. <div class="absolute inset-0 bg-gradient-to-t from-black/85 to-transparent"></div>
  189. <div class="relative flex h-full flex-col justify-end p-10">
  190. <h3 class="display text-4xl">Телеграм-канал<span class="dot">.</span></h3>
  191. <p class="mt-3 max-w-sm text-white/70">Новости, открытия и рекомендации — делимся в канале компании</p>
  192. <span class="chip-arrow mt-8" aria-hidden="true">
  193. <svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  194. <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12l-7.5 7.5M21 12H3" />
  195. </svg>
  196. </span>
  197. </div>
  198. </a>
  199. <a href={site.external.blog} target="_blank" rel="noopener" class="group relative block min-h-[420px] overflow-hidden border-l border-white/10">
  200. <img src="/images/photo_2022-09-19_06-.jpg" alt="" class="absolute inset-0 h-full w-full object-cover opacity-40 transition-all duration-700 group-hover:scale-[1.03] group-hover:opacity-60" loading="lazy" />
  201. <div class="absolute inset-0 bg-gradient-to-t from-black/85 to-transparent"></div>
  202. <div class="relative flex h-full flex-col justify-end p-10">
  203. <h3 class="display text-4xl">Блог<span class="dot">.</span></h3>
  204. <p class="mt-3 max-w-sm text-white/70">Последние записи и статьи — на платформе Teletype</p>
  205. <span class="chip-arrow mt-8" aria-hidden="true">
  206. <svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  207. <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12l-7.5 7.5M21 12H3" />
  208. </svg>
  209. </span>
  210. </div>
  211. </a>
  212. </div>
  213. </section>
  214. <CTAForm />
  215. </Base>