sozday-priglasitelnoe-na-moe/index.html

515 lines
12 KiB
HTML
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.

<!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>