canonrs-server 0.1.0

CanonRS server-side rendering support
/* ═══════════════════════════════════════════════════════════════
   SKELETON — Family E Feedback tokens compliant
   ═══════════════════════════════════════════════════════════════ */

[data-rs-skeleton] {
  position: relative;
  background: var(--skeleton-bg);
  border-radius: var(--skeleton-radius);
  overflow: hidden;
}

[data-rs-skeleton]::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    var(--skeleton-shimmer-color-start) 0%,
    var(--skeleton-shimmer-color-end) 50%,
    var(--skeleton-shimmer-color-start) 100%
  );
  animation: skeleton-shimmer var(--skeleton-shimmer-duration) var(--skeleton-shimmer-ease) infinite;
}

[data-rs-skeleton][data-rs-variant="text"] {
  height: var(--skeleton-text-height);
  border-radius: var(--skeleton-text-radius);
}

[data-rs-skeleton][data-rs-variant="circle"] {
  width: var(--skeleton-circle-size);
  height: var(--skeleton-circle-size);
  border-radius: var(--skeleton-circle-radius);
}

[data-rs-skeleton][data-rs-variant="rectangle"] {
  height: var(--skeleton-rectangle-height);
  border-radius: var(--skeleton-rectangle-radius);
}

[data-rs-skeleton][data-rs-state~="loading"]::after {
  animation: skeleton-shimmer var(--skeleton-shimmer-duration) var(--skeleton-shimmer-ease) infinite;
}

@keyframes skeleton-shimmer {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}