:root{
  --ph-ink:#0d1b2a;
  --ph-ink-2:#152a41;
  --ph-ink-3:#1f3b57;
  --ph-amber:#d08b2c;
  --ph-amber-2:#a86a15;
  --ph-amber-soft:#f3dfc0;
  --ph-cream:#fbf7f1;
  --ph-paper:#ffffff;
  --ph-line:#e2d9cc;
  --ph-body:#33404d;
  --ph-body-invert:#e8eef4;
  --ph-radius:18px;
  --ph-radius-sm:10px;
  --ph-shadow:0 18px 45px rgba(13,27,42,.12);
  --ph-shadow-lg:0 30px 70px rgba(13,27,42,.2);
  --ph-ease:.35s cubic-bezier(.22,.61,.36,1);
  --ph-sans:"Helvetica Neue", Helvetica, Arial, "Segoe UI", Roboto, sans-serif;
  --ph-serif:Georgia, "Times New Roman", Times, serif;
}

*,
*::before,
*::after{
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

body{
  font-family:var(--ph-sans);
  color:var(--ph-body);
  background-color:var(--ph-cream);
  line-height:1.7;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4,h5,h6{
  color:var(--ph-ink);
  font-weight:800;
  line-height:1.15;
  letter-spacing:-.02em;
  margin-bottom:1rem;
}

h1{ font-size:clamp(2rem, 4.4vw, 3.5rem); }
h2{ font-size:clamp(1.6rem, 3vw, 2.5rem); }
h3{ font-size:clamp(1.2rem, 2vw, 1.6rem); }

p{ margin-bottom:1.15rem; }

a{
  color:var(--ph-amber-2);
  text-decoration:none;
  transition:color var(--ph-ease);
}

a:hover,
a:focus{
  color:var(--ph-ink);
}

img{
  max-width:100%;
  height:auto;
  display:block;
}

ul{
  list-style:none;
  padding-left:0;
}

.ph-display{
  font-family:var(--ph-serif);
  font-weight:400;
  letter-spacing:-.01em;
}

.ph-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ph-amber-2);
  margin-bottom:1rem;
}

.ph-eyebrow::before{
  content:"";
  width:34px;
  height:2px;
  background:var(--ph-amber);
  display:inline-block;
}

.ph-lead{
  font-size:1.12rem;
  line-height:1.85;
  color:var(--ph-body);
  max-width:70ch;
}

.ph-section{
  position:relative;
  padding:5.5rem 0;
}

.ph-section--tight{
  padding:3.5rem 0;
}

.ph-section--paper{
  background-color:var(--ph-paper);
}

.ph-section--dark{
  background-color:var(--ph-ink);
  color:var(--ph-body-invert);
}

.ph-section--dark h1,
.ph-section--dark h2,
.ph-section--dark h3,
.ph-section--dark h4{
  color:#ffffff;
}

.ph-section--dark p,
.ph-section--dark li{
  color:var(--ph-body-invert);
}

.ph-section--dark a{
  color:#f0c479;
}

.ph-section--dark a:hover{
  color:#ffffff;
}

.ph-band{
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
  position:relative;
  color:#ffffff;
}

.ph-band__inner{
  position:relative;
  z-index:2;
}

.ph-divider{
  width:70px;
  height:3px;
  background:var(--ph-amber);
  border-radius:3px;
  margin:1.4rem 0;
}

.ph-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.6rem;
  padding:.95rem 1.9rem;
  border-radius:999px;
  font-weight:700;
  font-size:.95rem;
  letter-spacing:.02em;
  border:2px solid transparent;
  cursor:pointer;
  transition:transform var(--ph-ease), background-color var(--ph-ease), color var(--ph-ease), border-color var(--ph-ease), box-shadow var(--ph-ease);
  text-align:center;
}

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

.ph-btn--primary{
  background-color:var(--ph-amber);
  border-color:var(--ph-amber);
  color:var(--ph-ink);
  box-shadow:0 12px 28px rgba(208,139,44,.35);
}

.ph-btn--primary:hover,
.ph-btn--primary:focus{
  background-color:#e2a146;
  border-color:#e2a146;
  color:var(--ph-ink);
}

.ph-btn--dark{
  background-color:var(--ph-ink);
  border-color:var(--ph-ink);
  color:#ffffff;
}

.ph-btn--dark:hover,
.ph-btn--dark:focus{
  background-color:var(--ph-ink-3);
  border-color:var(--ph-ink-3);
  color:#ffffff;
}

.ph-btn--outline{
  background-color:transparent;
  border-color:currentColor;
  color:var(--ph-ink);
}

.ph-btn--outline:hover,
.ph-btn--outline:focus{
  background-color:var(--ph-ink);
  border-color:var(--ph-ink);
  color:#ffffff;
}

.ph-btn--ghost-light{
  background-color:transparent;
  border-color:rgba(255,255,255,.7);
  color:#ffffff;
}

.ph-btn--ghost-light:hover,
.ph-btn--ghost-light:focus{
  background-color:#ffffff;
  border-color:#ffffff;
  color:var(--ph-ink);
}

.ph-header{
  position:sticky;
  top:0;
  z-index:1030;
  background-color:rgba(13,27,42,.96);
  backdrop-filter:blur(10px);
  transition:padding var(--ph-ease), box-shadow var(--ph-ease);
}

.ph-header.is-scrolled{
  box-shadow:0 12px 34px rgba(13,27,42,.28);
}

.ph-header__bar{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:.65rem 0;
  border-bottom:1px solid rgba(255,255,255,.1);
  font-size:.85rem;
  color:#d7e2ee;
}

.ph-header__contact{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:1.4rem;
}

.ph-header__contact span{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
}

.ph-header__contact i{
  color:var(--ph-amber);
}

.ph-header__main{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:.9rem 0;
}

.ph-header__brand{
  display:inline-flex;
  align-items:center;
  gap:.75rem;
  color:#ffffff;
  font-weight:800;
  font-size:1.15rem;
  letter-spacing:.01em;
}

.ph-header__brand:hover{
  color:var(--ph-amber);
}

.ph-nav{
  display:flex;
  align-items:center;
  gap:.35rem;
}

.ph-nav__link{
  display:inline-block;
  padding:.55rem .95rem;
  border-radius:999px;
  color:#e6eef6;
  font-weight:600;
  font-size:.93rem;
  transition:background-color var(--ph-ease), color var(--ph-ease);
}

.ph-nav__link:hover,
.ph-nav__link:focus,
.ph-nav__link.is-active{
  background-color:rgba(208,139,44,.18);
  color:#ffffff;
}

.ph-burger{
  border:1px solid rgba(255,255,255,.35);
  background:transparent;
  color:#ffffff;
  border-radius:12px;
  padding:.45rem .75rem;
  font-size:1.1rem;
  line-height:1;
}

.ph-burger:hover{
  border-color:var(--ph-amber);
  color:var(--ph-amber);
}

.ph-hero{
  position:relative;
  padding:6rem 0 5rem;
  color:#ffffff;
  background-size:cover;
  background-position:center;
}

.ph-hero__grid{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:3rem;
  align-items:center;
}

.ph-hero h1{
  color:#ffffff;
}

.ph-hero__text{
  font-size:1.1rem;
  color:#dbe5ef;
  max-width:60ch;
}

.ph-hero__facts{
  display:flex;
  flex-wrap:wrap;
  gap:1.5rem;
  margin-top:2rem;
}

.ph-hero__fact{
  min-width:120px;
}

.ph-hero__fact strong{
  display:block;
  font-size:1.9rem;
  color:var(--ph-amber);
  line-height:1;
}

.ph-hero__fact span{
  font-size:.85rem;
  color:#c9d6e3;
}

.ph-slider{
  position:relative;
  border-radius:var(--ph-radius);
  overflow:hidden;
  box-shadow:var(--ph-shadow-lg);
  background-color:var(--ph-ink-2);
}

.ph-slider__track{
  position:relative;
  height:100%;
}

.ph-slider__slide{
  position:absolute;
  inset:0;
  opacity:0;
  visibility:hidden;
  transition:opacity .8s ease, visibility .8s ease;
}

.ph-slider__slide.is-active{
  opacity:1;
  visibility:visible;
  position:relative;
}

.ph-slider__slide img{
  width:100%;
  height:430px;
  object-fit:cover;
}

.ph-slider__caption{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:2rem 1.8rem 1.6rem;
  background:linear-gradient(transparent, rgba(13,27,42,.9));
  color:#ffffff;
}

.ph-slider__caption h3{
  color:#ffffff;
  margin-bottom:.35rem;
}

.ph-slider__caption p{
  margin-bottom:0;
  font-size:.95rem;
  color:#dde7f1;
}

.ph-slider__nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:44px;
  height:44px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.5);
  background-color:rgba(13,27,42,.55);
  color:#ffffff;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  transition:background-color var(--ph-ease), color var(--ph-ease);
}

.ph-slider__nav:hover{
  background-color:var(--ph-amber);
  color:var(--ph-ink);
}

.ph-slider__nav--prev{ left:1rem; }
.ph-slider__nav--next{ right:1rem; }

.ph-slider__dots{
  position:absolute;
  bottom:1rem;
  right:1.5rem;
  display:flex;
  gap:.45rem;
  z-index:3;
}

.ph-slider__dot{
  width:10px;
  height:10px;
  border-radius:50%;
  border:none;
  background-color:rgba(255,255,255,.45);
  cursor:pointer;
  padding:0;
  transition:background-color var(--ph-ease), transform var(--ph-ease);
}

.ph-slider__dot.is-active{
  background-color:var(--ph-amber);
  transform:scale(1.25);
}

.ph-card{
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  padding:2rem 1.7rem;
  height:100%;
  transition:transform var(--ph-ease), box-shadow var(--ph-ease), border-color var(--ph-ease);
}

.ph-card:hover{
  transform:translateY(-6px);
  box-shadow:var(--ph-shadow);
  border-color:var(--ph-amber);
}

.ph-card__icon{
  width:56px;
  height:56px;
  border-radius:16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background-color:var(--ph-amber-soft);
  color:var(--ph-amber-2);
  font-size:1.35rem;
  margin-bottom:1.1rem;
}

.ph-card--dark{
  background-color:var(--ph-ink-2);
  border-color:rgba(255,255,255,.12);
  color:var(--ph-body-invert);
}

.ph-card--dark h3{
  color:#ffffff;
}

.ph-card--dark .ph-card__icon{
  background-color:rgba(208,139,44,.2);
  color:#f0c479;
}

.ph-card__meta{
  font-size:.85rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--ph-amber-2);
  margin-bottom:.6rem;
}

.ph-service-card{
  overflow:hidden;
  border-radius:var(--ph-radius);
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  height:100%;
  display:flex;
  flex-direction:column;
  transition:transform var(--ph-ease), box-shadow var(--ph-ease);
}

.ph-service-card:hover{
  transform:translateY(-6px);
  box-shadow:var(--ph-shadow);
}

.ph-service-card img{
  width:100%;
  height:240px;
  object-fit:cover;
}

.ph-service-card__body{
  padding:1.8rem 1.6rem;
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
}

.ph-service-card__body p{
  flex:1 1 auto;
}

.ph-list-check li{
  position:relative;
  padding-left:1.8rem;
  margin-bottom:.7rem;
}

.ph-list-check li::before{
  content:"\f00c";
  font-family:"Font Awesome 6 Free";
  font-weight:900;
  position:absolute;
  left:0;
  top:.15rem;
  color:var(--ph-amber-2);
  font-size:.85rem;
}

.ph-section--dark .ph-list-check li::before{
  color:var(--ph-amber);
}

.ph-stats{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:1.5rem;
}

.ph-stat{
  text-align:center;
  padding:1.8rem 1rem;
  border-radius:var(--ph-radius);
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
}

.ph-section--dark .ph-stat{
  background-color:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.14);
}

.ph-stat strong{
  display:block;
  font-size:2.3rem;
  font-weight:800;
  color:var(--ph-amber-2);
  line-height:1.1;
}

.ph-section--dark .ph-stat strong{
  color:var(--ph-amber);
}

.ph-stat span{
  font-size:.9rem;
  color:var(--ph-body);
}

.ph-section--dark .ph-stat span{
  color:var(--ph-body-invert);
}

.ph-step{
  display:flex;
  gap:1.2rem;
  padding:1.4rem 0;
  border-bottom:1px dashed var(--ph-line);
}

.ph-step:last-child{
  border-bottom:none;
}

.ph-step__num{
  flex:0 0 auto;
  width:48px;
  height:48px;
  border-radius:50%;
  background-color:var(--ph-ink);
  color:#ffffff;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-weight:800;
}

.ph-step h4{
  margin-bottom:.35rem;
  font-size:1.1rem;
}

.ph-step p{
  margin-bottom:0;
  font-size:.95rem;
}

.ph-accordion .accordion-item{
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius-sm) !important;
  margin-bottom:.85rem;
  overflow:hidden;
  background-color:var(--ph-paper);
}

.ph-accordion .accordion-button{
  font-weight:700;
  color:var(--ph-ink);
  background-color:var(--ph-paper);
  padding:1.15rem 1.3rem;
}

.ph-accordion .accordion-button:not(.collapsed){
  background-color:var(--ph-amber-soft);
  color:var(--ph-ink);
  box-shadow:none;
}

.ph-accordion .accordion-button:focus{
  box-shadow:0 0 0 3px rgba(208,139,44,.35);
}

.ph-accordion .accordion-body{
  color:var(--ph-body);
  padding:1.1rem 1.3rem 1.4rem;
}

.ph-gallery{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:1.2rem;
}

.ph-gallery__item{
  position:relative;
  border-radius:var(--ph-radius);
  overflow:hidden;
  background-color:var(--ph-ink-2);
}

.ph-gallery__item img{
  width:100%;
  height:260px;
  object-fit:cover;
  transition:transform .6s ease;
}

.ph-gallery__item:hover img{
  transform:scale(1.06);
}

.ph-gallery__item figcaption{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:1.4rem 1.2rem .9rem;
  background:linear-gradient(transparent, rgba(13,27,42,.88));
  color:#ffffff;
  font-size:.92rem;
}

.ph-form{
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  padding:2.2rem 2rem;
  box-shadow:var(--ph-shadow);
}

.ph-form .form-label{
  font-weight:700;
  font-size:.88rem;
  color:var(--ph-ink);
  margin-bottom:.35rem;
}

.ph-form .form-control,
.ph-form .form-select{
  border:1px solid var(--ph-line);
  border-radius:12px;
  padding:.8rem 1rem;
  background-color:var(--ph-cream);
  color:var(--ph-ink);
}

.ph-form .form-control:focus,
.ph-form .form-select:focus{
  border-color:var(--ph-amber);
  box-shadow:0 0 0 3px rgba(208,139,44,.25);
  background-color:#ffffff;
}

.ph-form .form-control.is-invalid,
.ph-form .form-select.is-invalid{
  border-color:#b3261e;
  background-color:#fdf3f2;
}

.ph-form__note{
  border-radius:12px;
  padding:.9rem 1.1rem;
  font-size:.92rem;
  margin-bottom:1rem;
  display:none;
}

.ph-form__note.is-visible{
  display:block;
}

.ph-form__note--success{
  background-color:#e8f5ec;
  border:1px solid #2f7d4f;
  color:#1c5233;
}

.ph-form__note--error{
  background-color:#fdf3f2;
  border:1px solid #b3261e;
  color:#7a1a15;
}

.ph-newsletter{
  display:flex;
  flex-wrap:wrap;
  gap:.8rem;
  align-items:flex-start;
}

.ph-newsletter .form-control{
  flex:1 1 240px;
  border-radius:999px;
  padding:.85rem 1.3rem;
  border:1px solid rgba(255,255,255,.28);
  background-color:rgba(255,255,255,.08);
  color:#ffffff;
}

.ph-newsletter .form-control::placeholder{
  color:#c3d0dc;
}

.ph-newsletter .form-control:focus{
  background-color:rgba(255,255,255,.14);
  border-color:var(--ph-amber);
  box-shadow:0 0 0 3px rgba(208,139,44,.3);
  color:#ffffff;
}

.ph-testimonial{
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  padding:1.9rem 1.7rem;
  height:100%;
}

.ph-testimonial__quote{
  color:var(--ph-amber);
  font-size:1.4rem;
  margin-bottom:.8rem;
}

.ph-testimonial__author{
  display:flex;
  align-items:center;
  gap:.9rem;
  margin-top:1.2rem;
}

.ph-testimonial__author img{
  width:54px;
  height:54px;
  border-radius:50%;
  object-fit:cover;
}

.ph-testimonial__author strong{
  display:block;
  color:var(--ph-ink);
  font-size:.95rem;
}

.ph-testimonial__author span{
  font-size:.82rem;
  color:var(--ph-body);
}

.ph-partners{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
}

.ph-partners img{
  height:44px;
  width:auto;
  opacity:.75;
  filter:grayscale(1);
  transition:opacity var(--ph-ease), filter var(--ph-ease);
}

.ph-partners img:hover{
  opacity:1;
  filter:grayscale(0);
}

.ph-map{
  border-radius:var(--ph-radius);
  overflow:hidden;
  border:1px solid var(--ph-line);
  box-shadow:var(--ph-shadow);
  line-height:0;
}

.ph-map iframe{
  width:100%;
  height:420px;
  border:0;
  display:block;
}

.ph-cta{
  border-radius:var(--ph-radius);
  padding:3.2rem 2.5rem;
  background-color:var(--ph-ink);
  color:#ffffff;
  background-size:cover;
  background-position:center;
}

.ph-cta h2{
  color:#ffffff;
}

.ph-cta p{
  color:#dfe8f1;
}

.ph-footer{
  background-color:var(--ph-ink);
  color:#cbd8e4;
  padding:4rem 0 1.6rem;
}

.ph-footer h4{
  color:#ffffff;
  font-size:1rem;
  letter-spacing:.05em;
  text-transform:uppercase;
  margin-bottom:1.1rem;
}

.ph-footer a{
  color:#cbd8e4;
}

.ph-footer a:hover{
  color:var(--ph-amber);
}

.ph-footer__list li{
  margin-bottom:.6rem;
  font-size:.93rem;
}

.ph-footer__contact li{
  display:flex;
  gap:.7rem;
  margin-bottom:.85rem;
  font-size:.93rem;
}

.ph-footer__contact i{
  color:var(--ph-amber);
  margin-top:.3rem;
}

.ph-footer__bottom{
  border-top:1px solid rgba(255,255,255,.12);
  margin-top:2.6rem;
  padding-top:1.4rem;
  font-size:.84rem;
  color:#a9b8c7;
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:1rem;
}

.ph-social{
  display:flex;
  gap:.6rem;
  margin-top:1rem;
}

.ph-social a{
  width:40px;
  height:40px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.22);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#ffffff;
  transition:background-color var(--ph-ease), border-color var(--ph-ease), color var(--ph-ease);
}

.ph-social a:hover{
  background-color:var(--ph-amber);
  border-color:var(--ph-amber);
  color:var(--ph-ink);
}

.ph-cookie{
  position:fixed;
  left:1.2rem;
  right:1.2rem;
  bottom:1.2rem;
  z-index:1080;
  background-color:var(--ph-ink);
  color:#e9f0f6;
  border-radius:var(--ph-radius);
  padding:1.3rem 1.5rem;
  box-shadow:var(--ph-shadow-lg);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:1.2rem;
  transform:translateY(140%);
  opacity:0;
  transition:transform .5s cubic-bezier(.22,.61,.36,1), opacity .5s ease;
}

.ph-cookie.is-visible{
  transform:translateY(0);
  opacity:1;
}

.ph-cookie__text{
  flex:1 1 320px;
  font-size:.92rem;
  line-height:1.6;
  margin:0;
}

.ph-cookie__actions{
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
}

.ph-cookie__actions .ph-btn{
  padding:.6rem 1.3rem;
  font-size:.86rem;
}

.ph-to-top{
  position:fixed;
  right:1.2rem;
  bottom:6.5rem;
  width:48px;
  height:48px;
  border-radius:50%;
  border:none;
  background-color:var(--ph-amber);
  color:var(--ph-ink);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:1rem;
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  transform:translateY(16px);
  transition:opacity var(--ph-ease), transform var(--ph-ease), visibility var(--ph-ease);
  z-index:1040;
  box-shadow:var(--ph-shadow);
}

.ph-to-top.is-visible{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}

.ph-to-top:hover{
  background-color:#e2a146;
}

.ph-price-card{
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  padding:2.2rem 1.8rem;
  height:100%;
  display:flex;
  flex-direction:column;
  transition:transform var(--ph-ease), box-shadow var(--ph-ease), border-color var(--ph-ease);
}

.ph-price-card:hover{
  transform:translateY(-6px);
  box-shadow:var(--ph-shadow);
}

.ph-price-card.is-featured{
  border-color:var(--ph-amber);
  box-shadow:var(--ph-shadow);
  position:relative;
}

.ph-price-card.is-featured::after{
  content:"\f005";
  font-family:"Font Awesome 6 Free";
  font-weight:900;
  position:absolute;
  top:-14px;
  right:22px;
  width:32px;
  height:32px;
  border-radius:50%;
  background-color:var(--ph-amber);
  color:var(--ph-ink);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:.8rem;
}

.ph-price-card__amount{
  font-size:2.6rem;
  font-weight:800;
  color:var(--ph-ink);
  line-height:1;
  margin:.6rem 0;
}

.ph-price-card__amount small{
  font-size:.9rem;
  font-weight:600;
  color:var(--ph-body);
}

.ph-price-card ul{
  flex:1 1 auto;
  margin:1.2rem 0 1.6rem;
}

.ph-timeline{
  position:relative;
  padding-left:2rem;
  border-left:2px solid var(--ph-line);
}

.ph-timeline__item{
  position:relative;
  padding-bottom:2rem;
}

.ph-timeline__item::before{
  content:"";
  position:absolute;
  left:-2.6rem;
  top:.35rem;
  width:14px;
  height:14px;
  border-radius:50%;
  background-color:var(--ph-amber);
  border:3px solid var(--ph-cream);
}

.ph-timeline__item h4{
  margin-bottom:.3rem;
  font-size:1.05rem;
}

.ph-timeline__item span{
  font-size:.82rem;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ph-amber-2);
}

.ph-team-card{
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  overflow:hidden;
  height:100%;
  transition:transform var(--ph-ease), box-shadow var(--ph-ease);
}

.ph-team-card:hover{
  transform:translateY(-6px);
  box-shadow:var(--ph-shadow);
}

.ph-team-card img{
  width:100%;
  height:290px;
  object-fit:cover;
}

.ph-team-card__body{
  padding:1.4rem 1.3rem;
}

.ph-team-card__body strong{
  display:block;
  color:var(--ph-ink);
  font-size:1.05rem;
}

.ph-team-card__body span{
  font-size:.85rem;
  color:var(--ph-amber-2);
  font-weight:700;
  letter-spacing:.04em;
}

.ph-article-card{
  display:flex;
  flex-direction:column;
  height:100%;
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  overflow:hidden;
  transition:transform var(--ph-ease), box-shadow var(--ph-ease);
}

.ph-article-card:hover{
  transform:translateY(-6px);
  box-shadow:var(--ph-shadow);
}

.ph-article-card img{
  width:100%;
  height:230px;
  object-fit:cover;
}

.ph-article-card__body{
  padding:1.6rem 1.5rem;
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
}

.ph-article-card__body p{
  flex:1 1 auto;
}

.ph-article-meta{
  font-size:.82rem;
  color:var(--ph-body);
  display:flex;
  gap:1rem;
  flex-wrap:wrap;
  margin-bottom:.7rem;
}

.ph-article-meta i{
  color:var(--ph-amber-2);
  margin-right:.35rem;
}

.ph-legal{
  background-color:var(--ph-paper);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  padding:2.6rem 2.2rem;
  box-shadow:var(--ph-shadow);
}

.ph-legal h2{
  font-size:1.4rem;
  margin-top:2.2rem;
}

.ph-legal h2:first-child{
  margin-top:0;
}

.ph-legal ul{
  list-style:disc;
  padding-left:1.3rem;
}

.ph-legal ul li{
  margin-bottom:.5rem;
}

.ph-cta-strip{
  background-color:var(--ph-amber);
  color:var(--ph-ink);
  border-radius:var(--ph-radius);
  padding:1.6rem 1.9rem;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
}

.ph-cta-strip p{
  margin:0;
  font-weight:700;
  color:var(--ph-ink);
}

.ph-fact-row{
  display:flex;
  align-items:flex-start;
  gap:1rem;
  padding:1.1rem 0;
  border-bottom:1px solid var(--ph-line);
}

.ph-fact-row:last-child{
  border-bottom:none;
}

.ph-fact-row i{
  color:var(--ph-amber-2);
  font-size:1.2rem;
  margin-top:.25rem;
}

.ph-fact-row strong{
  display:block;
  color:var(--ph-ink);
}

.ph-fact-row span{
  font-size:.92rem;
}

.ph-badge{
  display:inline-block;
  padding:.3rem .8rem;
  border-radius:999px;
  background-color:var(--ph-amber-soft);
  color:var(--ph-ink);
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
}

.ph-section--dark .ph-badge{
  background-color:rgba(208,139,44,.22);
  color:#f6cf8c;
}

.ph-chip-list{
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
  margin-top:1.2rem;
}

.ph-chip{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:.5rem 1rem;
  border-radius:999px;
  border:1px solid var(--ph-line);
  background-color:var(--ph-paper);
  font-size:.85rem;
  font-weight:600;
  color:var(--ph-ink);
}

.ph-section--dark .ph-chip{
  background-color:rgba(255,255,255,.07);
  border-color:rgba(255,255,255,.16);
  color:#ffffff;
}

.ph-prose{
  max-width:78ch;
}

.ph-prose p{
  font-size:1.03rem;
  line-height:1.9;
}

.ph-quote-block{
  border-left:4px solid var(--ph-amber);
  padding:1rem 0 1rem 1.6rem;
  font-family:var(--ph-serif);
  font-size:1.25rem;
  color:var(--ph-ink);
  line-height:1.6;
}

.ph-overlay-card{
  border-radius:var(--ph-radius);
  padding:2.4rem 2rem;
  background-size:cover;
  background-position:center;
  color:#ffffff;
  min-height:280px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
}

.ph-overlay-card h3{
  color:#ffffff;
}

.ph-overlay-card p{
  color:#e3ecf4;
  margin-bottom:0;
}

@media (max-width: 991.98px){
  .ph-hero__grid{
    grid-template-columns:1fr;
  }

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

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

  .ph-header__contact{
    gap:1rem;
    font-size:.8rem;
  }

  .ph-nav{
    flex-direction:column;
    align-items:flex-start;
    padding:1rem 0;
  }

  .ph-nav__link{
    width:100%;
    border-radius:10px;
  }
}

@media (max-width: 575.98px){
  .ph-section{
    padding:3.6rem 0;
  }

  .ph-stats{
    grid-template-columns:1fr;
  }

  .ph-gallery{
    grid-template-columns:1fr;
  }

  .ph-slider__slide img{
    height:320px;
  }

  .ph-form{
    padding:1.6rem 1.2rem;
  }

  .ph-legal{
    padding:1.8rem 1.3rem;
  }

  .ph-cookie{
    left:.8rem;
    right:.8rem;
    bottom:.8rem;
    padding:1.1rem 1.2rem;
  }

  .ph-to-top{
    right:.8rem;
    bottom:7.5rem;
  }
}

@media (prefers-reduced-motion: reduce){
  html{
    scroll-behavior:auto;
  }

  *,
  *::before,
  *::after{
    animation-duration:.001ms !important;
    transition-duration:.001ms !important;
  }
}
/* Contrast fixes: keep primary button text legible inside dark sections */
.ph-section--dark a.ph-btn--primary,
.ph-section--dark a.ph-btn--primary:hover,
.ph-section--dark a.ph-btn--primary:focus,
.ph-hero a.ph-btn--primary,
.ph-band a.ph-btn--primary{
  color:var(--ph-ink);
}
.ph-section--dark a.ph-btn--primary:hover,
.ph-section--dark a.ph-btn--primary:focus{
  color:var(--ph-ink);
}
/* Ensure hero/band text sits on a solid dark backdrop for contrast */
.ph-hero.ph-band,
.ph-band{
  background-color:var(--ph-ink);
}

/* ===== QA accessibility / contrast overrides ===== */

/* Darken the amber accent used as text on light backgrounds so it clears 4.5:1 */
:root{
  --ph-amber-2:#8f5710;
}

/* Give the hero a solid dark base color so overlaid white text always has
   sufficient contrast even before/without the background image loading */
.ph-hero{
  background-color:var(--ph-ink);
}

/* The dark-section link color must not override the primary button text color */
.ph-section--dark a.ph-btn,
.ph-section--dark a.ph-btn:hover,
.ph-section--dark a.ph-btn:focus,
.ph-section--dark a.ph-btn--primary,
.ph-section--dark a.ph-btn--primary:hover,
.ph-section--dark a.ph-btn--primary:focus{
  color:var(--ph-ink);
}

/* Overlay cards sit on top of dark imagery: keep a solid dark base */
.ph-overlay-card{
  background-color:#0d1b2a;
}

/* --- Contrast fixes for /about/ (accent + dark overlay fallbacks) --- */
:root{
  /* Darkened from #a86a15 to meet WCAG AA 4.5:1 on white and cream backgrounds */
  --ph-amber-2:#8a5a12;
}

/* Provide a solid dark fallback behind hero/photo bands so text has
   sufficient contrast even when the background image is not painted. */
.ph-hero{
  background-color:var(--ph-ink);
}

/* Same fallback for overlay cards that carry a dark gradient photo. */
.ph-overlay-card{
  background-color:var(--ph-ink-2);
}

/* Keep the ghost-light button readable on dark sections */
.ph-section--dark a.ph-btn--ghost-light,
.ph-section--dark a.ph-btn--ghost-light:focus{
  color:#ffffff;
}
.ph-section--dark a.ph-btn--ghost-light:hover{
  color:var(--ph-ink);
}

/* Testimonial cards sit on a white background even inside dark sections,
   so their text must use the dark body color, not the inverted one. */
.ph-section--dark .ph-testimonial p,
.ph-testimonial p{
  color:var(--ph-body);
}

/* "Lire la politique" dark button on the amber CTA strip: force white label
   so it does not inherit the strip's dark ink text color. */
.ph-cta-strip .ph-btn--dark,
.ph-cta-strip .ph-btn--dark:hover,
.ph-cta-strip .ph-btn--dark:focus{
  color:#ffffff;
  background-color:var(--ph-ink);
}

/* ===== QA contrast fixes for /contacts/ ===== */

/* Timeline eyebrow labels sit on the dark section background, so the dark
   amber accent (#8a5a12) fails 4.5:1. Use the light amber used elsewhere
   on dark surfaces to restore legibility. */
.ph-section--dark .ph-timeline__item span{
  color:#f0c479;
}

/* The dark button inside the amber CTA strip on a dark section was being
   overridden by the higher-specificity ".ph-section--dark a.ph-btn" rule,
   painting ink text on an ink button (invisible). Force a white label. */
.ph-section--dark .ph-cta-strip a.ph-btn--dark,
.ph-section--dark .ph-cta-strip a.ph-btn--dark:hover,
.ph-section--dark .ph-cta-strip a.ph-btn--dark:focus{
  color:#ffffff;
  background-color:var(--ph-ink);
  border-color:var(--ph-ink);
}

/* ===== QA fix: article cards inside dark sections keep a light card
   background while their text is styled for a dark surface, producing
   white-on-white (invisible) content. Give those cards a dark base so the
   light text and ghost-light button become legible. ===== */
.ph-section--dark .ph-article-card{
  background-color:var(--ph-ink-2);
  border-color:rgba(255,255,255,.14);
}

/* ===== QA fix: the homepage cookie banner was created with a hidden
   initial state (opacity:0 / translated off-screen) and only shown after a
   900ms JS delay, so it registered as "not visible". Show it as soon as it
   exists; consent handling and dismissal still work normally. ===== */
.ph-cookie{
  opacity:1;
  transform:translateY(0);
}

/* ===== QA contrast fix for /thank-you/ article meta ===== */
/* Article metadata (category + read time) sits inside article cards that
   are now painted on a dark base inside dark sections, so the dark body
   color renders nearly invisible. Use the light inverted body color and a
   light amber icon tone so it clears 4.5:1 on the dark card background. */
.ph-section--dark .ph-article-meta,
.ph-section--dark .ph-article-card__body .ph-article-meta{
  color:var(--ph-body-invert);
}

.ph-section--dark .ph-article-meta span,
.ph-section--dark .ph-article-meta i{
  color:#f0c479;
}

/* ===== QA contrast fix for /price/ discount figures ===== */
/* The large percentage figures (5 %, 8 %, 12 %, 1 mois) carry an inline
   amber color (#d08b2c) that only reaches 2.83:1 on the white card, below
   the 3:1 minimum for large bold text. Override with the darkened amber
   accent (which clears 4.5:1) while keeping the same visual style. */
.ph-card.text-center > strong{
  color:var(--ph-amber-2) !important;
}
