.gallery{padding:20px}.gallery-section__title{margin-bottom:20px;text-align:center}.gallery-section__image-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;list-style:none;padding:0;margin:0}.gallery-section__image-list--item{aspect-ratio:1;position:relative;overflow:hidden;border-radius:8px}.gallery-section__image-wrapper{position:relative;width:100%;height:100%}.gallery-section__image{object-fit:cover!important;transition:transform .3s ease}.gallery-section__image:hover{transform:scale(1.05)}.image-modal{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.8);display:flex;justify-content:center;align-items:center;z-index:1000}.image-modal__content{position:relative;width:90%;height:90%;max-width:1200px}.image-modal__image-wrapper{position:relative;width:100%;height:100%}.image-modal__image{object-fit:contain!important}.image-modal__close{position:fixed;top:20px;right:20px;background:none;border:none;color:#fff;font-size:40px;cursor:pointer;padding:10px;line-height:1;transition:opacity .3s;z-index:1001}.image-modal__close:hover{opacity:.7}.image-uploader{margin:2rem 0}.image-uploader__auth-button{background-color:#007bff;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.image-uploader__auth-button:hover{background-color:#0056b3}.image-uploader__input-wrapper{position:relative;border:2px dashed #ddd;border-radius:8px;padding:2rem;text-align:center;cursor:pointer;transition:border-color .2s}.image-uploader__input-wrapper:hover{border-color:#007bff}.image-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.image-uploader__label{color:#666;font-size:1rem}.image-uploader__error{color:#dc3545;margin-top:1rem;font-size:.875rem}