/* PortugalHealing — components.css
   Reusable UI components (header/nav, hero, buttons, cards, forms, footer). */

/* Header + nav */
.ph-header{
  position:sticky;
  top:0;
  z-index:100;
  background:rgba(251,250,247,.88);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--ph-border);
}

.ph-header__inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  height:80px;
  gap:16px;
}

.ph-brand__link{
  display:inline-flex;
  align-items:center;
  gap:10px;
  text-decoration:none;
  color:inherit;
}

.ph-brand__name{
  font-weight:650;
  letter-spacing:var(--ph-tracking-tight);
}

.ph-brand__name span{color:var(--ph-accent)}

.ph-header__actions{
  display:flex;
  align-items:center;
  gap:10px;
}

.ph-inline-nav{display:none}

.ph-inline-menu{
  display:flex;
  gap:10px;
  align-items:center;
  list-style:none;
  margin:0;
  padding:0;
}

.ph-inline-menu a{
  color:inherit;
  text-decoration:none;
  padding:9px 10px;
  border-radius:var(--ph-radius-round);
  font-size:var(--ph-small);
}

.ph-inline-menu a:hover{background:rgba(11,15,13,.06)}

.ph-inline-menu .is-current > a{
  background:var(--ph-accent-soft);
  color:var(--ph-accent);
}

/* Buttons */
.ph-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-height:44px;
  padding:10px 16px;
  border-radius:var(--ph-radius-btn);
  border:1px solid var(--ph-border);
  font-weight:650;
  text-decoration:none;
  line-height:1;
  background:transparent;
  transition:transform .15s ease,background-color .15s ease,border-color .15s ease,filter .15s ease;
}
button.ph-btn{appearance:none;cursor:pointer}

.ph-btn--primary{
  background:var(--ph-accent);
  border-color:transparent;
  color:#fff;
  box-shadow:0 14px 30px rgba(15,118,110,.18);
}
.ph-btn--primary:hover{color:#fff;filter:brightness(1.04);transform:translateY(-1px)}

.ph-btn--ghost{
  background:rgba(255,255,255,.6);
  border-color:rgba(11,15,13,.16);
  color:var(--ph-text);
}
.ph-btn--ghost:hover{background:rgba(255,255,255,.85)}

.ph-btn--book{padding-inline:18px}

/* Hero */
.ph-hero{
  position:relative;
  color:#fff;
  padding:clamp(112px,11vw,176px) 0 clamp(44px,5vw,72px);
  border-radius:0;
  overflow:hidden;
  margin-top:calc(-1 * var(--ph-space-8));
  background:#000;
}

.ph-hero__media{
  position:absolute;
  inset:0;
  pointer-events:none;
}
.ph-hero__media img{
  width:100%;
  height:100%;
  object-fit:cover;
  transform:scale(1.02);
}

.ph-hero__overlay{
  position:absolute;
  inset:0;
  background:
    radial-gradient(1000px 520px at 20% 24%, rgba(15,118,110,.26), transparent 58%),
    radial-gradient(900px 540px at 85% 34%, rgba(198,165,106,.18), transparent 60%),
    linear-gradient(180deg, rgba(0,0,0,.70), rgba(0,0,0,.54) 55%, rgba(0,0,0,.32));
}

.ph-hero__inner{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:var(--ph-space-4);
}

.ph-hero__kicker{
  margin:0;
  font-size:var(--ph-small);
  letter-spacing:var(--ph-tracking-wide);
  text-transform:uppercase;
  color:rgba(255,255,255,.86);
}

.ph-hero__title{
  margin:0;
  font-size:var(--ph-h1);
  line-height:var(--ph-leading-tight);
  letter-spacing:var(--ph-tracking-tight);
  max-width:22ch;
}

.ph-hero__lead{
  max-width:min(var(--ph-text-max),68ch);
  color:rgba(255,255,255,.92);
}
.ph-hero__lead p{margin:0 0 10px}
.ph-hero__lead p:last-child{margin-bottom:0}

.ph-hero__ctas{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-top:var(--ph-space-3);
}

.ph-hero .ph-btn{
  color:#fff;
  border-color:rgba(255,255,255,.24);
  background:rgba(255,255,255,.06);
}
.ph-hero .ph-btn:hover{color:#fff;background:rgba(255,255,255,.10)}
.ph-hero .ph-btn--primary{background:var(--ph-accent);border-color:transparent}

.ph-hero--small{
  padding:clamp(96px,9vw,140px) 0 clamp(36px,4.5vw,56px);
  min-height:clamp(420px,52vh,560px);
}
.ph-hero--small .ph-hero__title{
  font-size:clamp(34px,3.4vw,48px);
  max-width:26ch;
}

/* Feature cards list */
.ph-feature-list ul{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
}

.ph-feature-list li{
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:14px 16px;
  border-radius:var(--ph-radius-card);
  border:1px solid var(--ph-border);
  background:var(--ph-card);
  box-shadow:0 10px 24px rgba(2,6,23,.06);
}

.ph-feature-list li::before{
  content:"";
  width:18px;
  height:18px;
  margin-top:3px;
  flex:0 0 18px;
  background:var(--ph-accent);
  border-radius:var(--ph-radius-round);
  box-shadow:0 0 0 3px rgba(15,118,110,.10);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6L9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6L9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
}

/* Highlights band */
.ph-section--highlights{
  padding:var(--ph-section-y-sm) 0;
  background:var(--ph-card-2);
  border-top:0;
}

.ph-highlights__title{
  margin:0 0 16px;
  font-size:var(--ph-h2);
  line-height:1.12;
}

/* Section head (title + small link) */
.ph-section-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:14px;
  margin-bottom:var(--ph-space-6);
}
.ph-section-head__title{margin:0}
.ph-section-head__link{
  font-size:var(--ph-small);
  font-weight:650;
  text-decoration:none;
  padding:8px 10px;
  border-radius:var(--ph-radius-round);
  border:1px solid rgba(11,15,13,.10);
  background:rgba(255,255,255,.65);
}
.ph-section-head__link:hover{background:rgba(255,255,255,.9)}

/* Image strip */
.ph-image-strip{
  display:grid;
  grid-template-columns:1.2fr .9fr;
  grid-template-rows:auto auto;
  gap:12px;
}
.ph-image-strip img{
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:var(--ph-radius-card);
  box-shadow:var(--ph-shadow-sm);
}
.ph-image-strip img:first-child{
  grid-row:1 / span 2;
  aspect-ratio:3 / 4;
}
.ph-image-strip img:nth-child(2),
.ph-image-strip img:nth-child(3){
  aspect-ratio:16 / 11;
}

/* Room cards (ph-bookings) — fallback media */
@supports selector(:has(*)){
  .ph-rooms-panel .ph-room-card__media:not(:has(img)){
    background:
      linear-gradient(180deg, rgba(0,0,0,.06), rgba(0,0,0,.28)),
      image-set(
        url("../images/hero-stay.webp") type("image/webp"),
        url("../images/hero-stay.jpg") type("image/jpeg")
      );
    background-size:cover;
    background-position:center;
  }
}

/* Room single layout */
.ph-room-layout{
  display:grid;
  grid-template-columns:1fr 360px;
  gap:24px;
  align-items:start;
}
.ph-room-layout__aside{position:sticky;top:calc(80px + var(--ph-space-5))}

.ph-panel{
  border:1px solid var(--ph-border);
  border-radius:calc(var(--ph-radius-card) + 8px);
  background:var(--ph-card);
  padding:var(--ph-space-6);
  box-shadow:var(--ph-shadow-sm);
}
.ph-panel h2{margin:0 0 8px;font-size:clamp(18px,1.4vw,20px)}
.ph-panel p{margin:0 0 14px;color:var(--ph-muted)}

.ph-room-meta{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:0 0 16px;
}
.ph-room-meta__item{
  display:inline-flex;
  align-items:center;
  padding:7px 10px;
  border-radius:var(--ph-radius-round);
  border:1px solid rgba(15,118,110,.22);
  background:rgba(15,118,110,.08);
  color:var(--ph-text);
  font-weight:700;
  font-size:var(--ph-small);
}

.ph-room-amenities ul{
  list-style:none;
  padding:0;
  margin:10px 0 0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 16px;
}

.ph-room-amenities li{position:relative;padding-left:28px}
.ph-room-amenities li::before{
  content:"";
  position:absolute;
  left:0;
  top:2px;
  width:18px;
  height:18px;
  border-radius:var(--ph-radius-round);
  background:rgba(15,118,110,.16);
  border:1px solid rgba(15,118,110,.24);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6L9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6L9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
}

.ph-room-gallery__grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  margin-top:12px;
}
.ph-room-gallery__grid img{
  width:100%;
  height:auto;
  border-radius:var(--ph-radius-card);
  box-shadow:0 10px 24px rgba(2,6,23,.08);
}

/* Content typography */
.ph-content > *{max-width:var(--ph-text-max)}
.ph-content--wide > *{max-width:none}
.ph-content > .ph-rooms-grid,
.ph-content > .ph-booking-form,
.ph-content > .woocommerce{max-width:none}

.ph-content > h2,
.ph-content > h3{max-width:none}

.ph-content > h2{
  margin:var(--ph-space-9) 0 var(--ph-space-4);
}
.ph-content > h2:first-child{margin-top:0}

.ph-content > h3{
  margin:var(--ph-space-7) 0 var(--ph-space-3);
}
.ph-content > h3:first-child{margin-top:0}

.ph-content > p{margin:0 0 var(--ph-space-4)}
.ph-content ul{padding-left:1.2rem;margin:0 0 16px}
.ph-content li{margin:.35rem 0}
.ph-content hr{border:0;border-top:1px solid var(--ph-border);margin:28px 0}

.ph-content blockquote{
  margin:18px 0;
  padding:14px 16px;
  border-left:4px solid var(--ph-accent);
  background:rgba(15,118,110,.06);
  border-radius:var(--ph-radius-btn);
}

/* Pills (small lists) */
.ph-pills,
.ph-content h3 + ul{
  list-style:none;
  padding:0;
  margin:10px 0 0;
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.ph-pills li,
.ph-content h3 + ul li{
  margin:0;
  padding:10px 12px;
  border-radius:var(--ph-radius-round);
  border:1px solid rgba(11,15,13,.12);
  background:rgba(255,255,255,.72);
}
.ph-pills a{text-decoration:none;color:inherit}

/* Bullet lists as cards */
.ph-list-cards{
  list-style:none;
  padding:0;
  margin:12px 0 0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.ph-list-cards li{
  position:relative;
  margin:0;
  padding:14px 16px 14px 44px;
  border-radius:var(--ph-radius-card);
  border:1px solid rgba(11,15,13,.12);
  background:rgba(255,255,255,.75);
  box-shadow:0 10px 24px rgba(2,6,23,.05);
}
.ph-list-cards li::before{
  content:"";
  position:absolute;
  left:16px;
  top:16px;
  width:18px;
  height:18px;
  border-radius:var(--ph-radius-round);
  background:rgba(15,118,110,.14);
  border:1px solid rgba(15,118,110,.22);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6L9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6L9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
}

/* Link list as pills */
.ph-link-pills{
  list-style:none;
  padding:0;
  margin:12px 0 0;
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.ph-link-pills li{margin:0}
.ph-link-pills a{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:10px 12px;
  border-radius:var(--ph-radius-round);
  border:1px solid rgba(11,15,13,.12);
  background:rgba(255,255,255,.72);
  text-decoration:none;
  color:inherit;
  font-weight:650;
}
.ph-link-pills a:hover{background:rgba(255,255,255,.92)}

.ph-page-title{
  margin:0 0 var(--ph-space-5);
  font-size:var(--ph-h1);
  line-height:var(--ph-leading-tight);
  letter-spacing:var(--ph-tracking-tight);
}

/* Form controls */
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="url"],
input[type="number"],
input[type="date"],
select,
textarea{
  width:100%;
  padding:12px 12px;
  border:1px solid var(--ph-border);
  border-radius:var(--ph-radius-btn);
  background:#fff;
  color:var(--ph-text);
}

textarea{min-height:120px;resize:vertical}

input::placeholder,
textarea::placeholder{color:rgba(68,90,85,.72)}

input:focus,
select:focus,
textarea:focus{
  outline:none;
  border-color:rgba(15,118,110,.4);
  box-shadow:var(--ph-focus);
}

label{
  display:inline-block;
  margin-bottom:6px;
  font-weight:650;
  font-size:var(--ph-small);
}

/* Booking panel */
.ph-booking-panel{
  border:1px solid rgba(11,15,13,.12);
  border-radius:calc(var(--ph-radius-card) + 8px);
  background:var(--ph-card);
  box-shadow:var(--ph-shadow-sm);
  padding:var(--ph-space-6);
}
.ph-booking-panel .ph-booking-form{margin:0}
.ph-booking-panel .ph-price-box{
  background:rgba(15,118,110,.06);
  border-radius:calc(var(--ph-radius-card) + 8px);
}

/* FAQ accordion */
.ph-accordion{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-top:14px;
}
.ph-accordion__item{
  border:1px solid rgba(11,15,13,.12);
  border-radius:calc(var(--ph-radius-card) + 6px);
  background:rgba(255,255,255,.80);
  box-shadow:0 10px 24px rgba(2,6,23,.05);
  overflow:hidden;
}
.ph-accordion__item summary{
  cursor:pointer;
  list-style:none;
  padding:16px 16px;
  font-family:var(--ph-font-body);
  font-weight:750;
}
.ph-accordion__item summary::-webkit-details-marker{display:none}
.ph-accordion__item summary::after{
  content:"+";
  float:right;
  opacity:.8;
}
.ph-accordion__item[open] summary::after{content:"—"}
.ph-accordion__body{padding:0 16px 16px;color:var(--ph-muted)}
.ph-accordion__body > *:last-child{margin-bottom:0}

/* Gallery grid */
.ph-gallery-grid{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:12px;
}
.ph-gallery-item{
  grid-column:span 4;
  display:block;
  overflow:hidden;
  border-radius:var(--ph-radius-card);
  background:rgba(11,15,13,.06);
  box-shadow:var(--ph-shadow-sm);
}
.ph-gallery-item:nth-child(7n + 1),
.ph-gallery-item:nth-child(11n + 3){grid-column:span 6}
.ph-gallery-item img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  aspect-ratio:4 / 3;
  transition:transform .6s ease;
}
.ph-gallery-item:hover img{transform:scale(1.03)}

/* Contact layout */
.ph-contact-layout{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:var(--ph-space-7);
  align-items:start;
}
.ph-form-notice{
  padding:12px 14px;
  border-radius:var(--ph-radius-card);
  border:1px solid rgba(15,118,110,.22);
  background:rgba(15,118,110,.08);
  margin-bottom:12px;
}

/* CTA band */
.ph-section--cta{
  background:linear-gradient(180deg, rgba(244,242,238,.9), rgba(244,242,238,.55));
}

/* Footer */
.ph-footer{
  border-top:1px solid var(--ph-border);
  padding:32px 0;
  color:var(--ph-muted);
}
.ph-footer__grid{
  display:grid;
  grid-template-columns:1.2fr .8fr;
  gap:18px;
  align-items:start;
}
.ph-footer__name{font-weight:800;color:var(--ph-text)}
.ph-footer .menu{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  gap:8px 10px;
}
.ph-footer .menu a{
  display:inline-flex;
  align-items:center;
  text-decoration:none;
  color:inherit;
  padding:6px 10px;
  border-radius:var(--ph-radius-round);
  font-size:var(--ph-small);
}
.ph-footer .menu a:hover{background:rgba(11,15,13,.06)}
.ph-footer__meta{margin:16px 0 0;font-size:var(--ph-small)}

/* Off-canvas / overlay menu */
.ph-nav-panel{
  position:fixed;
  inset:0;
  z-index:1000;
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease;
}
.ph-nav-panel.is-open{opacity:1;pointer-events:auto}
.ph-nav-panel__backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.42);
}
.ph-nav-panel__dialog{
  position:absolute;
  top:var(--ph-space-6);
  right:var(--ph-gutter);
  left:var(--ph-gutter);
  max-width:520px;
  margin-left:auto;
  background:rgba(255,255,255,.96);
  backdrop-filter:saturate(140%) blur(10px);
  border:1px solid rgba(11,15,13,.12);
  border-radius:calc(var(--ph-radius-card) + 8px);
  box-shadow:var(--ph-shadow-md);
  overflow:hidden;
}
.ph-nav-panel__header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:16px 18px;
  border-bottom:1px solid rgba(11,15,13,.10);
}
.ph-nav-panel__content{padding:14px 18px 18px}
.ph-nav-panel .menu{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  grid-template-columns:1fr;
  gap:6px;
}
.ph-nav-panel .menu a{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  text-decoration:none;
  color:inherit;
  padding:12px 12px;
  border-radius:var(--ph-radius-card);
  font-size:clamp(16px,1.3vw,18px);
}
.ph-nav-panel .menu a:hover{background:rgba(11,15,13,.06)}
.ph-nav-panel .current-menu-item > a{
  background:var(--ph-accent-soft);
  color:var(--ph-accent);
}
.ph-nav-panel__cta{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:14px;
}

body.ph-nav-open{overflow:hidden}

@media (max-width: 960px){
  .ph-feature-list ul{grid-template-columns:1fr}
  .ph-list-cards{grid-template-columns:1fr}
  .ph-gallery-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .ph-gallery-item{grid-column:span 6}
  .ph-gallery-item:nth-child(7n + 1),
  .ph-gallery-item:nth-child(11n + 3){grid-column:span 6}
  .ph-footer__grid{grid-template-columns:1fr}
  .ph-hero{padding:84px 0 44px}
  .ph-section-head{align-items:flex-start;flex-direction:column}
  .ph-image-strip{grid-template-columns:1fr}
  .ph-image-strip img:first-child{grid-row:auto;aspect-ratio:16 / 11}
  .ph-contact-layout{grid-template-columns:1fr}
  .ph-room-layout{grid-template-columns:1fr}
  .ph-room-layout__aside{position:static}
  .ph-room-gallery__grid{grid-template-columns:1fr 1fr}
}

@media (max-width: 520px){
  .ph-header__actions{gap:8px}
  .ph-btn--book{padding:10px 14px;font-size:var(--ph-small)}
  .ph-nav-toggle{width:44px;padding:0}
  .ph-nav-toggle__label{display:none}
  .ph-nav-toggle::before{display:block}
}

@media (min-width: 980px){
  .ph-inline-nav{display:block}
  .ph-nav-panel__dialog{top:calc(80px + var(--ph-space-4))}
}

/* Menu icon on small */
.ph-nav-toggle{position:relative}
.ph-nav-toggle::before{
  content:"";
  display:none;
  width:18px;
  height:18px;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M4 7h16M4 12h16M4 17h16' stroke='black' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M4 7h16M4 12h16M4 17h16' stroke='black' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
}
