﻿/* =========================================================
   BASE
========================================================= */
*{
  margin:0;
  padding:0;
  box-sizing:border-box;
}

:root{
  --black:#111;
  --text:#17201b;
  --muted:#666;
  --line:#eee;
  --soft:#f5f5f5;
  --warm:#fbfaf7;
  --white:#fff;
  --green:#1f9d67;
  --green-dark:#188454;
  --whatsapp:#25D366;
  --danger:#ff5a5f;
  --radius-sm:12px;
  --radius-md:16px;
  --radius-lg:24px;
  --radius-xl:28px;
  --shadow-sm:0 10px 30px rgba(0,0,0,.08);
  --shadow-md:0 14px 40px rgba(17,24,39,.12);
}

html{
  scroll-behavior:smooth;
}

body{
  font-family:'Inter',sans-serif;
  background:var(--warm);
  color:var(--black);
  line-height:1.5;
}

#gt_float_wrapper{
  right:18px !important;
  left:auto !important;
  bottom:18px !important;
}

body.translator-hidden #gt_float_wrapper{
  opacity:0;
  pointer-events:none;
}

a{
  color:inherit;
  text-decoration:none;
}

.container{
  width:90%;
  max-width:1300px;
  margin:auto;
}

section{
  padding:50px 0;
}

.subtitle{
  text-transform:uppercase;
  letter-spacing:4px;
  font-size:13px;
  margin-bottom:20px;
  opacity:.9;
}

.section-title{
  font-size:40px !important;
  line-height:1.2;
  margin-bottom:30px;
}

.calendar-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
}

.logo{
  font-size:22px;
  font-weight:800;
}

.hero-features,
.calendar-legend,
.legend-item{
  display:flex;
  gap:12px;
}

/* =========================================================
   BUTTONS
========================================================= */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:16px 28px;
  border-radius:12px;
  margin-bottom:10px;
  border:none;
  cursor:pointer;
  font-weight:700;
  text-decoration:none;
  transition:.25s;
}

.btn:hover{
  transform:translateY(-2px);
}

.btn:not(.dark-btn){
  background:var(--white);
  color:var(--black);
}

.dark-btn{
  background:var(--black);
  color:var(--white);
}

.btn-white{
  background:var(--white);
  color:var(--black);
}

.btn-primary{
  background:var(--green) !important;
  color:var(--white) !important;
  box-shadow:0 12px 28px rgba(31,157,103,.22);
}

.btn-primary:hover{
  background:var(--green-dark) !important;
}

.btn-quiet{
  background:#eef7f2 !important;
  color:#176642 !important;
}

.site-header{
  position:sticky;
  top:0;
  z-index:999;
  background:rgba(255,255,255,.9);
  border-bottom:1px solid rgba(17,17,17,.08);
  backdrop-filter:blur(14px);
}

.site-header-content{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:14px 0;
}

.site-header .logo{
  color:var(--text);
}

.site-menu-toggle{
  display:none;
  width:44px;
  height:44px;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:5px;
  border:1px solid rgba(17,17,17,.10);
  border-radius:12px;
  background:var(--white);
  cursor:pointer;
  box-shadow:0 8px 20px rgba(0,0,0,.06);
}

.site-menu-toggle span{
  display:block;
  width:20px;
  height:2px;
  border-radius:999px;
  background:var(--text);
  transition:.2s;
}

.site-header.menu-open .site-menu-toggle span:nth-child(1){
  transform:translateY(7px) rotate(45deg);
}

.site-header.menu-open .site-menu-toggle span:nth-child(2){
  opacity:0;
}

.site-header.menu-open .site-menu-toggle span:nth-child(3){
  transform:translateY(-7px) rotate(-45deg);
}

.site-nav{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding:6px;
  border:1px solid rgba(17,17,17,.08);
  border-radius:999px;
  background:rgba(17,17,17,.04);
}

.site-nav a{
  padding:9px 14px;
  border-radius:999px;
  color:#34433b;
  font-size:14px;
  font-weight:800;
}

.site-nav a:hover{
  background:var(--white);
  color:var(--green-dark);
  box-shadow:0 8px 20px rgba(0,0,0,.08);
}

.site-nav .nav-phone{
  background:var(--green);
  color:var(--white);
}

.site-nav .nav-phone:hover{
  background:var(--green-dark);
  color:var(--white);
}

#disponibilidade,
#como-funciona,
#sobre,
#galeria,
#fotos,
#contacto{
  scroll-margin-top:96px;
}

/* =========================================================
   HERO
========================================================= */
.hero{
  text-align:left;
  padding-top:90px;
  color:var(--white);
  background:
    linear-gradient(rgba(0,0,0,.45),rgba(0,0,0,.45)),
    url('/images/home-desktop-slide1.jpg') center/cover;
}

.hero-albufeira{
  background:
    linear-gradient(rgba(0,0,0,.45),rgba(0,0,0,.45)),
    url('/images/balaia/praia-1.jpg') center/cover;
}

.hero h1{
  font-size:48px;
  line-height:1.1;
  margin-bottom:25px;
}

.hero p{
  margin:auto;
  color:rgba(255,255,255,.9);
  font-size:19px;
}

.hero-features{
  justify-content:center;
  flex-wrap:wrap;
  margin:30px 0;
  color:var(--muted);
}

.hero-features span{
  background:#f4f4f4;
  padding:12px 18px;
  border-radius:999px;
  font-size:14px;
  font-weight:600;
}

/* =========================================================
   GALLERY
========================================================= */
.gallery{
  background:var(--soft);
}

.gallery-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:22px;
}

.gallery-2{
  grid-template-columns:repeat(2,1fr);
}

.gallery-grid img,
.more-photos-card img{
  width:100%;
  height:340px;
  object-fit:cover;
}

.gallery-grid:not(.gallery-2) img{
  aspect-ratio:4/3;
  height:auto;
}

.gallery-grid img{
  border-radius:var(--radius-xl);
  cursor:zoom-in;
  transition:transform .35s, box-shadow .35s, filter .35s;
}

.gallery-grid img:hover{
  transform:scale(1.03);
  box-shadow:0 20px 40px rgba(0,0,0,.15);
  filter:brightness(.86) saturate(1.08);
}

.gallery-grid figure{
  margin:0;
}

.gallery-grid figure img{
  display:block;
}

.gallery-caption{
  margin-top:8px;
  color:#53615c;
  font-size:14px;
  line-height:1.35;
}

.more-photos-card{
  position:relative;
  display:block;
  height:340px;
  overflow:hidden;
  border-radius:var(--radius-xl);
}

.more-photos-card .overlay,
.more-content{
  position:absolute;
  inset:0;
}

.more-photos-card .overlay{
  background:rgba(0,0,0,.55);
  z-index:1;
}

.more-content{
  z-index:2;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  color:var(--white);
  text-align:center;
  padding:20px;
}

.more-content .plus{
  width:70px;
  height:70px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:rgba(255,255,255,.2);
  font-size:42px;
  margin-bottom:20px;
  backdrop-filter:blur(4px);
}

.more-content h3{
  font-size:30px;
  margin-bottom:10px;
}

.more-content p{
  color:rgba(255,255,255,.92);
}

.more-photos-card:hover img{
  transform:scale(1.05);
  transition:.5s;
}

/* =========================================================
   CONTENT CARDS
========================================================= */
.features{
  margin-top:-36px;
  position:relative;
  z-index:10;
}

.features-grid,
.reviews-grid,
.amenities{
  display:grid;
  gap:20px;
}

.features-grid{
  grid-template-columns:repeat(4,1fr);
  gap:14px;
}

.reviews-grid{
  grid-template-columns:repeat(3,1fr);
  margin-top:50px;
}

.amenities{
  grid-template-columns:repeat(2,1fr);
  gap:15px;
  margin-top:35px;
}

.feature-box,
.review,
.amenity{
  background:var(--white);
}

.feature-box{
  padding:18px 20px;
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
}

.feature-box h3{
  font-size:17px;
  margin-bottom:5px;
}

.feature-box p,
.review p{
  color:var(--muted);
}

.feature-box p{
  font-size:14px;
  line-height:1.35;
}

.review{
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  padding:35px;
}

.review-stars{
  font-size:22px;
  margin-bottom:20px;
}

.review p{
  margin-bottom:20px;
}

.reviews-section{
  background:var(--warm);
}

.amenity{
  background:var(--soft);
  padding:16px 20px;
  border-radius:var(--radius-md);
  font-weight:600;
}

.license-badge{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:8px 0 26px;
  padding:12px 16px;
  border:1px solid #dceee6;
  border-radius:999px;
  background:#f4faf7;
  color:var(--text);
  font-weight:600;
}

.license-badge-light{
  border-color:rgba(255,255,255,.35);
  background:rgba(255,255,255,.14);
  color:var(--white);
  backdrop-filter:blur(8px);
}

.about{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:60px;
  align-items:center;
}

.about p{
  margin-bottom:20px;
  color:#3f4a45;
  font-size:18px;
}

.about img{
  width:100%;
  height:650px;
  object-fit:cover;
  border-radius:30px;
}

.video-section{
  background:var(--soft);
}

.video-layout{
  display:grid;
  grid-template-columns:.75fr 1.25fr;
  gap:34px;
  align-items:center;
}

.video-layout p{
  margin-bottom:24px;
  color:var(--muted);
  font-size:18px;
}

.video-embed{
  overflow:hidden;
  border-radius:8px;
  background:var(--black);
  box-shadow:var(--shadow-md);
  aspect-ratio:16/9;
}

.video-embed iframe{
  width:100%;
  height:100%;
  display:block;
  border:0;
}

/* =========================================================
   CTA AND BOOKING
========================================================= */
.cta{
  color:var(--white);
  padding:45px;
  border-radius:38px;
  text-align:center;
  background:
    linear-gradient(rgba(0,0,0,.40),rgba(0,0,0,.40)),
    url('/images/home-desktop-slide0.jpg') center/cover;
}

.cta-albufeira{
  background:
    linear-gradient(rgba(0,0,0,.40),rgba(0,0,0,.40)),
    url('/images/balaia/praia-2.jpg') center/cover;
}

.cta h2{
  font-size:48px;
  line-height:1.1;
  margin-bottom:20px;
}

.cta p{
  max-width:850px;
  margin:0 auto 30px;
  color:rgba(255,255,255,.92);
  font-size:18px;
}

.light-text{
  color:rgba(255,255,255,.86);
}

.booking-layout{
  display:flex;
  gap:22px;
  margin-top:40px;
  align-items:flex-start;
}

.quick-reserve{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin-top:26px;
  margin-bottom:10px;
  padding:24px;
  background:#f4fbf8;
  border:1px solid #d9eee5;
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);
}

.quick-reserve h2{
  margin:4px 0 8px;
  font-size:28px;
  line-height:1.15;
}

.quick-reserve p{
  margin:0;
  color:var(--muted);
}

.quick-reserve .btn{
  flex:0 0 auto;
  margin-bottom:0;
}

.booking-steps{
  display:grid;
  grid-template-columns:minmax(220px,.8fr) 2fr;
  gap:24px;
  align-items:start;
  padding:0;
}

.booking-steps-section{
  padding:46px 0;
  background:#f4fbf8;
  border-top:1px solid #d9eee5;
  border-bottom:1px solid #d9eee5;
}

/* =========================================================
   LOCATION
========================================================= */
.location-section{
  padding:70px 0;
  background:var(--white);
}

.location-panel{
  display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);
  gap:24px;
  align-items:stretch;
  margin-top:30px;
}

.location-copy,
.location-map-card{
  border:1px solid rgba(23,99,64,.12);
  border-radius:var(--radius-lg);
  background:#fff;
  box-shadow:var(--shadow-soft);
}

.location-copy{
  padding:28px;
}

.location-copy h3{
  margin-bottom:12px;
  color:var(--black);
  font-size:24px;
}

.location-copy p{
  color:#596963;
  line-height:1.7;
}

.location-points{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  margin-top:22px;
}

.location-point{
  padding:14px;
  border-radius:var(--radius-sm);
  background:#f4faf7;
  color:#315947;
  font-size:14px;
  font-weight:700;
}

.location-map-card{
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:28px;
  background:linear-gradient(135deg,#eef8f2,#fff);
}

.location-map-card h3{
  margin-bottom:10px;
  color:var(--black);
  font-size:22px;
}

.location-map-card p{
  color:#596963;
  line-height:1.6;
}

.location-map-frame{
  width:100%;
  min-height:260px;
  margin-top:18px;
  border:0;
  border-radius:var(--radius-md);
  box-shadow:0 12px 30px rgba(0,0,0,.12);
}

.location-map-card .btn{
  margin-top:22px;
  align-self:flex-start;
}

.booking-steps h2{
  margin:4px 0 0;
  font-size:24px;
  line-height:1.2;
}

.booking-steps-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
}

.booking-step{
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:14px;
  background:#fff;
  border:1px solid #e1eee7;
  border-radius:var(--radius-sm);
}

.booking-step span{
  display:grid;
  place-items:center;
  flex:0 0 28px;
  width:28px;
  height:28px;
  border-radius:50%;
  background:#e8f7ef;
  color:var(--green-dark);
  font-size:13px;
  font-weight:800;
}

.booking-step p{
  margin:0;
  color:#506058;
  font-size:14px;
  line-height:1.4;
}

.calendar-wrapper,
.booking-modern{
  box-shadow:var(--shadow-md);
  color:var(--text);
}

.calendar-wrapper{
  flex:2;
  background:var(--white);
  border-radius:var(--radius-xl);
  padding:18px;
}

.booking-modern{
  flex:1;
  position:sticky;
  top:90px;
  background:var(--white);
  border:1px solid #e6eee9;
  border-top:5px solid var(--green);
  border-radius:var(--radius-lg);
  padding:22px;
}

.calendar-header{
  margin-bottom:14px;
}

.calendar-status{
  background:#ecfdf3;
  color:#147a4d;
  padding:7px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:700;
}

.booking-modern h2{
  font-size:24px;
  margin-bottom:6px;
  color:var(--text);
}

.booking-modern p,
.reply-note{
  color:#47564f;
  font-size:15px;
}

.booking-modern p{
  margin-bottom:16px;
}

.booking-modern input,
.booking-modern select{
  width:100%;
  padding:13px 14px;
  border:1px solid #d9e3de;
  border-radius:var(--radius-sm);
  margin-bottom:11px;
  font:14px 'Inter',sans-serif;
  background:#fbfdfc;
  color:var(--text);
}

.booking-date-row,
.booking-contact-row{
  display:grid;
  gap:10px;
}

.booking-date-row{
  grid-template-columns:repeat(2,minmax(0,1fr));
}

.booking-contact-row{
  grid-template-columns:1fr;
  gap:0;
}

.booking-modern input:focus,
.booking-modern select:focus{
  outline:none;
  border-color:var(--green);
  box-shadow:0 0 0 3px rgba(31,157,103,.14);
  background:var(--white);
}

.booking-modern button{
  width:100%;
  margin-top:14px;
  padding:15px;
  border:none;
  border-radius:14px;
  background:var(--green);
  color:var(--white);
  font-weight:800;
  cursor:pointer;
  transition:.25s;
}

.booking-modern button:hover{
  background:var(--green-dark);
  transform:translateY(-2px);
}

.booking-action-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:14px;
}

.booking-action-row button{
  margin-top:0;
}

.booking-action-row .booking-secondary-action{
  border:1px solid #d7e7df;
  background:#f4faf7;
  color:#176340;
}

.booking-action-row .booking-secondary-action:hover{
  background:#e6f5ed;
  color:#0d4d31;
}

.reply-note{
  margin-top:12px;
  text-align:center;
  font-size:13px;
}

.availability-note{
  margin-top:4px;
  padding:12px 14px;
  border:1px solid #dceee6;
  border-radius:var(--radius-sm);
  background:#f4faf7;
  color:#476458;
  font-size:13px;
  line-height:1.45;
}

/* =========================================================
   FAQ
========================================================= */
.faq-section{
  padding:76px 0;
  background:var(--soft);
}

.faq-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px;
  margin-top:30px;
}

.faq-item{
  padding:22px;
  border:1px solid rgba(23,99,64,.12);
  border-radius:var(--radius-md);
  background:var(--white);
  box-shadow:var(--shadow-soft);
}

.faq-item h3{
  margin-bottom:8px;
  color:var(--black);
  font-size:18px;
}

.faq-item p{
  color:#596963;
  font-size:15px;
  line-height:1.6;
}

/* =========================================================
   CALENDAR
========================================================= */
.calendar-legend{
  margin-top:10px;
}

.legend-item{
  align-items:center;
  font-size:14px;
}

.legend-color{
  width:14px;
  height:14px;
  border-radius:50%;
}

.reserved{
  background:var(--danger);
}

.available{
  background:var(--whatsapp);
}

.checkout{
  background:#f4c95d;
}

.fc{
  font-family:'Inter',sans-serif;
  font-size:18px;
  touch-action:manipulation;
}

.fc .fc-toolbar{
  margin-bottom:8px !important;
}

.fc-toolbar-title{
  font-size:18px !important;
  font-weight:700 !important;
  color:var(--black) !important;
}

.fc-button{
  background:#f3f3f3 !important;
  color:var(--black) !important;
  border:none !important;
  border-radius:10px !important;
  padding:4px 8px !important;
  box-shadow:none !important;
  font-size:12px !important;
  margin-right:4px !important;
}

.fc-button:hover{
  background:#e7e7e7 !important;
}

.fc-button-active{
  background:var(--black) !important;
  color:var(--white) !important;
}

.fc .fc-daygrid-day-frame{
  max-height:51px !important;
  padding:2px !important;
}

.fc .fc-scrollgrid-section-body table,
.fc .fc-scrollgrid-section-header table{
  height:auto !important;
}

.fc td,
.fc th{
  padding:0 !important;
}

.fc-daygrid-day{
  background:#99EDC3;
  touch-action:manipulation;
}

.fc-day-today{
  background:#fff3cd !important;
}

.fc-daygrid-day.booking-day-available{
  background:#99EDC3;
}

.fc-daygrid-day.booking-day-reserved{
  background:#ffb4b7;
}

.fc-daygrid-day.booking-day-checkout{
  background:#ffe39a;
}

.fc-daygrid-day.booking-day-disabled,
.fc-daygrid-day.fc-day-disabled{
  background:#eef0f2;
  color:#9aa3a8;
}

.fc-daygrid-day.booking-day-reserved .fc-daygrid-day-number,
.fc-daygrid-day.booking-day-checkout .fc-daygrid-day-number{
  color:var(--black);
}

.fc-col-header-cell{
  background:var(--whatsapp);
}

.fc-col-header-cell-cushion{
  color:var(--white) !important;
  text-decoration:none;
  padding:6px !important;
  font-size:12px;
  font-weight:600;
}

.fc-daygrid-day-number{
  font-weight:600;
  font-size:12px;
  padding:4px !important;
}

.fc-event{
  background:var(--danger) !important;
  color:var(--white) !important;
  border:none !important;
  border-radius:5px !important;
  padding:1px 3px !important;
  font-size:8px !important;
  min-height:13px !important;
}

.fc-daygrid-event{
  margin-top:1px !important;
}

.fc-daygrid-body-natural .fc-daygrid-day-events{
  margin-bottom:15px !important;
}

.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{
  min-height:25px !important;
}

/* =========================================================
   LIGHTBOX AND FLOATING ITEMS
========================================================= */
.lightbox{
  position:fixed;
  inset:0;
  z-index:99999;
  display:none;
  justify-content:center;
  align-items:center;
  padding:30px;
  background:rgba(0,0,0,.92);
}

.lightbox.active{
  display:flex;
}

.lightbox img{
  position:relative;
  z-index:1;
  max-width:95%;
  max-height:86vh;
  object-fit:contain;
  border-radius:18px;
}

.lightbox-counter,
.lightbox-caption{
  position:absolute;
  z-index:100000;
  color:var(--white);
  background:rgba(0,0,0,.48);
  border:1px solid rgba(255,255,255,.16);
  border-radius:999px;
  backdrop-filter:blur(8px);
}

.lightbox-counter{
  top:24px;
  left:28px;
  padding:8px 13px;
  font-size:14px;
  font-weight:800;
}

.lightbox-caption{
  left:50%;
  bottom:24px;
  max-width:min(720px,calc(100vw - 40px));
  padding:10px 16px;
  text-align:center;
  font-size:14px;
  transform:translateX(-50%);
}

.lightbox-nav{
  position:absolute;
  top:50%;
  z-index:100000;
  width:54px;
  height:54px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:none;
  border-radius:50%;
  background:rgba(255,255,255,.18);
  color:var(--white);
  font-size:38px;
  line-height:1;
  cursor:pointer;
  transform:translateY(-50%);
  backdrop-filter:blur(8px);
}

.lightbox-nav:hover{
  background:rgba(255,255,255,.28);
}

.lightbox-prev{
  left:28px;
}

.lightbox-next{
  right:28px;
}

.close-lightbox{
  position:absolute;
  top:20px;
  right:30px;
  z-index:100000;
  color:var(--white);
  font-size:50px;
  line-height:1;
  cursor:pointer;
  pointer-events:auto;
  user-select:none;
}

.gt_float_switcher img{
  width:16px !important;
  height:16px !important;
}

.gt_float_switcher a,
.gt-current-lang{
  font-size:12px !important;
}

.private-mode .site-only{
  display:none !important;
}

/* =========================================================
   HOME PAGE
========================================================= */
.home-page{
  line-height:1.6;
}

.home-page .container{
  max-width:1280px;
}

.home-page .hero{
  min-height:72vh;
  padding:76px 0 64px;
  display:flex;
  align-items:center;
  background:
    linear-gradient(90deg,rgba(0,0,0,.66),rgba(0,0,0,.33)),
    url('/images/praia-algarve.jpg') center/cover;
}

.home-page .hero-content{
  max-width:760px;
}

.home-page h1{
  font-size:58px;
  line-height:1.05;
  margin-bottom:20px;
}

.home-page .hero p{
  max-width:650px;
  margin:0 0 26px;
  font-size:20px;
}

.home-page .hero-buttons,
.home-page .property-features{
  display:flex;
  flex-wrap:wrap;
}

.home-page .hero-buttons{
  gap:16px;
}

.home-page .btn{
  display:inline-flex;
  padding:16px 30px;
  margin-bottom:0;
}

.home-page .hero-proof{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:22px;
}

.home-page .hero-proof span{
  padding:10px 14px;
  border:1px solid rgba(255,255,255,.22);
  border-radius:999px;
  background:rgba(255,255,255,.12);
  color:rgba(255,255,255,.92);
  font-size:14px;
  font-weight:700;
  backdrop-filter:blur(8px);
}

.home-page section{
  padding:50px 0;
}

.home-page .section-header{
  text-align:center;
  margin-bottom:46px;
}

.home-page .section-title{
  font-size:54px !important;
  line-height:1.15;
  margin-bottom:20px;
}

.home-page .section-text{
  max-width:820px;
  margin:auto;
  color:var(--muted);
  font-size:20px;
}

.home-page #casas{
  padding-bottom:26px;
}

.home-page #reservar{
  padding-top:0;
  padding-bottom:32px;
}

.home-page .trust-section{
  padding-top:44px;
  padding-bottom:42px;
  background:#f2f4ef;
}

.home-page .home-final-cta{
  padding-top:26px;
}

.home-page .trust-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:18px;
}

.home-page .trust-item{
  min-height:160px;
  padding:24px;
  border:1px solid #e8e8e8;
  border-radius:8px;
  background:var(--white);
  box-shadow:0 8px 24px rgba(0,0,0,.05);
}

.home-page .trust-item h3{
  font-size:22px;
  margin-bottom:12px;
}

.home-page .trust-item p{
  color:var(--muted);
}

.home-page .properties-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:30px;
  align-items:stretch;
}

.home-page .property-card,
.home-page .property-card-disabled{
  display:flex;
  flex-direction:column;
  height:100%;
  overflow:hidden;
  border:1px solid #ece8df;
  border-radius:8px;
  background:var(--white);
  color:inherit;
  box-shadow:0 12px 34px rgba(0,0,0,.07);
  transition:.4s;
}

.home-page .property-card-disabled{
  pointer-events:none;
  cursor:default;
}

.home-page .property-card-link{
  cursor:pointer;
}

.home-page .property-card-link:focus-visible{
  outline:3px solid rgba(31,157,103,.45);
  outline-offset:4px;
}

.home-page .property-card a{
  text-decoration:none;
}

.home-page .property-card:hover{
  transform:translateY(-6px);
  box-shadow:0 25px 60px rgba(0,0,0,.12);
}

.home-page .property-image{
  position:relative;
  height:300px;
  overflow:hidden;
  flex-shrink:0;
}

.home-page .property-image img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  transition:.5s;
}

.home-page .property-card:hover .property-image img{
  transform:scale(1.05);
}

.home-page .property-tag{
  position:absolute;
  top:20px;
  left:20px;
  padding:10px 16px;
  border-radius:999px;
  background:rgba(0,0,0,.7);
  color:var(--white);
  font-size:13px;
  font-weight:700;
  backdrop-filter:blur(8px);
}

.home-page .property-content{
  display:flex;
  flex:1;
  flex-direction:column;
  padding:28px;
}

.home-page .property-content h3{
  font-size:34px;
  margin-bottom:16px;
}

.home-page .property-location{
  color:#888;
  margin-bottom:16px;
  font-weight:600;
}

.home-page .property-meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-bottom:18px;
}

.home-page .property-meta span{
  padding:7px 10px;
  border:1px solid #e4eee8;
  border-radius:999px;
  background:#f6fbf8;
  color:#2c6a4c;
  font-size:13px;
  font-weight:700;
}

.home-page .property-description{
  flex:1;
  color:#3f4a45;
  margin-bottom:24px;
}

.home-page .property-features{
  gap:10px;
  margin-bottom:30px;
}

.home-page .feature{
  background:var(--soft);
  padding:10px 14px;
  border-radius:8px;
  font-size:14px;
  font-weight:600;
}

.home-page .property-actions{
  display:grid;
  grid-template-columns:.88fr 1.12fr;
  gap:8px;
  margin-top:auto;
}

.home-page .property-btn,
.home-page .property-btn-disabled{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:48px;
  padding:14px 10px;
  border-radius:8px;
  background:var(--black);
  color:var(--white);
  text-align:center;
  white-space:nowrap;
  line-height:1;
  font-size:15px;
  font-weight:800;
  letter-spacing:.01em;
}

.home-page .property-btn-secondary{
  background:#edf7f2;
  color:#176340;
}

.home-page .home-process{
  padding:34px;
  border:1px solid #dceee6;
  border-radius:8px;
  background:#f4fbf8;
}

.home-page .home-process .section-header{
  margin-bottom:28px;
}

.home-page .home-process .section-title{
  font-size:40px !important;
}

.home-page .home-process-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:14px;
}

.home-page .home-process-step{
  padding:22px;
  border:1px solid #dceee6;
  border-radius:8px;
  background:var(--white);
  text-align:center;
}

.home-page .home-process-step span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  margin-bottom:12px;
  border-radius:50%;
  background:var(--green);
  color:var(--white);
  font-weight:800;
}

.home-page .home-process-step h3{
  margin-bottom:8px;
  font-size:20px;
}

.home-page .home-process-step p{
  color:var(--muted);
}

.reserve-strip{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:30px;
  padding:34px;
  border:1px solid #dceee6;
  border-radius:8px;
  background:var(--white);
  box-shadow:0 12px 34px rgba(0,0,0,.06);
}

.reserve-strip .subtitle{
  margin-bottom:10px;
  color:#39735a;
}

.reserve-strip h2{
  margin-bottom:10px;
  font-size:34px;
  line-height:1.15;
}

.reserve-strip p{
  max-width:760px;
  color:var(--muted);
  font-size:18px;
}

.reserve-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:12px;
  flex-shrink:0;
}

.home-page .property-btn-disabled{
  background:#808080;
}

.home-page .about{
  display:block;
  padding:80px;
  border-radius:8px;
  background:#f2f4ef;
  text-align:center;
}

.home-page .about h2{
  font-size:50px;
  margin-bottom:25px;
}

.home-page .about p{
  max-width:900px;
  margin:auto;
  color:var(--muted);
  font-size:20px;
  line-height:1.8;
}

.home-page .cta{
  padding:80px 40px;
  border-radius:8px;
  background:
    linear-gradient(rgba(0,0,0,.40),rgba(0,0,0,.40)),
    url('/images/home-desktop-slide1.jpg') center/cover;
}

.home-page .cta h2{
  font-size:58px;
  line-height:1.1;
  margin-bottom:25px;
}

.home-page .cta p{
  max-width:850px;
  margin:auto auto 40px;
  font-size:21px;
}

.home-page .cta-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:12px;
}

/* =========================================================
   CONTACT PAGE
========================================================= */
.contact-page .contact-hero{
  min-height:58vh;
  display:flex;
  align-items:center;
  background:
    linear-gradient(90deg,rgba(0,0,0,.66),rgba(0,0,0,.35)),
    url('/images/praia-algarve.jpg') center/cover;
}

.contact-page .hero-content{
  max-width:760px;
}

.contact-page .hero-buttons,
.contact-page .contact-actions,
.contact-page .cta-actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
}

.contact-page .cta-actions{
  justify-content:center;
}

.contact-intro{
  background:var(--warm);
}

.contact-intro-grid{
  display:grid;
  grid-template-columns:1.35fr .65fr;
  gap:34px;
  align-items:center;
}

.contact-intro p,
.contact-section-header .section-text{
  color:var(--muted);
  font-size:18px;
}

.contact-card{
  padding:28px;
  border:1px solid #dceee6;
  border-radius:8px;
  background:#f4fbf8;
  box-shadow:var(--shadow-sm);
}

.contact-card h3{
  margin-bottom:10px;
  font-size:26px;
}

.contact-card p{
  margin-bottom:20px;
}

.contact-email-section{
  background:#fff;
}

.contact-email-card{
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:32px;
  align-items:start;
  padding:34px;
  border:1px solid #e2efe8;
  border-radius:8px;
  background:#f8fcfa;
  box-shadow:var(--shadow-sm);
}

.contact-email-card p{
  color:var(--muted);
  font-size:17px;
}

.contact-email-form{
  display:grid;
  gap:11px;
  padding:22px;
  border:1px solid #e6eee9;
  border-top:5px solid var(--green);
  border-radius:var(--radius-lg);
  background:var(--white);
}

.contact-email-form .form-group{
  display:grid;
  gap:7px;
}

.contact-email-form label{
  color:#41584e;
  font-size:13px;
  font-weight:800;
}

.contact-email-form input,
.contact-email-form select,
.contact-email-form textarea{
  width:100%;
  min-height:48px;
  padding:13px 14px;
  border:1px solid #d9e3de;
  border-radius:var(--radius-sm);
  font:14px 'Inter',sans-serif;
  background:#fbfdfc;
  color:var(--text);
}

.contact-email-form input:focus,
.contact-email-form select:focus,
.contact-email-form textarea:focus{
  outline:none;
  border-color:var(--green);
  box-shadow:0 0 0 3px rgba(31,157,103,.14);
  background:var(--white);
}

.contact-email-form textarea{
  min-height:150px;
  resize:vertical;
  line-height:1.5;
}

.contact-email-form button{
  width:100%;
  margin-top:8px;
  padding:15px;
  border:none;
  border-radius:14px;
  background:var(--green);
  color:var(--white);
  font-weight:800;
  cursor:pointer;
  transition:.25s;
}

.contact-email-form button:hover{
  background:var(--green-dark);
  transform:translateY(-2px);
}

.contact-section-header{
  max-width:820px;
  margin:0 auto 36px;
  text-align:center;
}

.contact-properties{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
}

.contact-property{
  display:block;
  overflow:hidden;
  border:1px solid #ece8df;
  border-radius:8px;
  background:var(--white);
  box-shadow:0 12px 34px rgba(0,0,0,.07);
  transition:.25s;
}

.contact-property:hover{
  transform:translateY(-4px);
  box-shadow:0 22px 48px rgba(0,0,0,.11);
}

.contact-property img{
  width:100%;
  height:230px;
  display:block;
  object-fit:cover;
}

.contact-property div{
  padding:22px;
}

.contact-property h3{
  margin-bottom:10px;
  font-size:24px;
}

.contact-property p{
  min-height:78px;
  margin-bottom:18px;
  color:var(--muted);
}

.contact-property span{
  display:inline-flex;
  padding:11px 16px;
  border-radius:8px;
  background:#edf7f2;
  color:#176340;
  font-weight:800;
}

/* =========================================================
   RESPONSIVE
========================================================= */
@media(max-width:1050px){
  .home-page .properties-grid,
  .home-page .trust-grid,
  .home-page .home-process-grid{
    grid-template-columns:1fr;
  }

  .booking-steps{
    grid-template-columns:1fr;
  }

  .booking-steps-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .home-page h1{
    font-size:54px;
  }

  .home-page .section-title,
  .home-page .about h2,
  .home-page .cta h2{
    font-size:42px !important;
  }

  .home-page .about{
    padding:50px 30px;
  }

  .reserve-strip{
    align-items:flex-start;
    flex-direction:column;
  }

  .reserve-actions{
    justify-content:flex-start;
  }

  .home-page .home-process{
    padding:28px 22px;
  }

  .contact-intro-grid,
  .contact-email-card,
  .contact-properties{
    grid-template-columns:1fr;
  }

  .contact-property p{
    min-height:auto;
  }
}

@media(max-width:1000px){
  .gallery-grid{
    grid-template-columns:repeat(2,1fr);
  }

  .booking-layout{
    flex-direction:column;
  }

  .calendar-wrapper,
  .booking-modern{
    width:100%;
  }

  .booking-modern{
    position:relative;
    top:0;
  }
}

@media(max-width:700px){
  #gt_float_wrapper{
    right:14px !important;
    left:auto !important;
    bottom:18px !important;
  }

  section{
    padding:50px 0;
  }

  h1{
    font-size:30px;
  }

  .container h2,
  .cta h2{
    font-size:28px !important;
  }

  .gallery-grid,
  .faq-grid,
  .location-panel,
  .features-grid,
  .reviews-grid,
  .amenities{
    grid-template-columns:1fr;
  }

  .location-points{
    grid-template-columns:1fr;
  }

  .features{
    margin-top:-24px;
  }

  .feature-box{
    padding:16px 18px;
  }

  .gallery-grid img{
    height:280px;
  }

  .gallery-grid:not(.gallery-2) img{
    aspect-ratio:4/3;
    height:auto;
  }

  .lightbox{
    padding:18px;
  }

  .lightbox img{
    max-width:100%;
    max-height:78vh;
    border-radius:12px;
  }

  .lightbox-nav{
    width:48px;
    height:48px;
    background:rgba(0,0,0,.45);
    font-size:34px;
  }

  .lightbox-prev{
    left:12px;
  }

  .lightbox-next{
    right:12px;
  }

  .close-lightbox{
    top:12px;
    right:16px;
    font-size:44px;
  }

  .lightbox-counter{
    top:16px;
    left:16px;
  }

  .lightbox-caption{
    bottom:16px;
    max-width:calc(100vw - 32px);
    border-radius:14px;
  }

  .hero p,
  .cta p{
    font-size:17px;
  }

  .site-header-content{
    display:grid;
    grid-template-columns:1fr auto;
    align-items:center;
    gap:10px;
  }

  .site-menu-toggle{
    display:flex;
  }

  .site-nav{
    display:none;
    grid-column:1 / -1;
    width:100%;
    overflow:visible;
    flex-direction:column;
    align-items:stretch;
    flex-wrap:nowrap;
    border-radius:16px;
    padding:8px;
  }

  .site-header.menu-open .site-nav{
    display:flex;
  }

  .site-nav a{
    width:100%;
    padding:12px 14px;
  }

  .logo{
    font-size:18px;
  }

  .fc-toolbar{
    flex-direction:column !important;
    gap:10px;
  }

  .container:has(.booking-layout){
    width:96%;
  }

  .container:has(.booking-layout) .cta{
    padding-left:10px;
    padding-right:10px;
  }

  .booking-layout{
    margin-left:0;
    margin-right:0;
    width:100%;
  }

  .calendar-wrapper,
  .booking-modern{
    border-radius:14px;
  }

  .calendar-wrapper{
    padding:14px 10px;
  }

  .calendar-legend{
    padding:0 8px;
  }

  .fc-toolbar-title{
    font-size:18px !important;
  }

  #calendar{
    width:100%;
  }

  #calendar .fc{
    font-size:12px;
  }

  #calendar .fc-daygrid-day-number{
    padding:3px 4px;
    font-size:12px;
  }

  #calendar .fc-event{
    font-size:10px;
    line-height:1.2;
  }

  .booking-modern h2{
    font-size:20px;
  }

  .booking-date-row{
    gap:8px;
  }

  .booking-date-row input{
    padding-left:10px;
    padding-right:10px;
    font-size:13px;
  }

  .about{
    grid-template-columns:1fr;
    gap:30px;
  }

  .video-layout{
    grid-template-columns:1fr;
  }

  .about img{
    height:320px;
  }

  .review{
    padding:25px;
  }

  .amenity{
    width:100%;
  }

  .home-page h1{
    font-size:38px;
  }

  .home-page .hero{
    min-height:68vh;
    padding:70px 0 44px;
    background:
      linear-gradient(90deg,rgba(0,0,0,.66),rgba(0,0,0,.33)),
      url('/images/thumbs/praia-algarve-mobile-900.jpg') center/cover;
  }

  .home-page .hero p,
  .home-page .section-text,
  .home-page .about p,
  .home-page .cta p{
    font-size:18px;
  }

  .home-page .property-content{
    padding:20px;
  }

  .home-page .property-image{
    height:240px;
  }

  .home-page .property-content h3{
    font-size:26px;
  }

  .home-page .property-description{
    margin-bottom:18px;
  }

  .home-page .property-features{
    margin-bottom:22px;
  }

  .home-page .property-features .feature:nth-child(n+6){
    display:none;
  }

  .home-page .property-btn,
  .home-page .property-btn-disabled{
    min-height:46px;
    padding:13px 8px;
    font-size:14px;
  }

  .home-page .home-process .section-title{
    font-size:32px !important;
  }

  .quick-reserve{
    flex-direction:column;
    align-items:flex-start;
    padding:22px;
  }

  .quick-reserve h2{
    font-size:25px;
  }

  .quick-reserve .btn{
    width:100%;
    justify-content:center;
  }

  .booking-steps{
    margin-top:8px;
    padding-top:0;
  }

  .booking-steps-grid{
    grid-template-columns:1fr;
  }

  .reserve-strip{
    padding:24px;
  }

  .reserve-strip h2{
    font-size:28px;
  }

  .reserve-actions,
  .home-page .cta-actions,
  .reserve-actions .btn,
  .home-page .cta-actions .btn,
  .home-page .hero-buttons .btn{
    width:100%;
  }

  .home-page .hero-buttons .btn{
    justify-content:center;
  }

  .contact-page .contact-hero{
    min-height:62vh;
    background:
      linear-gradient(90deg,rgba(0,0,0,.66),rgba(0,0,0,.35)),
      url('/images/thumbs/praia-algarve-mobile-900.jpg') center/cover;
  }

  .contact-intro-grid{
    gap:22px;
  }

  .contact-card{
    padding:24px;
  }

  .contact-page .hero-buttons .btn,
  .contact-page .contact-actions .btn,
  .contact-page .cta-actions .btn{
    width:100%;
  }
}

