/* Loader, matched to the Curiofinds Browse Lab: grey card shapes in the feed plus one
   full-width pastel glow with one message. Load after browse-v2.css and web-source-feed.css.
   Visual only: it does not decide WHEN loading shows. That stays with the feed code. */
.web-source-loader{padding-bottom:0;text-align:left}
.web-source-loader::before{content:none!important;display:none!important}
.web-source-skeleton.grid,.curio-batch-skeleton{grid-auto-rows:auto;align-items:start}
.web-source-skeleton i,.curio-batch-skeleton i{display:block;height:230px;border-radius:16px;background:var(--skel,#efefea);animation:cfSkel 1.6s ease-in-out infinite}
.web-source-skeleton i:nth-child(2),.curio-batch-skeleton i:nth-child(2){height:300px;animation-delay:.12s}
.web-source-skeleton i:nth-child(3),.curio-batch-skeleton i:nth-child(3){height:262px;animation-delay:.24s}
@keyframes cfSkel{50%{opacity:.6}}
/* one visible message only: the in-feed text stays for screen readers, the pill is what people see */
.web-source-loader>p,.curio-batch-loader>p{position:absolute!important;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.curio-batch-spark{display:none!important}
/* the glow shows while the source loader is on screen (or the wall turns it on), and goes away with it */
html body:has(.web-source-loader:not([hidden])) #curioCurate.curio-curate,
html body #curioCurate.curio-curate.on{display:flex!important;align-items:flex-end;justify-content:center;height:240px;padding:0 0 calc(34px + env(safe-area-inset-bottom,0px));opacity:1;visibility:visible;pointer-events:none}
html body #curioCurate.curio-curate::before{content:"";display:block;position:absolute;inset:0;background:linear-gradient(to top,var(--bg) 8%,color-mix(in srgb,var(--bg) 70%,transparent) 45%,transparent)}
html body #curioCurate.curio-curate::after{content:"";display:block;position:absolute;z-index:0;left:-10%;right:-10%;width:auto;transform:none;bottom:-70px;height:200px;background:linear-gradient(90deg,var(--lilac),var(--peach),var(--butter),var(--mint),var(--sky),var(--rose),var(--lilac));background-size:200% 100%;filter:blur(46px);opacity:.9;animation:cfGlow 3.2s linear infinite}
@keyframes cfGlow{from{background-position:0 0}to{background-position:200% 0}}
html body #curioCurate.curio-curate span{display:inline-flex!important;position:relative;z-index:1}
@media (prefers-reduced-motion:reduce){.web-source-skeleton i,.curio-batch-skeleton i,html body #curioCurate.curio-curate::after{animation:none}}
