* { box-sizing: border-box; }
:root {
  --pink: #f3c6d3;
  --pink-dark: #d991a9;
  --pink-soft: #fff5f7;
  --cream: #fffaf9;
  --text: #292226;
  --muted: #776d71;
  --line: #eadcdf;
  --white: #fff;
  --shadow: 0 25px 70px rgba(88, 47, 61, .12);
}
html { scroll-behavior: smooth; }
.reveal { opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in-view { opacity:1; transform:translateY(0); }
.benefits article.reveal:nth-child(2), .price-item.reveal:nth-child(2) { transition-delay:.1s; }
.benefits article.reveal:nth-child(3), .price-item.reveal:nth-child(3) { transition-delay:.2s; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity:1; transform:none; transition:none; }
  .carousel .gallery-card, .carousel-btn, .lightbox img { animation:none !important; }
  .carousel-track { scroll-behavior:auto; }
}
@keyframes fadeInUp { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:translateY(0); } }
.hero-content { animation:fadeInUp .7s ease both; }
.hero-photo { animation:fadeInUp .7s ease .15s both; }
body {
  margin: 0;
  color: var(--text);
  background: var(--cream);
  font-family: "Manrope", sans-serif;
  line-height: 1.6;
}
a { color: inherit; text-decoration: none; }
button { font: inherit; }
.header {
  position: sticky;
  top: 0;
  z-index: 50;
  height: 78px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 5vw;
  background: rgba(255,250,249,.88);
  border-bottom: 1px solid rgba(234,220,223,.7);
  backdrop-filter: blur(18px);
  transition: box-shadow .25s ease;
}
.header.scrolled { box-shadow: 0 8px 24px rgba(88,47,61,.08); }
.logo { display:flex; align-items:center; gap:10px; font-weight:700; letter-spacing:.16em; }
.logo-mark {
  width: 34px; height: 34px; display:grid; place-items:center;
  border-radius: 50%; background: var(--pink); font-family:"Playfair Display",serif;
  font-size: 19px; letter-spacing:0;
}
.logo-dot { color: var(--pink-dark); }
.nav { display:flex; gap:32px; font-size:13px; color:#665c60; }
.nav a { transition:color .2s ease; }
.nav a:hover { color:var(--pink-dark); }
.nav a.active { color:var(--pink-dark); font-weight:700; }
.header-button {
  padding: 11px 20px; border:1px solid #d8bdc5; border-radius:99px;
  font-size:13px; font-weight:600;
}
.header-actions { display:flex; align-items:center; gap:14px; }
.nav-toggle {
  display: none; flex-direction:column; justify-content:center; gap:5px;
  width:38px; height:38px; padding:0; border:0; background:none; cursor:pointer;
}
.nav-toggle span { width:22px; height:2px; background:var(--text); border-radius:2px; transition:.25s; }
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity:0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }
.hero {
  min-height: calc(100vh - 78px);
  display:grid; grid-template-columns: 1fr 1fr; gap:7vw; align-items:center;
  padding: 70px 8vw 90px; overflow:hidden;
}
.eyebrow,.section-label { color:var(--pink-dark); font-size:11px; font-weight:700; letter-spacing:.2em; }
.hero h1, h2 {
  font-family:"Playfair Display",serif; font-weight:500; line-height:1.05;
}
.hero h1 { font-size:clamp(48px,6vw,82px); margin:20px 0 26px; letter-spacing:-.03em; }
em { color:var(--pink-dark); font-style:normal; }
.hero-content > p { max-width:560px; color:var(--muted); font-size:17px; }
.hero-actions { display:flex; gap:12px; margin:34px 0 24px; flex-wrap:wrap; }
.button { display:inline-flex; justify-content:center; align-items:center; min-height:50px; padding:0 24px; border-radius:99px; font-size:13px; font-weight:700; transition:.25s; }
.button:hover { transform:translateY(-2px); box-shadow:0 10px 25px rgba(75,42,54,.12); }
.button-dark { background:#30282b; color:white; }
.button-light { border:1px solid var(--line); background:white; }
.hero-note { color:#85777c; font-size:12px; }
.hero-note span { color:var(--pink-dark); margin-right:7px; }
.hero-photo { position:relative; max-width:560px; justify-self:center; }
.hero-photo-frame { width:min(100%,500px); aspect-ratio: .82; overflow:hidden; border-radius:260px 260px 24px 24px; box-shadow:var(--shadow); transform:rotate(2deg); }
.hero-photo img { width:100%; height:100%; object-fit:cover; }
.floating-card {
  position:absolute; left:-35px; bottom:40px; display:flex; align-items:center; gap:12px;
  padding:15px 18px; background:rgba(255,255,255,.94); border:1px solid #eee1e4;
  border-radius:18px; box-shadow:var(--shadow); max-width:245px;
}
.floating-icon { width:38px;height:38px;display:grid;place-items:center;background:var(--pink-soft);border-radius:50%;color:var(--pink-dark);font-size:20px; }
.floating-card strong,.floating-card small { display:block; }
.floating-card strong { font-size:12px; }
.floating-card small { color:var(--muted); font-size:10px; margin-top:2px; }
.intro,.works,.prices,.contacts { padding:110px 8vw; }
.intro { background:white; }
.intro-grid { display:grid; grid-template-columns:1fr 1fr; gap:8vw; margin-top:22px; }
h2 { font-size:clamp(40px,5vw,66px); margin:12px 0 25px; letter-spacing:-.025em; }
.intro-text { color:var(--muted); font-size:15px; max-width:570px; }
.benefits { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:70px; }
.benefits article { border-top:1px solid var(--line); padding-top:18px; }
.benefits span,.price-number { color:var(--pink-dark); font-size:11px; font-weight:700; letter-spacing:.14em; }
.benefits h3 { font-family:"Playfair Display",serif; font-size:25px; margin:22px 0 8px; }
.benefits p { color:var(--muted); font-size:13px; margin:0; }
.section-heading { display:flex; align-items:end; justify-content:space-between; gap:30px; margin-bottom:35px; }
.section-heading h2 { margin-bottom:0; }
.section-heading p { color:var(--muted); max-width:300px; font-size:13px; }
.carousel { position:relative; }
.carousel.reveal { opacity:1; transform:none; }
.carousel-track {
  display:flex; gap:18px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
  scrollbar-width:none; -webkit-overflow-scrolling:touch; outline:none;
  padding:14px 0 24px; margin:-14px 0 -24px;
}
.carousel-track::-webkit-scrollbar { display:none; }
.carousel-track { cursor:grab; overscroll-behavior-x:contain; transition:transform .45s cubic-bezier(.2,.8,.2,1); }
.carousel-track.is-dragging, .carousel-track.is-animating { scroll-snap-type:none; scroll-behavior:auto; }
.carousel-track.is-dragging { cursor:grabbing; transition:none; user-select:none; }
.carousel-track.is-dragging .gallery-card { cursor:grabbing; }
.gallery-card img { -webkit-user-drag:none; user-select:none; }
.gallery-card {
  position:relative; flex:0 0 calc((100% - 36px) / 3); scroll-snap-align:start; padding:0; border:0; background:none;
  height:480px; overflow:hidden; border-radius:22px; cursor:pointer;
  transition:transform .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s ease;
}
.gallery-card img { width:100%; height:100%; object-fit:cover; transition:transform .9s cubic-bezier(.2,.8,.2,1), filter .5s ease; }
.gallery-card::after {
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(to top, rgba(48,28,36,.45), rgba(48,28,36,0) 45%);
  opacity:0; transition:opacity .45s ease;
}
.gallery-card::before {
  content:"+"; position:absolute; top:18px; right:18px; z-index:2; width:40px; height:40px;
  display:grid; place-items:center; border-radius:50%; background:rgba(255,255,255,.92);
  color:var(--pink-dark); font-size:24px; line-height:1;
  opacity:0; transform:scale(.6) rotate(-90deg); transition:opacity .35s ease, transform .45s cubic-bezier(.3,1.5,.5,1);
}
.gallery-card:hover, .gallery-card:focus-visible { transform:translateY(-8px); box-shadow:0 22px 40px rgba(88,47,61,.22); }
.gallery-card:hover img, .gallery-card:focus-visible img { transform:scale(1.07); filter:saturate(1.08); }
.gallery-card:hover::after, .gallery-card:focus-visible::after { opacity:1; }
.gallery-card:hover::before, .gallery-card:focus-visible::before { opacity:1; transform:scale(1) rotate(0); }
.gallery-card:active { transform:translateY(-4px) scale(.985); }
.gallery-caption {
  position:absolute; left:18px; bottom:18px; z-index:2; padding:8px 13px; border-radius:99px;
  background:rgba(255,255,255,.9); font-size:11px; font-weight:700;
  transition:transform .45s cubic-bezier(.2,.8,.2,1), background .3s ease, color .3s ease;
}
.gallery-card:hover .gallery-caption, .gallery-card:focus-visible .gallery-caption { transform:translateY(-6px); background:var(--pink-dark); color:white; }
@keyframes cardIn {
  from { opacity:0; transform:translateY(46px) scale(.94); }
  to { opacity:1; transform:none; }
}
.carousel:not(.in-view) .gallery-card { opacity:0; }
.carousel.in-view .gallery-card { animation:cardIn .85s cubic-bezier(.2,.8,.2,1) backwards; animation-delay:calc(var(--i, 0) * 110ms); }
.carousel-btn {
  position:absolute; top:240px; transform:translateY(-50%); z-index:3;
  width:48px; height:48px; border:0; border-radius:50%; background:rgba(255,255,255,.95);
  box-shadow:var(--shadow); color:var(--text); font-size:30px; line-height:1; cursor:pointer;
  display:grid; place-items:center; padding-bottom:4px;
  transition:opacity .3s, transform .3s cubic-bezier(.3,1.5,.5,1), color .2s, background .2s;
}
.carousel-btn:hover { color:white; background:var(--pink-dark); transform:translateY(-50%) scale(1.1); }
.carousel-btn:active { transform:translateY(-50%) scale(.92); }
.carousel-btn:disabled { opacity:0; pointer-events:none; transform:translateY(-50%) scale(.6); }
.carousel-prev { left:-20px; }
.carousel-next { right:-20px; }
.carousel.in-view .carousel-btn:not(:disabled) { animation:btnIn .6s cubic-bezier(.3,1.5,.5,1) .5s backwards; }
@keyframes btnIn { from { opacity:0; transform:translateY(-50%) scale(.5); } }
.carousel-dots { display:flex; justify-content:center; gap:8px; margin-top:22px; }
.carousel-dots span { width:7px; height:7px; border-radius:99px; background:var(--line); cursor:pointer; transition:width .4s cubic-bezier(.2,.8,.2,1), background .3s; }
.carousel-dots span:hover { background:var(--pink); }
.carousel-dots span.active { width:26px; background:var(--pink-dark); }
.prices { background:var(--pink-soft); }
.price-intro { text-align:center; max-width:640px; margin:0 auto 60px; }
.price-intro .section-label { display:block; margin-bottom:8px; }
.price-intro h2 { margin-bottom:14px; }
.price-intro p { color:var(--muted); font-size:15px; }
.price-list { display:flex; flex-direction:column; gap:26px; max-width:1100px; margin:0 auto; }
.price-item {
  display:grid; grid-template-columns:220px 1fr auto; align-items:center; gap:32px;
  background:var(--white); border-radius:24px; overflow:hidden;
  box-shadow:var(--shadow); position:relative;
}
.price-item.featured { background:linear-gradient(135deg,rgba(255,255,255,.9),var(--pink-soft)); }
.price-photo { height:100%; min-height:190px; align-self:stretch; }
.price-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.price-body { padding:10px 0; }
.price-item .price-number {
  display:block; font-family:"Playfair Display",serif; font-weight:600; font-size:34px;
  color:var(--pink-dark); letter-spacing:0; margin-bottom:6px;
}
.price-item h3 { margin:0 0 12px; font-size:19px; line-height:1.45; font-weight:700; }
.price-item h3 em { display:block; color:var(--pink-dark); font-style:normal; margin-top:2px; }
.price-item p { margin:0; color:var(--muted); font-size:13.5px; max-width:360px; line-height:1.6; }
.price-item > strong {
  white-space:nowrap; font-family:"Playfair Display",serif; font-weight:600; font-size:34px;
  color:var(--pink-dark); padding-right:34px;
}
.price-note {
  display:flex; align-items:center; justify-content:center; gap:10px;
  max-width:560px; margin:50px auto 0; padding:18px 26px; text-align:center;
  background:var(--white); border-radius:99px; box-shadow:var(--shadow);
  color:var(--muted); font-size:12.5px; line-height:1.6;
}
.price-note span { color:var(--pink-dark); font-size:15px; }
.diploma { padding:110px 8vw; background:#30282b; color:white; }
.diploma-grid { display:grid; grid-template-columns:1fr 1fr; gap:8vw; align-items:center; }
.diploma-text span { color:var(--pink); font-size:11px; letter-spacing:.2em; font-weight:700; }
.diploma-text h2 { font-size:clamp(36px,4.5vw,52px); margin:16px 0 20px; color:white; }
.diploma-text p { color:#cfc3c7; font-size:15px; max-width:460px; }
.diploma-photo { border-radius:24px; overflow:hidden; aspect-ratio:.82; box-shadow:0 25px 70px rgba(0,0,0,.35); }
.diploma-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.contacts { display:grid; grid-template-columns:1.2fr .8fr; gap:8vw; align-items:center; }
.contacts-main > p { max-width:500px; color:var(--muted); }
.contact-list { margin:35px 0; border-top:1px solid var(--line); max-width:600px; }
.contact-row { display:flex; justify-content:space-between; gap:20px; padding:18px 0; border-bottom:1px solid var(--line); font-size:14px; }
.contact-row span { color:#94868b; }
.qr-card { text-align:center; padding:38px; border-radius:28px; background:var(--pink-soft); }
.qr-placeholder { width:180px;height:180px;margin:0 auto 25px;background:white;display:grid;place-items:center;border-radius:18px; border:1px solid var(--line); }
.qr-inner { width:110px;height:110px;display:grid;place-items:center;border:7px dotted #322a2d;border-radius:8px;font-weight:800;letter-spacing:.15em; }
.qr-card h3 { font-family:"Playfair Display",serif; font-size:25px; margin:0 0 7px; }
.qr-card p { color:var(--muted); font-size:12px; margin:0; }
.footer { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:28px 8vw; border-top:1px solid var(--line); color:#8b7d82; font-size:11px; }
.footer-logo { color:var(--text); }
.social-links { display:flex; align-items:center; gap:14px; }
.social-links img { display:block; width:22px; height:22px; border-radius:6px; opacity:.85; transition:opacity .2s, transform .2s; }
.social-links a:hover img { opacity:1; transform:translateY(-2px); }
.lightbox {
  position:fixed; inset:0; z-index:100; display:grid; place-items:center;
  background:rgba(20,14,17,.9); padding:30px;
  opacity:0; pointer-events:none; transition:opacity .25s ease;
}
.lightbox.open { opacity:1; pointer-events:auto; }
.lightbox img {
  max-width:min(92vw,900px); max-height:84vh; object-fit:contain; border-radius:16px;
  transform:scale(.9) translateY(20px); opacity:0;
  transition:transform .45s cubic-bezier(.2,.8,.2,1), opacity .35s ease;
  box-shadow:0 30px 80px rgba(0,0,0,.45);
}
.lightbox.open img { transform:none; opacity:1; }
.lightbox img.swap-next { animation:swapNext .45s cubic-bezier(.2,.8,.2,1); }
.lightbox img.swap-prev { animation:swapPrev .45s cubic-bezier(.2,.8,.2,1); }
@keyframes swapNext { from { opacity:0; transform:translateX(60px) scale(.96); } }
@keyframes swapPrev { from { opacity:0; transform:translateX(-60px) scale(.96); } }
.lightbox-caption {
  position:absolute; left:50%; bottom:22px; transform:translateX(-50%);
  color:rgba(255,255,255,.85); font-size:12px; letter-spacing:.12em; white-space:nowrap;
}
.lightbox-caption b { color:var(--pink); font-weight:700; }
.lightbox-close { position:absolute; top:20px; right:25px; border:0;background:none;color:white;font-size:42px;cursor:pointer; transition:transform .35s cubic-bezier(.3,1.5,.5,1), color .2s; }
.lightbox-close:hover { transform:rotate(90deg); color:var(--pink); }
.lightbox-nav { position:absolute; top:50%; transform:translateY(-50%); width:52px; height:52px; border:0; border-radius:50%; background:rgba(255,255,255,.12); color:white; font-size:34px; line-height:1; padding-bottom:4px; cursor:pointer; transition:background .2s, transform .3s cubic-bezier(.3,1.5,.5,1); }
.lightbox-nav:hover { background:var(--pink-dark); transform:translateY(-50%) scale(1.1); }
.lightbox-nav:active { transform:translateY(-50%) scale(.92); }
.lightbox-prev { left:20px; }
.lightbox-next { right:20px; }
@media (max-width: 850px) {
  .nav-toggle { display:flex; }
  .nav {
    position:fixed; top:78px; left:0; right:0; z-index:49;
    flex-direction:column; gap:0; background:var(--cream);
    border-bottom:1px solid var(--line); box-shadow:var(--shadow);
    padding:8px 5vw 18px; opacity:0; pointer-events:none; transform:translateY(-8px);
    transition:.2s;
  }
  .nav.open { opacity:1; pointer-events:auto; transform:translateY(0); }
  .nav a { padding:14px 0; border-bottom:1px solid var(--line); }
  .header { padding:0 5vw; }
  .hero,.intro-grid,.contacts,.diploma-grid { grid-template-columns:1fr; }
  .diploma-grid { gap:36px; }
  .diploma-photo { order:-1; max-width:420px; margin:0 auto; }
  .price-item { grid-template-columns:180px 1fr auto; gap:22px; }
  .hero { padding-top:45px; }
  .hero-photo { order:-1; width:min(100%,500px); }
  .hero-photo-frame { margin:auto; }
  .floating-card { left:5px; }
  .benefits { grid-template-columns:1fr; gap:28px; }
  .gallery-card { flex-basis:calc((100% - 18px) / 2); height:420px; }
  .carousel-btn { top:210px; }
  .carousel-prev { left:-10px; }
  .carousel-next { right:-10px; }
  .section-heading { align-items:start; flex-direction:column; }
  .contacts { gap:50px; }
}
@media (max-width: 520px) {
  .header-button { display:none; }
  .hero,.intro,.works,.prices,.contacts,.diploma { padding-left:5vw; padding-right:5vw; }
  .hero h1 { font-size:48px; }
  .hero-photo-frame { border-radius:170px 170px 20px 20px; }
  .gallery-card { flex-basis:82%; height:440px; }
  .carousel-btn { display:none; }
  .lightbox-nav, .lightbox-nav:hover, .lightbox-nav:active { top:auto; bottom:14px; transform:none; }
  .lightbox-caption { bottom:30px; }
  .price-item { grid-template-columns:1fr; }
  .price-photo { min-height:180px; }
  .price-body { padding:0 18px; }
  .price-item > strong { padding:0 18px 18px; display:block; }
  .footer { flex-direction:column; align-items:flex-start; }
}
