/*
Theme Name: PortugalHealing
Theme URI: https://portugalhealing.com
Author: SolidNode / Codex
Author URI: https://git.solidnode.net/pvt/portugalhealing
Description: Lightweight custom theme for Casa Chaouen (PortugalHealing) with HTML content import workflow.
Version: 0.4.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: portugalhealing
*/

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:var(--ph-font);
  font-size:var(--ph-step-0);
  color:var(--ph-text);
  background:var(--ph-bg);
  line-height:var(--ph-leading-body);
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,video{max-width:100%;height:auto}
a{color:var(--ph-brand);text-decoration-thickness:.12em;text-underline-offset:.18em}
a:hover{color:var(--ph-brand-2)}
h1,h2,h3{
  font-family:var(--ph-font-display);
  font-weight:600;
  letter-spacing:var(--ph-tracking-tight);
}
strong{font-weight:700}
.ph-sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.ph-container{max-width:var(--ph-max);margin:0 auto;padding:0 var(--ph-gutter)}
.ph-main{min-height:60vh;padding:var(--ph-space-7) 0}

.ph-skip-link{
  position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;
}
.ph-skip-link:focus{
  left:16px;top:16px;width:auto;height:auto;
  background:#fff;color:#000;padding:10px 12px;border-radius:10px;z-index:9999;
  box-shadow:var(--ph-shadow);
}

.ph-header{
  position:sticky;top:0;z-index:100;
  background:rgba(251,250,247,.86);
  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:76px;gap:16px;
}
.ph-brand__link{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:inherit}
.ph-brand__name{font-weight:700;letter-spacing:var(--ph-tracking-tight)}
.ph-brand__name span{color:var(--ph-brand)}

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

.ph-inline-nav{display:none}
.ph-inline-menu{display:flex;gap:16px;align-items:center;list-style:none;margin:0;padding:0}
.ph-inline-menu a{
  color:inherit;
  text-decoration:none;
  padding:8px 10px;
  border-radius:var(--ph-radius-round);
  font-size:var(--ph-step--1);
}
.ph-inline-menu a:hover{background:rgba(11,15,13,.06)}
.ph-inline-menu .is-current > a{
  background:rgba(15,118,110,.10);
  color:var(--ph-brand);
}

.ph-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:11px 16px;
  border-radius:var(--ph-radius-round);
  border:1px solid var(--ph-border);
  font-weight:650;
  text-decoration:none;
  line-height:1;
  transition:transform .15s ease,background-color .15s ease,border-color .15s ease,filter .15s ease;
}
button.ph-btn{appearance:none;background:transparent;cursor:pointer}
.ph-btn--primary{
  background:linear-gradient(135deg,var(--ph-brand),var(--ph-brand-2));
  border-color:transparent;
  color:#fff;
  box-shadow:0 10px 24px rgba(20,184,166,.18);
}
.ph-btn--primary:hover{color:#fff;filter:brightness(1.03);transform:translateY(-1px)}
.ph-btn--ghost{
  background:rgba(255,255,255,.55);
  border-color:rgba(11,15,13,.16);
  color:var(--ph-text);
}
.ph-btn--ghost:hover{background:rgba(255,255,255,.8)}

.ph-btn--book{padding-left:18px;padding-right:18px}

.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;
}

/* Hero */
.ph-hero{
  position:relative;
  color:#fff;
  padding:clamp(112px,12vw,180px) 0 clamp(44px,6vw,72px);
  border-radius:0;
  overflow:hidden;
  margin-top:calc(-1 * var(--ph-space-7));
  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(1200px 600px at 18% 18%, rgba(15,118,110,.34), transparent 60%),
    radial-gradient(900px 500px at 82% 38%, rgba(198,165,106,.20), transparent 55%),
    linear-gradient(180deg, rgba(0,0,0,.68), rgba(0,0,0,.52) 55%, rgba(0,0,0,.30));
}
.ph-hero__inner{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:var(--ph-space-4);
}
.ph-hero__inner.ph-container{padding-left:var(--ph-gutter);padding-right:var(--ph-gutter)}
.ph-hero__kicker{
  margin:0;
  font-size:var(--ph-step--1);
  letter-spacing:var(--ph-tracking-wide);
  text-transform:uppercase;
  color:rgba(255,255,255,.86);
}
.ph-hero__title{
  margin:0;
  font-size:var(--ph-step-4);
  line-height:var(--ph-leading-tight);
  letter-spacing:var(--ph-tracking-tight);
  max-width:20ch;
}
.ph-hero__lead{
  max-width:68ch;
  font-size:var(--ph-step-0);
  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:linear-gradient(135deg,var(--ph-brand),var(--ph-brand-2));border-color:transparent}
.ph-hero .ph-btn--primary:hover{background:linear-gradient(135deg,var(--ph-brand),var(--ph-brand-2));filter:brightness(1.03)}

.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:18px;
  border:1px solid var(--ph-border);
  background:var(--ph-surface);
  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-brand);
  border-radius:999px;
  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;
}

.ph-hero--small{padding:clamp(72px,7vw,110px) 0 44px}
.ph-hero--small{
  padding:clamp(96px,9vw,140px) 0 clamp(36px,5vw,56px);
  min-height:clamp(420px,52vh,560px);
}
.ph-hero--small .ph-hero__title{font-size:var(--ph-step-3);max-width:24ch}

/* Split sections */
.ph-section{
  padding:var(--ph-section-y) 0;
  background:var(--ph-surface);
  border-top:1px solid var(--ph-border);
}
.ph-section--alt{background:var(--ph-surface-2)}
.ph-section__grid{
  display:grid;
  grid-template-columns:1.25fr .75fr;
  gap:var(--ph-space-8);
  align-items:start;
}
.ph-section__media img{
  display:block;
  width:100%;
  height:auto;
  border-radius:var(--ph-radius-3);
  box-shadow:var(--ph-shadow);
  aspect-ratio:4 / 5;
  object-fit:cover;
}
.ph-section__media{opacity:.98}
.ph-section--alt .ph-content{grid-column:2}
.ph-section--alt .ph-section__media{grid-column:1}

/* Wide section (forms, grids) */
.ph-section--wide{background:var(--ph-surface)}
.ph-section--wide .ph-content{max-width:none}

/* Home highlights + gallery strip */
.ph-section--highlights{
  padding:var(--ph-section-y-sm) 0;
  background:var(--ph-surface-2);
}
.ph-highlights__title{
  margin:0 0 16px;
  font-size:var(--ph-step-2);
  line-height:1.12;
}
.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:22px;
  box-shadow:var(--ph-shadow);
}
.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 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(76px + var(--ph-space-5))}
.ph-panel{
  border:1px solid var(--ph-border);
  border-radius:var(--ph-radius-3);
  background:var(--ph-surface);
  padding:var(--ph-space-6);
  box-shadow:var(--ph-shadow);
}
.ph-panel h2{margin:0 0 8px;font-size:var(--ph-step-1)}
.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:999px;
  border:1px solid rgba(15,118,110,.22);
  background:rgba(15,118,110,.08);
  color:var(--ph-text);
  font-weight:700;
  font-size:.92rem;
}
.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:999px;
  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:18px;
  box-shadow:0 10px 24px rgba(15,23,42,.08);
}

/* Content typography */
.ph-page-title{
  font-size:clamp(1.8rem,3.2vw,2.6rem);
  line-height:1.15;
  letter-spacing:-.03em;
  margin:0 0 18px;
}
.ph-content > *{max-width:72ch}
.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;
  letter-spacing:var(--ph-tracking-tight);
}
.ph-content > h2{
  margin:var(--ph-space-8) 0 var(--ph-space-4);
  font-size:var(--ph-step-2);
  line-height:1.12;
}
.ph-content > h2:first-child{margin-top:0}
.ph-content > h3{
  margin:var(--ph-space-6) 0 var(--ph-space-3);
  font-size:var(--ph-step-1);
  line-height:1.2;
}
.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-brand);
  background:rgba(15,118,110,.06);border-radius:12px;
}

.ph-footer{
  border-top:1px solid var(--ph-border);
  padding:28px 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-step--1);
}
.ph-footer .menu a:hover{background:rgba(11,15,13,.06)}
.ph-footer__meta{margin:16px 0 0;font-size:.95rem}

/* Mobile nav */
@media (max-width: 960px){
  .ph-footer__grid{grid-template-columns:1fr}

  .ph-hero{border-radius:0;padding:72px 0 44px}
  .ph-feature-list ul{grid-template-columns:1fr}
  .ph-section__grid{grid-template-columns:1fr;gap:18px}
  .ph-section--alt .ph-content,
  .ph-section--alt .ph-section__media{grid-column:auto}
  .ph-section__media img{aspect-ratio:16 / 11}
  .ph-image-strip{grid-template-columns:1fr}
  .ph-image-strip img:first-child{grid-row:auto;aspect-ratio:16 / 11}
  .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-step--1)}
  .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}
}

/* 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:var(--ph-radius-3);
  box-shadow:var(--ph-shadow-2);
  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-2);
  font-size:var(--ph-step-1);
}
.ph-nav-panel .menu a:hover{background:rgba(11,15,13,.06)}
.ph-nav-panel .current-menu-item > a{
  background:rgba(15,118,110,.10);
  color:var(--ph-brand);
}
.ph-nav-panel__cta{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:14px;
}

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

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