/*
Theme Name: Peacock Nadi
Theme URI: https://mynadileaf.com
Author: MyNadiLeaf
Description: WooCommerce theme for mynadileaf.com — Peacock design system (ivory, teal, gold), Newsreader + Inter.
Version: 1.0.0
Requires PHP: 8.0
License: Proprietary
Text Domain: peacock-nadi
*/

:root {
  --ivory: #F7F4EC;
  --teal: #1F8A86;
  --teal-dark: #16615E;
  --gold: #C9A45C;
  --ink: #2B2B28;
  --ink-soft: #5C5A52;
  --card: #FFFFFF;
  --line: #E5E0D3;
  --sand: #EFE9DC;   /* band tint one step deeper than the ivory page */
  --radius: 14px;
  --font-serif: 'Newsreader', Georgia, serif;
  --font-sans: 'Inter', -apple-system, sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

body {
  background: var(--ivory);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: 17px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 500; color: var(--ink); line-height: 1.2; }
h1 { font-size: clamp(2.2rem, 5vw, 3.4rem); }
h2 { font-size: clamp(1.7rem, 3.5vw, 2.4rem); }
h3 { font-size: 1.35rem; }
a { color: var(--teal); text-decoration: none; }
a:hover { color: var(--teal-dark); }
img { max-width: 100%; height: auto; display: block; }

.wrap { max-width: 1140px; margin: 0 auto; padding: 0 24px; }

/* Header */
.site-header { background: var(--ivory); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 50; }
.site-header .wrap { display: flex; align-items: center; justify-content: space-between; height: 72px; }
.site-logo { font-family: var(--font-serif); font-size: 1.5rem; color: var(--teal-dark); letter-spacing: 0.02em; }
.site-logo .leaf { color: var(--gold); }
.site-nav ul { display: flex; gap: 28px; list-style: none; }
.site-nav a { color: var(--ink); font-size: 0.95rem; font-weight: 500; }
.site-nav a:hover { color: var(--teal); }
.nav-cta a { background: var(--teal); color: #fff !important; padding: 10px 22px; border-radius: 999px; }
.nav-cta a:hover { background: var(--teal-dark); }
.cart-link { position: relative; }
.cart-count { background: var(--gold); color: #fff; font-size: 0.7rem; border-radius: 999px; padding: 1px 6px; margin-left: 4px; }

/* Hero */
.hero { padding: 88px 0 72px; text-align: center; }
.hero .eyebrow { color: var(--gold); font-size: 0.85rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 16px; }
.hero h1 { max-width: 780px; margin: 0 auto 20px; }
.hero p.lede { max-width: 620px; margin: 0 auto 32px; color: var(--ink-soft); font-size: 1.15rem; }
.btn, .button, .single_add_to_cart_button, .checkout-button {
  display: inline-block; background: var(--teal); color: #fff !important; font-family: var(--font-sans);
  font-weight: 600; font-size: 1rem; padding: 14px 34px; border-radius: 999px; border: 0; cursor: pointer;
  transition: background .15s ease;
}
.btn:hover, .button:hover, .single_add_to_cart_button:hover { background: var(--teal-dark); }
.btn.ghost { background: transparent; color: var(--teal) !important; border: 1.5px solid var(--teal); }
.btn.ghost:hover { background: var(--teal); color: #fff !important; }

/* Trust bar */
.trust { display: flex; justify-content: center; gap: 48px; padding: 28px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.trust div { text-align: center; }
.trust strong { display: block; font-family: var(--font-serif); font-size: 1.5rem; color: var(--teal-dark); }
.trust span { color: var(--ink-soft); font-size: 0.9rem; }

/* Sections & cards */
.section { padding: 72px 0; }
.section-title { text-align: center; margin-bottom: 12px; }
.section-sub { text-align: center; color: var(--ink-soft); max-width: 560px; margin: 0 auto 44px; }
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 32px 28px; }
.card .badge { display: inline-block; background: color-mix(in srgb, var(--gold) 18%, white); color: var(--gold); font-size: 0.75rem; font-weight: 600; padding: 3px 12px; border-radius: 999px; margin-bottom: 14px; letter-spacing: 0.06em; text-transform: uppercase; }
.card h3 { margin-bottom: 10px; }
.card .price { font-family: var(--font-serif); font-size: 1.6rem; color: var(--teal-dark); margin: 14px 0 18px; }
.card .price del { color: var(--ink-soft); font-size: 1.1rem; margin-right: 8px; }

/* Steps */
.steps { counter-reset: step; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px; }
.step { position: relative; padding: 28px 24px 24px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); }
.step::before { counter-increment: step; content: counter(step); position: absolute; top: -18px; left: 24px; width: 36px; height: 36px; background: var(--gold); color: #fff; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-family: var(--font-sans); }

/* WooCommerce */
.woocommerce ul.products { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; list-style: none; }
.woocommerce ul.products li.product { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 28px; text-align: left; }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-family: var(--font-serif); font-size: 1.3rem; }
.woocommerce ul.products li.product .price { color: var(--teal-dark); font-family: var(--font-serif); font-size: 1.25rem; }
.woocommerce div.product p.price { color: var(--teal-dark); font-family: var(--font-serif); font-size: 1.7rem; }
.woocommerce-message, .woocommerce-info { border-top-color: var(--teal); background: var(--card); }
.woocommerce #payment { background: var(--card); border-radius: var(--radius); }
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea {
  border: 1px solid var(--line); border-radius: 8px; padding: 12px; background: #fff; font-family: var(--font-sans);
}

/* Footer */
.site-footer { background: var(--teal-dark); color: #EAF3F2; padding: 56px 0 32px; margin-top: 72px; }
.site-footer a { color: #EAF3F2; opacity: .85; }
.site-footer a:hover { opacity: 1; color: #fff; }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 40px; margin-bottom: 36px; }
.footer-grid h4 { color: var(--gold); font-family: var(--font-sans); font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: 14px; }
.footer-grid ul { list-style: none; display: grid; gap: 8px; }
.legal { border-top: 1px solid rgba(255,255,255,.15); padding-top: 24px; font-size: 0.85rem; opacity: .7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; }

/* Content pages */
.page-content { max-width: 760px; margin: 0 auto; padding: 64px 24px; }
.page-content h1 { margin-bottom: 24px; }
.page-content p, .page-content ul { margin-bottom: 18px; color: var(--ink-soft); }

@media (max-width: 760px) {
  .site-nav ul { gap: 16px; font-size: 0.85rem; flex-wrap: wrap; }
  .footer-grid { grid-template-columns: 1fr; }
  .hero { padding: 56px 0 48px; }
}

/* WooCommerce ships woocommerce-layout.css, which floats ul.products li.product and gives
   it a percentage width (30.75% / 22.05%). Inside our CSS grid each card is already a grid
   item, so that width applies *within* the track and collapses every card to a sliver.
   Neutralise the float layout; the grid above owns the columns. */
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
  width: auto !important;
  float: none !important;
  clear: none !important;
  margin: 0 !important;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after { content: none !important; }

.woocommerce ul.products li.product a img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: calc(var(--radius) - 6px);
  margin-bottom: 16px;
}
.woocommerce ul.products li.product .button {
  display: inline-block;
  margin-top: 14px;
  background: var(--teal);
  color: #fff;
  padding: 10px 20px;
  border-radius: 999px;
  font-size: .95rem;
}
.woocommerce ul.products li.product .button:hover { background: var(--teal-dark); }

/* single product: keep the plugin's two-column split but give the gallery room */
.woocommerce div.product div.images { margin-bottom: 32px; }
.woocommerce div.product div.images img { border-radius: var(--radius); }

/* Brand the WooCommerce buttons — the plugin's default is purple (#7f54b3), which was
   showing on the single-product Add to cart, the cart and the checkout. */
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce button.button.alt,
.woocommerce a.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt,
.woocommerce button.single_add_to_cart_button {
  background: var(--teal);
  color: #fff;
  border-radius: 999px;
  padding: 12px 26px;
  font-weight: 500;
  font-size: 1rem;
  border: 0;
}
.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce button.button.alt:hover,
.woocommerce a.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce button.single_add_to_cart_button:hover { background: var(--teal-dark); color: #fff; }
.woocommerce .quantity input.qty {
  padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--card);
}
/* long legal pages need a readable measure */
.page-content article { max-width: 780px; margin: 0 auto; padding: 48px 24px; }
.page-content article h1 { margin-bottom: 24px; }
.page-content article h2 { margin: 32px 0 12px; }
.page-content article p, .page-content article li { margin-bottom: 12px; }
.page-content article ul, .page-content article ol { padding-left: 22px; margin-bottom: 16px; }

/* Cart / checkout / account are ordinary pages rendered by page.php, so they inherit the
   780px reading measure meant for legal text. Tables and the checkout form need more room. */
.woocommerce-cart .page-content article,
.woocommerce-checkout .page-content article,
.woocommerce-account .page-content article { max-width: 1140px; }
.woocommerce table.shop_table {
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--card);
  border-collapse: separate; overflow: hidden;
}
.woocommerce table.shop_table th { font-family: var(--font-serif); font-weight: 500; }
.woocommerce-cart table.cart img { width: 64px; border-radius: 8px; }
.woocommerce .cart-collaterals .cart_totals { background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 24px; }

/* Cart and Checkout are the new WooCommerce *block* templates, not the classic shortcodes,
   so none of the .woocommerce button rules above reach them. Their buttons default to near
   black. Brand them explicitly. */
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button,
.wc-block-components-button:not(.is-link) {
  background-color: var(--teal) !important;
  color: #fff !important;
  border-radius: 999px !important;
  font-family: var(--font-sans);
  font-weight: 600;
}
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover,
.wc-block-components-button:not(.is-link):hover {
  background-color: var(--teal-dark) !important;
}
.wc-block-components-totals-item__value,
.wc-block-components-order-summary-item__total-price { font-family: var(--font-serif); }
.wc-block-components-text-input input,
.wc-block-components-country-input select,
.wc-block-components-state-input select {
  border-radius: 8px !important;
  border-color: var(--line) !important;
}
.wc-block-components-title, .wp-block-woocommerce-checkout-order-summary-block h2 {
  font-family: var(--font-serif) !important;
}

/* ---- Mobile header ----------------------------------------------------------
   The nav is a flex row with a fixed 72px header. With 8 items that overflowed and
   overlapped the logo on phones. Checkbox toggle = no JavaScript to fail. */
.nav-toggle-btn { display: none; }

/* 1100, not 900: eight nav items plus the CTA pill stop fitting at about 1100px, and between
   901 and 1100 the row wrapped to two lines with the pill clipped. The sticky-off rule below
   deliberately stays at 900 — that one is about phones, where an open menu ate the viewport. */
@media (max-width: 1100px) {
  .site-header .wrap { height: auto; padding: 14px 20px; flex-wrap: wrap; }
  .nav-toggle-btn {
    display: flex; flex-direction: column; justify-content: center; gap: 5px;
    width: 44px; height: 44px; cursor: pointer; margin-left: auto; padding: 10px;
  }
  .nav-toggle-btn span {
    display: block; height: 2px; width: 100%; background: var(--ink-soft); border-radius: 2px;
    transition: transform .2s ease, opacity .2s ease;
  }
  .site-nav { flex-basis: 100%; display: none; }
  .nav-toggle:checked ~ .site-nav { display: block; }
  .site-nav ul {
    flex-direction: column; align-items: flex-start; gap: 0;
    padding: 8px 0 4px; border-top: 1px solid var(--line); margin-top: 12px;
  }
  .site-nav li { width: 100%; }
  .site-nav a { display: block; padding: 13px 2px; font-size: 1rem; }
  .site-nav li + li { border-top: 1px solid var(--line); }
  .nav-cta { margin-top: 12px; }
  .nav-cta a { display: inline-block; text-align: center; width: 100%; padding: 13px 22px; }
  .cart-link a { display: block; }
  /* hamburger -> X */
  .nav-toggle:checked ~ .nav-toggle-btn span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-toggle:checked ~ .nav-toggle-btn span:nth-child(2) { opacity: 0; }
  .nav-toggle:checked ~ .nav-toggle-btn span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
}
@media (max-width: 900px) {
  .hero { padding-top: 40px; }
  h1 { font-size: clamp(1.9rem, 8vw, 2.6rem); }
  .site-header { position: static; }   /* sticky + open menu ate the viewport on phones */
}

/* woocommerce.php's container carries both .wrap and .section. .section is declared later
   and its `padding: 72px 0` wipes .wrap's horizontal padding, so shop/product pages had no
   side gutter at all — invisible on desktop (the max-width leaves margin) but flush against
   the screen edge on phones. */
.wrap.section { padding-left: 24px; padding-right: 24px; }

/* ===== Home v2 (Wix content port, 2026-08-27) ===== */
.topbar { background: var(--teal-dark, #1f6f6b); color: #fff; text-align: center; font-size: 14px; padding: 8px 16px; }
.topbar strong { color: #ffd98a; }
.site-logo.has-img { display: inline-flex; align-items: center; }
.site-logo .logo-img { height: 46px; width: auto; display: block; }
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center; }
.imgcard img { width: 100%; height: auto; border-radius: var(--radius, 14px); box-shadow: 0 12px 32px rgba(0,0,0,.12); display: block; }
.includes { margin: 8px 0 20px 0; padding: 0 0 0 2px; list-style: none; }
.includes li { padding: 5px 0 5px 28px; position: relative; }
.includes li::before { content: "✓"; position: absolute; left: 0; color: var(--teal, #2a9d8f); font-weight: 700; }
.badges { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px; }
.badges span { background: var(--ivory, #f5f0e8); border: 1px solid var(--line, #e5ded2); border-radius: 999px; padding: 6px 14px; font-size: 13.5px; font-weight: 600; }
.chapters { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 18px; }
.chapter { text-align: center; background: var(--card, #fff); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); padding: 18px 12px; }
.chapter img { width: 96px; height: 96px; object-fit: cover; border-radius: 50%; margin: 0 auto 10px; display: block; }
.chapter h3 { font-size: 16px; margin: 0; }
.step img.step-icon, .step .step-icon img { width: 84px; height: 84px; object-fit: cover; border-radius: 50%; margin: 0 auto 12px; display: block; }
.team-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 20px; margin-top: 8px; }
.member { text-align: center; }
.member img { width: 100%; aspect-ratio: 1/1.1; object-fit: cover; border-radius: var(--radius, 14px); display: block; }
.member h3 { font-size: 15.5px; margin: 10px 0 2px; }
.member p { font-size: 13px; color: var(--ink-soft, #6f675a); margin: 0; }
.reviews { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.reviewer { margin-top: 12px; color: var(--ink-soft, #6f675a); font-weight: 600; }
.faq-item { background: var(--card, #fff); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); padding: 4px 20px; margin-bottom: 12px; }
.faq-item summary { cursor: pointer; font-weight: 600; padding: 14px 0; list-style: none; position: relative; padding-right: 28px; }
.faq-item summary::after { content: "+"; position: absolute; right: 2px; top: 12px; font-size: 20px; color: var(--teal, #2a9d8f); }
.faq-item[open] summary::after { content: "–"; }
.faq-item p { padding-bottom: 14px; margin: 0; color: var(--ink-soft, #6f675a); }
.contact-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; }
.contact-cards .card { text-align: center; text-decoration: none; color: inherit; display: block; }
.contact-cards .card strong { display: block; margin-bottom: 6px; color: var(--teal-dark, #1f6f6b); }
.pn-trustbox { background: var(--ivory, #f5f0e8); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); padding: 16px 20px; margin-top: 18px; }
.pn-trustbox h2 { font-size: 16px; margin: 0 0 8px; }   /* H2 for heading order; card-sized by design */
.pn-trustbox ul { list-style: none; margin: 0; padding: 0; }
.pn-trustbox li { padding: 3px 0 3px 24px; position: relative; font-size: 14.5px; }
.pn-trustbox li::before { content: "✓"; position: absolute; left: 0; color: var(--teal, #2a9d8f); font-weight: 700; }
@media (max-width: 860px) {
  .split { grid-template-columns: 1fr; gap: 24px; }
  /* The image leads on mobile by deliberate choice (kept). But at its natural height the
     headline landed at 434px and the primary CTA at 731px — below the fold on most phones,
     so the first screen showed a photo and nothing to act on. Capping the image keeps the
     image-led look and lifts the CTA into view. */
  .hero.split .imgcard { order: -1; }
  .hero.split .imgcard img { max-height: 150px; object-fit: cover; object-position: center 42%; }
  .site-logo .logo-img { height: 38px; }
}

/* ===== Premium pass (2026-08-27): languages line, deliverables section ===== */
.hero .langs { margin-top: 10px; font-size: 15px; color: var(--ink-soft, #6f675a); }
.hero .langs strong { color: var(--teal-dark, #1f6f6b); font-weight: 600; }
.receive-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; }
.receive { background: var(--card, #fff); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); overflow: hidden; }
.receive img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; }
.receive h3 { font-size: 17px; margin: 14px 18px 6px; }
.receive p { margin: 0 18px 16px; font-size: 14.5px; color: var(--ink-soft, #6f675a); }
.receive-note { text-align: center; margin-top: 18px; font-size: 13.5px; color: var(--ink-soft, #6f675a); }
.standard { background: var(--card, #fff); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); padding: 34px clamp(20px, 5vw, 48px); max-width: 780px; margin: 0 auto; }
.promises { list-style: none; margin: 8px 0 18px; padding: 0; }
.promises li { padding: 9px 0 9px 32px; position: relative; border-bottom: 1px solid var(--line, #e5ded2); font-size: 15px; color: var(--ink-soft, #6f675a); }
.promises li:last-child { border-bottom: none; }
.promises li::before { content: "✓"; position: absolute; left: 2px; top: 9px; color: var(--teal, #2a9d8f); font-weight: 700; }
.promises li strong { color: var(--ink, #2b2620); }
.signature { font-family: var(--font-serif, Newsreader, Georgia, serif); font-size: 19px; color: var(--ink, #2b2620); text-align: right; margin: 0; }
.compare-wrap { overflow-x: auto; background: var(--card, #fff); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); max-width: 820px; margin: 0 auto; }
.compare { border-collapse: collapse; width: 100%; min-width: 520px; font-size: 14px; }
.compare th { text-align: left; padding: 14px 16px; border-bottom: 1px solid var(--line, #e5ded2); color: var(--ink-soft, #6f675a); font-size: 12px; text-transform: uppercase; letter-spacing: .06em; }
.compare td { padding: 12px 16px; border-bottom: 1px solid var(--line, #e5ded2); color: var(--ink-soft, #6f675a); vertical-align: top; }
.compare tr:last-child td { border-bottom: none; }
.compare td:first-child { font-weight: 600; color: var(--ink, #2b2620); white-space: nowrap; }
.compare .us { background: rgba(42, 157, 143, .07); color: var(--ink, #2b2620); font-weight: 500; }
.compare th.us { color: var(--teal-dark, #1f6f6b); }
.price-includes { font-size: 13.5px; color: var(--ink-soft, #6f675a); border-left: 3px solid var(--teal, #2a9d8f); padding: 6px 12px; margin: 10px 0 14px; }

/* ===== Centered partial last rows (2026-08-27) =====
   Card grids switch to wrapping flex so an incomplete final row centers
   instead of hugging the left. Fixed flex-basis keeps card widths uniform. */
.team-grid, .chapters, .steps, .cards, .receive-grid, .contact-cards { display: flex; flex-wrap: wrap; justify-content: center; }
.team-grid { gap: 20px; }
.team-grid .member { flex: 0 1 172px; }
.chapters { gap: 18px; }
.chapters .chapter { flex: 0 1 168px; }
.steps { gap: 24px; }
.steps .step { flex: 0 1 230px; }
.cards { gap: 24px; }
.cards .card { flex: 0 1 300px; }
.receive-grid { gap: 20px; }
.receive-grid .receive { flex: 0 1 280px; }
.contact-cards { gap: 16px; }
.contact-cards .card { flex: 0 1 230px; }
/* WooCommerce product cards (home + shop + related): beat woocommerce-layout.css floats */
ul.products { display: flex !important; flex-wrap: wrap; justify-content: center; gap: 28px; }
ul.products li.product { flex: 0 1 300px; width: auto !important; float: none !important; margin: 0 !important; }
@media (max-width: 480px) {
  .team-grid .member, .chapters .chapter { flex-basis: calc(50% - 10px); }
  .steps .step, .cards .card, .receive-grid .receive, .contact-cards .card, ul.products li.product { flex-basis: 100%; }
}

/* ===== Conversion pass (2026-08-27): sticky bar, WA bubble, mid CTAs ===== */
.hero-more { margin-top: 10px; }
.hero-more a { color: var(--ink-soft, #6f675a); font-size: 14px; text-decoration: none; border-bottom: 1px dotted var(--ink-soft, #6f675a); }
.mid-cta { text-align: center; margin-top: 28px; }
a.chapter { text-decoration: none; color: inherit; display: block; transition: transform .15s ease, box-shadow .15s ease; }
a.chapter:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,.08); }
/* .pay-marks / .first-reading-offer restyled in the CRO block at the end of this file. */
.mnl-wa-bubble { position: fixed; right: 18px; bottom: 18px; z-index: 900; width: 54px; height: 54px; border-radius: 50%; background: #25D366; color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 18px rgba(0,0,0,.25); }
.mnl-wa-bubble:hover { background: #1eb857; }
.mnl-sticky { display: none; }
@media (max-width: 860px) {
  .mnl-sticky { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 950; background: var(--card, #fff); border-top: 1px solid var(--line, #e5ded2); padding: 10px 14px; gap: 10px; align-items: center; box-shadow: 0 -6px 18px rgba(0,0,0,.08); }
  .mnl-sticky .btn { flex: 1; text-align: center; }
  .mnl-sticky-wa { width: 46px; height: 46px; border-radius: 12px; background: #25D366; color: #fff; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
  .mnl-wa-bubble { display: none; } /* sticky bar carries WhatsApp on mobile */
  body { padding-bottom: 74px; }
}

/* ===== Readability & conversion pass II (2026-08-28) ===== */

/* The global `* { margin: 0 }` reset fused multi-paragraph sections into walls —
   the single biggest readability complaint. Space siblings, not every p. */
.section p + p, .page-content p + p, .page-content article p + p,
.woocommerce-Tabs-panel p + p { margin-top: .85em; }
.section .split > div > p + p { margin-top: .9em; }

/* Trust stats: 4 stacked full-width numbers ate a whole phone screen. 2×2. */
@media (max-width: 860px) {
  .trust { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 14px; padding: 22px 8px; }
  .trust strong { font-size: 1.3rem; }
  .trust span { font-size: .8rem; line-height: 1.35; display: block; }
  h1 { font-size: clamp(2.05rem, 8.5vw, 2.7rem); }
}

/* Comparison table: on phones the teal MyNadiLeaf column sat off-screen behind a
   horizontal scroll — readers saw only the "typical centre" flaws. Stack it. */
@media (max-width: 680px) {
  .compare-wrap { overflow: visible; background: none; border: none; }
  .compare { min-width: 0; display: block; }
  .compare thead { display: none; }
  .compare tbody, .compare tr, .compare td { display: block; width: 100%; }
  .compare tr { background: var(--card, #fff); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); margin-bottom: 12px; overflow: hidden; }
  .compare td { border: none; padding: 4px 16px; white-space: normal; }
  .compare td:first-child { padding: 12px 16px 2px; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-soft, #6f675a); }
  .compare td:nth-child(2)::before { content: "Typical centre: "; font-weight: 600; color: var(--ink-soft, #6f675a); }
  .compare td.us::before { content: "MyNadiLeaf: "; font-weight: 700; color: var(--teal-dark, #16615E); }
  .compare td.us { background: rgba(42, 157, 143, .07); padding: 8px 16px 14px; margin-top: 4px; }
}

/* Team: readers lead, the care team follows smaller. Uniform 1:1 crops. */
.team-grid .member img { aspect-ratio: 1 / 1; }
.member img.pn-team-quetzal { object-position: center 28%; }
.team-care-title { text-align: center; margin: 44px 0 4px; font-size: 1.15rem; }
.team-care-sub { text-align: center; color: var(--ink-soft, #6f675a); font-size: .9rem; margin-bottom: 20px; }
.team-care { opacity: .96; }
.team-care .member { flex: 0 1 128px; }
.team-care .member h3 { font-size: 13.5px; }
.team-care .member p { font-size: 12px; }
@media (max-width: 480px) { .team-care .member { flex-basis: calc(33.4% - 14px); } }

/* Product page: offer anchor, booking steps, tab restyle, tidy meta. */

.pn-next { background: var(--card, #fff); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); padding: 16px 20px; margin-top: 16px; }
.pn-next h2 { font-size: 16px; margin: 0 0 8px; }   /* H2 for heading order; card-sized by design */
.pn-next ol { margin: 0; padding-left: 20px; }
.pn-next li { padding: 3px 0; font-size: 14.5px; color: var(--ink-soft, #6f675a); }
.pn-next li strong { color: var(--ink, #2b2620); }
.woocommerce div.product .woocommerce-tabs ul.tabs { padding: 0; margin: 0 0 1.2em; border-bottom: 1px solid var(--line, #e5ded2); }
.woocommerce div.product .woocommerce-tabs ul.tabs li { background: transparent; border: none; border-radius: 0; margin: 0 18px 0 0; padding: 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { padding: 10px 2px; color: var(--ink-soft, #6f675a); font-weight: 600; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active { border-bottom: 2px solid var(--teal, #2a9d8f); }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color: var(--ink, #2b2620); }
.woocommerce div.product .product_meta { font-size: 13px; color: var(--ink-soft, #6f675a); }

/* Checkout reassurance */
.pn-paymarks-block { font-size: 13px; color: var(--ink-soft, #6f675a); margin: 10px 2px 0; }
.pn-checkout-trust { list-style: none; margin: 16px 0 0; padding: 14px 16px; background: var(--ivory, #f5f0e8); border: 1px solid var(--line, #e5ded2); border-radius: var(--radius, 14px); }
.pn-checkout-trust li { padding: 3px 0 3px 24px; position: relative; font-size: 13.5px; color: var(--ink-soft, #6f675a); }
.pn-checkout-trust li::before { content: "✓"; position: absolute; left: 0; color: var(--teal, #2a9d8f); font-weight: 700; }

/* Contact cards: four ~290px monoliths compressed */
.contact-cards .card { padding: 20px 18px; }
.contact-cards .card strong { margin-bottom: 2px; }
.contact-cards .card span { font-size: 14.5px; }
h1 .accent, h2 .accent, h3 .accent { color: var(--gold, #B08A3E); }
.mnl-wa-bubble { overflow: visible; }
.wa-tip { position: absolute; right: 64px; top: 50%; transform: translateY(-50%); background: var(--card, #fff); color: var(--ink, #2b2620); border: 1px solid var(--line, #e5ded2); border-radius: 999px; padding: 8px 14px; font-size: 13px; white-space: nowrap; box-shadow: 0 4px 14px rgba(0,0,0,.12); }
.about-photo { margin: 24px 0; }
.about-photo img { width: 100%; max-width: 720px; height: auto; border-radius: var(--radius, 14px); display: block; }
.about-photo figcaption { font-size: 13px; color: var(--ink-soft, #6f675a); margin-top: 8px; }
.socials { display: flex; gap: 14px; margin-top: 10px; }
.socials a { color: #fff; opacity: .85; } .socials a:hover { opacity: 1; }

/* ============================================================================
   Product-page CRO — 2026-08-30
   ========================================================================= */

/* P2a — the gallery column was 414px tall against a 1037px summary column, so three
   quarters of the left side was empty ivory. Pin it while the buyer reads on. */
/* The selector must out-specify WooCommerce's own
   `.woocommerce div.product div.images.woocommerce-product-gallery { position: relative }`
   (0,4,2) or the sticky is silently discarded. */
@media (min-width: 1024px) {
  .woocommerce div.product .pn-top { display: flex; align-items: flex-start; gap: 4%; }
  .woocommerce div.product .pn-top > div.images,
  .woocommerce div.product .pn-top > div.summary {
    float: none; width: 48%; margin: 0;
  }
  .woocommerce.single-product div.product div.images.woocommerce-product-gallery {
    position: sticky;
    top: 88px;            /* 72px sticky header + 16px breathing room */
    align-self: start;
  }
}

/* P2b — a 1.85:1 letterbox strip does not anchor a column. Square frame, with the
   aspect ratio on the <a> because jquery.zoom's overlay sizes to that element, not the img.
   PhotoSwipe still opens the uncropped original. */
.woocommerce div.product .woocommerce-product-gallery__image > a {
  display: block;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--card);
}
.woocommerce div.product .woocommerce-product-gallery__image > a img,
.woocommerce div.product .woocommerce-product-gallery__image > a .zoomImg {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--radius);
}

/* P2c — square thumb strip; auto-fit keeps it correct for products with a different
   image count instead of hard-coding a column number. */
.woocommerce div.product .flex-control-thumbs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
  gap: 8px;
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}
.woocommerce div.product .flex-control-thumbs li {
  width: auto !important;
  margin: 0 !important;
  float: none !important;
  list-style: none;
}
.woocommerce div.product .flex-control-thumbs img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 8px;
  border: 2px solid transparent;
  opacity: .78;
  transition: opacity .15s ease, border-color .15s ease;
  cursor: pointer;
}
.woocommerce div.product .flex-control-thumbs img:hover { opacity: 1; }
.woocommerce div.product .flex-control-thumbs img.flex-active {
  opacity: 1;
  border-color: var(--teal);
}

/* P3 — price relationship. `.pn-was` must beat WooCommerce's own `.price` colouring, hence
   the explicit del-style rather than a <del> element (a <del> inside .price picks up
   WC's `del { opacity: .5 }` and goes illegibly faint on ivory). */
.woocommerce div.product .pn-offer { margin: 4px 0 10px; }
.pn-offer-row { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin: 0; }
.pn-offer-row .pn-was,
.pn-offer-row .pn-was .woocommerce-Price-amount {
  font-family: var(--font-serif); font-size: 1.35rem; color: var(--ink-soft);
  text-decoration: line-through; text-decoration-thickness: 1.5px; opacity: 1;
}
.pn-offer-row .pn-now,
.pn-offer-row .pn-now .woocommerce-Price-amount {
  font-family: var(--font-serif); font-size: 2.5rem; line-height: 1.1;
  color: var(--teal); font-weight: 500;
}
.pn-offer-badge {
  display: inline-block; margin: 8px 0 0; padding: 5px 13px;
  font-size: 13px; font-weight: 600; letter-spacing: .01em;
  color: var(--teal-dark); background: color-mix(in srgb, var(--teal) 12%, white);
  border: 1px solid color-mix(in srgb, var(--teal) 30%, white); border-radius: 999px;
}
.pn-offer-badge .woocommerce-Price-amount { font-weight: 600; color: inherit; }
.pn-offer-note { font-size: 13px; color: var(--ink-soft); margin: 8px 0 0; }

/* P3 — payment marks as a real mark row instead of a line of text. */
.pay-marks { margin: 12px 0 0; }
.pay-marks img { width: 100%; max-width: 320px; height: auto; opacity: .92; }
.pay-marks span { display: block; font-size: 12.5px; color: var(--ink-soft); margin-top: 6px; }

/* P4c/P4e — reassurance + secondary WhatsApp route at the point of commitment. */
.pn-cta-reassure {
  font-size: 13.5px; color: var(--ink-soft); margin: 10px 0 0;
}
.pn-cta-reassure::before { content: "✓ "; color: var(--teal); font-weight: 700; }
.pn-wa-cta {
  display: inline-flex; align-items: center; gap: 8px; margin: 12px 0 0;
  padding: 10px 20px; border-radius: 999px;
  border: 1.5px solid var(--teal); background: var(--ivory); color: var(--teal);
  font-size: .95rem; font-weight: 500;
}
.pn-wa-cta:hover { background: var(--teal); color: #fff; }

/* P4d — product sticky bar. Layout rules live in the <=768px block that already governs
   .mnl-sticky; these only add what the buy variant needs. */
.pn-sticky-buy[hidden] { display: none !important; }
.pn-sticky-price {
  font-family: var(--font-serif); font-size: 1.1rem; color: var(--ink); white-space: nowrap;
}
.pn-sticky-price small { display: block; font-family: var(--font-sans); font-size: 11px; color: var(--ink-soft); }
.pn-sticky-buy .btn {
  background: var(--teal); color: #fff; border: 0; border-radius: 999px;
  padding: 12px 20px; font-family: var(--font-sans); font-size: 1rem; font-weight: 500; cursor: pointer;
}
.pn-sticky-buy .btn:hover { background: var(--teal-dark); }

/* P5 — below-the-fold sections.
   `.pn-below` breaks out of the 48%-wide summary column that WooCommerce leaves floating above
   it; without the clear the first section wraps beside it. */
.woocommerce div.product .pn-below { clear: both; margin: 0; }
.woocommerce div.product .pn-below .section-title { margin-bottom: 10px; }

/* Full-bleed tonal bands. The page was one flat sheet of ivory from header to footer, which is
   most of why it read as thinner than the Wix build — that site earns its depth from alternating
   edge-to-edge bands, not from richer components.
   box-shadow + clip-path rather than `margin-left: calc(50% - 50vw)`: a shadow never contributes
   to scrollable overflow, so this cannot produce the horizontal scrollbar the vw trick does on
   any platform with a visible scrollbar — and it needs no `overflow` on an ancestor, which would
   otherwise have killed the sticky gallery. */
.woocommerce div.product .pn-band {
  position: relative;
  padding: 72px 0;
  background: var(--band, transparent);
  box-shadow: 0 0 0 100vmax var(--band, transparent);
  clip-path: inset(0 -100vmax);
}
/* Painted on the element, not on a z-index:-1 pseudo-element: a negative-z child renders
   behind the page background here, so the bleed was invisible on the white bands. */
.woocommerce div.product .pn-how          { --band: var(--card); }
.woocommerce div.product .pn-readers      { --band: var(--sand); }
.woocommerce div.product .pn-testimonials { --band: var(--card); }
.woocommerce div.product .pn-faq          { padding: 72px 0 8px; }

.pn-steps {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 24px; margin-top: 8px;
}
/* The step assets are transparent line-art icons, not photographs — a 4:3 object-fit: cover
   frame blew them up into crude black outlines. Same 84px treatment as the homepage. */
.pn-step {
  position: relative; text-align: center;
  padding: 30px 22px 26px;
  background: var(--ivory); border: 1px solid var(--line); border-radius: var(--radius);
}
.pn-how .pn-step { background: var(--ivory); }
.pn-step-img { width: 84px; height: 84px; object-fit: contain; margin: 0 auto 14px; display: block; }
.pn-step-n {
  position: absolute; top: 12px; left: 12px;
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--teal); color: #fff;
  font-size: 13px; font-weight: 600; font-family: var(--font-sans);
  display: flex; align-items: center; justify-content: center;
}
.pn-step h3 { font-size: 1.1rem; margin-bottom: 6px; }
.pn-step p { font-size: 14.5px; color: var(--ink-soft); }

/* Readers — the panorama runs at its native ratio so none of the five is cropped out. */
.pn-readers-photo {
  width: 100%; height: auto; aspect-ratio: 4064 / 1056; object-fit: cover;
  border-radius: var(--radius); margin: 8px 0 26px;
}
.pn-readers-copy { max-width: 760px; margin: 0 auto; text-align: center; }
.pn-readers-copy p { font-size: 16px; color: var(--ink-soft); margin-bottom: 12px; }
.pn-textlink { font-weight: 600; }

.pn-quotes {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 22px; margin-top: 8px;
}
.pn-quote {
  position: relative;
  background: var(--ivory); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 30px 26px 26px; margin: 0;
}
/* An opening quote mark does the work a star row would have done, without asserting a rating
   the source never published. */
.pn-quote::before {
  content: "\201C";
  position: absolute; top: 6px; left: 20px;
  font-family: var(--font-serif); font-size: 62px; line-height: 1;
  color: var(--gold); opacity: .32;
}
.pn-stars { color: var(--gold); letter-spacing: 2px; margin-bottom: 8px; }
.pn-star-off { color: var(--line); }   /* unearned stars stay visible but clearly empty */
.pn-quote blockquote {
  position: relative;
  font-family: var(--font-serif); font-size: 1.08rem; line-height: 1.6;
  color: var(--ink); margin: 0 0 16px;
}
.pn-quote figcaption {
  font-size: 13px; color: var(--ink-soft);
  text-transform: uppercase; letter-spacing: .08em; font-weight: 600;
}
.pn-quote figcaption::before {
  content: ""; display: block; width: 26px; height: 1px;
  background: var(--gold); margin-bottom: 10px;
}

/* Needs the same specificity as `.woocommerce div.product .pn-below { margin: 0 }` above,
   or the auto margins lose and the whole block hangs off the left edge. */
.woocommerce div.product .pn-faq { max-width: 820px; margin-inline: auto; }
.pn-faq .faq-item:first-of-type { margin-top: 8px; }
.pn-faq-more { font-size: 14.5px; color: var(--ink-soft); margin-top: 18px; text-align: center; }

/* P5 — related products: square cards in a real grid instead of one stranded, cropped card. */
.woocommerce div.product .related.products { clear: both; margin-top: 56px; }
/* `display: grid !important` because a shop-wide `ul.products { display: flex !important;
   justify-content: center }` further up this file is what actually produced the "one lonely
   centred card": flex-basis 300px, centred, with dead space either side. (That rule still
   governs the shop archive — deliberately left alone here.)
   auto-FILL, not auto-fit: every related set on this site has two items, and auto-fit would
   collapse the empty track and blow them up to 534px each. auto-fill keeps the 3-up rhythm. */
.woocommerce div.product .related.products ul.products {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 24px; margin: 24px 0 0;
}
.woocommerce div.product .related.products ul.products li.product {
  width: auto !important; margin: 0 !important; float: none !important; text-align: left;
}
.woocommerce div.product .related.products ul.products li.product img {
  width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: var(--radius);
}

@media (max-width: 720px) {
  .woocommerce div.product .pn-band { padding: 48px 0; }
  .pn-readers-photo { aspect-ratio: 16 / 9; }   /* a 3.85:1 strip is a sliver on a phone */
}

/* P3 (cont.) — GST inclusion. Sits directly under the includes list, muted: it answers an
   objection rather than making a claim, so it must not compete with the price. */
.price-gst { font-size: 13px; color: var(--ink-soft); margin: -4px 0 0; }

/* Reading language selector — sits directly above the CTA, so it reads as part of booking
   rather than as an afterthought. */
.pn-lang-field { display: block; margin: 0 0 18px; }
.pn-lang-field label { display: block; font-weight: 600; font-size: 14.5px; margin-bottom: 6px; }
.pn-lang-field abbr { color: var(--teal); text-decoration: none; }
.pn-lang-field select {
  width: 100%; max-width: 320px; padding: 11px 14px;
  border: 1px solid var(--line-2, var(--line)); border-radius: 8px;
  background: var(--card); color: var(--ink);
  font-family: var(--font-sans); font-size: 1rem;
}
.pn-lang-field select:focus { outline: 2px solid var(--teal); outline-offset: 1px; }
.pn-lang-field select:invalid { color: var(--ink-soft); }
.pn-lang-help { display: block; font-size: 12.5px; color: var(--ink-soft); margin-top: 6px; max-width: 420px; }

/* "What your reading includes" — replaces a dot-separated paragraph that read as fine print.
   Two columns so the extra clarity costs no vertical space above the fold. */
.pn-includes {
  margin: 14px 0 10px;
  padding: 16px 18px;
  background: var(--card);
  border: 1px solid var(--line);
  border-left: 3px solid var(--teal);
  border-radius: 10px;
}
.pn-includes h2 {
  font-family: var(--font-sans); font-size: 11.5px; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--teal-dark);
  margin: 0 0 10px;
}
.pn-includes ul {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 5px 18px;
}
.pn-includes li {
  position: relative; padding-left: 19px;
  font-size: 13.5px; line-height: 1.45; color: var(--ink);
}
.pn-includes li::before {
  content: "✓"; position: absolute; left: 0; top: 0;
  color: var(--teal); font-weight: 700; font-size: 12px;
}

/* The two summary cards were plain bordered boxes. A small gold rule above the heading ties
   them to the section headings below without adding weight. */
.pn-next h2, .pn-trustbox h2 { position: relative; padding-top: 12px; }
.pn-next h2::before, .pn-trustbox h2::before {
  content: ""; position: absolute; top: 0; left: 0;
  width: 26px; height: 2px; background: var(--gold);
}

/* T10 — the theme relied entirely on each browser's default focus ring, which on the teal
   buttons and the ivory ground is close to invisible. One consistent, high-contrast ring.
   :focus-visible, so it never appears on mouse clicks. */
a:focus-visible,
button:focus-visible,
select:focus-visible,
input:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--teal-dark);
  outline-offset: 2px;
  border-radius: 4px;
}
.nav-cta a:focus-visible,
.woocommerce button.single_add_to_cart_button:focus-visible {
  outline-color: var(--ink);   /* teal-on-teal would vanish */
}

/* C2 — the chapter reading's prerequisite, next to the price rather than buried in prose. */
.pn-prereq {
  margin: 10px 0 0; padding: 11px 14px;
  font-size: 13.5px; line-height: 1.5; color: var(--ink);
  background: color-mix(in srgb, var(--gold) 12%, white);
  border: 1px solid color-mix(in srgb, var(--gold) 38%, white);
  border-radius: 8px;
}

/* C5 — enquiry path for the product that has no price to sell against. */
.pn-enquire {
  margin: 6px 0 4px; padding: 22px;
  background: var(--card); border: 1px solid var(--line);
  border-left: 3px solid var(--gold); border-radius: 10px;
}
.pn-enquire h2 { font-size: 1.2rem; margin-bottom: 8px; }
.pn-enquire p { font-size: 14.5px; color: var(--ink-soft); margin-bottom: 14px; }
.pn-enquire-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 22px; border-radius: 999px;
  background: var(--teal); color: #fff !important; font-weight: 500;
}
.pn-enquire-btn:hover { background: var(--teal-dark); }
.pn-enquire-alt { font-size: 13px; margin: 12px 0 0; }

/* C4 — the long description, restored as a plain section rather than a one-tab tab strip. */
.woocommerce div.product .pn-desc { padding: 56px 0 0; }
.pn-desc-body { max-width: 720px; margin: 0 auto; text-align: center; color: var(--ink-soft); }
.pn-desc-body p { margin-bottom: 12px; }

.pn-enquire-specs { margin: 0 0 16px; padding: 12px 0 0; border-top: 1px solid var(--line); }
.pn-enquire-specs > div { display: flex; gap: 10px; font-size: 14px; padding: 3px 0; }
.pn-enquire-specs dt { color: var(--ink-soft); margin: 0; }
.pn-enquire-specs dd { margin: 0; font-weight: 600; color: var(--ink); }

/* Variation picker (Yantra Puja durations). WooCommerce renders this as a bare <table> with an
   unstyled native select — next to the styled language field on the reading products it looked
   like a different site. Same treatment, so the two read as one pattern. */
.woocommerce div.product form.cart table.variations {
  border: 0; margin: 0 0 14px; width: 100%; background: none;
}
.woocommerce div.product form.cart table.variations tr,
.woocommerce div.product form.cart table.variations td {
  display: block; border: 0; padding: 0; background: none;
}
.woocommerce div.product form.cart table.variations td.label {
  padding: 0 0 6px;
}
.woocommerce div.product form.cart table.variations td.label label {
  font-weight: 600; font-size: 14.5px; color: var(--ink); margin: 0;
}
.woocommerce div.product form.cart table.variations select {
  width: 100%; max-width: 320px; padding: 11px 14px;
  border: 1px solid var(--line-2, var(--line)); border-radius: 8px;
  background: var(--card); color: var(--ink);
  font-family: var(--font-sans); font-size: 1rem;
}
.woocommerce div.product form.cart table.variations select:focus-visible {
  outline: 3px solid var(--teal-dark); outline-offset: 2px;
}
.woocommerce div.product form.cart .reset_variations {
  display: inline-block; margin-top: 8px; font-size: 13px; color: var(--ink-soft);
}
/* The chosen duration's price, once picked — the serif treatment the headline price gets. */
.woocommerce div.product .woocommerce-variation-price { margin: 6px 0 14px; }
.woocommerce div.product .woocommerce-variation-price .price,
.woocommerce div.product .woocommerce-variation-price .woocommerce-Price-amount {
  font-family: var(--font-serif); font-size: 2rem; color: var(--teal); font-weight: 500;
}
.woocommerce div.product .woocommerce-variation-description p { font-size: 14px; color: var(--ink-soft); }
/* Disabled until a duration is chosen — make that read as "not yet", not as "broken". */
.woocommerce div.product form.cart .single_add_to_cart_button.disabled,
.woocommerce div.product form.cart .single_add_to_cart_button:disabled {
  background: var(--line-2, #D6DDD5); color: var(--ink-soft); cursor: not-allowed; opacity: 1;
}

/* 404 — the theme had none, so WordPress fell through to index.php and rendered nothing at all. */
.pn-404 { text-align: center; max-width: 640px; padding-top: 72px; padding-bottom: 88px; }
.pn-404 .eyebrow {
  color: var(--gold); font-size: .8rem; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; margin-bottom: 14px;
}
.pn-404 h1 { margin-bottom: 14px; }
.pn-404-lead { color: var(--ink-soft); margin-bottom: 28px; }
.pn-404-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-bottom: 30px; }
.pn-404-actions .btn {
  background: var(--teal); color: #fff; padding: 13px 26px; border-radius: 999px; font-weight: 500;
}
.pn-404-actions .btn:hover { background: var(--teal-dark); color: #fff; }
.pn-404-actions .btn-outline {
  border: 1.5px solid var(--teal); color: var(--teal);
  padding: 13px 26px; border-radius: 999px; font-weight: 500;
}
.pn-404-actions .btn-outline:hover { background: var(--teal); color: #fff; }
.pn-404-links {
  list-style: none; padding: 22px 0 0; margin: 0; border-top: 1px solid var(--line);
  display: flex; gap: 8px 26px; justify-content: center; flex-wrap: wrap; font-size: 14.5px;
}

/* Shop header — replaces WooCommerce's "Shop" / "Showing all 5 results" / sort dropdown. */
.pn-shop-head { text-align: center; margin: 0 0 34px; }
.pn-shop-head .section-sub { margin-bottom: 0; }

/* First-reading offer in listings: the decision point, where only ₹16,000 used to show. */
.pn-loop-price { display: block; line-height: 1.35; }
.pn-loop-price .pn-loop-was,
.pn-loop-price .pn-loop-was .woocommerce-Price-amount {
  font-size: 1rem; color: var(--ink-soft); text-decoration: line-through; opacity: 1;
}
.pn-loop-price .pn-loop-now,
.pn-loop-price .pn-loop-now .woocommerce-Price-amount {
  font-family: var(--font-serif); font-size: 1.35rem; color: var(--teal); font-weight: 500;
}
.pn-loop-price small { display: block; font-size: 11.5px; color: var(--ink-soft); margin-top: 2px; }

/* WooCommerce BLOCK product grids (empty cart, any block listing) live in their own class
   namespace, so none of the `.woocommerce ul.products` styling above reached them: they
   rendered as centred cards with near-black pill buttons and teal link-blue titles. Brand them. */
.wc-block-grid__products,
.wp-block-woocommerce-handpicked-products .wc-block-grid__products {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 22px; list-style: none; margin: 0; padding: 0;
}
.wc-block-grid__product {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 22px; margin: 0; text-align: left; max-width: none;
}
.wc-block-grid__product-image img {
  width: 100%; aspect-ratio: 1 / 1; object-fit: cover;
  border-radius: calc(var(--radius) - 6px); margin-bottom: 14px;
}
.wc-block-grid__product-title,
.wc-block-grid__product-title a {
  font-family: var(--font-serif); font-size: 1.15rem; font-weight: 500;
  color: var(--ink) !important; text-decoration: none;
}
.wc-block-grid__product-price,
.wc-block-grid__product-price .woocommerce-Price-amount {
  font-family: var(--font-serif); font-size: 1.2rem; color: var(--teal-dark);
}
.wc-block-grid__product .wp-block-button__link,
.wc-block-grid__product .add_to_cart_button {
  background-color: var(--teal) !important; color: #fff !important;
  border-radius: 999px !important; padding: 11px 22px !important;
  font-family: var(--font-sans); font-weight: 500; font-size: .95rem; border: 0;
}
.wc-block-grid__product .wp-block-button__link:hover,
.wc-block-grid__product .add_to_cart_button:hover { background-color: var(--teal-dark) !important; }

/* Empty cart: the default is a black frowning-face glyph, which is the wrong note entirely
   for a service people come to at serious moments in their lives. */
.wc-block-cart__empty-cart__title.with-empty-cart-icon::before { content: none !important; }
.wc-block-cart__empty-cart__title {
  font-family: var(--font-serif); font-weight: 500; margin-bottom: 10px;
}
.pn-empty-cart-lead {
  color: var(--ink-soft); max-width: 520px; margin: 0 auto 8px; font-size: 15.5px;
}
.pn-empty-cart-heading { font-size: 1.3rem; margin: 34px 0 20px; }
.wc-block-cart .is-style-dots { display: none; }   /* decorative dot rule, adds nothing */

/* ── Razorpay "Pay for order" page ────────────────────────────────────────────────
   woo-razorpay always redirects here from the block checkout — that redirect is
   hard-coded in the plugin, not a setting. The modal usually auto-opens, but the page
   underneath is what a buyer sees if they dismiss it or the modal is slow on a phone,
   and out of the box it is two unstyled <button> elements reading "Pay Now Cancel"
   in a bare serif column. That is the worst possible moment to look broken. */
.woocommerce-order-pay .page-content article,
body.woocommerce-checkout .page-content article { max-width: 620px; }
#btn-razorpay {
  display: inline-block; background: var(--teal); color: #fff; border: 0;
  border-radius: 999px; padding: 15px 34px; margin: 6px 10px 6px 0;
  font-family: var(--font-sans); font-size: 1.05rem; font-weight: 500; cursor: pointer;
}
#btn-razorpay:hover { background: var(--teal-dark); }
#btn-razorpay:focus-visible { outline: 3px solid var(--ink); outline-offset: 2px; }
/* Cancel must be reachable but must never compete with paying. */
#btn-razorpay-cancel {
  display: inline-block; background: none; border: 0; padding: 15px 6px;
  font-family: var(--font-sans); font-size: .95rem; color: var(--ink-soft);
  text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
}
#btn-razorpay-cancel:hover { color: var(--ink); }
#msg-razorpay-success {
  background: color-mix(in srgb, var(--teal) 10%, white) !important;
  border-top-color: var(--teal) !important; border-radius: 10px;
  color: var(--ink); font-size: 15px;
}
/* The order summary above the button — WooCommerce ships it as a bare definition list. */
.woocommerce-order-pay ul.order_details {
  list-style: none; display: flex; flex-wrap: wrap; gap: 10px 28px;
  margin: 0 0 22px; padding: 18px 20px;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
}
.woocommerce-order-pay ul.order_details li {
  font-family: var(--mono, var(--font-sans)); font-size: 11.5px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--ink-soft);
}
.woocommerce-order-pay ul.order_details li strong {
  display: block; margin-top: 3px; font-family: var(--font-serif); font-size: 1.15rem;
  letter-spacing: 0; text-transform: none; color: var(--ink);
}

/* iOS Safari zooms the whole page when a text field under 16px takes focus, and does not
   zoom back out. Every checkout field is already 16px except WooCommerce's collapsed
   "Apartment, suite, etc." input — it ships at 13.33px and sits invisibly on top of that
   link, so tapping the link jumped the checkout. Floor the text-entry controls only:
   radios and checkboxes never trigger the zoom and keep WooCommerce's own sizing. */
@media (max-width: 782px) {
  .wc-block-checkout input[type="text"],
  .wc-block-checkout input[type="email"],
  .wc-block-checkout input[type="tel"],
  .wc-block-checkout input[type="number"],
  .wc-block-checkout input[type="search"],
  .wc-block-checkout textarea,
  .wc-block-checkout select {
    font-size: 16px;
  }
}

/* The contact form shipped with no styling at all, so its fields fell back to browser
   defaults: ~143px wide, hairline borders, 13.33px text — inside a rounded card, directly
   above an already-styled teal button. It read as broken on the one page whose entire job
   is to be replied to. Match the language select on the product page, which is the
   established field treatment for this theme.
   The honeypot is excluded: it is absolutely positioned off-canvas and must stay that way. */
.mnl-cf p { margin: 0 0 18px; }
.mnl-cf p:last-child { margin-bottom: 0; }
.mnl-cf label { display: block; font-weight: 600; font-size: 14.5px; color: var(--ink); }
.mnl-cf input[type="text"]:not([name="website"]),
.mnl-cf input[type="email"],
.mnl-cf input[type="tel"],
.mnl-cf textarea {
  width: 100%;
  margin-top: 6px;
  padding: 11px 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--card);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: 1rem;   /* 16px — also stops iOS Safari zooming the page on focus */
  line-height: 1.5;
}
.mnl-cf textarea { min-height: 150px; resize: vertical; }
.mnl-cf input:not([name="website"]):focus,
.mnl-cf textarea:focus { outline: 2px solid var(--teal); outline-offset: 1px; border-color: var(--teal); }
.mnl-cf input::placeholder, .mnl-cf textarea::placeholder { color: var(--ink-soft); }
