From d4b6eab809bd07408027b6d2e551a8b83efd13de Mon Sep 17 00:00:00 2001 From: Ivan Date: Sun, 26 Feb 2023 16:22:09 +0100 Subject: [PATCH] Proyecto Tienda --- pom.xml | 104 +- .../rallyModels/RallyModelsApplication.java | 3 - .../controlador/FilesController.java | 25 + .../controlador/LoginControlador.java | 52 + .../controlador/MaquetaControlador.java | 244 +- .../controlador/RegistroControlador.java | 72 + .../controlador/UploadController.java | 32 + .../controlador/UsuarioControlador.java | 20 - .../rallyModels/dtu/UsuarioRegistroDTU.java | 61 + .../ims/rallyModels/modelo/CocheEntity.java | 5 + .../ims/rallyModels/modelo/CompraEntity.java | 35 + .../ims/rallyModels/modelo/MaquetaEntity.java | 96 +- .../com/ims/rallyModels/modelo/UserModel.java | 97 + .../ims/rallyModels/modelo/UsuarioEntity.java | 42 +- .../reportes/FacturaExporterExcel.java | 104 + .../reportes/FacturaExporterPDF.java | 87 + .../repositorio/ICocheRepositorio.java | 9 + .../repositorio/ICompeticionRepositorio.java | 9 + ...positorio.java => ICompraRepositorio.java} | 7 +- .../repositorio/IMaquetasRepositorio.java | 10 +- .../repositorio/IUserRepository.java | 12 + .../rallyModels/security/SecurityConfig.java | 55 + .../servicio/IUsuarioServicio.java | 11 - .../rallyModels/servicio/UserDetailsImpl.java | 58 + .../servicio/UsuarioServicioImpl.java | 51 +- .../servicio/coche/CocheServicioImpl.java | 42 + .../servicio/coche/ICocheServicio.java | 20 + .../competicion/CompeticionServicioImpl.java | 40 + .../competicion/ICompeticionService.java | 19 + .../servicio/compra/CompraServicioImpl.java | 71 + .../servicio/compra/ICompraServicio.java | 30 + .../img/FileSystemStorageService.java | 168 + .../servicio/img/StorageProperties.java | 20 + .../servicio/img/StorageService.java | 27 + .../{ => maqueta}/IMaquetasServicio.java | 9 +- .../{ => maqueta}/MaquetasServicioImpl.java | 14 +- .../servicio/userMng/IUsuarioServicio.java | 11 + .../servicio/userMng/UserServImpl.java | 24 + src/main/resources/application.properties | 8 +- .../resources/static/css/shoppingCart.css | 43 + src/main/resources/static/css/styles.css | 11307 +++++++++++++++- src/main/resources/static/raw/HyundaiI20.jpg | Bin 0 -> 5532 bytes .../resources/static/raw/ToyotaYarisWRC.jpg | Bin 0 -> 9613 bytes src/main/resources/static/raw/circLogo.png | Bin 0 -> 35454 bytes src/main/resources/static/raw/fordPuma.jpg | Bin 0 -> 8697 bytes src/main/resources/static/raw/logo.png | Bin 0 -> 121046 bytes .../resources/templates/crear_maqueta.html | 56 - src/main/resources/templates/index.html | 38 +- src/main/resources/templates/login.html | 95 + src/main/resources/templates/maqueta.html | 76 - .../resources/templates/public/carrito.html | 57 + .../templates/public/crear_maqueta.html | 89 + .../{ => public}/editar_maqueta.html | 6 +- .../resources/templates/public/factura.html | 79 + .../resources/templates/public/js/scripts.js | 7 + .../resources/templates/public/maqueta.html | 125 + .../templates/public/maqueta_detalle.html | 47 + .../resources/templates/public/register.html | 25 + .../resources/templates/public/usuarios.html | 72 + src/main/resources/templates/raw/images.jfif | Bin 8141 -> 0 bytes src/main/resources/templates/register.html | 111 + src/main/resources/templates/utils/nav.html | 9 + 62 files changed, 13729 insertions(+), 317 deletions(-) create mode 100644 src/main/java/com/ims/rallyModels/controlador/FilesController.java create mode 100644 src/main/java/com/ims/rallyModels/controlador/LoginControlador.java create mode 100644 src/main/java/com/ims/rallyModels/controlador/RegistroControlador.java create mode 100644 src/main/java/com/ims/rallyModels/controlador/UploadController.java delete mode 100644 src/main/java/com/ims/rallyModels/controlador/UsuarioControlador.java create mode 100644 src/main/java/com/ims/rallyModels/dtu/UsuarioRegistroDTU.java create mode 100644 src/main/java/com/ims/rallyModels/modelo/UserModel.java create mode 100644 src/main/java/com/ims/rallyModels/reportes/FacturaExporterExcel.java create mode 100644 src/main/java/com/ims/rallyModels/reportes/FacturaExporterPDF.java create mode 100644 src/main/java/com/ims/rallyModels/repositorio/ICocheRepositorio.java create mode 100644 src/main/java/com/ims/rallyModels/repositorio/ICompeticionRepositorio.java rename src/main/java/com/ims/rallyModels/repositorio/{IUsuarioRepositorio.java => ICompraRepositorio.java} (57%) create mode 100644 src/main/java/com/ims/rallyModels/repositorio/IUserRepository.java create mode 100644 src/main/java/com/ims/rallyModels/security/SecurityConfig.java delete mode 100644 src/main/java/com/ims/rallyModels/servicio/IUsuarioServicio.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/UserDetailsImpl.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/coche/CocheServicioImpl.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/coche/ICocheServicio.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/competicion/CompeticionServicioImpl.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/competicion/ICompeticionService.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/compra/CompraServicioImpl.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/compra/ICompraServicio.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/img/FileSystemStorageService.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/img/StorageProperties.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/img/StorageService.java rename src/main/java/com/ims/rallyModels/servicio/{ => maqueta}/IMaquetasServicio.java (65%) rename src/main/java/com/ims/rallyModels/servicio/{ => maqueta}/MaquetasServicioImpl.java (71%) create mode 100644 src/main/java/com/ims/rallyModels/servicio/userMng/IUsuarioServicio.java create mode 100644 src/main/java/com/ims/rallyModels/servicio/userMng/UserServImpl.java create mode 100644 src/main/resources/static/css/shoppingCart.css create mode 100644 src/main/resources/static/raw/HyundaiI20.jpg create mode 100644 src/main/resources/static/raw/ToyotaYarisWRC.jpg create mode 100644 src/main/resources/static/raw/circLogo.png create mode 100644 src/main/resources/static/raw/fordPuma.jpg create mode 100644 src/main/resources/static/raw/logo.png delete mode 100644 src/main/resources/templates/crear_maqueta.html create mode 100644 src/main/resources/templates/login.html delete mode 100644 src/main/resources/templates/maqueta.html create mode 100644 src/main/resources/templates/public/carrito.html create mode 100644 src/main/resources/templates/public/crear_maqueta.html rename src/main/resources/templates/{ => public}/editar_maqueta.html (86%) create mode 100644 src/main/resources/templates/public/factura.html create mode 100644 src/main/resources/templates/public/js/scripts.js create mode 100644 src/main/resources/templates/public/maqueta.html create mode 100644 src/main/resources/templates/public/maqueta_detalle.html create mode 100644 src/main/resources/templates/public/register.html create mode 100644 src/main/resources/templates/public/usuarios.html delete mode 100644 src/main/resources/templates/raw/images.jfif create mode 100644 src/main/resources/templates/register.html create mode 100644 src/main/resources/templates/utils/nav.html diff --git a/pom.xml b/pom.xml index 87bdf7c..9773512 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,16 @@ 17 - + + + + org.springframework.data + spring-data-jpa + 3.0.0 + + + + org.mariadb.jdbc mariadb-java-client @@ -31,22 +40,37 @@ 6.0.0.Final - org.springframework.boot - spring-boot-starter-data-jpa + spring-boot-starter-web org.springframework.boot - spring-boot-starter-thymeleaf + spring-boot-starter-security + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity6 + + 3.1.1.RELEASE + + org.springframework.security + spring-security-test + test + + org.springframework.boot - spring-boot-starter-validation + spring-boot-starter-test + test + + + org.springframework.boot - spring-boot-starter-web + spring-boot-starter-data-jpa @@ -60,11 +84,77 @@ mysql-connector-j runtime + + org.springframework.security + spring-security-config + + + + + com.github.librepdf + openpdf + 1.3.26 + + + + + org.apache.poi + poi-ooxml + 4.1.0 + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/ims/rallyModels/RallyModelsApplication.java b/src/main/java/com/ims/rallyModels/RallyModelsApplication.java index 66879ca..aa51653 100644 --- a/src/main/java/com/ims/rallyModels/RallyModelsApplication.java +++ b/src/main/java/com/ims/rallyModels/RallyModelsApplication.java @@ -14,9 +14,6 @@ public class RallyModelsApplication implements CommandLineRunner { SpringApplication.run(RallyModelsApplication.class, args); } - @Autowired - private IMaquetasRepositorio repositorio; - @Override public void run(String... args) throws Exception { /* diff --git a/src/main/java/com/ims/rallyModels/controlador/FilesController.java b/src/main/java/com/ims/rallyModels/controlador/FilesController.java new file mode 100644 index 0000000..b58de35 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/controlador/FilesController.java @@ -0,0 +1,25 @@ +package com.ims.rallyModels.controlador; + +import com.ims.rallyModels.servicio.img.StorageService; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class FilesController { + + @Autowired + StorageService storageService; + + @GetMapping("/files/{filename:.+}") + @ResponseBody + public ResponseEntity serveFile(@PathVariable String filename) { + Resource file = (Resource) storageService.loadAsResource(filename); + return ResponseEntity.ok().body(file); + } + +} diff --git a/src/main/java/com/ims/rallyModels/controlador/LoginControlador.java b/src/main/java/com/ims/rallyModels/controlador/LoginControlador.java new file mode 100644 index 0000000..fb9b4e2 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/controlador/LoginControlador.java @@ -0,0 +1,52 @@ +package com.ims.rallyModels.controlador; + +import com.ims.rallyModels.modelo.UsuarioEntity; +import com.ims.rallyModels.repositorio.IUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class LoginControlador { + + @Autowired + private IUserRepository iUserRepository; + + @GetMapping({"/login"}) + public String goToLogin(Model model){ + return "login"; + } + + +/* + @Autowired + private IUsuarioRepositorio iUserRepository; + + @GetMapping({"/login"}) + public String goToLogin(Model model){ + return "login"; + } + +*/ +/* + @Autowired + private IUsuarioRepositorio iUsuarioRepositorio; + + @GetMapping({"/login"}) + public String goToLogin(Model model) { + return "login"; + } + + @GetMapping({"/"}) + public String verPaginaInicio(Model model) { + return "index"; + } + + @GetMapping("/login/valid") + public String loginValidation(String username) { + UsuarioEntity user = iUsuarioRepositorio.findByName(username); + return "login"; + } +*/ +} diff --git a/src/main/java/com/ims/rallyModels/controlador/MaquetaControlador.java b/src/main/java/com/ims/rallyModels/controlador/MaquetaControlador.java index e6b7c06..98e0cb6 100644 --- a/src/main/java/com/ims/rallyModels/controlador/MaquetaControlador.java +++ b/src/main/java/com/ims/rallyModels/controlador/MaquetaControlador.java @@ -1,34 +1,220 @@ package com.ims.rallyModels.controlador; +import com.ims.rallyModels.modelo.CompraEntity; import com.ims.rallyModels.modelo.MaquetaEntity; -import com.ims.rallyModels.servicio.IMaquetasServicio; +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.reportes.FacturaExporterExcel; +import com.ims.rallyModels.reportes.FacturaExporterPDF; +import com.ims.rallyModels.servicio.coche.ICocheServicio; +import com.ims.rallyModels.servicio.competicion.ICompeticionService; +import com.ims.rallyModels.servicio.compra.ICompraServicio; +import com.ims.rallyModels.servicio.img.StorageService; +import com.ims.rallyModels.servicio.maqueta.IMaquetasServicio; +import com.ims.rallyModels.servicio.userMng.IUsuarioServicio; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; @Controller +@RequestMapping("/public") public class MaquetaControlador { + /* + @GetMapping({"/","maquetas"}) + public String index(){ + return "public/maqueta"; + } + - /* HTTP GET /users – returns all the users in the system. HTTP GET /users/{id} – returns a user by specified id. HTTP POST /users – creates a new user in the system. @ para path $ para objetos + ? para mensajes + ~ para href/frg */ + + @Autowired + private IMaquetasServicio maquetasServicio; + + @Autowired + private ICocheServicio cocheServicio; + + @Autowired + private ICompeticionService competicionService; + + @Autowired + private IUsuarioServicio usuarioServicio; + + @Autowired + private ICompraServicio compraServicio; + @Autowired - private IMaquetasServicio servicio; + private StorageService storageService; + + @Autowired + private HttpSession session; + + private UserModel usuario; + + private List maquetas; + + /* + @GetMapping({"/index","/","/maquetas",""})//url path + public String listarMaquetas(Model model) { + return "index";//html path + }*/ + + @ModelAttribute("carrito") + public List productosCarrito() { + List contenido = (List) session.getAttribute("carrito"); + return (contenido == null) ? null : maquetasServicio.variosPorId(contenido); + } + + @ModelAttribute("total_carrito") + public Double totalCarrito() { + List productosCarrito = productosCarrito(); + if (productosCarrito != null) { + return productosCarrito.stream() + .mapToDouble(p -> p.getPrecio()) + .sum(); + } + return 0.0; + } + + @GetMapping("/carrito") + public String verCarrito(Model model) { + return "public/carrito"; + } + + @GetMapping("/carrito/add/{id}") + public String addCarrito(Model model, @PathVariable Integer id) { + List contenido = (List) session.getAttribute("carrito"); + if (contenido == null) + contenido = new ArrayList<>(); + if (!contenido.contains(id)) + contenido.add(id); + session.setAttribute("carrito",contenido); + return "redirect:/public/carrito"; + } - @GetMapping({"/maquetas",""})//url path + @GetMapping("/carrito/eliminar/{id}") + public String borrarDelCarrito(Model model, @PathVariable Integer id) { + List contenido = (List) session.getAttribute("carrito"); + if (contenido == null) + return "redirect:/maquetas"; + contenido.remove(id); + if (contenido.isEmpty()) + session.removeAttribute("carrito"); + else + session.setAttribute("carrito",contenido); + return "redirect:/public/carrito"; + } + + @GetMapping("/carrito/finalizar") + public String finalizarCompra() { + List contenido = (List) session.getAttribute("carrito"); + if (contenido == null) + return "redirect:/maquetas"; + List productos = productosCarrito(); + CompraEntity c = compraServicio.insertar(new CompraEntity(),usuario); + productos.forEach(p -> compraServicio.addMaquetaCompra(p,c)); + session.removeAttribute("carrito"); + return "redirect:/public/compra/factura/"+c.getIdCompra(); + } + + @GetMapping("/miscompras") + public String verMisCompras(Model model) { + return "/compra/listado"; + } + + @GetMapping("/compra/factura/{id}") + public String factura(Model model, @PathVariable Integer id, HttpServletResponse response) throws IOException { + /*response.setContentType("application/pdf"); + DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); + String fechaActual = dateFormatter.format(new Date()); + + String cabecera = "Content-Disposition"; + String valor = "attachment; filename=Compra_"+fechaActual+".pdf"; + + response.setHeader(cabecera,valor);*/ + + CompraEntity c = compraServicio.obtenerCompraPorId(id); + List productos = maquetasServicio.productosDeUnaCompra(c); + maquetas = productos; + //FacturaExporterPDF exporter = new FacturaExporterPDF(productos); + //exporter.exportar(response); + model.addAttribute("productos",productos); + model.addAttribute("compra",c); + model.addAttribute("total_compra", productos.stream() + .mapToDouble(p -> p.getPrecio()) + .sum()); + return "public/factura"; + } + + @GetMapping("/exportarPDF/{id}") + public void exportarCompraPDF(HttpServletResponse response, @PathVariable Integer id) throws IOException { + response.setContentType("application/pdf"); + DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); + String fechaActual = dateFormatter.format(new Date()); + + String cabecera = "Content-Disposition"; + String valor = "attachment; filename=Compra_"+fechaActual+".pdf"; + + response.setHeader(cabecera,valor); + + CompraEntity compra = compraServicio.obtenerCompraPorId(id); + + FacturaExporterPDF exporter = new FacturaExporterPDF(maquetas); + exporter.exportar(response); + + } + + @GetMapping("/exportarExcel/{id}") + public void exportarCompraExcel(HttpServletResponse response, @PathVariable Integer id) throws IOException { + response.setContentType("application/octet-stream"); + DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); + String fechaActual = dateFormatter.format(new Date()); + + String cabecera = "Content-Disposition"; + String valor = "attachment; filename=Compra_"+fechaActual+".xlsx"; + + response.setHeader(cabecera,valor); + + CompraEntity compra = compraServicio.obtenerCompraPorId(id); + + FacturaExporterExcel exporter = new FacturaExporterExcel(maquetas); + exporter.exportar(response); + + } + + /* @GetMapping("/maquetas/{id}") + public String mostrarMaqueta(Model model, @PathVariable Integer id) { + MaquetaEntity producto = maquetasServicio.obtenerMaquetaPorId(id); + if (producto != null) { + model.addAttribute("producto",producto); + return "/public/maqueta_detalle";//redirect si falla. Pd: se tendrá que cambiar + } + return "redirect:/public/maquetas"; + }*/ + + @GetMapping({"/models","/","/maquetas",""})//url path public String listarMaquetas(Model model) { - model.addAttribute("maquetas",servicio.listAll()); - return "maqueta";//html path + model.addAttribute("maquetas", maquetasServicio.listAll()); + return "public/maqueta";//html path } @GetMapping({"/maquetas/nuevo"}) @@ -36,39 +222,53 @@ public class MaquetaControlador { //maqueta que le pasaremos al formulario MaquetaEntity maqueta = new MaquetaEntity(); model.addAttribute("maqueta",maqueta); - return "crear_maqueta"; + return "public/crear_maqueta"; } @PostMapping("/maquetas") - public String guardarMaqueta(@ModelAttribute("maqueta")MaquetaEntity maqueta) { + public String guardarMaqueta(@ModelAttribute("maqueta")MaquetaEntity maqueta/*, @RequestParam("file")MultipartFile file*/) { + /*if (!file.isEmpty()) { + String imagen = storageService.store(file); + maqueta.setImage(MvcUriComponentsBuilder + .fromMethodName(FilesController.class,"serveFile",imagen).build().toUriString()); + }*/ //recibimos el objeto que creamos para el formulario //agregamos métodos útiles a la Interfaz de servicio - servicio.guardarMaqueta(maqueta); - return "redirect:/maquetas";//volvemos a la página inicial + maquetasServicio.guardarMaqueta(maqueta); + return "redirect:/public/maquetas";//volvemos a la página inicial + } + + @GetMapping("/maquetas/mostrar/{id}") + public String mostrarMaqueta(@PathVariable Integer id, Model modelo) { + modelo.addAttribute("maqueta", maquetasServicio.obtenerMaquetaPorId(id)); + return "/public/maqueta_detalle"; } @GetMapping("/maquetas/editar/{id}") public String mostrarFormularioEditar(@PathVariable Integer id, Model modelo) { - modelo.addAttribute("maqueta",servicio.obtenerMaquetaPorId(id)); - return "editar_maqueta"; + modelo.addAttribute("maqueta", maquetasServicio.obtenerMaquetaPorId(id)); + return "public/editar_maqueta"; } @PostMapping("/maquetas/{id}") public String actualizarMaqueta(@PathVariable Integer id, @ModelAttribute("maqueta") MaquetaEntity maqueta, Model modelo) { - MaquetaEntity maquetaExistente = servicio.obtenerMaquetaPorId(id); + MaquetaEntity maquetaExistente = maquetasServicio.obtenerMaquetaPorId(id); maquetaExistente.setIdMaqueta(maqueta.getIdMaqueta()); + //System.out.println(maquetaExistente.getIdMaqueta()); == 4 maquetaExistente.setDescripcion(maqueta.getDescripcion()); - servicio.actualizarMaqueta(maquetaExistente); + maquetasServicio.actualizarMaqueta(maquetaExistente); - return "redirect:/maquetas"; + return "redirect:/public/maquetas"; } - @GetMapping("/maquetas/{id}") + @GetMapping("/maquetas/eliminar/{id}") public String eliminarMaqueta(@PathVariable Integer id) { - servicio.eliminarMaquetas(id); - return "redirect:/maquetas"; + maquetasServicio.eliminarMaquetas(id); + return "redirect:/public/maquetas"; } + + } diff --git a/src/main/java/com/ims/rallyModels/controlador/RegistroControlador.java b/src/main/java/com/ims/rallyModels/controlador/RegistroControlador.java new file mode 100644 index 0000000..f613aa2 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/controlador/RegistroControlador.java @@ -0,0 +1,72 @@ +package com.ims.rallyModels.controlador; + +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.repositorio.IUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +@Controller +public class RegistroControlador { + + @Autowired + private IUserRepository iUserRepository; + + @GetMapping({"/register"}) + public String goToregister(Model model){ + model.addAttribute("user", new UserModel()); + return "register"; + } + @PostMapping("/process_register") + public String processRegister(UserModel user) { + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + String encodedPassword = passwordEncoder.encode(user.getPassword()); + user.setPassword(encodedPassword); + iUserRepository.save(user); + return "login"; + } + + /*@Autowired + private IUsuarioRepositorio iUsuarioRepositorio; + + //@GetMapping + //public String mostrarFormularioRegistro() { + //return "login"; + //} +/* + @PostMapping + public String registrarCuentaDeUsuario(@ModelAttribute("usuario") UsuarioRegistroDTU usuario) { + usuarioServicio.guardar(usuario); + //si logramos registrar correctamente se mandará el + //mensaje de éxito al html del registro (l.35) + return "redirect:/register?exito"; + } + + @GetMapping("security/user") + public String getUser( Model model) { + CustomUserDetails currentUser = (CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + UsuarioEntity user = iUsuarioRepositorio.findByNombre(currentUser.getUsername()); + model.addAttribute("user", user); + return "security/user"; + } + + @GetMapping({"/register"}) + public String goToregister(Model model){ + model.addAttribute("user", new UsuarioEntity()); + return "register"; + } + + @PostMapping("/process_register") + public String processRegister(UsuarioEntity user) { + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + String encodedPassword = passwordEncoder.encode(user.getContrasena()); + user.setContrasena(encodedPassword); + iUsuarioRepositorio.save(user); + return "index"; + }*/ + + +} diff --git a/src/main/java/com/ims/rallyModels/controlador/UploadController.java b/src/main/java/com/ims/rallyModels/controlador/UploadController.java new file mode 100644 index 0000000..f743bee --- /dev/null +++ b/src/main/java/com/ims/rallyModels/controlador/UploadController.java @@ -0,0 +1,32 @@ +package com.ims.rallyModels.controlador; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +@Controller +public class UploadController { + + public static String UPLOAD_DIRECTORY = System.getProperty("user.dir") + "/uploads"; + + @GetMapping("/uploadimage") public String displayUploadForm() { + return "redirect:/public/maquetas"; + } + + @PostMapping("/upload") public String uploadImage(Model model, @RequestParam("image") MultipartFile file) throws IOException { + StringBuilder fileNames = new StringBuilder(); + Path fileNameAndPath = Paths.get(UPLOAD_DIRECTORY, file.getOriginalFilename()); + fileNames.append(file.getName()); + Files.write(fileNameAndPath, file.getBytes()); + model.addAttribute("msg", "Uploaded images: " + fileNames.toString()); + return "redirect:/public/maquetas"; + } +} diff --git a/src/main/java/com/ims/rallyModels/controlador/UsuarioControlador.java b/src/main/java/com/ims/rallyModels/controlador/UsuarioControlador.java deleted file mode 100644 index 7f6c653..0000000 --- a/src/main/java/com/ims/rallyModels/controlador/UsuarioControlador.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ims.rallyModels.controlador; - -import com.ims.rallyModels.servicio.IMaquetasServicio; -import com.ims.rallyModels.servicio.IUsuarioServicio; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; - -public class UsuarioControlador { - - @Autowired - private IUsuarioServicio servicio; - - @GetMapping({"/usuarios",""}) - public String listarMaquetas(Model model) { - model.addAttribute("usuarios",servicio.listAll()); - return "usuarios"; - } - -} diff --git a/src/main/java/com/ims/rallyModels/dtu/UsuarioRegistroDTU.java b/src/main/java/com/ims/rallyModels/dtu/UsuarioRegistroDTU.java new file mode 100644 index 0000000..bbd7b26 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/dtu/UsuarioRegistroDTU.java @@ -0,0 +1,61 @@ +package com.ims.rallyModels.dtu; + +public class UsuarioRegistroDTU { + + private int idUsuario; + private String nombre; + private String password; + private String sudo; + + public UsuarioRegistroDTU(int idUsuario, String nombre, String password, String sudo) { + this.idUsuario = idUsuario; + this.nombre = nombre; + this.password = password; + this.sudo = sudo; + } + + public UsuarioRegistroDTU(String nombre, String password, String sudo) { + this.nombre = nombre; + this.password = password; + this.sudo = sudo; + } + + public UsuarioRegistroDTU(String nombre) { + this.nombre = nombre; + } + + public UsuarioRegistroDTU() { + } + + public int getIdUsuario() { + return idUsuario; + } + + public void setIdUsuario(int idUsuario) { + this.idUsuario = idUsuario; + } + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public String getContrasena() { + return password; + } + + public void setContrasena(String contrasena) { + this.password = contrasena; + } + + public String getSudo() { + return sudo; + } + + public void setSudo(String sudo) { + this.sudo = sudo; + } +} diff --git a/src/main/java/com/ims/rallyModels/modelo/CocheEntity.java b/src/main/java/com/ims/rallyModels/modelo/CocheEntity.java index 1d93423..50af278 100644 --- a/src/main/java/com/ims/rallyModels/modelo/CocheEntity.java +++ b/src/main/java/com/ims/rallyModels/modelo/CocheEntity.java @@ -19,6 +19,8 @@ public class CocheEntity { @Column(name = "piloto", nullable = true, length = 45) private String piloto; + private String image; + public int getIdCoche() { return idCoche; } @@ -51,6 +53,9 @@ public class CocheEntity { this.piloto = piloto; } + public String getImage() { + return image; + } @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/main/java/com/ims/rallyModels/modelo/CompraEntity.java b/src/main/java/com/ims/rallyModels/modelo/CompraEntity.java index fa85523..eb66db5 100644 --- a/src/main/java/com/ims/rallyModels/modelo/CompraEntity.java +++ b/src/main/java/com/ims/rallyModels/modelo/CompraEntity.java @@ -1,10 +1,16 @@ package com.ims.rallyModels.modelo; +import com.ims.rallyModels.servicio.UserDetailsImpl; import jakarta.persistence.*; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.sql.Date; +import java.util.ArrayList; +import java.util.List; @Entity +@EntityListeners(AuditingEntityListener.class)//para la auto fecha @Table(name = "compra", schema = "proyecto", catalog = "") public class CompraEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -24,10 +30,39 @@ public class CompraEntity { @Column(name = "fk_idMetodos_Pago", nullable = false) private int fkIdMetodosPago; + @OneToMany + private List productos; + @ManyToOne + private UserModel usuario; + + @ManyToOne + private MetodosPagoEntity metodoPago; + + public List getProductos() { + return productos; + } + + public MetodosPagoEntity getMetodoPago() { + return metodoPago; + } + + public CompraEntity() { + productos = new ArrayList<>(); + usuario = new UserDetailsImpl(usuario).getUser(); + } + + public UserModel getUsuario() { + return usuario; + } + public int getIdCompra() { return idCompra; } + public void setUsuario(UserModel usuario) { + this.usuario = usuario; + } + public void setIdCompra(int idCompra) { this.idCompra = idCompra; } diff --git a/src/main/java/com/ims/rallyModels/modelo/MaquetaEntity.java b/src/main/java/com/ims/rallyModels/modelo/MaquetaEntity.java index ff12b6c..4a55f03 100644 --- a/src/main/java/com/ims/rallyModels/modelo/MaquetaEntity.java +++ b/src/main/java/com/ims/rallyModels/modelo/MaquetaEntity.java @@ -12,20 +12,74 @@ public class MaquetaEntity { @Basic @Column(name = "descripcion", nullable = true, length = 45) private String descripcion; - @Basic - @Column(name = "precio", nullable = true, precision = 0) - private Double precio; + private String marca; + private String modelo; + private String piloto; + private String image; + @ManyToOne + private CompraEntity compra; @Basic @Column(name = "fk_idCompeticion", nullable = false) private int fkIdCompeticion; - @Basic - @Column(name = "fk_idCoche", nullable = false) - private int fkIdCoche; + @Basic + @Column(name = "precio", nullable = true, precision = 0) + private Double precio; + + @ManyToOne + private CompeticionEntity competicion; + public MaquetaEntity() { } + public MaquetaEntity(String descripcion, Double precio) { + this.descripcion = descripcion; + this.precio = precio; + } + + public MaquetaEntity(String descripcion, CompraEntity compra, Double precio) { + this.descripcion = descripcion; + this.compra = compra; + this.precio = precio; + } + + public String getMarca() { + return marca; + } + + public void setMarca(String marca) { + this.marca = marca; + } + + public String getModelo() { + return modelo; + } + + public void setModelo(String modelo) { + this.modelo = modelo; + } + + public String getPiloto() { + return piloto; + } + + public void setPiloto(String piloto) { + this.piloto = piloto; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public void setCompeticion(CompeticionEntity competicion) { + this.competicion = competicion; + } + public int getIdMaqueta() { return idMaqueta; } @@ -58,12 +112,32 @@ public class MaquetaEntity { this.fkIdCompeticion = fkIdCompeticion; } - public int getFkIdCoche() { - return fkIdCoche; + public CompeticionEntity getCompeticion() { + return competicion; } - public void setFkIdCoche(int fkIdCoche) { - this.fkIdCoche = fkIdCoche; + public CompraEntity getCompra() { + return compra; + } + + public void setCompra(CompraEntity compra) { + this.compra = compra; + } + + @Override + public String toString() { + return "MaquetaEntity{" + + "idMaqueta=" + idMaqueta + + ", descripcion='" + descripcion + '\'' + + ", marca='" + marca + '\'' + + ", modelo='" + modelo + '\'' + + ", piloto='" + piloto + '\'' + + ", image='" + image + '\'' + + ", compra=" + compra + + ", fkIdCompeticion=" + fkIdCompeticion + + ", precio=" + precio + + ", competicion=" + competicion + + '}'; } @Override @@ -75,7 +149,6 @@ public class MaquetaEntity { if (idMaqueta != that.idMaqueta) return false; if (fkIdCompeticion != that.fkIdCompeticion) return false; - if (fkIdCoche != that.fkIdCoche) return false; if (descripcion != null ? !descripcion.equals(that.descripcion) : that.descripcion != null) return false; if (precio != null ? !precio.equals(that.precio) : that.precio != null) return false; @@ -88,7 +161,6 @@ public class MaquetaEntity { result = 31 * result + (descripcion != null ? descripcion.hashCode() : 0); result = 31 * result + (precio != null ? precio.hashCode() : 0); result = 31 * result + fkIdCompeticion; - result = 31 * result + fkIdCoche; return result; } } diff --git a/src/main/java/com/ims/rallyModels/modelo/UserModel.java b/src/main/java/com/ims/rallyModels/modelo/UserModel.java new file mode 100644 index 0000000..ac97b01 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/modelo/UserModel.java @@ -0,0 +1,97 @@ +package com.ims.rallyModels.modelo; + +import jakarta.persistence.*; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.util.Date; +import java.util.Objects; + +@Entity +@EntityListeners(AuditingEntityListener.class) +public class UserModel { + + @Id + @GeneratedValue + private long id; + private String email; + private String password; + + private String name; + private String surname; + + @CreatedDate + @Temporal(TemporalType.TIMESTAMP) + private Date createdDate; + + public UserModel() { } + + + public UserModel(String name, String surname, String email, String password) { + this.name = name; + this.surname = surname; + this.email = email; + this.password = password; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } + + public String getSurname() { + return surname; + } + + public Date getCreatedDate() { + return createdDate; + } + + public String getEmail() { + return email; + } + + public String getPassword() { + return password; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + UserModel user = (UserModel) o; + return id == user.id && email.equals(user.email); + } + + @Override + public int hashCode() { + return Objects.hash(id, email); + } + + public void setPassword(String password) { + this.password = password; + } + + public void setId(long id) { + this.id = id; + } + + public void setEmail(String email) { + this.email = email; + } + + public void setName(String name) { + this.name = name; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public void setCreatedDate(Date createdDate) { + this.createdDate = createdDate; + } +} \ No newline at end of file diff --git a/src/main/java/com/ims/rallyModels/modelo/UsuarioEntity.java b/src/main/java/com/ims/rallyModels/modelo/UsuarioEntity.java index c68e847..1ccff21 100644 --- a/src/main/java/com/ims/rallyModels/modelo/UsuarioEntity.java +++ b/src/main/java/com/ims/rallyModels/modelo/UsuarioEntity.java @@ -1,8 +1,10 @@ package com.ims.rallyModels.modelo; import jakarta.persistence.*; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; @Entity +@EntityListeners(AuditingEntityListener.class) @Table(name = "usuario", schema = "proyecto", catalog = "") public class UsuarioEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -13,8 +15,30 @@ public class UsuarioEntity { @Column(name = "nombre", nullable = true, length = 45) private String nombre; @Basic - @Column(name = "contrasena", nullable = true, length = 45) - private String contrasena; + @Column(name = "password", nullable = true, length = 150) + private String password; + @Basic + @Column(name = "sudo", nullable = true, length = 45) + private String sudo; + + public UsuarioEntity(int idUsuario, String nombre, String password) { + this.idUsuario = idUsuario; + this.nombre = nombre; + this.password = password; + this.sudo = "USER"; + } + + public UsuarioEntity(String nombre, String password) { + this.nombre = nombre; + this.password = password; + this.sudo = "USER"; + } + + public UsuarioEntity() { + super();//anyways + } + + public int getIdUsuario() { return idUsuario; @@ -33,11 +57,17 @@ public class UsuarioEntity { } public String getContrasena() { - return contrasena; + return password; } public void setContrasena(String contrasena) { - this.contrasena = contrasena; + this.password = contrasena; + } + public String getSudo() { + return sudo; + } + public void setSudo(String sudo) { + this.sudo = sudo; } @Override @@ -49,7 +79,7 @@ public class UsuarioEntity { if (idUsuario != that.idUsuario) return false; if (nombre != null ? !nombre.equals(that.nombre) : that.nombre != null) return false; - if (contrasena != null ? !contrasena.equals(that.contrasena) : that.contrasena != null) return false; + if (password != null ? !password.equals(that.password) : that.password != null) return false; return true; } @@ -58,7 +88,7 @@ public class UsuarioEntity { public int hashCode() { int result = idUsuario; result = 31 * result + (nombre != null ? nombre.hashCode() : 0); - result = 31 * result + (contrasena != null ? contrasena.hashCode() : 0); + result = 31 * result + (password != null ? password.hashCode() : 0); return result; } } diff --git a/src/main/java/com/ims/rallyModels/reportes/FacturaExporterExcel.java b/src/main/java/com/ims/rallyModels/reportes/FacturaExporterExcel.java new file mode 100644 index 0000000..1e89f3f --- /dev/null +++ b/src/main/java/com/ims/rallyModels/reportes/FacturaExporterExcel.java @@ -0,0 +1,104 @@ +package com.ims.rallyModels.reportes; + +import com.ims.rallyModels.modelo.MaquetaEntity; + +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFFont; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public class FacturaExporterExcel { + + private XSSFWorkbook libro; + private XSSFSheet hoja; + + private List maquetas; + + public FacturaExporterExcel(List maquetas) { + this.maquetas = maquetas; + libro = new XSSFWorkbook(); + hoja = libro.createSheet("Maquetas"); + } + + private void escribirCabeceraTabla() { + Row fila = hoja.createRow(0); + + CellStyle estilo = libro.createCellStyle(); + XSSFFont fuente = libro.createFont(); + fuente.setBold(true); + fuente.setFontHeight(16); + estilo.setFont(fuente); + + Cell celda = fila.createCell(0); + celda.setCellValue("Id"); + celda.setCellStyle(estilo); + + celda = fila.createCell(1); + celda.setCellValue("Coche"); + celda.setCellStyle(estilo); + + celda = fila.createCell(2); + celda.setCellValue("Piloto"); + celda.setCellStyle(estilo); + + celda = fila.createCell(3); + celda.setCellValue("Precio"); + celda.setCellStyle(estilo); + + } + + public void escribirDatosDeTabla() { + int numeroFilas = 1; + + CellStyle estilo = libro.createCellStyle(); + XSSFFont fuente = libro.createFont(); + fuente.setFontHeight(14); + estilo.setFont(fuente); + + for (MaquetaEntity m : maquetas) { + Row fila = hoja.createRow(numeroFilas++); + + Cell celda = fila.createCell(0); + celda.setCellValue(m.getIdMaqueta()); + hoja.autoSizeColumn(0); + celda.setCellStyle(estilo); + + celda = fila.createCell(1); + celda.setCellValue(m.getMarca()+" "+m.getModelo()); + hoja.autoSizeColumn(1); + celda.setCellStyle(estilo); + + celda = fila.createCell(2); + celda.setCellValue(m.getPiloto()); + hoja.autoSizeColumn(2); + celda.setCellStyle(estilo); + + celda = fila.createCell(3); + celda.setCellValue(m.getPrecio()); + hoja.autoSizeColumn(3); + celda.setCellStyle(estilo); + + } + + } + + public void exportar(HttpServletResponse response) throws IOException { + escribirCabeceraTabla(); + escribirDatosDeTabla(); + + ServletOutputStream outputStream = response.getOutputStream(); + libro.write(outputStream); + libro.close(); + outputStream.close(); + + } + +} diff --git a/src/main/java/com/ims/rallyModels/reportes/FacturaExporterPDF.java b/src/main/java/com/ims/rallyModels/reportes/FacturaExporterPDF.java new file mode 100644 index 0000000..294b55a --- /dev/null +++ b/src/main/java/com/ims/rallyModels/reportes/FacturaExporterPDF.java @@ -0,0 +1,87 @@ +package com.ims.rallyModels.reportes; + +import com.ims.rallyModels.modelo.CompraEntity; +import com.ims.rallyModels.modelo.MaquetaEntity; +import com.lowagie.text.*; +import com.lowagie.text.Font; +import com.lowagie.text.pdf.PdfPCell; +import com.lowagie.text.pdf.PdfPTable; +import com.lowagie.text.pdf.PdfWriter; +import jakarta.servlet.http.HttpServletResponse; + +import java.awt.*; +import java.io.IOException; +import java.util.List; + +public class FacturaExporterPDF { + + + private List compra; + + public FacturaExporterPDF(List compra) { + super(); + this.compra = compra; + } + + private void escribirCabeceraDeLaTabla(PdfPTable tabla) { + PdfPCell cell = new PdfPCell(); + + cell.setBackgroundColor(Color.LIGHT_GRAY); + cell.setPadding(5); + + Font fuente = FontFactory.getFont(FontFactory.HELVETICA); + fuente.setColor(Color.WHITE); + + cell.setPhrase(new Phrase("Id",fuente)); + tabla.addCell(cell); + + cell.setPhrase(new Phrase("Coche",fuente)); + tabla.addCell(cell); + + cell.setPhrase(new Phrase("Piloto",fuente)); + tabla.addCell(cell); + + cell.setPhrase(new Phrase("Precio",fuente)); + tabla.addCell(cell); + + } + + private void escribirDatosDeLaTable(PdfPTable table) { + for (MaquetaEntity m : compra) { + table.addCell(String.valueOf(m.getIdMaqueta())); + table.addCell(m.getMarca()+" "+m.getModelo()); + table.addCell(m.getPiloto()); + table.addCell(m.getPrecio().toString()); + } + } + + public void exportar(HttpServletResponse response) throws IOException { + Document documento = new Document(PageSize.A4); + PdfWriter.getInstance(documento,response.getOutputStream()); + + documento.open(); + + Font fuente = FontFactory.getFont(FontFactory.HELVETICA); + fuente.setColor(Color.RED); + fuente.setSize(18); + + Paragraph titulo = new Paragraph("Factura de maquetas", fuente); + titulo.setAlignment(Paragraph.ALIGN_CENTER); + documento.add(titulo); + + PdfPTable tabla = new PdfPTable(4); + tabla.setWidthPercentage(100); + tabla.setSpacingBefore(15); + tabla.setWidths(new float[] {1f,2.3f,2.3f,2.3f}); + tabla.setWidthPercentage(110); + + escribirCabeceraDeLaTabla(tabla); + escribirDatosDeLaTable(tabla); + + documento.add(tabla); + + documento.close(); + + } + +} diff --git a/src/main/java/com/ims/rallyModels/repositorio/ICocheRepositorio.java b/src/main/java/com/ims/rallyModels/repositorio/ICocheRepositorio.java new file mode 100644 index 0000000..06f0518 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/repositorio/ICocheRepositorio.java @@ -0,0 +1,9 @@ +package com.ims.rallyModels.repositorio; + +import com.ims.rallyModels.modelo.CocheEntity; +import jdk.jfr.Registered; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ICocheRepositorio extends JpaRepository {} diff --git a/src/main/java/com/ims/rallyModels/repositorio/ICompeticionRepositorio.java b/src/main/java/com/ims/rallyModels/repositorio/ICompeticionRepositorio.java new file mode 100644 index 0000000..0ac3cc9 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/repositorio/ICompeticionRepositorio.java @@ -0,0 +1,9 @@ +package com.ims.rallyModels.repositorio; + +import com.ims.rallyModels.modelo.CompeticionEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ICompeticionRepositorio extends JpaRepository { +} diff --git a/src/main/java/com/ims/rallyModels/repositorio/IUsuarioRepositorio.java b/src/main/java/com/ims/rallyModels/repositorio/ICompraRepositorio.java similarity index 57% rename from src/main/java/com/ims/rallyModels/repositorio/IUsuarioRepositorio.java rename to src/main/java/com/ims/rallyModels/repositorio/ICompraRepositorio.java index c88f60c..05f37ea 100644 --- a/src/main/java/com/ims/rallyModels/repositorio/IUsuarioRepositorio.java +++ b/src/main/java/com/ims/rallyModels/repositorio/ICompraRepositorio.java @@ -1,10 +1,11 @@ package com.ims.rallyModels.repositorio; +import com.ims.rallyModels.modelo.CompraEntity; import com.ims.rallyModels.modelo.MaquetaEntity; import com.ims.rallyModels.modelo.UsuarioEntity; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -@Repository -public interface IUsuarioRepositorio extends JpaRepository { +import java.util.List; + +public interface ICompraRepositorio extends JpaRepository { } diff --git a/src/main/java/com/ims/rallyModels/repositorio/IMaquetasRepositorio.java b/src/main/java/com/ims/rallyModels/repositorio/IMaquetasRepositorio.java index 7570807..49818e5 100644 --- a/src/main/java/com/ims/rallyModels/repositorio/IMaquetasRepositorio.java +++ b/src/main/java/com/ims/rallyModels/repositorio/IMaquetasRepositorio.java @@ -1,8 +1,16 @@ package com.ims.rallyModels.repositorio; +import com.ims.rallyModels.modelo.CompraEntity; import com.ims.rallyModels.modelo.MaquetaEntity; +import com.ims.rallyModels.modelo.UserModel; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface IMaquetasRepositorio extends JpaRepository { } +public interface IMaquetasRepositorio extends JpaRepository { + + List findByCompra(CompraEntity c); + +} diff --git a/src/main/java/com/ims/rallyModels/repositorio/IUserRepository.java b/src/main/java/com/ims/rallyModels/repositorio/IUserRepository.java new file mode 100644 index 0000000..f1a59c8 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/repositorio/IUserRepository.java @@ -0,0 +1,12 @@ +package com.ims.rallyModels.repositorio; + +import com.ims.rallyModels.modelo.MaquetaEntity; +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.modelo.UsuarioEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +public interface IUserRepository extends JpaRepository { + UserModel findByEmail(String email); +} diff --git a/src/main/java/com/ims/rallyModels/security/SecurityConfig.java b/src/main/java/com/ims/rallyModels/security/SecurityConfig.java new file mode 100644 index 0000000..8eff8ff --- /dev/null +++ b/src/main/java/com/ims/rallyModels/security/SecurityConfig.java @@ -0,0 +1,55 @@ +package com.ims.rallyModels.security; + +import com.ims.rallyModels.servicio.UsuarioServicioImpl; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; + +@Configuration +@EnableWebSecurity +public class SecurityConfig { + + @Bean + public UsuarioServicioImpl userDetailsService(){ + return new UsuarioServicioImpl(); + } + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Bean + public DaoAuthenticationProvider authenticationProvider() { + DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(); + + authProvider.setUserDetailsService(userDetailsService()); + authProvider.setPasswordEncoder(passwordEncoder()); + + return authProvider; + } + + + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http + .authorizeHttpRequests() + .requestMatchers("/user").authenticated() + .anyRequest().permitAll() + .and() + .formLogin() + .usernameParameter("email") + .loginPage("/login") + .defaultSuccessUrl("/public/maquetas") + .permitAll() + .and() + .logout().logoutSuccessUrl("/login").permitAll(); + + return http.build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/ims/rallyModels/servicio/IUsuarioServicio.java b/src/main/java/com/ims/rallyModels/servicio/IUsuarioServicio.java deleted file mode 100644 index 9ab2d69..0000000 --- a/src/main/java/com/ims/rallyModels/servicio/IUsuarioServicio.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ims.rallyModels.servicio; - -import com.ims.rallyModels.modelo.UsuarioEntity; - -import java.util.List; - -public interface IUsuarioServicio { - - public List listAll(); - -} diff --git a/src/main/java/com/ims/rallyModels/servicio/UserDetailsImpl.java b/src/main/java/com/ims/rallyModels/servicio/UserDetailsImpl.java new file mode 100644 index 0000000..717f732 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/UserDetailsImpl.java @@ -0,0 +1,58 @@ +package com.ims.rallyModels.servicio; + +import com.ims.rallyModels.modelo.CompraEntity; +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.modelo.UsuarioEntity; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.Collection; +import java.util.List; + +public class UserDetailsImpl implements UserDetails { + + private UserModel user; + + public UserDetailsImpl(UserModel user) { + this.user = user; + } + + @Override + public Collection getAuthorities() { + return null; + } + + @Override + public String getPassword() { + return user.getPassword(); + } + + public UserModel getUser() { + return user; + } + + @Override + public String getUsername() { + return user.getEmail(); + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +} \ No newline at end of file diff --git a/src/main/java/com/ims/rallyModels/servicio/UsuarioServicioImpl.java b/src/main/java/com/ims/rallyModels/servicio/UsuarioServicioImpl.java index 88031eb..27cd769 100644 --- a/src/main/java/com/ims/rallyModels/servicio/UsuarioServicioImpl.java +++ b/src/main/java/com/ims/rallyModels/servicio/UsuarioServicioImpl.java @@ -1,20 +1,51 @@ package com.ims.rallyModels.servicio; -import com.ims.rallyModels.modelo.UsuarioEntity; -import com.ims.rallyModels.repositorio.IMaquetasRepositorio; -import com.ims.rallyModels.repositorio.IUsuarioRepositorio; +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.repositorio.IUserRepository; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; -import java.util.List; - -public class UsuarioServicioImpl implements IUsuarioServicio{ +import java.util.Collection; +import java.util.stream.Collectors; +@Service +public class UsuarioServicioImpl implements UserDetailsService { +//may cons @Autowired - private IUsuarioRepositorio repositorio; - + private IUserRepository userRepo; @Override - public List listAll() { - return repositorio.findAll(); + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + UserModel user = userRepo.findByEmail(username); + if (user == null) { + throw new UsernameNotFoundException("User not found"); + } + return new UserDetailsImpl(user); } + + /*@Override + public UsuarioEntity buscarPorNombre(String nombre) { + return repositorio.findByName(nombre); + }*/ +/* + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + UsuarioEntity usuario = repositorio.findByNombre(username); + if (usuario == null) { + throw new UsernameNotFoundException("Usuario o password inválidos");; + } + return new UsuarioEntity(usuario.getNombre(), usuario.getContrasena(), mapearAutoridadesRoles(usuario.getSudo())); + }*/ + + /*@Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + UsuarioEntity user = repositorio.findByNombre(username); + if (user == null) { + throw new UsernameNotFoundException("User not found"); + } + return new UserDetailsImpl(user); + }*/ } diff --git a/src/main/java/com/ims/rallyModels/servicio/coche/CocheServicioImpl.java b/src/main/java/com/ims/rallyModels/servicio/coche/CocheServicioImpl.java new file mode 100644 index 0000000..1e1c947 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/coche/CocheServicioImpl.java @@ -0,0 +1,42 @@ +package com.ims.rallyModels.servicio.coche; + +import com.ims.rallyModels.modelo.CocheEntity; +import com.ims.rallyModels.repositorio.ICocheRepositorio; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CocheServicioImpl implements ICocheServicio { + + @Autowired + private ICocheRepositorio repositorio; + + @Override + public List listAll() { + return repositorio.findAll(); + } + + @Override + public CocheEntity guardarCoche(CocheEntity maqueta) { + return repositorio.save(maqueta); + } + + @Override + public CocheEntity obtenerCochePorId(Integer id) { + return repositorio.findById(id).get(); + } + + @Override + public CocheEntity actualizarCoche(CocheEntity maqueta) { + //primero se busca y luego se edita y guarda + return repositorio.save(maqueta); + } + + @Override + public void eliminarCoches(Integer id) { + repositorio.deleteById(id); + } + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/coche/ICocheServicio.java b/src/main/java/com/ims/rallyModels/servicio/coche/ICocheServicio.java new file mode 100644 index 0000000..fc5f0d0 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/coche/ICocheServicio.java @@ -0,0 +1,20 @@ +package com.ims.rallyModels.servicio.coche; + +import com.ims.rallyModels.modelo.CocheEntity; +import com.ims.rallyModels.modelo.MaquetaEntity; + +import java.util.List; + +public interface ICocheServicio { + + public List listAll(); + + public CocheEntity guardarCoche(CocheEntity maqueta); + + public CocheEntity obtenerCochePorId(Integer id); + + public CocheEntity actualizarCoche(CocheEntity maqueta); + + public void eliminarCoches(Integer id); + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/competicion/CompeticionServicioImpl.java b/src/main/java/com/ims/rallyModels/servicio/competicion/CompeticionServicioImpl.java new file mode 100644 index 0000000..c69e627 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/competicion/CompeticionServicioImpl.java @@ -0,0 +1,40 @@ +package com.ims.rallyModels.servicio.competicion; + +import com.ims.rallyModels.modelo.CompeticionEntity; +import com.ims.rallyModels.repositorio.ICompeticionRepositorio; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CompeticionServicioImpl implements ICompeticionService { + + @Autowired + private ICompeticionRepositorio repositorio; + + @Override + public List listAll() { + return repositorio.findAll(); + } + + @Override + public CompeticionEntity guardarCompeticion(CompeticionEntity competicion) { + return repositorio.save(competicion); + } + + @Override + public CompeticionEntity obtenerCompeticionPorId(Integer id) { + return repositorio.findById(id).get(); + } + + @Override + public CompeticionEntity actualizarCompeticion(CompeticionEntity competicion) { + return repositorio.save(competicion); + } + + @Override + public void eliminarCompeticion(Integer id) { + repositorio.deleteById(id); + } +} diff --git a/src/main/java/com/ims/rallyModels/servicio/competicion/ICompeticionService.java b/src/main/java/com/ims/rallyModels/servicio/competicion/ICompeticionService.java new file mode 100644 index 0000000..d4b0783 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/competicion/ICompeticionService.java @@ -0,0 +1,19 @@ +package com.ims.rallyModels.servicio.competicion; + +import com.ims.rallyModels.modelo.CompeticionEntity; + +import java.util.List; + +public interface ICompeticionService { + + public List listAll(); + + public CompeticionEntity guardarCompeticion(CompeticionEntity competicion); + + public CompeticionEntity obtenerCompeticionPorId(Integer id); + + public CompeticionEntity actualizarCompeticion(CompeticionEntity competicion); + + public void eliminarCompeticion(Integer id); + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/compra/CompraServicioImpl.java b/src/main/java/com/ims/rallyModels/servicio/compra/CompraServicioImpl.java new file mode 100644 index 0000000..8bed22d --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/compra/CompraServicioImpl.java @@ -0,0 +1,71 @@ +package com.ims.rallyModels.servicio.compra; + +import com.ims.rallyModels.modelo.CompraEntity; +import com.ims.rallyModels.modelo.MaquetaEntity; +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.modelo.UsuarioEntity; +import com.ims.rallyModels.repositorio.ICompraRepositorio; +import com.ims.rallyModels.servicio.maqueta.IMaquetasServicio; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CompraServicioImpl implements ICompraServicio { + + @Autowired + private ICompraRepositorio repositorio; + + @Autowired + IMaquetasServicio maquetasServicio; + + @Override + public List listAll() { + return repositorio.findAll(); + } + + @Override + public CompraEntity guardarCompra(CompraEntity compra) { + return repositorio.save(compra); + } + + @Override + public CompraEntity insertar(CompraEntity c, UserModel u) { + c.setUsuario(u); + return repositorio.save(c); + } + + @Override + public CompraEntity obtenerCompraPorId(Integer id) { + return repositorio.findById(id).get(); + } + + @Override + public CompraEntity actualizarCompra(CompraEntity compra) { + return repositorio.save(compra); + } + + @Override + public void eliminarCompra(Integer id) { + repositorio.deleteById(id); + } + + @Override + public List findByPropietario(UsuarioEntity propietario) { + return null; + } + + @Override + public MaquetaEntity addMaquetaCompra(MaquetaEntity p, CompraEntity c) { + p.setCompra(c); + return maquetasServicio.actualizarMaqueta(p); + } + + @Override + public void addMaquetaCompraTest(MaquetaEntity p, CompraEntity c) { + c.getProductos().add(p); + } + + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/compra/ICompraServicio.java b/src/main/java/com/ims/rallyModels/servicio/compra/ICompraServicio.java new file mode 100644 index 0000000..188dd0c --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/compra/ICompraServicio.java @@ -0,0 +1,30 @@ +package com.ims.rallyModels.servicio.compra; + +import com.ims.rallyModels.modelo.CompraEntity; +import com.ims.rallyModels.modelo.MaquetaEntity; +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.modelo.UsuarioEntity; + +import java.util.List; + +public interface ICompraServicio { + public List listAll(); + + public CompraEntity guardarCompra(CompraEntity compra); + + public CompraEntity insertar(CompraEntity c, UserModel u); + + public CompraEntity obtenerCompraPorId(Integer id); + + public CompraEntity actualizarCompra(CompraEntity compra); + + public void eliminarCompra(Integer id); + + public List findByPropietario(UsuarioEntity propietario); + + public MaquetaEntity addMaquetaCompra(MaquetaEntity p, CompraEntity c); + + public void addMaquetaCompraTest(MaquetaEntity p, CompraEntity c); + + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/img/FileSystemStorageService.java b/src/main/java/com/ims/rallyModels/servicio/img/FileSystemStorageService.java new file mode 100644 index 0000000..726bf5a --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/img/FileSystemStorageService.java @@ -0,0 +1,168 @@ +package com.ims.rallyModels.servicio.img; + +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.stream.Stream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.stereotype.Service; +import org.springframework.util.FileSystemUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + + +/** + * Implementación de un {@link StorageService} que almacena + * los ficheros subidos dentro del servidor donde se ha desplegado + * la apliacación. + * + * ESTO SE REALIZA ASÍ PARA NO HACER MÁS COMPLEJO EL EJEMPLO. + * EN UNA APLICACIÓN EN PRODUCCIÓN POSIBLEMENTE SE UTILICE + * UN ALMACÉN REMOTO. + * + * + * @author Equipo de desarrollo de Spring + * + */ +@Service +public class FileSystemStorageService implements StorageService{ + + // Directorio raiz de nuestro almacén de ficheros + private final Path rootLocation; + + + @Autowired + public FileSystemStorageService(StorageProperties properties) { + this.rootLocation = Paths.get(properties.getLocation()); + } + + + /** + * Método que almacena un fichero en el almacenamiento secundario + * desde un objeto de tipo {@link org.springframework.web.multipart#} MultipartFile + * + * Modificamos el original del ejemplo de Spring para cambiar el nombre + * del fichero a almacenar. Como lo asociamos al Empleado que se ha + * dado de alta, usaremos el ID de empleado como nombre de fichero. + * + */ + @Override + public String store(MultipartFile file) { + String filename = null; + try { + filename = StringUtils.cleanPath(file.getResource().getURL().toString()); + } catch (IOException e) { + throw new RuntimeException(e); + } + String extension = StringUtils.getFilenameExtension(filename); + String justFilename = filename.replace("."+extension, ""); + String storedFilename = System.currentTimeMillis() + "_" + justFilename + "." + extension; + try { + try (InputStream inputStream = file.getInputStream()) { + Files.copy(inputStream, this.rootLocation.resolve(storedFilename), + StandardCopyOption.REPLACE_EXISTING); + return storedFilename; + } catch (IOException e) { + throw new RuntimeException(e); + } + } finally { + + } + + } + + /** + * Método que devuelve la ruta de todos los ficheros que hay + * en el almacenamiento secundario del proyecto. + */ + @Override + public Stream loadAll() { + try { + return Files.walk(this.rootLocation, 1) + .filter(path -> !path.equals(this.rootLocation)) + .map(this.rootLocation::relativize); + } + catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + /** + * Método que es capaz de cargar un fichero a partir de su nombre + * Devuelve un objeto de tipo Path + */ + @Override + public Path load(String filename) { + return rootLocation.resolve(filename); + } + + + /** + * Método que es capaz de cargar un fichero a partir de su nombre + * Devuelve un objeto de tipo Resource + */ + @Override + public Resource loadAsResource(String filename) { + try { + Path file = load(filename); + Resource resource = new UrlResource(file.toUri()); + if (resource.exists() || resource.isReadable()) { + return resource; + } + + + } + catch (MalformedURLException e) { + e.printStackTrace(); + } + + return null; + } + + + /** + * Método que elimina todos los ficheros del almacenamiento + * secundario del proyecto. + */ + @Override + public void deleteAll() { + FileSystemUtils.deleteRecursively(rootLocation.toFile()); + } + + + /** + * Método que inicializa el almacenamiento secundario del proyecto + */ + @Override + public void init() { + try { + Files.createDirectories(rootLocation); + } + catch (IOException e) { + e.printStackTrace(); + } + } + + + @Override + public void delete(String filename) { + String justFilename = StringUtils.getFilename(filename); + try { + Path file = load(justFilename); + Files.deleteIfExists(file); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/img/StorageProperties.java b/src/main/java/com/ims/rallyModels/servicio/img/StorageProperties.java new file mode 100644 index 0000000..263aaf0 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/img/StorageProperties.java @@ -0,0 +1,20 @@ +package com.ims.rallyModels.servicio.img; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Service; + +@Service +public class StorageProperties { + + + private String location = "upload-dir"; + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/img/StorageService.java b/src/main/java/com/ims/rallyModels/servicio/img/StorageService.java new file mode 100644 index 0000000..798c1d1 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/img/StorageService.java @@ -0,0 +1,27 @@ +package com.ims.rallyModels.servicio.img; + +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.nio.file.Path; +import java.util.stream.Stream; + +@Service +public interface StorageService { + + void init(); + + String store(MultipartFile file); + + Stream loadAll(); + + Path load(String filename); + + Resource loadAsResource(String filename); + + void delete(String filename); + + void deleteAll(); + +} diff --git a/src/main/java/com/ims/rallyModels/servicio/IMaquetasServicio.java b/src/main/java/com/ims/rallyModels/servicio/maqueta/IMaquetasServicio.java similarity index 65% rename from src/main/java/com/ims/rallyModels/servicio/IMaquetasServicio.java rename to src/main/java/com/ims/rallyModels/servicio/maqueta/IMaquetasServicio.java index f2c6703..65e1a6d 100644 --- a/src/main/java/com/ims/rallyModels/servicio/IMaquetasServicio.java +++ b/src/main/java/com/ims/rallyModels/servicio/maqueta/IMaquetasServicio.java @@ -1,7 +1,6 @@ -package com.ims.rallyModels.servicio; +package com.ims.rallyModels.servicio.maqueta; -import com.ims.rallyModels.modelo.MaquetaEntity; -import com.ims.rallyModels.modelo.UsuarioEntity; +import com.ims.rallyModels.modelo.*; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -18,4 +17,8 @@ public interface IMaquetasServicio { public void eliminarMaquetas(Integer id); + public List variosPorId(List ids); + + public List productosDeUnaCompra(CompraEntity c); + } diff --git a/src/main/java/com/ims/rallyModels/servicio/MaquetasServicioImpl.java b/src/main/java/com/ims/rallyModels/servicio/maqueta/MaquetasServicioImpl.java similarity index 71% rename from src/main/java/com/ims/rallyModels/servicio/MaquetasServicioImpl.java rename to src/main/java/com/ims/rallyModels/servicio/maqueta/MaquetasServicioImpl.java index f7ba2ee..ee44d84 100644 --- a/src/main/java/com/ims/rallyModels/servicio/MaquetasServicioImpl.java +++ b/src/main/java/com/ims/rallyModels/servicio/maqueta/MaquetasServicioImpl.java @@ -1,5 +1,7 @@ -package com.ims.rallyModels.servicio; +package com.ims.rallyModels.servicio.maqueta; +import com.ims.rallyModels.modelo.CocheEntity; +import com.ims.rallyModels.modelo.CompraEntity; import com.ims.rallyModels.modelo.MaquetaEntity; import com.ims.rallyModels.repositorio.IMaquetasRepositorio; import org.springframework.beans.factory.annotation.Autowired; @@ -39,4 +41,14 @@ public class MaquetasServicioImpl implements IMaquetasServicio { repositorio.deleteById(id); } + @Override + public List variosPorId(List ids) { + return repositorio.findAllById(ids); + } + + @Override + public List productosDeUnaCompra(CompraEntity c) { + return repositorio.findByCompra(c); + } + } diff --git a/src/main/java/com/ims/rallyModels/servicio/userMng/IUsuarioServicio.java b/src/main/java/com/ims/rallyModels/servicio/userMng/IUsuarioServicio.java new file mode 100644 index 0000000..35e611f --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/userMng/IUsuarioServicio.java @@ -0,0 +1,11 @@ +package com.ims.rallyModels.servicio.userMng; + +import com.ims.rallyModels.modelo.CompraEntity; +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.modelo.UsuarioEntity; + +import java.util.List; + +public interface IUsuarioServicio { + public UserModel findByNombre(String nombre); +} diff --git a/src/main/java/com/ims/rallyModels/servicio/userMng/UserServImpl.java b/src/main/java/com/ims/rallyModels/servicio/userMng/UserServImpl.java new file mode 100644 index 0000000..57ee3b4 --- /dev/null +++ b/src/main/java/com/ims/rallyModels/servicio/userMng/UserServImpl.java @@ -0,0 +1,24 @@ +package com.ims.rallyModels.servicio.userMng; + +import com.ims.rallyModels.modelo.UserModel; +import com.ims.rallyModels.repositorio.IUserRepository; +import com.ims.rallyModels.servicio.userMng.IUsuarioServicio; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserServImpl implements IUsuarioServicio { + + @Autowired + IUserRepository repositorio; + + @Override + public UserModel findByNombre(String nombre) { + return null; + } + + public UserModel findById(int id) { + return repositorio.findById(id).get(); + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 0952ce8..9813921 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,10 +3,14 @@ spring.datasource.username=proyecto spring.datasource.password=1234 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver # none, validate, update, create-drop may be created - spring.jpa.hibernate.ddl-auto=none +spring.jpa.hibernate.ddl-auto=update server.port=2614 #spring.jpa.hibernate.ddl-auto=none spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true -#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect \ No newline at end of file +#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect + +#Security +logging.level.org.sql=debug +logging.level.org.type=trace \ No newline at end of file diff --git a/src/main/resources/static/css/shoppingCart.css b/src/main/resources/static/css/shoppingCart.css new file mode 100644 index 0000000..ec5861a --- /dev/null +++ b/src/main/resources/static/css/shoppingCart.css @@ -0,0 +1,43 @@ +@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@200&display=swap'); + +body { + font-family: 'Manrope', sans-serif; + background:#eee; +} + +.size span { + font-size: 11px; +} + +.color span { + font-size: 11px; +} + +.product-deta { + margin-right: 70px; +} + +.gift-card:focus { + box-shadow: none; +} + +.pay-button { + color: #fff; +} + +.pay-button:hover { + color: #fff; +} + +.pay-button:focus { + color: #fff; + box-shadow: none; +} + +.text-grey { + color: #a39f9f; +} + +.qty i { + font-size: 11px; +} \ No newline at end of file diff --git a/src/main/resources/static/css/styles.css b/src/main/resources/static/css/styles.css index dd0022d..0ab1b74 100644 --- a/src/main/resources/static/css/styles.css +++ b/src/main/resources/static/css/styles.css @@ -1,129 +1,11288 @@ @charset "UTF-8"; +/*! +* Start Bootstrap - Shop Item v5.0.5 (https://startbootstrap.com/template/shop-item) +* Copyright 2013-2022 Start Bootstrap +* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-shop-item/blob/master/LICENSE) +*/ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 255, 255, 255; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-bg: #fff; +} -/* Remove the navbar's default rounded borders and increase the bottom margin */ -.navbar { - height: 50px; - margin-bottom: 50px; - border-radius: 0; +*, +*::before, +*::after { + box-sizing: border-box; } -/* Remove the jumbotron's default bottom margin */ -.banner { - margin-bottom: 0; - height: auto; - width: 100%; - /*background-image: url("templates/img/banner.jpg");*/ - background: #fddb3a; +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } -/* Add a gray background color and some padding to the footer */ -footer { - background-color: #f2f2f2; - padding: 25px; +hr { + margin: 1rem 0; + color: inherit; + background-color: currentColor; + border: 0; + opacity: 0.25; } -.navbar-brand { - background-image: url("templates/img/Rally-Models.png"); +hr:not([size]) { + height: 1px; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} + +h1, .h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + h1, .h1 { + font-size: 2.5rem; + } +} + +h2, .h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + h2, .h2 { + font-size: 2rem; + } } -.logo-image{ - width: 46px; - height: 46px; - overflow: hidden; - margin-top: -6px; +h3, .h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.75rem; + } } +h4, .h4 { + font-size: calc(1.275rem + 0.3vw); +} @media (min-width: 1200px) { - .container { - width: 90%; - max-width: 90%; - } + h4, .h4 { + font-size: 1.5rem; } +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-bs-original-title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: #0d6efd; + text-decoration: underline; +} +a:hover { + color: #0a58ca; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; + direction: ltr /* rtl:ignore */; + unicode-bidi: bidi-override; +} -.panel-heading { - font-size: 18px; - font-weight: bold; +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; } -.precio { - font-size: 18px; - font-weight: bold; - padding-top: 5px; +code { + font-size: 0.875em; + color: #d63384; + word-wrap: break-word; +} +a > code { + color: inherit; } -.panel-producto { - cursor: pointer; +kbd { + padding: 0.2rem 0.4rem; + font-size: 0.875em; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; +} +kbd kbd { + padding: 0; + font-size: 1em; + font-weight: 700; } -/* Estilos para la factura */ +figure { + margin: 0 0 1rem; +} -.invoice-title h2, .invoice-title h3 { - display: inline-block; +img, +svg { + vertical-align: middle; } -.invoice-body .table > tbody > tr > .no-line { - border-top: none; +table { + caption-side: bottom; + border-collapse: collapse; } -.invoice-body .table > thead > tr > .no-line { - border-bottom: none; +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: #6c757d; + text-align: left; } -.invoice-body .table > tbody > tr > .thick-line { - border-top: 2px solid; +th { + text-align: inherit; + text-align: -webkit-match-parent; } +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} +label { + display: inline-block; +} +button { + border-radius: 0; +} +button:focus:not(:focus-visible) { + outline: 0; +} -* { +input, +button, +select, +optgroup, +textarea { margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]::-webkit-calendar-picker-indicator { + display: none; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { padding: 0; - -webkit-box-sizing: border-box; - box-sizing: border-box; + border-style: none; } -.text-center { - font-family: "Microsport"; +textarea { + resize: vertical; +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; } -body { - background: #272727; - font-family: "Microsport"; +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; } -.myNavbar { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; } -.myNavbar a { - color: #f6f4e6; - text-decoration: none; - font-size: 1.2em; +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-webkit-file-upload-button { + font: inherit; +} + +::file-selector-button { + font: inherit; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; text-transform: uppercase; - font-weight: 500; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; +} + +.figure { display: inline-block; - width: 80px; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; } -.myNavbar a:hover { - color: #fddb3a; +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; } -.form-control { - border: #fddb3a; - background: #e6e6e6; +.figure-caption { + font-size: 0.875em; + color: #6c757d; +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + width: 100%; + padding-right: var(--bs-gutter-x, 0.75rem); + padding-left: var(--bs-gutter-x, 0.75rem); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; } -input[type=text]:focus { - border: #fddb3a +.offset-4 { + margin-left: 33.33333333%; } +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-sm-0 { + margin-left: 0; + } + + .offset-sm-1 { + margin-left: 8.33333333%; + } + + .offset-sm-2 { + margin-left: 16.66666667%; + } + + .offset-sm-3 { + margin-left: 25%; + } + + .offset-sm-4 { + margin-left: 33.33333333%; + } + + .offset-sm-5 { + margin-left: 41.66666667%; + } + + .offset-sm-6 { + margin-left: 50%; + } + + .offset-sm-7 { + margin-left: 58.33333333%; + } + + .offset-sm-8 { + margin-left: 66.66666667%; + } + + .offset-sm-9 { + margin-left: 75%; + } + + .offset-sm-10 { + margin-left: 83.33333333%; + } + + .offset-sm-11 { + margin-left: 91.66666667%; + } + + .g-sm-0, +.gx-sm-0 { + --bs-gutter-x: 0; + } + + .g-sm-0, +.gy-sm-0 { + --bs-gutter-y: 0; + } + + .g-sm-1, +.gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + + .g-sm-1, +.gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + + .g-sm-2, +.gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + + .g-sm-2, +.gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + + .g-sm-3, +.gx-sm-3 { + --bs-gutter-x: 1rem; + } + + .g-sm-3, +.gy-sm-3 { + --bs-gutter-y: 1rem; + } + + .g-sm-4, +.gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + + .g-sm-4, +.gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + + .g-sm-5, +.gx-sm-5 { + --bs-gutter-x: 3rem; + } + + .g-sm-5, +.gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-md-0 { + margin-left: 0; + } + + .offset-md-1 { + margin-left: 8.33333333%; + } + + .offset-md-2 { + margin-left: 16.66666667%; + } + + .offset-md-3 { + margin-left: 25%; + } + + .offset-md-4 { + margin-left: 33.33333333%; + } + + .offset-md-5 { + margin-left: 41.66666667%; + } + + .offset-md-6 { + margin-left: 50%; + } + + .offset-md-7 { + margin-left: 58.33333333%; + } + + .offset-md-8 { + margin-left: 66.66666667%; + } + + .offset-md-9 { + margin-left: 75%; + } + + .offset-md-10 { + margin-left: 83.33333333%; + } + + .offset-md-11 { + margin-left: 91.66666667%; + } + + .g-md-0, +.gx-md-0 { + --bs-gutter-x: 0; + } + + .g-md-0, +.gy-md-0 { + --bs-gutter-y: 0; + } + + .g-md-1, +.gx-md-1 { + --bs-gutter-x: 0.25rem; + } + + .g-md-1, +.gy-md-1 { + --bs-gutter-y: 0.25rem; + } + + .g-md-2, +.gx-md-2 { + --bs-gutter-x: 0.5rem; + } + + .g-md-2, +.gy-md-2 { + --bs-gutter-y: 0.5rem; + } + + .g-md-3, +.gx-md-3 { + --bs-gutter-x: 1rem; + } + + .g-md-3, +.gy-md-3 { + --bs-gutter-y: 1rem; + } + + .g-md-4, +.gx-md-4 { + --bs-gutter-x: 1.5rem; + } + + .g-md-4, +.gy-md-4 { + --bs-gutter-y: 1.5rem; + } + + .g-md-5, +.gx-md-5 { + --bs-gutter-x: 3rem; + } + + .g-md-5, +.gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-lg-0 { + margin-left: 0; + } + + .offset-lg-1 { + margin-left: 8.33333333%; + } + + .offset-lg-2 { + margin-left: 16.66666667%; + } + + .offset-lg-3 { + margin-left: 25%; + } + + .offset-lg-4 { + margin-left: 33.33333333%; + } + + .offset-lg-5 { + margin-left: 41.66666667%; + } + + .offset-lg-6 { + margin-left: 50%; + } + + .offset-lg-7 { + margin-left: 58.33333333%; + } + + .offset-lg-8 { + margin-left: 66.66666667%; + } + + .offset-lg-9 { + margin-left: 75%; + } + + .offset-lg-10 { + margin-left: 83.33333333%; + } + + .offset-lg-11 { + margin-left: 91.66666667%; + } + + .g-lg-0, +.gx-lg-0 { + --bs-gutter-x: 0; + } + + .g-lg-0, +.gy-lg-0 { + --bs-gutter-y: 0; + } + + .g-lg-1, +.gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + + .g-lg-1, +.gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + + .g-lg-2, +.gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + + .g-lg-2, +.gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + + .g-lg-3, +.gx-lg-3 { + --bs-gutter-x: 1rem; + } + + .g-lg-3, +.gy-lg-3 { + --bs-gutter-y: 1rem; + } + + .g-lg-4, +.gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + + .g-lg-4, +.gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + + .g-lg-5, +.gx-lg-5 { + --bs-gutter-x: 3rem; + } + + .g-lg-5, +.gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-xl-0 { + margin-left: 0; + } + + .offset-xl-1 { + margin-left: 8.33333333%; + } + + .offset-xl-2 { + margin-left: 16.66666667%; + } + + .offset-xl-3 { + margin-left: 25%; + } + + .offset-xl-4 { + margin-left: 33.33333333%; + } + + .offset-xl-5 { + margin-left: 41.66666667%; + } + + .offset-xl-6 { + margin-left: 50%; + } + + .offset-xl-7 { + margin-left: 58.33333333%; + } + + .offset-xl-8 { + margin-left: 66.66666667%; + } + + .offset-xl-9 { + margin-left: 75%; + } + + .offset-xl-10 { + margin-left: 83.33333333%; + } + + .offset-xl-11 { + margin-left: 91.66666667%; + } + + .g-xl-0, +.gx-xl-0 { + --bs-gutter-x: 0; + } + + .g-xl-0, +.gy-xl-0 { + --bs-gutter-y: 0; + } + + .g-xl-1, +.gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + + .g-xl-1, +.gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + + .g-xl-2, +.gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + + .g-xl-2, +.gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + + .g-xl-3, +.gx-xl-3 { + --bs-gutter-x: 1rem; + } + + .g-xl-3, +.gy-xl-3 { + --bs-gutter-y: 1rem; + } + + .g-xl-4, +.gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + + .g-xl-4, +.gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + + .g-xl-5, +.gx-xl-5 { + --bs-gutter-x: 3rem; + } + + .g-xl-5, +.gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-xxl-0 { + margin-left: 0; + } + + .offset-xxl-1 { + margin-left: 8.33333333%; + } + + .offset-xxl-2 { + margin-left: 16.66666667%; + } + + .offset-xxl-3 { + margin-left: 25%; + } + + .offset-xxl-4 { + margin-left: 33.33333333%; + } + + .offset-xxl-5 { + margin-left: 41.66666667%; + } + + .offset-xxl-6 { + margin-left: 50%; + } + + .offset-xxl-7 { + margin-left: 58.33333333%; + } + + .offset-xxl-8 { + margin-left: 66.66666667%; + } + + .offset-xxl-9 { + margin-left: 75%; + } + + .offset-xxl-10 { + margin-left: 83.33333333%; + } + + .offset-xxl-11 { + margin-left: 91.66666667%; + } + + .g-xxl-0, +.gx-xxl-0 { + --bs-gutter-x: 0; + } + + .g-xxl-0, +.gy-xxl-0 { + --bs-gutter-y: 0; + } + + .g-xxl-1, +.gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + + .g-xxl-1, +.gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + + .g-xxl-2, +.gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + + .g-xxl-2, +.gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + + .g-xxl-3, +.gx-xxl-3 { + --bs-gutter-x: 1rem; + } + + .g-xxl-3, +.gy-xxl-3 { + --bs-gutter-y: 1rem; + } + + .g-xxl-4, +.gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + + .g-xxl-4, +.gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + + .g-xxl-5, +.gx-xxl-5 { + --bs-gutter-x: 3rem; + } + + .g-xxl-5, +.gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.table { + --bs-table-bg: transparent; + --bs-table-accent-bg: transparent; + --bs-table-striped-color: #212529; + --bs-table-striped-bg: rgba(0, 0, 0, 0.05); + --bs-table-active-color: #212529; + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: #212529; + --bs-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + color: #212529; + vertical-align: top; + border-color: #dee2e6; +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + background-color: var(--bs-table-bg); + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} +.table > :not(:first-child) { + border-top: 2px solid currentColor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: 1px 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 1px; +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} + +.table-hover > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} + +.table-primary { + --bs-table-bg: #cfe2ff; + --bs-table-striped-bg: #c5d7f2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bacbe6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfd1ec; + --bs-table-hover-color: #000; + color: #000; + border-color: #bacbe6; +} + +.table-secondary { + --bs-table-bg: #e2e3e5; + --bs-table-striped-bg: #d7d8da; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbccce; + --bs-table-active-color: #000; + --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-color: #000; + color: #000; + border-color: #cbccce; +} + +.table-success { + --bs-table-bg: #d1e7dd; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: #000; + border-color: #bcd0c7; +} + +.table-info { + --bs-table-bg: #cff4fc; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: #000; + border-color: #badce3; +} + +.table-warning { + --bs-table-bg: #fff3cd; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: #000; + border-color: #e6dbb9; +} + +.table-danger { + --bs-table-bg: #f8d7da; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: #000; + border-color: #dfc2c4; +} + +.table-light { + --bs-table-bg: #f8f9fa; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: #000; + border-color: #dfe0e1; +} + +.table-dark { + --bs-table-bg: #212529; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: #fff; + border-color: #373b3e; +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: #6c757d; +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: #212529; + background-color: #fff; + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-control::-webkit-date-and-time-value { + height: 1.5em; +} +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} +.form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: #dde0e3; +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: #dde0e3; +} +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: #dde0e3; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} + +textarea.form-control { + min-height: calc(1.5em + 0.75rem + 2px); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); +} + +.form-control-color { + width: 3rem; + height: auto; + padding: 0.375rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + height: 1.5em; + border-radius: 0.25rem; +} +.form-control-color::-webkit-color-swatch { + height: 1.5em; + border-radius: 0.25rem; +} + +.form-select { + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + -moz-padding-start: calc(0.75rem - 3px); + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: #e9ecef; +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #212529; +} + +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-input { + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + background-color: #fff; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid rgba(0, 0, 0, 0.25); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-print-color-adjust: exact; + color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-check-input:checked { + background-color: #0d6efd; + border-color: #0d6efd; +} +.form-check-input:checked[type=checkbox] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: #0d6efd; + border-color: #0d6efd; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + width: 2em; + margin-left: -2.5em; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b6d4fe; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b6d4fe; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} +.form-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-select { + height: calc(3.5rem + 2px); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + height: 100%; + padding: 1rem 0.75rem; + pointer-events: none; + border: 1px solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control { + padding: 1rem 0.75rem; +} +.form-floating > .form-control::-moz-placeholder { + color: transparent; +} +.form-floating > .form-control:-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-ms-input-placeholder) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-select ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:-webkit-autofill ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus { + z-index: 3; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 3; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #198754; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(25, 135, 84, 0.9); + border-radius: 0.25rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #198754; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: #198754; +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: #198754; +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: #198754; +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #198754; +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid, +.was-validated .input-group .form-select:valid, +.input-group .form-select.is-valid { + z-index: 1; +} +.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus, +.was-validated .input-group .form-select:valid:focus, +.input-group .form-select.is-valid:focus { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: #dc3545; +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: #dc3545; +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: #dc3545; +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid, +.was-validated .input-group .form-select:invalid, +.input-group .form-select.is-invalid { + z-index: 2; +} +.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus, +.was-validated .input-group .form-select:invalid:focus, +.input-group .form-select.is-invalid:focus { + z-index: 3; +} + +.btn { + display: inline-block; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: #212529; +} +.btn-check:focus + .btn, .btn:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + pointer-events: none; + opacity: 0.65; +} + +.btn-primary { + color: #fff; + background-color: #0d6efd; + border-color: #0d6efd; +} +.btn-primary:hover { + color: #fff; + background-color: #0b5ed7; + border-color: #0a58ca; +} +.btn-check:focus + .btn-primary, .btn-primary:focus { + color: #fff; + background-color: #0b5ed7; + border-color: #0a58ca; + box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5); +} +.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #0a58ca; + border-color: #0a53be; +} +.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5); +} +.btn-primary:disabled, .btn-primary.disabled { + color: #fff; + background-color: #0d6efd; + border-color: #0d6efd; +} + +.btn-secondary { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} +.btn-secondary:hover { + color: #fff; + background-color: #5c636a; + border-color: #565e64; +} +.btn-check:focus + .btn-secondary, .btn-secondary:focus { + color: #fff; + background-color: #5c636a; + border-color: #565e64; + box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5); +} +.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #565e64; + border-color: #51585e; +} +.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5); +} +.btn-secondary:disabled, .btn-secondary.disabled { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-success { + color: #fff; + background-color: #198754; + border-color: #198754; +} +.btn-success:hover { + color: #fff; + background-color: #157347; + border-color: #146c43; +} +.btn-check:focus + .btn-success, .btn-success:focus { + color: #fff; + background-color: #157347; + border-color: #146c43; + box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); +} +.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #146c43; + border-color: #13653f; +} +.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); +} +.btn-success:disabled, .btn-success.disabled { + color: #fff; + background-color: #198754; + border-color: #198754; +} + +.btn-info { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-info:hover { + color: #000; + background-color: #31d2f2; + border-color: #25cff2; +} +.btn-check:focus + .btn-info, .btn-info:focus { + color: #000; + background-color: #31d2f2; + border-color: #25cff2; + box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); +} +.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle { + color: #000; + background-color: #3dd5f3; + border-color: #25cff2; +} +.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); +} +.btn-info:disabled, .btn-info.disabled { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} + +.btn-warning { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} +.btn-warning:hover { + color: #000; + background-color: #ffca2c; + border-color: #ffc720; +} +.btn-check:focus + .btn-warning, .btn-warning:focus { + color: #000; + background-color: #ffca2c; + border-color: #ffc720; + box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); +} +.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle { + color: #000; + background-color: #ffcd39; + border-color: #ffc720; +} +.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); +} +.btn-warning:disabled, .btn-warning.disabled { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} +.btn-danger:hover { + color: #fff; + background-color: #bb2d3b; + border-color: #b02a37; +} +.btn-check:focus + .btn-danger, .btn-danger:focus { + color: #fff; + background-color: #bb2d3b; + border-color: #b02a37; + box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); +} +.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #b02a37; + border-color: #a52834; +} +.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); +} +.btn-danger:disabled, .btn-danger.disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-light { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-light:hover { + color: #000; + background-color: #f9fafb; + border-color: #f9fafb; +} +.btn-check:focus + .btn-light, .btn-light:focus { + color: #000; + background-color: #f9fafb; + border-color: #f9fafb; + box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); +} +.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle { + color: #000; + background-color: #f9fafb; + border-color: #f9fafb; +} +.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); +} +.btn-light:disabled, .btn-light.disabled { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-dark { + color: #fff; + background-color: #212529; + border-color: #212529; +} +.btn-dark:hover { + color: #fff; + background-color: #1c1f23; + border-color: #1a1e21; +} +.btn-check:focus + .btn-dark, .btn-dark:focus { + color: #fff; + background-color: #1c1f23; + border-color: #1a1e21; + box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); +} +.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1a1e21; + border-color: #191c1f; +} +.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); +} +.btn-dark:disabled, .btn-dark.disabled { + color: #fff; + background-color: #212529; + border-color: #212529; +} + +.btn-outline-primary { + color: #0d6efd; + border-color: #0d6efd; +} +.btn-outline-primary:hover { + color: #fff; + background-color: #0d6efd; + border-color: #0d6efd; +} +.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus { + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5); +} +.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show { + color: #fff; + background-color: #0d6efd; + border-color: #0d6efd; +} +.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5); +} +.btn-outline-primary:disabled, .btn-outline-primary.disabled { + color: #0d6efd; + background-color: transparent; +} + +.btn-outline-secondary { + color: #6c757d; + border-color: #6c757d; +} +.btn-outline-secondary:hover { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} +.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus { + box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5); +} +.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} +.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5); +} +.btn-outline-secondary:disabled, .btn-outline-secondary.disabled { + color: #6c757d; + background-color: transparent; +} + +.btn-outline-success { + color: #198754; + border-color: #198754; +} +.btn-outline-success:hover { + color: #fff; + background-color: #198754; + border-color: #198754; +} +.btn-check:focus + .btn-outline-success, .btn-outline-success:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5); +} +.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show { + color: #fff; + background-color: #198754; + border-color: #198754; +} +.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5); +} +.btn-outline-success:disabled, .btn-outline-success.disabled { + color: #198754; + background-color: transparent; +} + +.btn-outline-info { + color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-outline-info:hover { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-check:focus + .btn-outline-info, .btn-outline-info:focus { + box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5); +} +.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5); +} +.btn-outline-info:disabled, .btn-outline-info.disabled { + color: #0dcaf0; + background-color: transparent; +} + +.btn-outline-warning { + color: #ffc107; + border-color: #ffc107; +} +.btn-outline-warning:hover { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} +.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus { + box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5); +} +.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} +.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5); +} +.btn-outline-warning:disabled, .btn-outline-warning.disabled { + color: #ffc107; + background-color: transparent; +} + +.btn-outline-danger { + color: #dc3545; + border-color: #dc3545; +} +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} +.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5); +} +.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} +.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5); +} +.btn-outline-danger:disabled, .btn-outline-danger.disabled { + color: #dc3545; + background-color: transparent; +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-outline-light:hover { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-check:focus + .btn-outline-light, .btn-outline-light:focus { + box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5); +} +.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5); +} +.btn-outline-light:disabled, .btn-outline-light.disabled { + color: #f8f9fa; + background-color: transparent; +} + +.btn-outline-dark { + color: #212529; + border-color: #212529; +} +.btn-outline-dark:hover { + color: #fff; + background-color: #212529; + border-color: #212529; +} +.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus { + box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5); +} +.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show { + color: #fff; + background-color: #212529; + border-color: #212529; +} +.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5); +} +.btn-outline-dark:disabled, .btn-outline-dark.disabled { + color: #212529; + background-color: transparent; +} + +.btn-link { + font-weight: 400; + color: #0d6efd; + text-decoration: underline; +} +.btn-link:hover { + color: #0a58ca; +} +.btn-link:disabled, .btn-link.disabled { + color: #6c757d; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + z-index: 1000; + display: none; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: 0.125rem; +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid rgba(0, 0, 0, 0.15); +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; +} +.dropdown-item:hover, .dropdown-item:focus { + color: #1e2125; + background-color: #e9ecef; +} +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #0d6efd; +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: #adb5bd; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1rem; + color: #212529; +} + +.dropdown-menu-dark { + color: #dee2e6; + background-color: #343a40; + border-color: rgba(0, 0, 0, 0.15); +} +.dropdown-menu-dark .dropdown-item { + color: #dee2e6; +} +.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus { + color: #fff; + background-color: rgba(255, 255, 255, 0.15); +} +.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active { + color: #fff; + background-color: #0d6efd; +} +.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled { + color: #adb5bd; +} +.dropdown-menu-dark .dropdown-divider { + border-color: rgba(0, 0, 0, 0.15); +} +.dropdown-menu-dark .dropdown-item-text { + color: #dee2e6; +} +.dropdown-menu-dark .dropdown-header { + color: #adb5bd; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; + color: #0d6efd; + text-decoration: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: #0a58ca; +} +.nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6; +} +.nav-tabs .nav-link { + margin-bottom: -1px; + background: none; + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; + isolation: isolate; +} +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + background: none; + border: 0; + border-radius: 0.25rem; +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #0d6efd; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + text-decoration: none; + white-space: nowrap; +} +.navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; + transition: box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 0.25rem; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-sm .offcanvas-top, +.navbar-expand-sm .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-md .offcanvas-top, +.navbar-expand-md .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-lg .offcanvas-top, +.navbar-expand-lg .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-xl .offcanvas-top, +.navbar-expand-xl .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-xxl .offcanvas-top, +.navbar-expand-xxl .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; +} +.navbar-expand .offcanvas-top, +.navbar-expand .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; +} +.navbar-expand .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.55); +} +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.55); + border-color: rgba(0, 0, 0, 0.1); +} +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.55); +} +.navbar-light .navbar-text a, +.navbar-light .navbar-text a:hover, +.navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.55); +} +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.55); + border-color: rgba(255, 255, 255, 0.1); +} +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.55); +} +.navbar-dark .navbar-text a, +.navbar-dark .navbar-text a:hover, +.navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: 1rem 1rem; +} + +.card-title { + margin-bottom: 0.5rem; +} + +.card-subtitle { + margin-top: -0.25rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link + .card-link { + margin-left: 1rem; +} + +.card-header { + padding: 0.5rem 1rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-footer { + padding: 0.5rem 1rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.5rem; + margin-bottom: -0.5rem; + margin-left: -0.5rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1rem; + border-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-group > .card { + margin-bottom: 0.75rem; +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, +.card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, +.card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, +.card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, +.card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: 1rem 1.25rem; + font-size: 1rem; + color: #212529; + text-align: left; + background-color: #fff; + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: #0c63e4; + background-color: #e7f1ff; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125); +} +.accordion-button:not(.collapsed)::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + transform: rotate(-180deg); +} +.accordion-button::after { + flex-shrink: 0; + width: 1.25rem; + height: 1.25rem; + margin-left: auto; + content: ""; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-size: 1.25rem; + transition: transform 0.2s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} +.accordion-item:first-of-type { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.accordion-body { + padding: 1rem 1.25rem; +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button { + border-radius: 0; +} + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0 0; + margin-bottom: 1rem; + list-style: none; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: 0.5rem; + color: #6c757d; + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: #6c757d; +} + +.pagination { + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + color: #0d6efd; + text-decoration: none; + background-color: #fff; + border: 1px solid #dee2e6; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: #0a58ca; + background-color: #e9ecef; + border-color: #dee2e6; +} +.page-link:focus { + z-index: 3; + color: #0a58ca; + background-color: #e9ecef; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} + +.page-item:not(:first-child) .page-link { + margin-left: -1px; +} +.page-item.active .page-link { + z-index: 3; + color: #fff; + background-color: #0d6efd; + border-color: #0d6efd; +} +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + background-color: #fff; + border-color: #dee2e6; +} + +.page-link { + padding: 0.375rem 0.75rem; +} + +.page-item:first-child .page-link { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; +} +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; +} +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.35em 0.65em; + font-size: 0.75em; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + position: relative; + padding: 1rem 1rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-primary { + color: #084298; + background-color: #cfe2ff; + border-color: #b6d4fe; +} +.alert-primary .alert-link { + color: #06357a; +} + +.alert-secondary { + color: #41464b; + background-color: #e2e3e5; + border-color: #d3d6d8; +} +.alert-secondary .alert-link { + color: #34383c; +} + +.alert-success { + color: #0f5132; + background-color: #d1e7dd; + border-color: #badbcc; +} +.alert-success .alert-link { + color: #0c4128; +} + +.alert-info { + color: #055160; + background-color: #cff4fc; + border-color: #b6effb; +} +.alert-info .alert-link { + color: #04414d; +} + +.alert-warning { + color: #664d03; + background-color: #fff3cd; + border-color: #ffecb5; +} +.alert-warning .alert-link { + color: #523e02; +} + +.alert-danger { + color: #842029; + background-color: #f8d7da; + border-color: #f5c2c7; +} +.alert-danger .alert-link { + color: #6a1a21; +} + +.alert-light { + color: #636464; + background-color: #fefefe; + border-color: #fdfdfe; +} +.alert-light .alert-link { + color: #4f5050; +} + +.alert-dark { + color: #141619; + background-color: #d3d3d4; + border-color: #bcbebf; +} +.alert-dark .alert-link { + color: #101214; +} + +@-webkit-keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #0d6efd; + transition: width 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: 1s linear infinite progress-bar-stripes; + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none; + } +} + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: 0.25rem; +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > li::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} +.list-group-item-action:active { + color: #212529; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.5rem 1rem; + color: #212529; + text-decoration: none; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; +} +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #0d6efd; + border-color: #0d6efd; +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: -1px; + border-top-width: 1px; +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 1px; +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #084298; + background-color: #cfe2ff; +} +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #084298; + background-color: #bacbe6; +} +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #084298; + border-color: #084298; +} + +.list-group-item-secondary { + color: #41464b; + background-color: #e2e3e5; +} +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #41464b; + background-color: #cbccce; +} +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #41464b; + border-color: #41464b; +} + +.list-group-item-success { + color: #0f5132; + background-color: #d1e7dd; +} +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #0f5132; + background-color: #bcd0c7; +} +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #0f5132; + border-color: #0f5132; +} + +.list-group-item-info { + color: #055160; + background-color: #cff4fc; +} +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #055160; + background-color: #badce3; +} +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #055160; + border-color: #055160; +} + +.list-group-item-warning { + color: #664d03; + background-color: #fff3cd; +} +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #664d03; + background-color: #e6dbb9; +} +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #664d03; + border-color: #664d03; +} + +.list-group-item-danger { + color: #842029; + background-color: #f8d7da; +} +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #842029; + background-color: #dfc2c4; +} +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #842029; + border-color: #842029; +} + +.list-group-item-light { + color: #636464; + background-color: #fefefe; +} +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #636464; + background-color: #e5e5e5; +} +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #636464; + border-color: #636464; +} + +.list-group-item-dark { + color: #141619; + background-color: #d3d3d4; +} +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #141619; + background-color: #bebebf; +} +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #141619; + border-color: #141619; +} + +.btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: #000; + background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; + border: 0; + border-radius: 0.25rem; + opacity: 0.5; +} +.btn-close:hover { + color: #000; + text-decoration: none; + opacity: 0.75; +} +.btn-close:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + opacity: 1; +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: 0.25; +} + +.btn-close-white { + filter: invert(1) grayscale(100%) brightness(200%); +} + +.toast { + width: 350px; + max-width: 100%; + font-size: 0.875rem; + pointer-events: auto; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast-header { + display: flex; + align-items: center; + padding: 0.5rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.toast-header .btn-close { + margin-right: -0.375rem; + margin-left: 0.75rem; +} + +.toast-body { + padding: 0.75rem; + word-wrap: break-word; +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1055; + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - 1rem); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + width: 100vw; + height: 100vh; + background-color: #000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} +.modal-header .btn-close { + padding: 0.5rem 0.5rem; + margin: -0.5rem -0.5rem -0.5rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: flex; + flex-wrap: wrap; + flex-shrink: 0; + align-items: center; + justify-content: flex-end; + padding: 0.75rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: calc(0.3rem - 1px); + border-bottom-left-radius: calc(0.3rem - 1px); +} +.modal-footer > * { + margin: 0.25rem; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + + .modal-dialog-scrollable { + height: calc(100% - 3.5rem); + } + + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + + .modal-sm { + max-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, +.modal-xl { + max-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} +.modal-fullscreen .modal-footer { + border-radius: 0; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } +} +.tooltip { + position: absolute; + z-index: 1080; + display: block; + margin: 0; + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: 0.9; +} +.tooltip .tooltip-arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] { + padding: 0.4rem 0; +} +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: 0; +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] { + padding: 0 0.4rem; +} +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] { + padding: 0.4rem 0; +} +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: 0; +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] { + padding: 0 0.4rem; +} +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.popover { + position: absolute; + top: 0; + left: 0 /* rtl:ignore */; + z-index: 1070; + display: block; + max-width: 276px; + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} +.popover .popover-arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-0.5rem - 1px); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} + +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-0.5rem - 1px); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f0f0f0; +} + +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 1rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f0f0f0; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 1rem 1rem; + color: #212529; +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +/* rtl:begin:ignore */ +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +/* rtl:end:ignore */ +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, +.carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} + +@-webkit-keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: -0.125em; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: 0.75s linear infinite spinner-border; + animation: 0.75s linear infinite spinner-border; +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} + +@-webkit-keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: -0.125em; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: 0.75s linear infinite spinner-grow; + animation: 0.75s linear infinite spinner-grow; +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, +.spinner-grow { + -webkit-animation-duration: 1.5s; + animation-duration: 1.5s; + } +} +.offcanvas { + position: fixed; + bottom: 0; + z-index: 1045; + display: flex; + flex-direction: column; + max-width: 100%; + visibility: hidden; + background-color: #fff; + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 1rem; +} +.offcanvas-header .btn-close { + padding: 0.5rem 0.5rem; + margin-top: -0.5rem; + margin-right: -0.5rem; + margin-bottom: -0.5rem; +} + +.offcanvas-title { + margin-bottom: 0; + line-height: 1.5; +} + +.offcanvas-body { + flex-grow: 1; + padding: 1rem 1rem; + overflow-y: auto; +} + +.offcanvas-start { + top: 0; + left: 0; + width: 400px; + border-right: 1px solid rgba(0, 0, 0, 0.2); + transform: translateX(-100%); +} + +.offcanvas-end { + top: 0; + right: 0; + width: 400px; + border-left: 1px solid rgba(0, 0, 0, 0.2); + transform: translateX(100%); +} + +.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: 30vh; + max-height: 100%; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + transform: translateY(-100%); +} + +.offcanvas-bottom { + right: 0; + left: 0; + height: 30vh; + max-height: 100%; + border-top: 1px solid rgba(0, 0, 0, 0.2); + transform: translateY(100%); +} + +.offcanvas.show { + transform: none; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentColor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + -webkit-animation: placeholder-glow 2s ease-in-out infinite; + animation: placeholder-glow 2s ease-in-out infinite; +} + +@-webkit-keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + -webkit-animation: placeholder-wave 2s linear infinite; + animation: placeholder-wave 2s linear infinite; +} + +@-webkit-keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.link-primary { + color: #0d6efd; +} +.link-primary:hover, .link-primary:focus { + color: #0a58ca; +} + +.link-secondary { + color: #6c757d; +} +.link-secondary:hover, .link-secondary:focus { + color: #565e64; +} + +.link-success { + color: #198754; +} +.link-success:hover, .link-success:focus { + color: #146c43; +} + +.link-info { + color: #0dcaf0; +} +.link-info:hover, .link-info:focus { + color: #3dd5f3; +} + +.link-warning { + color: #ffc107; +} +.link-warning:hover, .link-warning:focus { + color: #ffcd39; +} + +.link-danger { + color: #dc3545; +} +.link-danger:hover, .link-danger:focus { + color: #b02a37; +} + +.link-light { + color: #f8f9fa; +} +.link-light:hover, .link-light:focus { + color: #f9fafb; +} + +.link-dark { + color: #212529; +} +.link-dark:hover, .link-dark:focus { + color: #1a1e21; +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentColor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: 1px solid #dee2e6 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: 1px solid #dee2e6 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: 1px solid #dee2e6 !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: 1px solid #dee2e6 !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #0d6efd !important; +} + +.border-secondary { + border-color: #6c757d !important; +} + +.border-success { + border-color: #198754 !important; +} + +.border-info { + border-color: #0dcaf0 !important; +} + +.border-warning { + border-color: #ffc107 !important; +} + +.border-danger { + border-color: #dc3545 !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #212529 !important; +} + +.border-white { + border-color: #fff !important; +} + +.border-1 { + border-width: 1px !important; +} + +.border-2 { + border-width: 2px !important; +} + +.border-3 { + border-width: 3px !important; +} + +.border-4 { + border-width: 4px !important; +} + +.border-5 { + border-width: 5px !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: #6c757d !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: 0.25rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: 0.2rem !important; +} + +.rounded-2 { + border-radius: 0.25rem !important; +} + +.rounded-3 { + border-radius: 0.3rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} + +.rounded-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + + .float-sm-end { + float: right !important; + } + + .float-sm-none { + float: none !important; + } + + .d-sm-inline { + display: inline !important; + } + + .d-sm-inline-block { + display: inline-block !important; + } + + .d-sm-block { + display: block !important; + } + + .d-sm-grid { + display: grid !important; + } + + .d-sm-table { + display: table !important; + } + + .d-sm-table-row { + display: table-row !important; + } + + .d-sm-table-cell { + display: table-cell !important; + } + + .d-sm-flex { + display: flex !important; + } + + .d-sm-inline-flex { + display: inline-flex !important; + } + + .d-sm-none { + display: none !important; + } + + .flex-sm-fill { + flex: 1 1 auto !important; + } + + .flex-sm-row { + flex-direction: row !important; + } + + .flex-sm-column { + flex-direction: column !important; + } + + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-sm-wrap { + flex-wrap: wrap !important; + } + + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-sm-0 { + gap: 0 !important; + } + + .gap-sm-1 { + gap: 0.25rem !important; + } + + .gap-sm-2 { + gap: 0.5rem !important; + } + + .gap-sm-3 { + gap: 1rem !important; + } + + .gap-sm-4 { + gap: 1.5rem !important; + } + + .gap-sm-5 { + gap: 3rem !important; + } + + .justify-content-sm-start { + justify-content: flex-start !important; + } + + .justify-content-sm-end { + justify-content: flex-end !important; + } + + .justify-content-sm-center { + justify-content: center !important; + } + + .justify-content-sm-between { + justify-content: space-between !important; + } + + .justify-content-sm-around { + justify-content: space-around !important; + } + + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + + .align-items-sm-start { + align-items: flex-start !important; + } + + .align-items-sm-end { + align-items: flex-end !important; + } + + .align-items-sm-center { + align-items: center !important; + } + + .align-items-sm-baseline { + align-items: baseline !important; + } + + .align-items-sm-stretch { + align-items: stretch !important; + } + + .align-content-sm-start { + align-content: flex-start !important; + } + + .align-content-sm-end { + align-content: flex-end !important; + } + + .align-content-sm-center { + align-content: center !important; + } + + .align-content-sm-between { + align-content: space-between !important; + } + + .align-content-sm-around { + align-content: space-around !important; + } + + .align-content-sm-stretch { + align-content: stretch !important; + } + + .align-self-sm-auto { + align-self: auto !important; + } + + .align-self-sm-start { + align-self: flex-start !important; + } + + .align-self-sm-end { + align-self: flex-end !important; + } + + .align-self-sm-center { + align-self: center !important; + } + + .align-self-sm-baseline { + align-self: baseline !important; + } + + .align-self-sm-stretch { + align-self: stretch !important; + } + + .order-sm-first { + order: -1 !important; + } + + .order-sm-0 { + order: 0 !important; + } + + .order-sm-1 { + order: 1 !important; + } + + .order-sm-2 { + order: 2 !important; + } + + .order-sm-3 { + order: 3 !important; + } + + .order-sm-4 { + order: 4 !important; + } + + .order-sm-5 { + order: 5 !important; + } + + .order-sm-last { + order: 6 !important; + } + + .m-sm-0 { + margin: 0 !important; + } + + .m-sm-1 { + margin: 0.25rem !important; + } + + .m-sm-2 { + margin: 0.5rem !important; + } + + .m-sm-3 { + margin: 1rem !important; + } + + .m-sm-4 { + margin: 1.5rem !important; + } + + .m-sm-5 { + margin: 3rem !important; + } + + .m-sm-auto { + margin: auto !important; + } + + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-sm-0 { + margin-top: 0 !important; + } + + .mt-sm-1 { + margin-top: 0.25rem !important; + } + + .mt-sm-2 { + margin-top: 0.5rem !important; + } + + .mt-sm-3 { + margin-top: 1rem !important; + } + + .mt-sm-4 { + margin-top: 1.5rem !important; + } + + .mt-sm-5 { + margin-top: 3rem !important; + } + + .mt-sm-auto { + margin-top: auto !important; + } + + .me-sm-0 { + margin-right: 0 !important; + } + + .me-sm-1 { + margin-right: 0.25rem !important; + } + + .me-sm-2 { + margin-right: 0.5rem !important; + } + + .me-sm-3 { + margin-right: 1rem !important; + } + + .me-sm-4 { + margin-right: 1.5rem !important; + } + + .me-sm-5 { + margin-right: 3rem !important; + } + + .me-sm-auto { + margin-right: auto !important; + } + + .mb-sm-0 { + margin-bottom: 0 !important; + } + + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + + .mb-sm-3 { + margin-bottom: 1rem !important; + } + + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + + .mb-sm-5 { + margin-bottom: 3rem !important; + } + + .mb-sm-auto { + margin-bottom: auto !important; + } + + .ms-sm-0 { + margin-left: 0 !important; + } + + .ms-sm-1 { + margin-left: 0.25rem !important; + } + + .ms-sm-2 { + margin-left: 0.5rem !important; + } + + .ms-sm-3 { + margin-left: 1rem !important; + } + + .ms-sm-4 { + margin-left: 1.5rem !important; + } + + .ms-sm-5 { + margin-left: 3rem !important; + } + + .ms-sm-auto { + margin-left: auto !important; + } + + .p-sm-0 { + padding: 0 !important; + } + + .p-sm-1 { + padding: 0.25rem !important; + } + + .p-sm-2 { + padding: 0.5rem !important; + } + + .p-sm-3 { + padding: 1rem !important; + } + + .p-sm-4 { + padding: 1.5rem !important; + } + + .p-sm-5 { + padding: 3rem !important; + } + + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-sm-0 { + padding-top: 0 !important; + } + + .pt-sm-1 { + padding-top: 0.25rem !important; + } + + .pt-sm-2 { + padding-top: 0.5rem !important; + } + + .pt-sm-3 { + padding-top: 1rem !important; + } + + .pt-sm-4 { + padding-top: 1.5rem !important; + } + + .pt-sm-5 { + padding-top: 3rem !important; + } + + .pe-sm-0 { + padding-right: 0 !important; + } + + .pe-sm-1 { + padding-right: 0.25rem !important; + } + + .pe-sm-2 { + padding-right: 0.5rem !important; + } + + .pe-sm-3 { + padding-right: 1rem !important; + } + + .pe-sm-4 { + padding-right: 1.5rem !important; + } + + .pe-sm-5 { + padding-right: 3rem !important; + } + + .pb-sm-0 { + padding-bottom: 0 !important; + } + + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + + .pb-sm-3 { + padding-bottom: 1rem !important; + } + + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + + .pb-sm-5 { + padding-bottom: 3rem !important; + } + + .ps-sm-0 { + padding-left: 0 !important; + } + + .ps-sm-1 { + padding-left: 0.25rem !important; + } + + .ps-sm-2 { + padding-left: 0.5rem !important; + } + + .ps-sm-3 { + padding-left: 1rem !important; + } + + .ps-sm-4 { + padding-left: 1.5rem !important; + } + + .ps-sm-5 { + padding-left: 3rem !important; + } + + .text-sm-start { + text-align: left !important; + } + + .text-sm-end { + text-align: right !important; + } + + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + + .float-md-end { + float: right !important; + } + + .float-md-none { + float: none !important; + } + + .d-md-inline { + display: inline !important; + } + + .d-md-inline-block { + display: inline-block !important; + } + + .d-md-block { + display: block !important; + } + + .d-md-grid { + display: grid !important; + } + + .d-md-table { + display: table !important; + } + + .d-md-table-row { + display: table-row !important; + } + + .d-md-table-cell { + display: table-cell !important; + } + + .d-md-flex { + display: flex !important; + } + + .d-md-inline-flex { + display: inline-flex !important; + } + + .d-md-none { + display: none !important; + } + + .flex-md-fill { + flex: 1 1 auto !important; + } + + .flex-md-row { + flex-direction: row !important; + } + + .flex-md-column { + flex-direction: column !important; + } + + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-md-grow-0 { + flex-grow: 0 !important; + } + + .flex-md-grow-1 { + flex-grow: 1 !important; + } + + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-md-wrap { + flex-wrap: wrap !important; + } + + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-md-0 { + gap: 0 !important; + } + + .gap-md-1 { + gap: 0.25rem !important; + } + + .gap-md-2 { + gap: 0.5rem !important; + } + + .gap-md-3 { + gap: 1rem !important; + } + + .gap-md-4 { + gap: 1.5rem !important; + } + + .gap-md-5 { + gap: 3rem !important; + } + + .justify-content-md-start { + justify-content: flex-start !important; + } + + .justify-content-md-end { + justify-content: flex-end !important; + } + + .justify-content-md-center { + justify-content: center !important; + } + + .justify-content-md-between { + justify-content: space-between !important; + } + + .justify-content-md-around { + justify-content: space-around !important; + } + + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + + .align-items-md-start { + align-items: flex-start !important; + } + + .align-items-md-end { + align-items: flex-end !important; + } + + .align-items-md-center { + align-items: center !important; + } + + .align-items-md-baseline { + align-items: baseline !important; + } + + .align-items-md-stretch { + align-items: stretch !important; + } + + .align-content-md-start { + align-content: flex-start !important; + } + + .align-content-md-end { + align-content: flex-end !important; + } + + .align-content-md-center { + align-content: center !important; + } + + .align-content-md-between { + align-content: space-between !important; + } + + .align-content-md-around { + align-content: space-around !important; + } + + .align-content-md-stretch { + align-content: stretch !important; + } + + .align-self-md-auto { + align-self: auto !important; + } + + .align-self-md-start { + align-self: flex-start !important; + } + + .align-self-md-end { + align-self: flex-end !important; + } + + .align-self-md-center { + align-self: center !important; + } + + .align-self-md-baseline { + align-self: baseline !important; + } + + .align-self-md-stretch { + align-self: stretch !important; + } + + .order-md-first { + order: -1 !important; + } + + .order-md-0 { + order: 0 !important; + } + + .order-md-1 { + order: 1 !important; + } + + .order-md-2 { + order: 2 !important; + } + + .order-md-3 { + order: 3 !important; + } + + .order-md-4 { + order: 4 !important; + } + + .order-md-5 { + order: 5 !important; + } + + .order-md-last { + order: 6 !important; + } + + .m-md-0 { + margin: 0 !important; + } + + .m-md-1 { + margin: 0.25rem !important; + } + + .m-md-2 { + margin: 0.5rem !important; + } + + .m-md-3 { + margin: 1rem !important; + } + + .m-md-4 { + margin: 1.5rem !important; + } + + .m-md-5 { + margin: 3rem !important; + } + + .m-md-auto { + margin: auto !important; + } + + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-md-0 { + margin-top: 0 !important; + } + + .mt-md-1 { + margin-top: 0.25rem !important; + } + + .mt-md-2 { + margin-top: 0.5rem !important; + } + + .mt-md-3 { + margin-top: 1rem !important; + } + + .mt-md-4 { + margin-top: 1.5rem !important; + } + + .mt-md-5 { + margin-top: 3rem !important; + } + + .mt-md-auto { + margin-top: auto !important; + } + + .me-md-0 { + margin-right: 0 !important; + } + + .me-md-1 { + margin-right: 0.25rem !important; + } + + .me-md-2 { + margin-right: 0.5rem !important; + } + + .me-md-3 { + margin-right: 1rem !important; + } + + .me-md-4 { + margin-right: 1.5rem !important; + } + + .me-md-5 { + margin-right: 3rem !important; + } + + .me-md-auto { + margin-right: auto !important; + } + + .mb-md-0 { + margin-bottom: 0 !important; + } + + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + + .mb-md-3 { + margin-bottom: 1rem !important; + } + + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + + .mb-md-5 { + margin-bottom: 3rem !important; + } + + .mb-md-auto { + margin-bottom: auto !important; + } + + .ms-md-0 { + margin-left: 0 !important; + } + + .ms-md-1 { + margin-left: 0.25rem !important; + } + + .ms-md-2 { + margin-left: 0.5rem !important; + } + + .ms-md-3 { + margin-left: 1rem !important; + } + + .ms-md-4 { + margin-left: 1.5rem !important; + } + + .ms-md-5 { + margin-left: 3rem !important; + } + + .ms-md-auto { + margin-left: auto !important; + } + + .p-md-0 { + padding: 0 !important; + } + + .p-md-1 { + padding: 0.25rem !important; + } + + .p-md-2 { + padding: 0.5rem !important; + } + + .p-md-3 { + padding: 1rem !important; + } + + .p-md-4 { + padding: 1.5rem !important; + } + + .p-md-5 { + padding: 3rem !important; + } + + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-md-0 { + padding-top: 0 !important; + } + + .pt-md-1 { + padding-top: 0.25rem !important; + } + + .pt-md-2 { + padding-top: 0.5rem !important; + } + + .pt-md-3 { + padding-top: 1rem !important; + } + + .pt-md-4 { + padding-top: 1.5rem !important; + } + + .pt-md-5 { + padding-top: 3rem !important; + } + + .pe-md-0 { + padding-right: 0 !important; + } + + .pe-md-1 { + padding-right: 0.25rem !important; + } + + .pe-md-2 { + padding-right: 0.5rem !important; + } + + .pe-md-3 { + padding-right: 1rem !important; + } + + .pe-md-4 { + padding-right: 1.5rem !important; + } + + .pe-md-5 { + padding-right: 3rem !important; + } + + .pb-md-0 { + padding-bottom: 0 !important; + } + + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + + .pb-md-3 { + padding-bottom: 1rem !important; + } + + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + + .pb-md-5 { + padding-bottom: 3rem !important; + } + + .ps-md-0 { + padding-left: 0 !important; + } + + .ps-md-1 { + padding-left: 0.25rem !important; + } + + .ps-md-2 { + padding-left: 0.5rem !important; + } + + .ps-md-3 { + padding-left: 1rem !important; + } + + .ps-md-4 { + padding-left: 1.5rem !important; + } + + .ps-md-5 { + padding-left: 3rem !important; + } + + .text-md-start { + text-align: left !important; + } + + .text-md-end { + text-align: right !important; + } + + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + + .float-lg-end { + float: right !important; + } + + .float-lg-none { + float: none !important; + } + + .d-lg-inline { + display: inline !important; + } + + .d-lg-inline-block { + display: inline-block !important; + } + + .d-lg-block { + display: block !important; + } + + .d-lg-grid { + display: grid !important; + } + + .d-lg-table { + display: table !important; + } + + .d-lg-table-row { + display: table-row !important; + } + + .d-lg-table-cell { + display: table-cell !important; + } + + .d-lg-flex { + display: flex !important; + } + + .d-lg-inline-flex { + display: inline-flex !important; + } + + .d-lg-none { + display: none !important; + } + + .flex-lg-fill { + flex: 1 1 auto !important; + } + + .flex-lg-row { + flex-direction: row !important; + } + + .flex-lg-column { + flex-direction: column !important; + } + + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-lg-wrap { + flex-wrap: wrap !important; + } + + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-lg-0 { + gap: 0 !important; + } + + .gap-lg-1 { + gap: 0.25rem !important; + } + + .gap-lg-2 { + gap: 0.5rem !important; + } + + .gap-lg-3 { + gap: 1rem !important; + } + + .gap-lg-4 { + gap: 1.5rem !important; + } + + .gap-lg-5 { + gap: 3rem !important; + } + + .justify-content-lg-start { + justify-content: flex-start !important; + } + + .justify-content-lg-end { + justify-content: flex-end !important; + } + + .justify-content-lg-center { + justify-content: center !important; + } + + .justify-content-lg-between { + justify-content: space-between !important; + } + + .justify-content-lg-around { + justify-content: space-around !important; + } + + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + + .align-items-lg-start { + align-items: flex-start !important; + } + + .align-items-lg-end { + align-items: flex-end !important; + } + + .align-items-lg-center { + align-items: center !important; + } + + .align-items-lg-baseline { + align-items: baseline !important; + } + + .align-items-lg-stretch { + align-items: stretch !important; + } + + .align-content-lg-start { + align-content: flex-start !important; + } + + .align-content-lg-end { + align-content: flex-end !important; + } + + .align-content-lg-center { + align-content: center !important; + } + + .align-content-lg-between { + align-content: space-between !important; + } + + .align-content-lg-around { + align-content: space-around !important; + } + + .align-content-lg-stretch { + align-content: stretch !important; + } + + .align-self-lg-auto { + align-self: auto !important; + } + + .align-self-lg-start { + align-self: flex-start !important; + } + + .align-self-lg-end { + align-self: flex-end !important; + } + + .align-self-lg-center { + align-self: center !important; + } + + .align-self-lg-baseline { + align-self: baseline !important; + } + + .align-self-lg-stretch { + align-self: stretch !important; + } + + .order-lg-first { + order: -1 !important; + } + + .order-lg-0 { + order: 0 !important; + } + + .order-lg-1 { + order: 1 !important; + } + + .order-lg-2 { + order: 2 !important; + } + + .order-lg-3 { + order: 3 !important; + } + + .order-lg-4 { + order: 4 !important; + } + + .order-lg-5 { + order: 5 !important; + } + + .order-lg-last { + order: 6 !important; + } + + .m-lg-0 { + margin: 0 !important; + } + + .m-lg-1 { + margin: 0.25rem !important; + } + + .m-lg-2 { + margin: 0.5rem !important; + } + + .m-lg-3 { + margin: 1rem !important; + } + + .m-lg-4 { + margin: 1.5rem !important; + } + + .m-lg-5 { + margin: 3rem !important; + } + + .m-lg-auto { + margin: auto !important; + } + + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-lg-0 { + margin-top: 0 !important; + } + + .mt-lg-1 { + margin-top: 0.25rem !important; + } + + .mt-lg-2 { + margin-top: 0.5rem !important; + } + + .mt-lg-3 { + margin-top: 1rem !important; + } + + .mt-lg-4 { + margin-top: 1.5rem !important; + } + + .mt-lg-5 { + margin-top: 3rem !important; + } + + .mt-lg-auto { + margin-top: auto !important; + } + + .me-lg-0 { + margin-right: 0 !important; + } + + .me-lg-1 { + margin-right: 0.25rem !important; + } + + .me-lg-2 { + margin-right: 0.5rem !important; + } + + .me-lg-3 { + margin-right: 1rem !important; + } + + .me-lg-4 { + margin-right: 1.5rem !important; + } + + .me-lg-5 { + margin-right: 3rem !important; + } + + .me-lg-auto { + margin-right: auto !important; + } + + .mb-lg-0 { + margin-bottom: 0 !important; + } + + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + + .mb-lg-3 { + margin-bottom: 1rem !important; + } + + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + + .mb-lg-5 { + margin-bottom: 3rem !important; + } + + .mb-lg-auto { + margin-bottom: auto !important; + } + + .ms-lg-0 { + margin-left: 0 !important; + } + + .ms-lg-1 { + margin-left: 0.25rem !important; + } + + .ms-lg-2 { + margin-left: 0.5rem !important; + } + + .ms-lg-3 { + margin-left: 1rem !important; + } + + .ms-lg-4 { + margin-left: 1.5rem !important; + } + + .ms-lg-5 { + margin-left: 3rem !important; + } + + .ms-lg-auto { + margin-left: auto !important; + } + + .p-lg-0 { + padding: 0 !important; + } + + .p-lg-1 { + padding: 0.25rem !important; + } + + .p-lg-2 { + padding: 0.5rem !important; + } + + .p-lg-3 { + padding: 1rem !important; + } + + .p-lg-4 { + padding: 1.5rem !important; + } + + .p-lg-5 { + padding: 3rem !important; + } + + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-lg-0 { + padding-top: 0 !important; + } + + .pt-lg-1 { + padding-top: 0.25rem !important; + } + + .pt-lg-2 { + padding-top: 0.5rem !important; + } + + .pt-lg-3 { + padding-top: 1rem !important; + } + + .pt-lg-4 { + padding-top: 1.5rem !important; + } + + .pt-lg-5 { + padding-top: 3rem !important; + } + + .pe-lg-0 { + padding-right: 0 !important; + } + + .pe-lg-1 { + padding-right: 0.25rem !important; + } + + .pe-lg-2 { + padding-right: 0.5rem !important; + } + + .pe-lg-3 { + padding-right: 1rem !important; + } + + .pe-lg-4 { + padding-right: 1.5rem !important; + } + + .pe-lg-5 { + padding-right: 3rem !important; + } + + .pb-lg-0 { + padding-bottom: 0 !important; + } + + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + + .pb-lg-3 { + padding-bottom: 1rem !important; + } + + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + + .pb-lg-5 { + padding-bottom: 3rem !important; + } + + .ps-lg-0 { + padding-left: 0 !important; + } + + .ps-lg-1 { + padding-left: 0.25rem !important; + } + + .ps-lg-2 { + padding-left: 0.5rem !important; + } + + .ps-lg-3 { + padding-left: 1rem !important; + } + + .ps-lg-4 { + padding-left: 1.5rem !important; + } + + .ps-lg-5 { + padding-left: 3rem !important; + } + + .text-lg-start { + text-align: left !important; + } + + .text-lg-end { + text-align: right !important; + } + + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + + .float-xl-end { + float: right !important; + } + + .float-xl-none { + float: none !important; + } + + .d-xl-inline { + display: inline !important; + } + + .d-xl-inline-block { + display: inline-block !important; + } + + .d-xl-block { + display: block !important; + } + + .d-xl-grid { + display: grid !important; + } + + .d-xl-table { + display: table !important; + } + + .d-xl-table-row { + display: table-row !important; + } + + .d-xl-table-cell { + display: table-cell !important; + } + + .d-xl-flex { + display: flex !important; + } + + .d-xl-inline-flex { + display: inline-flex !important; + } + + .d-xl-none { + display: none !important; + } + + .flex-xl-fill { + flex: 1 1 auto !important; + } + + .flex-xl-row { + flex-direction: row !important; + } + + .flex-xl-column { + flex-direction: column !important; + } + + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-xl-wrap { + flex-wrap: wrap !important; + } + + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-xl-0 { + gap: 0 !important; + } + + .gap-xl-1 { + gap: 0.25rem !important; + } + + .gap-xl-2 { + gap: 0.5rem !important; + } + + .gap-xl-3 { + gap: 1rem !important; + } + + .gap-xl-4 { + gap: 1.5rem !important; + } + + .gap-xl-5 { + gap: 3rem !important; + } + + .justify-content-xl-start { + justify-content: flex-start !important; + } + + .justify-content-xl-end { + justify-content: flex-end !important; + } + + .justify-content-xl-center { + justify-content: center !important; + } + + .justify-content-xl-between { + justify-content: space-between !important; + } + + .justify-content-xl-around { + justify-content: space-around !important; + } + + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + + .align-items-xl-start { + align-items: flex-start !important; + } + + .align-items-xl-end { + align-items: flex-end !important; + } + + .align-items-xl-center { + align-items: center !important; + } + + .align-items-xl-baseline { + align-items: baseline !important; + } + + .align-items-xl-stretch { + align-items: stretch !important; + } + + .align-content-xl-start { + align-content: flex-start !important; + } + + .align-content-xl-end { + align-content: flex-end !important; + } + + .align-content-xl-center { + align-content: center !important; + } + + .align-content-xl-between { + align-content: space-between !important; + } + + .align-content-xl-around { + align-content: space-around !important; + } + + .align-content-xl-stretch { + align-content: stretch !important; + } + + .align-self-xl-auto { + align-self: auto !important; + } + + .align-self-xl-start { + align-self: flex-start !important; + } + + .align-self-xl-end { + align-self: flex-end !important; + } + + .align-self-xl-center { + align-self: center !important; + } + + .align-self-xl-baseline { + align-self: baseline !important; + } + + .align-self-xl-stretch { + align-self: stretch !important; + } + + .order-xl-first { + order: -1 !important; + } + + .order-xl-0 { + order: 0 !important; + } + + .order-xl-1 { + order: 1 !important; + } + + .order-xl-2 { + order: 2 !important; + } + + .order-xl-3 { + order: 3 !important; + } + + .order-xl-4 { + order: 4 !important; + } + + .order-xl-5 { + order: 5 !important; + } + + .order-xl-last { + order: 6 !important; + } + + .m-xl-0 { + margin: 0 !important; + } + + .m-xl-1 { + margin: 0.25rem !important; + } + + .m-xl-2 { + margin: 0.5rem !important; + } + + .m-xl-3 { + margin: 1rem !important; + } + + .m-xl-4 { + margin: 1.5rem !important; + } + + .m-xl-5 { + margin: 3rem !important; + } + + .m-xl-auto { + margin: auto !important; + } + + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-xl-0 { + margin-top: 0 !important; + } + + .mt-xl-1 { + margin-top: 0.25rem !important; + } + + .mt-xl-2 { + margin-top: 0.5rem !important; + } + + .mt-xl-3 { + margin-top: 1rem !important; + } + + .mt-xl-4 { + margin-top: 1.5rem !important; + } + + .mt-xl-5 { + margin-top: 3rem !important; + } + + .mt-xl-auto { + margin-top: auto !important; + } + + .me-xl-0 { + margin-right: 0 !important; + } + + .me-xl-1 { + margin-right: 0.25rem !important; + } + + .me-xl-2 { + margin-right: 0.5rem !important; + } + + .me-xl-3 { + margin-right: 1rem !important; + } + + .me-xl-4 { + margin-right: 1.5rem !important; + } + + .me-xl-5 { + margin-right: 3rem !important; + } + + .me-xl-auto { + margin-right: auto !important; + } + + .mb-xl-0 { + margin-bottom: 0 !important; + } + + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + + .mb-xl-3 { + margin-bottom: 1rem !important; + } + + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + + .mb-xl-5 { + margin-bottom: 3rem !important; + } + + .mb-xl-auto { + margin-bottom: auto !important; + } + + .ms-xl-0 { + margin-left: 0 !important; + } + + .ms-xl-1 { + margin-left: 0.25rem !important; + } + + .ms-xl-2 { + margin-left: 0.5rem !important; + } + + .ms-xl-3 { + margin-left: 1rem !important; + } + + .ms-xl-4 { + margin-left: 1.5rem !important; + } + + .ms-xl-5 { + margin-left: 3rem !important; + } + + .ms-xl-auto { + margin-left: auto !important; + } + + .p-xl-0 { + padding: 0 !important; + } + + .p-xl-1 { + padding: 0.25rem !important; + } + + .p-xl-2 { + padding: 0.5rem !important; + } + + .p-xl-3 { + padding: 1rem !important; + } + + .p-xl-4 { + padding: 1.5rem !important; + } + + .p-xl-5 { + padding: 3rem !important; + } + + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-xl-0 { + padding-top: 0 !important; + } + + .pt-xl-1 { + padding-top: 0.25rem !important; + } + + .pt-xl-2 { + padding-top: 0.5rem !important; + } + + .pt-xl-3 { + padding-top: 1rem !important; + } + + .pt-xl-4 { + padding-top: 1.5rem !important; + } + + .pt-xl-5 { + padding-top: 3rem !important; + } + + .pe-xl-0 { + padding-right: 0 !important; + } + + .pe-xl-1 { + padding-right: 0.25rem !important; + } + + .pe-xl-2 { + padding-right: 0.5rem !important; + } + + .pe-xl-3 { + padding-right: 1rem !important; + } + + .pe-xl-4 { + padding-right: 1.5rem !important; + } + + .pe-xl-5 { + padding-right: 3rem !important; + } + + .pb-xl-0 { + padding-bottom: 0 !important; + } + + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + + .pb-xl-3 { + padding-bottom: 1rem !important; + } + + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + + .pb-xl-5 { + padding-bottom: 3rem !important; + } + + .ps-xl-0 { + padding-left: 0 !important; + } + + .ps-xl-1 { + padding-left: 0.25rem !important; + } + + .ps-xl-2 { + padding-left: 0.5rem !important; + } + + .ps-xl-3 { + padding-left: 1rem !important; + } + + .ps-xl-4 { + padding-left: 1.5rem !important; + } + + .ps-xl-5 { + padding-left: 3rem !important; + } + + .text-xl-start { + text-align: left !important; + } + + .text-xl-end { + text-align: right !important; + } + + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + + .float-xxl-end { + float: right !important; + } + + .float-xxl-none { + float: none !important; + } + + .d-xxl-inline { + display: inline !important; + } + + .d-xxl-inline-block { + display: inline-block !important; + } + + .d-xxl-block { + display: block !important; + } + + .d-xxl-grid { + display: grid !important; + } + + .d-xxl-table { + display: table !important; + } + + .d-xxl-table-row { + display: table-row !important; + } + + .d-xxl-table-cell { + display: table-cell !important; + } + + .d-xxl-flex { + display: flex !important; + } + + .d-xxl-inline-flex { + display: inline-flex !important; + } + + .d-xxl-none { + display: none !important; + } + + .flex-xxl-fill { + flex: 1 1 auto !important; + } + + .flex-xxl-row { + flex-direction: row !important; + } + + .flex-xxl-column { + flex-direction: column !important; + } + + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-xxl-0 { + gap: 0 !important; + } + + .gap-xxl-1 { + gap: 0.25rem !important; + } + + .gap-xxl-2 { + gap: 0.5rem !important; + } + + .gap-xxl-3 { + gap: 1rem !important; + } + + .gap-xxl-4 { + gap: 1.5rem !important; + } + + .gap-xxl-5 { + gap: 3rem !important; + } + + .justify-content-xxl-start { + justify-content: flex-start !important; + } + + .justify-content-xxl-end { + justify-content: flex-end !important; + } + + .justify-content-xxl-center { + justify-content: center !important; + } + + .justify-content-xxl-between { + justify-content: space-between !important; + } + + .justify-content-xxl-around { + justify-content: space-around !important; + } + + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + + .align-items-xxl-start { + align-items: flex-start !important; + } + + .align-items-xxl-end { + align-items: flex-end !important; + } + + .align-items-xxl-center { + align-items: center !important; + } + + .align-items-xxl-baseline { + align-items: baseline !important; + } + + .align-items-xxl-stretch { + align-items: stretch !important; + } + + .align-content-xxl-start { + align-content: flex-start !important; + } + + .align-content-xxl-end { + align-content: flex-end !important; + } + + .align-content-xxl-center { + align-content: center !important; + } + + .align-content-xxl-between { + align-content: space-between !important; + } + + .align-content-xxl-around { + align-content: space-around !important; + } + + .align-content-xxl-stretch { + align-content: stretch !important; + } + + .align-self-xxl-auto { + align-self: auto !important; + } + + .align-self-xxl-start { + align-self: flex-start !important; + } + + .align-self-xxl-end { + align-self: flex-end !important; + } + + .align-self-xxl-center { + align-self: center !important; + } + + .align-self-xxl-baseline { + align-self: baseline !important; + } + + .align-self-xxl-stretch { + align-self: stretch !important; + } + + .order-xxl-first { + order: -1 !important; + } + + .order-xxl-0 { + order: 0 !important; + } + + .order-xxl-1 { + order: 1 !important; + } + + .order-xxl-2 { + order: 2 !important; + } + + .order-xxl-3 { + order: 3 !important; + } + + .order-xxl-4 { + order: 4 !important; + } + + .order-xxl-5 { + order: 5 !important; + } + + .order-xxl-last { + order: 6 !important; + } + + .m-xxl-0 { + margin: 0 !important; + } + + .m-xxl-1 { + margin: 0.25rem !important; + } + + .m-xxl-2 { + margin: 0.5rem !important; + } + + .m-xxl-3 { + margin: 1rem !important; + } + + .m-xxl-4 { + margin: 1.5rem !important; + } + + .m-xxl-5 { + margin: 3rem !important; + } + + .m-xxl-auto { + margin: auto !important; + } + + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-xxl-0 { + margin-top: 0 !important; + } + + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + + .mt-xxl-3 { + margin-top: 1rem !important; + } + + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + + .mt-xxl-5 { + margin-top: 3rem !important; + } + + .mt-xxl-auto { + margin-top: auto !important; + } + + .me-xxl-0 { + margin-right: 0 !important; + } + + .me-xxl-1 { + margin-right: 0.25rem !important; + } + + .me-xxl-2 { + margin-right: 0.5rem !important; + } + + .me-xxl-3 { + margin-right: 1rem !important; + } + + .me-xxl-4 { + margin-right: 1.5rem !important; + } + + .me-xxl-5 { + margin-right: 3rem !important; + } + + .me-xxl-auto { + margin-right: auto !important; + } + + .mb-xxl-0 { + margin-bottom: 0 !important; + } + + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + + .mb-xxl-auto { + margin-bottom: auto !important; + } + + .ms-xxl-0 { + margin-left: 0 !important; + } + + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + + .ms-xxl-3 { + margin-left: 1rem !important; + } + + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + + .ms-xxl-5 { + margin-left: 3rem !important; + } + + .ms-xxl-auto { + margin-left: auto !important; + } + + .p-xxl-0 { + padding: 0 !important; + } + + .p-xxl-1 { + padding: 0.25rem !important; + } + + .p-xxl-2 { + padding: 0.5rem !important; + } + + .p-xxl-3 { + padding: 1rem !important; + } + + .p-xxl-4 { + padding: 1.5rem !important; + } + + .p-xxl-5 { + padding: 3rem !important; + } + + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-xxl-0 { + padding-top: 0 !important; + } + + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + + .pt-xxl-3 { + padding-top: 1rem !important; + } + + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + + .pt-xxl-5 { + padding-top: 3rem !important; + } + + .pe-xxl-0 { + padding-right: 0 !important; + } + + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + + .pe-xxl-3 { + padding-right: 1rem !important; + } + + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + + .pe-xxl-5 { + padding-right: 3rem !important; + } + + .pb-xxl-0 { + padding-bottom: 0 !important; + } + + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + + .ps-xxl-0 { + padding-left: 0 !important; + } + + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + + .ps-xxl-3 { + padding-left: 1rem !important; + } + + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + + .ps-xxl-5 { + padding-left: 3rem !important; + } + + .text-xxl-start { + text-align: left !important; + } + + .text-xxl-end { + text-align: right !important; + } + + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + + .fs-2 { + font-size: 2rem !important; + } + + .fs-3 { + font-size: 1.75rem !important; + } + + .fs-4 { + font-size: 1.5rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + + .d-print-inline-block { + display: inline-block !important; + } + + .d-print-block { + display: block !important; + } + + .d-print-grid { + display: grid !important; + } + + .d-print-table { + display: table !important; + } + + .d-print-table-row { + display: table-row !important; + } + + .d-print-table-cell { + display: table-cell !important; + } + + .d-print-flex { + display: flex !important; + } + + .d-print-inline-flex { + display: inline-flex !important; + } + + .d-print-none { + display: none !important; + } +} \ No newline at end of file diff --git a/src/main/resources/static/raw/HyundaiI20.jpg b/src/main/resources/static/raw/HyundaiI20.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34320fbba45fa770534461e433d4401786e3e2fc GIT binary patch literal 5532 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 I2hP9#7i*~FqyPW_ literal 0 HcmV?d00001 diff --git a/src/main/resources/static/raw/ToyotaYarisWRC.jpg b/src/main/resources/static/raw/ToyotaYarisWRC.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c340e7460ed8e6cb0596b4b2407197ade72088a8 GIT binary patch literal 9613 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 Fe*jttG9CZ` literal 0 HcmV?d00001 diff --git a/src/main/resources/static/raw/circLogo.png b/src/main/resources/static/raw/circLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..c0094f197cb59b490ce5a151b91d6b2f212808fc GIT binary patch literal 35454 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/raw/fordPuma.jpg b/src/main/resources/static/raw/fordPuma.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1b9f53f4ced5c364294a85fb31b8d9d9f4dfb10 GIT binary patch literal 8697 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%0Dsay>if3}wDZB!JduH^5PZcz?_Re}?) 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ΞsU13rMyvduOau=t04R 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 - - - - RallyModels - - - - - - -
- -
-
-
-

Nueva Maqueta

-
-
- -
- - -
-
-
- - -
-
- -
-
-
-
-
- - - - - \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 5c50c88..a566001 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -1,13 +1,37 @@ - - - - RallyModels + + + + - +
+ +
+ login +
+ register + +
+ +
+ +

INDEX HTML!

-

Lista de maquetas

- Añadir Maqueta +
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html new file mode 100644 index 0000000..0a93814 --- /dev/null +++ b/src/main/resources/templates/login.html @@ -0,0 +1,95 @@ + + + + + + Login + + + +
+ logo +
+
+ +
+
+
+

Nombre Usuario

+ + +
+
+

Contraseña

+ +
+ No estas registrado? + +
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/maqueta.html b/src/main/resources/templates/maqueta.html deleted file mode 100644 index da8d0c3..0000000 --- a/src/main/resources/templates/maqueta.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - RallyModels - - - - - - - -
-
-

Lista Maquetas

-
- - - - - - - - - - - - - - - - - . - - - - - - - - - - -
DescripcionCocheCompeticionPrecioAcciones
DescripcionCocheCompeticionPrecio - Editar - Eliminar -
- -
- -
-
- ... -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
-
- - - \ No newline at end of file diff --git a/src/main/resources/templates/public/carrito.html b/src/main/resources/templates/public/carrito.html new file mode 100644 index 0000000..62d0a0a --- /dev/null +++ b/src/main/resources/templates/public/carrito.html @@ -0,0 +1,57 @@ + + + + + Title + + + + +
+ +
+
+
+
+

Carrito de la Compra

+
+
+
+
+
+

Aún no ha seleccionado ningún producto para comprar

+
+
+
+
+ +
+
Imagen de la maqueta
+
Maqueta +
+
Marca del Coche: + +
+
Modelo del Coche: + +
+
+
+
+
$20.00
+
+ Eliminar +
+
+
+
Precio Total:
+ +
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/public/crear_maqueta.html b/src/main/resources/templates/public/crear_maqueta.html new file mode 100644 index 0000000..15c271d --- /dev/null +++ b/src/main/resources/templates/public/crear_maqueta.html @@ -0,0 +1,89 @@ + + + + + RallyModels + + + + + + +
+ +
+
+
+

Nueva Maqueta

+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/editar_maqueta.html b/src/main/resources/templates/public/editar_maqueta.html similarity index 86% rename from src/main/resources/templates/editar_maqueta.html rename to src/main/resources/templates/public/editar_maqueta.html index f696a98..11f25c4 100644 --- a/src/main/resources/templates/editar_maqueta.html +++ b/src/main/resources/templates/public/editar_maqueta.html @@ -13,7 +13,7 @@ @@ -27,8 +27,8 @@

Edición de maquetas

-
- + +
+ + + + Title + + +
+
+
+
+

Factura

+

+ Compra #1234 +

+
+
+
+ +
+
+
+ +
+
+
+
+

+ Listado de productos +

+
+
+
+ + + + + + + + + + + + + + + + + +
ProductoPrecio
Producto123€
Total
+ + +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/public/js/scripts.js b/src/main/resources/templates/public/js/scripts.js new file mode 100644 index 0000000..b109abd --- /dev/null +++ b/src/main/resources/templates/public/js/scripts.js @@ -0,0 +1,7 @@ +/*! +* Start Bootstrap - Shop Item v5.0.5 (https://startbootstrap.com/template/shop-item) +* Copyright 2013-2022 Start Bootstrap +* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-shop-item/blob/master/LICENSE) +*/ +// This file is intentionally blank +// Use this file to add JavaScript to your project \ No newline at end of file diff --git a/src/main/resources/templates/public/maqueta.html b/src/main/resources/templates/public/maqueta.html new file mode 100644 index 0000000..01824da --- /dev/null +++ b/src/main/resources/templates/public/maqueta.html @@ -0,0 +1,125 @@ + + + + + RallyModels + + + + + + + +
+
+

Lista Maquetas

+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
DescripcionCocheCompeticionPrecioAcciones
DescripcionCocheCompeticionPrecio + Editar + Eliminar +
+
+ + +
+
+
+ + + fordPuma + +
+
+ +

+

+ +

+ + + Detalles + Añadir al carrito + +
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/public/maqueta_detalle.html b/src/main/resources/templates/public/maqueta_detalle.html new file mode 100644 index 0000000..d8f7770 --- /dev/null +++ b/src/main/resources/templates/public/maqueta_detalle.html @@ -0,0 +1,47 @@ + + + + + + Detalles de la maqueta + + + + +
+ +
+
+
+
Foto de la Maqueta
+
+
+
Piloto
+

Maqueta

+
+ $40.00 +
+

Descripcion

+
+ + +
+
+
+
+
+
+ +
+

Copyright © Rally Models Corp. 2023

+
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/public/register.html b/src/main/resources/templates/public/register.html new file mode 100644 index 0000000..296a53a --- /dev/null +++ b/src/main/resources/templates/public/register.html @@ -0,0 +1,25 @@ + + + + + Register + + +
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/public/usuarios.html b/src/main/resources/templates/public/usuarios.html new file mode 100644 index 0000000..39c9d96 --- /dev/null +++ b/src/main/resources/templates/public/usuarios.html @@ -0,0 +1,72 @@ + + + + + RallyModels + + + + + + + +
+
+

Lista Maquetas

+
+
+ +
+
+ + + + + + + + + + + + + + + + + . + + + + + + + + + + +
DescripcionCocheCompeticionPrecioAcciones
DescripcionCocheCompeticionPrecio + Editar + Eliminar +
+ +
+ + + \ No newline at end of file diff --git a/src/main/resources/templates/raw/images.jfif b/src/main/resources/templates/raw/images.jfif deleted file mode 100644 index f67791a16378f41a96ab592f6640c1e045a135a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8141 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 + + + + Registro de usuarios + + + + +
+ + +
+ +

Registro

+
+

Email

+ + +
+
+

Nombre

+ + +
+
+

Apellido

+ + +
+
+

Contraseña

+ +
+ No estas registrado? + + +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/utils/nav.html b/src/main/resources/templates/utils/nav.html new file mode 100644 index 0000000..5b3d6c8 --- /dev/null +++ b/src/main/resources/templates/utils/nav.html @@ -0,0 +1,9 @@ + \ No newline at end of file