:root{--primary-gradient:linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #a855f7 100%);--primary-gradient-hover:linear-gradient(135deg, #4f46e5 0%, #7c3aed 50%, #9333ea 100%);--glass-bg:rgba(255, 255, 255, 0.85);--glass-border:rgba(255, 255, 255, 0.18);--shadow-color:rgba(99, 102, 241, 0.15);--shadow-hover:rgba(99, 102, 241, 0.25);--transition-fast:0.15s;--transition-normal:0.25s;--transition-slow:0.4s;--ease-bounce:cubic-bezier(0.68, -0.55, 0.265, 1.55);--ease-smooth:cubic-bezier(0.4, 0, 0.2, 1)}.text-gradient{background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.text-shadow-glow{text-shadow:0 0 30px rgba(99,102,241,.5)}.heading-underline{position:relative;display:inline-block}.heading-underline::after{content:'';position:absolute;bottom:-4px;left:0;width:0;height:3px;background:var(--primary-gradient);border-radius:2px;transition:width var(--transition-normal) var(--ease-smooth)}.heading-underline:hover::after{width:100%}.btn-primary{position:relative;background:var(--primary-gradient);color:#fff;font-weight:600;padding:.75rem 1.5rem;border-radius:.75rem;border:none;cursor:pointer;overflow:hidden;transition:all var(--transition-normal) var(--ease-smooth);box-shadow:0 4px 15px var(--shadow-color)}.btn-primary::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 25px var(--shadow-hover)}.btn-primary:hover::before{left:100%}.btn-primary:active{transform:translateY(0)}.btn-ripple{position:relative;overflow:hidden}.btn-ripple::after{content:'';position:absolute;width:100%;height:100%;top:50%;left:50%;pointer-events:none;background-image:radial-gradient(circle,rgba(255,255,255,.3) 10%,transparent 10.01%);background-repeat:no-repeat;background-position:50%;transform:translate(-50%,-50%) scale(10);opacity:0;transition:transform .5s,opacity .5s}.btn-ripple:active::after{transform:translate(-50%,-50%) scale(0);opacity:1;transition:0s}.card-enhanced{background:#fff;border-radius:1rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transition:all var(--transition-normal) var(--ease-smooth);position:relative;overflow:hidden}.card-enhanced::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--primary-gradient);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-normal) var(--ease-smooth)}.card-enhanced:hover{transform:translateY(-8px);box-shadow:0 25px 50px -12px rgba(0,0,0,.15)}.card-enhanced:hover::before{transform:scaleX(1)}.card-glow{position:relative}.card-glow::after{content:'';position:absolute;inset:-2px;background:var(--primary-gradient);border-radius:inherit;z-index:-1;opacity:0;transition:opacity var(--transition-normal);filter:blur(15px)}.card-glow:hover::after{opacity:.4}.glass-enhanced{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);box-shadow:0 8px 32px rgba(0,0,0,.1),inset 0 0 0 1px rgba(255,255,255,.5)}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-20px)}}.float-animation{animation:float 6s ease-in-out infinite}.float-animation-delayed{animation:float 6s ease-in-out infinite;animation-delay:-3s}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}.animated-gradient{background:linear-gradient(-45deg,#6366f1,#8b5cf6,#a855f7,#6366f1);background-size:400% 400%;animation:gradientShift 15s ease infinite}.particle-bg{position:relative;overflow:hidden}.particle-bg::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background-image:radial-gradient(circle at 20% 80%,rgba(255,255,255,.1) 1px,transparent 1px),radial-gradient(circle at 80% 20%,rgba(255,255,255,.1) 1px,transparent 1px),radial-gradient(circle at 40% 40%,rgba(255,255,255,.05) 2px,transparent 2px),radial-gradient(circle at 60% 60%,rgba(255,255,255,.05) 2px,transparent 2px);background-size:100px 100px,100px 100px,150px 150px,150px 150px;animation:particleMove 20s linear infinite;pointer-events:none}@keyframes particleMove{0%{transform:translateY(0)}100%{transform:translateY(-100px)}}.hero-shapes{position:absolute;inset:0;overflow:hidden;pointer-events:none}.hero-shape{position:absolute;border-radius:50%;background:rgba(255,255,255,.1)}.hero-shape-1{width:300px;height:300px;top:-150px;right:-100px;animation:float 8s ease-in-out infinite}.hero-shape-2{width:200px;height:200px;bottom:-100px;left:-50px;animation:float 10s ease-in-out infinite reverse}.hero-shape-3{width:150px;height:150px;top:50%;left:10%;animation:float 7s ease-in-out infinite;animation-delay:-2s}.stat-card{position:relative;overflow:hidden}.stat-card::before{content:'';position:absolute;top:0;left:0;width:4px;height:100%;background:var(--primary-gradient);transform:scaleY(0);transform-origin:bottom;transition:transform .5s var(--ease-smooth)}.stat-card:hover::before{transform:scaleY(1)}.stat-number{font-variant-numeric:tabular-nums}@keyframes countUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.count-up{animation:countUp .6s var(--ease-smooth) forwards}.input-enhanced{position:relative;transition:all var(--transition-normal) var(--ease-smooth);border:2px solid transparent}.input-enhanced:focus{border-color:#6366f1;box-shadow:0 0 0 4px rgba(99,102,241,.1)}.input-wrapper{position:relative}.input-wrapper .input-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:#94a3b8;transition:color var(--transition-fast)}.input-wrapper input:focus~.input-icon,.input-wrapper input:not(:placeholder-shown)~.input-icon{color:#6366f1}.filter-tag{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 1rem;background:#f1f5f9;border:2px solid transparent;border-radius:9999px;font-size:.875rem;font-weight:500;color:#64748b;cursor:pointer;transition:all var(--transition-fast) var(--ease-smooth)}.filter-tag:hover{background:#e0e7ff;color:#4f46e5;border-color:#c7d2fe}.filter-tag.active{background:#6366f1;color:#fff;border-color:#6366f1;box-shadow:0 4px 12px rgba(99,102,241,.3)}.filter-tag i{font-size:.75rem}.rating-stars{display:inline-flex;gap:2px}.rating-star{color:#fbbf24;transition:transform var(--transition-fast) var(--ease-bounce)}.rating-stars:hover .rating-star{animation:starPop .3s var(--ease-bounce)}.rating-stars .rating-star:first-child{animation-delay:0s}.rating-stars .rating-star:nth-child(2){animation-delay:50ms}.rating-stars .rating-star:nth-child(3){animation-delay:.1s}.rating-stars .rating-star:nth-child(4){animation-delay:.15s}.rating-stars .rating-star:nth-child(5){animation-delay:.2s}@keyframes starPop{0%{transform:scale(1)}50%{transform:scale(1.2)}100%{transform:scale(1)}}.amenity-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.5rem;background:#f1f5f9;color:#64748b;font-size:.75rem;transition:all var(--transition-fast) var(--ease-smooth)}.amenity-icon:hover{background:#e0e7ff;color:#4f46e5;transform:scale(1.1)}.amenity-icon.active{background:#6366f1;color:#fff}.reveal{opacity:0;transform:translateY(30px);transition:all .6s var(--ease-smooth)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-left{opacity:0;transform:translateX(-30px);transition:all .6s var(--ease-smooth)}.reveal-left.visible{opacity:1;transform:translateX(0)}.reveal-right{opacity:0;transform:translateX(30px);transition:all .6s var(--ease-smooth)}.reveal-right.visible{opacity:1;transform:translateX(0)}.stagger-children>*{opacity:0;transform:translateY(20px);transition:all .4s var(--ease-smooth)}.stagger-children.visible>:first-child{transition-delay:0s;opacity:1;transform:translateY(0)}.stagger-children.visible>:nth-child(2){transition-delay:0.1s;opacity:1;transform:translateY(0)}.stagger-children.visible>:nth-child(3){transition-delay:0.2s;opacity:1;transform:translateY(0)}.stagger-children.visible>:nth-child(4){transition-delay:0.3s;opacity:1;transform:translateY(0)}.stagger-children.visible>:nth-child(5){transition-delay:0.4s;opacity:1;transform:translateY(0)}.stagger-children.visible>:nth-child(6){transition-delay:0.5s;opacity:1;transform:translateY(0)}#back-to-top{position:fixed;bottom:2rem;right:2rem;width:48px;height:48px;background:var(--primary-gradient);color:#fff;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.25rem;box-shadow:0 4px 15px var(--shadow-color);opacity:0;visibility:hidden;transform:translateY(20px);transition:all var(--transition-normal) var(--ease-smooth);z-index:100}#back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}#back-to-top:hover{transform:translateY(-4px);box-shadow:0 8px 25px var(--shadow-hover)}#back-to-top:active{transform:translateY(0)}.skeleton-enhanced{background:linear-gradient(90deg,#f1f5f9 0,#e2e8f0 20%,#f1f5f9 40%,#f1f5f9 100%);background-size:200% 100%;animation:skeletonWave 1.5s ease-in-out infinite;border-radius:.5rem}@keyframes skeletonWave{0%{background-position:200% 0}100%{background-position:-200% 0}}.loading-dots{display:inline-flex;gap:4px}.loading-dots span{width:8px;height:8px;background:#6366f1;border-radius:50%;animation:dotPulse 1.4s ease-in-out infinite}.loading-dots span:first-child{animation-delay:0s}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotPulse{0%,100%,80%{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}.tooltip{position:relative}.tooltip::before{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translateX(-50%) translateY(-8px);padding:.5rem .75rem;background:#1e293b;color:#fff;font-size:.75rem;font-weight:500;border-radius:.5rem;white-space:nowrap;opacity:0;visibility:hidden;transition:all var(--transition-fast) var(--ease-smooth);z-index:50}.tooltip::after{content:'';position:absolute;bottom:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:#1e293b;opacity:0;visibility:hidden;transition:all var(--transition-fast) var(--ease-smooth)}.tooltip:hover::after,.tooltip:hover::before{opacity:1;visibility:visible}.tooltip:hover::before{transform:translateX(-50%) translateY(-4px)}.badge{display:inline-flex;align-items:center;padding:.25rem .75rem;font-size:.75rem;font-weight:600;border-radius:9999px;transition:all var(--transition-fast)}.badge-primary{background:#e0e7ff;color:#4f46e5}.badge-success{background:#d1fae5;color:#059669}.badge-warning{background:#fef3c7;color:#d97706}.badge-danger{background:#fee2e2;color:#dc2626}.badge-pulse{position:relative}.badge-pulse::before{content:'';position:absolute;inset:0;border-radius:inherit;background:inherit;animation:badgePulse 2s ease-in-out infinite}@keyframes badgePulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0;transform:scale(1.5)}}.img-zoom{overflow:hidden}.img-zoom img{transition:transform .5s var(--ease-smooth)}.img-zoom:hover img{transform:scale(1.1)}.lazy-image{opacity:0;transition:opacity .5s var(--ease-smooth)}.lazy-image.loaded{opacity:1}.empty-state{text-align:center;padding:3rem 1rem}.empty-state-icon{width:80px;height:80px;margin:0 auto 1.5rem;background:#f1f5f9;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;color:#94a3b8}.empty-state-title{font-size:1.25rem;font-weight:600;color:#1e293b;margin-bottom:.5rem}.empty-state-text{color:#64748b;max-width:24rem;margin:0 auto}@media (max-width:640px){.card-enhanced:hover{transform:none}#back-to-top{bottom:1rem;right:1rem;width:40px;height:40px;font-size:1rem}.hero-shapes{display:none}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}}