Compare commits
47 Commits
edd2eec9cd
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| bc9c467819 | |||
| df2a01942f | |||
| c01a89d470 | |||
| 85f3c08df1 | |||
| 8e72e0411e | |||
| 9cac082da1 | |||
| 3298891683 | |||
| 72cd5a690b | |||
| fb9042c845 | |||
| f9b3d01967 | |||
| 30b370dfd0 | |||
| 600ec96c4c | |||
| 0196ef7bf5 | |||
| 273c8c8a23 | |||
| 12b0b6943e | |||
| 1a2e0014fb | |||
| 8b9161d25e | |||
| 85ab5747cd | |||
| 631c510b51 | |||
| b0d1ba180c | |||
| 6ae096d6c0 | |||
| 4f963f03c8 | |||
| 2e20e7bf1b | |||
| 7f843ff04c | |||
| ac06706cf9 | |||
| ccf727a1be | |||
| 96564010f2 | |||
| 0305063e16 | |||
| 945e137753 | |||
| 796b3158a8 | |||
| 2a6d3fb1b6 | |||
| 283ffff080 | |||
| 289194d5d8 | |||
| 95dadf4c90 | |||
| a6f82eadae | |||
| 47a4a32fd8 | |||
| df971e2f89 | |||
| 16442dc106 | |||
| bff406e94f | |||
| 1534181e71 | |||
| 731e62e53c | |||
| 8b21cdef9c | |||
| 9e35fa4d7d | |||
| d206d9421a | |||
| d35bcbe53a | |||
| e4690f6e2d | |||
| 472bf3c662 |
@@ -11,8 +11,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Setup SSH key
|
- name: Setup SSH key
|
||||||
run: |
|
run: |
|
||||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > /tmp/id_fin
|
echo "${{ secrets.SSH_PRIVATE_KEY_RU }}" > /tmp/id_ru
|
||||||
chmod 600 /tmp/id_fin
|
chmod 600 /tmp/id_ru
|
||||||
#ключ машины
|
#ключ машины
|
||||||
- name: Create .env file
|
- name: Create .env file
|
||||||
run: echo "${{ secrets.RUNNER_ENV }}" > .env
|
run: echo "${{ secrets.RUNNER_ENV }}" > .env
|
||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
- name: Run Ansible playbook
|
- name: Run Ansible playbook
|
||||||
run: ansible-playbook -i tmp-repo/ansible/inventory.ini tmp-repo/ansible/deploy.yml -e @tmp-repo/ansible/secrets.yml -e env_file="$(pwd)/.env"
|
run: ansible-playbook -i tmp-repo/ansible/inventory.ini tmp-repo/ansible/deploy.yml -e @tmp-repo/ansible/secrets.yml -e env_file="$(pwd)/.env"
|
||||||
env:
|
env:
|
||||||
ANSIBLE_PRIVATE_KEY_FILE: /tmp/id_fin
|
ANSIBLE_PRIVATE_KEY_FILE: /tmp/id_ru
|
||||||
ANSIBLE_HOST_KEY_CHECKING: "False"
|
ANSIBLE_HOST_KEY_CHECKING: "False"
|
||||||
|
|
||||||
build:
|
build:
|
||||||
@@ -37,8 +37,12 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u mh.dmitrii@homyk.space --password-stdin
|
||||||
|
|
||||||
- name: Create .env file
|
- name: Create .env file
|
||||||
run: echo "${{ secrets.WEDDING_SITE_ENV }}" > .env
|
run: echo "${{ secrets.WEDDING_SITE_ENV }}" > .env
|
||||||
|
|
||||||
- name: Check env
|
- name: Check env
|
||||||
run: cat .env
|
run: cat .env
|
||||||
#env для проекта
|
#env для проекта
|
||||||
|
|||||||
@@ -16,6 +16,11 @@
|
|||||||
args:
|
args:
|
||||||
creates: /usr/bin/docker
|
creates: /usr/bin/docker
|
||||||
|
|
||||||
|
- name: Install Docker Compose plugin
|
||||||
|
apt:
|
||||||
|
name: docker-compose-plugin
|
||||||
|
state: present
|
||||||
|
|
||||||
- name: Ensure /opt/infra exists
|
- name: Ensure /opt/infra exists
|
||||||
file:
|
file:
|
||||||
path: /opt/infra
|
path: /opt/infra
|
||||||
@@ -38,4 +43,7 @@
|
|||||||
creates: /opt/infra/node-docker.yaml
|
creates: /opt/infra/node-docker.yaml
|
||||||
|
|
||||||
- name: Start node-docker
|
- name: Start node-docker
|
||||||
shell: docker-compose -f /opt/infra/node-docker.yaml up -d
|
shell: docker compose -f /opt/infra/node-docker.yaml up -d
|
||||||
|
|
||||||
|
- name: Docker system prune
|
||||||
|
shell: docker system prune -a -f
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
[servers]
|
[servers]
|
||||||
myserver ansible_host=38.244.136.102 ansible_user=root
|
myserver ansible_host=81.19.135.168 ansible_user=root
|
||||||
@@ -8,6 +8,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- caddy_data:/data
|
- caddy_data:/data
|
||||||
- caddy_config:/config
|
- caddy_config:/config
|
||||||
|
- /root/.docker/config.json:/root/.docker/config.json:ro
|
||||||
networks:
|
networks:
|
||||||
- docker_wedding-site-network
|
- docker_wedding-site-network
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ services:
|
|||||||
container_name: wedding-site
|
container_name: wedding-site
|
||||||
volumes:
|
volumes:
|
||||||
- /home/sevice/DB:/home/backend/server/backend/database/DB
|
- /home/sevice/DB:/home/backend/server/backend/database/DB
|
||||||
|
- /root/.docker/config.json:/root/.docker/config.json:ro
|
||||||
expose:
|
expose:
|
||||||
- "${PORT}"
|
- "${PORT}"
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./data/act_runner:/data
|
- ./data/act_runner:/data
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- /root/.docker/config.json:/root/.docker/config.json:ro
|
||||||
environment:
|
environment:
|
||||||
- GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL}
|
- GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL}
|
||||||
- GITEA_RUNNER_REGISTRATION_TOKEN=${TOKEN}
|
- GITEA_RUNNER_REGISTRATION_TOKEN=${TOKEN}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ security = HTTPBearer(auto_error=False)
|
|||||||
|
|
||||||
async def get_current_user(
|
async def get_current_user(
|
||||||
credentials: HTTPAuthorizationCredentials = Depends(security),
|
credentials: HTTPAuthorizationCredentials = Depends(security),
|
||||||
token_cookie: str = Cookie(default=None)
|
token: str = Cookie(default=None)
|
||||||
):
|
):
|
||||||
token = credentials.credentials if credentials else token_cookie
|
token = credentials.credentials if credentials else token
|
||||||
if not token:
|
if not token:
|
||||||
raise HTTPException(status_code=401, detail="Not authenticated")
|
raise HTTPException(status_code=401, detail="Not authenticated")
|
||||||
user = decodeJWT(token)
|
user = decodeJWT(token)
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ body, html {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
body{ background-color: #c68a5e;}
|
||||||
.bg {
|
.bg {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
showError(['Connection error: ' + err.message]);
|
showError(['Connection error :(']);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -46,12 +46,12 @@ function showError(messages) {
|
|||||||
errorElem.id = 'formError';
|
errorElem.id = 'formError';
|
||||||
errorElem.style.cssText = `
|
errorElem.style.cssText = `
|
||||||
color: red;
|
color: red;
|
||||||
margin-top: 20px;
|
font-size: medium;
|
||||||
margin-bottom: 20px;
|
line-height: 100%;
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 100;
|
|
||||||
line-height: 120%;
|
|
||||||
transition: 3s;
|
transition: 3s;
|
||||||
|
text-decoration: underline;
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
`;
|
`;
|
||||||
document.getElementById('loginForm').insertAdjacentElement('afterend', errorElem);
|
document.getElementById('loginForm').insertAdjacentElement('afterend', errorElem);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,19 +15,19 @@ document.addEventListener("DOMContentLoaded", () => {
|
|||||||
window.location.href = '/';
|
window.location.href = '/';
|
||||||
});
|
});
|
||||||
|
|
||||||
document.querySelector(".form-info").addEventListener("submit", async (e) => {
|
document.querySelector(".form-connect").addEventListener("submit", async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const guestData = {
|
const guestData = {
|
||||||
name: document.getElementById('ffname').value || "",
|
name: document.getElementById('ffname').value || "",
|
||||||
middlename: document.getElementById('fmname').value || "",
|
middlename: document.getElementById('fmname').value || "",
|
||||||
surname: document.getElementById('flname').value || "",
|
surname: document.getElementById('flname').value || "",
|
||||||
text_field: document.getElementById('text_field')?.value || "",
|
text_field: document.getElementById('text_field')?.value || "Пожеланий Нет",
|
||||||
activated: true,
|
activated: true,
|
||||||
types_of_food: document.querySelector('input[name="food"]:checked')?.value || "",
|
type_of_food: document.querySelector('input[name="food"]:checked')?.value || "Мясо (Дефолт)",
|
||||||
types_of_alco: Array.from(document.querySelectorAll('input[name="drink"]:checked'))
|
types_of_alco: Array.from(document.querySelectorAll('input[name="drink"]:checked'))
|
||||||
.map(el => el.value)
|
.map(el => el.value)
|
||||||
.join(', ')
|
.join(', ') || "Сок"
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -49,7 +49,48 @@ document.addEventListener("DOMContentLoaded", () => {
|
|||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
alert('Ошибка: ' + err.message);
|
window.location.href = '#answer';
|
||||||
|
showErrors(JSON.parse(err.message));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const fieldMap = {
|
||||||
|
'name': 'ffname',
|
||||||
|
'middlename': 'fmname',
|
||||||
|
'surname': 'flname'
|
||||||
|
};
|
||||||
|
|
||||||
|
function showErrors(errors) {
|
||||||
|
let errorElements = document.querySelectorAll(".formError")
|
||||||
|
if (errorElements.length === 0) {
|
||||||
|
document.querySelectorAll('.label_style').forEach(el => {
|
||||||
|
const errorElem = document.createElement('div');
|
||||||
|
errorElem.className = 'formError';
|
||||||
|
errorElem.style.cssText = `
|
||||||
|
color: red;
|
||||||
|
font-size: medium;
|
||||||
|
line-height: 100%;
|
||||||
|
transition: 3s;
|
||||||
|
text-decoration: underline;
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
`;
|
||||||
|
el.after(errorElem);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
errors.forEach(error => {
|
||||||
|
const fieldName = error.loc[1]; // 'name', 'middlename', 'surname'
|
||||||
|
const inputId = fieldMap[fieldName];
|
||||||
|
if (!inputId) return;
|
||||||
|
|
||||||
|
const input = document.getElementById(inputId);
|
||||||
|
if (!input) return;
|
||||||
|
const label = input.closest('.label_style');
|
||||||
|
if (label && label.nextElementSibling?.classList.contains('formError')) {
|
||||||
|
label.nextElementSibling.textContent = error.msg;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
server/frontend/main/images/free-icon-wedding-ring-4155044.ico
Normal file
BIN
server/frontend/main/images/free-icon-wedding-ring-4155044.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 264 KiB |
@@ -3,12 +3,14 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
||||||
|
<link rel="icon" type="icon" sizes="32x32" href="images/free-icon-wedding-ring-4155044.ico">
|
||||||
<title>Wedding invitation</title>
|
<title>Wedding invitation</title>
|
||||||
<link rel="stylesheet" href="reset.css">
|
<link rel="stylesheet" href="reset.css">
|
||||||
<link rel="stylesheet" href="style.css">
|
<link rel="stylesheet" href="style.css">
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.css" />
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.css" />
|
||||||
<link rel="preload" href="fonts/yourfont.woff2" as="font" type="font/woff2" crossorigin>
|
<link rel="preload" href="fonts/yourfont.woff2" as="font" type="font/woff2" crossorigin>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@@ -82,6 +84,10 @@
|
|||||||
Наша история
|
Наша история
|
||||||
</h2>
|
</h2>
|
||||||
<h3 class="heading_date">22 августа 2026</h3>
|
<h3 class="heading_date">22 августа 2026</h3>
|
||||||
|
<!-- КНОПКА -->
|
||||||
|
<button class="story_btn">
|
||||||
|
Открыть историю
|
||||||
|
</button>
|
||||||
<p class="heading_text">
|
<p class="heading_text">
|
||||||
Мы — та самая история, которая началась со странного сообщения и превратилась в нечто настоящее.
|
Мы — та самая история, которая началась со странного сообщения и превратилась в нечто настоящее.
|
||||||
В нас есть легкость и смех, который когда-то стал началом всего, любовь к простым вещам вроде
|
В нас есть легкость и смех, который когда-то стал началом всего, любовь к простым вещам вроде
|
||||||
@@ -352,7 +358,7 @@
|
|||||||
Фотографии
|
Фотографии
|
||||||
</h4>
|
</h4>
|
||||||
<!-- Slider main container -->
|
<!-- Slider main container -->
|
||||||
<div class="swiper">
|
<div class="swiper photos_slider">
|
||||||
<!-- Additional required wrapper -->
|
<!-- Additional required wrapper -->
|
||||||
<div class="swiper-wrapper">
|
<div class="swiper-wrapper">
|
||||||
<!-- Slides -->
|
<!-- Slides -->
|
||||||
@@ -406,6 +412,17 @@
|
|||||||
|
|
||||||
<!-- If we need scrollbar -->
|
<!-- If we need scrollbar -->
|
||||||
<div class="swiper-scrollbar"></div>
|
<div class="swiper-scrollbar"></div>
|
||||||
|
</div>
|
||||||
|
<!-- COLLAGE -->
|
||||||
|
<div class="photos_collage">
|
||||||
|
<img src="images/photos/1.webp" alt="">
|
||||||
|
<img src="images/photos/2.webp" alt="">
|
||||||
|
<img src="images/photos/3.webp" alt="">
|
||||||
|
<img src="images/photos/4.webp" alt="">
|
||||||
|
<img src="images/photos/5.webp" alt="">
|
||||||
|
<img src="images/photos/6.webp" alt="">
|
||||||
|
<img src="images/photos/8.webp" alt="">
|
||||||
|
<img src="images/photos/9.webp" alt="">
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section class="to-do-list" id="to-do-list">
|
<section class="to-do-list" id="to-do-list">
|
||||||
@@ -576,20 +593,19 @@
|
|||||||
|
|
||||||
<!-- Левая колонка -->
|
<!-- Левая колонка -->
|
||||||
<div class="form_name">
|
<div class="form_name">
|
||||||
<label class="label_style">Имя
|
|
||||||
<input type="text" name="firstName" id="ffname" required>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<label class="label_style">Отчество
|
|
||||||
<input type="text" name="middleName" id="fmname" required>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<label class="label_style">Фамилия
|
<label class="label_style">Фамилия
|
||||||
<input type="text" name="lastName" id="flname" required>
|
<input type="text" name="lastName" id="flname" required>
|
||||||
</label>
|
</label>
|
||||||
|
<label class="label_style">Имя
|
||||||
|
<input type="text" name="firstName" id="ffname" required>
|
||||||
|
</label>
|
||||||
|
<label class="label_style">Отчество
|
||||||
|
<input type="text" name="middleName" id="fmname" required>
|
||||||
|
</label>
|
||||||
|
|
||||||
<label class="label_1">Комментарий
|
<label class="label_1">Комментарий
|
||||||
<textarea cols="1.5" rows="1" type="text" name="lastName" id="fename"
|
<textarea cols="1.5" rows="1" type="text" name="lastName" id="text_field"
|
||||||
placeholder="Напишите здесь о ваших особых предпочтениях и аллергиях"></textarea>
|
placeholder="Напишите здесь о ваших особых предпочтениях и аллергиях"></textarea>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
@@ -605,7 +621,7 @@
|
|||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label class="option">
|
<label class="option">
|
||||||
<input type="radio" name="food" id="rfish" value="fish">
|
<input type="radio" name="food" id="rfish" value="fish" required>
|
||||||
Рыба
|
Рыба
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -89,3 +89,18 @@ links.forEach(link => {
|
|||||||
nav.classList.remove('active');
|
nav.classList.remove('active');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const btn = document.querySelector('.story_btn');
|
||||||
|
const text = document.querySelector('.heading_text');
|
||||||
|
|
||||||
|
btn.addEventListener('click', () => {
|
||||||
|
|
||||||
|
text.classList.toggle('active');
|
||||||
|
|
||||||
|
if (text.classList.contains('active')) {
|
||||||
|
btn.textContent = 'Скрыть историю';
|
||||||
|
} else {
|
||||||
|
btn.textContent = 'Открыть историю';
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
@@ -23,27 +23,32 @@
|
|||||||
|
|
||||||
|
|
||||||
/* --------------------------------MAIN-------------------------------- */
|
/* --------------------------------MAIN-------------------------------- */
|
||||||
|
html, body {
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
|
||||||
font-family: "MurreyC";
|
font-family: "MurreyC";
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
letter-spacing: 3px;
|
letter-spacing: 3px;
|
||||||
|
background-color: #c68a5e;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg {
|
.bg {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
top: -100px;
|
||||||
|
left: 0;
|
||||||
background: url("images/ChatGPT\ Image\ 5\ янв.\ 2026\ г.\,\ 15_49_39.webp") center center / cover no-repeat;
|
right: 0;
|
||||||
|
bottom: -100px;
|
||||||
|
background: url("images/ChatGPT Image 5 янв. 2026 г., 15_49_39.webp") center center / cover no-repeat ;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
|
transform: translateZ(0);
|
||||||
|
-webkit-transform: translateZ(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
position: relative;
|
position: relative;
|
||||||
min-height: 100vh;
|
min-height: 100dvh;
|
||||||
}
|
}
|
||||||
button {
|
button {
|
||||||
background-color: #3a1f09;
|
background-color: #3a1f09;
|
||||||
@@ -61,8 +66,6 @@ button:hover {
|
|||||||
img {
|
img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
.content {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------HEADER------------------------------ */
|
/* -------------------------------HEADER------------------------------ */
|
||||||
@@ -70,12 +73,12 @@ img {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #663c24;
|
background-color: #663c24;
|
||||||
padding: 20px 180px;
|
padding: 20px 180px;
|
||||||
margin-top: 40px;
|
padding-top: calc(20px + env(safe-area-inset-top));
|
||||||
|
|
||||||
margin-bottom: 40px;
|
margin-bottom: 40px;
|
||||||
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
|
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
|
||||||
}
|
}
|
||||||
.nav {
|
|
||||||
}
|
|
||||||
.menu {
|
.menu {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -95,12 +98,9 @@ img {
|
|||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
transition: all .3s;
|
transition: all .3s;
|
||||||
text-shadow: 1px 2px #322624;
|
text-shadow: 1px 2px #322624;
|
||||||
}
|
|
||||||
.item:hover {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
.link {
|
.link {
|
||||||
|
white-space: nowrap;
|
||||||
transition: all .3s;
|
transition: all .3s;
|
||||||
}
|
}
|
||||||
.link:hover {
|
.link:hover {
|
||||||
@@ -166,6 +166,8 @@ img {
|
|||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
margin-left: 40px;
|
margin-left: 40px;
|
||||||
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
|
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.burger {
|
.burger {
|
||||||
@@ -173,27 +175,22 @@ img {
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0; /* ВАЖНО */
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
|
|
||||||
background: rgba(102, 60, 36, 0.97);
|
background: rgba(102, 60, 36, 0.97);
|
||||||
backdrop-filter: blur(12px);
|
backdrop-filter: blur(12px);
|
||||||
|
display: none;
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
transform: translateY(-100%);
|
|
||||||
transition: 0.5s ease;
|
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav.active {
|
.nav.active {
|
||||||
transform: translateY(0);
|
display: flex;
|
||||||
}
|
}
|
||||||
.nav::before {
|
.nav::before {
|
||||||
content: "";
|
content: "";
|
||||||
@@ -238,9 +235,9 @@ img {
|
|||||||
.heading {
|
.heading {
|
||||||
background: url("images/25.webp") 50% 100% / cover;
|
background: url("images/25.webp") 50% 100% / cover;
|
||||||
margin: 0px 400px;
|
margin: 0px 400px;
|
||||||
/* border: 10px solid rgb(184, 136, 48); */
|
padding-bottom: 40px; /* можно оставить */
|
||||||
/* border: 15px double rgb(184, 136, 48); */
|
padding-top: 60px;
|
||||||
height: 640px;
|
/* ❌ height: 640px; УДАЛИТЬ */
|
||||||
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
|
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
|
||||||
}
|
}
|
||||||
.heading_content {
|
.heading_content {
|
||||||
@@ -293,8 +290,6 @@ img {
|
|||||||
.btn_link {
|
.btn_link {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
}
|
}
|
||||||
.asise {
|
|
||||||
}
|
|
||||||
.time{
|
.time{
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
font-size: 110px;
|
font-size: 110px;
|
||||||
@@ -302,6 +297,10 @@ img {
|
|||||||
text-shadow: #000 2px 2px 6px;
|
text-shadow: #000 2px 2px 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.story_btn {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* -----------------------------------PEOPLE-------------------------------------- */
|
/* -----------------------------------PEOPLE-------------------------------------- */
|
||||||
|
|
||||||
.people {
|
.people {
|
||||||
@@ -361,8 +360,7 @@ h4 {
|
|||||||
.newlywed_info {
|
.newlywed_info {
|
||||||
font-size: 26px;
|
font-size: 26px;
|
||||||
}
|
}
|
||||||
.guest_list {
|
|
||||||
}
|
|
||||||
.guest_inner {
|
.guest_inner {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
@@ -378,9 +376,6 @@ h4 {
|
|||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
color: rgb(252, 220, 180);
|
color: rgb(252, 220, 180);
|
||||||
}
|
|
||||||
.guest_item_list {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
.guest_name {
|
.guest_name {
|
||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
@@ -436,17 +431,13 @@ h4 {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 33px;
|
border-radius: 33px;
|
||||||
margin: 0 20px;
|
margin: 0 20px;
|
||||||
}
|
|
||||||
.time_img_box {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
.time_img {
|
.time_img {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.time_line {
|
|
||||||
}
|
|
||||||
.time_row_down {
|
.time_row_down {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@@ -471,8 +462,6 @@ h4 {
|
|||||||
margin-bottom: 60px;
|
margin-bottom: 60px;
|
||||||
padding-top: 40px;
|
padding-top: 40px;
|
||||||
}
|
}
|
||||||
.transfer_title {
|
|
||||||
}
|
|
||||||
.transfer_inner {
|
.transfer_inner {
|
||||||
margin-top: 60px;
|
margin-top: 60px;
|
||||||
}
|
}
|
||||||
@@ -495,6 +484,7 @@ h4 {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.map_adress {
|
.map_adress {
|
||||||
|
line-height: 1.6;
|
||||||
font-size: 50px;
|
font-size: 50px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
@@ -547,9 +537,6 @@ h4 {
|
|||||||
|
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
backdrop-filter: blur(5px);
|
backdrop-filter: blur(5px);
|
||||||
}
|
|
||||||
.map_div {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
.map {
|
.map {
|
||||||
width: 650px;
|
width: 650px;
|
||||||
@@ -565,6 +552,9 @@ h4 {
|
|||||||
.photos_title {
|
.photos_title {
|
||||||
margin-bottom: 100px;
|
margin-bottom: 100px;
|
||||||
}
|
}
|
||||||
|
.photos_collage {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
.swiper_img {
|
.swiper_img {
|
||||||
height: 500px;
|
height: 500px;
|
||||||
border: 5px dotted #000;
|
border: 5px dotted #000;
|
||||||
@@ -600,8 +590,7 @@ h4 {
|
|||||||
padding-bottom: 100px;
|
padding-bottom: 100px;
|
||||||
padding-top: 40px;
|
padding-top: 40px;
|
||||||
}
|
}
|
||||||
.do-list_title {
|
|
||||||
}
|
|
||||||
.to-do-list_wrapper {
|
.to-do-list_wrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-top: 40px;
|
padding-top: 40px;
|
||||||
@@ -826,8 +815,6 @@ textarea {
|
|||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
.footer_copyright {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------ADAPTIVE------------------------------------------------------ */
|
/* --------------------------------------------------------ADAPTIVE------------------------------------------------------ */
|
||||||
@@ -1304,7 +1291,7 @@ textarea {
|
|||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
background: none;
|
background: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
height: 450px;
|
height: 550px;
|
||||||
}
|
}
|
||||||
.heading_content {
|
.heading_content {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -1369,6 +1356,7 @@ textarea {
|
|||||||
@media (max-width: 720px) {
|
@media (max-width: 720px) {
|
||||||
.heading {
|
.heading {
|
||||||
margin: 40px 0;
|
margin: 40px 0;
|
||||||
|
height: 550px;
|
||||||
}
|
}
|
||||||
.newlywed {
|
.newlywed {
|
||||||
width: 85%;
|
width: 85%;
|
||||||
@@ -1422,9 +1410,6 @@ textarea {
|
|||||||
}
|
}
|
||||||
.items_up, .items_down {
|
.items_up, .items_down {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
|
||||||
.heading {
|
|
||||||
height: 450px;
|
|
||||||
}
|
}
|
||||||
.map > div {
|
.map > div {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
@@ -1470,7 +1455,7 @@ textarea {
|
|||||||
}
|
}
|
||||||
.swiper_img {
|
.swiper_img {
|
||||||
height: 250px;
|
height: 250px;
|
||||||
max-width: 70%;
|
max-width: 50%;
|
||||||
}
|
}
|
||||||
.swiper-scrollbar {
|
.swiper-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -1496,14 +1481,23 @@ textarea {
|
|||||||
padding: 0px 20px;
|
padding: 0px 20px;
|
||||||
}
|
}
|
||||||
.heading {
|
.heading {
|
||||||
height: 500px;
|
height: 600px;
|
||||||
}
|
}
|
||||||
.map_div {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.map_adress {
|
.map_adress {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
color: #502c01;
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transfer_inner {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.transfer_map {
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
.transfer {
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1517,8 +1511,8 @@ textarea {
|
|||||||
}
|
}
|
||||||
.map > div {
|
.map > div {
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
width: auto;
|
width: 300px;
|
||||||
height: 350px;
|
height: 200px;
|
||||||
overflow: none;
|
overflow: none;
|
||||||
}
|
}
|
||||||
.form_name input[type="text"] {
|
.form_name input[type="text"] {
|
||||||
@@ -1532,12 +1526,14 @@ textarea {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: start;
|
text-align: start;
|
||||||
}
|
}
|
||||||
.heading_text {
|
.heading {
|
||||||
display: none;
|
min-height: 225px;
|
||||||
}
|
height: auto;
|
||||||
.heading {
|
padding-bottom: 0px;
|
||||||
height: 200px;
|
}
|
||||||
}
|
.heading_cont {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
.img_newlywed {
|
.img_newlywed {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -1547,11 +1543,45 @@ textarea {
|
|||||||
.header {
|
.header {
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
.photos {
|
.photos_slider {
|
||||||
display: none;
|
display: none !important;
|
||||||
}
|
}
|
||||||
.item_none {
|
|
||||||
display: none;
|
.photos_collage {
|
||||||
|
display: grid !important;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photos_collage img {
|
||||||
|
width: 100%;
|
||||||
|
height: 180px;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: 18px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photos_collage img:nth-child(3) {
|
||||||
|
grid-column: span 2;
|
||||||
|
height: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photos_collage img:nth-child(6) {
|
||||||
|
grid-column: span 2;
|
||||||
|
height: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photos {
|
||||||
|
margin: 0 15px;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photos_title {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
.photos_collage {
|
||||||
|
padding-top: 40px;
|
||||||
}
|
}
|
||||||
.time_row_up, .time_row_down {
|
.time_row_up, .time_row_down {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -1579,13 +1609,56 @@ textarea {
|
|||||||
align-items: start;
|
align-items: start;
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
}
|
}
|
||||||
|
.story_btn {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 12px 28px;
|
||||||
|
font-size: 22px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading_text {
|
||||||
|
max-height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
|
||||||
|
transition:
|
||||||
|
max-height 0.6s ease,
|
||||||
|
opacity 0.4s ease,
|
||||||
|
padding 0.4s ease;
|
||||||
|
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading_text.active {
|
||||||
|
max-height: 1000px;
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
.time {
|
||||||
|
padding-top: 0px;
|
||||||
|
}
|
||||||
|
.story_btn {
|
||||||
|
background-color: #a8582a;
|
||||||
|
border: 1px solid #000;
|
||||||
|
}
|
||||||
|
.map_btn {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.map_link {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.map_preview {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 420px) {
|
@media (max-width: 420px) {
|
||||||
.map > div{
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.time {
|
.time {
|
||||||
font-size: 60px;
|
font-size: 60px;
|
||||||
@@ -1621,20 +1694,20 @@ textarea {
|
|||||||
white-space: wrap;
|
white-space: wrap;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
.heading_text.active {
|
||||||
|
min-height: 450px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 320px) {
|
@media (max-width: 320px) {
|
||||||
.header {
|
.header {
|
||||||
width: 23%;
|
width: 23%;
|
||||||
}
|
}
|
||||||
.heading {
|
.heading_text {
|
||||||
height: 240px;
|
padding: 0;
|
||||||
}
|
}
|
||||||
.time {
|
.time {
|
||||||
font-size: 35px;
|
font-size: 35px;
|
||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
}
|
}
|
||||||
.map > div {
|
|
||||||
height: 220px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user