/* Readable type and stable contrast on every section and viewport. */
:root{--muted:#46544b}
body{font-size:16px;line-height:1.75}
.preview{font-size:12px;letter-spacing:1px;padding:10px 16px;line-height:1.6}
.preview span{opacity:1;letter-spacing:.3px}
nav{font-size:14px;gap:24px}
.btn,.btn.small,.search .btn,.text-btn,.arrival-strip .text-btn{font-size:14px;line-height:1.5}
.btn{min-height:48px}
.eyebrow,.eyebrow:not(.light){font-size:12px;line-height:1.7;letter-spacing:1.4px;color:#76582f}
h2 em{color:#526b58}
.hero{height:auto;min-height:720px;padding:46px 0 88px;display:flex;align-items:center}
.hero:after{background:linear-gradient(90deg,transparent 52%,rgba(5,28,40,.02) 65%,rgba(5,28,40,.34) 82%,rgba(5,28,40,.52) 100%)}
.hero-content{width:330px;max-width:88%;padding:0;margin:0 4% 0 auto;background:none;border:0;box-shadow:none}
.hero-content .eyebrow,.hero-content .eyebrow.light{font-size:12px;letter-spacing:1.3px;color:#fff;text-shadow:0 1px 4px #062735;white-space:normal;overflow-wrap:normal;margin-bottom:18px;max-width:100%}
.hero-content h1{font-size:72px;line-height:1.04;margin:20px 0 25px;text-shadow:0 2px 16px #052a3a80}
.hero-content>p:not(.eyebrow){font-size:16px;line-height:1.75;color:#fff;text-shadow:0 1px 5px #052a3a;max-width:100%;margin-bottom:0}
.hero-content h1 em{color:#f5e6cb}
.hero-link{font-size:14px;line-height:1.65;gap:24px;width:100%;margin-top:28px;white-space:normal;color:#fff;border-bottom-color:#ffffff99;text-shadow:0 1px 5px #052a3a}
.search{gap:20px}
.search label,.search-intro .eyebrow{font-size:12px;letter-spacing:1px;color:#344b3e}
.search input,.search select{font-size:16px;min-height:32px}
.search-note{font-size:13px;line-height:1.75;color:var(--muted);margin-top:14px}
.intro>p,.property p,.care p,.leisure-heading>p,.destination-copy p:not(.eyebrow),.local-list p,.story p:not(.eyebrow),.faq>div>p:not(.eyebrow),details p{font-size:16px;line-height:1.8;color:var(--muted)}
.property p{max-width:none}
.property-meta{font-size:12px;letter-spacing:.6px;line-height:1.7;flex-wrap:wrap;gap:8px 15px;color:#46544b}
.property h3 span{color:#53684f}
.amenities{row-gap:10px}
.amenities span{font-size:14px;line-height:1.7}
.property-note{font-size:13px;line-height:1.8;color:var(--muted)}
.photo-tag{font-size:12px;letter-spacing:1px;color:#344b3e;padding:7px 11px}
.photo-bottom{font-size:15px;line-height:1.65;text-shadow:0 2px 5px #102a23}
.property-art.photo:after{background:linear-gradient(0deg,#102e26dc,transparent 58%)}
.care h3{font-size:27px;line-height:1.2}
.destination-image>span{font-size:12px;line-height:1.7;letter-spacing:1px;left:7%;right:auto;max-width:86%;padding:8px 12px;background:#143c32ed;text-shadow:none}
.destination-copy{padding-left:11%;padding-right:11%}
.local-list h3{font-size:28px;line-height:1.2}
.local-list>a>span:first-child{font-size:13px;color:#4f6253}
.story-brand>span{font-size:11px;letter-spacing:1px;line-height:1.8;color:#76582f}
.story .signature{font-size:29px}
summary{font-size:16px;line-height:1.7;padding-top:20px;padding-bottom:20px}
summary:after{font-size:22px;top:17px}
.arrival-strip{grid-template-columns:1fr 1fr 1.1fr .8fr;gap:20px}
.arrival-strip>div>span{font-size:11px;letter-spacing:.7px;line-height:1.7;color:#536048}
.arrival-strip strong{font-size:14px;line-height:1.65}
.last-call .eyebrow{font-size:12px;color:#fff}
.last-call>span{font-size:12px;color:#f3eee2;line-height:1.8;letter-spacing:1.3px}
.footer-top>a:last-child{font-size:15px}
.footer-bottom{font-size:13px;line-height:1.8;color:#46544b;flex-wrap:wrap}
.footer-bottom>div{gap:24px;flex-wrap:wrap}
.footer-bottom button{font-size:14px;line-height:1.8;color:#344b3e;min-height:35px}
dialog p,dialog li{font-size:16px;line-height:1.8}
.dialog-summary{font-size:16px;line-height:1.8}
.dialog-grid small{font-size:14px;line-height:1.65}
.note{font-size:13px!important;line-height:1.8}
@media(max-width:1100px){.search-intro{display:none}.search{grid-template-columns:1fr 1fr 1fr 1.2fr}.search label:first-of-type{border:0;padding-left:0}.arrival-strip{grid-template-columns:1fr 1fr;gap:26px}.hero-content{margin-right:4%;width:325px}.footer-top{flex-wrap:wrap}}
@media(max-width:900px){header>.btn{display:none}.menu{display:block;border:1px solid #aab7a5;background:none;color:var(--ink);font-size:22px;width:44px;height:44px;flex:0 0 44px}nav{display:none;position:absolute;top:116px;left:0;right:0;padding:24px 6%;background:var(--paper);box-shadow:0 12px 15px #183e2814;font-size:16px}nav.open{display:grid;gap:20px}.search{gap:15px;padding:22px}.search .btn{padding:12px;gap:12px}.story{grid-template-columns:1fr 1.5fr;gap:7%}.faq{gap:8%}}
@media(max-width:700px){
 .preview{font-size:11px;letter-spacing:.3px;padding:10px 12px}.preview span{display:block;font-size:12px}
 header{height:97px}nav{top:97px}.brand-logo{width:270px}
 .hero{height:auto;min-height:0;padding:0;display:block;background:var(--ink)}.hero-img{position:relative;display:block;width:100%;height:310px;object-fit:cover;object-position:center 50%}.hero:after{display:none}
 .hero-content{width:auto;max-width:none;margin:0;padding:30px 7% 65px;background:none;border:0;box-shadow:none}
 .hero-content .eyebrow,.hero-content .eyebrow.light{font-size:12px;letter-spacing:1px;line-height:1.8}
 .hero-content h1{font-size:clamp(50px,13vw,64px);line-height:1.04;margin:22px 0}
 .hero-content>p:not(.eyebrow){font-size:16px;line-height:1.8;max-width:none}
 .hero-link{font-size:14px;gap:15px;margin-top:24px}
 .search-wrap{margin-top:-28px}.search{grid-template-columns:1fr 1fr;gap:20px 16px;padding:24px 20px}
 .search label{font-size:11px;letter-spacing:.6px}.search input,.search select{font-size:16px}.search .btn{font-size:14px;gap:8px;padding:12px 10px}
 .search-note{font-size:13px;padding:0 2px}
 .eyebrow,.eyebrow:not(.light){font-size:12px;letter-spacing:1px}
 .intro>p,.property p,.care p,.leisure-heading>p,.destination-copy p:not(.eyebrow),.local-list p,.story p:not(.eyebrow),.faq>div>p:not(.eyebrow),details p{font-size:16px;line-height:1.8}
 .property-meta{font-size:12px;gap:7px 12px}.amenities span{font-size:14px;padding:0 9px}.amenities span:first-child{padding-left:0}
 .property-note{font-size:13px;margin-top:0}.photo-tag{font-size:11px}.photo-bottom{font-size:14px}
 .care-grid{gap:30px}.care h3{font-size:26px}.care-grid>div{padding-left:39px}
 .destination-copy{padding:43px 7% 48px}.destination-image>span{font-size:11px}
 .local-list>a{gap:15px}.local-list p{font-size:15px}.local-list h3{font-size:27px}
 .story{grid-template-columns:1fr;padding:35px 7%}.story-brand>span{font-size:11px;letter-spacing:.6px}.story h2{font-size:39px}.story .signature{font-size:28px}
 .faq{grid-template-columns:1fr;gap:24px}summary{font-size:16px}
 .arrival-strip{gap:23px 15px}.arrival-strip>div>span{font-size:11px;letter-spacing:.4px}.arrival-strip strong{font-size:14px}.arrival-strip .text-btn{font-size:14px}
 .last-call .eyebrow,.last-call>span{font-size:12px}
 .footer-top>a:last-child{font-size:15px}.footer-bottom{font-size:13px;padding-bottom:78px}.footer-bottom button{font-size:14px}
 .mobile-book a{font-size:15px;padding:12px 17px;min-height:47px}
}
@media(max-width:360px){.search{grid-template-columns:1fr}.search label{border:0;padding-left:0}.hero-content{padding:24px 20px}.hero-content h1{font-size:52px}.arrival-strip{grid-template-columns:1fr}.property h3{font-size:28px}}

/* Pesquisa: incluir também a fronteira dos 1051 px. */
@media (min-width: 701px) and (max-width: 1100px) {
  .search .btn {
    grid-column: 1 / -1;
  }
}

/* Links de leitura, sem alterar os botões. */
:is(.faq, dialog) :is(p, li) a:not(.btn):not(.text-btn):not(.rules-button):not([role="button"]) {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--brand-gold);
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
  overflow-wrap: anywhere;
}

:is(.faq, dialog) :is(p, li) a:not(.btn):not(.text-btn):not(.rules-button):not([role="button"]):hover {
  text-decoration-color: currentColor;
}

/* Ficha do apartamento: descrição, factos e acções. */
.property-overview {
  margin: 0 0 20px;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.8;
}

.property-overview p {
  margin-bottom: 12px;
}

.property-overview p:last-child {
  margin-bottom: 0;
}

.property-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 28px;
  margin: 18px 0 22px;
  padding-left: 20px;
  list-style: disc;
  color: var(--muted);
}

.property-facts li {
  padding: 0;
  font-size: 15px;
  line-height: 1.7;
}

.property-facts b,
.property-facts strong {
  color: var(--ink);
  font-weight: 600;
}

.property-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: 12px;
  margin: 24px 0 18px;
}

.property-actions #property-book,
.property-actions #property-rules {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  min-width: 0;
  min-height: 52px;
  margin: 0;
  padding: 14px 16px;
  font-family: var(--sans);
  font-size: 14px;
  line-height: 1.5;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
}

.property-actions .rules-button {
  background: transparent;
  color: var(--ink);
  border-color: var(--ink);
}

.property-actions .rules-button:hover,
.property-actions .rules-button:focus-visible {
  background: var(--ink);
  color: var(--paper);
}

/* Equipamentos consultáveis, sem cartões. */
.property-equipment {
  margin: 8px 0 24px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.property-equipment summary {
  min-height: 44px;
  color: var(--ink);
  font-size: 16px;
  line-height: 1.7;
  padding: 16px 32px 16px 0;
}

.property-equipment summary::after {
  top: 13px;
}

.property-equipment ul {
  columns: 2;
  column-gap: 28px;
  margin: 0 0 20px;
  padding-left: 20px;
}

.property-equipment li {
  break-inside: avoid;
  margin-bottom: 6px;
  font-size: 15px;
  line-height: 1.7;
}

/* Galeria: respeitar hidden ao expandir as restantes fotos. */
.gallery-thumb[hidden] {
  display: none;
}

.gallery-more {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  max-width: 100%;
  min-height: 44px;
  margin: 14px 0 0;
  padding: 8px 0;
  border: 0;
  border-bottom: 1px solid var(--brand-gold);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.6;
  text-align: left;
  white-space: normal;
}

.gallery-more:hover {
  border-bottom-color: var(--ink);
}

.gallery-more[hidden] {
  display: none;
}

.photo-hint {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.6;
}

/* Selecção acima da pesquisa, contida na largura do formulário. */
.selection-notice {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 20px;
  width: 88%;
  max-width: 1300px;
  margin: 0 auto 12px;
  padding: 10px 2px;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font-size: 14px;
  line-height: 1.6;
}

.search-wrap .selection-notice {
  width: 100%;
  max-width: 100%;
}

.selection-notice > span {
  flex: 1 1 220px;
  min-width: 0;
  overflow-wrap: anywhere;
}

.selection-notice b {
  color: var(--ink);
  font-weight: 600;
}

.selection-clear {
  flex: 0 1 auto;
  max-width: 100%;
  min-height: 44px;
  padding: 8px 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.6;
  text-align: left;
  text-decoration: underline;
  text-decoration-color: var(--brand-gold);
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
  white-space: normal;
}

.selection-clear:hover {
  text-decoration-color: currentColor;
}

.selection-notice[hidden] {
  display: none;
}

/* Visualizador: reservar espaço para legenda e controlos. */
.photo-viewer {
  max-height: calc(100dvh - 16px);
  padding-top: 52px;
}

.photo-viewer[open] {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.photo-viewer figure {
  min-width: 0;
  margin: 0;
}

.photo-viewer figure img {
  width: 100%;
  height: auto;
  max-height: min(72dvh, max(1px, calc(100dvh - 230px)));
  object-fit: contain;
  touch-action: pan-y pinch-zoom;
}

.photo-viewer figcaption {
  padding: 8px 4px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.photo-viewer .photo-hint {
  margin: 0;
  color: #f3eee2;
  font-size: 13px;
  line-height: 1.6;
  text-align: center;
}

.photo-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  top: 4px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  line-height: 1;
}

.photo-controls {
  flex-wrap: wrap;
  flex-shrink: 0;
  gap: 8px;
}

.photo-controls button {
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  white-space: normal;
}

@media (max-width: 700px) {
  .property-actions {
    grid-template-columns: minmax(0, 1fr);
  }

  .property-facts {
    display: block;
  }

  .property-facts li {
    margin-bottom: 6px;
  }

  .property-equipment ul {
    columns: 1;
  }

  .selection-notice {
    width: 90%;
    gap: 4px 12px;
  }

  .photo-viewer figure img {
    max-height: min(72dvh, max(1px, calc(100dvh - 250px)));
  }
}

@media (max-height: 560px) {
  .photo-viewer {
    padding-bottom: 10px;
  }

  .photo-viewer figcaption {
    font-size: 14px;
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
