515 lines
12 KiB
HTML
515 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Приглашение на День Рождения Толганай</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=Montserrat:wght@300;400;500&display=swap" rel="stylesheet">
|
||
<style>
|
||
* {
|
||
margin: 0;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body {
|
||
font-family: 'Montserrat', sans-serif;
|
||
background: #0a0a0a;
|
||
min-height: 100vh;
|
||
padding: 40px 20px;
|
||
position: relative;
|
||
}
|
||
|
||
.bg-pattern {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background-image:
|
||
radial-gradient(ellipse at 20% 30%, rgba(184, 134, 11, 0.08) 0%, transparent 50%),
|
||
radial-gradient(ellipse at 80% 70%, rgba(212, 175, 55, 0.06) 0%, transparent 50%);
|
||
pointer-events: none;
|
||
z-index: 0;
|
||
}
|
||
|
||
.container {
|
||
max-width: 700px;
|
||
margin: 0 auto;
|
||
position: relative;
|
||
z-index: 1;
|
||
}
|
||
|
||
.invitation-card {
|
||
background: linear-gradient(145deg, #1a1a1a 0%, #0f0f0f 100%);
|
||
border: 1px solid rgba(184, 134, 11, 0.2);
|
||
border-radius: 4px;
|
||
padding: 60px 50px;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.invitation-card::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 20px;
|
||
left: 20px;
|
||
right: 20px;
|
||
bottom: 20px;
|
||
border: 1px solid rgba(184, 134, 11, 0.15);
|
||
pointer-events: none;
|
||
}
|
||
|
||
.ornament {
|
||
text-align: center;
|
||
font-size: 24px;
|
||
color: #b8860b;
|
||
letter-spacing: 8px;
|
||
margin-bottom: 30px;
|
||
opacity: 0.8;
|
||
}
|
||
|
||
.invite-text {
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: 14px;
|
||
letter-spacing: 3px;
|
||
text-transform: uppercase;
|
||
color: #9a9a9a;
|
||
text-align: center;
|
||
margin-bottom: 20px;
|
||
font-weight: 400;
|
||
}
|
||
|
||
h1 {
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: clamp(42px, 7vw, 64px);
|
||
color: #d4af37;
|
||
text-align: center;
|
||
font-weight: 400;
|
||
letter-spacing: 2px;
|
||
margin-bottom: 15px;
|
||
font-style: italic;
|
||
}
|
||
|
||
.celebration {
|
||
text-align: center;
|
||
font-size: 13px;
|
||
letter-spacing: 4px;
|
||
text-transform: uppercase;
|
||
color: #8a8a8a;
|
||
margin-bottom: 40px;
|
||
font-weight: 300;
|
||
}
|
||
|
||
.age-display {
|
||
text-align: center;
|
||
margin: 40px 0;
|
||
position: relative;
|
||
}
|
||
|
||
.age-display::before,
|
||
.age-display::after {
|
||
content: '';
|
||
position: absolute;
|
||
top: 50%;
|
||
width: 80px;
|
||
height: 1px;
|
||
background: linear-gradient(90deg, transparent, rgba(184, 134, 11, 0.4), transparent);
|
||
}
|
||
|
||
.age-display::before { left: 20%; }
|
||
.age-display::after { right: 20%; }
|
||
|
||
.age-number {
|
||
display: inline-block;
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: clamp(56px, 10vw, 84px);
|
||
color: #b8860b;
|
||
font-weight: 400;
|
||
line-height: 1;
|
||
}
|
||
|
||
.divider {
|
||
height: 1px;
|
||
background: linear-gradient(90deg, transparent, rgba(184, 134, 11, 0.3), transparent);
|
||
margin: 50px 0;
|
||
}
|
||
|
||
.details-section {
|
||
text-align: center;
|
||
margin: 45px 0;
|
||
}
|
||
|
||
.detail-row {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
gap: 20px;
|
||
margin: 28px 0;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.detail-icon {
|
||
font-size: 20px;
|
||
color: #b8860b;
|
||
opacity: 0.7;
|
||
}
|
||
|
||
.detail-text {
|
||
font-size: 15px;
|
||
color: #c9c9c9;
|
||
font-weight: 300;
|
||
letter-spacing: 1px;
|
||
}
|
||
|
||
.detail-text strong {
|
||
color: #e8e8e8;
|
||
font-weight: 400;
|
||
}
|
||
|
||
.restaurant {
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: clamp(28px, 5vw, 36px);
|
||
color: #d4af37;
|
||
font-weight: 400;
|
||
letter-spacing: 3px;
|
||
margin: 15px 0 5px;
|
||
}
|
||
|
||
.restaurant-location {
|
||
font-size: 13px;
|
||
color: #8a8a8a;
|
||
letter-spacing: 2px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.dress-code-section {
|
||
background: rgba(184, 134, 11, 0.05);
|
||
border-left: 2px solid rgba(184, 134, 11, 0.3);
|
||
padding: 25px 30px;
|
||
margin: 50px 0;
|
||
text-align: center;
|
||
}
|
||
|
||
.dress-code-title {
|
||
font-size: 12px;
|
||
letter-spacing: 3px;
|
||
text-transform: uppercase;
|
||
color: #8a8a8a;
|
||
margin-bottom: 12px;
|
||
font-weight: 400;
|
||
}
|
||
|
||
.dress-code-value {
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: clamp(24px, 4vw, 32px);
|
||
color: #d4af37;
|
||
font-weight: 400;
|
||
letter-spacing: 2px;
|
||
}
|
||
|
||
.requirements {
|
||
margin: 40px 0;
|
||
padding: 0 20px;
|
||
}
|
||
|
||
.requirements-title {
|
||
font-size: 11px;
|
||
letter-spacing: 3px;
|
||
text-transform: uppercase;
|
||
color: #6a6a6a;
|
||
text-align: center;
|
||
margin-bottom: 20px;
|
||
font-weight: 400;
|
||
}
|
||
|
||
.requirements-list {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
gap: 15px;
|
||
list-style: none;
|
||
}
|
||
|
||
.requirements-list li {
|
||
font-size: 13px;
|
||
color: #9a9a9a;
|
||
font-weight: 300;
|
||
padding: 8px 16px;
|
||
border: 1px solid rgba(184, 134, 11, 0.15);
|
||
border-radius: 2px;
|
||
letter-spacing: 0.5px;
|
||
}
|
||
|
||
.rsvp-section {
|
||
margin-top: 55px;
|
||
padding-top: 50px;
|
||
border-top: 1px solid rgba(184, 134, 11, 0.15);
|
||
}
|
||
|
||
.rsvp-title {
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: clamp(22px, 4vw, 28px);
|
||
color: #d4af37;
|
||
text-align: center;
|
||
margin-bottom: 35px;
|
||
font-weight: 400;
|
||
font-style: italic;
|
||
}
|
||
|
||
.form-group {
|
||
margin-bottom: 25px;
|
||
}
|
||
|
||
label {
|
||
display: block;
|
||
font-size: 11px;
|
||
letter-spacing: 2px;
|
||
text-transform: uppercase;
|
||
color: #6a6a6a;
|
||
margin-bottom: 12px;
|
||
font-weight: 400;
|
||
}
|
||
|
||
input[type="text"],
|
||
input[type="tel"] {
|
||
width: 100%;
|
||
padding: 16px 0;
|
||
background: transparent;
|
||
border: none;
|
||
border-bottom: 1px solid rgba(184, 134, 11, 0.2);
|
||
color: #e8e8e8;
|
||
font-size: 15px;
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 300;
|
||
transition: border-color 0.3s;
|
||
}
|
||
|
||
input:focus {
|
||
outline: none;
|
||
border-bottom-color: #b8860b;
|
||
}
|
||
|
||
input::placeholder {
|
||
color: #5a5a5a;
|
||
font-weight: 300;
|
||
}
|
||
|
||
.radio-group {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 15px;
|
||
}
|
||
|
||
.radio-option {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 14px;
|
||
padding: 14px 0;
|
||
cursor: pointer;
|
||
transition: opacity 0.3s;
|
||
}
|
||
|
||
.radio-option:hover {
|
||
opacity: 0.8;
|
||
}
|
||
|
||
input[type="radio"] {
|
||
width: 18px;
|
||
height: 18px;
|
||
accent-color: #b8860b;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.radio-label {
|
||
font-size: 14px;
|
||
color: #c9c9c9;
|
||
font-weight: 300;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.submit-btn {
|
||
width: 100%;
|
||
padding: 18px;
|
||
background: transparent;
|
||
border: 1px solid rgba(184, 134, 11, 0.4);
|
||
color: #d4af37;
|
||
font-size: 12px;
|
||
letter-spacing: 3px;
|
||
text-transform: uppercase;
|
||
cursor: pointer;
|
||
transition: all 0.4s;
|
||
font-family: 'Montserrat', sans-serif;
|
||
font-weight: 400;
|
||
margin-top: 15px;
|
||
}
|
||
|
||
.submit-btn:hover {
|
||
background: rgba(184, 134, 11, 0.08);
|
||
border-color: #b8860b;
|
||
}
|
||
|
||
.success-message {
|
||
display: none;
|
||
text-align: center;
|
||
padding: 30px;
|
||
margin-top: 20px;
|
||
}
|
||
|
||
.success-message p {
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: 20px;
|
||
color: #d4af37;
|
||
font-weight: 400;
|
||
font-style: italic;
|
||
}
|
||
|
||
.thank-you {
|
||
margin-top: 50px;
|
||
text-align: center;
|
||
font-family: 'Cormorant Garamond', serif;
|
||
font-size: 16px;
|
||
color: #6a6a6a;
|
||
font-style: italic;
|
||
letter-spacing: 1px;
|
||
}
|
||
|
||
@media (max-width: 600px) {
|
||
.invitation-card {
|
||
padding: 50px 30px;
|
||
}
|
||
|
||
.invitation-card::before {
|
||
top: 15px;
|
||
left: 15px;
|
||
right: 15px;
|
||
bottom: 15px;
|
||
}
|
||
|
||
.detail-row {
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="bg-pattern"></div>
|
||
|
||
<div class="container">
|
||
<div class="invitation-card">
|
||
<div class="ornament">✦ ✦ ✦</div>
|
||
|
||
<p class="invite-text">Приглашение</p>
|
||
|
||
<h1>Толганай</h1>
|
||
|
||
<p class="celebration">празднует День Рождения</p>
|
||
|
||
<div class="age-display">
|
||
<span class="age-number">24</span>
|
||
</div>
|
||
|
||
<div class="divider"></div>
|
||
|
||
<div class="details-section">
|
||
<div class="detail-row">
|
||
<span class="detail-icon">◈</span>
|
||
<span class="detail-text"><strong>14 Октября</strong></span>
|
||
</div>
|
||
|
||
<div class="detail-row">
|
||
<span class="detail-icon">◈</span>
|
||
<span class="detail-text"><strong>20:00</strong></span>
|
||
</div>
|
||
|
||
<div class="restaurant">Baoli</div>
|
||
<div class="restaurant-location">Астана, ул. Туркестан 16</div>
|
||
</div>
|
||
|
||
<div class="dress-code-section">
|
||
<div class="dress-code-title">Дресс-код</div>
|
||
<div class="dress-code-value">White</div>
|
||
</div>
|
||
|
||
<div class="requirements">
|
||
<div class="requirements-title">С собой иметь</div>
|
||
<ul class="requirements-list">
|
||
<li>Хорошее настроение</li>
|
||
<li>Искреннюю улыбку</li>
|
||
<li>Желание веселиться</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="divider"></div>
|
||
|
||
<div class="rsvp-section">
|
||
<h2 class="rsvp-title">Подтвердите присутствие</h2>
|
||
|
||
<form id="rsvpForm">
|
||
<div class="form-group">
|
||
<label for="name">Ваше имя</label>
|
||
<input type="text" id="name" name="name" placeholder="Представьтесь" required>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label>Планируете ли Вы быть?</label>
|
||
<div class="radio-group">
|
||
<label class="radio-option">
|
||
<input type="radio" name="will_come" value="yes" required>
|
||
<span class="radio-label">С удовольствием приду</span>
|
||
</label>
|
||
<label class="radio-option">
|
||
<input type="radio" name="will_come" value="no">
|
||
<span class="radio-label">К сожалению, не смогу</span>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="with_whom">С кем Вы будете?</label>
|
||
<input type="text" id="with_whom" name="with_whom" placeholder="Один / С другом / С подругой">
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="phone">Контактный номер</label>
|
||
<input type="tel" id="phone" name="phone" placeholder="+7 (___) ___-__-__">
|
||
</div>
|
||
|
||
<button type="submit" class="submit-btn">Отправить ответ</button>
|
||
</form>
|
||
|
||
<div class="success-message" id="successMessage">
|
||
<p>Благодарю за ответ. До встречи!</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="thank-you">
|
||
Буду рада разделить этот вечер с Вами
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
document.getElementById('rsvpForm').addEventListener('submit', function(e) {
|
||
e.preventDefault();
|
||
|
||
const formData = {
|
||
name: document.getElementById('name').value,
|
||
will_come: document.querySelector('input[name="will_come"]:checked')?.value,
|
||
with_whom: document.getElementById('with_whom').value,
|
||
phone: document.getElementById('phone').value,
|
||
timestamp: new Date().toISOString()
|
||
};
|
||
|
||
let responses = JSON.parse(localStorage.getItem('rsvpResponses') || '[]');
|
||
responses.push(formData);
|
||
localStorage.setItem('rsvpResponses', JSON.stringify(responses));
|
||
|
||
this.style.display = 'none';
|
||
document.getElementById('successMessage').style.display = 'block';
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|