/* ==========================================================================
   PAGE LOADER — animated TechWyse logo shown until window.load.
   Markup: includes/class-page-loader.php · behaviour: assets/js/techwyse-page-loader.js
   ========================================================================== */
.twrb-pl{
  position:fixed;inset:0;z-index:2147483000;
  display:flex;align-items:center;justify-content:center;
  margin:0;padding:0;background:#FFFFFF;
  opacity:1;visibility:visible;
  transition:opacity .45s ease,visibility 0s linear .45s;
  /* Fail-safe: never trap the page if the script does not run. */
  animation:twrb-pl-out .45s ease 10s forwards;
}
.twrb-pl.is-done{opacity:0;visibility:hidden;pointer-events:none}
.twrb-pl *,.twrb-pl *::before,.twrb-pl *::after{box-sizing:border-box}
.twrb-pl__box{display:flex;flex-direction:column;align-items:center;gap:18px}

/* Mark: roof chevron draws in / out, green dot drops and bounces. */
.twrb-pl__mark{display:block;width:120px;height:auto;overflow:visible}
.twrb-pl__roof{
  fill:none;stroke:#1E3F93;stroke-width:66;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:100;stroke-dashoffset:100;
  animation:twrb-pl-roof 1.9s cubic-bezier(.65,0,.35,1) infinite;
}
.twrb-pl__dot{
  fill:#8CC63E;transform-box:fill-box;transform-origin:50% 50%;
  animation:twrb-pl-dot 1.9s ease-in-out infinite;
}

/* Wordmark: the TechWyse / Internet Marketing lines cropped out of the full logo. */
.twrb-pl__word{
  position:relative;display:block;width:200px;aspect-ratio:1480/337;overflow:hidden;
  opacity:0;animation:twrb-pl-fade .5s ease .15s forwards;
}
.twrb-pl__word img{
  position:absolute;left:-8.446%;top:-158.16%;
  width:118.243%;max-width:none;height:auto;margin:0;border:0;
}

/* Indeterminate progress bar. */
.twrb-pl__bar{position:relative;display:block;width:160px;height:3px;margin-top:4px;border-radius:3px;background:#E4E8EE;overflow:hidden}
.twrb-pl__bar::after{
  content:"";position:absolute;top:0;bottom:0;left:0;width:40%;border-radius:3px;background:#8CC63E;
  animation:twrb-pl-bar 1.2s ease-in-out infinite;
}

@keyframes twrb-pl-roof{
  0%{stroke-dashoffset:100}
  40%,72%{stroke-dashoffset:0}
  100%{stroke-dashoffset:-100}
}
@keyframes twrb-pl-dot{
  0%,18%{transform:translateY(-190%) scale(.6);opacity:0}
  40%{transform:translateY(0) scale(1);opacity:1}
  48%{transform:translateY(-22%) scale(1)}
  56%,78%{transform:translateY(0) scale(1);opacity:1}
  100%{transform:translateY(0) scale(.4);opacity:0}
}
@keyframes twrb-pl-fade{to{opacity:1}}
@keyframes twrb-pl-bar{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}
@keyframes twrb-pl-out{to{opacity:0;visibility:hidden;pointer-events:none}}

@media (max-width:767.98px){
  .twrb-pl__mark{width:96px}
  .twrb-pl__word{width:168px}
}

@media (prefers-reduced-motion:reduce){
  .twrb-pl__roof,.twrb-pl__dot,.twrb-pl__word,.twrb-pl__bar::after{animation:none}
  .twrb-pl__roof{stroke-dashoffset:0}
  .twrb-pl__word{opacity:1}
  .twrb-pl__bar::after{left:30%}
}
