├── images
├── logo
├── logo.png
├── logo.svg
└── дмитрий.jpg
├── README.md
├── script.js
├── styles.css
└── index.html
/images/logo:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/logo.png:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/дмитрий.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gritsenko/RoyalRangersMoscow/main/images/дмитрий.jpg
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Визитка — Цпрские Охотники
2 |
3 | Простая статическая одностраничная визитка для организации «Цпрские Охотники». Файлы:
4 |
5 | - `index.html` — главная страница
6 | - `styles.css` — стили
7 | - `script.js` — простая логика: меню, форма (локально), vCard
8 |
9 | Как запустить:
10 |
11 | Откройте `index.html` в браузере. Для локального сервера (рекомендуется) можно использовать `python -m http.server` или расширение Live Server в VS Code.
12 |
13 | Примечание: контакты и тексты — примеры. Замените на реальные данные при необходимости.
14 |
--------------------------------------------------------------------------------
/script.js:
--------------------------------------------------------------------------------
1 | // Small interactive behaviors: nav toggle, form handling, vCard download
2 | document.addEventListener('DOMContentLoaded',function(){
3 | // year
4 | document.getElementById('year').textContent = new Date().getFullYear();
5 |
6 | // nav toggle
7 | const toggle = document.querySelector('.nav-toggle');
8 | const nav = document.querySelector('.site-nav');
9 | toggle.addEventListener('click',()=>{nav.style.display = nav.style.display === 'flex' ? 'none' : 'flex'});
10 |
11 | // form
12 | const form = document.getElementById('contactForm');
13 | const msg = document.getElementById('formMessage');
14 | const clear = document.getElementById('clearForm');
15 |
16 | form.addEventListener('submit',function(e){
17 | e.preventDefault();
18 | const data = new FormData(form);
19 | // Fake send: show success message and reset
20 | msg.textContent = 'Спасибо! Сообщение отправлено (локальный демонстрационный режим).';
21 | form.reset();
22 | });
23 | clear.addEventListener('click',()=>{form.reset();msg.textContent='';});
24 |
25 | // vCard
26 | document.getElementById('downloadVcard').addEventListener('click',()=>{
27 | const vcard = [
28 | 'BEGIN:VCARD',
29 | 'VERSION:3.0',
30 | 'FN:Цпрские Охотники',
31 | 'ORG:Цпрские Охотники',
32 | 'TEL;WORK;VOICE:+70000000000',
33 | 'EMAIL:info@cprhunters.example',
34 | 'END:VCARD'
35 | ].join('\r\n');
36 | const blob = new Blob([vcard],{type:'text/vcard;charset=utf-8'});
37 | const url = URL.createObjectURL(blob);
38 | const a = document.createElement('a');
39 | a.href = url; a.download = 'cprskie_ohotniki.vcf'; document.body.appendChild(a); a.click(); a.remove(); URL.revokeObjectURL(url);
40 | });
41 | });
42 |
--------------------------------------------------------------------------------
/styles.css:
--------------------------------------------------------------------------------
1 | /* Basic reset */
2 | *{box-sizing:border-box;margin:0;padding:0}
3 | :root{--accent:#2b6cb0;--muted:#6b7280;--bg:#f7fafc;--card:#ffffff}
4 | body{font-family:Inter,Segoe UI,Arial,Helvetica,sans-serif;line-height:1.5;color:#0f1724;background:linear-gradient(180deg,var(--bg),#fff)}
5 | .container{max-width:900px;margin:0 auto;padding:1rem}
6 | .site-header{background:#fff;border-bottom:1px solid #e6e9ef}
7 | .header-inner{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0}
8 | .logo{display:inline-flex;align-items:center;gap:.5rem;font-weight:700;color:var(--accent);text-decoration:none;font-size:1.125rem}
9 | .logo-img{width:44px;height:44px;object-fit:contain;border-radius:6px}
10 | .logo-text{font-size:1rem}
11 | .site-nav{display:flex;gap:.5rem}
12 | .site-nav a{color:#0f1724;text-decoration:none;padding:.5rem;border-radius:6px}
13 | .site-nav a:hover{background:#f1f5f9}
14 | .nav-toggle{display:none;background:transparent;border:0;font-size:1.25rem}
15 | .hero{padding:3rem 0;background:linear-gradient(90deg,rgba(43,108,176,0.06),rgba(43,108,176,0.02))}
16 | .hero h1{font-size:2rem;margin-bottom:.25rem}
17 | .tagline{color:var(--muted);margin-bottom:1rem}
18 | .btn{display:inline-block;background:var(--accent);color:#fff;padding:.6rem .9rem;border-radius:8px;text-decoration:none;border:0;cursor:pointer}
19 | .btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}
20 | .about h2,.services h2,.gallery h2,.contact h2{margin:1rem 0}
21 | .services-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;list-style:none}
22 | .card{background:var(--card);padding:1rem;border:1px solid #eef2f6;border-radius:8px;text-align:center}
23 | .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem}
24 | .gallery-img{display:block;max-width:100%;height:auto;border-radius:6px}
25 | .contact-form{display:grid;gap:.5rem;max-width:560px}
26 | .contact-form label{display:flex;flex-direction:column;gap:.25rem}
27 | .contact-form input,.contact-form textarea{padding:.5rem;border:1px solid #dbe3ee;border-radius:6px}
28 | .form-actions{display:flex;gap:.5rem;margin-top:.5rem}
29 | .form-message{color:var(--muted);margin-top:.5rem}
30 | .site-footer{border-top:1px solid #e6e9ef;margin-top:2rem;background:#fff}
31 | .footer-inner{display:flex;justify-content:space-between;align-items:center;padding:1rem}
32 | .social a{margin-left:.5rem;color:var(--muted);text-decoration:none}
33 | @media (max-width:700px){
34 | .site-nav{display:none;flex-direction:column;background:#fff;position:absolute;right:1rem;top:64px;padding:.5rem;border-radius:8px;box-shadow:0 6px 18px rgba(12,15,20,.08)}
35 | .nav-toggle{display:block}
36 | .header-inner{position:relative}
37 | }
38 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Царские Охотники — Визитка
7 |
8 |
9 |
10 |
11 |
26 |
27 |
28 |
29 |
30 |
Царские Охотники
31 |
Профессионалы в охоте и природоохранных работах
32 |
36 |
37 |
38 |
39 |
40 | О нас
41 | «Царские Охотники» — объединение специалистов в области охоты, разведения и сохранения популяций диких животных. Мы работаем с частными клиентами и организациями, предоставляем консультации, обучение и полевую поддержку.
42 |
43 |
44 |
45 | Услуги
46 |
47 |
48 | Экологические оценки
49 | Оценка мест обитания, советы по сохранению видов и мониторинг популяций.
50 |
51 |
52 | Полевые работы
53 | Проведение выездных работ, сопровождение и мониторинг.
54 |
55 |
56 | Обучение и консультации
57 | Курсы по безопасной и ответственной охоте, оборудование и разрешения.
58 |
59 |
60 |
61 |
62 |
63 | Галерея
64 |
65 |
66 |
67 |
68 |
Фото 2
69 |
Фото 3
70 |
71 |
72 |
73 |
98 |
99 |
100 |
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------