/* =========================================================
   Trimbakeshwar Puja Website — Global Styles
   Theme system uses CSS variables so light/dark switch instantly.
   ========================================================= */

/* NOTE: Google Fonts are NOT imported here any more. A CSS @import is
   render-blocking and was costing ~400ms on every page load. The fonts are
   now pulled in from the <head> of each HTML page with preconnect +
   non-blocking <link rel="stylesheet" media="print" onload="...">, and the
   font-family stacks below fall back to system fonts until they arrive. */

:root{
  --font-heading: 'Playfair Display', 'Noto Sans Devanagari', Georgia, 'Times New Roman', serif;
  --font-body: 'Poppins', 'Noto Sans Devanagari', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

  /* Single fixed WHITE / light theme — warm off-white background, the same
     orange-to-red gradient accents, dark readable text. */
  --bg: #ffffff;
  --bg-alt: #fbf4ea;
  --surface: #ffffff;
  --surface-2: #f4ece0;
  --text: #241a10;
  --text-soft: #4a3b2c;
  --text-muted: #8a7a68;
  --border: #ecdfcb;
  --primary: #ff5b1f;       /* orange */
  --primary-dark: #d81324;  /* red */
  --accent: #e8631f;        /* warm amber accent, tuned for white bg */
  --accent-light: #ff7a3d;
  --teal: #128f7a;          /* small teal eyebrow accent, as in reference */
  --shadow: 0 10px 30px rgba(90,50,10,0.10);
  --shadow-lg: 0 20px 60px rgba(90,50,10,0.16);
  --gradient-hero: linear-gradient(115deg, rgba(20,8,4,.72) 0%, rgba(90,24,12,.55) 48%, rgba(216,19,36,.30) 100%);
  --gradient-gold: linear-gradient(120deg, #ffb066, #ff5b1f 55%, #d81324);
  --radius: 18px;
  --radius-sm: 10px;
  --maxw: 1240px;
}

[data-theme="light"]{
  --bg: #ffffff;
  --bg-alt: #fbf4ea;
  --surface: #ffffff;
  --surface-2: #f4ece0;
  --text: #241a10;
  --text-soft: #4a3b2c;
  --text-muted: #8a7a68;
  --border: #ecdfcb;
  --primary: #ff5b1f;
  --primary-dark: #d81324;
  --accent: #e8631f;
  --accent-light: #ff7a3d;
  --shadow: 0 10px 30px rgba(90,50,10,0.10);
  --shadow-lg: 0 20px 60px rgba(90,50,10,0.16);
  --gradient-hero: linear-gradient(115deg, rgba(20,8,4,.72) 0%, rgba(90,24,12,.55) 48%, rgba(216,19,36,.30) 100%);
  --gradient-gold: linear-gradient(120deg, #ffb066, #ff5b1f 55%, #d81324);
}

*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  transition: background .35s ease, color .35s ease;
  overflow-x: hidden;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
}
input, textarea, select{
  -webkit-user-select: text;
  -moz-user-select: text;
  user-select: text;
}
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration:none; }
h1,h2,h3,h4{ font-family: var(--font-heading); line-height:1.2; margin: 0 0 .5em; color: var(--text); }
p{ line-height:1.75; color: var(--text-soft); margin:0 0 1em; }
ul{ padding-left: 1.2em; }
button{ font-family: inherit; cursor:pointer; }
.container{ max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }
section{ padding: 72px 0; }
.section-alt{ background: var(--bg-alt); }

/* ---------- Utility ---------- */
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-size: .8rem; letter-spacing: .14em; text-transform: uppercase;
  color: var(--teal, var(--primary)); font-weight:600; margin-bottom: 10px;
}
.eyebrow::before{ content:'卐'; opacity:0; } /* placeholder removed visually */
.eyebrow .dot{ width:6px;height:6px;border-radius:50%; background: var(--accent); }
.gold-text{
  background: var(--gradient-gold);
  -webkit-background-clip: text; background-clip:text; color: transparent;
}
.center{ text-align:center; }
.muted{ color: var(--text-muted); }
.grid{ display:grid; gap: 28px; }
.grid-2{ grid-template-columns: repeat(2,1fr); }
.grid-3{ grid-template-columns: repeat(3,1fr); }
.grid-4{ grid-template-columns: repeat(4,1fr); }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding: 13px 26px; border-radius: 999px; font-weight:600; font-size: .96rem;
  border: 1px solid transparent; transition: transform .25s ease, box-shadow .25s ease, background .25s ease;
  white-space: nowrap;
}
.btn-primary{
  background: linear-gradient(120deg, var(--primary), var(--primary-dark));
  color: #fff8ee; box-shadow: var(--shadow);
}
.btn-primary:hover{ transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.btn-gold{
  background: var(--gradient-gold); color:#fff6ee; box-shadow: var(--shadow);
}
.btn-gold:hover{ transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.btn-outline{
  background: transparent; border-color: var(--border); color: var(--text);
}
.btn-outline:hover{ border-color: var(--primary); color: var(--primary); }
.btn-outline-hero{ color:#fff; border-color: rgba(255,255,255,.5); }
.btn-outline-hero:hover{ color:#fff; border-color:#fff; }
.btn-sm{ padding: 8px 16px; font-size: .82rem; }
.btn-block{ width:100%; justify-content:center; }

/* ---------- Header ---------- */
.site-header{
  position: sticky; top:0; z-index: 1000;
  background: linear-gradient(120deg, #ff7a3d 0%, #ff5b1f 55%, #e2431c 100%);
  border-bottom: none;
  box-shadow: 0 3px 16px rgba(200,50,10,.22);
}
/* Header sits on an orange gradient — override text/icon colours for contrast */
.site-header .brand, .site-header .brand *{ color:#fff !important; }
.site-header .nav-desktop a{ color: rgba(255,255,255,.92); }
.site-header .nav-desktop a.active, .site-header .nav-desktop a:hover{ color:#fff; }
.site-header .nav-desktop a.active::after{ background:#fff; }
.site-header .nav-dd-trigger{ color: rgba(255,255,255,.92); }
.site-header .nav-dd-trigger:hover{ color:#fff; }
.site-header .icon-btn{ background: rgba(255,255,255,.2); border-color: rgba(255,255,255,.4); color:#fff; }
.site-header .icon-btn:hover{ background:#fff; color: var(--primary); border-color:#fff; }
.site-header .translate-btn{ background: rgba(255,255,255,.2); border-color: rgba(255,255,255,.4); color:#fff; }
.site-header .translate-control.open .translate-btn{ background:#fff; color: var(--primary); border-color:#fff; }
.site-header #hamburger-btn{ color:#fff; background: rgba(255,255,255,.18); border-color: rgba(255,255,255,.35); }
.site-header .call-desktop-only.btn-gold{ background:#fff; color: var(--primary); box-shadow:none; }
.site-header .call-desktop-only.btn-gold:hover{ background:#fff3ea; }
.site-header .container{ padding-left: 30px; padding-right: 30px; }
@media (max-width: 480px){
  .site-header .container{ padding-left: 18px; padding-right: 18px; }
}
/* ---------- Header layout ----------
   Three fixed zones: brand | nav | actions. Nothing is allowed to wrap onto a
   second line, and the nav zone is the only one that flexes. This is what
   keeps the menu aligned when Google Translate swaps short Hindi labels
   ("प्रश्नोत्तर") for much longer English ones ("Questions and Answers") —
   previously the nav wrapped and shoved the buttons out of place. */
.header-top{
  display:flex; align-items:center; justify-content:space-between;
  gap: clamp(10px, 1.6vw, 20px);
  padding: 11px 0;
  min-height: 68px;
  flex-wrap: nowrap;
}
.brand{ display:flex; align-items:center; gap:12px; min-width:0; flex-shrink:0; }
.brand img{ width:44px; height:44px; flex-shrink:0; filter: drop-shadow(0 3px 8px rgba(0,0,0,.25)); }
.brand-text{ min-width:0; display:flex; flex-direction:column; justify-content:center; gap:1px; }
.brand-name{
  font-family: var(--font-heading); font-weight:800; font-size:1.12rem; line-height:1.15;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  color: var(--text); text-transform: uppercase; letter-spacing:.02em;
}
.footer-brand{
  color: var(--text); text-transform: uppercase; letter-spacing:.02em; font-weight:800;
}
.brand-tag{ font-size:.7rem; color: var(--text-muted); letter-spacing:.04em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.nav-desktop{
  display:flex; align-items:center; justify-content:center;
  gap: clamp(12px, 1.4vw, 24px);
  flex-wrap: nowrap;          /* never break onto a second line */
  flex: 0 1 auto; min-width: 0;
  overflow: visible;          /* NOTE: overflow-x:hidden + overflow-y:visible computes to auto and would clip the Puja dropdown; the JS fit-check (initHeaderFit) prevents overflow instead */
}
.nav-desktop a{
  font-weight:500; font-size: clamp(.8rem, .9vw, .94rem); line-height:1.25;
  position:relative; padding: 6px 0; color: var(--text-soft);
  white-space:nowrap; flex-shrink:0;
}
.nav-desktop a.active, .nav-desktop a:hover{ color: var(--primary); }
.nav-desktop a.active::after{
  content:''; position:absolute; left:0; right:0; bottom:-2px; height:2px; background: var(--gradient-gold); border-radius:2px;
}
.header-actions{ display:flex; align-items:center; gap:8px; flex-shrink:0; }
.icon-btn{
  width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background: var(--surface-2); border:1px solid var(--border); color: var(--text); transition: all .2s ease;
  flex-shrink:0;
}
.icon-btn:hover{ background: var(--primary); color:#fff; border-color: var(--primary); }

/* ---------- Translate control ----------
   A custom pill (globe icon + "Translate" label) that opens our own
   dropdown of languages. The actual Google "Website Translator" widget
   still does the translating, but it's rendered fully off-screen — we
   just read its <select> and set its value from our own UI, so visitors
   only ever see our styled control instead of Google's default markup. */
.translate-control{ position:relative; }
.translate-btn{
  width:auto; border-radius:999px; padding:0 14px 0 12px; gap:7px; font-size:.85rem; font-weight:600;
}
.translate-btn svg{ font-size:1.05rem; flex-shrink:0; }
.translate-btn-label{ white-space:nowrap; }
.translate-control.open .translate-btn{ background: var(--primary); color:#fff; border-color: var(--primary); }
.translate-dropdown{
  position:absolute; top: calc(100% + 10px); right:0; min-width:170px;
  background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-sm);
  box-shadow: var(--shadow-lg); padding:6px; display:none; flex-direction:column; gap:2px;
  max-height: 60vh; overflow-y:auto; z-index: 1100;
}
.translate-control.open .translate-dropdown{ display:flex; }
.translate-item{
  display:block; width:100%; text-align:left; padding:9px 12px; border-radius:8px;
  background:transparent; border:none; color: var(--text); font-family: var(--font-body);
  font-size:.9rem; cursor:pointer; transition: background .15s ease, color .15s ease;
}
.translate-item:hover{ background: var(--surface-2); color: var(--primary); }
.translate-item.active{ background: var(--surface-2); color: var(--primary); font-weight:600; }

/* Google's real widget: present in the DOM (required for it to work) but
   invisible and out of the layout flow entirely. */
/* Off-screen but NOT aria-hidden. An aria-hidden container that still holds a
   focusable <select> is an accessibility-tree error (PageSpeed "ARIA hidden
   element must not be focusable"), so instead the widget is taken out of the
   layout here and its <select> is given tabindex="-1" from main.js. */
.gtranslate-hidden{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); clip-path: inset(50%); white-space:nowrap; pointer-events:none;
}
body > .skiptranslate.goog-te-gadget{ display:none !important; } /* Google sometimes duplicates the gadget at body level */
.goog-te-banner-frame, .goog-te-balloon-frame{ display:none !important; }
body{ top: 0 !important; position: static !important; }
.goog-text-highlight{ background: none !important; box-shadow: none !important; }
/* Google wraps every translated string in <font> tags; force them to inherit
   so translated text keeps the exact size/weight/line-height of the original
   and nothing in the header or cards shifts out of alignment. */
font, .goog-te-gadget font{
  font: inherit !important; color: inherit !important;
  background: none !important; vertical-align: baseline !important;
}
.site-header .brand-name, .site-header .brand-tag{ /* brand stays as written */ }

.hamburger{ display:none; }
.mobile-nav{ display:none; }
.call-desktop-only{ display:inline-flex; }

/* Shared "compact header" look. It is triggered two ways:
   (a) by the media query below, for small screens, and
   (b) by the .nav-collapsed class, which main.js adds whenever the menu text
       is genuinely too wide to fit — which is exactly what happens after
       Google Translate swaps the short Hindi labels for longer English,
       Marathi or Bengali ones. Measuring instead of guessing a breakpoint
       means the header can never overlap in ANY language. */
/* Step 1 of the fit-check (see initHeaderFit in main.js): squeeze the header
   a little before giving up on the full menu. Longer translated labels usually
   fit again after this and the visitor keeps the desktop navigation. */
.site-header.header-tight .brand-tag{ display:none; }
.site-header.header-tight .brand-name{ font-size:1rem; }
.site-header.header-tight .brand img{ width:38px; height:38px; }
.site-header.header-tight .nav-desktop{ gap:13px; }
.site-header.header-tight .nav-desktop a{ font-size:.82rem; }
.site-header.header-tight .translate-btn-label{ display:none; }
.site-header.header-tight .translate-btn{ width:40px; padding:0; }
.site-header.header-tight .header-social{ display:none; }

/* Step 2: the menu still doesn't fit -> hand over to the hamburger.
   Triggered either by the class (any width, any language) or by the media
   query below (small screens). */
.site-header.nav-collapsed .nav-desktop{ display:none; }
.site-header.nav-collapsed .hamburger{ display:flex; }
.site-header.nav-collapsed .call-desktop-only{ display:none; }
.site-header.nav-collapsed .header-social{ display:none; }
.site-header.nav-collapsed .mobile-nav.open{
  display:flex; flex-direction:column; gap:2px; padding:12px 20px 24px;
  border-top:1px solid var(--border); background: var(--bg);
}
.site-header.nav-collapsed .mobile-nav a{
  padding:13px 4px; border-bottom:1px dashed var(--border); font-weight:500;
}

/* Baseline breakpoint. Raised from 920px to 1080px because the English and
   Marathi translations of the menu are much wider than the Hindi originals. */
@media (max-width: 1080px){
  .nav-desktop{ display:none; }
  .hamburger{ display:flex; }
  .call-desktop-only{ display:none; }
  .header-social{ display:none; }
  .mobile-nav.open{
    display:flex; flex-direction:column; gap: 2px; padding: 12px 20px 24px;
    border-top: 1px solid var(--border); background: var(--bg);
  }
  .mobile-nav a{ padding: 13px 4px; border-bottom: 1px dashed var(--border); font-weight:500; }
}

/* ---------- Hero ---------- */
.hero{
  position: relative; min-height: 86vh; display:flex; align-items:center;
  background-size: cover; background-position: center;
  isolation: isolate;
}
.hero::before{
  content:''; position:absolute; inset:0; background: var(--gradient-hero); z-index:-1;
}
/* Soft scrim only on the side where the text sits, so the headline stays
   readable while the right-hand side of the temple photo remains clear. */
.hero::after{
  content:''; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background: linear-gradient(90deg, rgba(38,10,6,.62) 0%, rgba(38,10,6,.34) 38%, rgba(38,10,6,0) 68%);
}
.hero-content{ color:#fff8ee; max-width: 700px; position:relative; z-index:1; }
.hero-flex{
  display:flex; align-items:center; justify-content:space-between;
  gap: 48px; flex-wrap: wrap;
}
.hero h1{ color:#fff; font-size: clamp(2.1rem, 5vw, 3.6rem); text-shadow: 0 6px 30px rgba(0,0,0,.35); }
.hero p{ color: #ffe9d2; font-size: 1.12rem; max-width: 620px;
  /* Tight dark shadow, not just the big soft one on the heading — this is
     what keeps text readable at the point where the left-side scrim fades
     out over a bright part of the temple photo. Measured contrast at the
     worst point was 2.88:1 without this; a tight shadow restores a safe
     margin without needing to darken the photo itself. */
  text-shadow: 0 1px 3px rgba(0,0,0,.7), 0 0 14px rgba(0,0,0,.5);
}
.hero-cta{ display:flex; gap:14px; flex-wrap:wrap; margin-top: 26px; }
.hero-badges{ display:flex; gap: 22px; margin-top: 42px; flex-wrap:wrap; }
.hero-badge{ display:flex; flex-direction:column; }
.hero-badge b{ font-size:1.5rem; font-family: var(--font-heading); color: var(--accent-light); display:flex; align-items:center; gap:7px; text-shadow: 0 1px 3px rgba(0,0,0,.7), 0 0 14px rgba(0,0,0,.55); }
.hero-badge span{ font-size:.78rem; color:#ffe9d2; opacity:.85; text-shadow: 0 1px 3px rgba(0,0,0,.7), 0 0 14px rgba(0,0,0,.55); }
.chip svg{ margin-right: 2px; }

/* circular Panditji photo shown on the right side of the hero */
.hero-photo-wrap{
  position: relative; flex-shrink: 0; width: 300px; height: 300px;
  display:flex; align-items:center; justify-content:center;
  z-index: 2;
}
.hero-photo-ring{
  position:absolute; inset: -14px; border-radius: 50%;
  background: conic-gradient(from 0deg, var(--accent-light), transparent 30%, var(--accent-light) 60%, transparent 90%);
  animation: spin-ring 12s linear infinite;
  opacity: .8;
}
@keyframes spin-ring{ to{ transform: rotate(360deg); } }
.hero-photo{
  position: relative; width: 100%; height: 100%; border-radius: 50%;
  object-fit: cover; object-position: top center;
  border: 5px solid rgba(255, 249, 235, 0.9);
  box-shadow: 0 25px 60px rgba(0,0,0,.5);
}
.hero-photo-caption{
  position: absolute; bottom: -14px; left: 50%; transform: translateX(-50%);
  background: var(--gradient-gold); color:#fff6ee; padding: 8px 20px; border-radius: 999px;
  font-size: .8rem; white-space: nowrap; box-shadow: var(--shadow);
}

/* Centered hero variant (matches approved reference design) — full-bleed
   photo, dark scrim, everything centered instead of the old left+photo split. */
.hero-centered{ justify-content:center; text-align:center; }
.hero-centered .hero-content{ max-width: 760px; margin: 0 auto; }
.hero-centered .hero-cta{ justify-content:center; }
.hero-centered::after{ display:none; }
.hero:has(.hero-centered)::after{
  background: linear-gradient(0deg, rgba(5,5,6,.86) 0%, rgba(5,5,6,.55) 45%, rgba(5,5,6,.35) 100%);
}

/* Plain numbers-only stats strip, shown as its own section under the hero. */
.stats-strip{ padding: 56px 0; background: var(--bg-alt); border-bottom:1px solid var(--border); }
.stats-grid{ text-align:center; }
.stat-plain{ display:flex; flex-direction:column; gap:6px; }
.stat-plain b{ font-family: var(--font-heading); font-size: clamp(3rem,9vw,4.6rem); line-height:1.05; font-weight:800; background: var(--gradient-gold); -webkit-background-clip:text; background-clip:text; color:transparent; }
.stat-plain span{ color: var(--text); font-size:clamp(1.05rem,2.6vw,1.3rem); font-weight:600; }

@media (max-width: 980px){
  /* On mobile the text is centred over the photo, so the one-sided scrim
     is swapped for a gentle top-to-bottom one. */
  .hero::after{
    background: linear-gradient(180deg, rgba(38,10,6,.30) 0%, rgba(38,10,6,.52) 55%, rgba(38,10,6,.62) 100%);
  }
  .hero-flex{ flex-direction: column; justify-content: center; text-align: center; }
  .hero-content{ max-width: 100%; }
  .hero p{ margin-left: auto; margin-right: auto; }
  .hero-cta, .hero-badges{ justify-content: center; }
  .hero-photo-wrap{ width: 220px; height: 220px; order: -1; }
}
@media (max-width: 480px){
  .hero-photo-wrap{ width: 170px; height: 170px; }
  .hero-photo-caption{ font-size: .7rem; padding: 6px 14px; }
}

/* petal / flower drop animation */
.petal-layer{ position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index: 5; }
.petal{
  position:absolute; top:-40px; will-change: transform, opacity;
  animation-name: petal-fall; animation-timing-function: linear; animation-iteration-count: infinite;
  opacity: .9;
}
@keyframes petal-fall{
  0%{ transform: translate3d(0,-10vh,0) rotate(0deg); opacity:0; }
  8%{ opacity:.95; }
  100%{ transform: translate3d(var(--drift,40px), 110vh, 0) rotate(360deg); opacity:.15; }
}

/* ---------- Cards ---------- */
.card{
  background: var(--surface); border:1px solid var(--border); border-radius: var(--radius);
  overflow:hidden; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
  box-shadow: var(--shadow);
}
.card:hover{ transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: var(--accent); }
.card-img{ position:relative; aspect-ratio: 4/3; overflow:hidden; }
.card-img img{ width:100%; height:100%; object-fit: cover; transition: transform .5s ease; }
.card:hover .card-img img{ transform: scale(1.08); }
.card-img::after{ content:''; position:absolute; inset:0; background: linear-gradient(180deg, transparent 38%, rgba(0,0,0,.88) 100%); pointer-events:none; }
.card-body{ padding: 20px 22px 24px; }
.card-body h3{ font-size:1.15rem; margin-bottom:8px; }
.card-body p{ font-size:.92rem; margin-bottom: 14px; }

/* Puja/service cards (i.e. every .card-body that is NOT a blog card): title
   overlays the bottom of the photo, description is hidden, so the grid reads
   like the approved reference design — clean photo tiles with a name on
   them, actions in a slim strip underneath. */
.card-body:not(:has(.blog-meta)){
  margin-top: -60px; position: relative; z-index: 2; background: transparent; padding-left:0; padding-right:0; padding-bottom:0;
}
.card-body:not(:has(.blog-meta)) > a:first-child{ display:block; padding: 0 20px 16px; }
.card-body:not(:has(.blog-meta)) > a:first-child h3{ color:#fff; text-shadow: 0 2px 12px rgba(0,0,0,.7); margin:0; }
.card-body:not(:has(.blog-meta)) > p{ display:none; }
.card-body:not(:has(.blog-meta)) > .puja-card-actions{ margin-top: 60px; padding: 0 20px; }
.card-body:not(:has(.blog-meta)) > .puja-card-phone{ margin: 8px 20px 20px; display:inline-flex; }
.puja-card-actions{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom: 12px; }
.puja-card-actions .btn{ flex: 1 1 auto; justify-content: center; }
.puja-card-phone{ font-size: .85rem; }
.badge{
  display:inline-block; font-size:.72rem; font-weight:600; padding: 4px 12px; border-radius:999px;
  background: var(--surface-2); color: var(--primary); border: 1px solid var(--border);
}
.card-img .badge{ position:absolute; top:14px; left:14px; background: rgba(0,0,0,.55); color:#ffe; border:none; backdrop-filter: blur(4px); }
.puja-icon-badge{
  position:absolute; top:14px; right:14px; width:38px; height:38px; border-radius:50%;
  background: var(--gradient-gold); color:#fff6ee; display:flex; align-items:center; justify-content:center;
  font-size:1.1rem; box-shadow: var(--shadow);
}
.price-badge{
  position:absolute; bottom:14px; right:14px; background: var(--primary-dark); color:#fff8ee;
  font-weight:700; font-size:.95rem; padding: 6px 14px; border-radius: 999px; box-shadow: var(--shadow);
}

/* professional icons (react-icons) — consistent sizing + vertical alignment
   everywhere they appear next to text, inside buttons, chips, badges, etc. */
.btn svg, .chip svg, .badge svg, .phone-link svg, .hero-badge svg,
.icon-btn svg, .whatsapp-float svg, .footer-col svg, .info-panel svg,
.lightbox-close svg {
  vertical-align: -2px;
  flex-shrink: 0;
}
.icon-btn svg, .whatsapp-float svg, .lightbox-close svg{ font-size: 1.1em; }
.social-row .icon-btn svg{ font-size: 1rem; }

/* shine sweep effect */
.shine{ position:relative; overflow:hidden; }
.shine::after{
  content:''; position:absolute; top:0; left:-150%; width:60%; height:100%;
  background: linear-gradient(120deg, transparent, rgba(255,255,255,.35), transparent);
  transform: skewX(-20deg); transition: left 0s;
}
.shine:hover::after{ left:150%; transition: left .9s ease; }

/* ---------- Section headers ---------- */
.section-head{ max-width: 700px; margin: 0 auto 46px; text-align:center; }
.section-head h2, .section-head h1{ font-size: clamp(1.7rem, 3.4vw, 2.5rem); }
.list-head{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.list-head h1{ font-size: clamp(1.6rem, 3.2vw, 2.3rem); margin:0; }
.list-head .eyebrow{ margin-bottom:8px; }
@media (max-width: 640px){ .list-head{ text-align:center; justify-content:center; } .list-head > a{ width:100%; justify-content:center; } }

/* ---------- FAQ ---------- */
.faq-item{
  border: 1px solid var(--border); border-radius: var(--radius-sm); margin-bottom: 12px;
  background: var(--surface); overflow:hidden;
}
.faq-q{
  display:flex; align-items:center; justify-content:space-between; gap: 14px;
  padding: 16px 20px; cursor:pointer; font-weight:600; font-size:.98rem;
}
.faq-q .plus{ transition: transform .3s ease; color: var(--primary); font-size:1.3rem; flex-shrink:0; }
.faq-item.open .plus{ transform: rotate(45deg); }
.faq-a{ max-height:0; overflow:hidden; transition: max-height .35s ease, padding .35s ease; padding: 0 20px; }
.faq-item.open .faq-a{ max-height: 600px; padding: 0 20px 18px; }

/* ---------- Gallery ---------- */
.gallery-grid{
  display:grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
}
.gallery-item{ position:relative; border-radius: var(--radius-sm); overflow:hidden; aspect-ratio:1; cursor:pointer; }
.gallery-item img{ width:100%; height:100%; object-fit:cover; transition: transform .5s ease; }
.gallery-item:hover img{ transform: scale(1.12); }
.gallery-item::after{
  content:''; position:absolute; inset:0; background: linear-gradient(0deg, rgba(0,0,0,.55), transparent 55%);
  opacity:0; transition: opacity .3s ease;
}
.gallery-item:hover::after{ opacity:1; }
.lightbox{
  position:fixed; inset:0; background: rgba(10,5,3,.92); z-index: 2000;
  display:flex; align-items:center; justify-content:center; padding: 30px;
}
.lightbox img{ max-width: 92vw; max-height: 86vh; border-radius: 12px; box-shadow: var(--shadow-lg); }
.lightbox-close{
  position:absolute; top:20px; right:26px; color:#fff; font-size:2rem; background:none; border:none;
}

/* ---------- Puja Detail ---------- */
.puja-hero{ position:relative; border-radius: var(--radius); overflow:hidden; margin-bottom: 40px; }
.puja-hero img{ width:100%; max-height:420px; object-fit:cover; }
.puja-hero .overlay{
  position:absolute; inset:0; background: linear-gradient(0deg, rgba(0,0,0,.75), transparent 60%);
  display:flex; align-items:flex-end; padding: 30px;
}
.puja-hero h1{ color:#fff; margin:0; font-size: clamp(1.6rem,3.6vw,2.4rem); }
.steps-list{ counter-reset: step; list-style:none; padding:0; }
.steps-list li{
  counter-increment: step; position:relative; padding: 16px 16px 16px 58px; margin-bottom:12px;
  background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-sm);
}
.steps-list li::before{
  content: counter(step); position:absolute; left:14px; top:50%; transform: translateY(-50%);
  width:32px; height:32px; border-radius:50%; background: var(--gradient-gold); color:#fff6ee;
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.9rem;
}
.info-panel{
  background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 24px; position: sticky; top: 100px;
}
.info-panel .row{ display:flex; justify-content:space-between; padding: 10px 0; border-bottom: 1px dashed var(--border); font-size:.92rem; }
.info-panel .row:last-child{ border-bottom:none; }
.chip-list{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{ background: var(--surface); border:1px solid var(--border); border-radius:999px; padding: 6px 13px; font-size:.82rem; }

.video-wrap{ position:relative; padding-top:56.25%; border-radius: var(--radius); overflow:hidden; box-shadow: var(--shadow); margin: 22px 0; }
.video-wrap iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }

/* ---------- Footer ---------- */
.site-footer{ background: var(--bg-alt); border-top:1px solid var(--border); padding: 60px 0 24px; margin-top: 60px; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 36px; margin-bottom: 40px; }
.footer-col h4{ font-size:1rem; margin-bottom: 16px; }
.footer-col a, .footer-col p{ display:block; font-size:.9rem; color: var(--text-muted); margin-bottom:10px; }
.footer-col a:hover{ color: var(--primary); }
.social-row{ display:flex; gap:10px; margin-top:10px; }
.footer-bottom{
  border-top:1px solid var(--border); padding-top: 20px; display:flex; justify-content:space-between;
  flex-wrap:wrap; gap:10px; font-size:.82rem; color: var(--text-muted);
}

/* floating action buttons — WhatsApp bottom-left, Call bottom-right */
.whatsapp-float{
  position:fixed; bottom:22px; right:22px; z-index: 900;
  width:58px; height:58px; border-radius:50%; background:#25D366; color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:1.6rem;
  box-shadow: 0 10px 26px rgba(37,211,102,.5); animation: pulse-wa 2.4s infinite;
}
.call-float{
  position:fixed; bottom:22px; left:22px; z-index: 900;
  width:58px; height:58px; border-radius:50%;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:1.5rem;
  box-shadow: 0 10px 26px rgba(184,71,31,.5); animation: pulse-call 2.4s infinite;
}
@keyframes pulse-wa{
  0%{ box-shadow: 0 0 0 0 rgba(37,211,102,.55); }
  70%{ box-shadow: 0 0 0 16px rgba(37,211,102,0); }
  100%{ box-shadow: 0 0 0 0 rgba(37,211,102,0); }
}
@keyframes pulse-call{
  0%{ box-shadow: 0 0 0 0 rgba(184,71,31,.55); }
  70%{ box-shadow: 0 0 0 16px rgba(184,71,31,0); }
  100%{ box-shadow: 0 0 0 0 rgba(184,71,31,0); }
}
@media (max-width: 640px){
  .whatsapp-float, .call-float{ width:50px; height:50px; font-size:1.3rem; bottom:16px; }
  .whatsapp-float{ right:16px; }
  .call-float{ left:16px; }
}

/* ---------- Puja Advisor Popup (15s timed) ---------- */
@keyframes popup-fade-in{
  from{ opacity:0; }
  to{ opacity:1; }
}
@keyframes popup-pop-in{
  from{ opacity:0; transform: translateY(24px) scale(.94); }
  to{ opacity:1; transform: translateY(0) scale(1); }
}
.advisor-popup-backdrop{
  position: fixed; inset: 0; z-index: 3000;
  background: rgba(10,5,3,.65); backdrop-filter: blur(3px);
  display:flex; align-items:center; justify-content:center; padding: 20px;
  animation: popup-fade-in .35s ease;
}
.advisor-popup{
  position: relative;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
  max-width: 380px; width: 100%; padding: 36px 28px 28px; text-align: center;
  box-shadow: var(--shadow-lg);
  animation: popup-pop-in .4s cubic-bezier(.2,.9,.3,1.3);
  max-height: 90vh; overflow-y: auto;
}
@media (max-width: 480px){
  .advisor-popup{ padding: 30px 20px 22px; }
  .advisor-popup-photo{ width: 68px; height: 68px; }
  .advisor-popup-title{ font-size: 1.05rem; }
}
.advisor-popup-close{
  position: absolute; top: 14px; right: 14px; width: 32px; height: 32px; border-radius: 50%;
  background: var(--surface-2); border: 1px solid var(--border); color: var(--text);
  display:flex; align-items:center; justify-content:center; font-size: .85rem;
}
.advisor-popup-close:hover{ background: var(--primary); color:#fff; border-color: var(--primary); }
.advisor-popup-photo{
  width: 84px; height: 84px; border-radius: 50%; object-fit: cover; object-position: top center;
  border: 3px solid var(--accent); margin: 0 auto 12px; display:block;
  box-shadow: 0 8px 22px rgba(0,0,0,.25);
}
.advisor-popup-name{ font-weight: 700; color: var(--primary); font-size: .92rem; margin-bottom: 10px; }
.advisor-popup-title{ font-size: 1.2rem; margin-bottom: 10px; }
.advisor-popup-message{ font-size: .9rem; margin-bottom: 22px; }
.advisor-popup-actions{ display:flex; flex-direction: column; gap: 10px; }

/* forms */
.form-field{ margin-bottom: 18px; }
.form-field label{ display:block; margin-bottom:7px; font-size:.88rem; font-weight:600; }
.form-field input, .form-field select, .form-field textarea{
  width:100%; padding: 13px 16px; border-radius: var(--radius-sm); border:1px solid var(--border);
  background: var(--surface); color: var(--text); font-family: inherit; font-size:.95rem;
}
.form-field textarea{ resize: vertical; min-height:120px; }
.form-field input:focus, .form-field select:focus, .form-field textarea:focus{ outline:2px solid var(--accent); }

/* blog */
.blog-meta{ display:flex; gap:14px; font-size:.8rem; color: var(--text-muted); margin-bottom:10px; }
/* Blog cards get the reference design's two-tone banner with a circular
   framed photo, instead of a plain full-bleed rectangle photo. */
.card:has(.blog-meta) .card-img{
  aspect-ratio: 16/10;
  background: linear-gradient(120deg, var(--primary-dark) 0%, var(--primary-dark) 44%, #0d1524 44%, #0d1524 100%);
  display:flex; align-items:center; justify-content:center; padding: 16px;
}
.card:has(.blog-meta) .card-img::after{ display:none; }
.card:has(.blog-meta) .card-img img{
  width:auto; height:82%; aspect-ratio:1/1; border-radius:50%; object-fit:cover;
  border:4px solid var(--primary); box-shadow: 0 10px 26px rgba(0,0,0,.5); flex-shrink:0;
}
.card:has(.blog-meta) .card-img .badge{ top:10px; left:10px; }
.card:has(.blog-meta):hover .card-img img{ transform:none; }
.prose h2{ font-size:1.4rem; margin-top:1.6em; }
.prose h3{ font-size:1.15rem; margin-top:1.3em; }
.prose ul{ margin-bottom:1.2em; }
.prose li{ color: var(--text-soft); margin-bottom:.4em; line-height:1.7; }

/* misc */
.divider-om{ text-align:center; font-size:1.4rem; color: var(--accent); margin: 10px 0 30px; letter-spacing:.5em; }
.tag-row{ display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.breadcrumb{ font-size:.82rem; color: var(--text-muted); margin-bottom: 18px; }
.breadcrumb a:hover{ color: var(--primary); }
.notice-box{
  background: var(--surface-2); border-left: 4px solid var(--accent); border-radius: var(--radius-sm);
  padding: 16px 20px; font-size:.9rem; color: var(--text-soft); margin: 20px 0;
}

/* two-column layouts used on Puja detail / About / Contact pages */
.split-2-1{ display:grid; grid-template-columns: 2fr 1fr; gap: 40px; }
.split-1-1{ display:grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items:center; }
.split-12-1{ display:grid; grid-template-columns: 1.2fr 1fr; gap: 40px; }

@media (max-width: 980px){
  .grid-2, .grid-3, .grid-4{ grid-template-columns: 1fr 1fr; }
  .footer-grid{ grid-template-columns: 1fr 1fr; }
  .gallery-grid{ grid-template-columns: repeat(3,1fr); }
  .split-2-1, .split-1-1, .split-12-1{ grid-template-columns: 1fr; }
}
@media (max-width: 480px){
  .brand-tag{ display:none; }
  .brand-name{
    font-size:.85rem; max-width: 130px; white-space:nowrap;
    overflow:hidden; text-overflow:ellipsis;
  }
  .brand img{ width:34px; height:34px; }
  .icon-btn{ width:34px; height:34px; font-size:.9rem; }
  .translate-btn{ width:34px; padding:0; }
  .translate-btn-label{ display:none; }
  .translate-dropdown{ right:-8px; }
  .header-actions{ gap:6px; }
}
@media (max-width: 640px){
  section{ padding: 52px 0; }
  .grid-2, .grid-3, .grid-4{ grid-template-columns: 1fr; }
  .footer-grid{ grid-template-columns: 1fr; }
  .gallery-grid{ grid-template-columns: repeat(2,1fr); }
  .hero{ min-height: 74vh; text-align:center; }
  .hero-cta{ justify-content:center; }
  .hero-badges{ justify-content:center; }
  .info-panel{ position:static; }
  .split-2-1, .split-1-1, .split-12-1{ gap: 24px; }
}

/* reduced motion */
@media (prefers-reduced-motion: reduce){
  .petal, .whatsapp-float, .call-float{ animation: none !important; }
  html{ scroll-behavior:auto; }
}

/* Panditji photo — fixed portrait aspect ratio so the source photo (whatever
   its original size) always renders at a sensible, consistent size instead
   of stretching to its full natural height. */
.pandit-photo{
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: top center;
  border-radius: var(--radius);
  display: block;
}
@media (max-width: 640px){
  .pandit-photo{ aspect-ratio: 4 / 5; }
}
.phone-link{
  color: var(--primary); font-weight:600; text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--primary) 40%, transparent);
  text-underline-offset: 3px;
  display: inline-flex; align-items: center; gap: 6px;
}
.phone-link:hover{ color: var(--primary-dark); }

/* footer credit line */
.footer-credit{ font-size:.78rem; color: var(--text-muted); }
.footer-credit a{ color: var(--text-muted); text-decoration: underline; }
::selection{ background: var(--accent); color: #1a0d00; }

/* scrollbar */
::-webkit-scrollbar{ width:10px; }
::-webkit-scrollbar-track{ background: var(--bg); }
::-webkit-scrollbar-thumb{ background: var(--primary); border-radius:6px; }

/* =========================================================
   PERFORMANCE / LAYOUT-STABILITY
   Added to cut Largest Contentful Paint and remove the layout
   shifts (CLS) that were dragging the PageSpeed score down.
   ========================================================= */

/* Every <img> gets an intrinsic box from its width/height attributes, so the
   browser reserves the right space before the file arrives and nothing jumps. */
img{ max-width: 100%; height: auto; }

/* Long pages: let the browser skip layout/paint work for sections that are
   still far below the fold. contain-intrinsic-size keeps the scrollbar honest. */
.card-img img, .gallery-item img{ display:block; }
.gallery-item{ contain: content; }

/* The header is a fixed height before fonts load, so the hero never shifts
   downward when Poppins / Playfair finally arrive. */
.site-header{ min-height: 68px; }

/* Google Translate replaces text after first paint. Reserving a minimum width
   on the nav links keeps the header from visibly re-flowing at that moment. */
.nav-desktop a{ display:inline-block; }

/* Spinning gold ring and falling petals are pure decoration — switch them off
   on small screens where they cost the most main-thread time for the least. */
@media (max-width: 640px){
  .hero-photo-ring{ animation: none; }
  .petal-layer{ display: none; }
}
@media (prefers-reduced-motion: reduce){
  .hero-photo-ring{ animation: none !important; }
  .petal-layer{ display: none !important; }
}

/* The nav has overflow:hidden as a safety net (in case JS is blocked and the
   fit-check never runs). That would clip the keyboard focus ring on the first
   and last link, so pull the outline inside the box. */
.nav-desktop a:focus-visible{ outline: 2px solid var(--accent); outline-offset: -3px; border-radius: 4px; }

/* Skip-to-content link for keyboard and screen-reader users. Invisible until
   it is focused, then it appears at the top-left. */
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:2000;
  background: var(--primary); color:#fff; padding:10px 18px;
  border-radius: 0 0 8px 0; font-weight:600; text-decoration:none;
}
.skip-link:focus{ left:0; }

/* Contact details must always be selectable/copyable, even though the rest of
   the site has copy-protection switched on. A visitor has to be able to copy
   the phone number and the address. */
.phone-link, .row, address, .footer-col a, .contact-info-panel{
  -webkit-user-select: text !important;
  -moz-user-select: text !important;
  user-select: text !important;
}

/* =========================================================
   REDESIGN 2026 — नया लेआउट (हाथ से बने sketch के अनुसार)
   1) Header (unchanged) -> 2) Temple slider (home)
   3) About Us -> 4) Statistics -> 5) Puja section (no cards)
   6) Why choose us -> 7) How to find us -> Footer
   Puja detail page: Name-header -> Image-header -> Main-section
   ========================================================= */

/* ---------- 1. Puja dropdown mega-menu (replaces plain "पूजाएँ" link) ---------- */
.nav-item-dropdown{ position:relative; display:inline-block; }
.nav-item-dropdown > .nav-dd-trigger{
  background:none; border:none; font: inherit; cursor:pointer;
  color: var(--text-soft); font-weight:500; font-size:.95rem; padding:0;
  display:inline-flex; align-items:center; gap:5px;
}
.nav-item-dropdown > .nav-dd-trigger:hover, .nav-item-dropdown.active > .nav-dd-trigger{ color: var(--primary); }
.nav-dd-trigger .caret{ font-size:.7em; transition: transform .2s ease; }
.nav-item-dropdown:hover .nav-dd-trigger .caret{ transform: rotate(180deg); }
.puja-mega{
  position:absolute; top: calc(100% + 18px); left:50%; transform: translateX(-50%) translateY(8px);
  background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-sm);
  box-shadow: var(--shadow-lg); padding: 10px; min-width: 300px; max-width: 340px;
  display:grid; grid-template-columns: 1fr; gap:2px; z-index: 500;
  opacity:0; visibility:hidden; pointer-events:none; transition: opacity .18s ease, transform .18s ease;
}
.nav-item-dropdown:hover .puja-mega, .nav-item-dropdown:focus-within .puja-mega, .nav-item-dropdown.open .puja-mega{
  opacity:1; visibility:visible; pointer-events:auto; transform: translateX(-50%) translateY(0);
}
.puja-mega a{
  display:block; padding: 9px 12px; border-radius: 8px; font-size:.87rem; color: var(--text-soft);
  border-bottom: 1px dashed transparent;
}
.puja-mega a:hover{ background: var(--bg-alt); color: var(--primary); }
.puja-mega a.view-all{ margin-top:4px; border-top:1px solid var(--border); padding-top:11px; color: var(--accent); font-weight:600; }
.mobile-nav .puja-mega-mobile{
  padding-left:14px; display:flex; flex-direction:column; gap:2px; margin: 0;
  max-height:0; overflow:hidden; opacity:0; transition: max-height .3s ease, opacity .25s ease, margin .3s ease;
}
.mobile-nav .puja-mega-mobile.is-open{ max-height:900px; opacity:1; margin: 4px 0 10px; }
.mobile-nav .puja-mega-mobile a{ padding:8px 0; font-size:.86rem; color: var(--text-muted); }
.mobile-nav-toggle{
  background:none; border:none; width:100%; text-align:left; padding: 0; font: inherit;
  color: var(--text-soft); display:flex; align-items:center; justify-content:space-between; cursor:pointer;
}
.mobile-nav-toggle .caret{ transition: transform .25s ease; }
.mobile-nav-toggle.is-open .caret{ transform: rotate(180deg); }

/* ---------- 2. Temple hero SLIDER — crossfade + Ken Burns zoom in / out ---------- */
.temple-slider{ position:relative; min-height: 560px; overflow:hidden; display:flex; align-items:center; }
.temple-slide{
  position:absolute; inset:0; background-size:cover; background-position:center;
  opacity:0; z-index:0; animation: none;
}
.temple-slide.is-active{ opacity:1; z-index:1; animation: kenburnsIn 9s ease-in-out forwards; }
.temple-slide.is-active.kb-out{ animation-name: kenburnsOut; }
@keyframes kenburnsIn{ from{ transform: scale(1); } to{ transform: scale(1.14); } }
@keyframes kenburnsOut{ from{ transform: scale(1.14); } to{ transform: scale(1); } }
.temple-slider::before{
  content:''; position:absolute; inset:0; z-index:1;
  background: linear-gradient(115deg, rgba(5,5,6,.78) 0%, rgba(70,18,10,.55) 48%, rgba(216,19,36,.28) 100%);
}
.temple-slider .container{ position:relative; z-index:2; }
.temple-slider-dots{ position:absolute; bottom:22px; left:0; right:0; z-index:3; display:flex; justify-content:center; gap:8px; }
.temple-slider-dots span{ width:8px; height:8px; border-radius:50%; background: rgba(255,255,255,.35); transition: background .3s, transform .3s; }
.temple-slider-dots span.active{ background: var(--accent-light); transform: scale(1.3); }

/* ---------- 3. Scroll-reveal: images "suddenly" appear as the page scrolls ---------- */
.reveal-img{ opacity:0; transform: translateY(26px) scale(.96); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
.reveal-img.revealed{ opacity:1; transform: translateY(0) scale(1); }
.zoom-hover{ overflow:hidden; }
.zoom-hover img{ transition: transform .6s ease; }
.zoom-hover:hover img{ transform: scale(1.1); }

/* ---------- 5. Home "Puja" section — NO card grid, just a clean list + preview ---------- */
.about-box{ border:2px solid var(--border); border-radius: var(--radius); padding: 34px 34px 30px; background: var(--surface); box-shadow: var(--shadow); }
.about-box-title{ text-align:center; font-size:1.7rem; margin-bottom:26px; position:relative; }
.about-box-title::after{ content:''; display:block; width:60px; height:3px; background: var(--gradient-gold); margin:10px auto 0; border-radius:3px; }
.about-box-body{ display:grid; grid-template-columns: 1.65fr 1fr; gap:32px; align-items:start; }
.about-box-image{ aspect-ratio:1; border-radius: var(--radius-sm); overflow:hidden; box-shadow: var(--shadow); }
.about-box-image img{ width:100%; height:100%; object-fit:cover; display:block; }
@media (max-width: 760px){
  .about-box-body{ grid-template-columns:1fr; }
  .about-box-image{ max-width:220px; margin: 0 auto 6px; }
}

/* Flip-in transition — used for the Pandit ji photo on the About page:
   image "round flips" and suddenly appears as the visitor scrolls to it. */
.flip-reveal{
  opacity:0; transform: perspective(1000px) rotateY(-110deg); transform-style: preserve-3d;
  transition: opacity .75s ease, transform 1s cubic-bezier(.22,.75,.3,1.15);
}
.flip-reveal.revealed{ opacity:1; transform: perspective(1000px) rotateY(0deg); }

.puja-showcase{ display:grid; grid-template-columns: 1fr 1.4fr; gap: 36px; align-items:start; }
.puja-showcase-images{ display:flex; flex-direction:column; gap:16px; }
.puja-showcase-images .reveal-img{ border-radius: var(--radius-sm); overflow:hidden; aspect-ratio: 4/3; }
.puja-showcase-images .reveal-img img{ width:100%; height:100%; object-fit:cover; display:block; }
.puja-showcase-panel{ background: var(--surface); border:1px solid var(--border); border-radius: var(--radius); padding: 30px 30px 26px; }
.puja-showcase-panel h3{ font-size:1.3rem; margin-bottom:10px; }
.puja-showcase-panel p{ font-size:.94rem; margin-bottom:18px; }
.puja-link-list{ list-style:none; margin:0 0 22px; padding:0; display:grid; grid-template-columns: 1fr 1fr; gap:6px 18px; }
.puja-link-list li a{
  display:flex; align-items:center; gap:8px; padding:9px 4px; font-size:.9rem; color: var(--text-soft);
  border-bottom:1px dashed var(--border);
}
.puja-link-list li a:hover{ color: var(--primary); }
.puja-link-list li a::before{ content:'›'; color: var(--accent); font-weight:700; font-size:1.1em; }

/* Standalone pujas list page (pages/pujas.html) — editorial rows, not a card grid */
.puja-row-list{ display:flex; flex-direction:column; gap:0; border-top:1px solid var(--border); }
.puja-row{
  display:grid; grid-template-columns: 120px 1fr auto; gap:20px; align-items:center;
  padding: 18px 6px; border-bottom:1px solid var(--border);
}
.puja-row .puja-row-img{ width:120px; height:84px; border-radius:10px; overflow:hidden; }
.puja-row .puja-row-img img{ width:100%; height:100%; object-fit:cover; }
.puja-row h3{ font-size:1.05rem; margin-bottom:4px; }
.puja-row p{ font-size:.85rem; color: var(--text-muted); margin:0; max-width:520px; }
@media (max-width: 720px){
  .puja-row{ grid-template-columns: 74px 1fr; }
  .puja-row .puja-row-img{ width:74px; height:58px; }
  .puja-row .btn{ grid-column: 1 / -1; margin-top:8px; }
}

/* ---------- Puja detail page — Name header / Image header / Main section ---------- */
.puja-name-header{ text-align:center; padding: 54px 0 18px; }
.puja-name-header .breadcrumb{ justify-content:center; display:flex; }
.puja-name-header h1{ font-size: clamp(2rem, 4.4vw, 3.1rem); margin: 10px 0 0; }
.puja-image-header{ position:relative; overflow:hidden; border-radius: var(--radius); margin: 0 0 44px; }
.puja-image-header .ih-track{ display:flex; }
.puja-image-header img{ width:100%; max-height: 460px; object-fit:cover; flex-shrink:0; animation: kenburnsIn 12s ease-in-out infinite alternate; }
.puja-image-header .ih-fade{ position:absolute; inset:0; background: linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(0,0,0,.65) 100%); }

.puja-main-section{ display:grid; grid-template-columns: 220px 1fr; gap: 40px; align-items:start; }
.puja-main-thumb{ position: sticky; top: 96px; }
.puja-main-thumb img{ width:100%; border-radius: var(--radius-sm); aspect-ratio: 3/4; object-fit:cover; margin-bottom:14px; }
.puja-article h2{ font-size:1.4rem; margin: 34px 0 12px; }
.puja-article h2:first-child{ margin-top:0; }
.puja-article p{ font-size:.98rem; line-height:1.85; color: var(--text-soft); margin-bottom:14px; }
.puja-article a.in-link{ color: var(--accent-light); font-weight:600; text-decoration: underline; text-underline-offset:3px; }
.puja-article a.in-link:hover{ color: var(--accent); }
.puja-article strong{ color: var(--text); }
@media (max-width: 860px){
  .puja-main-section{ grid-template-columns: 1fr; }
  .puja-main-thumb{ position:static; }
  .puja-main-thumb img{ aspect-ratio:16/10; margin-bottom:14px; }
  .puja-showcase{ grid-template-columns:1fr; }
  .puja-link-list{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px){
  .puja-link-list{ grid-template-columns: 1fr; }
  .temple-slider{ min-height: 460px; }
}

/* Sticky contact strip inside sidebar — every puja page has name + phone */
.contact-mini{ display:flex; align-items:center; gap:10px; padding:14px; background: var(--bg-alt); border-radius: var(--radius-sm); margin-bottom:14px; border:1px solid var(--border); }
.contact-mini img{ width:44px; height:44px; border-radius:50%; object-fit:cover; }
.contact-mini .cm-name{ font-size:.85rem; font-weight:600; }
.contact-mini .cm-role{ font-size:.72rem; color: var(--text-muted); }

/* ---- Fixes (round 3) ---- */
/* footer social icons: '.footer-col a' (display:block, muted colour) was overriding .icon-btn */
.footer-col a.icon-btn{ display:inline-flex; margin-bottom:0; width:42px; height:42px; }
.site-footer .social-row .icon-btn{ background:rgba(255,255,255,.16); border-color:rgba(255,255,255,.4); color:#fff; }
.site-footer .social-row .icon-btn:hover{ background:#fff; color:var(--primary); }
.site-footer .social-row .icon-btn svg{ width:1.1em; height:1.1em; fill:currentColor; }
/* coloured (non-white) surfaces */
.section-alt{ background: var(--bg-alt); }
.stats-strip{ background: linear-gradient(120deg,#ffe3c8,#ffd2b0); }
.site-footer{ background: linear-gradient(160deg,#4a2212,#2e150b); border-top:none; }
.site-footer h4, .site-footer .footer-brand{ color:#fff; }
.site-footer .footer-col a, .site-footer .footer-col p{ color:#f1d9c2; }
.site-footer .footer-col a:hover{ color:#ffb27a; }
.site-footer .footer-bottom{ border-top-color:rgba(255,255,255,.18); color:#e8cdb4; }
.site-footer .footer-bottom a{ color:#ffb27a; }
@media (max-width:760px){ .stats-grid{ grid-template-columns:1fr 1fr; gap:22px; } }

/* ---- Fix: Puja dropdown text was white-on-white (header link colour leaked into the panel) ---- */
.site-header .nav-desktop .puja-mega a{ color: var(--text-soft); font-weight:500; }
.site-header .nav-desktop .puja-mega a:hover{ color: var(--primary); background: var(--bg-alt); }
.site-header .nav-desktop .puja-mega a.view-all{ color: var(--primary-dark); font-weight:700; }
.site-header .nav-desktop .puja-mega a::after{ display:none; }
/* trigger stayed orange-on-orange when hovered/active */
.site-header .nav-item-dropdown > .nav-dd-trigger:hover,
.site-header .nav-item-dropdown.active > .nav-dd-trigger,
.site-header .nav-item-dropdown.open > .nav-dd-trigger{ color:#fff; }
.site-header .nav-item-dropdown.active > .nav-dd-trigger{ box-shadow: 0 2px 0 #fff; }

/* ---- Colour pass: green / olive / red — no white backgrounds (page palettes set per page in main.js) ---- */
.stats-strip{ background: linear-gradient(120deg,#7d1616,#b3261e); border:none; }
.stats-strip .stat-plain b{ background:none; -webkit-text-fill-color:#ffe08a; color:#ffe08a; }
.stats-strip .stat-plain span, .stats-strip .eyebrow{ color:#fff; }
.site-footer{ background: linear-gradient(160deg,#245c34,#123a1f); }
.site-footer .footer-col a, .site-footer .footer-col p{ color:#e4f2d8; }
.site-footer .footer-col a:hover, .site-footer .footer-bottom a{ color:#ffd27a; }
.site-footer .footer-bottom{ color:#cfe3c0; }
.puja-article{ background: var(--surface); border:1px solid var(--border); border-radius: var(--radius); padding: 28px 30px; }
@media (max-width:560px){ .puja-article{ padding:20px 16px; } }
.puja-toc{ background: var(--surface-2); border:1px solid var(--border); border-radius: var(--radius-sm); padding:16px 20px; margin-bottom:26px; }
.puja-toc ul{ margin:8px 0 0; padding-left:1.1em; columns:2; column-gap:28px; font-size:.9rem; }
.puja-toc li{ margin-bottom:5px; break-inside:avoid; }
.puja-toc a{ color: var(--primary-dark); font-weight:500; }
@media (max-width:640px){ .puja-toc ul{ columns:1; } }
.puja-article h2{ scroll-margin-top:90px; }
#read-progress{ position:fixed; top:0; left:0; height:4px; width:0; background:linear-gradient(90deg,#ffd27a,#ff5b1f,#d81324); z-index:2000; transition:width .1s linear; }
#back-to-top{ position:fixed; right:22px; bottom:96px; width:44px; height:44px; border-radius:50%; border:none; background:#245c34; color:#fff; font-size:1.3rem; box-shadow:var(--shadow); opacity:0; pointer-events:none; transition:opacity .25s; z-index:900; }
#back-to-top.show{ opacity:1; pointer-events:auto; }
