1 2<!DOCTYPE html> 3<html lang="pt"> 4 5<head> 6 <meta charset="UTF-8"> 7 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <meta name="description" content="RoyalFare - Restaurant html template"> 10 11 <title> 12 Comida em Casa - Entrega de comida ao domicÃlio em Castelo Branco â Tudo numa entrega! </title> 13 14 <!-- Favicon --> 15 <link rel="shortcut icon" type="image/x-icon" href="/favicon.png"> 16 17 <!-- All CSS files --> 18 <link rel="stylesheet" href="/assets/css/vendor/bootstrap.min.css"> 19 <link rel="stylesheet" href="/assets/css/vendor/all.min.css"> 20 <link rel="stylesheet" href="/assets/css/vendor/ion.rangeSlider.css"> 21 <link rel="stylesheet" href="/assets/css/vendor/slick.css"> 22 <link rel="stylesheet" href="/assets/css/vendor/slick-theme.css"> 23 <link rel="stylesheet" href="/assets/css/vendor/nice-select.css"> 24 <link rel="stylesheet" href="/assets/css/vendor/odometer.min.css"> 25 <link rel="stylesheet" href="/assets/css/app.css"> 26 <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orestbida/[email protected]/dist/cookieconsent.css"> 27 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.8.2/css/pikaday.min.css"> 28 29
29<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous" ></script>
29 30 31
31<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js" integrity="sha512-VEd+nq25CkR676O+pLBnDW09R7VQX9Mdiij052gVCp5yVH3jGtH70Ho/UUv4mJDsEdTvqRCFZg0NKGiojGnUCw==" defer crossorigin="anonymous" referrerpolicy="no-referrer"></script>
31 32 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.css" integrity="sha512-3pIirOrwegjM6erE5gPSwkUzO+3cTjpnV9lexlNZqvupR64iZBnOOTiiLPb9M36zpMScbmUNIcHUqKD47M719g==" crossorigin="anonymous" referrerpolicy="no-referrer" /> 33 34
34<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert2/11.14.5/sweetalert2.min.js" integrity="sha512-JCDnPKShC1tVU4pNu5mhCEt6KWmHf0XPojB0OILRMkr89Eq9BHeBP+54oUlsmj8R5oWqmJstG1QoY6HkkKeUAg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
34 35 36 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert2/11.14.5/sweetalert2.css" integrity="sha512-6qScZESleBziOBqJwOPurSy6lhLqHGjHNALOOFX0mzRVPiE5SZQvepRzeSO1OB475fcZywuMjxtkrFaO93aq9g==" crossorigin="anonymous" referrerpolicy="no-referrer" /> 37 38 <!--
38<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous" defer></script>
38--> 39 40
40<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous" defer></script>
40 41 42
42<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous" defer></script>
42 43 44 <link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet"> 45
45<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
45 46 47 <!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 47-48
47 48 <script async src="https://www.googletagmanager.com/gtag/js?id=
48G-71BS4L1VMQ
vendor: 13 bytes, lines 48-49
48"></script> 49
49<script> 50
vendor: 134 bytes, lines 50-54
50window.dataLayer = window.dataLayer || []; 51 function gtag(){dataLayer.push(arguments);} 52 gtag('js', new Date()); 53 54 gtag('config', '
54G-71BS4L1VMQ
vendor: 5 bytes, lines 54-55
54'); 55
55</script>
55 56 57 <!-- Google Tag Manager --> 58
58<script>
vendor: 331 bytes, lines 58-62
58(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 59 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 60 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 61 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 62 })(window,document,'script','dataLayer','
62GTM-TQGVS3C9
vendor: 3 bytes, line 62
62');
62</script>
62 63 <!-- End Google Tag Manager --> 64 65 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" /> 66 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flag-icon-css/css/flag-icon.min.css"> 67 68 <link href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" rel="stylesheet" /> 69 70 <!-- JS do toastr --> 71
71<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
71 72 73 <meta name="description" content="Comida em Casa, restaurante, restaurantes, castelo branco, entregas em casa, entrega ao domicilio, churrasqueira da quinta, hamburgueria da aldeia, vinho ao balcão, leitão beirão, a padaria beiroa"> 74 75 <meta name="google-site-verification" content="iaGWanRBHKDcVz43_B5zSmqIYGqHbk6DJH-zB8s1ypQ" /> 76 77 78 79</head> 80 81<body id="body" class="x-hidden"> 82 83<!-- Connected Sites -->
84<script> 85if(window._mtmReady){ 86 console.error('Connected sites script already loaded. You might have it dupplicated.'); 87} else { 88window._mtmReady=true; 89var _mtm = window._mtm = window._mtm || []; 90_mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'}); 91var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 92g.async=true; g.src='https://egoi.site/1697503_comidaemcasa.online.js?v='+new Date().getTime(); 93s.parentNode.insertBefore(g,s); 94} 95</script>
95 96<!-- End Connected Sites --> 97 98<div id="overlay"></div> 99<!-- --------------------------------------------------------POP UP ---------------------------------------------------------------------------- --> 100<style> 101 /* Estilo para tornar o botão de fechar uma "bolinha" fora da imagem */ 102 div:where(.swal2-container) button:where(.swal2-close) { 103 background: white !important; 104 color: #d12421 !important; /* Cor vermelha do teu site */ 105 border-radius: 50%; 106 width: 30px !important; 107 height: 30px !important; 108 font-size: 24px !important; 109 box-shadow: 0 4px 10px rgba(0,0,0,0.4) !important; 110 /* Posiciona o botão um pouco para fora no canto superior direito */ 111 position: absolute !important; 112 top: -5px !important; 113 right: -15px !important; 114 opacity: 1 !important; 115 display: flex !important; 116 align-items: center !important; 117 justify-content: center !important; 118 border: 2px solid white !important; 119 z-index: 9999 !important; 120 } 121 122 /* Permite que o botão saia dos limites da caixa */ 123 .swal2-popup { 124 overflow: visible !important; 125 } 126</style> 127 128<!--
128<script> 129 document.addEventListener("DOMContentLoaded", function() { 130 const popupName = 'popup_natal_viewed_v2'; // Mudei para v2 para testares novamente 131 132 if (!localStorage.getItem(popupName)) { 133 window.addEventListener('load', function() { 134 setTimeout(function() { 135 Swal.fire({ 136 imageUrl: '/popup_natal.jpg', 137 imageAlt: 'Campanha de Natal', 138 showConfirmButton: false, 139 showCloseButton: true, 140 background: 'transparent', 141 backdrop: `rgba(0,0,0,0.8)`, 142 padding: 0, 143 144 /* AQUI DEFINIMOS O TAMANHO */ 145 width: '500px', // Define uma largura máxima (o que a torna mais pequena) 146 147 customClass: { 148 popup: 'animated fadeInDown' 149 }, 150 didOpen: () => { 151 localStorage.setItem(popupName, 'true'); 152 } 153 }); 154 }, 1500); 155 }); 156 } 157 }); 158</script>
158--> 159<!-- ----------------------------------------------------------------------------------------------------------------------------------------------- --> 160 161 <style> 162 #overlay { 163 display: none; 164 position: fixed; 165 top: 0; 166 left: 0; 167 width: 100%; 168 height: 100%; 169 background-color: rgba(0, 0, 0, 0.4); 170 z-index: 9999; 171 animation: fadeIn 0.3s ease; 172 } 173 174 /* Animação do fadeIn */ 175 @keyframes fadeIn { 176 0% { opacity: 0; } 177 100% { opacity: 1; } 178 } 179 180 /* Modal */ 181 #appPrompt { 182 display: none; 183 position: fixed; 184 top: 50%; 185 left: 50%; 186 transform: translate(-50%, -50%); 187 background-color: #ffffff; 188 padding: 20px; 189 border-radius: 12px; 190 box-shadow: 0px 10px 30px rgba(0, 0, 0, 0.1); 191 z-index: 99999; 192 width: 300px; 193 text-align: center; 194 animation: slideIn 0.5s ease; 195 } 196 197 /* Animação do slideIn */ 198 @keyframes slideIn { 199 0% { transform: translate(-50%, -100%); } 200 100% { transform: translate(-50%, -50%); } 201 } 202 203 /* TÃtulo da Modal */ 204 #appPrompt h2 { 205 margin-bottom: 20px; 206 color: #333; 207 font-size: 20px; 208 } 209 210 /* Botões */ 211 .btn33 { 212 display: inline-block; 213 padding: 12px 20px; 214 background-color: #4CAF50; 215 color: white; 216 font-size: 16px; 217 border: none; 218 border-radius: 8px; 219 cursor: pointer; 220 margin: 5px; 221 transition: background-color 0.3s ease; 222 } 223 </style> 224 225<div id="preloader"> 226 <div class="loading"> 227 <div class="loader"></div> 228 <!--<div id="cooking"> 229
229<script> 230 for (var i = 0; i < 5; i++) { 231 var bubble = document.createElement('div'); 232 bubble.classList.add('bubble'); 233 document.getElementById('cooking').appendChild(bubble); 234 } 235 </script>
235 236 237 <div id="area"> 238 <div id="sides"> 239 <div id="pan"> 240 <!-- Aqui pode ir o conteúdo relacionado à frigideira -- 241 </div> 242 <div id="handle"> 243 <!-- Aqui pode ir o conteúdo relacionado ao cabo -- 244 </div> 245 </div> 246 247 <div id="pancake"> 248 <div id="pastry"> 249 <!-- Aqui pode ir o conteúdo relacionado ao pastel -- 250 </div> 251 </div> 252 </div> 253 </div>--> 254 </div> 255</div> 256 257<style> 258.loader { 259 width: 60px; 260 aspect-ratio: 2; 261 background: no-repeat radial-gradient(circle closest-side, #d12421 90%, transparent) 0% 50%, no-repeat radial-gradient(circle closest-side, #d124218f 90%, transparent) 50% 50%, no-repeat radial-gradient(circle closest-side, #d12421 90%, transparent) 100% 50%; 262 background-size: calc(100% / 3) 50%; 263 animation: l3 1s infinite linear; 264} 265 266@keyframes l3 { 267 20% { 268 background-position: 0% 0%, 50% 50%, 100% 50%; 269 } 270 40% { 271 background-position: 0% 100%, 50% 0%, 100% 50%; 272 } 273 60% { 274 background-position: 0% 50%, 50% 100%, 100% 0%; 275 } 276 80% { 277 background-position: 0% 50%, 50% 50%, 100% 100%; 278 } 279} 280 281#cooking { 282 position: relative; 283 margin: 0 auto; 284 top: 0; 285 width: 400px; 286 height: 400px; 287 overflow: hidden; 288} 289 290#cooking .bubble { 291 position: absolute; 292 border-radius: 100%; 293 box-shadow: 0 0 .25vh rgba(51, 51, 51, 0.1); 294 opacity: 0; 295} 296 297#cooking .bubble:nth-child(1) { 298 margin-top: 2.5vh; 299 left: 58%; 300 width: 2.5vh; 301 height: 2.5vh; 302 background-color: rgba(51, 51, 51, 0.1); 303 animation: bubble 2s cubic-bezier(.53, .16, .39, .96) infinite; 304} 305 306#cooking .bubble:nth-child(2) { 307 margin-top: 3vh; 308 left: 52%; 309 width: 2vh; 310 height: 2vh; 311 background-color: rgba(51, 51, 51, 0.2); 312 animation: bubble 2s ease-in-out .35s infinite; 313} 314 315#cooking .bubble:nth-child(3) { 316 margin-top: 1.8vh; 317 left: 50%; 318 width: 1.5vh; 319 height: 1.5vh; 320 background-color: #333; 321 animation: bubble 1.5s cubic-bezier(.53, .16, .39, .96) .55s infinite; 322} 323 324#cooking .bubble:nth-child(4) { 325 margin-top: 2.7vh; 326 left: 56%; 327 width: 1.2vh; 328 height: 1.2vh; 329 background-color: rgba(51, 51, 51, 0.3); 330 animation: bubble 1.8s cubic-bezier(.53, .16, .39, .96) .9s infinite; 331} 332 333#cooking .bubble:nth-child(5) { 334 margin-top: 2.7vh; 335 left: 63%; 336 width: 1.1vh; 337 height: 1.1vh; 338 background-color: rgba(51, 51, 51, 0.4); 339 animation: bubble 1.6s ease-in-out 1s infinite; 340} 341 342#area { 343 position: absolute; 344 bottom: 0; 345 right: 0; 346 width: 50%; 347 height: 50%; 348 background-color: transparent; 349 transform-origin: 15% 60%; 350 animation: flip 2.1s ease-in-out infinite; 351} 352 353#area #sides { 354 position: absolute; 355 width: 100%; 356 height: 100%; 357 transform-origin: 15% 60%; 358 animation: switchSide 2.1s ease-in-out infinite; 359} 360 361#area #sides #handle { 362 position: absolute; 363 bottom: 18%; 364 right: 80%; 365 width: 35%; 366 height: 20%; 367 background-color: transparent; 368 border-top: 1vh solid #333; 369 border-left: 1vh solid transparent; 370 border-radius: 100%; 371 transform: rotate(20deg) rotateX(0deg) scale(1.3, .9); 372} 373 374#area #sides #pan { 375 position: absolute; 376 bottom: 20%; 377 right: 30%; 378 width: 50%; 379 height: 8%; 380 background-color: #333; 381 border-radius: 0 0 1.4em 1.4em; 382 transform-origin: -15% 0; 383} 384 385#pancake { 386 position: absolute; 387 top: 24%; 388 width: 100%; 389 height: 100%; 390 transform: rotateX(85deg); 391 animation: jump 2.1s ease-in-out infinite; 392} 393 394#pancake #pastry { 395 position: absolute; 396 bottom: 26%; 397 right: 37%; 398 width: 40%; 399 height: 45%; 400 background-color: #333; 401 box-shadow: 0 0 3px 0 #333; 402 border-radius: 100%; 403 transform-origin: -20% 0; 404 animation: fly 2.1s ease-in-out infinite; 405} 406 407@keyframes jump { 408 0% { 409 top: 24%; 410 transform: rotateX(85deg); 411 } 412 25% { 413 top: 10%; 414 transform: rotateX(0deg); 415 } 416 50% { 417 top: 30%; 418 transform: rotateX(85deg); 419 } 420 75% { 421 transform: rotateX(0deg); 422 } 423 100% { 424 transform: rotateX(85deg); 425 } 426} 427 428@keyframes flip { 429 0% { 430 transform: rotate(0deg); 431 } 432 5% { 433 transform: rotate(-27deg); 434 } 435 30%, 50% { 436 transform: rotate(0deg); 437 } 438 55% { 439 transform: rotate(27deg); 440 } 441 83.3% { 442 transform: rotate(0deg); 443 } 444 100% { 445 transform: rotate(0deg); 446 } 447} 448 449@keyframes switchSide { 450 0% { 451 transform: rotateY(0deg); 452 } 453 50% { 454 transform: rotateY(180deg); 455 } 456 100% { 457 transform: rotateY(0deg); 458 } 459} 460 461@keyframes fly { 462 0% { 463 bottom: 26%; 464 transform: rotate(0deg); 465 } 466 10% { 467 bottom: 40%; 468 } 469 50% { 470 bottom: 26%; 471 transform: rotate(-190deg); 472 } 473 80% { 474 bottom: 40%; 475 } 476 100% { 477 bottom: 26%; 478 transform: rotate(0deg); 479 } 480} 481 482@keyframes bubble { 483 0% { 484 transform: scale(.15, .15); 485 top: 80%; 486 opacity: 0; 487 } 488 50% { 489 transform: scale(1.1, 1.1); 490 opacity: 1; 491 } 492 100% { 493 transform: scale(.33, .33); 494 top: 60%; 495 opacity: 0; 496 } 497} 498 499@keyframes pulse { 500 0% { 501 transform: scale(1, 1); 502 opacity: .25; 503 } 504 50% { 505 transform: scale(1.2, 1); 506 opacity: 1; 507 } 508 100% { 509 transform: scale(1, 1); 510 opacity: .25; 511 } 512} 513</style> 514 515 516<!-- Begin scroll container --> 517 518<!-- Begin scroll container --> 519<div id="smooth-wrapper">
520 <div id="smooth-content" class="x-hidden"> 521 <main> 522 <!-- Hero Section Start --> 523 <section style="background: url('alterada_cor_leve.jpg'); background-size: cover;" class="hero-banner-1" id="hero"> 524 525 526<header id="ui-header"> 527 <div class="ui-header-inner container-fluid"> 528 529 <div class="ui-header-col"> 530 <!-- header Logo --> 531 <div class="ui-logo"> 532 <a href="/"> 533 <img src="/assets/media/logo.png" class="ui-logo-light" alt="Logo"> <!-- logo light --> 534 <img src="/assets/media/logo.png" class="ui-logo-dark" alt="Logo"> <!-- logo dark --> 535 </a> 536 </div> 537 </div> 538 539 <div class="ui-header-col"> 540 <!-- Begin overlay menu toggle button --> 541 <div id="ui-ol-menu-toggle-btn-wrap"> 542 <div class="ui-ol-menu-toggle-btn-text"> 543 <span class="text-menu" data-hover="Open">Menu</span> 544 <span class="text-close">Fechar</span> 545 </div> 546 <div class="ui-ol-menu-toggle-btn-holder"> 547 <a href="#" class="ui-ol-menu-toggle-btn"><span></span></a> 548 </div> 549 </div> 550 <!-- End overlay menu toggle button --> 551 552 <!-- Begin overlay menu --> 553 <nav style="padding-top: 150px;" class="ui-overlay-menu"> 554 <div class="ui-ol-menu-holder"> 555 <div class="ui-ol-menu-inner ui-wrap"> 556 <div class=""> 557 <div class="container-fluid"> 558 <div class="ui-ol-menu-content"> 559 <div class="col-xxl-3 col-xl-3 col-lg-4 d-xl-block d-none"> 560 <div class="ui-menu-img-block"> 561 562 </div> 563 </div> 564 <div class="col-xxl-6 col-xl-5 col-md-6 ui-menu-nav"> 565 <!-- Begin menu list --> 566 <ul style="padding-top:50px;" class="ui-ol-menu-list"> 567 568 <li> 569 <a href="/">Home</a> 570 </li> 571 572 <li><a href="/sobre-nos">Sobre Nós</a></li> 573 574 <!-- Begin submenu (submenu master) --> 575 <li class="ui-ol-submenu-wrap"> 576 <div class="ui-ol-submenu-trigger"> 577 <a href="#">Restaurantes/Produtos</a> 578 <div class="ui-ol-submenu-caret-wrap"> 579 <div class="ui-ol-submenu-caret"></div> 580 </div> 581 </div> 582 <div class="ui-ol-submenu"> 583 <ul class="ui-ol-submenu-list"> 584 <li><a href="/produtos.php?filter=1">Churrasqueira da Quinta</a></li> 585 <li><a href="/produtos.php?filter=2">Hamburgueria d'Aldeia</a></li> 586 <li><a href="/produtos.php?filter=3">Vinho ao Balcão</a></li> 587 <li><a href="/produtos.php?filter=4">Leitão Beirão</a></li> 588 <li><a href="/produtos.php?filter=5">A Padaria Beiroa</a></li> 589 </ul> 590 </div> 591 </li> 592 <li><a href="/novidades">Novidades</a></li> 593 <!-- End submenu (sub-master) --> 594 <li><a href="/contactos">Contactos</a></li> 595 </ul> 596 <!-- End menu list --> 597 </div> 598 <div class="col-xxl-3 col-xl-3 col-md-6 d-md-block d-none funcionamento"> 599 <div class="company-info"> 600 <div class="mb-32"> 601 <h6 class="color-primary mb-8">Horário de funcionamento</h6> 602 <p class="lead dark-gray"> 603 Das 604 <span class="circle_important">12:00</span> 605 às 606 <span class="circle_important">14:30</span> 607 e Das 608 <span class="circle_important">18:00</span> 609 às 610 <span class="circle_important">22:00</span> 611 </p> 612 </div> 613 <div class="mb-32"> 614 <h6 class="mb-8">Contactos</h6> 615 <p class="lead dark-gray"><span><a href="tel: +351924760200"> (+351) 924 760 200 </a></p> 616 <p class="lead dark-gray mb-16" style="font-size: 12px !important;">Chamada para rede móvel nacional</p> 617 <a class="lead dark-gray mb-16" href="mailto:[email protected]">[email protected]</a> 618 </div> 619 <ul style="padding-bottom: 50px;" class="social-icons-list unstyled"> 620 <li><a target="_blank" href="https://www.facebook.com/comidaemcasacb"><img src="assets/media/icons/Facebook.svg" alt=""></a></li> 621 <li><a target="_blank" href="https://www.instagram.com/comida.emcasa?igsh=MTY0a2JrMHJ3YW13Ng== "><img src="assets/media/icons/Instagram.svg" alt=""></a></li> 622 </ul> 623 </div> 624 </div> 625 </div> 626 </div> 627 </div> 628 </div> 629 </div> 630 631 </nav> 632 <!-- End overlay menu --> 633
634 <!-- Being header tools --> 635 <div class="ui-header-tools"> 636 637 <a href="/login.php" class="ui-header-tools-item"> 638 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 639 <path d="M11.9999 13.4299C13.723 13.4299 15.1199 12.0331 15.1199 10.3099C15.1199 8.58681 13.723 7.18994 11.9999 7.18994C10.2768 7.18994 8.87988 8.58681 8.87988 10.3099C8.87988 12.0331 10.2768 13.4299 11.9999 13.4299Z" stroke="black" stroke-width="1.5"/> 640 <path d="M3.61971 8.49C5.58971 -0.169998 18.4197 -0.159997 20.3797 8.5C21.5297 13.58 18.3697 17.88 15.5997 20.54C13.5897 22.48 10.4097 22.48 8.38971 20.54C5.62971 17.88 2.46971 13.57 3.61971 8.49Z" stroke="black" stroke-width="1.5"/> 641 </svg> 642 </a> 643 644 <a href="/login.php" class="ui-header-tools-item"> 645 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 646 <path d="M12.1596 10.87C12.0596 10.86 11.9396 10.86 11.8296 10.87C9.44957 10.79 7.55957 8.84 7.55957 6.44C7.55957 3.99 9.53957 2 11.9996 2C14.4496 2 16.4396 3.99 16.4396 6.44C16.4296 8.84 14.5396 10.79 12.1596 10.87Z" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 647 <path d="M7.15973 14.56C4.73973 16.18 4.73973 18.82 7.15973 20.43C9.90973 22.27 14.4197 22.27 17.1697 20.43C19.5897 18.81 19.5897 16.17 17.1697 14.56C14.4297 12.73 9.91973 12.73 7.15973 14.56Z" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 648 </svg> 649 </a> 650 651 652 <a href="javascript:;" class="ui-header-tools-item cart-button carrinho_btn"> 653 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 654 <path d="M6.80371 7.95272V6.9342C6.80371 4.57166 8.74292 2.25111 11.1535 2.03061C14.0249 1.7576 16.4462 3.97314 16.4462 6.7347V8.18373" stroke="black" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> 655 <path d="M8.41035 22.9991H14.8387C19.1456 22.9991 19.917 21.3086 20.142 19.2505L20.9456 12.9504C21.2348 10.3884 20.4849 8.29883 15.9101 8.29883H7.33897C2.76415 8.29883 2.01418 10.3884 2.30345 12.9504L3.10699 19.2505C3.33198 21.3086 4.10338 22.9991 8.41035 22.9991Z" stroke="black" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> 656 <path d="M15.3697 12.4996H15.3793" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 657 <path d="M7.86868 12.4996H7.8783" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 658 </svg> 659 660 661 <div style="display: none;" class="bola-items"></div> 662 </a> 663 </div> 664 <!-- End header tools --> 665 </div> 666 </div> 667</header> 668 669 670 <div class="content sticky-element-container"> 671 <div class="placeholder-sticky"></div> <!-- Placeholder --> 672 <div data-aos="zoom-in" class="text-block sticky-element"> 673 <p style="padding-left: 20px; font-size: 22px; font-weight: 700;" class="eyebrow ">â Castelo Branco</p> 674 <div style="padding-left: 20px" class="title-block"> 675 <h1 class="banner-title mb-16">Tudo numa <br> entrega!</h1> 676 <img src="./assets/media/vector/text-effect-vermelho.png" class="text-effect" alt="imagem"> 677 678 <a style="margin-top:50px;" data-aos-delay="300" data-aos="zoom-in" href="/produtos.php?filter=1" class="cus-btn dark d-sm-flex"> 679 Ver produtos 680 </a> 681 </div> 682 </div> 683 </div> 684 685 </section> 686 687 <!-- Start Page Content --> 688 <div style="margin: 0" class="page-content"> 689 <section class="py-80"> 690 <div class="container"> 691 <div class="d-flex justify-content-between align-items-sm-center align-items-end mb-48"> 692 <div class="heading"> 693 <!--<p class="eyebrow ">â restaurantes</p>--> 694 <h3 class="title">Os Nossos <span class="h3">Restaurantes</span></h3> 695 </div> 696 </div> 697 <!-- Products List --> 698 <div style="gap: 20px; width: 100%; display: flex; flex-wrap: wrap; justify-content: center;" class="d-flex"> 699 <div style="width: 18.5%; min-width: 150px;" data-aos="zoom-in"> 700 <a class="restaurantes" style="border-radius: 15px; box-shadow: 0px 4px 8px 0px rgba(151, 151, 151, 0.25); background: white;" href="/produtos.php?filter=1"> 701 <img style="border-radius: 20px;" alt="marcas" src="/assets/media/brands/6.png"> 702 </a> 703 </div> 704 705 <div style="width: 18.5%; min-width: 150px;" data-aos-delay="100" data-aos="zoom-in" ata-aos="zoom-in"> 706 <a class="restaurantes" style="border-radius: 15px; box-shadow: 0px 4px 8px 0px rgba(151, 151, 151, 0.25); background: white;" href="/produtos.php?filter=2"> 707 <img style="border-radius: 20px;" alt="marcas" src="/assets/media/brands/4.png"> 708 </a> 709 </div> 710 711 <div style="width: 18.5%; min-width: 150px;" ata-aos-delay="200" data-aos="zoom-in"> 712 <a class="restaurantes" style="border-radius: 15px; box-shadow: 0px 4px 8px 0px rgba(151, 151, 151, 0.25); background: white;" href="/produtos.php?filter=3"> 713 <img style="border-radius: 20px;" alt="marcas" src="/assets/media/brands/2.png"> 714 </a> 715 </div> 716 717 <div style="width: 18.5%; min-width: 150px;" data-aos-delay="300"data-aos="zoom-in"> 718 <a class="restaurantes" style="border-radius: 15px; box-shadow: 0px 4px 8px 0px rgba(151, 151, 151, 0.25); background: white;" href="/produtos.php?filter=4"> 719 <img style="border-radius: 20px;" alt="marcas" src="/assets/media/brands/3.png"> 720 </a> 721 </div> 722 723 <div style="width: 18.5%; min-width: 150px;" data-aos-delay="400" data-aos="zoom-in"> 724 <a class="restaurantes" style="border-radius: 15px; box-shadow: 0px 4px 8px 0px rgba(151, 151, 151, 0.25); background: white;" href="/produtos.php?filter=5"> 725 <img style="border-radius: 20px;" alt="marcas" src="/assets/media/brands/1.png"> 726 </a> 727 </div> 728 </div>
729 </div> 730 </section> 731 <!-- Delicious Categories Section End --> 732 733 <!-- Popular Items Section Start --> 734 <section class="py-64"> 735 <div class="container"> 736 <div class="d-flex justify-content-between align-items-sm-center align-items-end mb-48"> 737 <div class="heading"> 738 <!--<p class="eyebrow ">â produtos</p>--> 739 <h3 class="title">Os Nossos <span class="h3">Destaques</span></h3> 740 </div> 741 </div> 742 <!-- Products List --> 743 <div class="row"> 744 745 <div data-aos-delay="100" data-aos="zoom-in" class="col-xl-3 col-lg-4 col-sm-6 col-6 mb-32 mb-lg-0"> 746 <div style="margin-bottom: 30px;"> 747 <div class="product-img"> 748 <a style="width: 100%;" href="/detalhe-produto/800201/ha-pyo-beef-original"> 749 <img class="img-prod" 750 onerror="this.onerror=null;this.src='/imagem-indisponivel.jpg';" 751 src="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/18a5a211ac78d176f8440d9880c65a24.jpeg" alt="produto"> 752 </a> 753 754 755 </div> 756 757 <p> 758 <a href="/produtos.php?filter=2"><span class="titulo_produto">Hamburgueria D'Aldeia</span></a> 759 </p> 760 761 762 <p style="margin-bottom:5px;"> 763 <a href="/detalhe-produto/800201/ha-pyo-beef-original" 764 class="h5 title" style="font-size: 22px; color: #282525;"> 765 HA Pão Beef Original </a> 766 </p> 767 <div class="action-block"> 768 <div style="display: flex; justify-content: space-between;" class="price-cart"> 769 <h5 style="color: #6d6d6d;font-weight: 400;font-size: 20px;"> 770 â¬6.35 </h5> 771 772 <a data-bs-toggle="modal" href="#" class="cart-btn cart-button abre_modal" 773 data-id="800201" 774 data-bs-target="#meuModal_comp"> 775 <i class="fa-solid fa-plus"></i> 776 </a> 777 </div> 778 </div> 779 </div> 780 </div> 781 782 <div data-aos-delay="200" data-aos="zoom-in" class="col-xl-3 col-lg-4 col-sm-6 col-6 mb-32 mb-lg-0"> 783 <div style="margin-bottom: 30px;"> 784 <div class="product-img"> 785 <a style="width: 100%;" href="/detalhe-produto/800187/dourada-escalada"> 786 <img class="img-prod" 787 onerror="this.onerror=null;this.src='/imagem-indisponivel.jpg';" 788 src="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/e5ffc12ff07fcee12f6abb851cb4d91a.jpeg" alt="produto"> 789 </a> 790 791 792 </div> 793 794 <p> 795 <a href="/produtos.php?filter=1"><span class="titulo_produto">Churrasqueira da Quinta</span></a> 796 </p> 797 798 799 <p style="margin-bottom:5px;"> 800 <a href="/detalhe-produto/800187/dourada-escalada" 801 class="h5 title" style="font-size: 22px; color: #282525;"> 802 Dourada Escalada </a> 803 </p> 804 <div class="action-block"> 805 <div style="display: flex; justify-content: space-between;" class="price-cart"> 806 <h5 style="color: #6d6d6d;font-weight: 400;font-size: 20px;"> 807 â¬8.50 </h5> 808 809 <a data-bs-toggle="modal" href="#" class="cart-btn cart-button abre_modal" 810 data-id="800187" 811 data-bs-target="#meuModal_comp"> 812 <i class="fa-solid fa-plus"></i> 813 </a> 814 </div> 815 </div> 816 </div> 817 </div> 818 819 <div data-aos-delay="300" data-aos="zoom-in" class="col-xl-3 col-lg-4 col-sm-6 col-6 mb-32 mb-lg-0"> 820 <div style="margin-bottom: 30px;"> 821 <div class="product-img"> 822 <a style="width: 100%;" href="/detalhe-produto/792/mateus-rosy"> 823 <img class="img-prod" 824 onerror="this.onerror=null;this.src='/imagem-indisponivel.jpg';" 825 src="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/20654f38a96373d6918c248296be21c0.png" alt="produto"> 826 </a> 827 828 829 </div> 830 831 <p> 832 <a href="/produtos.php?filter=3"><span class="titulo_produto">Vinho ao Balcão</span></a> 833 </p> 834 835 836 <p style="margin-bottom:5px;"> 837 <a href="/detalhe-produto/792/mateus-rosy" 838 class="h5 title" style="font-size: 22px; color: #282525;"> 839 Mateus Rosé </a> 840 </p> 841 <div class="action-block"> 842 <div style="display: flex; justify-content: space-between;" class="price-cart"> 843 <h5 style="color: #6d6d6d;font-weight: 400;font-size: 20px;"> 844 â¬4.80 </h5> 845 846 847 <a 848 data-id="792" 849 data-image="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/20654f38a96373d6918c248296be21c0.png" 850 data-preco="4.80" 851 data-nome="Mateus Rosé" 852 data-slug="mateus-rosy" 853 data-familia="Vinho ao Balcão" 854 href="" class="add_btn cart-btn cart-button"> 855 <i class="fa-solid fa-plus"></i> 856 </a> 857 </div> 858 </div> 859 </div> 860 </div> 861 862 <div data-aos-delay="400" data-aos="zoom-in" class="col-xl-3
862col-lg-4 col-sm-6 col-6 mb-32 mb-lg-0"> 863 <div style="margin-bottom: 30px;"> 864 <div class="product-img"> 865 <a style="width: 100%;" href="/detalhe-produto/774/joi-laranja-15l"> 866 <img class="img-prod" 867 onerror="this.onerror=null;this.src='/imagem-indisponivel.jpg';" 868 src="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/f7248be8391acf46bdcf9cef4a0a46a9.jpeg" alt="produto"> 869 </a> 870 871 872 </div> 873 874 <p> 875 <a href="/produtos.php?filter=3"><span class="titulo_produto">Vinho ao Balcão</span></a> 876 </p> 877 878 879 <p style="margin-bottom:5px;"> 880 <a href="/detalhe-produto/774/joi-laranja-15l" 881 class="h5 title" style="font-size: 22px; color: #282525;"> 882 Joi Laranja 1,5L </a> 883 </p> 884 <div class="action-block"> 885 <div style="display: flex; justify-content: space-between;" class="price-cart"> 886 <h5 style="color: #6d6d6d;font-weight: 400;font-size: 20px;"> 887 â¬2.35 </h5> 888 889 890 <a 891 data-id="774" 892 data-image="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/f7248be8391acf46bdcf9cef4a0a46a9.jpeg" 893 data-preco="2.35" 894 data-nome="Joi Laranja 1,5L" 895 data-slug="joi-laranja-15l" 896 data-familia="Vinho ao Balcão" 897 href="" class="add_btn cart-btn cart-button"> 898 <i class="fa-solid fa-plus"></i> 899 </a> 900 </div> 901 </div> 902 </div> 903 </div> 904 905 <div data-aos-delay="500" data-aos="zoom-in" class="col-xl-3 col-lg-4 col-sm-6 col-6 mb-32 mb-lg-0"> 906 <div style="margin-bottom: 30px;"> 907 <div class="product-img"> 908 <a style="width: 100%;" href="/detalhe-produto/800215/encostas-do-guadiana-rosy"> 909 <img class="img-prod" 910 onerror="this.onerror=null;this.src='/imagem-indisponivel.jpg';" 911 src="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/fb9cc9f561471cd19c52777a05b8a15a.jpeg" alt="produto"> 912 </a> 913 914 915 </div> 916 917 <p> 918 <a href="/produtos.php?filter=3"><span class="titulo_produto">Vinho ao Balcão</span></a> 919 </p> 920 921 922 <p style="margin-bottom:5px;"> 923 <a href="/detalhe-produto/800215/encostas-do-guadiana-rosy" 924 class="h5 title" style="font-size: 22px; color: #282525;"> 925 Encostas do Guadiana Rosé </a> 926 </p> 927 <div class="action-block"> 928 <div style="display: flex; justify-content: space-between;" class="price-cart"> 929 <h5 style="color: #6d6d6d;font-weight: 400;font-size: 20px;"> 930 â¬4.50 </h5> 931 932 933 <a 934 data-id="800215" 935 data-image="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/fb9cc9f561471cd19c52777a05b8a15a.jpeg" 936 data-preco="4.50" 937 data-nome="Encostas do Guadiana Rosé" 938 data-slug="encostas-do-guadiana-rosy" 939 data-familia="Vinho ao Balcão" 940 href="" class="add_btn cart-btn cart-button"> 941 <i class="fa-solid fa-plus"></i> 942 </a> 943 </div> 944 </div> 945 </div> 946 </div> 947 948 <div data-aos-delay="600" data-aos="zoom-in" class="col-xl-3 col-lg-4 col-sm-6 col-6 mb-32 mb-lg-0"> 949 <div style="margin-bottom: 30px;"> 950 <div class="product-img"> 951 <a style="width: 100%;" href="/detalhe-produto/800212/encostas-do-guadiana-branco"> 952 <img class="img-prod" 953 onerror="this.onerror=null;this.src='/imagem-indisponivel.jpg';" 954 src="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/1f8db7b5ee2ffd919bc9d184a7e75a85.jpeg" alt="produto"> 955 </a> 956 957 958 </div> 959 960 <p> 961 <a href="/produtos.php?filter=3"><span class="titulo_produto">Vinho ao Balcão</span></a> 962 </p> 963 964 965 <p style="margin-bottom:5px;"> 966 <a href="/detalhe-produto/800212/encostas-do-guadiana-branco" 967 class="h5 title" style="font-size: 22px; color: #282525;"> 968 Encostas do Guadiana Branco </a> 969 </p> 970 <div class="action-block"> 971 <div style="display: flex; justify-content: space-between;" class="price-cart"> 972 <h5 style="color: #6d6d6d;font-weight: 400;font-size: 20px;"> 973 â¬4.50 </h5> 974 975 976 <a 977 data-id="800212" 978 data-image="https://cdn1.zonesoft.org/repo/images/2733844784dbed2562a74e33f03010c1/produtos/1f8db7b5ee2ffd919bc9d184a7e75a85.jpeg" 979 data-preco="4.50" 980 data-nome="Encostas do Guadiana Branco" 981 data-slug="encostas-do-guadiana-branco" 982 data-familia="Vinho ao Balcão" 983 href="" class="add_btn cart-btn cart-button"> 984 <i class="fa-solid fa-plus"></i> 985 </a> 986 </div> 987 </div> 988 </div> 989 </div> 990 991 <center> 992 <a style="margin-top:30px;" data-aos-delay="300" data-aos="zoom-in" href="all_destaques.php" class="cus-btn dark d-sm-flex"> 993 Ver Todos 994 </a> 995 </center> 996 </div>
997 </div> 998 </section> 999 1000 1001 <!-- End Page Content --> 1002 <div 1003 style="padding-bottom: 50px; 1004 padding-top: 60px; background: #d12421; 1005 background: url(/assets/media/retangulo-site.png) !important; 1006 background-size: cover !important;" 1007 class="brands banners_home"> 1008 1009 <div class="container-fluid"> 1010 <div class="row"> 1011 <div style="margin-bottom: 20px;" class="col-12 col-sm-4 col-md-4"> 1012 <img class="banners2 restaurantes" 1013 data-aos-delay="100" 1014 data-aos="zoom-in" 1015 src="/backoffice/ficheiros/banners/67a35820e01c4.png" 1016 alt="imagem"> 1017 </div> 1018 <div style="margin-bottom: 20px;" class="col-12 col-sm-4 col-md-4"> 1019 <img class="banners2 restaurantes" 1020 data-aos-delay="200" 1021 data-aos="zoom-in" 1022 src="/backoffice/ficheiros/banners/6a43c1d54d571.jpeg" 1023 alt="imagem"> 1024 </div> 1025 <div class="col-12 col-sm-4 col-md-4"> 1026 <img class="banners2 restaurantes" 1027 data-aos-delay="300" 1028 data-aos="zoom-in" 1029 src="/backoffice/ficheiros/banners/67a3763a52c34.png" 1030 alt="imagem"> 1031 </div> 1032 </div> 1033 </div> 1034 </div> 1035 1036 <section style="padding-top: 0; padding-bottom: 0;" class="py-64 banner_home"> 1037 <div class="container"> 1038 <div class="row" data-v-e7bf20b2=""> 1039 <div style="justify-content: center; display: flex; align-items: center; text-align: center; padding-top: 20px;" class="col-md-6" data-v-e7bf20b2=""> 1040 <div class="download-app__inside-container" data-v-e7bf20b2=""> 1041 <img alt="app" role="presentation" width="105" height="122" class="download-app__icon" src="/assets/icon-telemovel.svg" lazy="loaded"> 1042 1043 <h2 class="heading-h2 download-app__title heading-h2--bigger" data-v-68f10053="" data-v-e7bf20b2="" style="margin-bottom: 10px; font-size: 36px; margin-top: 23px;"> 1044 Descarregar a app 1045 </h2> 1046 1047 <div class="download-app__subtitle" data-v-e7bf20b2="" style="font-size: 18px;padding-left: 60px;padding-right: 60px;margin-bottom: 40px;margin-top: 30px;"> 1048 Obtém uma melhor experiência e acompanhamento enquanto fazes a tua encomenda na app da Comida em Casa. 1049 </div> 1050 1051 <div class="download-app__actions" data-v-e7bf20b2=""> 1052 <a data-test-id="app-store-link" target="_blank" rel="noopener" href="https://apps.apple.com/pt/app/comida-em-casa/id6742107996?l=pt-PT" data-v-e7bf20b2=""> 1053 <img alt="app store" width="120" height="40" data-v-e7bf20b2="" src="/assets/media/app-store-button.svg" lazy="loaded"> 1054 </a> 1055 1056 <a data-test-id="google-play-link" target="_blank" rel="noopener" href="https://play.google.com/store/apps/details?id=com.albinet.comida_casa"> 1057 <img alt="play store" width="134" height="40" src="/assets/media/google-play-button.svg" lazy="loaded"> 1058 </a> 1059 <!--<p style="margin-bottom: 10px;">Brevemente disponÃvel</p> 1060 <a data-test-id="app-store-link" rel="noopener" href="#" data-v-e7bf20b2=""> 1061 <img width="120" height="40" data-v-e7bf20b2="" src="/assets/media/app-store-button.svg" lazy="loaded"> 1062 </a> 1063 1064 <a data-test-id="google-play-link" rel="noopener" href="#"> 1065 <img width="134" height="40" src="/assets/media/google-play-button.svg" lazy="loaded"> 1066 </a>--> 1067 </div> 1068 </div> 1069 </div> 1070 1071 <div class="col-md-6" data-v-e7bf20b2=""> 1072 <picture> 1073 <img alt="imagem" src="/assets/media/BANNER-DOWNLOAD3.jpg" role="presentation" width="670" height="739" loading="lazy" class="download-app-image__image"> 1074 </picture> 1075 </div> 1076 </div> 1077 </div> 1078 </section> 1079 1080 <!-- Testimonials Start --> 1081 <section style="padding-bottom: 0;" class="py-64 testimonials_1"> 1082 <div class=""> 1083 <div class="row align-items-center"> 1084 <div class="col-xl-6"> 1085 <div class="testimonial-heading-block"> 1086 <div data-aos="zoom-out-right" data-aos-duration="800"> 1087 <p class="eyebrow color-white">â Testemunhos</p> 1088 <h3 style="font-size: 42px;" class="color-white mb-16">O que os nossos<br> clientes dizem</h3> 1089 </div> 1090 </div> 1091 </div> 1092 <div class="col-xl-6"> 1093 <div data-aos-delay="200" data-aos-duration="400" data-aos="zoom-in" class="testimonial-block"> 1094 <img src="assets/media/vector/quote-shape.png" alt="testemunhos" class="quote-shape"> 1095 <div class="testimonial-slider-card testimonial-slider-slick"> 1096 1097 <div class="testimonial-1"> 1098 <!--<div> 1099 <img src="assets/media/testimonials/t_1.png" alt=""> 1100 </div>--> 1101 <div class="text-block"> 1102 <p class="lead mb-24"> 1103 "Agradável! Boa qualidade. O preço adequado. Não esperava que fosse de outra maneira. Gostei das novida
1103des." 1104 </p> 1105 <h6> 1106 <span class="me-1"> 1107 José Pereira </span> 1108 <span class="dark-gray"> 1109 | Cliente 1110 </span> 1111 </h6> 1112 </div> 1113 </div> 1114 <div class="testimonial-1"> 1115 <!--<div> 1116 <img src="assets/media/testimonials/t_1.png" alt=""> 1117 </div>--> 1118 <div class="text-block"> 1119 <p class="lead mb-24"> 1120 "Um local sensacional. Foi tudo remodelado para um espaço muito agradável, comida saborosa e confecionada na hora. Recomendo vivamente" 1121 </p> 1122 <h6> 1123 <span class="me-1"> 1124 Yourchoice_global </span> 1125 <span class="dark-gray"> 1126 | Cliente 1127 </span> 1128 </h6> 1129 </div> 1130 </div> 1131 <div class="testimonial-1"> 1132 <!--<div> 1133 <img src="assets/media/testimonials/t_1.png" alt=""> 1134 </div>--> 1135 <div class="text-block"> 1136 <p class="lead mb-24"> 1137 "Obrigado pela encomenda! Acabei de receber e estava muito bom, foram rápidos e muito simpáticos, vou recomendar!" 1138 </p> 1139 <h6> 1140 <span class="me-1"> 1141 Joana Ferreira </span> 1142 <span class="dark-gray"> 1143 | Cliente 1144 </span> 1145 </h6> 1146 </div> 1147 </div> 1148 1149 </div> 1150 </div> 1151 </div> 1152 </div> 1153 </div> 1154 </section> 1155 <!-- Testimonials End --> 1156 1157 <div style="padding-bottom: 0; padding-top:0px;" class="brands py-80"> 1158 <div class="container"> 1159 <div style="padding-bottom: 0; padding-top: 60px;" class="py-40 brands-slider-slick"> 1160 <div class="brand-item"> 1161 <a href="/produtos.php?filter=1"><img alt="marcas" src="assets/media/brands/6.png"></a> 1162 </div> 1163 <div class="brand-item"> 1164 <a href="/produtos.php?filter=2"><img alt="marcas" src="assets/media/brands/4.png"></a> 1165 </div> 1166 <div class="brand-item"> 1167 <a href="/produtos.php?filter=3"><img alt="marcas" src="assets/media/brands/3.png"></a> 1168 </div> 1169 <div class="brand-item"> 1170 <a href="/produtos.php?filter=4"><img alt="marcas" src="assets/media/brands/2.png"></a> 1171 </div> 1172 <div class="brand-item"> 1173 <a href="/produtos.php?filter=5"><img alt="marcas" src="assets/media/brands/1.png"></a> 1174 </div> 1175 1176 <div class="brand-item"> 1177 <a href="/produtos.php?filter=1"><img alt="marcas" src="assets/media/brands/6.png"></a> 1178 </div> 1179 <div class="brand-item"> 1180 <a href="/produtos.php?filter=2"><img alt="marcas" src="assets/media/brands/4.png"></a> 1181 </div> 1182 <div class="brand-item"> 1183 <a href="/produtos.php?filter=3"><img alt="marcas" src="assets/media/brands/3.png"></a> 1184 </div> 1185 <div class="brand-item"> 1186 <a href="/produtos.php?filter=4"><img alt="marcas" src="assets/media/brands/2.png"></a> 1187 </div> 1188 <div class="brand-item"> 1189 <a href="/produtos.php?filter=5"><img alt="marcas" src="assets/media/brands/1.png"></a> 1190 </div> 1191 </div> 1192 </div> 1193 </div> 1194 1195 <section class="py-64"> 1196 <div class="container"> 1197 <div class="d-flex justify-content-between align-items-sm-center align-items-end mb-48"> 1198 <div class="heading"> 1199 <!--<p class="eyebrow ">â Novidades</p>--> 1200 <h3 class="title">As Nossas <span class="h3">Novidades</span></h3> 1201 </div> 1202 </div> 1203 <!-- Products List --> 1204 <div class="row"> 1205 1206 1207 <div style="margin-bottom:20px;" class=" blog col-12 col-sm-6 col-md-4 col-xl-3"> 1208 <div data-aos-delay="100" data-aos="zoom-in" style="padding: 10px;" class="item_not"> 1209 <a target="_blank" href="https://www.facebook.com/1278002839911574/posts/1645624159816105" style="color: #833AB4; cursor:pointer"> 1210 <span style="color: #767575; cursor:pointer"> 1211 <div class="content" style="padding: 0 !important;"> 1212 <div class="blog-info"> 1213 <div class="title_not"> 1214 <i style="font-size: 15px; float: left; margin-top: 1.4px; color: #000000;" 1215 class="fab fa-facebook-square"></i> 1216 1217 <ul style="margin-bottom: 5px;"> 1218 <li style="color: #000000; font-size: 12px; padding-top: 0.4px;"> 1219 5 meses </li> 1220 </ul> 1221 </div> 1222 1223 <div class="desc"> 1224 <img style="margin-bottom: 5px; width:100%; object-fit: cover; height: 200px;" src="/fb/fb_01790906406.jpg" class="img-fluid" 1225 alt="facebook"> 1226 1227 <div class="noticia"> 1228 <p style="line-height: 18px; font-size: 16px; padding-top: 10px;" class="desc-fb"> 1229 </p> 1230 </div> 1231 1232 <div class="bottom-notice"> 1233 <div class="icons1" style="margin-left:0px; margin-top: 10px; font-size: 13px;"> 1234 <i style="font-size: 13px;" class="fa fa-thumbs-up"></i> 3 </div> 1235 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1236 <i style="font-size: 13px;" class="fa fa-comment"></i> 0 </div> 1237 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1238 <i style="font-size: 13px;" class="fa fa-share"></i> 0 </div> 1239 <p style="margin-bottom: 1rem;"> </p> 1240 </div> 1241 </div> 1242 </div> 1243 </div> 1244 </span> 1245 </a> 1246 </div> 1247 </div> 1248 1249 <div style="margin-bottom:20px;" class=" blog col-12 col-sm-6 col-md-4 col-xl-3"> 1250 <div data-aos-delay="200" data-aos="zoom-in" style="padding: 10px;" class="item_not"> 1251 <a target="_blank" href="https://www.facebook.com/1278002839911574/posts/1631699904541864" style="color: #833AB4; cursor:pointer"> 1252 <span style="color: #767575; cursor:pointer"> 1253 <div class="content" style="padding: 0 !important;"> 1254 <div class="blog-info"> 1255 <div class="title_not"> 1256 <i style="font-size: 15px; float: left; margin-top: 1.4px; color: #000000;" 1257 class="fab fa-facebook-square"></i> 1258 1259 <ul style="margin-bottom: 5px;"> 1260 <li style="color: #000000; font-size: 12px; padding-top: 0.4px;"> 1261 6 meses </li> 1262 </ul> 1263 </div> 1264 1265 <div class="desc"> 1266 <img style="margin-bottom: 5px; width:100%; object-fit: cover; height: 200px;" src="/fb/fb_11790906406.jpg" class="img-fluid" 1267 alt="facebook"> 1268 1269 <div class="noticia"> 1270 <p style="line-height: 18px; font-size: 16px; padding-top: 10px;" class="desc-fb"> 1271 Viva o 25 de Abril! 1272 1273 </p> 1274 </div> 1275 1276 <div class="bottom-notice"> 1277 <div class="icons1" style="margin-left:0px; margin-top: 10px; font-size: 13px;"> 1278 <i style="font-size: 13px;" class="fa fa-thumbs-up"></i> 0 </div> 1279 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1280 <i style="font-size: 13px;" class="fa fa-comment"></i> 0 </div> 1281 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1282 <i style="font-size: 13px;" class="fa fa-share"></i> 0 </div> 1283 <p style="margin-bottom: 1rem;"> </p> 1284 </div> 1285 </div> 1286 </div> 1287 </div> 1288 </span> 1289 </a> 1290 </div> 1291 </div> 1292 1293 <div style="margin-bottom:20px;" class=" blog col-12 col-sm-6 col-md-4 col-xl-3"> 1294 <div data-aos-delay="300" data-aos="zoom-in" style="padding: 10px;" class="item_not"> 1295 <a target="_blank" href="https://www.facebook.com/1278002839911574/posts/1625452338499954" style="color: #833AB4; cursor:pointer"> 1296 <span style="color: #767575; cursor:pointer"> 1297 <div class="content" style="padding: 0 !important;"> 1298 <div class="blog-info"> 1299 <div class="title_not"> 1300 <i style="font-size: 15px; float: left; margin-top: 1.4px; color: #000000;" 1301 class="fab fa-facebook-square"></i> 1302 1303 <ul style="margin-bottom: 5px;"> 1304 <li style="color: #000000; font-size: 12px; padding-top: 0.4px;"> 1305 6 meses </li> 1306 </ul> 1307 </div> 1308 1309 <div class="desc"> 1310 <img style="margin-bottom: 5px; width:100%; object-fit: cover; height: 200px;" src="/fb/fb_21790906406.jpg" class="img-fluid" 1311 alt="facebook"> 1312 1313 <div class="noticia"> 1314 <p style="line-height: 18px; font-size: 16px; padding-top: 10px;" class="desc-fb"> 1315 Em dias de Romaria, entregamos os melhores sabores na festa! 1316Faça a sua encomenda e nós... </p> 1317 </div> 1318 1319 <div class="bottom-notice"> 1320 <div class="icons1" style="margin-left:0px; margin-top: 10px; font-size: 13px;"> 1321 <i style="font-size: 13px;" class="fa fa-thumbs-up"></i> 0 </div> 1322 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1323 <i style="font-size: 13px;" class="fa fa-comment"></i> 0 </div> 1324 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1325 <i style="font-size: 13px;" class="fa fa-share"></i> 0 </div> 1326 <p style="margin-bottom: 1rem;"> </p> 1327 </div> 1328 </div> 1329 </div> 1330 </div> 1331 </span> 1332 </a> 1333 </div> 1334 </div> 1335 1336 <div style="margin-bottom:20px;" class=" blog col-12 col-sm-6 col-md-4 col-xl-3"> 1337 <div data-aos-delay="400" data-aos="zoom-in" style="padding: 10px;" class="item_not"> 1338 <a target="_blank" href="https://www.facebook.com/1278002839911574/posts/1616208539424334" style="color: #833AB4; cursor:pointer"> 1339 <span style="color: #767575; cursor:pointer"> 1340 <div class="content" style="padding: 0 !important;"> 1341 <div class="blog-info"> 1342 <div class="title_not"> 1343 <i style="font-size: 15px; float: left; margin-top: 1.4px; color: #000000;" 1344 class="fab fa-facebook-square"></i> 1345 1346 <ul style="margin-bottom: 5px;"> 1347 <li style="color: #000000; font-size: 12px; padding-top: 0.4px;"> 1348 6 meses </li> 1349 </ul> 1350 </div> 1351 1352 <div class="desc"> 1353 <img style="margin-bottom: 5px; width:100%; object-fit: cover; height: 200px;" src="/fb/fb_31790906406.jpg" class="img-fluid" 1354 alt="facebook"> 1355 1356 <div class="noticia"> 1357 <p style="line-height: 18px; font-size: 16px; padding-top: 10px;" class="desc-fb"> 1358 Desejamos a todos uma Feliz Páscoa! 1359 1360 </p> 1361 </div> 1362 1363 <div class="bottom-notice"> 1364 <div class="icons1" style="margin-left:0px; margin-top: 10px; font-size: 13px;"> 1365 <i style="font-size: 13px;" class="fa fa-thumbs-up"></i> 1 </div> 1366 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1367 <i style="font-size: 13px;" class="fa fa-comment"></i> 0 </div> 1368 <div style="margin-top: 10px; margin-left: 10px; font-size: 13px;" class="icons1"> 1369 <i style="font-size: 13px;" class="fa fa-share"></i> 0 </div> 1370 <p style="margin-bottom: 1rem;"> </p> 1371 </div> 1372 </div> 1373 </div> 1374 </div> 1375 </span> 1376 </a> 1377 </div> 1378 </div> 1379 1380 <center> 1381 <a style="margin-top:50px;" data-aos-delay="300" data-aos="zoom-in" href="/novidades" class="cus-btn dark d-sm-flex"> 1382 Ver Todas 1383 </a> 1384 </center> 1385 1386 1387 </div>
1388 </div> 1389 </section> 1390 </div> 1391 1392 <section style="padding-bottom: 100px; padding-top: 30px;" class="pt-80"> 1393 <div style="position: relative;"> 1394 <div class="newsletter-area text-center"> 1395 <div class="container"> 1396 <h3 style="margin-bottom: 20px;">Subscreva a nossa <span class="h3 color-primary">newsletter </span></h3> 1397 <p class="mb-48">Subscreva através de email e/ou telefone a nossa newsletter para receber todas as novidades!</p> 1398 <form id="newsForm" action="/registo_newsletter.php" method="POST"> 1399 <div class="newsletter-form"> 1400 <div class="form-group"> 1401 <label>Email</label> 1402 <input type="email" name="newsletter" id="email" placeholder="Introduza o seu email" oninput="toggleRequiredFields()"required> 1403 </div> 1404 <div style="position: relative" class="form-group"> 1405 <label>Contacto</label> 1406 <input type="hidden" name="indicativo" id="indicativo" value="+351"> 1407 <input style="position: relative" type="tel" id="mobile_code" name="mobile_code" required oninput="this.value = this.value.replace(/\s/g, ''); toggleRequiredFields();" > 1408 <p style="color: red; font-size: 12px; margin-bottom:0" id="mensagemErro" style="color: red;"></p> 1409 </div> 1410 </div> 1411 <center> 1412 <button style="margin-top: 30px; margin-bottom:30px; " type="submit" class="cus-btn outline"> 1413 Subscrever 1414 </button> 1415 </<center> 1416 </form> 1417 </div> 1418 1419
1419<script> 1420 function toggleRequiredFields() { 1421 const email = document.getElementById('email'); 1422 const mobile = document.getElementById('mobile_code'); 1423 1424 if (email.value.trim() !== "") { 1425 mobile.removeAttribute('required'); // Remove o required do telefone 1426 } else if (mobile.value.trim() !== "") { 1427 email.removeAttribute('required'); // Remove o required do email 1428 } else { 1429 // Se ambos estiverem vazios, mantém os dois como required 1430 email.setAttribute('required', true); 1431 mobile.setAttribute('required', true); 1432 } 1433 } 1434 </script>
1434 1435 1436 <style> 1437 .iti-mobile .iti--container { 1438 top: -170px; 1439 bottom: 30px; 1440 left: 150px; 1441 right: 30px; 1442 position: relative; 1443 height: 170px; 1444 width: 200px; 1445 } 1446 1447 .iti--separate-dial-code .iti__selected-flag { 1448 background-color: rgb(0 0 0 / 0%) !important; 1449 } 1450 1451 .iti { 1452 display: inline !important; 1453 } 1454 1455 .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag { 1456 background-color: rgba(0, 0, 0, 0.00) !important; 1457 } 1458 </style> 1459 1460 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.13/css/intlTelInput.css"> 1461
1461<script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.13/js/intlTelInput.min.js"></script>
1461 1462
1462<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js"></script>
1462 1463
1463<script> 1464 // Inicializando o intl-tel-input 1465 const input = document.querySelector("#mobile_code"); 1466 const iti = window.intlTelInput(input, { 1467 initialCountry: "PT", // Deixa o paÃs ser detectado automaticamente 1468 separateDialCode: true, // Exibe o código do paÃs separado 1469 utilsScript: "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js", 1470 preferredCountries: ["PT", "BR", "US", "GB", "FR"] 1471 }); 1472 1473 // Atualizando o campo indicativo com o código do paÃs selecionado 1474 input.addEventListener("countrychange", function () { 1475 const countryData = iti.getSelectedCountryData(); 1476 document.querySelector("#indicativo").value = "+" + countryData.dialCode; 1477 }); 1478 1479 // Evento de validação no envio do formulário 1480 document.getElementById("newsForm").addEventListener("submit", function (e) { 1481 e.preventDefault(); // Previne o envio do formulário para realizar a validação 1482 1483 var numeroTelefone = iti.getNumber(); // Obtém o número com o indicativo 1484 var mensagemErro = document.getElementById("mensagemErro"); 1485 var form = document.getElementById("newsForm"); 1486 1487 // Verificando se o número é válido 1488 if (iti.isValidNumber()) { 1489 mensagemErro.textContent = ""; // Limpa qualquer mensagem de erro 1490 mensagemErro.style.marginTop = "0"; // Remove o espaçamento se não houver erro 1491 // Preenche o campo "indicativo" com o valor correto 1492 document.querySelector("#indicativo").value = "+" + iti.getSelectedCountryData().dialCode; 1493 form.submit(); // Envia o formulário 1494 } else { 1495 mensagemErro.textContent = "Número de telefone inválido."; // Exibe mensagem de erro 1496 mensagemErro.style.marginTop = "5px"; // Adiciona margem superior ao erro 1497 } 1498 }); 1499 </script>
1499 1500 </div> 1501 1502 1503 1504 1505 </div> 1506 </section> 1507 1508 1509 1510
1511<script> 1512 1513 const query = new URLSearchParams(window.location.search); 1514 1515 if (query.get("err") === "0") { 1516 1517 var options = { 1518 "closeButton": true, 1519 "debug": false, 1520 "newestOnTop": false, 1521 "progressBar": true, 1522 "positionClass": "toast-bottom-right", 1523 "preventDuplicates": false, 1524 "showDuration": "300", 1525 "hideDuration": "1000", 1526 "timeOut": "5000", 1527 "extendedTimeOut": "1000", 1528 "showEasing": "swing", 1529 "hideEasing": "linear", 1530 "showMethod": "fadeIn", 1531 "hideMethod": "fadeOut" 1532 } 1533 1534 toastr["success"]("Bem vindo! O seu login foi realizado com sucesso."); 1535 1536 var newURL = location.href.split("/")[0]; 1537 window.history.pushState('object', document.title, newURL + "/") 1538 } 1539</script>
1539 1540
1541<script> 1542document.addEventListener('DOMContentLoaded', function() { 1543 const textBlock = document.querySelector('.sticky-element'); 1544 const placeholder = document.querySelector('.placeholder-sticky'); 1545 1546 function updatePlaceholderHeight() { 1547 if (!textBlock) return; // se o elemento não existe sai 1548 const initialHeight = textBlock.offsetHeight; 1549 placeholder.style.height = initialHeight + 'px'; 1550 } 1551 1552 function handleResize() { 1553 const windowHeight = window.innerHeight; 1554 if(windowHeight < 570){ 1555 textBlock.classList.add('sticky-element-fixed'); 1556 updatePlaceholderHeight() 1557 } else { 1558 textBlock.classList.remove('sticky-element-fixed'); 1559 placeholder.style.height = '0'; 1560 } 1561 } 1562 1563 handleResize(); // Inicializa na carga da página 1564 window.addEventListener('resize', handleResize); // Executa sempre que a janela é redimensionada 1565}); 1566</script>
1566 1567 1568 1569 <!-- Footer Area Start --> 1570 <footer> 1571 <div class="footer-main"> 1572 <!-- <img src="assets/media/bg/footer-bg.png" alt="" class="footer-bg-vetor"> --> 1573 <div class="container-fluid"> 1574 <div class="row align-items-center"> 1575 <div class="col-xl-6"> 1576 <ul class="footer-nav unstyled mb-xl-0 mb-32"> 1577 <li><a href="/">Home</a></li> 1578 <li><a href="/produtos.php?filter=1">Produtos</a></li> 1579 <li><a href="/sobre-nos">Sobre Nós</a></li> 1580 <li><a href="/novidades">Novidades</a></li> 1581 <li><a href="/contactos">Contactos</a></li> 1582 </ul> 1583 </div> 1584 <div class="col-xl-6"> 1585 <ul class="social-icons-list unstyled"> 1586 <li><a style="z-index: 99999" target="_blank" href="https://www.facebook.com/comidaemcasacb"><img src="/assets/media/icons/Facebook.svg" alt=""></a></li> 1587 <li><a style="z-index: 99999" target="_blank" href="https://www.instagram.com/comida.emcasa?igsh=MTY0a2JrMHJ3YW13Ng=="><img src="/assets/media/icons/Instagram.svg" alt=""></a></li> 1588 </ul> 1589 </div> 1590 </div> 1591 </div> 1592 </div> 1593 <div class="footer-bottom"> 1594 <div class="container-fluid"> 1595 <div class="bottom-row"> 1596 <div class="copyright-text"> 1597 <p style="font-size: 16px;">© 2026 Todos os direitos reservados, desenvolvido por <a style="color: #cb211f;" target="_blank" href="https://albinet.pt/">Albinet</a></p> 1598 </div> 1599 <div style="display: block; text-align: center;" class="right-block"> 1600 <a style="border-right: 1px solid; padding-right: 5px; line-height: 15px;" href="/politica-privacidade">PolÃtica de Privacidade e Cookies</a> 1601 <a style="border-right: 1px solid; padding-left: 5px; padding-right: 5px; line-height: 15px;" href="/termos-condicoes">Termos e Condições</a> 1602 <a style="border-right: 1px solid; padding-left: 5px; padding-right: 5px; line-height: 15px;" href="/ral">Resolução Alternativa de LitÃgios</a> 1603 <a target="_blank" href="https://www.livroreclamacoes.pt/Inicio/">Livro de Reclamações</a> 1604 </div> 1605 </div> 1606 1607 <div class="col-xl-12"> 1608 <div style="margin-bottom: 20px;" class="apps-ban" bis_skin_checked="1"> 1609 <!--<a href="https://play.google.com/store/apps/details?id=com.albinet.comida_casa" target="_blank"><img style="width: 115px;" src="/assets/google.png"> </a>--> 1610 <!--<a href="https://apps.apple.com/pt/app/comida-em-casa/id6740406949?l=pt-PT" target="_blank"><img style="width: 115px;" src="/assets/apple.png"> </a>--> 1611 </div> 1612 </div> 1613 </div> 1614 1615 </div> 1616 </footer> 1617 <!-- Footer Area end --> 1618 </main> 1619 </div> 1620 <!-- End content wrap --> 1621 </div> 1622 <!-- End scroll container --> 1623 1624 <!-- Search Popup Start --> 1625 <div class="search-popup"> 1626 <div class="search-popup__overlay search-toggler"></div> 1627 <div class="search-popup__content text-center"> 1628 <form role="search" method="get" class="search-popup__form" action="shop-list-1.html"> 1629 <div class="blur-layer"> 1630 <input type="text" id="search" autocomplete="off" placeholder="Search Here..."> 1631 </div> 1632 <button type="submit"><i class="fal fa-search"></i></button> 1633 </form> 1634 </div> 1635 </div> 1636 <!-- Search Popup End --> 1637 1638 <!-- Mini Cart Start --> 1639 <!-- Mini Cart Start --> 1640 <!-- Estilos para corrigir o layout do carrinho e manter os botões sempre visÃveis --> 1641 <style> 1642 #sidebar-cart { 1643 display: flex !important; 1644 flex-direction: column !important; 1645 height: 100vh !important; 1646 box-sizing: border-box !important; 1647 } 1648 #produtos_carrinho { 1649 flex: 1 !important; 1650 overflow-y: auto !important; 1651 height: auto !important; 1652 min-height: 0 !important; 1653 max-height: none !important; 1654 } 1655 </style> 1656 1657 <!-- Mini Cart Start --> 1658 <!-- Estilos essenciais para garantir que os botões nunca desaparecem do ecrã --> 1659 <style> 1660 #sidebar-cart { 1661 display: flex !important; 1662 flex-direction: column !important; 1663 height: 100vh !important; 1664 box-sizing: border-box !important; 1665 } 1666 #produtos_carrinho { 1667 flex: 1 !important; 1668 overflow-y: auto !important; 1669 height: auto !important; 1670 min-height: 0 !important; 1671 max-height: none !important; 1672 } 1673 </style> 1674 1675 <!-- Mini Cart Start --> 1676 <!-- Estilos essenciais para garantir que os botões nunca desaparecem do ecrã --> 1677 <style> 1678 #sidebar-cart { 1679 display: flex !important; 1680 flex-direction: column !important; 1681 height: 100vh !important; 1682 box-sizing: border-box !important; 1683 } 1684 #produtos_carrinho { 1685 flex: 1 !important; 1686 overflow-y: auto !important; 1687 height: auto !important; 1688 min-height: 0 !important; 1689 max-height: none !important; 1690 } 1691 </style> 1692 1693 <!-- Mini Cart Start --> 1694 <!-- Estilos essenciais para garantir que os botões nunca desaparecem do ecrã --> 1695 <style> 1696 #sidebar-cart { 1697 display: flex !important; 1698 flex-direction: column !important; 1699 height: 100vh !important; 1700 box-sizing: border-box !important; 1701 } 1702 #produtos_carrinho { 1703 flex: 1 !important; 1704 overflow-y: auto !important; 1705 height: auto !important; 1706 min-height: 0 !important; 1707 max-height: none !important; 1708 } 1709 </style> 1710 1711 <aside id="sidebar-cart"> 1712 <div class="d-flex align-items-center justify-content-between mb-32"> 1713 <h5>Carrinho</h5> 1714 <a href="#" class="close-button"><i class="fa-regular fa-xmark close-icon"></i></a> 1715 </div> 1716 1717 <!-- Aviso de Taxa MÃnima de Entrega --> 1718 <div id="aviso-taxa-minima" class="alert alert-warning mb-24" style="font-size: 13px; padding: 10px; border-radius: 4px; border: 1px solid #ffeeba; background-color: #fff3cd; color: #856404; display: none;"> 1719 <i class="fa-solid fa-triangle-exclamation mr-2"></i> 1720 Aviso: Para encomendas de valor inferior a 10.00â¬, será cobrada uma taxa de entrega de <b>â¬2.50</b>. 1721 </div> 1722 1723 <div class="vr-line mb-32"></div> 1724 1725 <ul id="produtos_carrinho" class="product-list"> 1726 <!--<li class="product-item"></li>--> 1727 1728 <li class="product-item mb-24"> Sem produtos disponÃveis!</li> 1729 </ul> 1730 1731 <!--<div style="margin-top: 7px;" class="qp_row"> 1732 <h5 class="dark-gray"> 1733 <a style="cursor:pointer; color: #a8a8a8; font-size: 17px;" value="'.$_SESSION['carrinho'][$keys]['quantidade'].'" class="remove_product">
1734 <i class="fa-solid fa-trash"></i> 1735 </a> 1736 </h5> 1737 </div>--> 1738 1739
1739<script> 1740 // Função que exibe ou oculta o aviso de limite mÃnimo de 10⬠dinamicamente 1741 function verificarTaxaMinima(valorTotal) { 1742 const limite = 10.00; 1743 const $aviso = $('#aviso-taxa-minima'); 1744 1745 if (valorTotal > 0 && valorTotal < limite) { 1746 $aviso.slideDown(300); 1747 } else { 1748 $aviso.slideUp(300); 1749 } 1750 } 1751 1752 function atualizarPreco(preco, contexto) { 1753 let precoProduto = parseFloat(preco); 1754 1755 let precoComplementos = 0; 1756 1757 // Calculando o preço dos complementos selecionados 1758 $("input[name='complementos']:checked", contexto).each(function () { 1759 let precoComplemento = parseFloat($(this).data('preco')) || 0; 1760 precoComplementos += precoComplemento; 1761 }); 1762 1763 let precoTotal = precoProduto + precoComplementos; 1764 1765 // Atualiza o preço do modal especÃfico 1766 contexto.find('.txt').html('Adicionar por <b>â¬' + precoTotal.toFixed(2) + '</b>'); 1767 } 1768 1769 $(document).ready(function () { 1770 // Observador automático de alteração no preço total (MutationObserver) 1771 const targetNode = document.getElementById('preco_carrinho'); 1772 if (targetNode) { 1773 const observer = new MutationObserver(function (mutationsList) { 1774 for (let mutation of mutationsList) { 1775 if (mutation.type === 'characterData' || mutation.type === 'childList') { 1776 let precoTexto = $(targetNode).text().replace('â¬', '').trim(); 1777 precoTexto = precoTexto.replace(',', '.'); // Compatibilidade caso usem vÃrgula para os decimais 1778 let precoNumerico = parseFloat(precoTexto) || 0; 1779 verificarTaxaMinima(precoNumerico); 1780 } 1781 } 1782 }); 1783 observer.observe(targetNode, { characterData: true, childList: true, subtree: true }); 1784 } 1785 1786 // Verifica o valor do carrinho assim que o ecrã carrega inicialmente 1787 let precoTextoInicial = $("#preco_carrinho").text().replace('â¬', '').trim(); 1788 precoTextoInicial = precoTextoInicial.replace(',', '.'); 1789 let precoNumericoInicial = parseFloat(precoTextoInicial) || 0; 1790 verificarTaxaMinima(precoNumericoInicial); 1791 1792 // Delegação de eventos para os complementos nos modais carregados via AJAX 1793 $(document).on('change', "input[name='complementos']", function (event) { 1794 // Obtém o preço do produto associado ao complemento 1795 let preco = $(this).data('preco_prod'); 1796 1797 // Envia o preço e o contexto do modal atual 1798 atualizarPreco(preco, $(this).closest('.modal')); // 'closest' encontra o modal pai do input 1799 }); 1800 }); 1801 1802 $(document).ready(function () { 1803 $(document).on('hidden.bs.modal', ".modal", function (event) { 1804 $(this).removeAttr('aria-hidden').removeProp('inert'); 1805 1806 $(this).find("input[name='complementos']").prop('checked', false); 1807 1808 let precoProduto = $("#price_mi").text().trim().replace('â¬', '').replace(',', '.'); 1809 precoProduto = parseFloat(precoProduto); 1810 1811 $("#txt").html('Adicionar por <b>â¬' + precoProduto.toFixed(2) + '</b>'); 1812 }); 1813 1814 $('.modal').on('shown.bs.modal', function () { 1815 $(this).removeAttr('aria-hidden').removeProp('inert'); 1816 }); 1817 }); 1818 </script>
1818 1819 1820
1820<script> 1821 $(document).ready(function () { 1822 // Usa um seletor de classe para identificar os formulários 1823 $(document).on('submit', '.complementares', function (event) { 1824 event.preventDefault(); 1825 1826 var produtoID = $(this).data("id"); 1827 // Apenas processa o formulário especÃfico que foi submetido 1828 var form = $(this); 1829 var formData = {}; 1830 var complementares = []; 1831 var data2 = "acao=preco"; 1832 var data3 = "acao=qtd"; 1833 1834 // Busca apenas os inputs dentro do formulário atual 1835 form.find('input').each(function () { 1836 var input = $(this); 1837 1838 if ((input.attr('type') === 'checkbox' || input.attr('type') === 'radio') && input.is(':checked')) { 1839 var codigo = input.data('codigo'); 1840 var preco = input.data('preco'); 1841 var nome = input.data('nome'); 1842 1843 complementares.push({ 1844 codigo: codigo, 1845 preco: preco, 1846 nome: nome, 1847 }); 1848 } else if (input.attr('type') !== 'checkbox' && input.attr('type') !== 'radio') { 1849 formData[input.attr('name')] = input.val(); 1850 } 1851 }); 1852 1853 formData['complementares'] = complementares; 1854 1855 $('.modal').modal('hide'); 1856 1857 var $body = $('body'); 1858 var $sidebarCart_inicio = $('#sidebar-cart'); // Alterado para referir a sidebar-cart 1859 1860 // Adicionar spinner dentro da div sidebar-cart 1861 var spinner = '<div class="loading-spinner"></div>'; 1862 $sidebarCart_inicio.append(spinner); 1863 $sidebarCart_inicio.find('.loading-spinner').show(); 1864 1865 $body.css('overflow', 'hidden'); 1866 1867 $body.addClass('show-sidebar-cart'); 1868 $('#sidebar-cart-curtain').fadeIn(500); 1869 1870 // Fazer a primeira chamada AJAX 1871 $.ajax({ 1872 type: 'POST', 1873 url: '/carrinho_back.php', 1874 data: formData, 1875 success: function (data) { 1876 $('#produtos_carrinho').html(data); 1877 1878 // Fazer a segunda chamada AJAX dentro do sucesso da primeira 1879 $.ajax({ 1880 type: 'POST', 1881 url: '/carrinho_back.php', 1882 data: data2, 1883 success: function (data2) { 1884 $('#preco_carrinho').html('â¬' + data2); 1885 1886 // Fazer a terceira chamada AJAX dentro do sucesso da segunda 1887 $.ajax({ 1888 type: 'POST', 1889 url: '/carrinho_back.php', 1890 data: data3, 1891 success: function (data3) { 1892 $('.bola-items').html(data3); 1893 $('.bola-items').show(); 1894 1895 // Remover o spinner após todas as requisições AJAX terem completado 1896 $sidebarCart_inicio.find('.loading-spinner').remove(); 1897 } 1898 }); 1899 } 1900 }); 1901 1902 var produtoCarrinho = $("#produtos_carrinho").children().last(); 1903 1904 if (produtoCarrinho.length) { 1905 produtoCarrinho.css("background-color", "#d1242136"); // Amarelo claro 1906 setTimeout(function () { 1907 produtoCarrinho.css("transition", "background-color 2s"); 1908 produtoCarrinho.css("background-color", "#fcfdfd"); // Volta ao normal 1909 }, 100); 1910 } 1911 } 1912 }); 1913 }); 1914 }); 1915 </script>
1915 1916 1917 1918
1918<script> 1919 $("body").on("click", ".inc", function(event){ 1920 1921 const $button = $(this); // Seleciona o botão clicado 1922 $button.prop('disabled', true); 1923 1924 setTimeout(() => { 1925 $button.prop('disabled', false); 1926 }, 500); 1927 1928 1929 var qtyInput = $(this).closest(".quantity-wrap").children(".number"); 1930 var qtyVal = parseInt(qtyInput.val()) + parseInt(1); 1931 1932 qtyInput.val(qtyVal); 1933 1934 var index = $(this).data("index"); 1935 var price = $(this).data("preco"); 1936 var price_complementos = $(this).data("preco_complementos"); 1937 var data2 = "acao=preco"; 1938 var data3 = "acao=qtd"; 1939 1940 1941 // Seleciona o elemento pelo ID 1942 let precoElement = document.getElementById("preco_carrinho"); 1943 let precoTexto = precoElement.textContent || precoElement.innerText; 1944 let precoNumerico = parseFloat(precoTexto.replace('â¬', '').trim()); 1945 1946 let total_carrinho = parseFloat(precoNumerico) + parseFloat(price) + parseFloat(price_complementos); 1947 1948 $("#preco_carrinho").html("â¬"+total_carrinho.toFixed(2)); 1949 1950 $(this).closest(".quantity-wrap").children(".decrement").html('<i class="fa-solid fa-dash"></i>'); 1951 1952 $.ajax({ 1953 type: "POST", 1954 url: '/carrinho_back.php', 1955 data: "acao=quantidade_add&quantidade="+qtyVal+"&index="+index+"&preco="+price, 1956 success: function(data) { 1957 $.ajax({ 1958 type: "POST", 1959 url: '/carrinho_back.php', 1960 data: data2, 1961 success: function(data2) { 1962 } 1963 }); 1964 $.ajax({ 1965 type: "POST", 1966 url: '/carrinho_back.php', 1967 data: data3, 1968 success: function(data3) { 1969 $("#qtd_prod").html(data3); 1970 $(".bola-items").html(data3); 1971 } 1972 }); 1973 } 1974 }); 1975 }); 1976 1977 $("body").on("click", ".dec", function(event){ 1978 1979 const $button = $(this); 1980 $button.prop('disabled', true); 1981 1982 setTimeout(() => { 1983 $button.prop('disabled', false); 1984 }, 500); 1985 1986 var qtyInput = $(this).closest(".quantity-wrap").children(".number"); 1987 1988 if(qtyInput.val() == 1){ 1989 var qtyVal = 1; 1990 event.preventDefault(); 1991 var data2 = "acao=preco"; 1992 var data3 = "acao=qtd"; 1993 1994 var keyProd = $(this).data("index"); 1995 var preco = $(this).data("preco"); 1996 var price_complementos = $(this).data("preco_complementos"); 1997 1998 var qtyInput = $(this).closest(".quantity-wrap").find(".number"); 1999 2000 2001 $(this).closest("li").remove(); 2002 2003 var newLength = document.getElementById("produtos_carrinho").getElementsByTagName("li").length; 2004 2005 if (newLength === 0) { 2006 $("#produtos_carrinho").html("Sem produtos disponÃveis."); 2007 $("#preco_carrinho").html("â¬0.00"); 2008 }else{ 2009 let precoElement = document.getElementById("preco_carrinho"); 2010 let precoTexto = precoElement.textContent || precoElement.innerText; 2011 let precoNumerico = parseFloat(precoTexto.replace('â¬', '').trim()); 2012 2013 let total_carrinho = parseFloat(precoNumerico) - parseFloat(preco) - parseFloat(price_complementos); 2014 2015 $("#preco_carrinho").html("â¬"+total_carrinho.toFixed(2)); 2016 } 2017 2018 $.ajax({ 2019 type: "POST", 2020 url: '/carrinho_back.php', 2021 data: "acao=remove&index="+keyProd+ "&preco="+preco+"&quantidade="+qtyInput.val(), 2022 success: function(data) { 2023 $.ajax({ 2024 type: "POST", 2025 url: '/carrinho_back.php', 2026 data: data2, 2027 success: function(data2) { 2028 } 2029 }); 2030 $.ajax({ 2031 type: "POST", 2032 url: '/carrinho_back.php', 2033 data: data3, 2034 success: function(data3) { 2035 $("#qtd_prod").html(data3); 2036 $(".bola-items").html(data3); 2037 } 2038 }); 2039 } 2040 }); 2041 }else{ 2042 2043 var qtyVal = parseInt(qtyInput.val()) - parseInt(1); 2044 2045 qtyInput.val(qtyVal); 2046 2047 if(qtyInput.val() > 1){ 2048 $(this).closest(".quantity-wrap").children(".decrement").html('<i class="fa-solid fa-dash"></i>'); 2049 }else{ 2050 $(this).closest(".quantity-wrap").children(".decrement").html('<i class="fa-solid fa-trash"></i>'); 2051 } 2052 2053 var index = $(this).data("index"); 2054 var price = $(this).data("preco"); 2055 var price_complementos = $(this).data("preco_complementos"); 2056 var data2 = "acao=preco"; 2057 var data3 = "acao=qtd"; 2058 2059 let precoElement = document.getElementById("preco_carrinho"); 2060 let precoTexto = precoElement.textContent || precoElement.innerText; 2061 let precoNumerico = parseFloat(precoTexto.replace('â¬', '').trim()); 2062 2063 let total_carrinho = parseFloat(precoNumerico) - parseFloat(price) - parseFloat(price_complementos); 2064 2065 $("#preco_carrinho").html("â¬"+total_carrinho.toFixed(2)); 2066 2067 $.ajax({ 2068 type: "POST", 2069 url: '/carrinho_back.php', 2070 data: "acao=quantidade_add&quantidade="+qtyVal+"&index="+index+"&preco="+price, 2071 success: function(data) { 2072 $.ajax({ 2073 type: "POST", 2074 url: '/carrinho_back.php', 2075 data: data2, 2076 success: function(data2) { 2077 } 2078 }); 2079 $.ajax({ 2080 type: "POST", 2081 url: '/carrinho_back.php', 2082 data: data3, 2083 success: function(data3) { 2084 $("#qtd_prod").html(data3); 2085 $(".bola-items").html(data3); 2086 } 2087 }); 2088 } 2089 }); 2090 } 2091 }); 2092 </script>
2092 2093 2094 <div style="margin-bottom: 10px;" class="price-total"> 2095 <h6 class="cart-total">Subtotal</h6> 2096 2097 <h5 id="preco_carrinho" class="cart-total color-primary">â¬0.00</h5> 2098 </div> 2099 2100 <!--<div style="padding-top:0" class="price-total"> 2101 <h6 class="cart-total price2">Entrega</h6> 2102 2103 <h5 id="portes" class="cart-total color-primary price2">â¬0.00</h5> 2104 </div> 2105 2106 <div style="padding-top:5px" class="price-total mb-24"> 2107 <h6 class="cart-total">Total</h6> 2108 2109 <h5 id="total" class="cart-total color-primary">â¬0.00</h5> 2110 </div>--> 2111 2112 2113 <div class="vr-line mb-24"></div> 2114 2115 <div class="action-buttons"> 2116 <a href="/cart.php" class="cus-btn outline"> 2117 Ver Carrinho 2118 </a> 2119 2120 <a href="/login.php?path=cart" class="cus-btn dark"> 2121 Continuar 2122 </a> 2123 </div> 2124 </aside> 2125 <div id="sidebar-cart-curtain"></div> 2126 <!-- Mini Cart End --> 2127 2128
2128<script> 2129 $('#next_suges').on('click', function () { 2130 var $body = $("body"); 2131 $body.removeClass("show-sidebar-cart"); 2132 $("#sidebar-cart-curtain").fadeOut(200); 2133 2134 var $sidebarCart2 = $('.loading-spinner'); 2135 2136 $.ajax({ 2137 url: '/verificar_carrinho.php', // Endpoint PHP que retorna o estado do carrinho 2138 method: 'POST', 2139 dataType: 'json', // Espera um JSON na resposta 2140 success: function (response) { 2141 if (response.status === 'ok' && response.carrinho) { 2142 $('#exampleModal2').modal('show'); 2143 2144 $sidebarCart2.css('display', 'flex'); 2145 2146 $.ajax({ 2147 type: "POST", 2148 url: '/modal_ainda.php', 2149 success: function(data3) { 2150 // Atualiza o conteúdo da barra lateral com o retorno da segunda requisição AJAX 2151 $("#scrollContainer").html(data3); 2152 // Remover o spinner após o carregamento completo do conteúdo 2153 $sidebarCart2.hide(); 2154 } 2155 }); 2156 } else { 2157 swal.fire({ 2158 title: "Erro!", 2159 html: "O carrinho está vazio, por favor adicione produtos.", 2160 icon: "error", 2161 showConfirmButton: true 2162 }); 2163 // Remover o spinner se o carrinho estiver vazio 2164 //$sidebarCart2.hide(''); 2165 } 2166 } 2167 }); 2168 }); 2169 2170 </script>
2170 2171 2172 2173 <!-- Jquery Js --> 2174
2174<script src="/assets/js/vendor/jquery-3.6.3.min.js" defer></script>
2174 2175
2175<script src="/assets/js/vendor/bootstrap.min.js" defer></script>
2175 2176
2176<script src="/assets/js/vendor/gsap.min.js" defer></script>
2176 2177 <!--
2177<script src="/assets/js/vendor/scrollTrigger.min.js"></script>
2177 2178
2178<script src="/assets/js/vendor/ScrollToPlugin.min.js"></script>
2178 2179
2179<script src="/assets/js/vendor/ScrollSmoother.min.js"></script>
2179--> 2180
2180<script src="/assets/js/vendor/jquery-appear.js" defer></script>
2180 2181
2181<script src="/assets/js/vendor/ion.rangeSlider.js" defer></script>
2181 2182
2182<script src="/assets/js/vendor/jquery.nice-select.min.js" defer></script>
2182 2183
2183<script src="/assets/js/vendor/slick.min.js" defer></script>
2183 2184
2184<script src="/assets/js/vendor/odometer.min.js" defer></script>
2184 2185
2185<script src="/assets/js/app.js" defer></script>
2185 2186 2187
2187<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js" defer></script>
2187 2188 2189
2189<script> 2190 $("body").on("click", ".add_btn", function (event) { 2191 event.preventDefault(); 2192 var produtoID = $(this).data("id"); 2193 var $body = $("body"); 2194 var $sidebarCart_inicio = $("#sidebar-cart"); // Alterado para referir a sidebar-cart 2195 2196 // Adicionar o spinner dentro da div sidebar-cart 2197 var spinner = '<div class="loading-spinner"></div>'; 2198 $sidebarCart_inicio.append(spinner); 2199 $sidebarCart_inicio.find(".loading-spinner").show(); 2200 2201 var data = "id=" + $(this).data("id") + 2202 "&nome=" + $(this).data("nome") + 2203 "&preco=" + $(this).data("preco") + 2204 "&imagem=" + $(this).data("image") + 2205 "&acao=add_compras&familia=" + $(this).data("familia"); 2206 var data2 = "acao=preco"; 2207 var data3 = "acao=qtd"; 2208 2209 $body.css('overflow', 'hidden'); 2210 2211 $body.addClass("show-sidebar-cart"); 2212 $("#sidebar-cart-curtain").fadeIn(500); 2213 2214 // Fazer a primeira chamada AJAX 2215 var ajax1 = $.ajax({ 2216 type: "POST", 2217 url: "/carrinho_back.php", 2218 data: data, 2219 success: function (data) { 2220 $("#produtos_carrinho").html(data); 2221 2222 // Fazer a segunda chamada AJAX dentro do sucesso da primeira 2223 var ajax2 = $.ajax({ 2224 type: "POST", 2225 url: "/carrinho_back.php", 2226 data: data2, 2227 success: function (data2) { 2228 $("#preco_carrinho").html("â¬" + data2); 2229 } 2230 }); 2231 2232 // Fazer a terceira chamada AJAX dentro do sucesso da primeira 2233 var ajax3 = $.ajax({ 2234 type: "POST", 2235 url: "/carrinho_back.php", 2236 data: data3, 2237 success: function (data3) { 2238 $(".bola-items").html(data3); 2239 $(".bola-items").show(); 2240 } 2241 }); 2242 2243 // Usar $.when para garantir que todas as requisições AJAX terminaram 2244 $.when(ajax2, ajax3).done(function() { 2245 // Remover o spinner após todas as requisições AJAX terem completado 2246 $sidebarCart_inicio.find(".loading-spinner").remove(); 2247 }); 2248 2249 // Identifica o produto pelo ID 2250 var produtoCarrinho = $("#produtos_carrinho").find(`[data-id='${produtoID}']`); 2251 2252 if (produtoCarrinho.length) { 2253 produtoCarrinho.css("background-color", "#d1242136"); // Amarelo claro 2254 setTimeout(function () { 2255 produtoCarrinho.css("transition", "background-color 2s"); 2256 produtoCarrinho.css("background-color", "#fcfdfd"); // Volta ao normal 2257 }, 100); 2258 } 2259 } 2260 }); 2261 }); 2262 2263 2264 $('.carrinho_btn').on('click', function(e) { 2265 e.preventDefault(); 2266 var $body = $("body"); 2267 $body.css('overflow', 'hidden'); 2268 }); 2269 2270 2271 $('#sidebar-cart-curtain').on('click', function(e) { 2272 e.preventDefault(); 2273 var $body = $("body"); 2274 $body.css('overflow', ''); 2275 }); 2276 2277 $('#next_suges').on('click', function(e) { 2278 e.preventDefault(); 2279 var $body = $("body"); 2280 $body.css('overflow', ''); 2281 }); 2282 2283 2284 $('.close-button').on('click', function(e) { 2285 e.preventDefault(); 2286 var $body = $("body"); 2287 $body.css('overflow', ''); 2288 $body.removeClass("show-sidebar-cart"); 2289 $("#sidebar-cart-curtain").fadeOut(500); 2290 }); 2291 2292 2293 $('.carrinho_btn').on('click', function(e) { 2294 e.preventDefault(); 2295 var $body = $("body"); 2296 2297 $body.toggleClass("show-sidebar-cart"); 2298 2299 if ($("#sidebar-cart-curtain").is(":visible")) { 2300 $("#sidebar-cart-curtain").fadeOut(500); 2301 } else { 2302 $("#sidebar-cart-curtain").fadeIn(500); 2303 } 2304 }); 2305 2306 2307 $( "#sidebar-cart-curtain" ).on( "click", function(e) { 2308 e.preventDefault(); 2309 var $body = $("body"); 2310 2311 $body.removeClass("show-sidebar-cart"); 2312 $("#sidebar-cart-curtain").fadeOut(500); 2313 }); 2314 </script>
2314 2315 2316
2316<script> 2317 $("body").on("click", ".add_fav", function(event){ 2318 2319 2320 var options = { 2321 "closeButton": true, 2322 "debug": false, 2323 "newestOnTop": false, 2324 "progressBar": true, 2325 "positionClass": "toast-bottom-right", 2326 "preventDuplicates": false, 2327 "showDuration": "300", 2328 "hideDuration": "800", 2329 "timeOut": "3000", 2330 "extendedTimeOut": "1000", 2331 "showEasing": "swing", 2332 "hideEasing": "linear", 2333 "showMethod": "fadeIn", 2334 "hideMethod": "fadeOut" 2335 } 2336 2337 2338 toastr["error"]("Por favor realize login!"); 2339 2340 }); 2341 </script>
2341 2342 2343
2343<script> 2344 $("body").on("click", ".remove_fav", function(event){ 2345 2346 var options = { 2347 "closeButton": true, 2348 "debug": false, 2349 "newestOnTop": false, 2350 "progressBar": true, 2351 "positionClass": "toast-bottom-right", 2352 "preventDuplicates": false, 2353 "showDuration": "300", 2354 "hideDuration": "800", 2355 "timeOut": "3000", 2356 "extendedTimeOut": "1000", 2357 "showEasing": "swing", 2358 "hideEasing": "linear", 2359 "showMethod": "fadeIn", 2360 "hideMethod": "fadeOut" 2361 } 2362 2363 2364 toastr["error"]("Por favor realize login!"); 2365 }); 2366 </script>
2366 2367 2368
2368<script> 2369 AOS.init(); 2370 AOS.refresh(); 2371 </script>
2371 2372
2372<script type="module" src="/cookieconsent-config.js"></script>
2372 2373</body> 2374 2375 2376<div class="modal fade" id="meuModal_comp" tabindex="-1" aria-labelledby="meuModalLabel" aria-hidden="true"> 2377 <div class="modal-dialog"> 2378 <div class="modal-content"> 2379 <div style="border-bottom: none;" class="modal-header"> 2380 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 2381 </div> 2382 <div id="carregar"> 2383 2384 </div> 2385 </div> 2386 </div> 2387</div> 2388 2389
2390<script> 2391 $(document).on('click', '.abre_modal', function(event) { 2392 event.preventDefault(); // Impede o comportamento padrão de navegação 2393 2394 var productId = $(this).data('id'); // Captura o valor de 'data-id' 2395 2396 var $sidebarCart = $('#carregar'); 2397 // Exibir o loading (adicionando spinner) 2398 $sidebarCart.find(".loading-spinner").remove(); // Se já houver um spinner anterior, removê-lo 2399 $sidebarCart.append('<div style="height:100%; min-height: 400px;" class="loading-spinner"></div>'); // Adiciona o spinner na barra lateral 2400 2401 // Chamada AJAX 2402 $.ajax({ 2403 url: '/modal_complmentares.php', // Substitua com o URL do seu backend 2404 type: 'POST', 2405 data: { 2406 id: productId // Envia o 'data-id' como parâmetro no corpo da requisição 2407 }, 2408 success: function(response) { 2409 // Quando a resposta é recebida, esconder o loading 2410 $sidebarCart.find(".loading-spinner").remove(); // Remove o spinner 2411 $('#carregar').html(response); // Carrega o conteúdo da resposta 2412 }, 2413 }); 2414 }); 2415</script>
2415 2416 2417 2418<!-------------------------------- MODAL PARA AINDA PRETENDE? -----------------------------------> 2419<div class="modal fade" id="exampleModal2" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> 2420 <div class="modal-dialog modal-lg"> 2421 <div class="modal-content"> 2422 <div style="border: none;" class="modal-header"> 2423 <h5 class="modal-title" id="exampleModalLabel">Ainda pretende?</h5> 2424 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 2425 </div> 2426 2427 <div style="display:flex; height:100%; min-height: 300px;" class="loading-spinner"></div> 2428 2429 <div style="padding-bottom: 0; padding-left: 25px; padding-right: 25px;overflow: hidden; background: #fbfcfd;" class="modal-body"> 2430 <div 2431 id="scrollContainer" 2432 class="row flex-nowrap teste312" 2433 style="display: flex; gap: 16px; overflow-x: auto; cursor: grab;"> 2434 2435 </div> 2436 </div> 2437 <div style="border: none;" class="modal-footer"> 2438 <a href="/checkout.php" id="btnAvancar" class="cus-btn dark">Avançar</a> 2439 </div> 2440 </div> 2441 </div> 2442</div> 2443
2444<script> 2445 document.addEventListener("DOMContentLoaded", function () { 2446 const scrollContainer = document.getElementById('scrollContainer'); 2447 2448 let isDown = false; 2449 let startX; 2450 let scrollLeft; 2451 let isDragging = false; 2452 let touchStartTime; 2453 2454 function initScrollEvents() { 2455 scrollContainer.addEventListener('mousedown', (e) => { 2456 isDown = true; 2457 isDragging = false; 2458 scrollContainer.style.cursor = 'grabbing'; 2459 startX = e.pageX - scrollContainer.offsetLeft; 2460 scrollLeft = scrollContainer.scrollLeft; 2461 }); 2462 2463 scrollContainer.addEventListener('mouseup', () => { 2464 isDown = false; 2465 scrollContainer.style.cursor = 'grab'; 2466 }); 2467 2468 scrollContainer.addEventListener('mouseleave', () => { 2469 isDown = false; 2470 scrollContainer.style.cursor = 'grab'; 2471 }); 2472 2473 scrollContainer.addEventListener('mousemove', (e) => { 2474 if (!isDown) return; 2475 e.preventDefault(); 2476 isDragging = true;
2477 const x = e.pageX - scrollContainer.offsetLeft; 2478 const walk = (x - startX) * 1.2; // Reduzimos a força para suavizar 2479 scrollContainer.scrollLeft = scrollLeft - walk; 2480 }); 2481 2482 // Suporte para toque (mobile) 2483 scrollContainer.addEventListener('touchstart', (e) => { 2484 isDown = true; 2485 isDragging = false; 2486 touchStartTime = Date.now(); 2487 startX = e.touches[0].pageX - scrollContainer.offsetLeft; 2488 scrollLeft = scrollContainer.scrollLeft; 2489 }); 2490 2491 scrollContainer.addEventListener('touchmove', (e) => { 2492 if (!isDown) return; 2493 e.preventDefault(); // Impede o scroll nativo do iOS 2494 isDragging = true; 2495 const x = e.touches[0].pageX - scrollContainer.offsetLeft; 2496 const walk = (x - startX) * 1.2; // Movimento mais fluido 2497 scrollContainer.scrollLeft = scrollLeft - walk; 2498 }, { passive: false }); // Garante que podemos usar preventDefault() 2499 2500 scrollContainer.addEventListener('touchend', (e) => { 2501 isDown = false; 2502 2503 // Se o toque durar mais de 200ms ou houve deslocamento, bloqueia o clique 2504 if (isDragging || Date.now() - touchStartTime > 200) { 2505 e.preventDefault(); 2506 e.stopPropagation(); 2507 } 2508 }); 2509 2510 // Evita que o scroll bloqueie cliques acidentais no iOS 2511 scrollContainer.addEventListener('click', (e) => { 2512 if (isDragging) { 2513 e.preventDefault(); 2514 e.stopPropagation(); 2515 isDragging = false; 2516 } 2517 }); 2518 } 2519 2520 // Monitora mudanças no conteúdo via AJAX e reinicializa os eventos 2521 const observer = new MutationObserver(() => { 2522 initScrollEvents(); 2523 }); 2524 2525 observer.observe(scrollContainer, { childList: true, subtree: true }); 2526 2527 // Chama a função de inicialização 2528 initScrollEvents(); 2529}); 2530 2531</script>
2531 2532 2533<style> 2534 #scrollContainer { 2535 scroll-behavior: auto; 2536 will-change: transform; 2537 cursor: grab; 2538 overflow-x: auto; 2539 white-space: nowrap; 2540 -webkit-overflow-scrolling: touch; /* Suaviza o scroll em iOS */ 2541 } 2542</style> 2543
2544<script> 2545 $('#exampleModal2').on('hidden.bs.modal', function () { 2546 $('.quantity-container').hide(); 2547 $('.quantity2').val(1); 2548 $('.add_btn_ainda').show(); 2549 }); 2550 2551 $(document).ready(function () { 2552 // Delegação de evento para o botão add_btn_ainda, que agora vai funcionar em elementos carregados dinamicamente 2553 $('body').on('click', '.add_btn_ainda', function () { 2554 2555 var data3 = "acao=qtd"; 2556 var data2 = "acao=preco"; 2557 2558 var options = { 2559 "closeButton": true, 2560 "debug": false, 2561 "newestOnTop": false, 2562 "progressBar": true, 2563 "positionClass": "toast-bottom-right", 2564 "preventDuplicates": false, 2565 "showDuration": "300", 2566 "hideDuration": "1000", 2567 "timeOut": "5000", 2568 "extendedTimeOut": "1000", 2569 "showEasing": "swing", 2570 "hideEasing": "linear", 2571 "showMethod": "fadeIn", 2572 "hideMethod": "fadeOut" 2573 } 2574 2575 toastr["success"]("Produto adicionado com sucesso."); 2576 2577 // Captura os dados do produto 2578 const produto = { 2579 id: $(this).data('id'), 2580 preco: parseFloat($(this).data('preco')), 2581 nome: $(this).data('nome'), 2582 imagem: $(this).data('image'), 2583 slug: $(this).data('slug'), 2584 familia: $(this).data('familia'), 2585 quantidade: 1 // Definir a quantidade como 1 ao adicionar o produto 2586 }; 2587 2588 // Envia os dados via AJAX para o PHP 2589 $.ajax({ 2590 url: '/carrinho_back.php', // Caminho para o script PHP 2591 type: 'POST', 2592 data: { 2593 acao: 'add_compras', 2594 id: produto.id, 2595 preco: produto.preco, 2596 nome: produto.nome, 2597 imagem: produto.imagem, 2598 slug: produto.slug, 2599 familia: produto.familia, 2600 quantidade: produto.quantidade 2601 }, 2602 success: function (response) { 2603 $("#produtos_carrinho").html(response); 2604 $.ajax({ 2605 type: "POST", 2606 url: '/carrinho_back.php', 2607 data: data3, 2608 success: function (data3) { 2609 $(".bola-items").html(data3); 2610 $(".bola-items").show(); 2611 } 2612 }); 2613 2614 $.ajax({ 2615 type: "POST", 2616 url: '/carrinho_back.php', 2617 data: data2, 2618 success: function (data2) { 2619 $("#preco_carrinho").html("â¬" + data2); 2620 } 2621 }); 2622 }, 2623 }); 2624 }); 2625 2626 $(document).ready(function () { 2627 // Delegação de evento para o botão de decremento 2628 $('body').on('click', '.dec2', function () { 2629 var data3 = "acao=qtd"; 2630 var data4 = "acao=listar"; 2631 var data2 = "acao=preco"; 2632 2633 const $button = $(this); 2634 $button.prop('disabled', true); 2635 2636 setTimeout(() => { 2637 $button.prop('disabled', false); 2638 }, 500); 2639 2640 // Captura o Ãndice do produto 2641 const id = $(this).data('id'); 2642 2643 // Envia a requisição AJAX para o servidor 2644 $.ajax({ 2645 url: '/carrinho_back.php', // Caminho para o script PHP 2646 type: 'POST', 2647 data: { 2648 acao: 'quantidade_remove', 2649 id: id 2650 }, 2651 success: function (response) { 2652 const data = JSON.parse(response); 2653 2654 // Atualiza a quantidade no carrinho 2655 $(`.quantidade[data-index="${id}"]`).val(data.quantidade); 2656 2657 // Atualiza o preço total 2658 $('#preco_total').text('â¬' + data.preco_total); 2659 2660 // Caso o produto tenha sido removido, você pode atualizar a lista de produtos ou remover o item da interface 2661 if (data.quantidade === 0) { 2662 $(`li[data-index="${id}"]`).remove(); 2663 } 2664 2665 // Atualiza a quantidade total e lista de produtos 2666 $.ajax({ 2667 type: "POST", 2668 url: '/carrinho_back.php', 2669 data: data3, 2670 success: function (data3) { 2671 $(".bola-items").html(data3); 2672 $(".bola-items").show(); 2673 } 2674 }); 2675 2676 $.ajax({ 2677 type: "POST", 2678 url: '/carrinho_back.php', 2679 data: data4, 2680 success: function (response) { 2681 $("#produtos_carrinho").html(response); 2682 } 2683 }); 2684 2685 $.ajax({ 2686 type: "POST", 2687 url: '/carrinho_back.php', 2688 data: data2, 2689 success: function (data2) { 2690 $("#preco_carrinho").html("â¬" + data2); 2691 } 2692 }); 2693 }, 2694 }); 2695 }); 2696 2697 // Delegação de evento para o botão de incremento 2698 $('body').on('click', '.inc2', function () { 2699 var data3 = "acao=qtd"; 2700 var data2 = "acao=preco"; 2701 2702 const $button = $(this); 2703 $button.prop('disabled', true); 2704 2705 setTimeout(() => { 2706 $button.prop('disabled', false); 2707 }, 500); 2708 2709 // Captura os dados do produto 2710 const produto = { 2711 id: $(this).data('id'), 2712 preco: parseFloat($(this).data('preco')), 2713 nome: $(this).data('nome'), 2714 imagem: $(this).data('image'), 2715 slug: $(this).data('slug'), 2716 familia: $(this).data('familia'), 2717 quantidade: 1 // Para o incremento, a quantidade é incrementada em 1 2718 }; 2719
2720 // Envia os dados via AJAX para o PHP para incrementar a quantidade 2721 $.ajax({ 2722 url: '/carrinho_back.php', // Caminho para o script PHP 2723 type: 'POST', 2724 data: { 2725 acao: 'add_compras', // Ação que indica incremento 2726 id: produto.id, 2727 preco: produto.preco, 2728 nome: produto.nome, 2729 imagem: produto.imagem, 2730 slug: produto.slug, 2731 familia: produto.familia, 2732 quantidade: produto.quantidade // Aqui, o valor de quantidade será incrementado no PHP 2733 }, 2734 success: function (response) { 2735 $("#produtos_carrinho").html(response); 2736 $.ajax({ 2737 type: "POST", 2738 url: '/carrinho_back.php', 2739 data: data3, 2740 success: function (data3) { 2741 $(".bola-items").html(data3); 2742 $(".bola-items").show(); 2743 } 2744 }); 2745 2746 $.ajax({ 2747 type: "POST", 2748 url: '/carrinho_back.php', 2749 data: data2, 2750 success: function (data2) { 2751 $("#preco_carrinho").html("â¬" + data2); 2752 } 2753 }); 2754 }, 2755 }); 2756 }); 2757 }); 2758 }); 2759 2760</script>
2760 2761
2762<script> 2763 document.addEventListener("DOMContentLoaded", function () { 2764 // Selecionar o body para delegar eventos 2765 const body = document.querySelector('body'); 2766 2767 // Delegação de evento para o botão add_btn_ainda 2768 body.addEventListener('click', function(event) { 2769 const addButton = event.target.closest('.add_btn_ainda'); 2770 if (addButton) { 2771 const productItem = addButton.closest('.item_ainda'); 2772 const quantityContainer = productItem.querySelector(".quantity-container"); 2773 quantityContainer.style.display = "flex"; // Mostra o controle de quantidade 2774 addButton.style.display = "none"; // Esconde o botão de adicionar 2775 } 2776 2777 // Delegação de evento para os botões de incremento e decremento 2778 const decrementButton = event.target.closest('.dec2'); 2779 if (decrementButton) { 2780 const productItem = decrementButton.closest('.item_ainda'); 2781 const quantityInput = productItem.querySelector("input"); 2782 let quantity = parseInt(quantityInput.value); 2783 if (quantity > 1) { 2784 quantityInput.value = quantity - 1; // Decrementa a quantidade 2785 } else { 2786 // Se a quantidade for 1, retorna ao botão inicial 2787 const addButton = productItem.querySelector(".add_btn_ainda"); 2788 const quantityContainer = productItem.querySelector(".quantity-container"); 2789 quantityContainer.style.display = "none"; // Esconde o controle de quantidade 2790 addButton.style.display = "flex"; // Mostra o botão inicial 2791 } 2792 } 2793 2794 const incrementButton = event.target.closest('.inc2'); 2795 if (incrementButton) { 2796 const productItem = incrementButton.closest('.item_ainda'); 2797 const quantityInput = productItem.querySelector("input"); 2798 let quantity = parseInt(quantityInput.value); 2799 quantityInput.value = quantity + 1; // Incrementa a quantidade 2800 } 2801 }); 2802 }); 2803</script>
2803 2804 2805<style> 2806.quantity-container { 2807 display: flex; 2808 justify-content: center; 2809 align-items: center; 2810 margin-top: 10px; 2811} 2812 2813.quantity-container .form-control { 2814 width: 60px; 2815 text-align: center; 2816} 2817 2818.quantity-container .btn { 2819 padding: 5px 10px; 2820 font-size: 16px; 2821 cursor: pointer; 2822} 2823 2824.apagar{ 2825 font-size: 13px !important; 2826 color: #282525; 2827 padding: 7px; 2828 border-radius: 4px; 2829 margin-top: 5px; 2830 background: #F0F0F0; 2831 border-radius: 5px; 2832} 2833 2834input[name="data_nascimento"] { 2835 user-select: none; /* Impede a seleção do texto no campo de data */ 2836} 2837</style> 2838 2839<!--
2839<script> 2840 // Verificar se o campo 'data_nascimento' existe antes de adicionar os event listeners 2841 var dataNascimento = document.querySelector('[name="data_nascimento"]'); 2842 2843 if (dataNascimento) { 2844 // Adicionar o evento de clique para mostrar o seletor de data 2845 dataNascimento.addEventListener('click', function () { 2846 this.showPicker(); // Para abrir o seletor de data no campo de entrada 2847 }); 2848 2849 // Adicionar o evento de foco para remover a seleção, se houver 2850 dataNascimento.addEventListener('focus', function () { 2851 this.setSelectionRange(0, 0); // Remove a seleção, se houver 2852 }); 2853 } 2854</script>
2854--> 2855 2856<link href='https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/ui-lightness/jquery-ui.css' rel='stylesheet'>
2857<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
vendor: 1 bytes, line 2857
2857
2858<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.min.js"></script>
2858 2859 2860
2861<script> 2862$('[name="data_nascimento"]').datepicker({ 2863 dateFormat: "dd/mm/yy", // Define o formato da data 2864 changeMonth: true, // Permite mudar o mês 2865 changeYear: true, // Permite mudar o ano 2866 yearRange: "1900:+0" // Define um intervalo de anos (ex: de 1900 até o ano atual) 2867}); 2868 2869 2870 2871 $('[name="data_nascimento"]').mask('00/00/0000'); 2872</script>
2872 2873
2874<script> 2875 // Função para verificar se o usuário está em um dispositivo móvel 2876 function isMobile() { 2877 return /Mobi|Android|iPhone|iPad|iPod|Windows Phone/i.test(navigator.userAgent); 2878 } 2879 2880 // Exibe a mensagem modal se o usuário estiver em um dispositivo móvel e não foi mostrado antes 2881 if (isMobile() && !localStorage.getItem('appPromptShown')) { 2882 setTimeout(function() { 2883 document.getElementById('overlay').style.display = 'block'; 2884 document.getElementById('appPrompt').style.display = 'block'; 2885 }, 1000); // Espera 1 segundo antes de mostrar a mensagem 2886 2887 // Marca que o prompt foi mostrado 2888 localStorage.setItem('appPromptShown', 'true'); 2889 } 2890 2891 // Função para abrir o app ou redirecionar para a loja certa 2892 function openApp() { 2893 const userAgent = navigator.userAgent || navigator.vendor || window.opera; 2894 let appLink = 'comidaapp://pagamento'; 2895 let storeLink = 'https://play.google.com/store/apps/details?id=com.albinet.comida_casa'; // Link genérico caso o SO não seja detectado 2896 2897 if (/android/i.test(userAgent)) { 2898 storeLink = 'https://play.google.com/store/apps/details?id=com.albinet.comida_casa'; // Link da Play Store 2899 } else if (/iPad|iPhone|iPod/.test(userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) { 2900 storeLink = 'https://apps.apple.com/pt/app/comida-em-casa/id6742107996?l=pt-PT'; // Link da App Store 2901 } 2902 2903 // Tenta abrir o app via deep link 2904 window.location.href = appLink; 2905 2906 // Se o app não abrir, redireciona para a loja após 1.5s 2907 setTimeout(function() { 2908 window.location.href = storeLink; 2909 }, 2000); 2910 } 2911 2912 // Função para fechar a mensagem modal 2913 function closePrompt() { 2914 document.getElementById('overlay').style.display = 'none'; 2915 document.getElementById('appPrompt').style.display = 'none'; 2916 } 2917</script>
2917 2918 2919 2920</html> 2921 2922 2923<div id="appPrompt"> 2924 <h2>Deseja abrir a app?</h2> 2925 <p>Para uma experiência mais rápida e personalizada, abra o nosso app!</p> 2926 <button style="background: #d12320 !important" class="btn33" onclick="openApp()">Sim, quero abrir</button> 2927 <button style="background: #282525 !important" class="btn33 btn-close1" onclick="closePrompt()">Não, obrigado</button> 2928</div>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.