.ppn-fs-kit,[data-ppn-fs-kit]{--ppn-fs-anim-rise:ppn-fs-kit-rise        0.42s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)) both;--ppn-fs-anim-fade:ppn-fs-kit-fade        0.32s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)) both;--ppn-fs-anim-scale-in:ppn-fs-kit-scale-in    0.38s var(--ppn-ease-spring, cubic-bezier(0.32,0.94,0.6,1)) both;--ppn-fs-anim-glow-pulse:ppn-fs-kit-glow-pulse  1.6s  var(--ppn-ease, cubic-bezier(0.4,0,0.2,1)) infinite alternate;--ppn-fs-anim-shimmer:ppn-fs-kit-shimmer     1.6s  var(--ppn-ease, cubic-bezier(0.4,0,0.2,1)) 1;--ppn-fs-anim-flame:ppn-fs-kit-flame       0.7s  var(--ppn-ease-spring, cubic-bezier(0.32,0.94,0.6,1)) both;--ppn-fs-anim-mandala-in:ppn-fs-kit-mandala-in  1.2s  var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)) both;--ppn-fs-kit-mandala-size:clamp(180px, 24vw, 320px);--ppn-fs-kit-mandala-opacity:0.09;--ppn-fs-kit-mandala-color:var(--ppn-maroon, #960000);--ppn-fs-kit-mandala-img:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cg fill='none' stroke='black' stroke-width='0.7'%3E%3Ccircle cx='50' cy='50' r='49'/%3E%3Ccircle cx='50' cy='50' r='38'/%3E%3Ccircle cx='50' cy='50' r='25'/%3E%3Ccircle cx='50' cy='50' r='12'/%3E%3Cpath d='M50 4 L96 96 L4 96 Z'/%3E%3Cpath d='M50 96 L96 4 L4 4 Z'/%3E%3C/g%3E%3Cg stroke='black' stroke-width='0.5' fill='none'%3E%3Cline x1='4' y1='50' x2='96' y2='50'/%3E%3Cline x1='50' y1='4' x2='50' y2='96'/%3E%3Cline x1='14' y1='14' x2='86' y2='86'/%3E%3Cline x1='86' y1='14' x2='14' y2='86'/%3E%3C/g%3E%3Ccircle cx='50' cy='50' r='2.5' fill='black'/%3E%3C/svg%3E");
    --ppn-fs-kit-rosette-img: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='black'%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3Cellipse cx='12' cy='5' rx='1.4' ry='2.6'/%3E%3Cellipse cx='12' cy='5' rx='1.4' ry='2.6' transform='rotate(60 12 12)'/%3E%3Cellipse cx='12' cy='5' rx='1.4' ry='2.6' transform='rotate(120 12 12)'/%3E%3Cellipse cx='12' cy='5' rx='1.4' ry='2.6' transform='rotate(180 12 12)'/%3E%3Cellipse cx='12' cy='5' rx='1.4' ry='2.6' transform='rotate(240 12 12)'/%3E%3Cellipse cx='12' cy='5' rx='1.4' ry='2.6' transform='rotate(300 12 12)'/%3E%3C/g%3E%3C/svg%3E");
    --ppn-fs-kit-shield-img: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2 L20 6 V12 C20 16 16 19 12 22 C8 19 4 16 4 12 V6 Z'/%3E%3Cpath d='M9 12 L11 14 L15 10'/%3E%3C/svg%3E");
}

/* ── 2. Keyframes ─────────────────────────────────────────── */
@keyframes ppn-fs-kit-rise {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes ppn-fs-kit-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes ppn-fs-kit-scale-in {
    from { opacity: 0; transform: scale(0.96); }
    to   { opacity: 1; transform: scale(1); }
}
@keyframes ppn-fs-kit-glow-pulse {
    from { box-shadow: 0 0 0 0 rgba(232, 115, 26, 0); }
    to   { box-shadow: 0 0 28px 4px rgba(232, 115, 26, 0.18); }
}
@keyframes ppn-fs-kit-shimmer {
    0%   { background-position: -150% 50%; }
    100% { background-position: 250% 50%; }
}
@keyframes ppn-fs-kit-flame {
    0%   { opacity: 0; transform: scale(0.6); filter: blur(2px); }
    35%  { opacity: 1; transform: scale(1.08); filter: blur(0); }
    65%  { opacity: 0.92; transform: scale(0.96); }
    100% { opacity: 1; transform: scale(1); }
}
@keyframes ppn-fs-kit-mandala-in {
    from { opacity: 0; transform: rotate(-12deg) scale(0.92); }
    to   { opacity: var(--ppn-fs-kit-mandala-opacity, 0.06); transform: rotate(0) scale(1); }
}
@keyframes ppn-fs-kit-stagger-rise {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── 3. Mandala corner ornament ───────────────────────────── */
.ppn-fs-kit__mandala-corner {
    position: relative;
    isolation: isolate;
}
.ppn-fs-kit__mandala-corner::before {
    content: "";
    position: absolute;
    top: -6%;
    right: -6%;
    width: var(--ppn-fs-kit-mandala-size);
    aspect-ratio: 1;
    background-color: var(--ppn-fs-kit-mandala-color);
    -webkit-mask-image: var(--ppn-fs-kit-mandala-img);
            mask-image: var(--ppn-fs-kit-mandala-img);
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    opacity: var(--ppn-fs-kit-mandala-opacity);
    pointer-events: none;
    z-index: 0;
    animation: var(--ppn-fs-anim-mandala-in);
}
.ppn-fs-kit__mandala-corner > * { position: relative; z-index: 1; }
.ppn-fs-kit__mandala-corner--bottom-left::before { top: auto; right: auto; bottom: -6%; left: -6%; }
.ppn-fs-kit__mandala-corner--center::before { top: 50%; right: 50%; transform: translate(50%, -50%) rotate(0); }
.ppn-fs-kit__mandala-corner--soft { --ppn-fs-kit-mandala-opacity: 0.06; }
.ppn-fs-kit__mandala-corner--bold { --ppn-fs-kit-mandala-opacity: 0.14; }

/* ── 4. Eyebrow + hero-claim + lede typography ────────────── */
.ppn-fs-kit__eyebrow {
    display: inline-block;
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-2xs, 0.72rem);
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ppn-saffron-deep, #C45E12);
    line-height: 1;
    margin: 0 0 var(--ppn-space-md, 16px);
}
.ppn-fs-kit__eyebrow--rule {
    position: relative;
    padding-left: 28px;
}
.ppn-fs-kit__eyebrow--rule::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    width: 20px;
    height: 1px;
    background: linear-gradient(to right, var(--ppn-saffron, #E8731A), var(--ppn-gold, #C9A84C));
    transform: translateY(-50%);
}

.ppn-fs-kit__hero-claim {
    font-family: var(--ppn-font-heading, 'Inter', sans-serif);
    font-weight: 600;
    font-size: clamp(1.6rem, 3.4vw, 2.6rem);
    line-height: var(--ppn-leading-tight, 1.18);
    color: var(--ppn-near-black, #1a1a1a);
    margin: 0 0 var(--ppn-space-md, 16px);
    letter-spacing: -0.012em;
}
.ppn-fs-kit__hero-claim--editorial {
    font-family: var(--ppn-font-body, 'Source Serif 4', Georgia, serif);
    font-weight: 500;
    letter-spacing: -0.005em;
}
.ppn-fs-kit__hero-claim em {
    font-style: italic;
    color: var(--ppn-maroon, #960000);
}

.ppn-fs-kit__lede {
    font-family: var(--ppn-font-body, 'Source Serif 4', Georgia, serif);
    font-size: var(--ppn-text-md, 1rem);
    line-height: var(--ppn-leading-relaxed, 1.65);
    color: var(--ppn-charcoal, #444);
    max-width: 62ch;
    margin: 0 0 var(--ppn-space-lg, 24px);
}

/* Self-contained body text classes so featuresets don't lean
   on theme p / li resets — keeps embed behaviour predictable
   inside post bodies, sidebars, or third-party blocks. */
.ppn-fs-kit__text {
    font-family: var(--ppn-font-body, 'Source Serif 4', Georgia, serif);
    font-size: var(--ppn-text-base, 0.95rem);
    line-height: var(--ppn-leading-relaxed, 1.65);
    color: var(--ppn-charcoal, #444);
    margin: 0 0 var(--ppn-space-md, 16px);
}
.ppn-fs-kit__small {
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-xs, 0.78rem);
    line-height: 1.5;
    color: var(--ppn-text-secondary, #555);
    letter-spacing: 0.005em;
}

/* Empathic pause line — italic whisper used between question
   blocks or before ambiguous CTAs. Soft, low-key, never bold. */
.ppn-fs-kit__pause {
    font-family: var(--ppn-font-body, 'Source Serif 4', Georgia, serif);
    font-style: italic;
    font-size: var(--ppn-text-sm, 0.92rem);
    line-height: 1.55;
    color: var(--ppn-text-muted, #666);
    max-width: 56ch;
    margin: var(--ppn-space-md, 16px) 0;
    padding-left: 14px;
    border-left: 1px solid rgba(232, 115, 26, 0.30);
}

/* ── 5. Card surfaces (3 tones, layout-agnostic) ──────────── */
.ppn-fs-kit__card {
    position: relative;
    border-radius: var(--ppn-radius-lg, 16px);
    padding: clamp(20px, 3vw, 32px);
    transition: transform 0.25s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)),
                box-shadow 0.25s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)),
                border-color 0.2s ease;
    isolation: isolate;
}

/* Tone: cream — default, sits on white/cream parents */
.ppn-fs-kit__card--cream {
    background: linear-gradient(155deg, var(--ppn-bg, #fffdfb) 0%, var(--ppn-bg-cream, #fdf5ee) 100%);
    border: 1px solid var(--ppn-border, rgba(0,0,0,0.06));
    box-shadow: var(--ppn-shadow-sm, 0 2px 8px rgba(0,0,0,0.04));
}
.ppn-fs-kit__card--cream:hover {
    transform: translateY(-2px);
    box-shadow: var(--ppn-shadow-card, 0 4px 24px rgba(123,31,46,0.06), 0 16px 48px rgba(232,115,26,0.04));
    border-color: var(--ppn-border-hover, rgba(0,0,0,0.12));
}

/* Tone: warm-on-maroon — for use on dark/maroon parent strips */
.ppn-fs-kit__card--warm-on-maroon {
    background: linear-gradient(155deg, #fff7eb 0%, #fbe8d2 100%);
    border: 1px solid rgba(201, 168, 76, 0.22);
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.10);
    color: var(--ppn-near-black-warm, #1a0a04);
}
.ppn-fs-kit__card--warm-on-maroon:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.24), 0 4px 12px rgba(201, 168, 76, 0.12);
}

/* Tone: light — for use on white/blog body parents */
.ppn-fs-kit__card--light {
    background: var(--ppn-white, #fff);
    border: 1px solid var(--ppn-border, rgba(0,0,0,0.06));
    box-shadow: 0 1px 3px rgba(0,0,0,0.03), 0 8px 24px rgba(150,0,0,0.05);
}
.ppn-fs-kit__card--light:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0,0,0,0.04), 0 14px 36px rgba(150,0,0,0.08);
}

/* Selected / active state — uses spring once */
.ppn-fs-kit__card--selected,
.ppn-fs-kit__card.is-selected {
    background: linear-gradient(155deg, #fff5e8 0%, #fde6c9 100%);
    border-color: var(--ppn-saffron, #E8731A);
    box-shadow: 0 0 0 2px rgba(232,115,26,0.18), var(--ppn-shadow-card, 0 4px 24px rgba(123,31,46,0.06));
    animation: var(--ppn-fs-anim-scale-in);
}

/* Card meta */
.ppn-fs-kit__card-title {
    font-family: var(--ppn-font-heading, 'Inter', sans-serif);
    font-size: var(--ppn-text-lg, 1.1rem);
    font-weight: 600;
    color: var(--ppn-near-black, #1a1a1a);
    margin: 0 0 var(--ppn-space-sm, 8px);
    line-height: var(--ppn-leading-snug, 1.35);
}
.ppn-fs-kit__card-body {
    font-family: var(--ppn-font-body, 'Source Serif 4', Georgia, serif);
    font-size: var(--ppn-text-sm, 0.92rem);
    line-height: var(--ppn-leading-relaxed, 1.65);
    color: var(--ppn-charcoal, #444);
    margin: 0 0 var(--ppn-space-md, 16px);
}

/* ── 6. CTAs ──────────────────────────────────────────────── */
.ppn-fs-kit__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 22px;
    border-radius: var(--ppn-radius-pill, 100px);
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-base, 0.88rem);
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.01em;
    text-decoration: none;
    cursor: pointer;
    border: 1px solid transparent;
    transition: transform 0.18s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)),
                box-shadow 0.22s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)),
                background-color 0.18s ease,
                color 0.18s ease,
                border-color 0.18s ease;
    white-space: nowrap;
    user-select: none;
}
.ppn-fs-kit__cta--primary {
    background: var(--ppn-maroon, #960000);
    color: var(--ppn-white, #fff);
    box-shadow: 0 4px 14px rgba(150,0,0,0.18);
}
.ppn-fs-kit__cta--primary:hover {
    background: var(--ppn-maroon-hover, #B80000);
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(150,0,0,0.28), 0 2px 6px rgba(232,115,26,0.10);
}
.ppn-fs-kit__cta--saffron {
    background: var(--ppn-saffron, #E8731A);
    color: var(--ppn-white, #fff);
    box-shadow:
        inset 0 1px 0 rgba(255, 220, 160, 0.55),
        inset 0 -1px 0 rgba(140, 60, 12, 0.20),
        0 4px 14px rgba(232, 115, 26, 0.22);
}
.ppn-fs-kit__cta--saffron:hover {
    background: var(--ppn-saffron-deep, #C45E12);
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 rgba(255, 220, 160, 0.45),
        inset 0 -1px 0 rgba(120, 50, 10, 0.25),
        0 8px 22px rgba(232, 115, 26, 0.32);
}
.ppn-fs-kit__cta--ghost {
    background: transparent;
    color: var(--ppn-maroon, #960000);
    border-color: var(--ppn-maroon, #960000);
}
.ppn-fs-kit__cta--ghost:hover {
    background: var(--ppn-maroon, #960000);
    color: var(--ppn-white, #fff);
    transform: translateY(-1px);
}
.ppn-fs-kit__cta--whisper {
    padding: 6px 0;
    background: transparent;
    color: var(--ppn-link-rust, #b5451b);
    border-radius: 0;
    font-weight: 500;
    position: relative;
}
.ppn-fs-kit__cta--whisper::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 2px;
    width: 100%;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.32s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1));
}
.ppn-fs-kit__cta--whisper:hover { color: var(--ppn-link-rust-hover, #8a3414); }
.ppn-fs-kit__cta--whisper:hover::after { transform: scaleX(1); transform-origin: left center; }

.ppn-fs-kit__cta-icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    transition: transform 0.22s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1));
}
.ppn-fs-kit__cta:hover .ppn-fs-kit__cta-icon { transform: translateX(2px); }

/* Prose-armor: when the kit is dropped inside a theme content wrapper
 * (e.g. `.pg-prose a { color: var(--ppn-maroon); text-decoration: underline; }`
 * ships at 0,2,0), the kit CTA color and decoration must still win.
 * Chaining the base class with the variant class plus the anchor/button
 * tag lifts specificity to 0,2,1 and keeps the kit visually intact
 * regardless of host context. The whisper variant draws its own underline
 * via the ::after pseudo, so we strip the theme decoration on it too. */
a.ppn-fs-kit__cta.ppn-fs-kit__cta--primary,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--primary {
    color: var(--ppn-white, #fff);
    text-decoration: none;
}
a.ppn-fs-kit__cta.ppn-fs-kit__cta--primary:hover,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--primary:hover { color: var(--ppn-white, #fff); }

a.ppn-fs-kit__cta.ppn-fs-kit__cta--saffron,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--saffron {
    color: var(--ppn-white, #fff);
    text-decoration: none;
}
a.ppn-fs-kit__cta.ppn-fs-kit__cta--saffron:hover,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--saffron:hover { color: var(--ppn-white, #fff); }

a.ppn-fs-kit__cta.ppn-fs-kit__cta--ghost,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--ghost {
    color: var(--ppn-maroon, #960000);
    text-decoration: none;
}
a.ppn-fs-kit__cta.ppn-fs-kit__cta--ghost:hover,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--ghost:hover { color: var(--ppn-white, #fff); }

a.ppn-fs-kit__cta.ppn-fs-kit__cta--whisper,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--whisper {
    color: var(--ppn-link-rust, #b5451b);
    text-decoration: none;
}
a.ppn-fs-kit__cta.ppn-fs-kit__cta--whisper:hover,
button.ppn-fs-kit__cta.ppn-fs-kit__cta--whisper:hover { color: var(--ppn-link-rust-hover, #8a3414); }

/* ── 7. Pills + chips ─────────────────────────────────────── */
.ppn-fs-kit__pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: var(--ppn-radius-pill, 100px);
    background: var(--ppn-saffron-light, #FFF3E8);
    color: var(--ppn-saffron-deep, #C45E12);
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-xs, 0.78rem);
    font-weight: 600;
    line-height: 1.2;
    border: 1px solid rgba(232,115,26,0.18);
    transition: background 0.18s ease, color 0.18s ease, transform 0.18s ease;
    text-decoration: none;
}
.ppn-fs-kit__pill:hover {
    background: var(--ppn-saffron, #E8731A);
    color: var(--ppn-white, #fff);
    transform: translateY(-1px);
}
.ppn-fs-kit__pill--ghost {
    background: transparent;
    color: var(--ppn-charcoal, #444);
    border-color: var(--ppn-border, rgba(0,0,0,0.10));
}
.ppn-fs-kit__pill--ghost:hover {
    background: var(--ppn-bg-cream, #fdf5ee);
    color: var(--ppn-maroon, #960000);
    border-color: var(--ppn-maroon, #960000);
}

/* ── 8. Scripture pull-out ────────────────────────────────── */
.ppn-fs-kit__scripture {
    position: relative;
    padding: clamp(20px, 3vw, 28px) clamp(22px, 3.5vw, 36px);
    background: linear-gradient(180deg, #fffaf2 0%, #fff3e0 100%);
    border-radius: var(--ppn-radius-md, 12px);
    border-left: 3px solid var(--ppn-saffron, #E8731A);
    margin: var(--ppn-space-lg, 24px) 0;
    overflow: hidden;
    isolation: isolate;
}
.ppn-fs-kit__scripture::before {
    content: "";
    position: absolute;
    top: -10%;
    right: -10%;
    width: 180px;
    height: 180px;
    background-color: var(--ppn-saffron, #E8731A);
    -webkit-mask-image: var(--ppn-fs-kit-mandala-img);
            mask-image: var(--ppn-fs-kit-mandala-img);
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    opacity: 0.05;
    pointer-events: none;
    z-index: 0;
}
.ppn-fs-kit__scripture > * { position: relative; z-index: 1; }
.ppn-fs-kit__scripture-verse {
    font-family: 'Noto Serif Devanagari', 'Source Serif 4', Georgia, serif;
    font-size: clamp(1.05rem, 1.6vw, 1.25rem);
    line-height: 1.75;
    color: var(--ppn-near-black, #1a1a1a);
    margin: 0 0 var(--ppn-space-sm, 8px);
    font-weight: 500;
    text-rendering: optimizeLegibility;
}
.ppn-fs-kit__scripture-translit {
    font-family: var(--ppn-font-body, 'Source Serif 4', Georgia, serif);
    font-style: italic;
    font-size: var(--ppn-text-sm, 0.92rem);
    line-height: 1.55;
    color: var(--ppn-text-secondary, #555);
    margin: 0 0 var(--ppn-space-md, 16px);
}
.ppn-fs-kit__scripture-source {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-2xs, 0.72rem);
    font-weight: 600;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: var(--ppn-saffron-deep, #C45E12);
}
.ppn-fs-kit__scripture-source::before {
    content: "";
    width: 22px;
    height: 1px;
    background: linear-gradient(to right, var(--ppn-saffron, #E8731A), transparent);
}

/* ── 9. Progress mandala (multi-step) ─────────────────────── */
.ppn-fs-kit__progress {
    --ppn-fs-kit-progress-steps: 5;
    --ppn-fs-kit-progress-current: 0;
    display: grid;
    grid-template-columns: repeat(var(--ppn-fs-kit-progress-steps), 1fr);
    gap: clamp(6px, 1vw, 12px);
    align-items: center;
}
.ppn-fs-kit__progress-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-3xs, 0.68rem);
    font-weight: 600;
    color: var(--ppn-text-muted, rgba(68,68,68,0.5));
    transition: color 0.3s ease;
}
.ppn-fs-kit__progress-glyph {
    width: clamp(20px, 3vw, 28px);
    aspect-ratio: 1;
    background-color: var(--ppn-text-muted, rgba(68,68,68,0.5));
    -webkit-mask-image: var(--ppn-fs-kit-rosette-img);
            mask-image: var(--ppn-fs-kit-rosette-img);
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    transition: background-color 0.4s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)),
                transform 0.4s var(--ppn-ease-spring, cubic-bezier(0.32,0.94,0.6,1));
}
.ppn-fs-kit__progress-step--done .ppn-fs-kit__progress-glyph {
    background-color: var(--ppn-saffron, #E8731A);
}
.ppn-fs-kit__progress-step--done {
    color: var(--ppn-saffron-deep, #C45E12);
}
.ppn-fs-kit__progress-step--current .ppn-fs-kit__progress-glyph {
    background: linear-gradient(135deg, var(--ppn-saffron, #E8731A), var(--ppn-gold, #C9A84C));
    background-clip: padding-box;
    -webkit-mask-image: var(--ppn-fs-kit-rosette-img);
            mask-image: var(--ppn-fs-kit-rosette-img);
    transform: scale(1.18);
    background-color: var(--ppn-saffron-deep, #C45E12);
    box-shadow: 0 0 14px rgba(232,115,26,0.30);
    animation: ppn-fs-kit-glow-pulse 1.6s var(--ppn-ease) infinite alternate;
}
.ppn-fs-kit__progress-step--current { color: var(--ppn-maroon, #960000); }
.ppn-fs-kit__progress-step--complete .ppn-fs-kit__progress-glyph {
    background-color: var(--ppn-gold, #C9A84C);
    animation: var(--ppn-fs-anim-flame);
}

/* ── 9b. Score reveal (Punya etc.) ──────────────────────────
   Number presented as a sacred mark: tilak dot above, fine
   gold rule below that draws in on reveal. Pair with
   ppnFsKit.countUp() for the digit animation. */
.ppn-fs-kit__score {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    font-family: var(--ppn-font-heading, 'Inter', sans-serif);
    line-height: 1;
}
.ppn-fs-kit__score::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--ppn-saffron, #E8731A);
    box-shadow: 0 0 8px rgba(232,115,26,0.45);
    margin-bottom: 4px;
}
.ppn-fs-kit__score-value {
    font-size: clamp(2.4rem, 5vw, 3.6rem);
    font-weight: 700;
    color: var(--ppn-maroon, #960000);
    letter-spacing: -0.02em;
    font-feature-settings: "tnum" 1;
}
.ppn-fs-kit__score-rule {
    width: 64px;
    height: 1px;
    background: linear-gradient(to right, transparent, var(--ppn-gold, #C9A84C), transparent);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 0.6s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)) 0.35s;
}
.ppn-fs-kit__score.is-revealed .ppn-fs-kit__score-rule { transform: scaleX(1); }
.ppn-fs-kit__score-suffix {
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-xs, 0.78rem);
    font-weight: 600;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: var(--ppn-saffron-deep, #C45E12);
}

/* ── 10. Shimmer-gold modifier ────────────────────────────── */
.ppn-fs-kit__shimmer-gold {
    background: linear-gradient(
        100deg,
        var(--ppn-gold, #C9A84C) 0%,
        var(--ppn-gold-shimmer, #D4AF37) 35%,
        #f5e3a3 50%,
        var(--ppn-gold-shimmer, #D4AF37) 65%,
        var(--ppn-gold, #C9A84C) 100%
    );
    background-size: 250% 100%;
    background-position: 0% 50%;
    -webkit-background-clip: text;
            background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
    display: inline-block;
}
.ppn-fs-kit__shimmer-gold--active {
    animation: var(--ppn-fs-anim-shimmer);
}

/* ── 11. Flame-flicker (diya) ─────────────────────────────── */
.ppn-fs-kit__flame {
    width: 18px;
    height: 18px;
    border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
    background: radial-gradient(circle at 50% 65%, #fff5b8 0%, var(--ppn-gold, #C9A84C) 35%, var(--ppn-saffron, #E8731A) 70%, var(--ppn-saffron-deep, #C45E12) 100%);
    box-shadow: 0 0 12px rgba(232,115,26,0.35), 0 -2px 6px rgba(255,200,80,0.4);
    display: inline-block;
    vertical-align: middle;
}
.ppn-fs-kit__flame--lit { animation: var(--ppn-fs-anim-flame); }

/* ── 12. Trust callout ─────────────────────────────────────
   Privacy / safety reassurance line. Stays in brand palette
   (cream ground, gold rule, saffron-deep ink) — no
   foreign success-green from generic UI kits. */
.ppn-fs-kit__trust {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 10px 18px;
    background: var(--ppn-bg-cream, #fdf5ee);
    color: var(--ppn-saffron-deep, #C45E12);
    border: 1px solid rgba(201, 168, 76, 0.35);
    border-radius: var(--ppn-radius-pill, 100px);
    font-family: var(--ppn-font-ui, 'Inter', sans-serif);
    font-size: var(--ppn-text-xs, 0.78rem);
    font-weight: 500;
    line-height: 1.3;
    box-shadow: inset 0 0 0 1px rgba(255, 251, 240, 0.6);
}
.ppn-fs-kit__trust-shield {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    background-color: var(--ppn-saffron, #E8731A);
    -webkit-mask-image: var(--ppn-fs-kit-shield-img);
            mask-image: var(--ppn-fs-kit-shield-img);
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
}
.ppn-fs-kit__trust--maroon {
    background: rgba(255, 247, 235, 0.10);
    color: var(--ppn-gold-shimmer, #D4AF37);
    border-color: rgba(201, 168, 76, 0.45);
    box-shadow: none;
}
.ppn-fs-kit__trust--maroon .ppn-fs-kit__trust-shield {
    background-color: var(--ppn-gold-shimmer, #D4AF37);
}

/* ── 13. Divider with mandala dot ─────────────────────────── */
.ppn-fs-kit__divider {
    display: flex;
    align-items: center;
    gap: 16px;
    margin: var(--ppn-space-xl, 32px) 0;
    color: var(--ppn-saffron, #E8731A);
}
.ppn-fs-kit__divider::before,
.ppn-fs-kit__divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: linear-gradient(to right, transparent, currentColor, transparent);
    opacity: 0.45;
}
.ppn-fs-kit__divider-glyph {
    width: 22px;
    aspect-ratio: 1;
    background-color: currentColor;
    -webkit-mask-image: var(--ppn-fs-kit-rosette-img);
            mask-image: var(--ppn-fs-kit-rosette-img);
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    flex-shrink: 0;
}

/* ── 14. Stagger reveal helpers ───────────────────────────────
   Default 140ms step gives a "breath" rhythm — sacred-feel
   sequencing rather than UI flick. Modules with five+ steps
   should use --slow (200ms). PDP/cart use --fast for snappiness. */
.ppn-fs-kit__stagger > * {
    --i: 0;
    opacity: 0;
    animation: ppn-fs-kit-stagger-rise 0.5s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)) both;
    animation-delay: calc(var(--i) * 140ms);
}
.ppn-fs-kit__stagger--fast > * { animation-delay: calc(var(--i) * 60ms); }
.ppn-fs-kit__stagger--slow > * { animation-delay: calc(var(--i) * 200ms); }

/* ── 15. Reveal observer state ────────────────────────────── */
.ppn-fs-kit__reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.55s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1)),
                transform 0.55s var(--ppn-ease-out, cubic-bezier(0.16,1,0.3,1));
    will-change: opacity, transform;
}
.ppn-fs-kit__reveal.is-revealed {
    opacity: 1;
    transform: translateY(0);
}

/* ── 16. Section frame (when feature is its own section) ──── */
.ppn-fs-kit__section {
    padding: var(--ppn-section-pad, clamp(48px, 6vw, 96px)) 0;
    background: var(--ppn-bg, #fffdfb);
}
.ppn-fs-kit__section--cream { background: var(--ppn-bg-cream, #fdf5ee); }
.ppn-fs-kit__section--maroon {
    position: relative;
    background: linear-gradient(140deg, var(--ppn-maroon-gradient-mid, #7b1f2e) 0%, var(--ppn-maroon, #960000) 60%, var(--ppn-maroon-gradient-dark, #3d0a14) 100%);
    color: #fff7eb;
    isolation: isolate;
    overflow: hidden;
}
/* Sthal-anchor: a soft centered yantra reads as "puja sthal"
   inside the page rather than a generic dark band. Keeps the
   maroon strip distinctly devotional. */
.ppn-fs-kit__section--maroon::before {
    content: "";position:absolute;top:50%;left:50%;width:clamp(420px, 56vw, 760px);aspect-ratio:1;transform:translate(-50%,-50%);background-color:var(--ppn-gold-shimmer,#D4AF37);-webkit-mask-image:var(--ppn-fs-kit-mandala-img);mask-image:var(--ppn-fs-kit-mandala-img);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;opacity:.05;pointer-events:none;z-index:0}.ppn-fs-kit__section--maroon>*{position:relative;z-index:1}.ppn-fs-kit__section--maroon .ppn-fs-kit__hero-claim,.ppn-fs-kit__section--maroon .ppn-fs-kit__lede{color:#fff7eb}.ppn-fs-kit__section--maroon .ppn-fs-kit__hero-claim em{color:var(--ppn-gold-shimmer,#D4AF37)}.ppn-fs-kit__section--maroon .ppn-fs-kit__pause{color:rgb(255 247 235 / .78);border-left-color:var(--ppn-gold-shimmer,#D4AF37)}.ppn-fs-kit__section-inner{max-width:var(--ppn-container,min(1200px, 92vw));margin:0 auto;padding:0 clamp(16px, 4vw, 24px)}@media print{.ppn-fs-kit__mandala-corner::before,.ppn-fs-kit__shimmer-gold,.ppn-fs-kit__flame,.ppn-fs-kit__progress-step--current .ppn-fs-kit__progress-glyph{animation:none!important}.ppn-fs-kit__card,.ppn-fs-kit__scripture{box-shadow:none!important;border:1px solid #999!important}.ppn-fs-kit__shimmer-gold{color:#b8860b!important;-webkit-text-fill-color:#b8860b!important;background:none!important}}