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

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

/* --- 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);}
