/* ============================================================================
   PUROHITAM — style.css
   ----------------------------------------------------------------------------
   This single stylesheet is shared by all 9 HTML pages (linked as
   assets/css/style.css). It is organised top-to-bottom in the order things
   appear on the page. Use Ctrl+F / Cmd+F and search for a heading in the
   TABLE OF CONTENTS below to jump straight to what you want to edit.

   TABLE OF CONTENTS
   ------------------------------------------------------------------------
   1.  Root color variables + base tags        (search: ":root")
   2.  Preloader (full-page loading screen)     (search: "PRELOADER")
   3.  Top strip (dark bar above the navbar)    (search: "TOP STRIP")
   4.  Navbar + PRO badge + hamburger           (search: "NAVBAR")
   5.  Global button system (shine/gradient)    (search: "BUTTON SYSTEM")
   6.  Offcanvas side menu (mobile nav drawer)  (search: "OFFCANVAS")
   7.  Hero section                             (search: "HERO")
   8.  Trust strip (icon row under hero)        (search: "TRUST STRIP")
   9.  Section heading style (eyebrow + title)  (search: "SECTION HEADING")
   10. Puja cards + their slider                (search: "PUJA CARDS")
   11. Booking form section (dark CTA form)     (search: "BOOKING FORM")
   12. Testimonials slider                      (search: "TESTIMONIALS")
   13. CTA banner (orange call-to-action strip) (search: "CTA BANNER")
   14. Stats counter strip                      (search: "STATS")
   15. Page banner (used on every inner page)   (search: "PAGE BANNER")
   16. Services listing page                    (search: "SERVICES GRID PAGE")
   17. Service details page                     (search: "SERVICE DETAILS")
   18. Footer                                    (search: "FOOTER")
   19. Back-to-top + WhatsApp floating buttons   (search: "FLOATING BUTTONS")
   20. About / Pandit Ji / How-it-Works / Blog / Contact page styles
                                                  (search: "ADDITIONAL PAGE STYLES")
   21. Pagination, form focus ring, misc polish (search: "PREMIUM PAGINATION")
   22. Premium success/error popup              (search: "PREMIUM STATUS POPUP")
   23. Responsive helpers scattered throughout   (search: "@media")

   COLOR PALETTE — change a value below and it updates EVERYWHERE that
   color is used on the site (all colors are referenced as var(--name)).
   ============================================================================ */
:root{
  --cream:#FDF3E7;        /* light warm background (used behind some sections) */
  --cream-light:#FFF9F2;  /* even lighter background (hero, testimonials, etc.) */
  --orange:#E8720C;       /* PRIMARY brand color — buttons, links, icons        */
  --orange-dark:#C85D06;  /* darker orange — hover states, gradient end color   */
  --orange-light:#FCEADA; /* pale orange — icon circle backgrounds              */
  --text-dark:#2B2118;    /* main body text color                              */
  --text-muted:#6B5D52;   /* secondary/lighter text (descriptions, labels)     */
  --gold:#F5A623;         /* accent gold — stars, PRO badge, decorative touches */
  --maroon:#7A1F1F;       /* deep accent (rarely used directly)                */
  --font-heading:'Cormorant Garamond', serif; /* premium serif used for all headings/titles — body text stays on Poppins for readability, see the h1-h6 + heading-class rule below */
}

*{ scroll-behavior:smooth; } /* clicking an in-page link (e.g. #booking) scrolls smoothly */
body{
  font-family:'Poppins', sans-serif; /* body font — loaded from Google Fonts in <head> */
  color:var(--text-dark);
  background:#fff;
  /* NOTE: deliberately NOT setting overflow-x:hidden here. Any `overflow`
     value on <body> (even overflow-x alone) breaks position:sticky for
     the navbar in several browsers, because it changes which element is
     treated as the page's scrolling container. Every section that has a
     decorative element poking outside its box (glows, watermarks, etc.)
     already clips it locally with its own overflow:hidden instead — see
     .hero-section, .page-banner, .site-footer, .testimonial-section-v2,
     .ptm-search-hero, .cta-banner, .top-strip. */
}
.devanagari{ font-family:'Noto Sans Devanagari', sans-serif; } /* used for Hindi/Sanskrit lines */
a{ text-decoration:none; }

/* ============================================================================
   PREMIUM HEADING FONT
   ----------------------------------------------------------------------------
   Every heading tag (h1-h6) plus the handful of heading-styled elements
   that aren't literal <h*> tags (the navbar brand name, puja/pandit/blog
   card names, testimonial names, etc.) switch to the elegant serif
   'Cormorant Garamond' instead of Poppins — body text, buttons, labels,
   and paragraphs all stay on Poppins for clean readability. This one rule
   is what gives the whole site its more premium, editorial feel; change
   --font-heading in :root above to try a different pairing everywhere.
   ============================================================================ */
h1, h2, h3, h4, h5, h6,
.navbar-purohitam .brand-name, .offcanvas-premium .brand-name, .footer-logo,
.hero-heading, .section-title, .section-title-light, .ptm-search-title,
.puja-card .puja-name, .pandit-card .name, .blog-card h5,
.testi-mini-name, .testimonial-card .name, .mission-card h5,
.stat-item .num, .price-tag, .booking-card h4, .contact-form-card h4,
.hiw-step h5, .timeline-item h6, .process-step h6, .value-row h6{
  font-family:var(--font-heading);
  font-weight:700;
  letter-spacing:.2px;
}

/* ===== Fluid containers ===== */
/* Bootstrap's .container caps out around 1140-1320px by default — these two
   rules widen it further on very large / ultra-wide monitors so the layout
   doesn't look cramped in the middle of a big screen. */
@media(min-width:1400px){ .container, .container-xl{ max-width:1280px; } }
@media(min-width:1600px){ .container, .container-xl{ max-width:1360px; } }

/* ============================================================================
   PRELOADER — full-screen loading animation shown while the page's images,
   fonts, and CSS are still loading. Fades out via main.js (see the "hide"
   class toggle in main.js SECTION 1) once window "load" fires.

   Design: a rotating "diya" (oil lamp) motif — an outer ring rotates one
   way, an inner ring rotates the other way, with a flame icon breathing in
   the middle and the brand name fading in/out underneath. Feels on-theme
   for a puja-booking site instead of a generic spinner.
   ============================================================================ */
#preloader{
  position:fixed;
  top:0; left:0; right:0; bottom:0; /* explicit offsets — more broadly supported than the inset shorthand alone */
  width:100%; height:100%;
  z-index:9999;
  margin:0; padding:0;
  background:var(--cream-light);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .5s ease, visibility .5s ease;
}
#preloader.hide{ opacity:0; visibility:hidden; } /* main.js adds this class on window load */

.ptm-loader{
  display:flex; flex-direction:column; align-items:center; gap:18px;
}
.ptm-loader-rings{
  position:relative; width:96px; height:96px;
}
/* outer ring — thin, rotates clockwise */
.ptm-loader-rings::before{
  content:''; position:absolute; inset:0; border-radius:50%;
  border:3px solid var(--orange-light);
  border-top-color:var(--orange);
  border-right-color:var(--orange);
  animation:ptmSpinCW 1.4s linear infinite;
}
/* inner ring — thicker, rotates counter-clockwise, slightly smaller */
.ptm-loader-rings::after{
  content:''; position:absolute; inset:14px; border-radius:50%;
  border:3px solid transparent;
  border-bottom-color:var(--gold);
  border-left-color:var(--gold);
  animation:ptmSpinCCW 1.8s linear infinite;
}
.ptm-loader-flame{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:var(--orange); font-size:1.6rem;
  animation:ptmFlameBreathe 1.6s ease-in-out infinite;
}
@keyframes ptmSpinCW{ to{ transform:rotate(360deg); } }
@keyframes ptmSpinCCW{ to{ transform:rotate(-360deg); } }
@keyframes ptmFlameBreathe{
  0%,100%{ transform:scale(1); opacity:1; }
  50%{ transform:scale(1.15); opacity:.75; }
}
.ptm-loader-text{
  font-family:'Noto Sans Devanagari', sans-serif;
  color:var(--orange-dark); font-weight:600; font-size:.85rem; letter-spacing:2px;
  text-transform:uppercase; animation:ptmTextFade 1.6s ease-in-out infinite;
}
@keyframes ptmTextFade{
  0%,100%{ opacity:.45; } 50%{ opacity:1; }
}

/* ============================================================================
   TOP STRIP — the thin dark bar above the main navbar (hours, email, app
   download buttons, social icons). Has an animated diagonal "sheen" sweep
   for a premium touch (see .top-strip::before).
   ============================================================================ */
/* ===== Top strip (premium header) ===== */
.top-strip{
  background:linear-gradient(90deg,#241710,#3a2214 45%,#241710);
  color:#e9d9c7;
  font-size:.82rem;
  padding:8px 0;
  position:relative;
  overflow:hidden;
}
.top-strip::before{
  content:''; position:absolute; inset:0;
  background:linear-gradient(90deg,transparent,rgba(232,114,12,.18),transparent);
  animation:stripSheen 6s linear infinite;
}
@keyframes stripSheen{ 0%{ transform:translateX(-100%);} 100%{ transform:translateX(100%);} }
.top-strip .devanagari{ color:var(--gold); letter-spacing:.3px; position:relative; z-index:1; }
/* Shlok is now visible on every screen size (including phones) — shrink
   it a touch on very small screens so it never wraps to two lines. */
/* This flex item needs min-width:0 — without it, a flex child containing
   nowrap text refuses to shrink below its own text's natural width (a
   classic flexbox gotcha), which was silently making the ENTIRE PAGE
   wider than the phone's screen and causing horizontal body scroll (and,
   as a side effect, made the fixed-position preloader look off-center,
   since it was centering against that oversized page instead of the
   visible screen). min-width:0 lets it actually shrink and hand off to
   overflow:hidden + text-overflow:ellipsis below instead. */
.ptm-shlok{ font-size:clamp(.68rem, 2.6vw, .85rem); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; min-width:0; flex-shrink:1; }
.top-strip .divider{ width:1px; height:14px; background:rgba(255,255,255,.2); margin:0 14px; }
.top-strip .mini-link{ color:#e9d9c7; font-size:.8rem; display:flex; align-items:center; gap:6px; position:relative; z-index:1; }
.top-strip .mini-link i{ color:var(--gold); }
.top-strip .btn-store{
  background:rgba(255,255,255,.08); color:#fff; border:1px solid rgba(255,255,255,.15);
  border-radius:6px; padding:4px 12px; font-size:.72rem; line-height:1.1;
  transition:.25s; position:relative; z-index:1;
}
.top-strip .btn-store:hover{ background:var(--orange); border-color:var(--orange); transform:translateY(-2px); }
.top-strip .social-icon{
  color:#e9d9c7; font-size:.9rem; margin-left:10px; transition:.25s;
  width:28px;height:28px;border-radius:50%; background:rgba(255,255,255,.06);
  display:inline-flex; align-items:center; justify-content:center; position:relative; z-index:1;
}
.top-strip .social-icon:hover{ color:#fff; background:var(--orange); transform:translateY(-3px); }

/* ============================================================================
   NAVBAR — logo, PRO badge, desktop menu (hidden below 1400px on purpose —
   see the "d-none d-xxl-flex" classes in the HTML, this avoids the menu
   text wrapping/squeezing on 14"-16" laptop screens), and the hamburger
   button that opens the offcanvas side menu on everything narrower.
   ============================================================================ */
.navbar-purohitam{
  padding:14px 0;
  box-shadow:0 2px 10px rgba(0,0,0,.05);
  transition:padding .3s ease, box-shadow .3s ease;
  position:relative; /* anchors the animated underline below */
}
.navbar-purohitam.scrolled{ padding:8px 0; box-shadow:0 6px 20px rgba(0,0,0,.1); }

/* Always-on animated accent line along the very bottom edge of the navbar
   — a slow shimmering gradient that never stops, giving the header a
   subtle "alive" premium feel even when nobody is interacting with it. */
.navbar-purohitam::after{
  content:''; position:absolute; left:0; bottom:0; width:100%; height:2.5px;
  background:linear-gradient(90deg,
    transparent 0%, var(--gold) 20%, var(--orange) 40%,
    var(--orange-dark) 50%, var(--orange) 60%, var(--gold) 80%, transparent 100%);
  background-size:200% 100%;
  animation:navAccentShimmer 4s linear infinite;
}
@keyframes navAccentShimmer{
  0%{ background-position:200% 0; }
  100%{ background-position:-200% 0; }
}

.navbar-purohitam .logo-icon{
  width:52px;height:52px; background:var(--orange-light); border:2px solid var(--orange);
  border-radius:50%; display:flex;align-items:center;justify-content:center; color:var(--orange);
  font-size:1.3rem; animation:flamePulse 2.4s ease-in-out infinite;
}
@keyframes flamePulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(232,114,12,.35);} 50%{ box-shadow:0 0 0 8px rgba(232,114,12,0);} }
.navbar-purohitam .brand-name{ font-weight:800; font-size:clamp(1.2rem,1.5vw,1.6rem); color:var(--orange); line-height:1.1; white-space:nowrap; }
.navbar-purohitam .brand-tag{ font-size:.7rem; color:var(--text-muted); display:flex; align-items:center; gap:6px; white-space:nowrap; }
/* Same flexbox fix as .ptm-shlok above: without min-width:0 here, this
   text block could refuse to shrink on very narrow phones and push the
   navbar wider than the screen. */
.navbar-brand{ min-width:0; overflow:hidden; }
.navbar-brand > span{ min-width:0; overflow:hidden; }

.pro-badge{
  position:relative; overflow:hidden;
  background:linear-gradient(135deg,var(--gold),var(--orange));
  color:#fff; font-size:.58rem; font-weight:800; letter-spacing:.5px;
  padding:2px 8px 2px 6px; border-radius:20px; display:inline-flex; align-items:center; gap:3px;
  box-shadow:0 3px 8px rgba(232,114,12,.4); animation:proPulse 2.4s ease-in-out infinite;
}
.pro-badge i{ font-size:.55rem; }
.pro-badge::before{
  content:''; position:absolute; top:0; left:-60%; width:40%; height:100%;
  background:linear-gradient(120deg, transparent, rgba(255,255,255,.65), transparent);
  transform:skewX(-20deg); animation:proShine 3s ease-in-out infinite;
}
@keyframes proShine{ 0%{ left:-60%; } 50%{ left:130%; } 100%{ left:130%; } }
@keyframes proPulse{ 0%,100%{ transform:scale(1);} 50%{ transform:scale(1.06);} }

.navbar-purohitam .nav-link{ font-weight:500; color:var(--text-dark)!important; position:relative; white-space:nowrap; padding:6px 0!important; }
.navbar-purohitam .navbar-nav{ gap:clamp(14px,1.6vw,26px); }
.navbar-purohitam .nav-link::after{ content:''; position:absolute; left:0; bottom:-4px; width:0; height:2px; background:var(--orange); transition:width .3s ease; }
.navbar-purohitam .nav-link:hover::after, .navbar-purohitam .nav-link.active::after{ width:100%; }
.navbar-purohitam .nav-link.active{ color:var(--orange)!important; font-weight:600; }

.call-us-icon{ width:44px;height:44px; background:var(--orange-light); border-radius:50%; display:flex;align-items:center;justify-content:center; color:var(--orange); flex-shrink:0; }

/* ============================================================================
   GLOBAL PREMIUM BUTTON SYSTEM — every primary button on the site
   (Book Puja, form Submit buttons, Call Now, View Details) shares this
   gradient + diagonal "shine sweep" hover effect for a consistent premium
   feel. Add the class .btn-premium to any new button to opt it in too.
   ============================================================================ */
/* ===== Global premium button system (shine-sweep + gradient) ===== */
.btn-book-puja, .btn-submit, .btn-call-now, .puja-card .btn-view, .btn-premium{
  position:relative; overflow:hidden; isolation:isolate;
}
.btn-book-puja::before, .btn-submit::before, .btn-call-now::before, .puja-card .btn-view::before, .btn-premium::before{
  content:''; position:absolute; top:0; left:-75%; width:50%; height:100%; z-index:-1;
  background:linear-gradient(120deg, transparent, rgba(255,255,255,.55), transparent);
  transform:skewX(-20deg); transition:left .55s ease;
}
.btn-book-puja:hover::before, .btn-submit:hover::before, .btn-call-now:hover::before, .puja-card .btn-view:hover::before, .btn-premium:hover::before{
  left:135%;
}

.btn-book-puja{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff; font-weight:600;
  padding:10px 22px; border-radius:8px; border:none;
  transition:transform .25s ease, box-shadow .25s ease; box-shadow:0 6px 16px rgba(232,114,12,.35); white-space:nowrap;
}
.btn-book-puja:hover{ color:#fff; transform:translateY(-3px); box-shadow:0 14px 26px rgba(232,114,12,.45); }
.btn-book-puja:active{ transform:translateY(-1px); }

.hamburger-btn{
  width:44px;height:44px; border-radius:10px; border:1px solid var(--orange-light);
  background:var(--orange-light); display:flex; align-items:center; justify-content:center;
  color:var(--orange); font-size:1.2rem; flex-shrink:0; transition:.25s;
}
.hamburger-btn:hover{ background:var(--orange); color:#fff; transform:rotate(90deg); }

/* ===== Offcanvas side menu =====
   The panel that slides in from the right on mobile/tablet (and on
   desktop widths below 1400px) when the hamburger button is tapped. */
.offcanvas-premium{ background:var(--cream-light); width:300px; }
.offcanvas-premium .offcanvas-header{
  border-bottom:1px solid var(--orange-light);
  /* Explicit (not just relying on Bootstrap defaults) so the close button
     is always pinned to the far right, never crowding the logo text. */
  display:flex; align-items:center; justify-content:space-between; flex-wrap:nowrap; gap:12px;
  padding:16px 18px;
}
.offcanvas-premium .offcanvas-header .brand-name{
  font-size:1.15rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0;
}

/* Custom close (X) button for the mobile side menu — replaces Bootstrap's
   plain gray default with an on-brand circular button that spins and
   fills with the gradient on hover/tap. */
.ptm-offcanvas-close{
  width:38px; height:38px; border-radius:50%; flex-shrink:0;
  background:var(--orange-light); color:var(--orange); border:none;
  display:flex; align-items:center; justify-content:center; font-size:1rem;
  transition:transform .35s ease, background .25s ease, color .25s ease;
  margin-left:auto; /* safety net: pins it right even if a parent flex rule is overridden elsewhere */
}
.ptm-offcanvas-close:hover{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff;
  transform:rotate(180deg);
}
.ptm-offcanvas-close:active{ transform:rotate(180deg) scale(.9); }
.offcanvas-premium .nav-link{
  color:var(--text-dark); font-weight:500; padding:12px 4px; border-bottom:1px solid rgba(0,0,0,.05);
  display:flex; align-items:center; gap:10px; transition:.2s;
}
.offcanvas-premium .nav-link:hover{ color:var(--orange); padding-left:10px; }
.offcanvas-premium .nav-link i{ color:var(--orange); width:20px; }
.offcanvas-premium .nav-link.active{ color:var(--orange); font-weight:700; }

/* "Call Us Now" card in the mobile side menu — a full clickable tel: link
   styled as a small card, with a pulsing phone icon on the left and an
   arrow that slides on hover, instead of the old plain text line. */
.ptm-offcanvas-call{
  display:flex; align-items:center; gap:14px;
  background:linear-gradient(135deg,#2b1c12,#3a2414);
  border-radius:14px; padding:14px 16px; text-decoration:none;
  box-shadow:0 10px 24px rgba(43,28,18,.25); transition:transform .25s ease, box-shadow .25s ease;
}
.ptm-offcanvas-call:hover{ transform:translateY(-2px); box-shadow:0 14px 30px rgba(43,28,18,.35); }
.ptm-offcanvas-call-icon{
  width:44px; height:44px; border-radius:50%; flex-shrink:0;
  background:linear-gradient(135deg,var(--gold),var(--orange));
  color:#fff; display:flex; align-items:center; justify-content:center; font-size:1.05rem;
  animation:ring 2s ease-in-out infinite; /* reuses the CTA banner's phone-ring keyframes */
}
.ptm-offcanvas-call-label{ display:block; font-size:.7rem; color:#c9b39f; text-transform:uppercase; letter-spacing:.5px; }
.ptm-offcanvas-call-number{ display:block; font-size:1rem; font-weight:700; color:#fff; }
.ptm-offcanvas-call-arrow{ margin-left:auto; color:var(--gold); transition:transform .25s ease; }
.ptm-offcanvas-call:hover .ptm-offcanvas-call-arrow{ transform:translateX(4px); }

/* ===== Hero =====
   The big intro section right under the navbar. Headline size uses
   clamp() so it scales smoothly between phone and desktop widths
   instead of jumping at breakpoints. */
.hero-section{ background:var(--cream-light); position:relative; overflow:hidden; }
.hero-eyebrow{ color:var(--orange); font-weight:600; font-size:.95rem; }
.hero-heading{ font-weight:800; font-size:clamp(1.9rem, 2.6vw + 1rem, 3rem); line-height:1.18; }
.hero-heading .accent{ color:var(--orange); }
.hero-sub{ color:var(--text-muted); font-size:clamp(.92rem,.6vw + .7rem,1.05rem); max-width:520px; }
.feature-mini{ display:flex;align-items:center;gap:10px; }
.feature-mini .icon-circle{
  width:46px;height:46px; background:var(--orange-light); border-radius:50%;
  display:flex;align-items:center;justify-content:center; color:var(--orange); font-size:1.15rem; flex-shrink:0; transition:.3s;
}
.feature-mini:hover .icon-circle{ background:var(--orange); color:#fff; transform:rotate(8deg) scale(1.08); }
.feature-mini .title{ font-weight:600; font-size:.88rem; }
.feature-mini .sub{ font-size:.78rem; color:var(--text-muted); }

.hero-img-wrap{ position:relative; border-radius:0 0 0 120px; overflow:hidden; height:100%; min-height:420px; }
.hero-img-wrap img{ width:100%;height:100%;object-fit:cover; }
/* Hero slider — the Swiper fills the same rounded frame the old static
   image used to sit in; pagination dots sit near the bottom, offset left
   so they never collide with the floating "Trusted by" badge on the right. */
.heroSwiper, .heroSwiper .swiper-slide{ width:100%; height:100%; }
.hero-swiper-pagination{ text-align:left!important; left:28px!important; right:auto!important; bottom:20px!important; width:auto!important; }
.hero-swiper-pagination .swiper-pagination-bullet{ background:#fff; opacity:.6; width:8px; height:8px; }
.hero-swiper-pagination .swiper-pagination-bullet-active{ opacity:1; background:var(--gold); width:24px; border-radius:5px; }
.trust-badge{
  position:absolute; top:20px; right:20px; background:var(--orange); color:#fff;
  width:130px;height:130px; border-radius:50%;
  display:flex;flex-direction:column;align-items:center;justify-content:center; text-align:center;
  font-weight:700; font-size:.78rem; border:4px dashed rgba(255,255,255,.5);
  box-shadow:0 10px 25px rgba(0,0,0,.2); animation:floatBadge 3.5s ease-in-out infinite;
}
.trust-badge .big{ font-size:1.35rem; display:block; }
@keyframes floatBadge{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(-10px);} }

/* hero stat pills (replaces the old search card inside the hero) */
.hero-stat-pills{ display:flex; flex-wrap:wrap; gap:12px; }
.hero-stat-pills .pill{
  background:#fff; border-radius:12px; padding:10px 18px; box-shadow:0 8px 22px rgba(0,0,0,.06);
  display:flex; align-items:center; gap:10px;
}
.hero-stat-pills .pill i{ color:var(--orange); }
.hero-stat-pills .pill b{ display:block; font-size:1rem; }
.hero-stat-pills .pill span{ font-size:.72rem; color:var(--text-muted); }

/* ===== Trust strip =====
   The row of 6 small icon+label items just under the hero
   ("Multiple Puja Options", "Secure Payments", etc). */
.trust-strip{ background:#fff; padding:26px 0; border-bottom:1px solid #f1e9dd; }
.trust-item{ display:flex;align-items:center;gap:10px; }
.trust-item .icon-circle{
  width:48px;height:48px; background:var(--orange-light); border-radius:50%;
  display:flex;align-items:center;justify-content:center; color:var(--orange); font-size:1.2rem; flex-shrink:0; transition:.3s;
}
.trust-item:hover .icon-circle{ background:var(--orange); color:#fff; transform:scale(1.1); }
.trust-item .label{ font-weight:600; font-size:.85rem; line-height:1.2; }

/* ===== Section heading =====
   The small orange "eyebrow" line + big bold title used above most
   sections ("Popular Pujas", "What Our Clients Say", etc). Reused
   on every page via .section-eyebrow / .section-title. */
.section-eyebrow{ text-align:center; color:var(--orange); font-weight:600; display:flex;align-items:center;justify-content:center;gap:14px; }
.section-eyebrow .line{ height:1px;width:40px;background:var(--orange); }
.section-title{ text-align:center; font-weight:800; font-size:clamp(1.6rem,1.4vw + 1rem,2.2rem); margin-bottom:36px; }

/* ===== Puja cards / swiper =====
   The card design used for every puja listing (home page slider,
   services grid, related-services slider). Image zooms slightly on
   hover; .btn-view is the "View Details" pill button. */
.puja-card{
  background:#fff; border-radius:14px; overflow:hidden; box-shadow:0 6px 20px rgba(0,0,0,.06);
  transition:transform .3s ease, box-shadow .3s ease; height:100%;
}
.puja-card:hover{ transform:translateY(-8px); box-shadow:0 18px 34px rgba(0,0,0,.14); }
.puja-card .img-wrap{ position:relative; height:190px; overflow:hidden; }
.puja-card .img-wrap img{ width:100%;height:100%;object-fit:cover; transition:transform .5s ease; }
.puja-card:hover .img-wrap img{ transform:scale(1.08); }
.puja-card .badge-popular{
  position:absolute;top:10px;left:10px; background:#D62828; color:#fff; font-size:.68rem; font-weight:700;
  padding:4px 10px; border-radius:5px; z-index:2;
}
.puja-card .fav-btn{
  position:absolute; top:10px; right:10px; width:34px; height:34px; border-radius:50%;
  background:rgba(255,255,255,.9); color:var(--orange); display:flex; align-items:center; justify-content:center;
  z-index:2; font-size:.9rem; transition:.2s;
}
.puja-card .fav-btn:hover{ background:var(--orange); color:#fff; }
.puja-card .body{ padding:16px; }
.puja-card .puja-name{ font-weight:700; font-size:1rem; margin-bottom:8px;}
.puja-card .price{ color:var(--orange); font-weight:700; }
.puja-card .rating{ color:var(--gold); font-size:.85rem; font-weight:600; }
.puja-card .btn-view{
  border:1.5px solid var(--orange); color:var(--orange); font-weight:600; font-size:.82rem;
  border-radius:24px; padding:6px 16px; transition:.25s; display:inline-block; margin-top:10px;
}
.puja-card .btn-view:hover{ background:var(--orange); color:#fff; transform:translateY(-2px); box-shadow:0 8px 16px rgba(232,114,12,.3); }

.pujaSwiper{ padding:10px 6px 46px; }
.swiper-button-next.custom-nav, .swiper-button-prev.custom-nav{
  width:46px;height:46px; border-radius:50%; background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff;
  box-shadow:0 8px 18px rgba(232,114,12,.3); transition:transform .25s ease, box-shadow .25s ease;
}
.swiper-button-next.custom-nav::after, .swiper-button-prev.custom-nav::after{ font-size:1rem; }
.swiper-button-next.custom-nav:hover, .swiper-button-prev.custom-nav:hover{ transform:scale(1.1); box-shadow:0 12px 24px rgba(232,114,12,.4); }
.pujaSwiper .swiper-pagination-bullet{ background:#e7dcca; opacity:1; transition:.25s; }
.pujaSwiper .swiper-pagination-bullet-active{ background:var(--orange); width:22px; border-radius:5px; }

/* ===== Booking form section =====
   The dark "Fill The Form" section on the home page (#booking).
   .booking-card is the white form card; .booking-perks is the
   checklist on the left. */
.booking-section{
  background:linear-gradient(135deg,#2b1c12,#3a2414 55%,#2b1c12);
  position:relative; overflow:hidden; color:#fff;
}
.booking-section::before{
  content:''; position:absolute; width:420px; height:420px; border-radius:50%;
  background:radial-gradient(circle,rgba(232,114,12,.25),transparent 70%);
  top:-140px; right:-120px;
}
.booking-section::after{
  content:''; position:absolute; width:320px; height:320px; border-radius:50%;
  background:radial-gradient(circle,rgba(245,166,35,.18),transparent 70%);
  bottom:-120px; left:-100px;
}
.booking-section .badge-line{ color:var(--gold); font-weight:600; letter-spacing:1px; font-size:.8rem; text-transform:uppercase; }
.booking-section h2{ font-weight:800; font-size:clamp(1.6rem,1.4vw + 1rem,2.3rem); }
.booking-section p.lead-sub{ color:#d8c6b6; max-width:420px; }
.booking-perks li{ display:flex; align-items:center; gap:12px; margin-bottom:16px; color:#e9d9c7; font-size:.92rem; }
.booking-perks li i{
  width:34px;height:34px; border-radius:50%; background:rgba(232,114,12,.2); color:var(--gold);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.booking-card{
  background:#fff; color:var(--text-dark); border-radius:18px; padding:32px;
  box-shadow:0 30px 60px rgba(0,0,0,.35); position:relative; z-index:2;
}
.booking-card h4{ font-weight:800; }
.booking-card .form-note{ font-size:.75rem; color:var(--text-muted); }

/* ============================================================================
   SHARED PREMIUM FORM SYSTEM
   ----------------------------------------------------------------------------
   Used by every form on the site: the home page booking form, the Quick
   Booking modal, the service-details sidebar form, and the contact page
   form. Two pieces:
     .ptm-form-badge  -> the small circular icon badge above a form's title
     .ptm-field       -> wraps an <input>/<select>/<textarea> with a small
                         icon on the left (e.g. a person icon on the Name
                         field) — just add class="ptm-field" around the
                         control and put an <i class="ptm-field-icon">
                         before it, see the HTML for examples.
   ============================================================================ */
.ptm-form-badge{
  width:52px; height:52px; border-radius:16px; margin-bottom:14px;
  background:linear-gradient(135deg,var(--orange-light),#fff);
  border:1.5px solid var(--orange-light);
  color:var(--orange); font-size:1.3rem;
  display:inline-flex; align-items:center; justify-content:center;
  box-shadow:0 8px 18px rgba(232,114,12,.15);
}

.form-label{ font-size:.82rem; font-weight:600; color:var(--text-muted); margin-bottom:6px; display:inline-block; }

.form-control, .form-select{
  border:1.5px solid #f0e4d6; border-radius:10px; padding:11px 14px; font-size:.92rem;
  transition:border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
/* focus-ring color is handled globally further down this file (search
   "consistent focus ring site-wide") so it applies to every form, not
   just these — keeping one definition avoids the two ever drifting apart */

/* Icon-prefixed field wrapper */
.ptm-field{ position:relative; }
.ptm-field-icon{
  position:absolute; left:15px; top:50%; transform:translateY(-50%);
  color:var(--orange); font-size:.85rem; pointer-events:none; z-index:2;
  transition:color .2s ease;
}
.ptm-field .form-control, .ptm-field .form-select{ padding-left:40px; }
.ptm-field:focus-within .ptm-field-icon{ color:var(--orange-dark); }
/* textarea icon sits at the top instead of vertically centered */
.ptm-field-textarea .ptm-field-icon{ top:16px; transform:none; }
.ptm-field-textarea .form-control{ padding-left:40px; padding-top:12px; }
.btn-submit{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff; font-weight:700; padding:13px; border-radius:10px; border:none;
  width:100%; transition:transform .25s ease, box-shadow .25s ease; box-shadow:0 10px 24px rgba(232,114,12,.35);
}
.btn-submit:hover{ color:#fff; transform:translateY(-3px); box-shadow:0 16px 30px rgba(232,114,12,.45); }
.btn-submit:active{ transform:translateY(-1px); }
.btn-submit:disabled{ opacity:.85; transform:none; }
.booking-card .form-note{ font-size:.75rem; color:var(--text-muted); }

/* ===== Testimonials =====
   NOTE: the visual design lives in the "TESTIMONIALS v2" block further
   down this file (search "TESTIMONIALS v2") — this is just the base
   Swiper container sizing; main.js SECTION 11 initialises .testiSwiper. */
.testiSwiper{ overflow:hidden; }

/* ===== CTA banner =====
   The solid-orange "Need Help? Call Our Puja Expert" strip reused
   near the bottom of every page. */
.cta-banner{ background:linear-gradient(90deg,var(--orange),var(--orange-dark)); color:#fff; padding:36px 0; position:relative; overflow:hidden; }
.cta-banner .phone-circle{
  width:64px;height:64px; background:#fff; color:var(--orange); border-radius:50%;
  display:flex;align-items:center;justify-content:center; font-size:1.6rem; animation:ring 1.6s ease-in-out infinite;
}
@keyframes ring{ 0%,100%{ transform:rotate(0);} 10%{ transform:rotate(15deg);} 20%{ transform:rotate(-12deg);} 30%{ transform:rotate(8deg);} 40%{ transform:rotate(0);} }
.btn-call-now{ background:#fff; color:var(--orange); font-weight:700; border-radius:30px; padding:12px 32px; border:none; transition:transform .25s ease, box-shadow .25s ease, color .25s ease; box-shadow:0 10px 22px rgba(0,0,0,.15); }
.btn-call-now:hover{ color:var(--orange-dark); transform:translateY(-3px); box-shadow:0 16px 30px rgba(0,0,0,.22); }
.btn-call-now:active{ transform:translateY(-1px); }

/* ===== Stats =====
   The "10,000+ Happy Customers" counter row. Numbers count up from 0
   via IntersectionObserver in main.js SECTION 12 — data-count on the
   HTML element sets the target number. */
.stats-strip{ padding:40px 0; background:#fff; }
.stat-item{ text-align:center; }
.stat-item .icon-circle{
  width:60px;height:60px; background:var(--orange-light); color:var(--orange); border-radius:50%;
  display:flex;align-items:center;justify-content:center; font-size:1.5rem; margin:0 auto 10px; transition:.3s;
}
.stat-item:hover .icon-circle{ transform:rotateY(180deg); background:var(--orange); color:#fff; }
.stat-item .num{ font-weight:800; font-size:1.5rem; }
.stat-item .lbl{ color:var(--text-muted); font-size:.85rem; }

/* ===== Page banner =====
   The dark banner + breadcrumb at the top of every inner page
   (About, Services, Pandit Ji, Blog, Contact, etc). */
.page-banner{
  background:linear-gradient(135deg,#2b1c12,#3a2414 60%,#2b1c12);
  color:#fff; padding:70px 0 50px; position:relative; overflow:hidden;
}
.page-banner::before{
  content:''; position:absolute; width:380px; height:380px; border-radius:50%;
  background:radial-gradient(circle,rgba(232,114,12,.25),transparent 70%); top:-140px; right:-80px;
}
.page-banner h1{ font-weight:800; font-size:clamp(1.8rem,2vw + 1rem,2.6rem); position:relative; z-index:1; }
.page-banner .breadcrumb{ position:relative; z-index:1; margin-bottom:0; }
.page-banner .breadcrumb a{ color:#d8c6b6; }
.page-banner .breadcrumb .active{ color:var(--gold); }
.page-banner .breadcrumb-item + .breadcrumb-item::before{ color:#d8c6b6; }

/* ===== Services grid page =====
   Search/filter bar + card grid on services.html. The actual
   filtering logic lives in main.js SECTION 8. */
.filter-bar{ background:#fff; border-radius:14px; box-shadow:0 10px 30px rgba(0,0,0,.06); padding:16px 20px; margin-top:-46px; position:relative; z-index:3; }
.filter-bar .form-select, .filter-bar .form-control{ border:1.5px solid #f0e4d6; border-radius:10px; padding:10px 14px; }
.service-grid-section{ background:var(--cream-light); }

/* ===== Service details page =====
   Layout for service-details.html: tabbed content on the left
   (About/Samagri/Process/FAQ), sticky price+booking card on the right. */
.detail-hero-img{ border-radius:18px; overflow:hidden; box-shadow:0 20px 40px rgba(0,0,0,.1); }
.detail-hero-img img{ width:100%; height:100%; object-fit:cover; max-height:420px; }
.detail-tab-nav{ border-bottom:2px solid var(--orange-light); }
.detail-tab-nav .nav-link{
  color:var(--text-muted); font-weight:600; border:none; border-bottom:3px solid transparent; padding:12px 4px; margin-right:26px; background:none;
}
.detail-tab-nav .nav-link.active{ color:var(--orange); border-bottom-color:var(--orange); }
.samagri-chip{
  background:var(--orange-light); color:var(--orange-dark); font-size:.82rem; font-weight:600;
  padding:8px 16px; border-radius:20px; display:inline-flex; align-items:center; gap:6px; margin:0 8px 8px 0;
}
.process-step{ display:flex; gap:18px; margin-bottom:26px; }
.process-step .step-num{
  width:44px;height:44px;border-radius:50%; background:var(--orange); color:#fff; font-weight:800;
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.process-step h6{ font-weight:700; margin-bottom:4px; }
.process-step p{ color:var(--text-muted); font-size:.9rem; margin-bottom:0; }

.sidebar-card{
  background:#fff; border-radius:16px; box-shadow:0 15px 40px rgba(0,0,0,.08); padding:26px; position:sticky; top:110px;
}
.sidebar-card .price-tag{ font-size:1.8rem; font-weight:800; color:var(--orange); }
.sidebar-card .price-tag small{ font-size:.9rem; color:var(--text-muted); font-weight:500; }
.sidebar-card .list-unstyled li{ display:flex; gap:10px; margin-bottom:10px; font-size:.9rem; color:var(--text-muted); }
.sidebar-card .list-unstyled li i{ color:var(--orange); margin-top:3px; }

.accordion-premium .accordion-button{
  font-weight:600; color:var(--text-dark); background:#fff; border-radius:10px!important;
}
.accordion-premium .accordion-button:not(.collapsed){ color:var(--orange); background:var(--orange-light); box-shadow:none; }
.accordion-premium .accordion-item{ border:1px solid #f0e4d6; border-radius:10px; margin-bottom:12px; overflow:hidden; }
.accordion-premium .accordion-button:focus{ box-shadow:none; }

/* ============================================================================
   FOOTER
   ----------------------------------------------------------------------------
   Structure: decorative wavy top edge -> glow accents (two soft blurred
   circles, purely decorative, ignore pointer events) -> 4-column layout
   (About / Quick Links / Services / Contact+Newsletter) -> bottom bar with
   copyright + payment icons. Fully re-stacks to a single column on phones.
   ============================================================================ */
.site-footer{
  background:#221812; color:#e8dccd; padding-top:80px; position:relative; overflow:hidden;
}
/* Decorative wave separating the footer from whatever section sits above it */
.site-footer::before{
  content:''; position:absolute; top:-1px; left:0; width:100%; height:36px;
  background:var(--cream-light);
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 40' preserveAspectRatio='none'%3E%3Cpath d='M0,20 C150,45 350,0 600,18 C850,36 1050,4 1200,20 L1200,0 L0,0 Z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 40' preserveAspectRatio='none'%3E%3Cpath d='M0,20 C150,45 350,0 600,18 C850,36 1050,4 1200,20 L1200,0 L0,0 Z'/%3E%3C/svg%3E");
  -webkit-mask-size:100% 100%; mask-size:100% 100%;
}
/* Two soft glowing circles for depth — decorative only, never intercept clicks */
.site-footer::after{
  content:''; position:absolute; top:20%; right:-120px; width:340px; height:340px; border-radius:50%;
  background:radial-gradient(circle,rgba(232,114,12,.16),transparent 70%); pointer-events:none;
}
.site-footer .footer-glow-left{
  position:absolute; bottom:-80px; left:-100px; width:280px; height:280px; border-radius:50%;
  background:radial-gradient(circle,rgba(245,166,35,.12),transparent 70%); pointer-events:none;
}
.site-footer .container{ position:relative; z-index:1; }

.site-footer h6{
  color:#fff; font-weight:700; margin-bottom:22px; text-transform:uppercase; font-size:.85rem; letter-spacing:1px;
  position:relative; padding-bottom:12px;
}
/* small gold underline accent below every footer column heading */
.site-footer h6::after{
  content:''; position:absolute; left:0; bottom:0; width:32px; height:2px;
  background:linear-gradient(90deg,var(--gold),var(--orange));
}
.site-footer .footer-logo{
  font-weight:800; font-size:1.6rem; color:var(--orange); display:inline-flex; align-items:center; gap:8px;
}
.site-footer .footer-logo i{
  width:38px; height:38px; border-radius:50%; background:var(--orange-light); color:var(--orange);
  display:inline-flex; align-items:center; justify-content:center; font-size:1rem;
}
.site-footer p{ color:#b8a898; font-size:.9rem; line-height:1.7; }
.site-footer .footer-links li{ margin-bottom:12px; }
.site-footer .footer-links a{ color:#b8a898; font-size:.9rem; transition:.25s; display:inline-flex; align-items:center; gap:10px; }
.site-footer .footer-links a i{
  width:22px; height:22px; border-radius:50%; background:rgba(232,114,12,.14); color:var(--orange);
  font-size:.62rem; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; transition:.25s;
}
.site-footer .footer-links a:hover{ color:#fff; padding-left:2px; }
.site-footer .footer-links a:hover i{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff;
  transform:scale(1.1); box-shadow:0 0 12px rgba(232,114,12,.5);
}
.site-footer .contact-item{ display:flex; gap:12px; margin-bottom:16px; color:#b8a898; font-size:.9rem; }
.site-footer .contact-item i{
  color:var(--orange); margin-top:3px; width:30px; height:30px; border-radius:8px;
  background:rgba(232,114,12,.12); display:inline-flex; align-items:center; justify-content:center; flex-shrink:0;
}

/* Social icon circles — subtle glow ring appears on hover */
.footer-social a{
  width:38px;height:38px; border-radius:50%; background:rgba(255,255,255,.06); color:#fff;
  display:inline-flex; align-items:center; justify-content:center; margin-right:8px; transition:.25s;
  border:1px solid rgba(255,255,255,.08);
}
.footer-social a:hover{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark)); border-color:transparent;
  transform:translateY(-4px); box-shadow:0 10px 20px rgba(232,114,12,.35);
}

/* Newsletter subscribe box (footer) */
.newsletter-box{
  border-radius:10px; overflow:hidden; box-shadow:0 8px 24px rgba(0,0,0,.25);
}
.newsletter-box .form-control{ border-radius:0; border:none; padding:12px 14px; }
.newsletter-box .btn{
  border-radius:0; background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff;
  padding:0 18px; border:none; transition:.25s;
}
.newsletter-box .btn:hover{ filter:brightness(1.08); }

.footer-bottom{
  border-top:1px solid rgba(255,255,255,.08); margin-top:50px; padding:20px 0; font-size:.85rem; color:#a4907d;
}
.payment-icons i{
  font-size:1.4rem; color:#b8a898; margin-left:10px; transition:.2s;
}
.payment-icons i:hover{ color:var(--gold); transform:translateY(-2px); }

/* Footer responsiveness on phones:
   - Text stays LEFT-aligned (not centered) — matches the rest of the site.
   - "Quick Links" and "Our Services" sit side-by-side as two columns
     (left/right) instead of each stacking full-width, thanks to the
     .footer-col-half class added to both in the HTML.
   - The About block, and the Contact+Newsletter block, stay full width. */
@media(max-width:767px){
  .site-footer{ padding-top:60px; }
  .footer-social{ display:flex; }
  .footer-bottom{ text-align:center; flex-direction:column; gap:12px; }
  .payment-icons{ margin-top:4px; }

  .footer-col-half{ width:50%; max-width:50%; flex:0 0 50%; }
}

/* ===== Back to top & WhatsApp =====
   Two floating round buttons, bottom-right and bottom-left of every
   page. Back-to-top fades in after 400px of scroll (main.js SECTION 3). */
.back-to-top{
  position:fixed; bottom:26px; right:26px; width:46px;height:46px; border-radius:50%;
  background:var(--orange); color:#fff; display:flex; align-items:center; justify-content:center;
  box-shadow:0 8px 20px rgba(0,0,0,.2); opacity:0; visibility:hidden; transform:translateY(10px);
  transition:.3s; z-index:999; border:none;
}
.back-to-top.show{ opacity:1; visibility:visible; transform:translateY(0); }
.whatsapp-float{
  position:fixed; bottom:26px; left:26px; width:54px;height:54px; border-radius:50%;
  background:#25D366; color:#fff; display:flex; align-items:center; justify-content:center;
  font-size:1.5rem; box-shadow:0 8px 20px rgba(0,0,0,.25); z-index:999; animation:wa-pulse 2s infinite;
}
@keyframes wa-pulse{
  0%{ box-shadow:0 0 0 0 rgba(37,211,102,.5); }
  70%{ box-shadow:0 0 0 14px rgba(37,211,102,0); }
  100%{ box-shadow:0 0 0 0 rgba(37,211,102,0); }
}

@media(max-width:991px){
  .hero-heading{ font-size:2.1rem; }
  .hero-img-wrap{ min-height:280px; border-radius:0; margin-top:24px;}
  .sidebar-card{ position:static; margin-top:30px; }
}

/* ===================================================================
   ADDITIONAL PAGE STYLES — About / Pandit Ji / How It Works / Blog / Contact
   =================================================================== */

/* ===== About page (about.html) ===== */
.about-img-wrap{ position:relative; }
.about-img-wrap img{ border-radius:18px; box-shadow:0 25px 50px rgba(0,0,0,.12); width:100%; }
.about-img-wrap .exp-badge{
  position:absolute; bottom:-24px; left:-24px; background:var(--orange); color:#fff; border-radius:16px;
  padding:18px 22px; text-align:center; box-shadow:0 15px 35px rgba(232,114,12,.35);
}
.about-img-wrap .exp-badge .big{ font-size:1.8rem; font-weight:800; display:block; line-height:1; }
.about-img-wrap .exp-badge .small{ font-size:.72rem; }
.mission-card{
  background:#fff; border-radius:16px; padding:28px; box-shadow:0 10px 30px rgba(0,0,0,.06); height:100%;
  border-top:4px solid var(--orange); transition:.3s;
}
.mission-card:hover{ transform:translateY(-8px); box-shadow:0 20px 40px rgba(0,0,0,.1); }
.mission-card .icon-circle{
  width:56px;height:56px; background:var(--orange-light); color:var(--orange); border-radius:14px;
  display:flex; align-items:center; justify-content:center; font-size:1.4rem; margin-bottom:16px;
}
.value-row{ display:flex; gap:16px; margin-bottom:22px; }
.value-row .num{ font-weight:800; font-size:1.6rem; color:var(--orange-light); -webkit-text-stroke:1.5px var(--orange); }
.value-row h6{ font-weight:700; margin-bottom:4px; }
.value-row p{ color:var(--text-muted); font-size:.88rem; margin-bottom:0; }

/* ===== Pandit Ji page (pandit-ji.html) =====
   Search/specialty/city filter bar + pandit card grid. Filtering
   logic lives in main.js SECTION 9. */
.pandit-card{
  background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 8px 24px rgba(0,0,0,.06);
  transition:.3s; text-align:center; height:100%;
}
.pandit-card:hover{ transform:translateY(-8px); box-shadow:0 20px 40px rgba(0,0,0,.12); }
.pandit-card .img-wrap{ position:relative; height:240px; overflow:hidden; }
.pandit-card .img-wrap img{ width:100%; height:100%; object-fit:cover; transition:.5s; }
.pandit-card:hover .img-wrap img{ transform:scale(1.06); }
.pandit-card .verified-badge{
  position:absolute; top:12px; right:12px; background:#1EA362; color:#fff; font-size:.65rem; font-weight:700;
  padding:4px 10px; border-radius:20px; display:flex; align-items:center; gap:4px;
}
.pandit-card .body{ padding:20px; }
.pandit-card .name{ font-weight:700; font-size:1.05rem; }
.pandit-card .specialty{ color:var(--orange); font-size:.8rem; font-weight:600; margin-bottom:8px; }
.pandit-card .meta{ color:var(--text-muted); font-size:.8rem; display:flex; justify-content:center; gap:16px; margin-bottom:14px; }
.pandit-card .socials a{
  width:32px;height:32px;border-radius:50%; background:var(--orange-light); color:var(--orange);
  display:inline-flex; align-items:center; justify-content:center; margin:0 3px; transition:.2s; font-size:.8rem;
}
.pandit-card .socials a:hover{ background:var(--orange); color:#fff; }

/* ===== How It Works page (how-it-works.html) =====
   4-step process row + vertical timeline + FAQ accordion. */
.hiw-step{ text-align:center; position:relative; padding:0 10px; }
.hiw-step .step-circle{
  width:90px;height:90px; border-radius:50%; background:var(--orange-light); color:var(--orange);
  display:flex; align-items:center; justify-content:center; font-size:2rem; margin:0 auto 20px; position:relative;
  transition:.3s;
}
.hiw-step:hover .step-circle{ background:var(--orange); color:#fff; transform:scale(1.08); }
.hiw-step .step-index{
  position:absolute; top:-8px; right:-4px; width:28px;height:28px; border-radius:50%; background:var(--orange);
  color:#fff; font-size:.78rem; font-weight:800; display:flex; align-items:center; justify-content:center;
  border:3px solid #fff;
}
.hiw-step h5{ font-weight:700; margin-bottom:8px; }
.hiw-step p{ color:var(--text-muted); font-size:.88rem; }
.hiw-connector{
  position:absolute; top:45px; left:60%; width:100%; height:2px; background:repeating-linear-gradient(90deg,var(--orange) 0 8px,transparent 8px 16px);
}

.timeline-vertical{ position:relative; padding-left:50px; }
.timeline-vertical::before{ content:''; position:absolute; left:19px; top:6px; bottom:6px; width:2px; background:var(--orange-light); }
.timeline-item{ position:relative; margin-bottom:36px; }
.timeline-item .dot{
  position:absolute; left:-50px; top:0; width:40px;height:40px; border-radius:50%; background:var(--orange);
  color:#fff; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:.9rem; box-shadow:0 0 0 5px var(--orange-light);
}
.timeline-item h6{ font-weight:700; }
.timeline-item p{ color:var(--text-muted); font-size:.9rem; margin-bottom:0; }

/* ===== Blog page (blog.html + blog-details.html) =====
   Card grid + sidebar widgets on the listing page; long-form article
   typography (.blog-article-body) on the details page. Search/category
   filter logic lives in main.js SECTION 10. */
.blog-card{
  background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 8px 24px rgba(0,0,0,.06); transition:.3s; height:100%;
}
.blog-card:hover{ transform:translateY(-8px); box-shadow:0 20px 40px rgba(0,0,0,.12); }
.blog-card .img-wrap{ position:relative; height:210px; overflow:hidden; }
.blog-card .img-wrap img{ width:100%;height:100%;object-fit:cover; transition:.5s; }
.blog-card:hover .img-wrap img{ transform:scale(1.08); }
.blog-card .cat-badge{
  position:absolute; top:12px; left:12px; background:var(--orange); color:#fff; font-size:.68rem; font-weight:700;
  padding:5px 12px; border-radius:20px;
}
.blog-card .body{ padding:20px; }
.blog-card .meta{ color:var(--text-muted); font-size:.78rem; display:flex; gap:16px; margin-bottom:10px; }
.blog-card .meta i{ color:var(--orange); margin-right:4px; }
.blog-card h5{ font-weight:700; font-size:1.05rem; line-height:1.4; }
.blog-card p{ color:var(--text-muted); font-size:.88rem; }
.blog-card .read-more{ color:var(--orange); font-weight:600; font-size:.85rem; display:inline-flex; align-items:center; gap:6px; }
.blog-card .read-more i{ transition:.2s; }
.blog-card .read-more:hover i{ transform:translateX(4px); }

.blog-sidebar .widget{ background:#fff; border-radius:16px; padding:22px; box-shadow:0 8px 24px rgba(0,0,0,.06); margin-bottom:24px; }
.blog-sidebar .widget h6{ font-weight:700; margin-bottom:16px; text-transform:uppercase; font-size:.82rem; letter-spacing:.5px; }
.blog-sidebar .search-widget .input-group .form-control{ border:1.5px solid #f0e4d6; border-radius:10px 0 0 10px; }
.blog-sidebar .search-widget .btn{ background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff; border-radius:0 10px 10px 0; border:none; transition:.25s; }
.blog-sidebar .search-widget .btn:hover{ filter:brightness(1.08); }
.blog-sidebar .cat-list li{ display:flex; justify-content:space-between; padding:9px 0; border-bottom:1px dashed #f0e4d6; font-size:.88rem; color:var(--text-muted); }
.blog-sidebar .cat-list li a{ color:var(--text-muted); transition:.2s; }
.blog-sidebar .cat-list li a:hover{ color:var(--orange); }
.blog-sidebar .recent-post{ display:flex; gap:12px; margin-bottom:16px; }
.blog-sidebar .recent-post img{ width:64px;height:64px;border-radius:10px;object-fit:cover; flex-shrink:0; }
.blog-sidebar .recent-post h6{ font-size:.85rem; font-weight:600; margin-bottom:4px; line-height:1.3; }
.blog-sidebar .recent-post span{ font-size:.72rem; color:var(--text-muted); }
.tag-pill{
  background:var(--orange-light); color:var(--orange-dark); font-size:.78rem; font-weight:600;
  padding:6px 14px; border-radius:20px; display:inline-block; margin:0 6px 8px 0; transition:.2s;
}
.tag-pill:hover{ background:var(--orange); color:#fff; }

.blog-article-body h2, .blog-article-body h3{ font-weight:800; margin-top:28px; margin-bottom:14px; }
.blog-article-body p{ color:var(--text-muted); line-height:1.85; margin-bottom:18px; }
.blog-article-body blockquote{
  border-left:4px solid var(--orange); background:var(--orange-light); padding:18px 22px; border-radius:0 12px 12px 0;
  font-style:italic; color:var(--text-dark); margin:24px 0;
}
.author-box{ background:var(--cream-light); border-radius:16px; padding:24px; display:flex; gap:18px; align-items:center; }
.author-box img{ width:74px;height:74px;border-radius:50%;object-fit:cover; border:3px solid var(--orange-light); }

/* ===== Contact page (contact.html) =====
   Info cards + the contact form + embedded Google Map. */
.contact-info-card{
  background:#fff; border-radius:16px; padding:26px; box-shadow:0 8px 24px rgba(0,0,0,.06); text-align:center; height:100%; transition:.3s;
}
.contact-info-card:hover{ transform:translateY(-6px); box-shadow:0 18px 34px rgba(0,0,0,.1); }
.contact-info-card .icon-circle{
  width:58px;height:58px; background:var(--orange-light); color:var(--orange); border-radius:50%;
  display:flex; align-items:center; justify-content:center; font-size:1.4rem; margin:0 auto 16px;
}
.contact-info-card h6{ font-weight:700; }
.contact-info-card p{ color:var(--text-muted); font-size:.88rem; margin-bottom:0; }

.contact-form-card{ background:#fff; border-radius:18px; padding:36px; box-shadow:0 20px 50px rgba(0,0,0,.08); }
.map-wrap{ border-radius:18px; overflow:hidden; box-shadow:0 20px 50px rgba(0,0,0,.08); height:100%; min-height:420px; }
.map-wrap iframe{ width:100%; height:100%; min-height:420px; border:0; display:block; }

/* ===== Generic list-check used across pages ===== */
.check-list li{ display:flex; gap:12px; margin-bottom:14px; }
.check-list li i{ color:var(--orange); margin-top:4px; }
.check-list li span{ color:var(--text-muted); font-size:.92rem; }

@media(max-width:767px){
  .hiw-connector{ display:none; }
  .about-img-wrap .exp-badge{ left:12px; bottom:-18px; padding:12px 16px; }
}

/* ===== Premium pagination =====
   Styles the Prev/1/2/3/Next buttons that main.js's
   ptmBuildPagination() generates on the Services, Pandit Ji, and
   Blog pages. */
.pagination .page-link{
  border:1.5px solid #f0e4d6; color:var(--orange); font-weight:600; margin:0 4px; border-radius:10px!important;
  width:42px; height:42px; display:flex; align-items:center; justify-content:center; padding:0; transition:.25s;
}
.pagination .page-item.active .page-link{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark))!important; border-color:transparent!important; color:#fff!important;
  box-shadow:0 8px 18px rgba(232,114,12,.35);
}
.pagination .page-link:hover{ background:var(--orange-light); border-color:var(--orange-light); transform:translateY(-2px); }
.pagination .page-item.disabled .page-link{ color:#c9b8a6; background:#fbf5ee; }

/* ===== Favorite / heart button polish ===== */
.puja-card .fav-btn:hover{ transform:scale(1.12); box-shadow:0 6px 14px rgba(232,114,12,.35); }

/* ===== Generic form controls — consistent focus ring site-wide ===== */
.form-control:focus, .form-select:focus{
  border-color:var(--orange)!important; box-shadow:0 0 0 .2rem rgba(232,114,12,.15)!important;
}

/* ===== Breadcrumb links polish ===== */
.page-banner .breadcrumb-item a{ transition:.2s; }
.page-banner .breadcrumb-item a:hover{ color:var(--gold); }

/* ===== Social / footer icon buttons — subtle premium lift ===== */
.social-icon, .footer-social a{ transition:transform .25s ease, background .25s ease, color .25s ease; }

/* ===================================================================
   PREMIUM STATUS POPUP — success / error feedback for all forms
   =================================================================== */
.ptm-popup-overlay{
  position:fixed; inset:0; z-index:10000; display:flex; align-items:center; justify-content:center;
  background:rgba(20,12,7,.6); backdrop-filter:blur(4px); opacity:0; visibility:hidden;
  transition:opacity .3s ease, visibility .3s ease; padding:20px;
}
.ptm-popup-overlay.show{ opacity:1; visibility:visible; }
.ptm-popup-card{
  position:relative; background:#fff; border-radius:22px; padding:44px 34px 30px; max-width:380px; width:100%;
  text-align:center; box-shadow:0 30px 70px rgba(0,0,0,.4);
  transform:scale(.85) translateY(20px); opacity:0; transition:transform .4s cubic-bezier(.34,1.56,.64,1), opacity .3s ease;
}
.ptm-popup-overlay.show .ptm-popup-card{ transform:scale(1) translateY(0); opacity:1; }
.ptm-popup-close{
  position:absolute; top:14px; right:14px; width:30px;height:30px; border-radius:50%; border:none;
  background:var(--cream-light); color:var(--text-muted); display:flex; align-items:center; justify-content:center; transition:.2s;
}
.ptm-popup-close:hover{ background:var(--orange-light); color:var(--orange); }

.ptm-popup-icon-wrap{ position:relative; width:88px; height:88px; margin:0 auto 22px; }
.ptm-popup-icon-wrap .ring{
  position:absolute; inset:0; border-radius:50%; background:linear-gradient(135deg,var(--orange),var(--orange-dark));
  display:flex; align-items:center; justify-content:center; box-shadow:0 12px 28px rgba(232,114,12,.4);
  animation:ptmPop .5s cubic-bezier(.34,1.56,.64,1) .1s both;
}
.ptm-popup-card.ptm-error .ptm-popup-icon-wrap .ring{
  background:linear-gradient(135deg,#c0392b,#7A1F1F); box-shadow:0 12px 28px rgba(122,31,31,.4);
}
@keyframes ptmPop{ 0%{ transform:scale(0);} 100%{ transform:scale(1);} }
.ptm-popup-icon-wrap svg{ width:42px; height:42px; }
.ptm-popup-icon-wrap svg path, .ptm-popup-icon-wrap svg polyline{
  fill:none; stroke:#fff; stroke-width:4; stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:48; stroke-dashoffset:48; animation:ptmDraw .5s ease forwards .35s;
}
@keyframes ptmDraw{ to{ stroke-dashoffset:0; } }
.ptm-popup-icon-wrap .diya{
  position:absolute; top:-8px; right:-6px; width:30px;height:30px; border-radius:50%;
  background:linear-gradient(135deg,var(--gold),#fff3d6); color:var(--orange-dark);
  display:flex; align-items:center; justify-content:center; font-size:.85rem; border:2px solid #fff;
  box-shadow:0 4px 10px rgba(0,0,0,.2); animation:ptmFlicker 1.6s ease-in-out infinite;
}
@keyframes ptmFlicker{ 0%,100%{ transform:scale(1) rotate(0deg);} 50%{ transform:scale(1.12) rotate(-6deg);} }

.ptm-popup-card h4{ font-weight:800; margin-bottom:8px; }
.ptm-popup-card p{ color:var(--text-muted); font-size:.92rem; margin-bottom:20px; }
.ptm-popup-card .ptm-popup-ok{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark)); color:#fff; border:none; font-weight:700;
  padding:11px 30px; border-radius:30px; transition:.25s; box-shadow:0 10px 22px rgba(232,114,12,.35);
}
.ptm-popup-card.ptm-error .ptm-popup-ok{ background:linear-gradient(135deg,#c0392b,#7A1F1F); box-shadow:0 10px 22px rgba(122,31,31,.35); }
.ptm-popup-card .ptm-popup-ok:hover{ transform:translateY(-2px); }

.ptm-popup-progress{
  position:absolute; bottom:0; left:0; height:4px; background:linear-gradient(90deg,var(--gold),var(--orange));
  border-radius:0 0 22px 22px; width:100%; transform-origin:left; animation:ptmShrink 6s linear forwards;
}
@keyframes ptmShrink{ from{ transform:scaleX(1);} to{ transform:scaleX(0);} }

/* Submit button loading state */
.btn-submit.is-loading{ pointer-events:none; opacity:.85; }
.btn-submit .spinner-border-sm{ width:1rem; height:1rem; border-width:.15em; }

/* Active category filter highlight (blog sidebar) */
.blog-sidebar .cat-list a.active-filter{ color:var(--orange); font-weight:700; }
.blog-sidebar .tag-pill.active-filter{ background:var(--orange); color:#fff; }

/* ============================================================================
   EXTRA RESPONSIVE POLISH
   ----------------------------------------------------------------------------
   Small screens (phones, ~< 576px) get a few extra tweaks beyond the
   breakpoints already sprinkled through the sections above — collected
   here so they're easy to find/tune in one place.
   ============================================================================ */

/* Popup card: less side padding + smaller icon so it fits comfortably
   without horizontal scroll on narrow phones. */
@media(max-width:420px){
  .ptm-popup-card{ padding:34px 22px 24px; border-radius:18px; }
  .ptm-popup-icon-wrap{ width:72px; height:72px; }
  .ptm-popup-icon-wrap svg{ width:34px; height:34px; }
}

/* Filter bars (Services / Pandit Ji) already stack via Bootstrap's grid —
   this just tightens the spacing and centers the result-count text once
   it drops below the search/select fields on phones. */
@media(max-width:767px){
  .filter-bar{ padding:16px; }
  .filter-bar .text-md-end{ text-align:center!important; margin-top:6px; }
}

/* Hero stat pills: allow them to wrap onto multiple lines gracefully and
   shrink their padding slightly so 3 pills don't force horizontal scroll
   on small phones. */
@media(max-width:575px){
  .hero-stat-pills .pill{ padding:8px 14px; }
  .hero-stat-pills .pill b{ font-size:.9rem; }
  .booking-card{ padding:24px 18px; }
  .contact-form-card{ padding:24px 18px; }
  .sidebar-card{ padding:20px; }
}

/* Top strip: hide the least essential items first as space runs out
   (hours + divider already hidden below "lg" via the HTML's d-none
   classes) — this just makes sure the remaining Google Play / App Store
   buttons don't overflow on very narrow phones. */
@media(max-width:400px){
  .top-strip .btn-store{ padding:4px 8px; font-size:.66rem; }
}

/* Pandit Ji / Blog card grids: slightly smaller heading text on phones
   so long names/titles don't wrap awkwardly inside the card. */
@media(max-width:575px){
  .pandit-card .name{ font-size:.95rem; }
  .blog-card h5{ font-size:1rem; }
}

/* ============================================================================
   SERVICES PAGE — PREMIUM SEARCH-ONLY HERO
   ----------------------------------------------------------------------------
   Replaces the old 3-field filter bar (search + category + sort). Now it's
   just ONE search field, styled as its own standout "mini hero" band —
   dark card, glowing edge, big pill input, quick-search chips underneath.
   Filtering logic lives in main.js SECTION 8 (search-only now).
   ============================================================================ */
.ptm-search-hero{
  position:relative; overflow:hidden; text-align:center;
  background:linear-gradient(135deg,#2b1c12,#3a2414 60%,#2b1c12);
  border-radius:24px; padding:46px 24px 38px; color:#fff;
  box-shadow:0 25px 55px rgba(43,28,18,.25);
}
.ptm-search-hero-glow{
  position:absolute; top:-120px; left:50%; transform:translateX(-50%);
  width:420px; height:420px; border-radius:50%;
  background:radial-gradient(circle,rgba(232,114,12,.28),transparent 70%);
  pointer-events:none;
}
.ptm-search-kicker{
  position:relative; z-index:1; color:var(--gold); font-weight:600; font-size:.9rem;
  display:inline-flex; align-items:center; gap:8px; margin-bottom:8px;
}
.ptm-search-title{
  position:relative; z-index:1; font-weight:800; font-size:clamp(1.4rem,1.2vw + 1rem,2rem); margin-bottom:26px;
}
.ptm-search-box{
  position:relative; z-index:1; max-width:600px; margin:0 auto; display:flex; align-items:center;
  background:#fff; border-radius:50px; padding:6px 8px 6px 22px;
  box-shadow:0 15px 35px rgba(0,0,0,.25);
  border:2px solid transparent; transition:border-color .25s ease, box-shadow .25s ease;
}
.ptm-search-box:focus-within{
  border-color:var(--orange); box-shadow:0 0 0 6px rgba(232,114,12,.2), 0 15px 35px rgba(0,0,0,.25);
}
.ptm-search-icon{ color:var(--orange); font-size:1.05rem; flex-shrink:0; }
.ptm-search-input{
  flex:1; border:none; outline:none; padding:14px 12px; font-size:.95rem; color:var(--text-dark); background:transparent;
}
.ptm-search-input::placeholder{ color:#b8a898; }
.ptm-search-clear{
  width:38px; height:38px; border-radius:50%; border:none; background:var(--orange-light); color:var(--orange);
  display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:.2s; opacity:0; pointer-events:none;
}
.ptm-search-clear.show{ opacity:1; pointer-events:auto; }
.ptm-search-clear:hover{ background:var(--orange); color:#fff; }

.ptm-search-chips{
  position:relative; z-index:1; margin-top:20px; display:flex; flex-wrap:wrap; align-items:center;
  justify-content:center; gap:10px;
}
.ptm-chip-label{ color:#d8c6b6; font-size:.82rem; margin-right:2px; }
.ptm-chip{
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18); color:#f0e4d6;
  font-size:.8rem; font-weight:600; padding:7px 16px; border-radius:20px; transition:.25s;
}
.ptm-chip:hover, .ptm-chip.active{
  background:linear-gradient(135deg,var(--orange),var(--orange-dark)); border-color:transparent; color:#fff;
  transform:translateY(-2px); box-shadow:0 8px 18px rgba(232,114,12,.35);
}
.ptm-search-count{
  position:relative; z-index:1; margin:20px 0 0; color:#d8c6b6; font-size:.85rem;
}
.ptm-search-count span{ color:var(--gold); font-weight:700; }

@media(max-width:575px){
  .ptm-search-hero{ padding:34px 16px 28px; border-radius:18px; }
  .ptm-search-box{ padding:5px 6px 5px 16px; }
  .ptm-search-input{ font-size:.88rem; padding:12px 8px; }
}

/* ============================================================================
   TESTIMONIALS v3 — sliding carousel of compact glass cards, 3 per view on
   desktop (2 on tablets, 1 on phones), instead of one big spotlight card.
   Dark rich background carries over from before; each card is a small
   frosted-glass tile with avatar, stars, short quote, and a puja tag.
   Nav arrows + dots live below via Swiper (init in main.js SECTION 11).
   ============================================================================ */
.testimonial-section-v2{
  position:relative; overflow:hidden;
  background:linear-gradient(160deg,#241710 0%,#3a2414 55%,#241710 100%);
}
.testi-glow-a{
  position:absolute; top:-100px; left:-80px; width:340px; height:340px; border-radius:50%;
  background:radial-gradient(circle,rgba(232,114,12,.22),transparent 70%); pointer-events:none;
}
.testi-glow-b{
  position:absolute; bottom:-120px; right:-100px; width:380px; height:380px; border-radius:50%;
  background:radial-gradient(circle,rgba(245,166,35,.16),transparent 70%); pointer-events:none;
}
.section-title-light{
  text-align:center; font-weight:800; color:#fff; font-size:clamp(1.6rem,1.4vw + 1rem,2.2rem); margin-bottom:44px;
  position:relative; z-index:1;
}
/* reuse .section-eyebrow but let the color be overridden (gold, on dark bg) */
.testimonial-section-v2 .section-eyebrow{ color:var(--eyebrow-color, var(--orange)); position:relative; z-index:1; }
.testimonial-section-v2 .section-eyebrow .line{ background:var(--eyebrow-color, var(--orange)); }

.testi-mini-wrap{ position:relative; z-index:1; padding:0 50px 50px; }
.testiSwiper{ padding:10px 6px 10px; }

.testi-mini-card{
  position:relative; overflow:hidden;
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.09);
  border-radius:20px; padding:30px 26px; backdrop-filter:blur(6px); height:100%;
  transition:transform .3s ease, background .3s ease, border-color .3s ease;
}
.testi-mini-card:hover{
  transform:translateY(-6px); background:rgba(255,255,255,.08); border-color:rgba(245,166,35,.35);
}
.testi-mini-quote{
  position:absolute; top:18px; right:20px; font-size:1.8rem; color:rgba(255,255,255,.06); pointer-events:none;
}
.testi-mini-top{ display:flex; align-items:center; gap:14px; margin-bottom:16px; }
.testi-mini-avatar{
  width:52px; height:52px; border-radius:50%; object-fit:cover; flex-shrink:0;
  border:2.5px solid var(--gold);
}
.testi-mini-name{ color:#fff; font-weight:700; font-size:.95rem; }
.testi-mini-role{ color:#c9b39f; font-size:.76rem; }
.testi-mini-card .stars{ color:var(--gold); font-size:.82rem; margin-bottom:12px; }
.testi-mini-text{
  color:#e5d5c5; font-size:.9rem; line-height:1.65; margin-bottom:16px; min-height:78px;
}
.testi-mini-tag{
  display:inline-block; background:rgba(232,114,12,.15); color:var(--gold);
  font-size:.7rem; font-weight:700; padding:5px 12px; border-radius:20px;
}

/* Nav arrows (reuses the same .custom-nav gradient circle look as the
   Popular Pujas slider) positioned just outside the card row. */
.testi-mini-nav{ top:45%; }
.testi-mini-prev{ left:-6px; }
.testi-mini-next{ right:-6px; }
.testi-mini-pagination{ position:relative; margin-top:26px; text-align:center; }
.testi-mini-pagination .swiper-pagination-bullet{ background:rgba(255,255,255,.25); opacity:1; }
.testi-mini-pagination .swiper-pagination-bullet-active{ background:var(--gold); width:22px; border-radius:5px; }

@media(max-width:767px){
  .testi-mini-wrap{ padding:0 6px 50px; }
  .testi-mini-nav{ display:none; } /* swipe gesture is enough on touch screens */
  .testi-mini-text{ min-height:0; }
}
