canonrs-server 0.1.0

CanonRS server-side rendering support
/* MODAL - Family A Overlay */

[data-rs-modal] {
  display: contents;
}

[data-rs-modal-portal] {
  display: contents;
}

/* ── OVERLAY ─────────────────────────────────────────────────────────────────── */
[data-rs-modal-overlay] {
  position: fixed;
  inset: 0;
  z-index: var(--modal-overlay-z-index);
  background: var(--modal-overlay-bg);
  opacity: 0;
  visibility: hidden;
  transition:
    opacity var(--modal-transition-duration) var(--modal-transition-ease),
    visibility var(--modal-transition-duration) var(--modal-transition-ease);
}

[data-rs-modal-overlay][data-rs-state~="open"],
[data-rs-modal][data-rs-state~="open"] [data-rs-modal-overlay] {
  opacity: 1;
  visibility: visible;
}

/* ── CONTENT ─────────────────────────────────────────────────────────────────── */
[data-rs-modal-content] {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0.95);
  z-index: calc(var(--modal-overlay-z-index) + 1);
  width: var(--modal-content-width);
  max-width: var(--modal-content-max-width);
  background: var(--modal-content-bg);
  color: var(--modal-content-fg);
  padding: var(--modal-content-padding);
  border-radius: var(--modal-content-radius);
  box-shadow: var(--modal-content-shadow);
  opacity: 0;
  visibility: hidden;
  transition:
    opacity var(--modal-transition-duration) var(--modal-transition-ease),
    transform var(--modal-transition-duration) var(--modal-transition-ease),
    visibility var(--modal-transition-duration) var(--modal-transition-ease);
}

[data-rs-modal-content][data-rs-state~="open"],
[data-rs-modal][data-rs-state~="open"] [data-rs-modal-content] {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, -50%) scale(1);
}

/* ── TYPOGRAPHY ──────────────────────────────────────────────────────────────── */
[data-rs-modal-title] {
  color: var(--modal-title-fg);
  font-size: var(--modal-title-font-size);
  font-weight: var(--modal-title-font-weight);
  margin-bottom: var(--modal-header-gap);
}

[data-rs-modal-description] {
  color: var(--modal-description-fg);
  font-size: var(--modal-description-font-size);
}

/* ── FOOTER ──────────────────────────────────────────────────────────────────── */
[data-rs-modal-footer] {
  display: flex;
  gap: var(--modal-footer-gap);
  justify-content: flex-end;
  padding-top: var(--modal-header-gap);
}