sozday-priglasitelnyy-bilet/index.html

392 lines
11 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">
<title>Приглашение на 50-летие</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<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: linear-gradient(135deg, #fce4e6 0%, #f8d7da 50%, #f5e6e8 100%);
min-height: 100vh;
overflow-x: hidden;
}
.floating-elements {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
overflow: hidden;
z-index: 0;
}
.float-element {
position: absolute;
opacity: 0.6;
animation: float 20s infinite ease-in-out;
}
.float-element:nth-child(1) { top: 10%; left: 10%; animation-delay: 0s; font-size: 24px; }
.float-element:nth-child(2) { top: 20%; right: 15%; animation-delay: 3s; font-size: 32px; }
.float-element:nth-child(3) { bottom: 30%; left: 20%; animation-delay: 6s; font-size: 28px; }
.float-element:nth-child(4) { bottom: 15%; right: 10%; animation-delay: 9s; font-size: 26px; }
.float-element:nth-child(5) { top: 50%; left: 5%; animation-delay: 12s; font-size: 30px; }
.float-element:nth-child(6) { top: 35%; right: 25%; animation-delay: 15s; font-size: 24px; }
@keyframes float {
0%, 100% { transform: translateY(0) rotate(0deg); }
25% { transform: translateY(-20px) rotate(5deg); }
50% { transform: translateY(-10px) rotate(-5deg); }
75% { transform: translateY(-25px) rotate(3deg); }
}
.container {
position: relative;
z-index: 1;
max-width: 700px;
margin: 0 auto;
padding: 40px 20px;
}
.card {
background: rgba(255, 255, 255, 0.95);
border-radius: 20px;
padding: 60px 40px;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.08);
position: relative;
overflow: hidden;
}
.card::before {
content: '';
position: absolute;
top: -50%;
right: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(232, 219, 203, 0.3) 0%, transparent 70%);
animation: shimmer 8s infinite linear;
}
@keyframes shimmer {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.content {
position: relative;
z-index: 1;
text-align: center;
}
.ornament-top,
.ornament-bottom {
font-size: 32px;
color: #c9b59b;
margin-bottom: 20px;
}
.intro {
font-family: 'Cormorant Garamond', serif;
font-size: 20px;
color: #a83232;
font-style: italic;
margin-bottom: 30px;
letter-spacing: 2px;
}
.title {
font-family: 'Cormorant Garamond', serif;
font-size: clamp(42px, 8vw, 64px);
font-weight: 600;
color: #5a4a3a;
line-height: 1.1;
margin-bottom: 20px;
position: relative;
}
.title span {
display: block;
background: linear-gradient(135deg, #d4af37 0%, #c9b59b 50%, #b8956a 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.subtitle {
font-size: 18px;
color: #a89080;
font-weight: 300;
margin-bottom: 40px;
letter-spacing: 3px;
text-transform: uppercase;
}
.divider {
width: 120px;
height: 2px;
background: linear-gradient(90deg, transparent, #d4af37, transparent);
margin: 30px auto;
}
.details {
margin: 40px 0;
}
.detail-item {
margin: 25px 0;
padding: 20px;
background: linear-gradient(135deg, rgba(245, 240, 235, 0.5) 0%, rgba(237, 230, 222, 0.5) 100%);
border-radius: 12px;
border: 1px solid rgba(212, 175, 55, 0.2);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.detail-item:hover {
transform: translateY(-3px);
box-shadow: 0 10px 30px rgba(212, 175, 55, 0.15);
}
.detail-icon {
font-size: 32px;
margin-bottom: 10px;
}
.detail-label {
font-family: 'Cormorant Garamond', serif;
font-size: 16px;
color: #8b7355;
font-style: italic;
margin-bottom: 8px;
letter-spacing: 1px;
}
.detail-value {
font-size: 18px;
color: #5a4a3a;
font-weight: 500;
line-height: 1.5;
}
.dress-code {
background: linear-gradient(135deg, rgba(212, 175, 55, 0.08) 0%, rgba(201, 181, 155, 0.08) 100%);
border: 1px solid rgba(212, 175, 55, 0.3);
padding: 25px;
border-radius: 12px;
margin: 35px 0;
}
.dress-code-title {
font-family: 'Cormorant Garamond', serif;
font-size: 20px;
color: #8b7355;
font-style: italic;
margin-bottom: 12px;
letter-spacing: 2px;
}
.dress-code-text {
font-size: 15px;
color: #6b5a4a;
line-height: 1.6;
font-weight: 300;
}
.rsvp {
margin-top: 40px;
padding: 30px;
background: linear-gradient(135deg, rgba(212, 175, 55, 0.1) 0%, rgba(201, 181, 155, 0.1) 100%);
border-radius: 12px;
border: 1px solid rgba(212, 175, 55, 0.25);
}
.rsvp-title {
font-family: 'Cormorant Garamond', serif;
font-size: 24px;
color: #5a4a3a;
margin-bottom: 15px;
font-weight: 600;
}
.rsvp-text {
font-size: 15px;
color: #6b5a4a;
line-height: 1.6;
margin-bottom: 20px;
}
.rsvp-contact {
font-size: 18px;
color: #8b7355;
font-weight: 500;
font-family: 'Cormorant Garamond', serif;
}
.footer {
margin-top: 50px;
padding-top: 30px;
border-top: 1px solid rgba(212, 175, 55, 0.2);
}
.footer-text {
font-family: 'Cormorant Garamond', serif;
font-size: 18px;
color: #a89080;
font-style: italic;
line-height: 1.6;
}
.sparkle {
position: absolute;
width: 4px;
height: 4px;
background: #d4af37;
border-radius: 50%;
animation: sparkle 2s infinite ease-in-out;
opacity: 0;
}
@keyframes sparkle {
0%, 100% { opacity: 0; transform: scale(0); }
50% { opacity: 1; transform: scale(1); }
}
@media (max-width: 600px) {
.card {
padding: 40px 25px;
}
.title {
font-size: 36px;
}
.detail-value {
font-size: 16px;
}
}
</style>
</head>
<body>
<div class="floating-elements">
<div class="float-element">✨</div>
<div class="float-element">🌸</div>
<div class="float-element">💫</div>
<div class="float-element">🦋</div>
<div class="float-element">🌟</div>
<div class="float-element">💐</div>
</div>
<div class="container">
<div class="card">
<div class="content">
<div class="ornament-top">❖ ❖ ❖</div>
<p class="intro">Сердечно приглашаю вас</p>
<h1 class="title">
<span>на празднование</span>
50-летия
</h1>
<p class="subtitle">Юбилейный вечер</p>
<div class="divider"></div>
<div class="details">
<div class="detail-item">
<div class="detail-icon">📅</div>
<div class="detail-label">Дата</div>
<div class="detail-value" id="event-date">[Укажите дату]</div>
</div>
<div class="detail-item">
<div class="detail-icon">🕐</div>
<div class="detail-label">Время</div>
<div class="detail-value" id="event-time">[Укажите время]</div>
</div>
<div class="detail-item">
<div class="detail-icon">📍</div>
<div class="detail-label">Место проведения</div>
<div class="detail-value" id="event-location">[Укажите место]</div>
</div>
</div>
<div class="dress-code">
<div class="dress-code-title">👔 Дресс-код</div>
<div class="dress-code-text">
Cocktail attire. Будем признательны, если вы поддержите праздничную атмосферу вечера в элегантных нарядах.
</div>
</div>
<div class="rsvp">
<div class="rsvp-title">RSVP</div>
<p class="rsvp-text">
Пожалуйста, подтвердите ваше присутствие до указанной даты. Это поможет нам организовать вечер наилучшим образом.
</p>
<div class="rsvp-contact" id="rsvp-contact">[Контакт для подтверждения]</div>
</div>
<div class="footer">
<p class="footer-text">
С нетерпением жду встречи с вами<br>
в этот особенный день!
</p>
</div>
<div class="ornament-bottom">❖ ❖ ❖</div>
</div>
<div id="sparkles-container"></div>
</div>
</div>
<script>
const eventData = {
date: "22 августа 2027 года",
time: "12:00",
location: "Ресторан «Гранд Зодиак»",
rsvp: "Телефон: +7 (777) 111-22-22",
name: "Нургуль"
};
function init() {
document.getElementById('event-date').textContent = eventData.date;
document.getElementById('event-time').textContent = eventData.time;
document.getElementById('event-location').textContent = eventData.location;
document.getElementById('rsvp-contact').textContent = eventData.rsvp;
document.title = `Приглашение на 50-летие ${eventData.name}`;
createSparkles();
}
function createSparkles() {
const container = document.getElementById('sparkles-container');
const card = document.querySelector('.card');
for (let i = 0; i < 30; i++) {
const sparkle = document.createElement('div');
sparkle.className = 'sparkle';
sparkle.style.left = Math.random() * 100 + '%';
sparkle.style.top = Math.random() * 100 + '%';
sparkle.style.animationDelay = Math.random() * 2 + 's';
sparkle.style.animationDuration = (1.5 + Math.random() * 1.5) + 's';
container.appendChild(sparkle);
}
}
document.addEventListener('DOMContentLoaded', init);
</script>
</body>
</html>