/* Geometry follows existing Bootstrap grids, Swiper slides and horizontal rails. */
.rp-loading-card { position:relative; overflow:hidden; pointer-events:none; min-width:0; }
.rp-bone { display:block; background:#e9eeeb; border-radius:5px; }
.rp-loading-card::after, .rp-bone-text::after { content:""; position:absolute; inset:0; background:linear-gradient(100deg,transparent 25%,rgba(255,255,255,.6) 50%,transparent 75%); transform:translateX(-100%); animation:rp-loading-sweep 1.8s ease-in-out infinite; pointer-events:none; }
@keyframes rp-loading-sweep { to { transform:translateX(100%); } }
.rp-loading-product { padding:8px; border:1px solid #edf0ee; border-radius:12px; height:100%; background:#fff; }
.rp-loading-product .rp-bone-square { aspect-ratio:1; width:100%; border-radius:10px; margin-bottom:10px; }
.rp-bone-title { width:85%; height:12px; margin:8px 0; }
.rp-bone-sub { width:62%; height:9px; margin:7px 0; }
.rp-bone-rating { width:35%; height:10px; margin:12px 0; }
.rp-loading-price { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:14px; }
.rp-bone-price { width:35%; height:15px; }
.rp-bone-action { flex:0 0 44px; width:44px; height:30px; border-radius:8px; }
.rp-loading-category { padding:8px; }
.rp-loading-category .rp-bone-square { aspect-ratio:1; border-radius:14px; width:100%; }
.rp-loading-category .rp-bone-title,.rp-loading-category .rp-bone-sub { margin-inline:auto; }
.rp-loading-store { flex:0 0 82px; }
.rp-loading-row { display:flex; align-items:center; gap:12px; padding:16px; margin-bottom:8px; background:#fff; border:1px solid #edf0ee; border-radius:12px; width:100%; }
.rp-loading-copy { flex:1; min-width:0; }
.rp-bone-avatar { width:42px; height:42px; flex:none; border-radius:10px; }
.rp-loading-order,.rp-loading-booking { min-height:110px; }
.rp-loading-search { padding:9px 12px; margin:0; border:0; }
.rp-loading-brand { padding-bottom:12px; }
.rp-loading-brand .rp-bone-media { height:90px; }
.rp-bone-logo { width:28px; height:28px; border-radius:50%; margin:-14px auto 4px; position:relative; border:3px solid white; }
.rp-loading-brand .rp-bone-title,.rp-loading-brand .rp-bone-sub { margin-inline:auto; }
.rp-loading-banner { width:100%; min-height:80px; border-radius:12px; }
.rp-loading-banner .rp-bone-media { position:absolute; inset:0; }
.rp-loading-recipe { flex:0 0 260px; height:200px; border-radius:16px; background:#edf0ee; }
.rp-loading-recipe .rp-bone-media { height:130px; }
.rp-loading-recipe .rp-bone-title,.rp-loading-recipe .rp-bone-sub { margin-inline:12px; }
.rp-bone-text { display:inline-block; vertical-align:middle; width:8em; max-width:100%; height:.85em; position:relative; overflow:hidden; }
.rp-load-state { grid-column:1 / -1; flex:0 0 100%; width:100%!important; padding:24px 12px; display:flex; align-items:center; justify-content:center; gap:12px; color:#64748b; font-size:.8rem; text-align:center; }
.rp-load-retry { border:1px solid #2d6a4f; border-radius:20px; background:#fff; padding:5px 14px; color:#2d6a4f; font:inherit; }
.rp-load-retry:focus-visible { outline:2px solid #2d6a4f; outline-offset:3px; }
.rp-loading-batch { display:contents; }
.qsv-grid[aria-busy="true"] .qsv-card { visibility:hidden; }
.qsv-grid[aria-busy="true"] { position:relative; min-height:230px; }
.qsv-loading { position:absolute; inset:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.qsv-loading .rp-loading-banner { height:100%; }
.qsv-print-hero,.qsv-satvik-hero,.qsv-mama-hero { background-image:none!important; }
.qsv-hero-slider > .rp-loading-banner { height:100%; }
.rp-loading-product-view .pvi-meta,.rp-loading-product-view .pvi-wish { visibility:hidden; }
#section-2-grid > .rp-loading-mosaic { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.rp-loading-mosaic .mini-img-grid .rp-bone { aspect-ratio:1; }
.horizontal-scroll-view > .horizontal-item:has(.rp-loading-card) { min-width:150px; }
.swiper-wrapper[aria-busy="true"] { min-width:0; }
.swiper-wrapper[aria-busy="true"] > .rp-skel-slide { width:calc((100% - 20px) / 3); flex-shrink:0; }
.category-carousel .swiper-wrapper[aria-busy="true"] > .swiper-slide { width:82px; }
@media(min-width:768px) { .swiper-wrapper[aria-busy="true"] > .rp-skel-slide { width:calc((100% - 40px) / 5); } }
@media(prefers-reduced-motion:reduce) { .rp-loading-card::after,.rp-bone-text::after { animation:none; display:none; } }
