/* Казахские орнаменты, цветы и анимации */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes float-y{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes strip{to{background-position:144px center}}
@keyframes fall{0%{transform:translateY(-6vh);opacity:0}8%,92%{opacity:var(--o)}100%{transform:translateY(112vh);opacity:0}}
@keyframes sway{from{transform:translateX(-30px) rotate(-40deg)}to{transform:translateX(30px) rotate(50deg)}}
@keyframes sway-t{from{transform:rotate(calc(var(--r) - 3deg))}to{transform:rotate(calc(var(--r) + 3deg))}}
@keyframes sheen{0%,60%{left:-60%}100%{left:130%}}
@keyframes glow{0%,100%{box-shadow:0 8px 24px #9d6b4425}50%{box-shadow:0 8px 34px #c98f5a77}}
@keyframes tick{0%{transform:scale(1.18);color:#b98a61}100%{transform:scale(1)}}
@keyframes page-in{from{opacity:0}to{opacity:1}}
@keyframes mandala-in{from{opacity:0;transform:scale(.6)}}
@keyframes mandala-out{to{opacity:0;transform:scale(3)}}
body{animation:page-in .8s both}
.scroll-bar{position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,#e3c29c,#a87952);z-index:1002}
/* орнаментальные ленты (қошқар мүйіз) */
.header:after,.subpage-hero:after,.footer:before{content:"";position:absolute;left:0;right:0;height:26px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='26' viewBox='0 0 72 26' fill='none' stroke='%23b98a61' stroke-width='1.2' stroke-linecap='round'%3E%3Cpath d='M33 13C28 13 26 7 21 7C15 7 13 14 17 17C20 19 23 16 21 14'/%3E%3Cpath d='M39 13C44 13 46 7 51 7C57 7 59 14 55 17C52 19 49 16 51 14'/%3E%3Cpath d='M36 4l5 9-5 9-5-9z'/%3E%3Ccircle cx='36' cy='13' r='1.4' fill='%23b98a61'/%3E%3Cpath d='M2 13h9M61 13h9' opacity='.5'/%3E%3C/svg%3E") repeat-x center;opacity:.75;animation:strip 14s linear infinite}
.header:after{bottom:-13px}
.subpage-hero{position:relative;isolation:isolate;overflow:hidden}.subpage-hero:after{bottom:6px}
.footer{position:relative}.footer:before{top:10px}.footer-mark{margin-top:14px}
.wordmark-symbol{display:inline-block;animation:spin 14s linear infinite}
.kz-divider{display:flex;align-items:center;gap:10px;width:min(700px,88%);margin:60px auto 0}
.kz-divider i{flex:1;height:26px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='26' viewBox='0 0 72 26' fill='none' stroke='%23b98a61' stroke-width='1.2' stroke-linecap='round'%3E%3Cpath d='M33 13C28 13 26 7 21 7C15 7 13 14 17 17C20 19 23 16 21 14'/%3E%3Cpath d='M39 13C44 13 46 7 51 7C57 7 59 14 55 17C52 19 49 16 51 14'/%3E%3Cpath d='M36 4l5 9-5 9-5-9z'/%3E%3Ccircle cx='36' cy='13' r='1.4' fill='%23b98a61'/%3E%3Cpath d='M2 13h9M61 13h9' opacity='.5'/%3E%3C/svg%3E") repeat-x center}
.kz-divider svg{width:46px;flex:none;animation:spin 30s linear infinite}
/* мандала */
.hero-mandala{position:absolute;left:50%;top:50%;width:min(900px,125vw);aspect-ratio:1;translate:-50% -50%;opacity:.16;z-index:-1;pointer-events:none}
.subpage-hero .hero-mandala{width:min(640px,115vw);opacity:.13}
.hero-mandala svg,.intro-mandala svg{width:100%;height:100%;animation:spin 170s linear infinite}
.intro-mandala{position:absolute;width:min(115vw,950px);aspect-ratio:1;opacity:.2;animation:mandala-in 1.8s .2s both}
.intro-screen.fly .intro-mandala{animation:mandala-out 1s forwards}
/* тюльпаны */
.bouquet{position:absolute;bottom:34px;width:clamp(120px,15vw,210px);display:flex;align-items:flex-end;pointer-events:none;z-index:-1}
.bouquet.l{left:2%}.bouquet.r{right:2%;transform:scaleX(-1)}
.bouquet svg{flex:1;min-width:0;transform-origin:50% 100%;animation:sway-t 5s ease-in-out infinite alternate}
.bouquet svg:nth-child(1){--r:-12deg;width:36%;margin-right:-8%}.bouquet svg:nth-child(2){--r:0deg;width:42%;animation-delay:-2s}.bouquet svg:nth-child(3){--r:14deg;width:34%;margin-left:-8%;animation-delay:-3.5s}
.subpage-hero .bouquet{bottom:30px}
/* лепестки */
.fall{position:fixed;top:0;z-index:1001;pointer-events:none;will-change:transform;animation:fall var(--t) linear var(--d) infinite;opacity:0}
.fall svg{display:block;width:var(--s);height:auto;animation:sway var(--sw) ease-in-out infinite alternate}
.burst{position:fixed;z-index:1002;pointer-events:none;width:15px}.burst svg{width:100%;display:block}
/* уголки на карточках */
.feature-card:before,.feature-card:after,.quote-card:before,.quote-card:after,.rsvp-form-card:before,.rsvp-form-card:after,.day-date-card:before,.day-date-card:after,.venue-card:before,.venue-card:after{content:"";position:absolute;width:44px;height:44px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44' fill='none' stroke='%23b98a61' stroke-width='1.2' stroke-linecap='round'%3E%3Cpath d='M2 42V14C2 7 7 2 14 2h28' opacity='.6'/%3E%3Cpath d='M8 8c6 0 9 4 7 8s-8 3-7-1c.8-2 4-2 4 0'/%3E%3Ccircle cx='20' cy='20' r='1.5' fill='%23b98a61' stroke='none'/%3E%3C/svg%3E") no-repeat;pointer-events:none;opacity:.85}
.feature-card:before,.quote-card:before,.rsvp-form-card:before,.day-date-card:before,.venue-card:before{top:6px;left:6px}
.feature-card:after,.quote-card:after,.rsvp-form-card:after,.day-date-card:after,.venue-card:after{bottom:6px;right:6px;transform:rotate(180deg)}
.quote-card,.rsvp-form-card,.day-date-card,.venue-card{position:relative}
.feature-card:hover{border-color:#c59a74}.feature-card:hover:before,.feature-card:hover:after{opacity:1}
.feature-icon{display:inline-block;animation:float-y 4s ease-in-out infinite}.feature-card:nth-child(2) .feature-icon{animation-delay:-1.3s}.feature-card:nth-child(3) .feature-icon{animation-delay:-2.6s}
.values-grid article>span,.day-moments article>b{transition:transform .6s}.values-grid article:hover>span{transform:rotate(180deg) scale(1.2)}.day-moments article:hover>b{transform:rotate(180deg);background:#fff3e4}
.values-grid article{transition:transform .35s,box-shadow .35s}.values-grid article:hover{transform:translateY(-5px);box-shadow:0 14px 34px #8d664418}
.quote-card>span{display:inline-block;animation:float-y 5s ease-in-out infinite}
/* золото и блеск */
.hero h1 em,.venue-info h2 em{background:linear-gradient(110deg,#8e603d,#dcb78d 40%,#7a4f33 60%,#c89a6c);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:goldshine 6s ease-in-out infinite}
.crest b{display:inline-block;animation:float-y 5s ease-in-out infinite}
.countdown div{transition:transform .3s,box-shadow .3s}.countdown div:hover{transform:translateY(-4px);box-shadow:0 14px 30px #a47c5520}
.countdown b.tick{animation:tick .5s}
.rsvp-button,.map-button,.submit-button{position:relative;overflow:hidden}
.rsvp-button{animation:glow 3s ease-in-out infinite}
.rsvp-button:after,.map-button:after,.submit-button:after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,#ffffff55,transparent);transform:skewX(-20deg);pointer-events:none}
.rsvp-button:after{animation:sheen 4s ease-in-out infinite}.map-button:hover:after,.submit-button:hover:after{animation:sheen 1s}
/* появление при прокрутке */
.js-reveal .reveal{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--rd,0s)}
.js-reveal .reveal.in{opacity:1;transform:none}
@media(max-width:1000px){.subpage-hero .bouquet{display:none}}
@media(max-width:650px){.bouquet{width:30vw;bottom:44px;opacity:.5}.kz-divider{margin-top:40px}.kz-divider svg{width:36px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.js-reveal .reveal{opacity:1;transform:none}}
