.product-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2rem;display:grid}.product-card{flex-direction:column;transition:transform .3s,border-color .3s;display:flex;overflow:hidden}.product-card:hover{border-color:var(--accent-primary);transform:translateY(-5px)}.product-image-wrapper{aspect-ratio:1;position:relative;overflow:hidden}.product-image{object-fit:cover;width:100%;height:100%;transition:transform .5s}.product-card:hover .product-image{transform:scale(1.1)}.product-tag{background:var(--accent-primary);color:#fff;border-radius:20px;padding:.25rem .75rem;font-size:.75rem;font-weight:700;position:absolute;top:1rem;right:1rem;box-shadow:0 4px 10px #0000004d}.product-info{flex-direction:column;flex-grow:1;padding:1.5rem;display:flex}.product-category{text-transform:uppercase;color:var(--accent-primary);letter-spacing:1px;margin-bottom:.5rem;font-size:.75rem;font-weight:700}.product-name{color:var(--text-primary);margin-bottom:1.5rem;font-size:1.25rem;font-weight:700}.product-footer{justify-content:space-between;align-items:center;margin-top:auto;display:flex}.product-price{font-size:1.5rem;font-weight:800;font-family:var(--font-heading)}.add-to-cart-btn{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:#ffffff0d;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;transition:all .2s;display:flex}.add-to-cart-btn:hover{background:var(--accent-primary);border-color:var(--accent-primary);box-shadow:var(--shadow-glow)}.add-to-cart-btn.added{color:#fff;background:#22c55e;border-color:#22c55e;transform:scale(1.1);box-shadow:0 0 15px #22c55e66}.empty-state{text-align:center;color:var(--text-secondary);flex-direction:column;grid-column:1/-1;gap:1rem;padding:4rem 2rem;display:flex}.empty-state p{color:var(--text-primary);margin:0;font-size:1.5rem;font-weight:700}.empty-subtitle{opacity:.8;font-size:1rem}.skeleton-shimmer{background:linear-gradient(90deg,#ffffff0d 25%,#ffffff1a 50%,#ffffff0d 75%) 0 0/200% 100%;animation:1.5s linear infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-line{border-radius:4px;margin-bottom:.5rem}.skeleton-card{pointer-events:none}.review-section{border-top:1px solid var(--border-color);margin-top:4rem;padding-top:2rem}.review-header{justify-content:space-between;align-items:center;gap:2rem;margin-bottom:2rem;display:flex}.rating-summary{align-items:center;gap:1.5rem;display:flex}.avg-rating{color:var(--text-primary);font-size:3rem;font-weight:800;line-height:1}.rating-meta{flex-direction:column;gap:.25rem;display:flex}.stars-row{gap:2px;display:flex}.star-filled{fill:var(--accent-primary);color:var(--accent-primary)}.star-empty{color:var(--border-color)}.clickable{cursor:pointer;transition:transform .2s}.clickable:hover{transform:scale(1.2)}.total-count{color:var(--text-secondary);font-size:.875rem}.write-review-btn{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:#ffffff0d;border-radius:12px;align-items:center;gap:.75rem;padding:.75rem 1.25rem;font-weight:600;transition:all .2s;display:flex}.write-review-btn:hover{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.review-form{flex-direction:column;gap:1.5rem;margin-bottom:3rem;padding:2rem;animation:.3s slideDown;display:flex}.form-group{flex-direction:column;gap:.75rem;display:flex}.form-group label{color:var(--text-secondary);font-size:.9rem;font-weight:700}.stars-input{gap:.5rem;display:flex}.review-form textarea{border:1px solid var(--border-color);color:var(--text-primary);resize:vertical;background:#0003;border-radius:12px;min-height:120px;padding:1rem}.review-form textarea:focus{border-color:var(--accent-primary);outline:none}.submit-review-btn{background:var(--accent-primary);color:#fff;cursor:pointer;border:none;border-radius:10px;align-self:flex-start;align-items:center;gap:.75rem;padding:.75rem 1.5rem;font-weight:700;display:flex}.reviews-list{flex-direction:column;gap:1.5rem;display:flex}.review-card{border:1px solid var(--border-color);background:#ffffff05;border-radius:16px;padding:1.5rem}.review-card-header{justify-content:space-between;align-items:flex-start;margin-bottom:1rem;display:flex}.user-info{align-items:center;gap:1rem;display:flex}.user-avatar{background:var(--accent-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;font-weight:800;display:flex}.user-details{flex-direction:column;display:flex}.user-name{align-items:center;gap:.5rem;font-weight:700;display:flex}.verified-icon{color:#10b981}.review-date{color:var(--text-secondary);font-size:.8rem}.review-comment{color:var(--text-secondary);margin:0;line-height:1.6}.no-reviews{text-align:center;color:var(--text-secondary);padding:3rem;font-style:italic}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.review-header{flex-direction:column;align-items:flex-start}}.modal-overlay{-webkit-backdrop-filter:blur(8px);z-index:1000;background:#000c;justify-content:center;align-items:center;padding:2rem;animation:.3s fadeIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.modal-content{width:100%;max-width:1000px;max-height:90vh;padding:3rem;animation:.3s cubic-bezier(.34,1.56,.64,1) scaleUp;position:relative;overflow-y:auto}.modal-close{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;z-index:10;background:#ffffff0d;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:all .2s;display:flex;position:absolute;top:1.5rem;right:1.5rem}.modal-close:hover{background:var(--accent-primary);border-color:var(--accent-primary)}.modal-body{grid-template-columns:1fr 1fr;gap:3rem;display:grid}.modal-image-section{aspect-ratio:1;background:#ffffff05;border-radius:12px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.modal-image{object-fit:contain;max-width:100%;max-height:100%}.modal-tag{background:var(--accent-primary);color:#fff;border-radius:20px;padding:.25rem .75rem;font-size:.875rem;font-weight:700;position:absolute;top:1rem;left:1rem}.modal-info-section{flex-direction:column;gap:1.5rem;display:flex}.modal-category{text-transform:uppercase;letter-spacing:.1em;color:var(--accent-primary);font-size:.875rem;font-weight:700}.modal-title{margin:0;font-size:2.5rem;font-weight:800;line-height:1.1}.modal-rating-summary{align-items:center;gap:1rem;margin-top:-.5rem;display:flex}.stars-small{gap:2px;display:flex}.rating-text{color:var(--text-secondary);font-size:.9rem;font-weight:600}.modal-price{font-size:2rem;font-weight:800;font-family:var(--font-heading)}.modal-description{color:var(--text-secondary);font-size:1.1rem;line-height:1.6}.modal-features{grid-template-columns:1fr;gap:1rem;margin-top:1rem;display:grid}.feature-item{color:var(--text-primary);background:#ffffff08;border:1px solid #ffffff0d;border-radius:8px;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.95rem;display:flex}.feature-item svg{color:var(--accent-primary)}.modal-add-btn{justify-content:center;margin-top:1rem;padding:1.25rem;font-size:1.1rem}.related-section{border-top:1px solid var(--border-color);margin-top:4rem;padding-top:2rem}.related-title{color:var(--text-primary);margin-bottom:1.5rem;font-size:1.25rem;font-weight:700}.related-grid{grid-template-columns:repeat(3,1fr);gap:1.5rem;display:grid}.related-card{border:1px solid var(--border-color);cursor:pointer;background:#ffffff08;border-radius:12px;flex-direction:column;gap:.75rem;padding:1rem;transition:all .3s;display:flex}.related-card:hover{border-color:var(--accent-primary);background:#ffffff0f;transform:translateY(-4px)}.related-image-wrapper{aspect-ratio:1;background:#0003;border-radius:8px;justify-content:center;align-items:center;display:flex;overflow:hidden}.related-image-wrapper img{object-fit:contain;max-width:80%;max-height:80%}.related-info{flex-direction:column;gap:.25rem;display:flex}.related-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.related-price{color:var(--accent-primary);font-size:.875rem;font-weight:700}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@media (max-width:768px){.modal-content{max-height:95vh;padding:1.5rem}.modal-body{grid-template-columns:1fr;gap:2rem}.modal-title{font-size:1.75rem}.modal-close{top:1rem;right:1rem}.related-grid{grid-template-columns:1fr;gap:1rem}}
