/*=============== VARIABLES ===============*/ :root { --font-scale: 1; --theme: rgb(255, 25, 80); --theme-secondary: rgb(255, 70, 115); --box-shadow: rgba(0, 0, 0, 0.25) 0px 5px 10px; --text-shadow: 2.5px 2.5px 4px rgba(0, 0, 0, 0.4); } /*=============== FONTS ===============*/ @font-face { font-family: "Asap Condensed"; src: url("fonts/AsapCondensed.ttf"); } @font-face { font-family: "Outfit"; src: url("fonts/Outfit.ttf"); } @font-face { font-family: "Montserrat"; src: url("fonts/Montserrat.ttf"); } /*=============== MAIN CONFIGS ===============*/ html, body { width: 100%; } *::selection{ background-color: rgba(0, 0, 0, 0.1); } *{ margin: 0px; transition: ease-in-out 0.3s box-shadow; } /*=============== COMMON CONFIGS ===============*/ button, #logo, #langs img, .select, .option, .slider-dot{ cursor: pointer; } #langs, .card, .card-content, .card-bottom, .guest-info, .slider{ display: flex; } header, #search-btn, #book-container, .select, .book-btn, .card-location, .counter, .counter-btn, .card-highlights, .guest-container, .datepicker .navigation, .slider-dots{ display: flex; align-items: center; } #book-container, .select-wrapper, #search-btn, .card, .book-btn{ font-family: "Outfit"; } /*==================== HEADER ====================*/ header { position: relative; height: 75px; padding: 5px 25px; box-shadow: var(--box-shadow); } #logo{ display: flex; align-items: center; } #logo img{ height: 50px; margin-top: -5px; } #isotype{ display: none; } #langs{ margin-left: auto; gap: 10px; } #langs img{ width: 50px; height: 50px; } /*==================== MAIN CONTAINER ====================*/ #main-container{ font-family: "Asap Condensed"; width: 100%; padding: 75px 0px; background-image: url("img/lisboa.jpg"); background-repeat: no-repeat; background-size: cover; box-shadow: var(--box-shadow); } #main-container h1{ color: white; padding-left: 75px; padding: 30px 0px 5px 75px; font-size: calc(3.75rem * var(--font-scale)); text-shadow: var(--text-shadow); } #main-container h2{ padding-left: 77.5px; color: rgba(255, 255, 255, 0.65); font-size: calc(1.5rem * var(--font-scale)); text-shadow: var(--text-shadow); } #book-container{ margin: 0 auto; width: fit-content; margin-top: 125px; border-radius: 10px; justify-content: center; gap: 25px; padding: 20px; flex-wrap: wrap; background-color: rgba(255, 255, 255, 0.5); font-family: "Outfit"; border: 1px solid #ccc; } .select{ position: relative; border: 1px solid rgb(200, 200, 200); background-color: white; padding: 0px 20px; border-radius: 15px; } .select:hover{ box-shadow: rgba(0, 0, 0, 0.25) 0px 2px 5px; } .select-text{ font-family: "Outfit"; text-align: center; padding: 15px; font-size: calc(1.75rem * var(--font-scale)); color: rgba(0, 0, 0, 0.5); transition: width 0.6s ease; white-space: nowrap; overflow: hidden; } .select img{ width: 30px; height: 30px; } .options{ font-family: "Outfit"; position: absolute; top: 105%; left: 50%; width: 100%; background-color: white; border: 1px solid #ccc; border-radius: 1rem; display: none; min-width: fit-content; transform: translateX(-50%); z-index: 1; box-shadow: rgba(0, 0, 0, 0.25) 0px 5px 15px; } .option { padding: 15px; transition: ease-in-out 0.3s background-color; border-bottom: 1px solid #ccc; font-size: calc(1.1rem * var(--font-scale)) } .option:first-child { border-radius: 1rem 1rem 0px 0px; } .option:last-child { border-radius: 0px 0px 1rem 1rem; } .option:hover { background-color: rgb(240, 240, 240); } .option.selected { background-color: #d0d0d0; } /*==================== DATEPICKER ====================*/ .datepicker { font-family: "Outfit"; display: none; position: absolute; background: white; border-radius: 20px; padding: 20px; z-index: 2; bottom: 105%; left: 50%; transform: translateX(-50%); box-shadow: 0 3px 12px rgb(0 0 0 / 0.15); cursor: auto; } .datepicker.active { display: block; } .datepicker table { width: 100%; border-collapse: separate; table-layout: fixed; } .datepicker th, .datepicker td { text-align: center; width: 40px; height: 40px; border-radius: 100%; font-weight: 600; transition: box-shadow 0.2s ease-in-out; } .datepicker th { font-size: 0.85rem; color: rgba(0, 0, 0, 0.65); } .datepicker td:not(.disabled):not(:empty):hover { cursor: pointer; box-shadow: 0 0 0 1px black; } .datepicker td.disabled { color: #ccc; cursor: not-allowed; } .prev-month, .next-month { padding: 20px; background-size: 50%; background-position: center; background-repeat: no-repeat; background-color: white; border: none; border-radius: 100%; transition: background-color 0.3s ease-in-out; } .prev-month { background-image: url("img/left.png"); } .next-month { background-image: url("img/right.png"); } .prev-month:hover, .next-month:hover { background-color: rgba(0, 0, 0, 0.1); } .datepicker td.selected, .datepicker td.in-range { color: white; position: relative; overflow: visible; } .datepicker td.selected { background-color: var(--theme); } .datepicker td.in-range::after, .datepicker td.selected.checkIn::after, .datepicker td.selected.checkOut::after { content: ""; position: absolute; top: 50%; height: 30px; background-color: rgb(255, 52, 100); z-index: -1; } .datepicker td.in-range::after { left: 50%; transform: translate(-50%, -50%); width: 150%; } .datepicker td.selected.checkIn::after { left: 50%; transform: translateY(-50%); width: 75%; } .datepicker td.selected.checkOut::after { right: 50%; transform: translateY(-50%); width: 75%; } .datepicker .navigation { justify-content: space-between; } /*==================== POPUP ====================*/ .popup { font-family: "Montserrat", sans-serif; display: none; position: absolute; background-color: #fff; color: #ff1a4e; border: 3px solid transparent; background: linear-gradient(to right, #fff, #fff), linear-gradient(90deg, rgba(255,24,78,1) 0%, rgba(255,70,113,1) 100%); background-clip: padding-box, border-box; padding: 10px; font-weight: 600; border-radius: 8px; font-size: 0.9rem; z-index: 1; bottom: 120%; width: 80%; left: 50%; transform: translateX(-50%); pointer-events: none; box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1); } .popup::after { content: ""; position: absolute; border-width: 8px; border-style: solid; display: block; top: 102%; left: 20%; border-color: rgba(255,24,78,1) transparent transparent transparent; } /*==================== MAIN BUTTONS ====================*/ .book-btn, #search-btn, #check-availability-btn{ background: linear-gradient(90deg, var(--theme) 0%, var(--theme-secondary) 100%); color: white; border-radius: 15px; text-align: center; font-weight: bold; border: none; box-shadow: rgba(255,24,78,0.4) 0px 2.5px 7.5px; transition: transform 0.2s ease-in-out, ease-in-out 0.2s box-shadow; position: relative; font-family: "Outfit"; } .book-btn{ padding: 15px 100px; font-size: calc(2.5rem * var(--font-scale)); } #search-btn { padding: 15px 35px; font-size: calc(1.75rem * var(--font-scale)); } #check-availability-btn{ width: 100%; padding: 30px 0px; font-size: 2.5rem; } #search-btn:active, #check-availability-btn:active { animation: clickEffect 0.3s forwards; } #search-btn.loading , #check-availability-btn.loading{ background: linear-gradient(90deg, rgba(235,15,65,1) 0%, rgba(235,50,100,1) 100%); color: rgba(255, 255, 255, 0); cursor: not-allowed; } .loading::after { content: ""; position: absolute; top: 50%; left: 50%; width: 25px; height: 25px; border: 3px solid rgba(255, 255, 255, 0.8); border-top: 3px solid rgba(255, 255, 255, 0.5); border-radius: 50%; animation: spin 1s linear infinite; transform: translate(-50%, -50%); } .book-btn:hover, #search-btn:hover, #check-availability-btn:hover{ box-shadow: rgba(255,24,78,0.75) 0px 2.5px 7.5px; } @keyframes spin { 0% { transform: translate(-50%, -50%) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg); } } @keyframes clickEffect { 0% { transform: scale(1); } 50% { transform: scale(0.95); } 100% { transform: scale(1); } } /*==================== SLIDERS ====================*/ .slider-container { max-width: 600px; max-height: 450px; position: relative; overflow: hidden; border-radius: 20px; display: flex; align-items: center; justify-content: center; } .slider{ width: 100%; transition: transform 0.5s ease-in-out; } .slider img { display: block; max-width: 100%; min-width: 100%; min-height: 100%; object-fit: contain; } .slider-prev, .slider-next { position: absolute; top: 50%; transform: translateY(-50%); z-index: 1; padding: 16px; background-size: 55%; background-position: center; background-repeat: no-repeat; background-color: rgba(255, 255, 255, 0.8); border: 1px solid transparent; border-radius: 100%; transition: background-color 0.3s ease-in-out, border-color 0.3s ease-in-out; } .slider-prev:hover, .slider-next:hover { background-color: rgb(255, 255, 255); border-color: rgba(0, 0, 0, 0.75); } .slider-prev { left: 10px; background-image: url("img/left.png"); } .slider-next { right: 10px; background-image: url("img/right.png"); } .slider-dots-wrapper { position: absolute; bottom: 5%; left: 50%; transform: translateX(-50%); width: calc(5 * (7px + 6px)); /* 5 dots, cada um com 7px de largura e 6px de espaçamento */ overflow: hidden; } .slider-dots { display: flex; align-items: center; gap: 6px; transition: transform 0.3s ease-in-out; white-space: nowrap; } .slider-dot { width: 7px; height: 7px; background-color: rgba(255, 255, 255, 0.3); border-radius: 50%; transition: background-color 0.3s ease-in-out, width 0.3s ease-in-out, height 0.3s ease-in-out; flex-shrink: 0; } .slider-dot.active { background-color: rgba(255, 255, 255, 0.8); width: 8px; height: 8px; } /*==================== CARDS ====================*/ .card { margin: auto; background-color: #f8f8f8; border: 3px solid #EAEAEA; box-shadow: rgba(0, 0, 0, 0.25) 0px 5px 15px; width: 90%; padding: 20px; gap: 50px; margin-top: 45px; } .card-content { flex-direction: column; justify-content: space-between; width: 100%; } .card-location{ gap: 10px; } .card-location img { width: 22.5px; opacity: 0.65; } .card-location span { font-size: calc(1.35rem * var(--font-scale)); color: rgba(0, 0, 0, 0.75); font-weight: 500; } .card-top h1 { font-size: calc(2.75rem * var(--font-scale)); font-weight: 600; } .card-top p { margin: 15px 0px 20px 0px; font-size: calc(1.15rem * var(--font-scale)); } .card-bottom { justify-content: space-between; align-items: flex-end; } .card-highlights { flex-wrap: wrap-reverse; gap: 25px; } .highlight img { max-width: 50px; opacity: 0.75; position: relative; } .highlight img:hover { opacity: 0.65; transition: opacity 0.15s ease-in-out; } .highlight { position: relative; display: inline-block; } .highlight:hover::after { content: attr(data-tooltip); position: absolute; bottom: 118%; left: 50%; transform: translateX(-50%); background-color: rgba(0, 0, 0, 0.65); color: #fff; padding: 5px 10px; border-radius: 5px; white-space: nowrap; z-index: 10; font-size: calc(0.875rem * var(--font-scale)); opacity: 1; pointer-events: none; } .highlight:hover::before { content: ""; position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); border-width: 5px; border-style: solid; border-color: rgba(0, 0, 0, 0.65) transparent transparent transparent; } /*==================== GUESTS SELECTS ====================*/ .guest-container { justify-content: space-between; padding: 20px 25px; } .guest-info { flex-direction: column; margin-right: 25px; } .guest { font-size: calc(1.15rem * var(--font-scale)); white-space: nowrap; } .guest-description { font-size: calc(0.9rem * var(--font-scale)); color: #999; margin-top: 4px; } .counter { gap: 10px; } .counter-btn { background-color: #fff; border: 1px solid #595959; border-radius: 50%; width: 30px; height: 30px; justify-content: center; position: relative; transition: background-color 0.2s; } .counter-btn:hover:not(.disabled) { background-color: #e0e0e0; } .counter-btn.disabled { border-color: #dbdbdb; cursor: not-allowed; } .counter-btn::before, .counter-btn::after { content: ''; position: absolute; background-color: #595959; border-radius: 2px; } .counter-btn.decrement::before, .counter-btn.increment::before { width: 12px; height: 2px; } .counter-btn.increment::after { width: 2px; height: 12px; } .counter-btn.disabled::before, .counter-btn.disabled::after { background-color: #dbdbdb; } .guest-count { font-size: 18px; width: 20px; text-align: center; } .separator-line { width: 85%; height: 1px; background-color: rgba(0, 0, 0, 0.3); margin: 0 auto; } /*==================== NO RESULTS ====================*/ #no-results{ text-align: center; font-family: "Outfit"; font-size: calc(2rem * var(--font-scale)); color: rgba(0, 0, 0, 0.75); padding: 75px; transition: opacity 2s ease; opacity: 0; display: none; } /*==================== CARD PRICES ====================*/ .price-block { margin-left: auto; padding: 8px 20px; border-radius: 8px; } .since, .night { display: block; font-size: 14px; color: #666; } .price { display: block; font-size: 1.75rem; font-weight: bold; color: #333; } /*==================== FOOTER ====================*/ footer { border-top: 1px solid rgba(0, 0, 0, 0.25); color: rgba(0, 0, 0, 0.75); font-family: "Montserrat"; background-color: rgba(0, 0, 0, 0.015); } .footer-container { padding: 50px 20px 30px 20px; display: flex; justify-content: space-around; flex-wrap: wrap; text-align: left; } .footer-section { flex: 1; margin-right: 20px; max-width: 20%; } .footer-section h3 { font-size: 1.2em; margin-bottom: 10px; } .footer-section ul { list-style-type: none; padding: 0; } .footer-section ul li { margin-bottom: 5px; } .footer-section ul li a { text-decoration: none; color: rgb(0, 0, 0); } .footer-section ul li a:hover { text-decoration: underline; } .footer-bottom { width: 100%; background-color: rgba(0, 0, 0, 0.025); padding: 20px 0; text-align: center; font-size: 1rem; margin-top: 20px; border-top: 1px solid rgba(0, 0, 0, 0.2); color: rgba(0, 0, 0, 0.75); box-sizing: border-box; } /*==================== RESERVATION MODAL ====================*/ .hidden{ display: none !important; } .show{ opacity: 1 !important; display: block; } .modal{ position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 1; overflow-y: auto; transition: opacity 0.3s ease-in-out; opacity: 0; } .modal-content { background-color: rgb(255, 255, 255); padding: 25px 50px; width: 50%; max-height: fit-content; border-radius: 8px; position: absolute; top: 5%; z-index: 1; border: 2px solid #424242; } #close-modal { position: absolute; top: 10px; left: 10px; padding: 20px; background-size: 50%; background-position: center; background-repeat: no-repeat; background-color: white; border: none; border-radius: 100%; transition: background-color 0.3s ease-in-out; background-image: url("img/left.png"); } #close-modal:hover{ background-color: rgba(0, 0, 0, 0.1); } #modal-accommodation-title{ padding: 20px 0px 15px 0px; font-family: "Outfit"; color: rgba(0, 0, 0, 0.8); font-weight: 500; font-size: calc(2.3rem * var(--font-scale)); } .slider-container.large{ max-width: 100%; max-height: 600px; display: flex; align-items: center; position: relative; overflow: hidden; border-radius: 20px; box-shadow: rgba(0, 0, 0, 0.25) 0px 5px 15px; border: 1px solid #424242; } #reservation-info { margin: auto; border: 1px solid rgba(0, 0, 0, 0.5); display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 15px; box-shadow: rgba(0, 0, 0, 0.25) 0px 5px 15px; padding: 10px 10px; border-radius: 15px; width: fit-content; max-width: 100%; } #reservation-info .select { display: flex; flex: 1; } .table-wrapper { margin: 35px auto; margin-bottom: 15px; font-family: "Outfit", sans-serif; } .details-table { width: 100%; border-collapse: separate; border-spacing: 0; border-radius: 8px; overflow: hidden; border: 1px solid #ddd; } .details-table td { padding: 10px; border: 1px solid #ddd; font-size: 1rem; vertical-align: top; } .details-table td img { height: 16px; width: 16px; margin-right: 8px; vertical-align: middle; } .details-label { font-weight: bold; width: 30%; background-color: #f8f1f1; white-space: nowrap; } .details-value { width: 70%; } #al-description{ padding: 30px 10px; font-family: "Montserrat"; } #al-description h2{ font-weight: 600; font-size: calc(1.5rem * var(--font-scale)); } #al-description h3{ font-weight: 400; font-size: calc(1.25rem * var(--font-scale)); } #al-license{ font-family: "Montserrat"; margin-bottom: 25px; padding-left: 2px; } #al-license h4{ font-weight: 600; font-size: calc(1rem * var(--font-scale)); } #al-license h5{ font-weight: 400; font-size: calc(0.85rem * var(--font-scale)); } /*==================== AVAILABILITY MODAL ====================*/ .availability-modal { font-family: "Outfit"; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 1; /* Certifique-se de que fica acima do conteúdo */ } .availability-modal-content { background-color: white; padding: 20px; border-radius: 8px; text-align: center; width: 300px; position: relative; } #availability-status-title{ margin-bottom: 20px; background: linear-gradient(90deg, rgba(255,24,78,1) 0%, rgba(255,70,113,1) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .close-availability-modal-btn { position: absolute; top: 10px; right: 10px; background: none; border: none; font-size: 18px; cursor: pointer; } .confirm-reservation-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.6); /* Fundo escuro com opacidade */ display: flex; justify-content: center; align-items: center; z-index: 1; overflow-y: auto; } /* Modal content */ .confirm-reservation-modal-content { background-color: rgb(255, 255, 255); padding: 25px 50px; width: 45%; max-height: fit-content; border-radius: 8px; position: absolute; top: 5%; z-index: 1; } /*==================== MEDIA QUERIES ====================*/ @media (max-width: 1300px) { :root { --font-scale: 0.95; } } @media (max-width: 1100px) { :root { --font-scale: 0.85; } } @media (max-width: 900px) { :root { --font-scale: 0.75; } } @media (max-width: 700px) { :root { --font-scale: 0.65; } } @media (max-width: 500px) { #logo h1{ display: none; } } @media (max-width: 1750px) { .modal-content { width: 50%; } } @media (max-width: 1650px) { .modal-content { width: 55%; } } @media (max-width: 1550px) { .book-btn { padding: 15px 75px; } } @media (max-width: 1500px) { .book-btn { padding: 15px 55px; } .modal-content { width: 60%; } } @media (max-width: 1450px) { .book-btn { padding: 15px 40px; } } @media (max-width: 1400px) { .book-btn { padding: 15px 55px; } #book-container { max-width: 85%; } .modal-content { width: 65%; } } @media (max-width: 1375px) { .card { flex-flow: column; gap: 20px; } .slider-container { max-width: 100%; max-height: 750px; } } @media (max-width: 1300px) { .modal-content { width: 70%; } } @media (max-width: 1255px) { #book-container { max-width: 65%; } } @media (max-width: 1200px) { #book-container { max-width: 67.5%; } .slider img { object-fit: cover; } .modal-content { width: 75%; } } @media (max-width: 1150px) { #book-container { max-width: 70%; } } @media (max-width: 1100px) { #book-container { max-width: 72.5%; } .price-block { padding: 5px 20px; } } @media (max-width: 900px) { .select { width: 100%; margin-bottom: 10px; } .price-block { padding: 0px 20px; } } @media (max-width: 768px) { .footer-container { flex-direction: column; justify-content: flex-end; text-align: left; } .footer-section { margin-right: 0; margin-bottom: 20px; max-width: 100%; } .footer-section h3, .footer-section ul li { text-align: left; } } @media (max-width: 600px) { .modal-content { width: 90%; padding: 35px 20px; top: 10%; box-sizing: border-box; } .slider-container.large { box-shadow: rgba(0, 0, 0, 0.25) 0px 5px 5px;; } #check-availability-btn { padding: 15px 50px; font-size: 1.5rem; max-width: 100%; } .details-table { font-size: 0.9rem; } .details-table td { padding: 8px; } .select img { width: 25px; height: 25px; } .select-text { font-size: calc(1.5rem * var(--font-scale)); } .counter-btn { width: 25px; height: 25px; } .counter-btn.decrement::before, .counter-btn.increment::before, .counter-btn.increment::after { width: 8px; height: 1px; } .counter-btn.increment::after { width: 1px; height: 8px; } .popup { font-size: 10px; padding: 5px; } #reservation-info { gap: 0px; } } @media (max-width: 565px) { .card-highlights { flex-wrap: nowrap; } .card-bottom { flex-wrap: wrap; } .book-btn { margin-top: 35px; width: 100%; padding: 20px 0; justify-content: center; } .card-price { padding: 25px 10px; } .slider-container.big { max-height: 450px; } } @media (max-width: 500px) { #logo h1 { display: none; } .footer-bottom { font-size: 0.9rem; } #isotype { display: block; } #imagotype { display: none; } #main-container h1, #main-container h2 { padding: 0; margin: auto; width: fit-content; } #main-container { padding: 50px 0px; } #book-container { margin-top: 30px; } } @media (max-width: 480px) { .highlight img { max-width: 45px; } .price { font-size: 1.5rem; } #book-container { gap: 0; } } @media (max-width: 475px) { .highlight img { max-width: 40px; } .price { font-size: 1.4rem; } .night, .since { font-size: 0.75rem; } } @media (max-width: 410px) { .highlight img { max-width: 50px; } .card-highlights { width: 100%; } .price { font-size: 1.5rem; } .night { font-size: 0.8rem; } .since { font-size: 0.8rem; } .book-btn { width: 60%; text-align: center; padding: 20px 0px; } .price-block { margin-left: 0; margin-right: auto; padding: 0; } #check-availability-btn { padding: 15px 20px; font-size: 1.25rem; } } @media (max-width: 600px) { .datepicker { font-family: "Outfit"; display: none; position: absolute; background: white; border-radius: 20px; padding: 20px; z-index: 2; bottom: 105%; left: 50%; transform: translateX(-50%); box-shadow: 0 3px 12px 0 rgb(0 0 0 / 0.15); } .datepicker th, .datepicker td { width: 30px; height: 30px; } .datepicker td { font-size: 0.75rem; } .datepicker td.in-range::after, .datepicker td.selected.checkIn::after, .datepicker td.selected.checkOut::after { height: 25px; } } @media (max-width: 768px) { .details-table { font-size: 0.9rem; border: none; } .details-table td { display: block; width: 100%; box-sizing: border-box; border-bottom: 1px solid #ddd; } .details-label { font-weight: bold; width: 100%; } .details-value { width: 100%; } .details-table td img { display: inline-block; margin-right: 8px; } }