img.lazy-loading{opacity:0;filter:blur(10px);transition:opacity .3s ease-in,filter .3s ease-in}img.lazy-loaded,img[loading=lazy]{opacity:1}img.blur-up{filter:blur(10px);transition:filter .4s ease-out,opacity .4s ease-out}img.blur-up.loaded{filter:blur(0);opacity:1}.image-placeholder{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.listing-card,.property-card,.card{transition:transform var(--transition-base),box-shadow var(--transition-base)}.listing-card:hover,.property-card:hover,.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl)}.btn,button{transition:transform var(--transition-fast),box-shadow var(--transition-fast);transform:scale(1)}.btn:active,button:active{transform:scale(.96)}.btn:hover{box-shadow:var(--shadow-md)}.btn-primary:hover{box-shadow:var(--shadow-primary)}.toast{animation:slideInRight .3s cubic-bezier(.68,-.55,.265,1.55)}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.fade-in{animation:fadeIn .5s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.filter-chip{animation:popIn .2s cubic-bezier(.68,-.55,.265,1.55)}@keyframes popIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.btn-icon:hover i,.mobile-menu-btn:hover{transform:scale(1.1);transition:transform var(--transition-fast)}.form-control:focus,.form-input:focus,.form-select:focus,.form-textarea:focus{transform:scale(1.01);transition:transform var(--transition-fast),border-color var(--transition-fast)}.page-content{animation:fadeInUp .4s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.5rem}.skeleton-card{background:#fff;border-radius:1rem;overflow:hidden;box-shadow:var(--shadow-sm);padding:0}.skeleton-image{width:100%;height:200px;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.skeleton-title{height:24px;width:70%;margin:1rem 1rem .5rem;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.25rem}.skeleton-text{height:16px;width:50%;margin:.5rem 1rem 1rem;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.25rem}.skeleton-button{height:40px;width:calc(100% - 2rem);margin:0 1rem 1rem;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.5rem}.skeleton-product-details{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.skeleton-product-details .skeleton-image{height:400px}.skeleton-product-info{display:flex;flex-direction:column;gap:1rem}.skeleton-stat-card{background:#fff;padding:1.5rem;border-radius:1rem;display:flex;flex-direction:column;gap:.5rem}.skeleton-stat-value{height:36px;width:60%;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.25rem}.skeleton-stat-label{height:20px;width:40%;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.25rem}.empty-state{text-align:center;padding:4rem 2rem;background:#fff;border-radius:1.5rem;box-shadow:var(--shadow-sm);max-width:500px;margin:2rem auto}.empty-state-icon{font-size:4rem;color:var(--gray-light);margin-bottom:1.5rem;opacity:.5}.empty-state-title{font-size:1.5rem;font-weight:600;color:var(--dark);margin-bottom:.75rem}.empty-state-description{color:var(--gray);margin-bottom:2rem;line-height:1.6}.empty-state-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.empty-state-search{background:linear-gradient(135deg,#f0f9ff,#e0f2fe)}.empty-state-wishlist{background:linear-gradient(135deg,#fef3c7,#fde68a)}.empty-state-bookings{background:linear-gradient(135deg,#f0fdf4,#dcfce7)}.empty-state-chat{background:linear-gradient(135deg,#fce7f3,#fbcfe8)}.lightbox{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none;align-items:center;justify-content:center}.lightbox.active{display:flex}.lightbox-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000000e6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.lightbox-content{position:relative;max-width:90%;max-height:90%;z-index:1}.lightbox-image{max-width:100%;max-height:90vh;object-fit:contain;border-radius:.5rem;box-shadow:0 25px 50px #00000080}.lightbox-close,.lightbox-prev,.lightbox-next{position:absolute;background:#ffffff1a;border:none;color:#fff;font-size:2rem;padding:1rem 1.25rem;cursor:pointer;transition:all .2s;border-radius:.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.lightbox-close:hover,.lightbox-prev:hover,.lightbox-next:hover{background:#fff3;transform:scale(1.1)}.lightbox-close{top:1rem;right:1rem;font-size:2.5rem;line-height:1}.lightbox-prev{left:1rem;top:50%;transform:translateY(-50%)}.lightbox-prev:hover{transform:translateY(-50%) scale(1.1)}.lightbox-next{right:1rem;top:50%;transform:translateY(-50%)}.lightbox-next:hover{transform:translateY(-50%) scale(1.1)}.lightbox-counter{position:absolute;bottom:-3rem;left:50%;transform:translate(-50%);color:#fff;font-size:1.2rem;background:#00000080;padding:.5rem 1rem;border-radius:2rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@media (max-width: 768px){.lightbox-prev,.lightbox-next{font-size:1.5rem;padding:.75rem 1rem}.lightbox-counter{bottom:1rem}}.toast-container{position:fixed;top:1rem;right:1rem;z-index:10000;display:flex;flex-direction:column;gap:.5rem;max-width:400px;pointer-events:none}.toast-container>*{pointer-events:all}.toast-enhanced{display:flex;align-items:flex-start;gap:1rem;background:#fff;padding:1rem 1.25rem;border-radius:.75rem;box-shadow:0 10px 25px #00000026;min-width:300px;max-width:400px;transform:translate(120%);opacity:0;transition:all .3s cubic-bezier(.68,-.55,.265,1.55);position:relative;overflow:hidden}.toast-enhanced.show{transform:translate(0);opacity:1}.toast-icon{font-size:1.5rem;line-height:1;flex-shrink:0}.toast-success{border-left:4px solid #22c55e}.toast-success .toast-icon{color:#22c55e}.toast-error{border-left:4px solid #ef4444}.toast-error .toast-icon{color:#ef4444}.toast-warning{border-left:4px solid #f59e0b}.toast-warning .toast-icon{color:#f59e0b}.toast-info{border-left:4px solid #3b82f6}.toast-info .toast-icon{color:#3b82f6}.toast-message{flex:1;color:var(--dark);line-height:1.5;word-break:break-word}.toast-close{background:none;border:none;color:var(--gray);cursor:pointer;padding:0;font-size:1.25rem;line-height:1;flex-shrink:0;transition:color .2s}.toast-close:hover{color:var(--dark)}.toast-progress{position:absolute;bottom:0;left:0;width:100%;height:3px;background:#0000001a}.toast-progress-bar{width:100%;height:100%;background:currentColor}.toast-success .toast-progress-bar{background:#22c55e}.toast-error .toast-progress-bar{background:#ef4444}.toast-warning .toast-progress-bar{background:#f59e0b}.toast-info .toast-progress-bar{background:#3b82f6}@media (max-width: 768px){.toast-container{left:1rem;right:1rem;max-width:none}.toast-enhanced{min-width:auto}}.form-control.valid,.form-input.valid,.form-textarea.valid{border-color:#22c55e;background-color:#22c55e0d}.form-control.invalid,.form-input.invalid,.form-textarea.invalid{border-color:#ef4444;background-color:#ef44440d}.validation-error{display:block;color:#ef4444;font-size:.875rem;margin-top:.375rem;animation:shake .3s}.validation-error i{margin-right:.25rem}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.validation-success{position:absolute;right:1rem;top:50%;transform:translateY(-50%);color:#22c55e;font-size:1.25rem;animation:popIn .3s cubic-bezier(.68,-.55,.265,1.55)}.form-group{position:relative;margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--dark)}.form-group .form-control,.form-group .form-input,.form-group .form-textarea{width:100%}.char-counter{text-align:right;font-size:.875rem;color:var(--gray);margin-top:.25rem}.char-counter.warning{color:#f59e0b}.char-counter.error{color:#ef4444}
