templates/home/home.html.twig line 1

Open in your IDE?
  1. {% extends 'baseFront.html.twig' %}
  2. {% block title %}Hello HomeController!{% endblock %}
  3. {% block body %}
  4. <style>
  5.         /* ========================================
  6.            BEANSTALK - Style inspiré d'Addixo
  7.            ======================================== */
  8.         /* Variables CSS */
  9.         :root {
  10.             /* Couleurs principales - Style Addixo */
  11.             --primary-blue: #003d7a;
  12.             --primary-blue-dark: #002855;
  13.             --primary-blue-light: #0066cc;
  14.             --secondary-blue: #2563eb;
  15.             --accent-green: #10b981;
  16.             --accent-orange: #f59e0b;
  17.             /* Couleurs neutres */
  18.             --text-primary: #1a1a1a;
  19.             --text-secondary: #4a4a4a;
  20.             --text-light: #6b7280;
  21.             --bg-white: #ffffff;
  22.             --bg-light: #f8f9fa;
  23.             --bg-gray: #f3f4f6;
  24.             --border-color: #e5e7eb;
  25.             /* Typographie */
  26.             --font-primary: 'Roboto', sans-serif;
  27.             --font-secondary: 'Open Sans', sans-serif;
  28.             /* Espacements */
  29.             --spacing-xs: 0.5rem;
  30.             --spacing-sm: 1rem;
  31.             --spacing-md: 1.5rem;
  32.             --spacing-lg: 2rem;
  33.             --spacing-xl: 3rem;
  34.             --spacing-xxl: 5rem;
  35.             /* Transitions */
  36.             --transition: all 0.3s ease;
  37.             --transition-fast: all 0.2s ease;
  38.             /* Ombres */
  39.             --shadow-sm: 0 2px 4px rgba(0,0,0,0.05);
  40.             --shadow-md: 0 4px 8px rgba(0,0,0,0.1);
  41.             --shadow-lg: 0 10px 20px rgba(0,0,0,0.15);
  42.             --shadow-xl: 0 20px 40px rgba(0,0,0,0.2);
  43.         }
  44.         /* Reset et Base */
  45.         * {
  46.             margin: 0;
  47.             padding: 0;
  48.             box-sizing: border-box;
  49.         }
  50.         html {
  51.             scroll-behavior: smooth;
  52.         }
  53.         body {
  54.             font-family: var(--font-secondary);
  55.             font-size: 16px;
  56.             
  57.             color: var(--text-primary);
  58.             background-color: var(--bg-white);
  59.             overflow-x: hidden;
  60.         }
  61.         
  62.         /* Typography */
  63.         h1, h2, h3, h4, h5, h6 {
  64.             font-family: var(--font-primary);
  65.             font-weight: 700;
  66.             line-height: 1.2;
  67.             margin-bottom: 1rem;
  68.         }
  69.         h1 { font-size: 3rem; }
  70.         h2 { font-size: 2.5rem; }
  71.         h3 { font-size: 1.875rem; }
  72.         p {
  73.             margin-bottom: 1rem;
  74.             color: var(--text-secondary);
  75.         }
  76.         a {
  77.             text-decoration: none;
  78.             color: inherit;
  79.             transition: var(--transition);
  80.         }
  81.         
  82.         
  83.         /* Contact Form */
  84.         .contact-form-wrapper {
  85.             background: white;
  86.             padding: 2rem;
  87.             border-radius: 8px;
  88.             box-shadow: var(--shadow-md);
  89.         }
  90.         .form-header {
  91.             margin-bottom: 2rem;
  92.         }
  93.         .form-header h3 {
  94.             color: #6b7280;
  95.             margin-bottom: 0.5rem;
  96.         }
  97.         .form-header p {
  98.             color: var(--text-light);
  99.             font-size: 0.9rem;
  100.         }
  101.         .form-row {
  102.             display: grid;
  103.             grid-template-columns: 1fr 1fr;
  104.             gap: 1rem;
  105.             margin-bottom: 1rem;
  106.         }
  107.         .form-group {
  108.             margin-bottom: 1rem;
  109.         }
  110.         .form-group label {
  111.             display: block;
  112.             margin-bottom: 0.5rem;
  113.             color: var(--text-primary);
  114.             font-weight: 500;
  115.         }
  116.         .form-group input,
  117.         .form-group select,
  118.         .form-group textarea {
  119.             width: 100%;
  120.             padding: 0.75rem;
  121.             border: 1px solid var(--border-color);
  122.             border-radius: 4px;
  123.             font-family: inherit;
  124.             transition: var(--transition);
  125.             background: white;
  126.         }
  127.         .form-group select {
  128.             cursor: pointer;
  129.             appearance: none;
  130.             background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
  131.             background-repeat: no-repeat;
  132.             background-position: right 0.75rem center;
  133.             background-size: 1.5em 1.5em;
  134.             padding-right: 2.5rem;
  135.         }
  136.         .form-group select optgroup {
  137.             font-weight: 600;
  138.             color: var(--primary-blue);
  139.         }
  140.         .form-group select option {
  141.             padding: 0.5rem;
  142.             color: var(--text-primary);
  143.         }
  144.         .form-group textarea {
  145.             resize: vertical;
  146.             min-height: 120px;
  147.         }
  148.         .form-group input:focus,
  149.         .form-group select:focus,
  150.         .form-group textarea:focus {
  151.             outline: none;
  152.             border-color: var(--primary-blue);
  153.             box-shadow: 0 0 0 3px rgba(0, 61, 122, 0.1);
  154.         }
  155.         .checkbox-group {
  156.             display: flex;
  157.             align-items: start;
  158.             gap: 0.5rem;
  159.         }
  160.         .checkbox-group input[type="checkbox"] {
  161.             width: auto;
  162.             margin-top: 0.25rem;
  163.         }
  164.         .checkbox-group label {
  165.             margin-bottom: 0;
  166.         }
  167.         .checkbox-group a {
  168.             color: var(--primary-blue);
  169.             text-decoration: underline;
  170.         }
  171.         .btn-submit {
  172.             width: 100%;
  173.             padding: 1rem;
  174.             background: #6b7280;
  175.             color: white;
  176.             border: none;
  177.             border-radius: 4px;
  178.             font-size: 1rem;
  179.             font-weight: 600;
  180.             cursor: pointer;
  181.             transition: var(--transition);
  182.             display: flex;
  183.             align-items: center;
  184.             justify-content: center;
  185.             gap: 0.5rem;
  186.         }
  187.         .btn-submit:hover {
  188.             background: #6b7280;
  189.             transform: translateY(-2px);
  190.         }
  191.         /* Footer */
  192.         .footer {
  193.             background: var(--text-primary);
  194.             color: white;
  195.             padding: 3rem 0 1rem;
  196.         }
  197.         .footer-top {
  198.             display: grid;
  199.             grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  200.             gap: 2rem;
  201.             margin-bottom: 2rem;
  202.         }
  203.         .footer-column h4 {
  204.             margin-bottom: 1rem;
  205.             color: white;
  206.         }
  207.         .footer-logo {
  208.             margin-bottom: 1rem;
  209.         }
  210.         .footer-logo .logo-text {
  211.             font-family: var(--font-primary);
  212.             font-size: 1.5rem;
  213.             font-weight: 900;
  214.             color: white;
  215.             letter-spacing: 1px;
  216.             line-height: 1;
  217.         }
  218.         .footer-logo .logo-tagline {
  219.             font-size: 0.65rem;
  220.             color: rgba(255, 255, 255, 0.7);
  221.             text-transform: uppercase;
  222.             letter-spacing: 2px;
  223.             margin-top: 2px;
  224.             line-height: 1;
  225.         }
  226.         .footer-description {
  227.             color: rgba(255, 255, 255, 0.7);
  228.             font-size: 0.9rem;
  229.             margin-bottom: 1rem;
  230.         }
  231.         .footer-social {
  232.             display: flex;
  233.             gap: 0.5rem;
  234.         }
  235.         .footer-social a {
  236.             width: 35px;
  237.             height: 35px;
  238.             background: rgba(255, 255, 255, 0.1);
  239.             border-radius: 50%;
  240.             display: flex;
  241.             align-items: center;
  242.             justify-content: center;
  243.             transition: var(--transition);
  244.         }
  245.         .footer-social a:hover {
  246.             background: var(--primary-blue);
  247.         }
  248.         .footer-links {
  249.             list-style: none;
  250.         }
  251.         .footer-links li {
  252.             margin-bottom: 0.5rem;
  253.         }
  254.         .footer-links a {
  255.             color: rgba(255, 255, 255, 0.7);
  256.             font-size: 0.9rem;
  257.             transition: var(--transition);
  258.         }
  259.         .footer-links a:hover {
  260.             color: white;
  261.             padding-left: 5px;
  262.         }
  263.         .footer-bottom {
  264.             padding-top: 2rem;
  265.             border-top: 1px solid rgba(255, 255, 255, 0.1);
  266.         }
  267.         .footer-bottom-content {
  268.             display: flex;
  269.             justify-content: space-between;
  270.             align-items: center;
  271.         }
  272.         .copyright {
  273.             color: rgba(255, 255, 255, 0.7);
  274.             font-size: 0.9rem;
  275.         }
  276.         .footer-legal {
  277.             display: flex;
  278.             gap: 1.5rem;
  279.         }
  280.         .footer-legal a {
  281.             color: rgba(255, 255, 255, 0.7);
  282.             font-size: 0.9rem;
  283.         }
  284.         .footer-legal a:hover {
  285.             color: white;
  286.         }
  287.         /* Back to Top */
  288.         .back-to-top {
  289.             position: fixed;
  290.             bottom: 30px;
  291.             right: 30px;
  292.             width: 50px;
  293.             height: 50px;
  294.             background: var(--primary-blue);
  295.             color: white;
  296.             border: none;
  297.             border-radius: 50%;
  298.             display: flex;
  299.             align-items: center;
  300.             justify-content: center;
  301.             cursor: pointer;
  302.             font-size: 1.2rem;
  303.             opacity: 0;
  304.             visibility: hidden;
  305.             transition: var(--transition);
  306.             box-shadow: var(--shadow-lg);
  307.         }
  308.         .back-to-top.visible {
  309.             opacity: 1;
  310.             visibility: visible;
  311.         }
  312.         .back-to-top:hover {
  313.             background: var(--primary-blue-dark);
  314.             transform: translateY(-5px);
  315.         }
  316.         /* Mobile Sidebar */
  317.         .mobile-sidebar {
  318.             position: fixed;
  319.             top: 0;
  320.             left: -320px;
  321.             width: 320px;
  322.             height: 100vh;
  323.             background: white;
  324.             z-index: 2000;
  325.             transition: left 0.3s ease;
  326.             overflow-y: auto;
  327.             box-shadow: 2px 0 20px rgba(0, 0, 0, 0.1);
  328.         }
  329.         .mobile-sidebar.active {
  330.             left: 0;
  331.         }
  332.         .mobile-overlay {
  333.             position: fixed;
  334.             top: 0;
  335.             left: 0;
  336.             width: 100%;
  337.             height: 100%;
  338.             background: rgba(0, 0, 0, 0.5);
  339.             z-index: 1999;
  340.             opacity: 0;
  341.             visibility: hidden;
  342.             transition: all 0.3s ease;
  343.         }
  344.         .mobile-overlay.active {
  345.             opacity: 1;
  346.             visibility: visible;
  347.         }
  348.         .sidebar-header {
  349.             display: flex;
  350.             justify-content: space-between;
  351.             align-items: center;
  352.             padding: 1.5rem;
  353.             border-bottom: 1px solid var(--border-color);
  354.         }
  355.         .sidebar-logo .logo-text {
  356.             font-family: var(--font-primary);
  357.             font-size: 1.5rem;
  358.             font-weight: 900;
  359.             color: var(--primary-blue);
  360.             letter-spacing: 1px;
  361.         }
  362.         .sidebar-logo .logo-tagline {
  363.             font-size: 0.65rem;
  364.             color: var(--text-light);
  365.             text-transform: uppercase;
  366.             letter-spacing: 2px;
  367.             margin-top: 2px;
  368.         }
  369.         .sidebar-close {
  370.             background: none;
  371.             border: none;
  372.             font-size: 1.5rem;
  373.             color: var(--text-primary);
  374.             cursor: pointer;
  375.             padding: 0.5rem;
  376.             transition: var(--transition);
  377.         }
  378.         .sidebar-close:hover {
  379.             color: var(--primary-blue);
  380.             transform: rotate(90deg);
  381.         }
  382.         .sidebar-nav {
  383.             padding: 1.5rem 0;
  384.         }
  385.         .sidebar-menu {
  386.             list-style: none;
  387.             padding: 0;
  388.             margin: 0;
  389.         }
  390.         .sidebar-menu > li {
  391.             border-bottom: 1px solid var(--border-color);
  392.         }
  393.         .sidebar-link {
  394.             display: flex;
  395.             justify-content: space-between;
  396.             align-items: center;
  397.             padding: 1rem 1.5rem;
  398.             color: var(--text-primary);
  399.             font-size: 1rem;
  400.             font-weight: 500;
  401.             transition: var(--transition);
  402.         }
  403.         .sidebar-link:hover {
  404.             color: var(--primary-blue);
  405.             background: var(--bg-light);
  406.             padding-left: 2rem;
  407.         }
  408.         .sidebar-dropdown .dropdown-toggle i {
  409.             transition: var(--transition);
  410.         }
  411.         .sidebar-dropdown.active .dropdown-toggle i {
  412.             transform: rotate(180deg);
  413.         }
  414.         .sidebar-submenu {
  415.             list-style: none;
  416.             padding: 0;
  417.             background: var(--bg-gray);
  418.             display: none;
  419.         }
  420.         .sidebar-dropdown.active .sidebar-submenu {
  421.             display: block;
  422.         }
  423.         .sidebar-submenu li {
  424.             border-bottom: 1px solid var(--border-color);
  425.         }
  426.         .sidebar-submenu li:last-child {
  427.             border-bottom: none;
  428.         }
  429.         .sidebar-submenu a {
  430.             display: block;
  431.             padding: 0.75rem 1.5rem 0.75rem 3rem;
  432.             color: var(--text-secondary);
  433.             font-size: 0.9rem;
  434.             transition: var(--transition);
  435.         }
  436.         .sidebar-submenu a:hover {
  437.             color: var(--primary-blue);
  438.             background: white;
  439.             padding-left: 3.5rem;
  440.         }
  441.         .sidebar-cta {
  442.             padding: 1.5rem;
  443.             margin-top: 1rem;
  444.         }
  445.         .btn-sidebar-cta {
  446.             display: block;
  447.             width: 100%;
  448.             padding: 0.75rem;
  449.             background: var(--primary-blue);
  450.             color: white;
  451.             text-align: center;
  452.             border-radius: 4px;
  453.             font-weight: 600;
  454.             transition: var(--transition);
  455.         }
  456.         .btn-sidebar-cta:hover {
  457.             background: var(--primary-blue-dark);
  458.             transform: translateY(-2px);
  459.         }
  460.         /* Hide main nav on mobile when sidebar is used */
  461.         @media (max-width: 768px) {
  462.             .main-nav {
  463.                 display: none !important;
  464.             }
  465.             body.sidebar-open {
  466.                 overflow: hidden;
  467.             }
  468.         }
  469.         /* Responsive */
  470.         @media (max-width: 768px) {
  471.             .mobile-menu-toggle {
  472.                 display: flex;
  473.             }
  474.             .btn-header {
  475.                 display: none;
  476.             }
  477.             h1 { font-size: 2rem; }
  478.             h2 { font-size: 1.75rem; }
  479.             h3 { font-size: 1.5rem; }
  480.             .slide-title {
  481.                 font-size: 2rem;
  482.             }
  483.             .slide-description {
  484.                 font-size: 1rem;
  485.             }
  486.             .slide-buttons {
  487.                 flex-direction: column;
  488.                 align-items: center;
  489.             }
  490.             .products-grid,
  491.             .news-grid {
  492.                 grid-template-columns: 1fr;
  493.             }
  494.             .service-row,
  495.             .service-row.reverse {
  496.                 grid-template-columns: 1fr;
  497.                 direction: ltr;
  498.             }
  499.             .contact-wrapper {
  500.                 grid-template-columns: 1fr;
  501.             }
  502.             .form-row {
  503.                 grid-template-columns: 1fr;
  504.             }
  505.             .footer-top {
  506.                 grid-template-columns: 1fr;
  507.                 text-align: center;
  508.             }
  509.             .footer-bottom-content {
  510.                 flex-direction: column;
  511.                 gap: 1rem;
  512.                 text-align: center;
  513.             }
  514.             .footer-legal {
  515.                 flex-wrap: wrap;
  516.                 justify-content: center;
  517.             }
  518.             .footer-social {
  519.                 justify-content: center;
  520.             }
  521.         }
  522.         @media (max-width: 480px) {
  523.             .container {
  524.                 padding: 0 15px;
  525.             }
  526.             section {
  527.                 padding: 3rem 0;
  528.             }
  529.         }
  530.     </style>
  531. <main>
  532.     <div class="container px-1 ">
  533.         <script>
  534.             const q = window.location.search;
  535.             if (q.match(/(\?|&)(page_id|p|cat|feed|author)=/)) {
  536.                 window.location.replace(window.location.origin + '/');
  537.             }
  538.         </script>
  539.         <!-- About Conference -->
  540.         <div class="row">
  541.         {% for gestionhome in gestionhomes %}
  542.         {% if loop.index == 1 %}
  543.             <div class="col-lg-6">
  544.                 <h1>{{gestionhome.titre}}</h1>
  545.                 <p>
  546.                     {{gestionhome.description}}
  547.                 </p>
  548.             </div>
  549.             <!-- Gallery -->
  550.             <div class="col-lg-6 text-center">
  551.                 <div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="carousel">
  552.                     <div class="carousel-indicators">
  553.                         <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="" aria-label="Slide 1"></button>
  554.                         <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2" class=""></button>
  555.                         <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3" class="active" aria-current="true"></button>
  556.                     </div>
  557.                     <div class="carousel-inner">
  558.                         <div class="carousel-item">
  559.                             <picture>
  560.                                 <source srcset="{{ gestionhome.image1 ? asset('uploads/gestionhome/' ~ gestionhome.image1) : '' }}" type="image/webp">
  561.                                 <img class="img-fluid w-100 mt-3" src="{{ gestionhome.image1 ? asset('uploads/gestionhome/' ~ gestionhome.image1) : '' }}" alt="photo boules lumineuses" width="466" height="311">
  562.                             </picture>
  563.                         </div>
  564.                         <div class="carousel-item">
  565.                             <picture>
  566.                                 <source srcset="{{ gestionhome.image2 ? asset('uploads/gestionhome/' ~ gestionhome.image2) : '' }}" type="image/webp">
  567.                                 <img class="img-fluid w-100 mt-3" src="{{ gestionhome.image2 ? asset('uploads/gestionhome/' ~ gestionhome.image2) : '' }}" alt="Vue aérienne cité internationale" width="466" height="311" loading="lazy">
  568.                             </picture>
  569.                         </div>
  570.                         <div class="carousel-item active">
  571.                             <picture>
  572.                                 <source srcset="{{ gestionhome.image3 ? asset('uploads/gestionhome/' ~ gestionhome.image3) : '' }}" type="image/webp">
  573.                                 <img class="img-fluid w-100 mt-3" src="{{ gestionhome.image3 ? asset('uploads/gestionhome/' ~ gestionhome.image3) : '' }}" alt="Vue générale cité internationale" width="466" height="262" loading="lazy">
  574.                             </picture>
  575.                         </div>
  576.                     </div>
  577.                 </div>
  578.             </div>
  579.         </div>
  580.         {% endif %}
  581.         {% endfor %}
  582.         <section id="news" class="news-panel">
  583.             <h2>Latest News</h2>
  584.             <div class="news-list">
  585.                 {% for new in news %}
  586.         {% if loop.index == 1 %}
  587.                 <article class="news-item">
  588.                     <h3><a href="{{new.lien}}">{{new.titre}}</a></h3>
  589.                     <p class="news-date">{{ new.date ? new.date|date('Y-m-d') : '' }}</p>
  590.                    {# <p></p><p>Instructions to Reproducible Research in Pattern Recognition (RRPR) Badge are available <a href="">here</a>.</p>
  591.                     <p></p>#}
  592.                 </article>
  593.         {% endif %}
  594.         {% if loop.index == 2 %}
  595.                 <article class="news-item">
  596.                     <h3><a href="{{new.lien}}">{{new.titre}}</a></h3>
  597.                     <p class="news-date">{{ new.date ? new.date|date('Y-m-d') : '' }}</p>
  598.                    {# <p></p><p>Thanks to <a href="">Elsevier</a> for supporting the Piero Zamperoni Student Award.</p>
  599.                    {# <p></p>#}
  600.                 </article>
  601.         {% endif %}
  602.         {% if loop.index == 3 %}
  603.                 <article class="news-item">
  604.                     <h3><a href="{{new.lien}}">{{new.titre}}</a></h3>
  605.                     <p class="news-date">{{ new.date ? new.date|date('Y-m-d') : '' }}</p>
  606.                     {#<p></p><p>We apologize for the delay in activating the submission system. You can now submit your papers via CMT.</p>
  607.                     <p></p>#}
  608.                 </article>
  609.         {% endif %}
  610.                 {% endfor %}
  611.             </div>
  612.             <p class="more-news"><a href="{{ path('app_news') }}">See all news →</a></p>
  613.         </section>
  614.         
  615.            {#    {% for gestionhome in gestionhomes %}
  616.         {% if loop.index == 1 %}
  617.                 <div class="text-center">
  618.                     <img class="w-50" src="{{ gestionhome.logo ? asset('uploads/gestionhome/' ~ gestionhome.logo) : '' }}" alt="IAPR Logo">
  619.                 </div>
  620.                 {% endif %}
  621.         {% endfor %}#} 
  622.             </div>
  623.         </div>
  624.         <div class="affiche-wrapper">
  625.     <img src="{{ asset('assetFront/images/affiche.jpg') }}" class="affiche" alt="Affiche">
  626. </div><style>
  627. .affiche-wrapper {
  628.     display: flex;
  629.     justify-content: center;
  630. }
  631. .affiche {
  632.     width: 100%;
  633.     max-width: 675px; /* limite sur grands écrans */
  634.     height: auto;      /* garde les proportions */
  635. }</style>
  636.         
  637.         {#<div class="row">
  638.             <div class="col-12 text-center my-3">
  639.                 <div class="visits-block">
  640.                     👁️ <span id="visits-count24h" title="last 24h visits">807</span> (24h)
  641.                 </div>
  642.                 <div class="visits-block">
  643.                     👁️ <span id="visits-count7d" title="last 7 days visits">4662</span> (7 days)
  644.                 </div>
  645.             </div>
  646.         </div>#}
  647.         <script>
  648.             (async function() {
  649.                 const siteId = "96da01bb-0162-407e-88a0-03d3e2fe0465";
  650.                 const url = window.location.pathname;
  651.                 try {
  652.                     const response7d = await fetch(`https://livelightning.ddnsfree.com/visits?range=7d`);
  653.                     const data = await response7d.json();
  654.                     const views = data.visits ?? "N/A";
  655.                     document.getElementById("visits-count7d").textContent = views;
  656.                     const response24h = await fetch(`https://livelightning.ddnsfree.com/visits?range=24h`);
  657.                     const data24h = await response24h.json();
  658.                     const views24h = data24h.visits ?? "N/A";
  659.                     document.getElementById("visits-count24h").textContent = views24h;
  660.                 } catch (error) {
  661.                     console.error("Erreur compteur Umami :", error);
  662.                     document.getElementById("visits-count7d").textContent = "N/A";
  663.                     document.getElementById("visits-count24h").textContent = "N/A";
  664.                 }
  665.             })();
  666.         </script>
  667.     </div>
  668.     <!-- Scripts -->
  669. <script src="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.js"></script>
  670. <script src="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js"></script>
  671. <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
  672.    
  673. </main>
  674. {% endblock %}