/* ==========================================================================
   Phoenix Pixel Studio — shared site header
   Used by every page. All classes are prefixed `ppx-` so nothing collides
   with Bootstrap (.navbar/.btn) or the old template stylesheet, and the file
   carries its own resets so it does not depend on any global reset.
   ========================================================================== */

:root{
  --ppx-brand:#0f77b9;
  --ppx-brand-700:#0a5482;
  --ppx-ink:#0d1b2a;
  --ppx-body:#4b5b6b;
  --ppx-muted:#7b8a99;
  --ppx-line:#e3e8ee;
  --ppx-soft:#f6f8fa;
  --ppx-tint:#eef6fc;
  --ppx-tint-2:#d3e6f4;
  --ppx-fh:'Plus Jakarta Sans',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --ppx-fb:'IBM Plex Sans',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --ppx-r:3px;
  --ppx-ease:cubic-bezier(.22,1,.36,1);
  --ppx-sh:0 2px 6px rgba(13,27,42,.05),0 12px 26px rgba(13,27,42,.09);
  --ppx-sh-brand:0 4px 14px rgba(15,119,185,.24);
}

/* ---- scoped reset ---- */
.ppx-topbar,.ppx-topbar *,
.ppx-nav,.ppx-nav *,
.ppx-drawer,.ppx-drawer *{box-sizing:border-box}

.ppx-topbar ul,.ppx-nav ul,.ppx-drawer ul{margin:0;padding:0;list-style:none}
.ppx-topbar p,.ppx-nav p,.ppx-drawer p,
.ppx-drawer h4,.ppx-drawer h5{margin:0}
.ppx-topbar a,.ppx-nav a,.ppx-drawer a{text-decoration:none;color:inherit;transition:color .3s var(--ppx-ease)}
.ppx-topbar img,.ppx-nav img,.ppx-drawer img{max-width:100%;height:auto;display:block}
.ppx-nav figure,.ppx-drawer figure{margin:0}

body.ppx-no-scroll{overflow:hidden}

/* ---- shared preloader ----
   Logo over a slim progress rule. The animated camera that used to sit here
   read as a template flourish and delayed first paint for no gain. */
#ppxPreloader{position:fixed;inset:0;z-index:9999;background:var(--ppx-ink);
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:26px;
  transition:opacity .45s ease,visibility .45s ease}
#ppxPreloader.ppx-done{opacity:0;visibility:hidden}

/* the ordinary full-colour brand logo, unaltered, on a white plate so it reads
   against the dark preloader - same treatment as the footer */
.ppx-pl-logo{box-sizing:content-box;width:clamp(170px,30vw,220px);height:auto;opacity:0;
  background:#fff;padding:18px 24px;border-radius:4px;
  animation:ppxPlFade .6s var(--ppx-ease) .1s forwards}
@keyframes ppxPlFade{to{opacity:1}}

.ppx-pl-bar{width:160px;height:2px;background:rgba(255,255,255,.16);overflow:hidden}
.ppx-pl-bar::after{content:"";display:block;height:100%;width:40%;
  background:var(--ppx-brand);animation:ppxPlSlide 1.1s infinite}
@keyframes ppxPlSlide{0%{transform:translateX(-100%)}100%{transform:translateX(350%)}}

@media (prefers-reduced-motion:reduce){
  .ppx-pl-bar::after{animation:none}
  .ppx-pl-logo{opacity:1;animation:none}
}

/* ---- shared button ---- */
.ppx-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:15px 30px;border:0;border-radius:var(--ppx-r);cursor:pointer;
  font-family:var(--ppx-fh);font-weight:700;font-size:15px;letter-spacing:.01em;
  background:var(--ppx-brand);color:#fff;
  transition:background .25s var(--ppx-ease),box-shadow .25s var(--ppx-ease);
  white-space:nowrap;line-height:1.2;
}
.ppx-btn:hover{background:var(--ppx-brand-700);color:#fff;box-shadow:var(--ppx-sh-brand)}
/* the scoped `a{color:inherit}` reset above is more specific than a single
   class, so the solid buttons need to out-rank it explicitly */
.ppx-nav .ppx-btn,.ppx-drawer .ppx-btn,.ppx-nav .ppx-call{color:#fff}

/* ---- top bar ---- */
.ppx-topbar{background:var(--ppx-ink);color:rgba(255,255,255,.70);
  font-family:var(--ppx-fb);font-size:13.5px;line-height:1.6}
.ppx-wrap{width:100%;max-width:1250px;margin:0 auto;padding:0 24px}
.ppx-topbar .ppx-wrap{display:flex;align-items:center;justify-content:space-between;
  gap:24px;min-height:44px;flex-wrap:wrap}
.ppx-topbar ul{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.ppx-topbar li{display:flex;align-items:center;gap:8px}
.ppx-topbar i{color:var(--ppx-brand);font-size:14px}
.ppx-topbar a:hover{color:#fff}
.ppx-topbar .ppx-map{color:#fff;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.ppx-topbar .ppx-map i{font-size:10px;transition:transform .3s var(--ppx-ease)}
.ppx-topbar .ppx-map:hover i{transform:translateX(3px)}
.ppx-topbar .ppx-lbl{color:rgba(255,255,255,.46);margin-right:2px}
.ppx-topbar .ppx-val{color:#fff;font-weight:600}

/* ---- nav bar ----
   Once the page is scrolled the bar goes fully opaque: at 92% the hero showed
   through behind the logo, which read as the logo sitting on top of the page
   rather than belonging to the header. */
.ppx-nav{position:sticky;top:0;z-index:800;background:#fff;
  border-bottom:1px solid var(--ppx-line);font-family:var(--ppx-fb);
  transition:box-shadow .3s var(--ppx-ease)}
body.ppx-stuck .ppx-nav{box-shadow:0 1px 3px rgba(13,27,42,.08),0 8px 24px rgba(13,27,42,.06)}
.ppx-nav-inner{position:relative;display:flex;align-items:center;gap:28px;
  min-height:82px;transition:min-height .3s var(--ppx-ease)}
body.ppx-stuck .ppx-nav-inner{min-height:70px}
/* the logo is a transparent PNG, so it needs no plate of its own - it simply
   scales with the bar as it condenses */
.ppx-brand{display:flex;align-items:center;flex:none}
.ppx-brand img{height:46px;width:auto;display:block;
  transition:height .35s var(--ppx-ease)}
body.ppx-stuck .ppx-brand img{height:40px}

.ppx-menu{margin-left:auto;align-self:stretch}
/* items fill the full header height so there is no dead gap above the
   dropdown — moving the pointer down never drops :hover */
.ppx-menu > ul{display:flex;align-items:stretch;gap:6px;height:100%}
.ppx-menu > ul > li{position:relative;display:flex;align-items:center}
.ppx-menu > ul > li > a{
  position:relative;display:inline-flex;align-items:center;gap:7px;
  padding:12px 14px;border-radius:var(--ppx-r);
  font-family:var(--ppx-fh);font-weight:600;font-size:15px;color:var(--ppx-ink);
  transition:color .25s var(--ppx-ease);
}
/* a rule the full width of the label, not a floating centred dash */
.ppx-menu > ul > li > a::after{content:"";position:absolute;left:14px;right:14px;bottom:7px;
  height:2px;background:var(--ppx-brand);transform-origin:left;
  transform:scaleX(0);transition:transform .28s var(--ppx-ease)}
.ppx-menu > ul > li:hover > a,.ppx-menu > ul > li.ppx-current > a{color:var(--ppx-brand)}
.ppx-menu > ul > li:hover > a::after,.ppx-menu > ul > li.ppx-current > a::after{transform:scaleX(1)}
.ppx-caret{font-size:11px;opacity:.6;transition:transform .3s var(--ppx-ease)}
.ppx-menu li:hover .ppx-caret{transform:rotate(180deg)}

/* dropdown: box is flush with the header bottom, the visible gap is
   transparent padding INSIDE it so hover is never lost */
.ppx-mega{position:absolute;top:100%;left:50%;width:min(760px,calc(100vw - 40px));
  transform:translateX(-50%);padding-top:12px;background:none;border:0;box-shadow:none;
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .3s var(--ppx-ease),visibility .3s var(--ppx-ease);z-index:60}
.ppx-mega > ul{display:grid;grid-template-columns:1fr 1fr;gap:2px;
  background:#fff;border-radius:var(--ppx-r);border:1px solid var(--ppx-line);
  box-shadow:var(--ppx-sh);padding:10px;
  transform:translateY(8px);transition:transform .3s var(--ppx-ease)}
.ppx-menu li.ppx-has-mega{position:static}
.ppx-menu li.ppx-has-mega:hover .ppx-mega,
.ppx-menu li.ppx-has-mega:focus-within .ppx-mega{opacity:1;visibility:visible;pointer-events:auto}
.ppx-menu li.ppx-has-mega:hover .ppx-mega > ul,
.ppx-menu li.ppx-has-mega:focus-within .ppx-mega > ul{transform:translateY(0)}
.ppx-mega a{display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:var(--ppx-r);
  font-family:var(--ppx-fb);font-weight:500;font-size:14.5px;color:var(--ppx-ink);
  transition:background .22s var(--ppx-ease),color .22s var(--ppx-ease)}
.ppx-mega a::before{content:"";width:5px;height:5px;
  background:var(--ppx-tint-2);flex:none;transition:background .22s var(--ppx-ease)}
.ppx-mega a:hover{background:var(--ppx-tint);color:var(--ppx-brand)}
.ppx-mega a:hover::before{background:var(--ppx-brand)}
.ppx-mega li:first-child a{background:var(--ppx-ink);color:#fff}
.ppx-mega li:first-child a::before{background:var(--ppx-brand)}
.ppx-mega li:first-child a:hover{background:var(--ppx-brand)}
.ppx-mega li:first-child a:hover::before{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.3)}

.ppx-cta{display:flex;align-items:center;gap:10px}
.ppx-call{display:none;width:46px;height:46px;border-radius:var(--ppx-r);place-items:center;
  background:var(--ppx-brand);color:#fff;font-size:19px;transition:.25s var(--ppx-ease)}
.ppx-call:hover{background:var(--ppx-brand-700);color:#fff}
.ppx-burger{display:none;width:46px;height:46px;border-radius:var(--ppx-r);
  border:1px solid var(--ppx-line);background:#fff;cursor:pointer;padding:0;place-items:center}
.ppx-burger span{display:block;width:20px;height:2px;border-radius:2px;
  background:var(--ppx-ink);margin:4px auto;transition:.3s var(--ppx-ease)}
.ppx-burger:hover{border-color:var(--ppx-brand)}
.ppx-burger:hover span{background:var(--ppx-brand)}

/* ---- mobile drawer ---- */
.ppx-backdrop{position:fixed;inset:0;background:rgba(8,20,31,.6);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;transition:.4s var(--ppx-ease);z-index:990}
.ppx-backdrop.ppx-open{opacity:1;visibility:visible}
.ppx-drawer{position:fixed;top:0;right:0;height:100%;width:min(400px,88vw);z-index:995;
  background:#fff;transform:translateX(105%);transition:transform .45s var(--ppx-ease);
  overflow-y:auto;padding:26px 26px 44px;font-family:var(--ppx-fb);color:var(--ppx-body)}
.ppx-drawer.ppx-open{transform:none}
.ppx-drawer-top{display:flex;align-items:center;justify-content:space-between;
  gap:16px;margin-bottom:28px}
.ppx-drawer-top img{height:42px;width:auto}
.ppx-drawer-close{width:42px;height:42px;border-radius:var(--ppx-r);border:1px solid var(--ppx-line);
  background:#fff;cursor:pointer;color:var(--ppx-ink);font-size:16px;flex:none}
.ppx-drawer-close:hover{background:var(--ppx-brand);color:#fff;border-color:var(--ppx-brand)}
.ppx-drawer nav > ul > li{border-bottom:1px solid var(--ppx-line)}
.ppx-drawer nav a,.ppx-drawer .ppx-acc{display:flex;align-items:center;justify-content:space-between;
  width:100%;gap:12px;padding:14px 2px;background:none;border:0;text-align:left;cursor:pointer;
  font-family:var(--ppx-fh);font-weight:600;font-size:15.5px;color:var(--ppx-ink)}
.ppx-drawer nav a:hover,.ppx-drawer .ppx-acc:hover{color:var(--ppx-brand)}
.ppx-drawer .ppx-acc i{font-size:12px;transition:transform .3s var(--ppx-ease);color:var(--ppx-brand)}
.ppx-drawer .ppx-acc.ppx-open i{transform:rotate(180deg)}
.ppx-sub{max-height:0;overflow:hidden;transition:max-height .45s var(--ppx-ease)}
.ppx-sub ul{padding:2px 0 12px}
.ppx-sub a{padding:10px 0 10px 18px;font-family:var(--ppx-fb);font-size:14.5px;
  font-weight:400;color:var(--ppx-body);position:relative}
.ppx-sub a::before{content:"";position:absolute;left:0;top:50%;width:5px;height:5px;
  background:var(--ppx-tint-2);transform:translateY(-50%)}
.ppx-sub a:hover::before{background:var(--ppx-brand)}
.ppx-drawer-info{margin-top:28px;padding:22px;border-radius:var(--ppx-r);background:var(--ppx-soft);
  border:1px solid var(--ppx-line)}
.ppx-drawer-info h4{font-family:var(--ppx-fh);font-weight:700;color:var(--ppx-ink);
  font-size:16px;margin-bottom:14px}
.ppx-drawer-info li{display:flex;gap:12px;font-size:14.5px;line-height:1.65;margin-bottom:14px}
.ppx-drawer-info li:last-child{margin-bottom:0}
.ppx-drawer-info li i{color:var(--ppx-brand);font-size:16px;line-height:1.6;flex:none}
.ppx-drawer-info .ppx-map{display:inline-flex;align-items:center;gap:6px;margin-top:6px;
  font-family:var(--ppx-fh);font-weight:700;font-size:12.5px;color:var(--ppx-brand)}
.ppx-drawer-info .ppx-map i{font-size:10px}
.ppx-drawer-info a:hover{color:var(--ppx-brand)}
.ppx-drawer-social{display:flex;gap:8px;margin-top:22px}
.ppx-drawer-social a{width:42px;height:42px;border-radius:var(--ppx-r);background:var(--ppx-soft);
  border:1px solid var(--ppx-line);display:grid;place-items:center;color:var(--ppx-ink);
  transition:background .25s var(--ppx-ease),color .25s var(--ppx-ease),border-color .25s var(--ppx-ease)}
.ppx-drawer-social a:hover{background:var(--ppx-brand);border-color:var(--ppx-brand);color:#fff}

/* ---- floating WhatsApp button ----
   Sits above the scroll-to-top button on every page. */
.ppx-wa{position:fixed;right:26px;bottom:96px;z-index:900;
  width:58px;height:58px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:#25d366;color:#fff;font-size:30px;text-decoration:none;
  box-shadow:0 10px 26px rgba(37,211,102,.42),0 2px 8px rgba(12,28,43,.16);
  transition:transform .35s var(--ppx-ease),box-shadow .35s var(--ppx-ease)}
.ppx-wa:hover{color:#fff;transform:translateY(-4px) scale(1.04);
  box-shadow:0 16px 34px rgba(37,211,102,.5),0 4px 10px rgba(12,28,43,.2)}
.ppx-wa i{position:relative;z-index:2;line-height:1}
.ppx-wa-pulse{position:absolute;inset:0;border-radius:50%;background:#25d366;
  opacity:.6;animation:ppxWaPulse 2.4s ease-out infinite}
@keyframes ppxWaPulse{0%{transform:scale(1);opacity:.55}
  70%,100%{transform:scale(1.75);opacity:0}}
.ppx-wa-tip{position:absolute;right:calc(100% + 14px);white-space:nowrap;
  padding:9px 14px;border-radius:var(--ppx-r);background:var(--ppx-ink);color:#fff;
  font-family:var(--ppx-fh);font-weight:600;font-size:13px;letter-spacing:.01em;
  opacity:0;visibility:hidden;transform:translateX(8px);
  transition:all .32s var(--ppx-ease);box-shadow:var(--ppx-sh)}
.ppx-wa-tip::after{content:"";position:absolute;left:100%;top:50%;
  border:6px solid transparent;border-left-color:var(--ppx-ink);transform:translateY(-50%)}
.ppx-wa:hover .ppx-wa-tip{opacity:1;visibility:visible;transform:none}

@media (prefers-reduced-motion:reduce){ .ppx-wa-pulse{animation:none} }

@media (max-width:520px){
  .ppx-wa{right:16px;bottom:84px;width:52px;height:52px;font-size:27px}
  .ppx-wa-tip{display:none}
}

/* ---- responsive ---- */
@media (max-width:1200px){
  .ppx-menu > ul > li > a{padding:12px;font-size:15px}
}
@media (max-width:1080px){
  .ppx-menu,.ppx-cta .ppx-btn{display:none}
  .ppx-burger{display:grid}
  .ppx-nav-inner{justify-content:space-between}
  .ppx-cta{margin-left:auto}
}
@media (max-width:860px){
  /* the stacked bar ate the whole screen on phones — its content lives in the
     drawer instead, with a one-tap call button in the header */
  .ppx-topbar{display:none}
  .ppx-call{display:grid}
  .ppx-nav-inner{gap:12px;min-height:72px}
  body.ppx-stuck .ppx-nav-inner{min-height:66px}
  .ppx-brand img{height:36px}
  body.ppx-stuck .ppx-brand img{height:33px}
  .ppx-call,.ppx-burger{width:46px;height:46px}
}
@media (max-width:520px){
  .ppx-wrap{padding:0 18px}
}
