/* ==========================================================================
   The Page Bloom Publishing — premium theme layer
   Loaded after style.css; upgrades the navbar, typography, sections,
   buttons, cards and adds scroll animations across every page.
   ========================================================================== */

/* ==========================================================================
   0. GLOBAL RESET
   ========================================================================== */
*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

:root{
  --np-navy:#023047;
  --np-navy-2:#01283c;
  --np-navy-3:#021c2b;
  --np-gold:#ffb703;
  --np-gold-2:#ffc73d;
  --np-gold-dk:#e6a300;
  --np-ink:#0f1e28;
  --np-body:#4a5b66;
  --np-line:#e6ecf1;
  --np-bg-soft:#f6f9fc;
  --np-white:#fff;
  --np-radius:16px;
  --np-radius-sm:10px;
  --np-shadow-sm:0 4px 16px -6px rgba(2,48,71,.16);
  --np-shadow:0 18px 45px -22px rgba(2,48,71,.45);
  --np-shadow-lg:0 30px 70px -30px rgba(2,48,71,.55);
  --np-ease:cubic-bezier(.22,.61,.36,1);
  --np-nav-h:100px;
}

/* ==========================================================================
   1. NAVBAR
   ========================================================================== */

header.npnav-header{
  position:sticky;
  top:0;
  z-index:1000;
  background:rgba(255,255,255,.92);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid rgba(2,48,71,.08);
  font-family:'Poppins',sans-serif;
  transition:box-shadow .3s var(--np-ease), background .3s var(--np-ease);
  animation:none !important;   /* kill legacy .sticky keyframe replay */
}
header.npnav-header.sticky{
  position:sticky;
  box-shadow:0 10px 30px -18px rgba(2,48,71,.4);
  background:rgba(255,255,255,.97);
}

.npnav-inner{
  max-width:1280px;
  margin:0 auto;
  padding:0 24px;
  height:var(--np-nav-h);
  display:flex;
  align-items:center;
  gap:22px;
}

/* Brand ------------------------------------------------------------------ */
.npnav-brand{display:flex;align-items:center;flex:0 0 auto;}
.npnav-brand img{
  /* the source PNG is a 200x200 square with built-in padding, so it needs a
     larger box than a horizontal lockup would to read at the same size */
  width:auto;height:76px;display:block;
  transition:transform .3s var(--np-ease);
}
.npnav-brand:hover img{transform:scale(1.04);}

/* List ------------------------------------------------------------------- */
.npnav{margin-left:auto;}
.npnav-list{
  display:flex;
  align-items:center;
  gap:4px;
  list-style:none;
  margin:0;
  padding:0;
}
.npnav-list > li{position:relative;}
.npnav-list > li > a{
  display:flex;
  align-items:center;
  gap:7px;
  padding:10px 14px;
  border-radius:999px;
  color:var(--np-navy);
  font-size:15px;
  font-weight:600;
  letter-spacing:.1px;
  line-height:1.2;
  white-space:nowrap;
  text-decoration:none;
  transition:color .22s var(--np-ease), background .22s var(--np-ease);
}
.npnav-list > li > a:hover,
.npnav-list > li > a:focus-visible{
  color:var(--np-navy);
  background:rgba(255,183,3,.16);
  text-decoration:none;
}
/* animated underline */
.npnav-list > li > a::after{
  content:"";
  position:absolute;
  left:14px;right:14px;bottom:2px;
  height:2px;
  background:var(--np-gold);
  border-radius:2px;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .3s var(--np-ease);
}
.npnav-list > li > a:hover::after{transform:scaleX(1);}

.npnav-list > li.npnav-active > a{color:var(--np-navy);background:rgba(255,183,3,.2);}
.npnav-list > li.npnav-active > a::after{transform:scaleX(1);}

.npnav-list > li > a i.fa-chevron-down{
  font-size:10px;
  transition:transform .3s var(--np-ease);
  opacity:.7;
}
.npnav-has-children:hover > a i.fa-chevron-down{transform:rotate(180deg);}

/* Dropdown --------------------------------------------------------------- */
.npnav-sub{
  position:absolute;
  top:calc(100% + 12px);
  left:50%;
  transform:translateX(-50%) translateY(10px);
  min-width:278px;
  list-style:none;
  margin:0;
  padding:10px;
  background:var(--np-white);
  border:1px solid var(--np-line);
  border-radius:14px;
  box-shadow:var(--np-shadow);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .25s var(--np-ease), transform .25s var(--np-ease), visibility .25s;
  z-index:1001;
}
/* hover bridge so the menu doesn't close in the gap */
.npnav-has-children::before{
  content:"";
  position:absolute;
  top:100%;left:0;right:0;height:14px;
}
.npnav-has-children:hover > .npnav-sub,
.npnav-has-children:focus-within > .npnav-sub{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translateX(-50%) translateY(0);
}
.npnav-sub li{margin:0;padding:0;display:block;}
.npnav-sub li a{
  display:flex;
  align-items:center;
  gap:11px;
  padding:11px 14px;
  border-radius:10px;
  color:var(--np-navy);
  font-size:14.5px;
  font-weight:500;
  line-height:1.35;
  white-space:nowrap;
  text-decoration:none;
  transition:background .2s var(--np-ease), color .2s var(--np-ease), transform .2s var(--np-ease);
}
.npnav-sub li a i{
  width:18px;
  font-size:13px;
  color:var(--np-gold-dk);
  transition:color .2s var(--np-ease);
}
.npnav-sub li a:hover{
  background:var(--np-navy);
  color:#fff;
  transform:translateX(3px);
  text-decoration:none;
}
.npnav-sub li a:hover i{color:var(--np-gold);}

/* CTA -------------------------------------------------------------------- */
.npnav-cta{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:9px;
  padding:12px 24px;
  border-radius:999px;
  background:var(--np-gold);
  color:var(--np-navy);
  font-size:14.5px;
  font-weight:700;
  white-space:nowrap;
  text-decoration:none;
  box-shadow:0 10px 24px -12px rgba(255,183,3,.9);
  transition:transform .25s var(--np-ease), box-shadow .25s var(--np-ease), background .25s var(--np-ease);
}
.npnav-cta:hover{
  background:var(--np-gold-2);
  color:var(--np-navy);
  transform:translateY(-2px);
  box-shadow:0 16px 32px -14px rgba(255,183,3,1);
  text-decoration:none;
}
.npnav-cta-mobile{display:none;}

/* Hamburger — mobile only ------------------------------------------------ */
.npnav-toggle{
  display:none;
  margin-left:auto;
  width:46px;height:46px;
  padding:0;
  border:1px solid rgba(2,48,71,.14);
  border-radius:12px;
  background:#fff;
  cursor:pointer;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  transition:background .2s var(--np-ease), border-color .2s var(--np-ease);
}
.npnav-toggle span{
  display:block;
  width:20px;height:2px;
  background:var(--np-navy);
  border-radius:2px;
  transition:transform .3s var(--np-ease), opacity .2s var(--np-ease);
}
.npnav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.npnav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
.npnav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

.npnav-sub-toggle{display:none;}
.npnav-backdrop{display:none;}

/* Kill the legacy hamburger/menu rules that used to leak onto desktop */
header.npnav-header .hamburger,
header.npnav-header .hamburger-container,
header.npnav-header .hamburger-init{display:none !important;}

/* --- Tablet / mobile ---------------------------------------------------- */
@media (max-width:1100px){
  .npnav-list > li > a{padding:10px 11px;font-size:14.5px;}
  .npnav-cta{padding:11px 18px;font-size:14px;}
  .npnav-inner{gap:14px;padding:0 18px;}
}

@media (max-width:991px){
  :root{--np-nav-h:84px;}

  .npnav-toggle{display:flex;}
  .npnav-cta{display:none;}
  .npnav-cta-mobile{display:block;margin-top:10px;}
  .npnav-cta-mobile a{
    display:block;
    text-align:center;
    background:var(--np-gold);
    color:var(--np-navy) !important;
    font-weight:700;
    padding:14px 20px;
    border-radius:999px;
  }
  .npnav-cta-mobile a::after{display:none;}

  .npnav-brand img{height:62px;}

  .npnav{
    position:fixed;
    top:var(--np-nav-h);
    right:0;
    width:min(340px,88vw);
    height:calc(100vh - var(--np-nav-h));
    margin:0;
    padding:18px 18px 40px;
    background:#fff;
    border-left:1px solid var(--np-line);
    box-shadow:-20px 0 50px -30px rgba(2,48,71,.6);
    overflow-y:auto;
    overscroll-behavior:contain;
    transform:translateX(102%);
    transition:transform .38s var(--np-ease);
    z-index:1002;
  }
  body.npnav-open .npnav{transform:translateX(0);}

  .npnav-backdrop{
    display:block;
    position:fixed;
    inset:var(--np-nav-h) 0 0 0;
    background:rgba(2,28,43,.45);
    opacity:0;
    pointer-events:none;
    transition:opacity .3s var(--np-ease);
    z-index:1001;
  }
  body.npnav-open .npnav-backdrop{opacity:1;pointer-events:auto;}
  body.npnav-open{overflow:hidden;}

  .npnav-list{display:block;gap:0;}
  .npnav-list > li{border-bottom:1px solid var(--np-line);}
  .npnav-list > li:last-child{border-bottom:0;}
  .npnav-list > li > a{
    padding:15px 6px;
    border-radius:0;
    font-size:16px;
    justify-content:flex-start;
  }
  .npnav-list > li > a::after{display:none;}
  .npnav-list > li > a i.fa-chevron-down{display:none;}

  /* accordion submenu on mobile */
  .npnav-has-children{position:relative;}
  .npnav-has-children::before{display:none;}
  .npnav-sub-toggle{
    display:block;
    position:absolute;
    top:6px;right:0;
    width:44px;height:44px;
    border:0;background:transparent;cursor:pointer;
    border-radius:10px;
  }
  .npnav-sub-toggle::after{
    content:"\f078";
    font-family:"Font Awesome 6 Free";font-weight:900;
    font-size:12px;color:var(--np-navy);
    transition:transform .3s var(--np-ease);
    display:block;
  }
  .npnav-sub-toggle[aria-expanded="true"]::after{transform:rotate(180deg);}

  .npnav-sub{
    position:static;
    transform:none !important;
    min-width:0;
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    box-shadow:none;
    border:0;
    border-radius:0;
    padding:0 0 10px 8px;
    max-height:0;
    overflow:hidden;
    transition:max-height .35s var(--np-ease), padding .35s var(--np-ease);
  }
  .npnav-has-children.npnav-sub-open > .npnav-sub{max-height:640px;}
  .npnav-has-children:hover > .npnav-sub{max-height:0;}
  .npnav-has-children.npnav-sub-open:hover > .npnav-sub{max-height:640px;}
  .npnav-sub li a{padding:11px 10px;font-size:14.5px;}
}

@media (max-width:420px){
  .npnav-inner{padding:0 14px;}
  .npnav-brand img{height:54px;}
}

/* ==========================================================================
   2. SITE-WIDE PREMIUM POLISH
   ========================================================================== */

body{
  font-family:'Poppins',sans-serif;
  color:var(--np-body);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* --- Headings ----------------------------------------------------------- */
.H2-45{
  font-size:clamp(26px,3.2vw,42px) !important;
  line-height:1.22 !important;
  letter-spacing:-.5px;
  font-weight:700 !important;
}
h1.H2-45{font-size:clamp(30px,4vw,50px) !important;}
.P-16{
  font-size:16px !important;
  line-height:1.8 !important;
}

/* --- Inner page hero banners ------------------------------------------- */
.Inner-Page-Banner,
.home-banner-bg-color{
  position:relative;
  background-size:cover !important;
  background-position:center !important;
  overflow:hidden;
}
.Inner-Page-Banner::after,
.home-banner-bg-color::after{
  content:"";
  position:absolute;
  inset:auto 0 0 0;
  height:120px;
  background:linear-gradient(to top,rgba(2,48,71,.55),transparent);
  pointer-events:none;
}
.Inner-Page-Banner .container,
.home-banner-bg-color .container{position:relative;z-index:2;}

/* Service quote form in hero banners */
.np-service-quote-form{
  max-width:390px;
  margin:0 0 0 auto;
  padding:24px;
  border-radius:18px;
  background:rgba(2,28,43,.92);
  border:1px solid rgba(255,255,255,.22);
  box-shadow:0 18px 45px rgba(0,0,0,.28);
}
.np-service-hero-form{display:flex;align-items:flex-start;justify-content:flex-end;}
.np-service-quote-form h2{margin:0 0 6px;color:#fff !important;font-size:24px;line-height:1.2;}
.np-service-quote-form p{margin:0 0 14px;color:#d7e3e9;font-size:13px;line-height:1.5;}
.np-service-quote-form label{display:block;margin:0 0 10px;}
.np-service-quote-form input,
.np-service-quote-form select,
.np-service-quote-form textarea{
  width:100%;padding:11px 13px;border:1px solid rgba(255,255,255,.25);
  border-radius:8px;background:#fff;color:#21313b;font:inherit;font-size:14px;
}
.np-service-quote-form textarea{resize:vertical;min-height:72px;}
.np-service-quote-form button{
  width:100%;padding:12px 16px;border:0;border-radius:999px;
  background:#ffb703;color:#022a40;font-weight:700;cursor:pointer;
}
.np-service-quote-form button:hover{background:#ffc73d;}
.np-service-quote-form input::placeholder,
.np-service-quote-form select::placeholder,
.np-service-quote-form textarea::placeholder{ color:#6b7f8a !important; opacity:1; }
.np-service-quote-form .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;
}
@media (max-width:991px){.np-service-hero-form{display:block;}.np-service-quote-form{margin:28px auto 0;max-width:520px;}}

/* --- Buttons ------------------------------------------------------------ */
.btn-sec a,
a.Bg-White{
  display:inline-flex !important;
  align-items:center;
  gap:9px;
  padding:14px 32px !important;
  border-radius:999px !important;
  font-weight:700 !important;
  letter-spacing:.2px;
  box-shadow:0 12px 28px -14px rgba(0,0,0,.5);
  transition:transform .25s var(--np-ease), box-shadow .25s var(--np-ease), background .25s var(--np-ease), color .25s var(--np-ease);
}
.btn-sec a:hover,
a.Bg-White:hover{
  transform:translateY(-3px);
  box-shadow:0 20px 38px -16px rgba(0,0,0,.55);
  background:var(--np-gold) !important;
  color:var(--np-navy) !important;
  text-decoration:none;
}

/* --- Images ------------------------------------------------------------- */
.img-col-right img,
.Image-book img,
.Home-brand-Img img{
  border-radius:var(--np-radius);
  max-width:100%;
  height:auto;
  transition:transform .5s var(--np-ease), box-shadow .5s var(--np-ease);
}
.img-col-right:hover img,
.Image-book:hover img{
  transform:translateY(-6px) scale(1.012);
  box-shadow:var(--np-shadow-lg);
}

/* --- FAQ accordion (shared np_render_faq_section) ----------------------- */
.np-faq-section{background:var(--np-bg-soft) !important;}
.np-faq-item{
  border:1px solid var(--np-line) !important;
  border-radius:14px !important;
  transition:box-shadow .3s var(--np-ease), border-color .3s var(--np-ease), transform .3s var(--np-ease);
}
.np-faq-item:hover{
  border-color:rgba(255,183,3,.65) !important;
  box-shadow:var(--np-shadow-sm) !important;
  transform:translateY(-2px);
}
.np-faq-item summary{
  position:relative;
  padding-right:34px !important;
  outline:none;
}
.np-faq-item summary::-webkit-details-marker{display:none;}
.np-faq-item summary::after{
  content:"\2b";
  position:absolute;
  right:4px;top:50%;
  transform:translateY(-50%);
  width:24px;height:24px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:rgba(255,183,3,.18);
  color:var(--np-navy);
  font-size:15px;font-weight:700;line-height:1;
  transition:transform .3s var(--np-ease), background .3s var(--np-ease);
}
.np-faq-item[open] summary::after{
  content:"\2212";
  background:var(--np-gold);
  transform:translateY(-50%) rotate(180deg);
}
.np-faq-item[open] > p{animation:npFadeSlide .35s var(--np-ease) both;}

/* --- Bootstrap panel accordions still used on a few pages --------------- */
.panel-group .panel{
  border:1px solid var(--np-line) !important;
  border-radius:14px !important;
  box-shadow:none !important;
  overflow:hidden;
  margin-bottom:12px;
}
.panel-group .panel-heading{background:#fff !important;padding:0 !important;}
.panel-group .panel-title > a{
  display:block;
  padding:18px 22px;
  font-weight:600;
  color:var(--np-navy);
  text-decoration:none;
  transition:background .25s var(--np-ease);
}
.panel-group .panel-title > a:hover{background:rgba(255,183,3,.1);text-decoration:none;}

/* --- Scroll-to-top ------------------------------------------------------ */
#myBtn{
  border-radius:50% !important;
  width:46px;height:46px;
  border:0;
  background:var(--np-navy);
  color:#fff;
  box-shadow:var(--np-shadow);
  transition:transform .25s var(--np-ease), background .25s var(--np-ease);
}
#myBtn:hover{background:var(--np-gold);color:var(--np-navy);transform:translateY(-3px);}

/* ==========================================================================
   3. SCROLL / ENTRANCE ANIMATIONS
   ========================================================================== */

@keyframes npFadeSlide{
  from{opacity:0;transform:translateY(10px);}
  to{opacity:1;transform:translateY(0);}
}

[data-np-reveal]{
  opacity:0;
  transform:translateY(26px);
  transition:opacity .7s var(--np-ease), transform .7s var(--np-ease);
  will-change:opacity,transform;
}
[data-np-reveal].np-in{
  opacity:1;
  transform:none;
}
[data-np-reveal="left"] {transform:translateX(-30px);}
[data-np-reveal="right"]{transform:translateX(30px);}
[data-np-reveal="zoom"] {transform:scale(.94);}
[data-np-reveal="left"].np-in,
[data-np-reveal="right"].np-in,
[data-np-reveal="zoom"].np-in{transform:none;}

/* Stagger children of a revealed row */
[data-np-stagger] > *{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .6s var(--np-ease), transform .6s var(--np-ease);
}
[data-np-stagger].np-in > *{opacity:1;transform:none;}
[data-np-stagger].np-in > *:nth-child(1){transition-delay:.05s;}
[data-np-stagger].np-in > *:nth-child(2){transition-delay:.13s;}
[data-np-stagger].np-in > *:nth-child(3){transition-delay:.21s;}
[data-np-stagger].np-in > *:nth-child(4){transition-delay:.29s;}
[data-np-stagger].np-in > *:nth-child(5){transition-delay:.37s;}
[data-np-stagger].np-in > *:nth-child(6){transition-delay:.45s;}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  [data-np-reveal],[data-np-stagger] > *{opacity:1 !important;transform:none !important;}
}

/* ==========================================================================
   4. MOBILE RESPONSIVENESS
   The legacy theme was built desktop-first with fixed heights and widths.
   Everything below makes those blocks fluid without touching page markup.
   ========================================================================== */

/* --- Universal guards (all breakpoints) --------------------------------- */
img, video, iframe, embed, object, canvas, svg{
  max-width:100%;
}
img, video{height:auto;}

/* Media/embeds keep their aspect ratio instead of squashing */
iframe[src*="youtube"], iframe[src*="vimeo"], iframe[src*="player"]{
  width:100%;
  aspect-ratio:16/9;
  height:auto;
}

/* Long words / URLs must never force a scrollbar */
p, li, h1, h2, h3, h4, h5, h6, td, th, dd, dt, blockquote, figcaption{
  overflow-wrap:break-word;
  word-wrap:break-word;
}

/* Tables scroll inside themselves rather than stretching the page */
table{max-width:100%;}
.np-table-scroll, .table-responsive{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}

/* Fixed-height hero banners become min-height so text can never be clipped.
   Desktop appearance is unchanged whenever the content is shorter. */
section.Inner-Page-Banner,
section.home-banner-bg-color,
section[class*="Inner-Page-Banner"],
.banner{
  height:auto !important;
  overflow:visible;
}
section.Inner-Page-Banner.Single-Book-Printing{min-height:500px;}
section.Inner-Page-Banner.Book-Printing{min-height:450px;}
section.Inner-Page-Banner.Audio-Book-Page{min-height:450px;}
section.Inner-Page-Banner.Editing-Four{min-height:400px;}

/* Hero CTA pairs wrap instead of running off the edge */
.np-hero-cta-row{
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  justify-content:center;
  align-items:center;
}

/* --- Tap targets -------------------------------------------------------- */
.slick-prev, .slick-next{
  width:40px !important;
  height:40px !important;
  z-index:5;
}
.np-service-arrow{
  min-width:40px;
  min-height:40px;
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
}
.np-blog-cat{font-size:12px !important;}

/* ==========================================================================
   Tablet  (<= 991px)
   ========================================================================== */
@media (max-width:991px){

  /* Bootstrap 3 columns already stack here; tighten the rhythm */
  section{padding-left:0;padding-right:0;}
  .container{padding-left:18px;padding-right:18px;}

  section.Inner-Page-Banner,
  section.home-banner-bg-color,
  section[class*="Inner-Page-Banner"]{
    min-height:0 !important;
    padding:70px 0 !important;
    display:block !important;
    text-align:center;
  }
  section.Inner-Page-Banner .btn-sec,
  section.home-banner-bg-color .btn-sec{justify-content:center;display:flex;}

  /* Any section that hard-codes a tall height gets to breathe */
  section[class*="-Second"], section[class*="-Third"], section[class*="-Four"],
  section[class*="-Five"], section[class*="-Six"], section[class*="-Seven"],
  section[class*="-Eight"], section[class*="-Nine"], section[class*="-Ten"]{
    height:auto !important;
    padding:44px 0 !important;
  }

  .img-col-right, .Image-book, .Home-brand-Img{margin:22px 0;}
  .img-col-right img, .Image-book img{width:100%;}

  /* Stacked columns should not keep desktop side padding */
  [class*="col-md-"], [class*="col-lg-"]{
    float:none;
    width:100% !important;
    max-width:100% !important;
  }

  /* A `1fr` track is really `minmax(auto,1fr)`, so one wide child (a table,
     a long URL, a pre block) can push the whole track past the viewport.
     minmax(0,1fr) lets the track shrink properly. */
  .np-post-layout{grid-template-columns:minmax(0,1fr) !important;}
  .np-post-layout > *{min-width:0;}

  /* AOS ships horizontal entrances (fade-left / fade-right / slide-*) that
     translate elements 100px sideways. On a narrow screen that pushes content
     off the edge, and if AOS never fires the offset is permanent. Keep the
     fade, drop the sideways travel. */
  [data-aos][data-aos*="left"],
  [data-aos][data-aos*="right"],
  [data-aos][data-aos*="zoom"],
  [data-aos][data-aos*="flip"]{
    transform:none !important;
  }
  [data-aos]{transform:none !important;}

  /* The legacy theme hard-codes up to six equal grid columns. On a phone each
     track ends up narrower than its own content, so the grid overflows.
     minmax(0,...) also lets the tracks actually shrink. */
  ul.Self-Publsh-Sec,
  ul.Disply-Grid,
  ul[class*="Disply-Grid"],
  .gallery-img{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:20px;
  }
  ul.Self-Publsh-Sec > li,
  ul.Disply-Grid > li{margin-bottom:24px !important;min-width:0;}
}

/* ==========================================================================
   Phone  (<= 767px)
   ========================================================================== */
@media (max-width:767px){

  body{font-size:15px;}

  .H2-45{font-size:clamp(22px,6vw,30px) !important;line-height:1.3 !important;}
  h1.H2-45{font-size:clamp(24px,7vw,34px) !important;}
  .P-16{font-size:15.5px !important;line-height:1.75 !important;}

  section.Inner-Page-Banner,
  section.home-banner-bg-color,
  section[class*="Inner-Page-Banner"]{padding:56px 0 !important;}

  section[class*="-Second"], section[class*="-Third"], section[class*="-Four"],
  section[class*="-Five"], section[class*="-Six"], section[class*="-Seven"],
  section[class*="-Eight"], section[class*="-Nine"], section[class*="-Ten"]{
    padding:36px 0 !important;
  }

  .container{padding-left:16px;padding-right:16px;}

  /* Bootstrap's -15px row gutters push rows past the container edge once the
     columns are stacked. Stacked columns don't need gutters, so drop both. */
  .row{margin-left:0 !important;margin-right:0 !important;}
  [class*="col-md-"], [class*="col-lg-"], [class*="col-sm-"]{
    padding-left:0 !important;
    padding-right:0 !important;
  }

  /* Carousel dots need a real tap area (44px is the accessibility minimum) */
  .slick-dots li{
    width:26px !important;
    height:26px !important;
    display:inline-flex !important;
    align-items:center;
    justify-content:center;
  }
  .slick-dots li button{
    width:26px !important;
    height:26px !important;
    padding:0 !important;
  }
  .slick-dots li button:before{
    width:26px !important;
    height:26px !important;
    line-height:26px !important;
  }

  /* No body copy below 12px on a phone */
  .np-toc ol li.lvl-3 a, .np-blog-cat, small, .small{font-size:12.5px !important;}

  /* Icon grids drop to two columns on a phone */
  ul.Self-Publsh-Sec,
  ul.Disply-Grid,
  ul[class*="Disply-Grid"],
  .gallery-img{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:16px;
  }
  ul.Self-Publsh-Sec > li img,
  ul.Disply-Grid > li img{max-width:56px;height:auto;}

  /* Buttons go full width so they are easy to hit */
  .btn-sec{display:flex;flex-direction:column;gap:12px;align-items:stretch;}
  .btn-sec a, a.Bg-White{
    width:100%;
    justify-content:center;
    padding:14px 20px !important;
    font-size:15px !important;
  }

  /* Forms: 16px input text stops iOS from zooming on focus */
  input, select, textarea{
    width:100% !important;
    max-width:100% !important;
    font-size:16px !important;
    padding:12px 14px !important;
    border-radius:10px !important;
    box-sizing:border-box;
  }
  textarea{min-height:120px;}
  input[type="submit"], button[type="submit"]{
    width:100% !important;
    padding:14px !important;
    font-size:16px !important;
  }
  form{max-width:100%;height:auto !important;}

  /* Grids collapse to one column */
  ul.Disply-Grid, ul[class*="Disply-Grid"]{
    display:grid !important;
    grid-template-columns:1fr !important;
    padding-left:0;
  }

  /* FAQ text scale */
  .np-faq-item summary{font-size:16px !important;}
  .np-faq-item > p{font-size:15px !important;}
  .np-faq-section{padding:40px 0 !important;}
  .np-faq-section .col-md-10{padding-left:0;padding-right:0;}

  /* Bootstrap accordions */
  .panel-group .panel-title > a{padding:15px 16px;font-size:15.5px;}

  /* Wide tables scroll inside themselves instead of stretching the page.
     No `white-space:nowrap` here - it gives the table a huge min-content
     width, which blows out any CSS grid track that contains it. */
  table{
    display:block;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    max-width:100%;
  }

  /* Kill decorative absolute art that has nowhere to go on a phone */
  .shaking-image{animation:none !important;}

  /* Carousel controls must sit inside the viewport, not beyond its edges */
  .slick-slider{position:relative;}
  .slick-prev{left:4px !important;}
  .slick-next{right:4px !important;}
  .slick-prev, .slick-next{
    top:50% !important;
    transform:translateY(-50%) !important;
  }
  .slick-dots{
    width:100% !important;
    left:0 !important;
    margin:0 !important;
    padding:0 !important;
    display:flex !important;
    justify-content:center;
    flex-wrap:wrap;
    gap:4px;
  }
  .slick-dots li{margin:0 !important;}
}

/* ==========================================================================
   Small phone  (<= 420px)
   ========================================================================== */
@media (max-width:420px){
  .container{padding-left:14px;padding-right:14px;}
  .H2-45{font-size:clamp(20px,6.4vw,26px) !important;}
  section.Inner-Page-Banner,
  section.home-banner-bg-color,
  section[class*="Inner-Page-Banner"]{padding:46px 0 !important;}
}

/* ==========================================================================
   5. LEGACY OVERRIDES / CLEANUP
   ========================================================================== */

/* the old theme pulled the footer up under the last section */
footer{margin-top:0 !important;}

/* style.css sets `form { height:535px }` globally, which leaves a huge empty
   box under every form on the site. Forms size to their content instead. */
form{height:auto !important;}

/* X logo ships as an inline SVG - fa-x-twitter only exists in
   Font Awesome >= 6.4.2 and the site loads 6.2.0. */
.npf-x-icon{
  width:1em;height:1em;
  display:inline-block;
  vertical-align:-.125em;
  fill:currentColor;
}
.np-footer .npf-socials .npf-x-icon{width:16px;height:16px;}

/* legacy nav rules that no longer have matching markup */
.top-head{display:none !important;}

html{scroll-behavior:smooth;}
img{max-width:100%;}

::selection{background:var(--np-gold);color:var(--np-navy);}

/* ==========================================================================
   6. MISSING SECTION STYLES — inner pages
   ========================================================================== */

/* Hero banners (dark navy) */
.Publishing-Partner-Page-First,
.home-banner-bg-color.Publishing-Partner-Page-First {
  background-color: var(--np-navy);
  padding: 80px 0;
}

/* Alternating content sections — About Us, Publishing Partner */
.About-Us-Second,
.Single-Book-Printing-Third,
.Single-Book-Printing-Five {
  background-color: var(--np-navy-2);
  padding: 60px 0;
}

.Publishing-Partner-Page-Four,
.Single-Book-Printing-Four {
  background-color: var(--np-navy-3);
  padding: 60px 0;
}

/* Display Ads / service content sections */
.Display-Ads-Second,
.Display-Ads-Four {
  background-color: var(--np-navy-2);
  padding: 60px 0;
}

.Display-Ads-First {
  background-color: var(--np-navy-3);
  padding: 60px 0;
}

.Display-Ads-Third {
  background-color: var(--np-navy);
  padding: 60px 0;
}

/* Home sections */
.Home-Seven {
  background-color: var(--np-navy-2);
  padding: 60px 0;
}

.Home-Fiv {
  background-color: var(--np-navy-3);
  padding: 60px 0;
}

.Home-Four1 {
  background-color: var(--np-navy);
  padding: 60px 0;
}

/* Testimonials section */
.Single-Book-Printing-Seven {
  background-color: #000;
  padding: 60px 0;
}

.Single-Book-Printing-Seven .Testimonials-Main-Sec {
  text-align: center;
  margin-bottom: 40px;
}

/* ==========================================================================
   7. SLIDER FIXES
   ========================================================================== */

/* Slick needs the track to be visible — the global reset zeroes padding
   which can collapse the slider. Restore slick's required layout. */
.slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  user-select: none;
  touch-action: pan-y;
}
.slick-list {
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0;
}
.slick-track {
  position: relative;
  left: 0;
  top: 0;
  display: block;
}
.slick-slide {
  display: none;
  float: left;
  height: 100%;
  min-height: 1px;
}
.slick-initialized .slick-slide {
  display: block;
}

/* Testimonials slider inner card padding */
.Testimonails-inner {
  padding: 30px 40px;
}

/* Book slider (portfolio page) */
.Testimonials-Slider .container-fluid {
  padding: 40px 20px;
}

/* Slick dots position fix */
.slick-dots {
  position: relative;
  bottom: auto;
  margin-top: 20px;
  list-style: none;
  text-align: center;
  padding: 0;
}
.slick-dots li {
  display: inline-block;
  margin: 0 4px;
}
.slick-dots li button {
  font-size: 0;
  width: 12px;
  height: 12px;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: rgba(255,255,255,0.4);
  cursor: pointer;
}
.slick-dots li.slick-active button {
  background: var(--np-gold);
}

/* Swing book animation fix — reset zeroed the figure margin */
figure.swing {
  margin: 25px !important;
  position: relative;
  display: inline-block;
}

/* pub-wid flex layout */
.pub-wid {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 10px 0;
}

/* ==========================================================================
   8. PREMIUM SERVICE HERO BANNER DESIGN
   ========================================================================== */
.np-sh-hero {
  position: relative;
  min-height: 600px;
  display: flex;
  align-items: center;
  background: linear-gradient(145deg, #011824 0%, #023047 45%, #034a6b 100%);
  overflow: hidden;
  padding: 100px 0 80px;
}
.np-sh-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="60" height="60"><circle cx="30" cy="30" r="1" fill="rgba%28255,255,255,0.03%29"/></svg>') repeat;
  z-index: 0;
}
.np-sh-hero::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 120px;
  background: linear-gradient(to top, rgba(2, 48, 71, .6), transparent);
  pointer-events: none;
  z-index: 1;
}

/* Animated blobs */
.np-sh-blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  opacity: .2;
  pointer-events: none;
}
.np-sh-blob-1 {
  width: 500px;
  height: 500px;
  background: #ffb703;
  top: -150px;
  right: -100px;
  animation: npShBlob 8s ease-in-out infinite alternate;
}
.np-sh-blob-2 {
  width: 350px;
  height: 350px;
  background: #034a6b;
  bottom: -120px;
  left: -60px;
  animation: npShBlob 7s ease-in-out infinite alternate-reverse;
}
.np-sh-blob-3 {
  width: 200px;
  height: 200px;
  background: #ffb703;
  bottom: 25%;
  right: 35%;
  animation: npShBlob 9s ease-in-out infinite alternate;
  opacity: .12;
}
@keyframes npShBlob {
  0% { transform: translate(0, 0) scale(1); }
  100% { transform: translate(25px, 18px) scale(1.06); }
}

.np-sh-hero .container {
  position: relative;
  z-index: 2;
}

/* Hero grid */
.np-sh-hero-grid {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 48px;
  align-items: center;
}

/* Left content */
.np-sh-hero-content {
  animation: npShFadeUp .7s ease both .15s;
}
.np-sh-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 16px;
  border-radius: 999px;
  background: rgba(255, 183, 3, .14);
  border: 1px solid rgba(255, 183, 3, .3);
  color: #ffb703;
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 22px;
  backdrop-filter: blur(8px);
}
.np-sh-hero-badge i {
  font-size: 11px;
}
.np-sh-hero h1 {
  font-family: 'Poppins', sans-serif;
  font-size: clamp(28px, 3.5vw, 48px);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -.5px;
  color: #fff;
  margin-bottom: 20px;
  text-wrap: balance;
}
.np-sh-hero h1 .np-sh-accent {
  color: #ffb703;
}
.np-sh-hero-sub {
  font-family: 'Poppins', sans-serif;
  font-size: 16.5px;
  line-height: 1.75;
  color: rgba(255, 255, 255, .78);
  margin-bottom: 32px;
  max-width: 540px;
}

/* CTA buttons */
.np-sh-hero-actions {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 36px;
}
.np-sh-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 30px;
  border-radius: 999px;
  font-family: 'Poppins', sans-serif;
  font-weight: 700;
  font-size: 15px;
  transition: all .28s cubic-bezier(.4, 0, .2, 1);
  cursor: pointer;
  border: 2px solid transparent;
  text-decoration: none;
}
.np-sh-btn-gold {
  background: #ffb703;
  color: #0b1b2b;
}
.np-sh-btn-gold:hover {
  background: #e6a302;
  color: #0b1b2b;
  transform: translateY(-2px);
  box-shadow: 0 12px 30px -10px rgba(255, 183, 3, .45);
  text-decoration: none;
}
.np-sh-btn-outline {
  background: transparent;
  border-color: rgba(255, 255, 255, .35);
  color: #fff;
}
.np-sh-btn-outline:hover {
  background: rgba(255, 255, 255, .1);
  border-color: rgba(255, 255, 255, .6);
  color: #fff;
  text-decoration: none;
}

/* Trust bar */
.np-sh-hero-trust {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
}
.np-sh-trust-stars {
  display: flex;
  gap: 4px;
  color: #ffb703;
  font-size: 14px;
}
.np-sh-trust-text {
  color: rgba(255, 255, 255, .75);
  font-size: 13px;
  font-family: 'Poppins', sans-serif;
}

/* Right form column */
.np-sh-hero-form-col {
  display: flex;
  justify-content: flex-end;
  align-items: flex-start;
  animation: npShFadeIn .8s ease both .4s;
}
.np-sh-hero-form-col .np-service-quote-form {
  max-width: 400px;
  width: 100%;
  padding: 28px 24px;
  border-radius: 20px;
  background: rgba(2, 28, 43, .88);
  border: 1px solid rgba(255, 255, 255, .12);
  box-shadow: 0 24px 60px -16px rgba(0, 0, 0, .45);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

/* Feature pills under form */
.np-sh-form-features {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 16px;
  justify-content: center;
}
.np-sh-form-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border-radius: 999px;
  background: rgba(255, 183, 3, .1);
  border: 1px solid rgba(255, 183, 3, .2);
  color: #ffb703;
  font-size: 11.5px;
  font-weight: 600;
  font-family: 'Poppins', sans-serif;
}
.np-sh-form-pill i {
  font-size: 10px;
}

/* Animations */
@keyframes npShFadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes npShFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* Responsive */
@media(max-width: 991px) {
  .np-sh-hero-grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }
  .np-sh-hero-form-col {
    justify-content: center;
  }
  .np-sh-hero-form-col .np-service-quote-form {
    max-width: 520px;
    margin: 0 auto;
  }
  .np-sh-hero {
    padding: 90px 0 60px;
  }
}
@media(max-width: 600px) {
  .np-sh-hero-actions {
    flex-direction: column;
  }
  .np-sh-btn {
    justify-content: center;
    width: 100%;
  }
  .np-sh-hero {
    padding: 80px 0 50px;
    min-height: auto;
  }
}

