<!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=Montserrat:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
@font-face {
font-family: 'KudryashevDisplay';
src: local('KudryashevDisplay-Sans'), local('KudryashevDisplay Sans');
font-display: swap;
}
</style>
<style>
:root {
--vanilla: #FAF6EE;
--vanilla-mid: #F4EDD8;
--vanilla-dark: #EDE3C8;
--pink: #D4547A;
--blush: #FAF0F3;
--black: #1A1A1A;
--ink: #2C2C2C;
--muted: #8A7E74;
--white: #FFFFFF;
}
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
background: var(--vanilla);
color: var(--black);
font-family: 'Montserrat', sans-serif;
font-weight: 400;
overflow-x: hidden;
}
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: var(--vanilla); }
::-webkit-scrollbar-thumb { background: var(--pink); border-radius: 3px; }
/* ══ NAV ══ */
nav {
position: fixed;
top: 0; left: 0;
width: 100%;
z-index: 200;
background: rgba(250,246,238,0.97);
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(212,84,122,0.18);
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 48px;
gap: 20px;
}
.nav-logo {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900;
font-size: 1.2rem;
color: var(--black);
text-decoration: none;
white-space: nowrap;
flex-shrink: 0;
}
.nav-logo em { color: var(--pink); font-style: normal; }
.nav-center {
display: flex;
gap: 30px;
list-style: none;
}
.nav-center a {
font-family: 'Montserrat', sans-serif;
font-weight: 500;
font-size: 0.78rem;
text-transform: uppercase;
letter-spacing: 0.13em;
color: var(--ink);
text-decoration: none;
position: relative;
transition: color 0.22s;
}
.nav-center a::after {
content: '';
position: absolute;
bottom: -4px; left: 0;
width: 0; height: 1.5px;
background: var(--pink);
transition: width 0.26s;
}
.nav-center a:hover { color: var(--pink); }
.nav-center a:hover::after { width: 100%; }
.nav-contact {
display: flex;
align-items: center;
gap: 12px;
flex-shrink: 0;
}
.nav-phone {
font-family: 'Montserrat', sans-serif;
font-weight: 600;
font-size: 0.85rem;
color: var(--black);
text-decoration: none;
white-space: nowrap;
transition: color 0.2s;
line-height: 1;
}
.nav-phone:hover { color: var(--pink); }
.nav-icon-btn {
display: flex;
align-items: center;
justify-content: center;
width: 34px; height: 34px;
border-radius: 50%;
border: 1.5px solid var(--black);
color: var(--black);
text-decoration: none;
transition: background 0.22s, color 0.22s, transform 0.18s;
flex-shrink: 0;
}
.nav-icon-btn.tg { color: var(--black); }
.nav-icon-btn.wa { color: var(--black); }
.nav-icon-btn:hover { transform: scale(1.1); background: var(--black); color: #fff; }
.nav-icon-btn svg { width: 16px; height: 16px; fill: currentColor; }
.hamburger {
display: none;
flex-direction: column;
gap: 5px;
cursor: pointer;
padding: 4px;
flex-shrink: 0;
}
.hamburger span {
display: block;
width: 24px; height: 2px;
background: var(--black);
border-radius: 2px;
transition: all 0.3s;
}
.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.mobile-menu {
display: none;
position: fixed;
top: 68px; left: 0;
width: 100%;
background: var(--vanilla);
border-bottom: 1px solid rgba(212,84,122,0.2);
padding: 24px 28px 30px;
z-index: 199;
flex-direction: column;
box-shadow: 0 12px 40px rgba(0,0,0,0.07);
}
.mobile-menu.open { display: flex; }
.mobile-menu a {
font-family: 'Montserrat', sans-serif;
font-weight: 500;
font-size: 0.97rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--black);
text-decoration: none;
padding: 13px 0;
border-bottom: 1px solid rgba(0,0,0,0.07);
transition: color 0.2s, padding-left 0.2s;
}
.mobile-menu a:hover { color: var(--pink); padding-left: 6px; }
.mobile-menu a:last-of-type { border-bottom: none; }
.mobile-contact {
display: flex;
align-items: center;
gap: 12px;
padding-top: 18px;
}
/* ══ BUTTONS ══ */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 15px 36px;
background: var(--pink);
color: var(--white);
font-family: 'Montserrat', sans-serif;
font-weight: 600;
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.16em;
text-decoration: none;
border: 2px solid var(--pink);
cursor: pointer;
position: relative;
overflow: hidden;
transition: color 0.28s, border-color 0.28s, transform 0.18s;
}
.btn::before {
content: '';
position: absolute;
inset: 0;
background: var(--black);
transform: translateX(-101%);
transition: transform 0.32s cubic-bezier(.77,0,.18,1);
z-index: 0;
}
.btn:hover::before { transform: translateX(0); }
.btn:hover { border-color: var(--black); transform: translateY(-2px); }
.btn span { position: relative; z-index: 1; }
.btn-outline {
background: transparent;
color: var(--pink);
border-color: var(--pink);
}
.btn-outline::before { background: var(--pink); }
.btn-outline:hover { color: var(--white); border-color: var(--pink); }
/* ══ SHARED ══ */
.section-tag {
display: block;
font-family: 'Montserrat', sans-serif;
font-weight: 300;
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.32em;
color: var(--pink);
margin-bottom: 12px;
}
.section-title {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900;
font-size: clamp(2rem, 4vw, 3.6rem);
line-height: 1.07;
letter-spacing: -0.02em;
color: var(--black);
}
.section-title em { font-style: italic; color: var(--pink); }
.strip {
height: 3px;
background: linear-gradient(90deg, var(--vanilla-dark), var(--pink), var(--vanilla-dark));
}
/* ══ BLOCK 1 — HERO ══ */
#hero {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 110px 40px 80px;
position: relative;
overflow: hidden;
background: var(--vanilla);
}
.hero-deco {
position: absolute;
border-radius: 50%;
pointer-events: none;
}
.hd1 {
width: 620px; height: 620px;
top: -100px; right: -160px;
border: 1px solid rgba(212,84,122,0.1);
animation: spin 42s linear infinite;
}
.hd2 {
width: 420px; height: 420px;
bottom: -70px; left: -100px;
border: 1px solid rgba(212,84,122,0.08);
animation: spin 65s linear infinite reverse;
}
.hd-blob {
width: 480px; height: 480px;
top: 50%; left: 50%;
transform: translate(-50%,-50%);
background: radial-gradient(circle, rgba(212,84,122,0.06) 0%, transparent 70%);
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.hero-inner {
position: relative;
z-index: 1;
max-width: 800px;
margin: 0 auto;
}
.hero-eyebrow {
font-family: 'Montserrat', sans-serif;
font-weight: 300;
font-size: 0.72rem;
text-transform: uppercase;
letter-spacing: 0.35em;
color: var(--muted);
margin-bottom: 26px;
opacity: 0;
animation: fadeUp 0.8s 0.15s forwards;
}
.hero-title {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900;
font-size: clamp(3.5rem, 9vw, 8rem);
line-height: 0.9;
letter-spacing: -0.025em;
color: var(--black);
margin-bottom: 28px;
opacity: 0;
animation: fadeUp 0.8s 0.35s forwards;
}
.hero-title .pink { color: var(--pink); display: block; font-style: italic; }
.hero-sub {
font-family: 'Montserrat', sans-serif;
font-weight: 300;
font-size: clamp(0.97rem, 2vw, 1.18rem);
color: var(--muted);
line-height: 1.8;
max-width: 500px;
margin: 0 auto 52px;
opacity: 0;
animation: fadeUp 0.8s 0.55s forwards;
}
.hero-btns {
display: flex;
gap: 16px;
flex-wrap: wrap;
justify-content: center;
opacity: 0;
animation: fadeUp 0.8s 0.75s forwards;
}
.hero-scroll {
position: absolute;
bottom: 34px; left: 50%;
transform: translateX(-50%);
display: flex; flex-direction: column; align-items: center; gap: 7px;
z-index: 1;
opacity: 0;
animation: fadeIn 1s 1.6s forwards;
}
.hero-scroll span {
font-size: 0.62rem;
letter-spacing: 0.25em;
text-transform: uppercase;
color: var(--muted);
}
.scroll-line {
width: 1px; height: 38px;
background: linear-gradient(to bottom, var(--pink), transparent);
animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse {
0%,100% { opacity: 0.35; }
50% { opacity: 1; }
}
/* ══ BLOCK 2 — FORMATS ══ */
#about {
background: var(--vanilla-mid);
padding: 110px 48px;
position: relative;
overflow: hidden;
}
#about::before {
content: 'АРТ';
position: absolute;
right: -40px; top: 50%;
transform: translateY(-50%);
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-size: 22vw;
font-weight: 900;
color: rgba(212,84,122,0.04);
pointer-events: none;
user-select: none;
line-height: 1;
}
.about-hdr {
max-width: 1200px;
margin: 0 auto 60px;
position: relative; z-index: 1;
}
.cards-grid {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(3,1fr);
gap: 3px;
position: relative; z-index: 1;
}
.card {
background: var(--vanilla);
padding: 50px 38px 42px;
border-top: 3px solid transparent;
position: relative;
overflow: hidden;
transition: border-color 0.3s, transform 0.28s, box-shadow 0.28s;
}
.card::after {
content: '';
position: absolute;
bottom: 0; left: 0;
width: 0; height: 2px;
background: var(--pink);
transition: width 0.4s;
}
.card:hover { border-top-color: var(--pink); transform: translateY(-6px); box-shadow: 0 20px 50px rgba(212,84,122,0.09); }
.card:hover::after { width: 100%; }
.card-num {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-size: 4.5rem; font-weight: 900;
color: rgba(212,84,122,0.07);
line-height: 1;
margin-bottom: 12px;
display: block;
}
.card-icon { font-size: 2rem; display: block; margin-bottom: 16px; }
.card-title {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 700; font-size: 1.3rem;
color: var(--black); margin-bottom: 12px; line-height: 1.25;
}
.card-text {
font-family: 'Montserrat', sans-serif;
font-weight: 300; font-size: 0.9rem;
color: var(--muted); line-height: 1.82;
}
.card-tag {
display: inline-block;
margin-top: 20px;
padding: 5px 13px;
border: 1px solid rgba(212,84,122,0.3);
font-size: 0.68rem;
text-transform: uppercase;
letter-spacing: 0.12em;
color: var(--pink);
font-family: 'Montserrat', sans-serif;
font-weight: 500;
}
/* ══ BLOCK 3 — SCHEDULE ══ */
#schedule {
background: var(--vanilla);
padding: 110px 48px;
}
.sched-top {
max-width: 1200px;
margin: 0 auto 56px;
display: flex;
align-items: flex-end;
justify-content: space-between;
flex-wrap: wrap;
gap: 24px;
}
.sched-list {
max-width: 1200px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 3px;
}
.sched-item {
display: grid;
grid-template-columns: 84px 1px 1fr auto;
align-items: center;
gap: 28px;
background: var(--vanilla-mid);
padding: 26px 34px;
border-left: 3px solid transparent;
transition: border-color 0.25s, background 0.25s, transform 0.22s;
}
.sched-item:hover {
border-left-color: var(--pink);
background: var(--blush);
transform: translateX(5px);
}
.sched-date { text-align: center; }
.sched-day {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900; font-size: 2rem;
color: var(--pink); line-height: 1;
}
.sched-month {
font-family: 'Montserrat', sans-serif;
font-size: 0.62rem;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--muted);
}
.sched-div {
width: 1px; height: 42px;
background: rgba(0,0,0,0.1);
}
.sched-name {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 700; font-size: 1rem;
color: var(--black); margin-bottom: 4px;
}
.sched-meta {
font-family: 'Montserrat', sans-serif;
font-size: 0.78rem; color: var(--muted); font-weight: 300;
}
.sched-time {
font-family: 'Montserrat', sans-serif;
font-weight: 600; font-size: 0.86rem;
color: var(--black); text-align: right; white-space: nowrap;
}
.sched-note {
max-width: 1200px;
margin: 26px auto 0;
font-family: 'Montserrat', sans-serif;
font-size: 0.8rem; color: var(--muted);
font-style: italic; text-align: center;
}
/* ══ BLOCK 4 — PRIVATE ══ */
#private {
background: var(--vanilla-mid);
padding: 110px 48px;
position: relative;
overflow: hidden;
}
#private::after {
content: '';
position: absolute;
top: -150px; right: -150px;
width: 520px; height: 520px;
border-radius: 50%;
background: radial-gradient(circle, rgba(212,84,122,0.07) 0%, transparent 65%);
pointer-events: none;
}
.priv-hdr {
max-width: 1200px;
margin: 0 auto 60px;
position: relative; z-index: 1;
}
.priv-grid {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(4,1fr);
gap: 3px;
position: relative; z-index: 1;
}
.priv-card {
background: var(--vanilla);
padding: 38px 30px;
border-bottom: 3px solid transparent;
transition: border-color 0.3s, transform 0.25s, box-shadow 0.25s;
}
.priv-card:hover {
border-bottom-color: var(--pink);
transform: translateY(-5px);
box-shadow: 0 16px 38px rgba(212,84,122,0.09);
}
.priv-icon { font-size: 2.2rem; display: block; margin-bottom: 16px; }
.priv-title {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 700; font-size: 1.15rem;
color: var(--black); margin-bottom: 11px; line-height: 1.2;
}
.priv-text {
font-family: 'Montserrat', sans-serif;
font-weight: 300; font-size: 0.85rem;
color: var(--muted); line-height: 1.78;
}
.priv-cta {
max-width: 1200px;
margin: 44px auto 0;
background: var(--vanilla);
border: 1px solid rgba(212,84,122,0.2);
padding: 44px 48px;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 24px;
position: relative; z-index: 1;
}
.cta-title {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900;
font-size: clamp(1.3rem, 2.2vw, 1.9rem);
color: var(--black); margin-bottom: 6px;
}
.cta-sub {
font-family: 'Montserrat', sans-serif;
font-weight: 300; font-size: 0.9rem; color: var(--muted);
}
.cta-btns { display: flex; gap: 12px; flex-wrap: wrap; }
/* ══ FOOTER ══ */
footer {
background: var(--vanilla-dark);
padding: 48px;
border-top: 1px solid rgba(212,84,122,0.15);
}
.foot-inner {
max-width: 1200px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 20px;
}
.foot-logo {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900; font-size: 1.2rem;
color: var(--black); text-decoration: none;
}
.foot-logo em { color: var(--pink); font-style: normal; }
.foot-links { display: flex; gap: 26px; flex-wrap: wrap; }
.foot-links a {
font-family: 'Montserrat', sans-serif;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--muted);
text-decoration: none;
transition: color 0.2s;
}
.foot-links a:hover { color: var(--pink); }
.foot-copy {
font-family: 'Montserrat', sans-serif;
font-size: 0.73rem; color: var(--muted); font-weight: 300;
}
/* ══ ANIMATIONS ══ */
@keyframes fadeUp {
from { opacity:0; transform:translateY(28px); }
to { opacity:1; transform:translateY(0); }
}
@keyframes fadeIn {
from { opacity:0; }
to { opacity:1; }
}
.reveal {
opacity: 0;
transform: translateY(34px);
transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.visible { opacity:1; transform:none; }
.d1 { transition-delay: 0.1s; }
.d2 { transition-delay: 0.2s; }
.d3 { transition-delay: 0.3s; }
/* ══ RESPONSIVE ══ */
@media (max-width: 1060px) {
.priv-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 860px) {
nav { padding: 0 22px; }
.nav-center { display: none; }
.hamburger { display: flex; }
.cards-grid { grid-template-columns: 1fr; }
#about, #schedule, #private { padding: 80px 24px; }
.about-hdr, .priv-hdr { margin-bottom: 40px; }
.sched-top { flex-direction: column; align-items: flex-start; margin-bottom: 36px; }
.priv-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
#hero { padding: 88px 22px 70px; }
.hero-btns { flex-direction: column; align-items: center; }
.hero-btns .btn { width: 100%; max-width: 290px; }
.sched-item { grid-template-columns: 60px 1px 1fr; gap: 16px; padding: 20px 16px; }
.sched-time { display: none; }
.priv-grid { grid-template-columns: 1fr; }
.priv-cta { padding: 28px 22px; flex-direction: column; align-items: flex-start; }
.cta-btns { flex-direction: column; width: 100%; }
.cta-btns .btn { width: 100%; justify-content: center; }
footer { padding: 36px 22px; }
.foot-inner { flex-direction: column; align-items: center; text-align: center; }
.foot-links { justify-content: center; }
}
/* ══ MODAL ══ */
.modal-overlay {
position: fixed;
inset: 0;
background: rgba(26,26,26,0.55);
backdrop-filter: blur(4px);
z-index: 900;
display: flex;
align-items: center;
justify-content: center;
padding: 24px;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
}
.modal-overlay.open {
opacity: 1;
pointer-events: all;
}
.modal {
background: var(--vanilla);
width: 100%;
max-width: 480px;
padding: 48px 44px 44px;
position: relative;
transform: translateY(24px) scale(0.97);
transition: transform 0.35s cubic-bezier(.34,1.3,.64,1);
border-top: 4px solid var(--pink);
}
.modal-overlay.open .modal {
transform: translateY(0) scale(1);
}
.modal-close {
position: absolute;
top: 16px; right: 20px;
background: none;
border: none;
cursor: pointer;
font-size: 1.5rem;
color: var(--muted);
line-height: 1;
transition: color 0.2s, transform 0.2s;
padding: 4px;
}
.modal-close:hover { color: var(--black); transform: rotate(90deg); }
.modal-tag {
display: block;
font-family: 'Montserrat', sans-serif;
font-weight: 300;
font-size: 0.68rem;
text-transform: uppercase;
letter-spacing: 0.3em;
color: var(--pink);
margin-bottom: 10px;
}
.modal-title {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900;
font-size: 1.9rem;
color: var(--black);
margin-bottom: 6px;
line-height: 1.1;
}
.modal-sub {
font-family: 'Montserrat', sans-serif;
font-weight: 300;
font-size: 0.85rem;
color: var(--muted);
margin-bottom: 32px;
line-height: 1.6;
}
.form-group {
margin-bottom: 18px;
}
.form-group label {
display: block;
font-family: 'Montserrat', sans-serif;
font-weight: 500;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--ink);
margin-bottom: 7px;
}
.form-group input {
width: 100%;
padding: 13px 16px;
background: var(--vanilla-mid);
border: 1.5px solid transparent;
font-family: 'Montserrat', sans-serif;
font-size: 0.93rem;
color: var(--black);
outline: none;
transition: border-color 0.2s, background 0.2s;
border-radius: 0;
-webkit-appearance: none;
}
.form-group input:focus {
border-color: var(--pink);
background: var(--white);
}
.form-group input::placeholder {
color: var(--muted);
font-weight: 300;
}
.form-submit {
width: 100%;
margin-top: 8px;
padding: 16px;
background: var(--pink);
color: var(--white);
border: 2px solid var(--pink);
font-family: 'Montserrat', sans-serif;
font-weight: 600;
font-size: 0.82rem;
text-transform: uppercase;
letter-spacing: 0.16em;
cursor: pointer;
position: relative;
overflow: hidden;
transition: border-color 0.28s, transform 0.18s;
}
.form-submit::before {
content: '';
position: absolute;
inset: 0;
background: var(--black);
transform: translateX(-101%);
transition: transform 0.32s cubic-bezier(.77,0,.18,1);
z-index: 0;
}
.form-submit:hover::before { transform: translateX(0); }
.form-submit:hover { border-color: var(--black); transform: translateY(-1px); }
.form-submit span { position: relative; z-index: 1; }
.form-success {
display: none;
text-align: center;
padding: 20px 0 10px;
}
.form-success-icon { font-size: 3rem; margin-bottom: 16px; display: block; }
.form-success-title {
font-family: 'KudryashevDisplay', 'Montserrat', serif;
font-weight: 900;
font-size: 1.6rem;
color: var(--black);
margin-bottom: 10px;
}
.form-success-text {
font-family: 'Montserrat', sans-serif;
font-weight: 300;
font-size: 0.9rem;
color: var(--muted);
line-height: 1.6;
}
@media (max-width: 520px) {
.modal { padding: 40px 24px 36px; }
.modal-title { font-size: 1.6rem; }
}
</style>
<body>
<!-- NAV -->
<nav>
<a href="#hero" class="nav-logo">Палитра <em>Чувств</em></a>
<ul class="nav-center">
<li><a href="#schedule">Расписание</a></li>
<li><a href="#private">Мероприятия</a></li>
<li><a href="#" class="open-signup">Записаться</a></li>
</ul>
<div class="nav-contact">
<a href="tel:89779097925" class="nav-phone">8 977 909 79 25</a>
<a href="https://t.me/palitrachuvstv" target="_blank" rel="noopener" class="nav-icon-btn tg" aria-label="Telegram">
<svg viewBox="0 0 24 24"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.96 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>
</a>
<a href="https://wa.me/79779097925" target="_blank" rel="noopener" class="nav-icon-btn wa" aria-label="WhatsApp">
<svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z"/></svg>
</a>
</div>
<div class="hamburger" id="hamburger" aria-label="Меню">
<span></span><span></span><span></span>
</div>
</nav>
<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
<a href="#schedule" class="mob-link">Расписание</a>
<a href="#private" class="mob-link">Мероприятия</a>
<a href="#" class="mob-link open-signup">Записаться</a>
<div class="mobile-contact">
<a href="tel:89779097925" class="nav-phone">8 977 909 79 25</a>
<a href="https://t.me/palitrachuvstv" target="_blank" rel="noopener" class="nav-icon-btn tg" aria-label="Telegram">
<svg viewBox="0 0 24 24"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.96 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>
</a>
<a href="https://wa.me/79779097925" target="_blank" rel="noopener" class="nav-icon-btn wa" aria-label="WhatsApp">
<svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z"/></svg>
</a>
</div>
</div>
<!-- BLOCK 1 — HERO -->
<section id="hero">
<div class="hero-deco hd1"></div>
<div class="hero-deco hd2"></div>
<div class="hero-deco hd-blob"></div>
<div class="hero-inner">
<p class="hero-eyebrow">Арт-студия · Творчество · Вдохновение</p>
<h1 class="hero-title">
Палитра<br>
<span class="pink">Чувств</span>
</h1>
<p class="hero-sub">
Место, где рождается искусство. Арт-вечеринки, мастер-классы и незабываемые творческие события для всех.
</p>
<div class="hero-btns">
<a href="#schedule" class="btn"><span>Смотреть расписание</span></a>
<a href="#" class="btn btn-outline open-signup"><span>Записаться на мероприятие</span></a>
</div>
</div>
<div class="hero-scroll">
<span>Листать</span>
<div class="scroll-line"></div>
</div>
</section>
<div class="strip"></div>
<!-- BLOCK 3 — SCHEDULE -->
<section id="schedule">
<div class="sched-top reveal">
<div>
<span class="section-tag">Ближайшие события</span>
<h2 class="section-title">Расписание</h2>
</div>
<a href="#" class="btn open-signup"><span>Записаться онлайн</span></a>
</div>
<div class="sched-list">
</div>
<p class="sched-note reveal">Актуальное расписание уточняйте по телефону или в Telegram. Места ограничены — запишитесь заранее.</p>
</section>
<div class="strip"></div>
<!-- BLOCK 4 — PRIVATE -->
<section id="private">
<div class="priv-hdr reveal">
<span class="section-tag">Частные события</span>
<h2 class="section-title">Отметьте <em>особый день</em> с нами</h2>
</div>
<div class="priv-grid">
<div class="priv-card reveal d1">
<span class="priv-icon">🎂</span>
<div class="priv-title">День рождения</div>
<p class="priv-text">Незабываемый праздник с творческим уклоном — именинник и гости уходят с картиной и тёплыми воспоминаниями.</p>
</div>
<div class="priv-card reveal d2">
<span class="priv-icon">🥂</span>
<div class="priv-title">Девичник</div>
<p class="priv-text">Стильный вечер перед свадьбой — живопись, смех и бокал игристого. Оригинальная альтернатива стандартным форматам.</p>
</div>
<div class="priv-card reveal d3">
<span class="priv-icon">🏢</span>
<div class="priv-title">Корпоратив</div>
<p class="priv-text">Тимбилдинг через творчество. Объединит коллег и подарит каждому уникальный опыт и собственное полотно.</p>
</div>
<div class="priv-card reveal d3">
<span class="priv-icon">🎁</span>
<div class="priv-title">Сертификат</div>
<p class="priv-text">Подарите опыт вместо вещи — сертификат на арт-вечеринку или мастер-класс на любую сумму. Лучший подарок.</p>
</div>
</div>
<div class="priv-cta reveal">
<div>
<div class="cta-title">Хотите провести мероприятие?</div>
<div class="cta-sub">Оставьте заявку — и мы свяжемся с вами для обсуждения деталей.</div>
</div>
<div class="cta-btns">
<a href="#" class="btn open-signup"><span>Оставить заявку</span></a>
<a href="tel:89779097925" class="btn btn-outline"><span>Позвонить</span></a>
</div>
</div>
</section>
<!-- FOOTER -->
<footer>
<div class="foot-inner">
<a href="#hero" class="foot-logo">Палитра <em>Чувств</em></a>
<div class="foot-links">
<a href="#schedule">Расписание</a>
<a href="#private">Мероприятия</a>
<a href="#" class="open-signup">Записаться</a>
</div>
<p class="foot-copy">© 2025 Палитра Чувств</p>
</div>
</footer>
<!-- SIGNUP MODAL -->
<div class="modal-overlay" id="signupModal" role="dialog" aria-modal="true" aria-labelledby="modalTitle">
<div class="modal">
<button class="modal-close" id="modalClose" aria-label="Закрыть">✕</button>
<div id="formWrap">
<span class="modal-tag">Запись на занятие</span>
<h2 class="modal-title" id="modalTitle">Оставьте заявку</h2>
<p class="modal-sub">Мы свяжемся с вами, чтобы подобрать удобное время и ответить на вопросы.</p>
<div class="form-group">
<label for="fname">Ваше имя</label>
<input type="text" id="fname" placeholder="Как вас зовут?" autocomplete="given-name">
</div>
<div class="form-group">
<label for="fphone">Телефон</label>
<input type="tel" id="fphone" placeholder="+7 (___) ___-__-__" autocomplete="tel">
</div>
<div class="form-group">
<label for="ftg">Ник в Telegram</label>
<input type="text" id="ftg" placeholder="@username">
</div>
<button class="form-submit" id="formSubmit"><span>Записаться</span></button>
</div>
<div class="form-success" id="formSuccess">
<span class="form-success-icon">🎨</span>
<div class="form-success-title">Заявка отправлена!</div>
<p class="form-success-text">Спасибо! Мы свяжемся с вами в ближайшее время.</p>
</div>
</div>
</div>
<script>
// Hamburger
const ham = document.getElementById('hamburger');
const mob = document.getElementById('mobileMenu');
ham.addEventListener('click', () => {
ham.classList.toggle('open');
mob.classList.toggle('open');
});
document.querySelectorAll('.mob-link').forEach(l =>
l.addEventListener('click', () => {
ham.classList.remove('open');
mob.classList.remove('open');
})
);
// Scroll reveal
const io = new IntersectionObserver(entries => {
entries.forEach(e => {
if (e.isIntersecting) { e.target.classList.add('visible'); io.unobserve(e.target); }
});
}, { threshold: 0.1 });
document.querySelectorAll('.reveal').forEach(el => io.observe(el));
// Modal
const modal = document.getElementById('signupModal');
const closeBtn = document.getElementById('modalClose');
const formWrap = document.getElementById('formWrap');
const success = document.getElementById('formSuccess');
const submitBtn = document.getElementById('formSubmit');
function openModal() {
modal.classList.add('open');
document.body.style.overflow = 'hidden';
// reset
formWrap.style.display = '';
success.style.display = 'none';
document.getElementById('fname').value = '';
document.getElementById('fphone').value = '';
document.getElementById('ftg').value = '';
}
function closeModal() {
modal.classList.remove('open');
document.body.style.overflow = '';
}
document.querySelectorAll('.open-signup').forEach(el => {
el.addEventListener('click', e => { e.preventDefault(); openModal(); });
});
closeBtn.addEventListener('click', closeModal);
modal.addEventListener('click', e => { if (e.target === modal) closeModal(); });
document.addEventListener('keydown', e => { if (e.key === 'Escape') closeModal(); });
submitBtn.addEventListener('click', () => {
const name = document.getElementById('fname').value.trim();
const phone = document.getElementById('fphone').value.trim();
const tg = document.getElementById('ftg').value.trim();
if (!name || !phone) {
if (!name) document.getElementById('fname').style.borderColor = 'var(--pink)';
if (!phone) document.getElementById('fphone').style.borderColor = 'var(--pink)';
return;
}
document.getElementById('fname').style.borderColor = '';
document.getElementById('fphone').style.borderColor = '';
// Show success
formWrap.style.display = 'none';
success.style.display = 'block';
setTimeout(closeModal, 3000);
});
document.getElementById('fname').addEventListener('input', function(){ this.style.borderColor=''; });
document.getElementById('fphone').addEventListener('input', function(){ this.style.borderColor=''; });
</script>
</body>
</html>