/* Lush & Pures — storefront feedback (toast, form validation, cart badge) */
#lnp-store-toasts{position:fixed;top:84px;right:20px;z-index:99999;display:flex;flex-direction:column;gap:10px;pointer-events:none;max-width:calc(100vw - 40px)}
.lnp-st{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid #ececec;border-radius:12px;box-shadow:0 10px 34px rgba(20,20,20,.16);padding:14px 16px;min-width:270px;max-width:370px;pointer-events:auto;position:relative;overflow:hidden;animation:lnpStIn .3s cubic-bezier(.21,1.02,.73,1) both;font-family:inherit}
.lnp-st::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px}
.lnp-st.ok::before{background:#4caf50}
.lnp-st.err::before{background:#e53935}
.lnp-st-ic{width:26px;height:26px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#fff}
.lnp-st.ok .lnp-st-ic{background:#4caf50}
.lnp-st.err .lnp-st-ic{background:#e53935}
.lnp-st-body{flex:1;min-width:0}
.lnp-st-title{font-size:14px;font-weight:700;color:#1a1a1a;line-height:1.2}
.lnp-st-sub{font-size:12.5px;color:#777;margin-top:1px}
.lnp-st-act{font-size:12.5px;font-weight:700;color:#111;text-decoration:underline;white-space:nowrap;cursor:pointer}
.lnp-st-act:hover{color:#4caf50}
@keyframes lnpStIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@keyframes lnpStOut{to{opacity:0;transform:translateX(40px)}}
.cart-count.badge-circle.lnp-bump{animation:lnpBadge .4s ease}
@keyframes lnpBadge{0%,100%{transform:scale(1)}40%{transform:scale(1.5)}}
@media(max-width:600px){#lnp-store-toasts{left:12px;right:12px;top:70px}.lnp-st{min-width:0;max-width:none;width:100%}}
.lnp-invalid{border-color:#e53935 !important;box-shadow:0 0 0 2px rgba(229,57,53,.12) !important}

/* Button loading state (spinner replaces label while an action is in flight) */
.lnp-btn-loading{position:relative !important;color:transparent !important;pointer-events:none !important;opacity:.9}
.lnp-btn-loading::after{content:"";position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:lnpSpin .6s linear infinite}
@keyframes lnpSpin{to{transform:rotate(360deg)}}

/* Whimsical processing loader */
#lnp-fancy{position:fixed;inset:0;z-index:100001;display:none;align-items:center;justify-content:center;background:rgba(255,255,255,.82);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
#lnp-fancy.show{display:flex}
.lnp-fancy-box{display:inline-flex;align-items:center;gap:9px;font-family:inherit;font-size:16px;font-weight:500;color:#1a1a1a;letter-spacing:.2px}
.lnp-fancy-spin{align-self:center;width:16px;height:16px;border:2px solid #e6e6e6;border-top-color:#7cb342;border-radius:50%;animation:lnpSpin .7s linear infinite}
.lnp-fancy-word{display:inline-block;font-weight:600;color:#1a1a1a}
.lnp-fancy-dots{display:inline-flex;gap:1px}
.lnp-fancy-dots i{font-style:normal;animation:lnpDot 1.3s infinite}
.lnp-fancy-dots i:nth-child(2){animation-delay:.2s}
.lnp-fancy-dots i:nth-child(3){animation-delay:.4s}
@keyframes lnpDot{0%,60%,100%{opacity:.2}30%{opacity:1}}
@keyframes lnpFancyWord{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(max-width:600px){.lnp-fancy-box{font-size:15px}}

/* Inline per-field validation message (shows below the field) */
.lnp-field-err{ display:block; color:#e53935; font-size:12px; font-weight:500; margin-top:5px; line-height:1.3; }
