canonrs-server 0.1.0

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

[data-rs-alert] {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--alert-gap);
  padding-inline: var(--alert-padding-x);
  padding-block: var(--alert-padding-y);
  border-radius: var(--alert-radius);
  border: var(--alert-border-width) solid var(--alert-border-color);
  background: var(--alert-bg);
  color: var(--alert-fg);
}

[data-rs-alert][data-rs-variant="success"]     { background: var(--alert-bg-success); }
[data-rs-alert][data-rs-variant="warning"]     { background: var(--alert-bg-warning); }
[data-rs-alert][data-rs-variant="destructive"] { background: var(--alert-bg-error); }

[data-rs-alert-title] {
  font-size: var(--alert-title-font-size);
  font-weight: var(--alert-title-font-weight);
  color: var(--alert-title-fg);
}

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

[data-rs-alert-close] {
  position: absolute;
  top: var(--alert-padding-y);
  right: var(--alert-padding-x);
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--alert-close-size);
  height: var(--alert-close-size);
  color: var(--alert-close-fg);
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
}

[data-rs-alert-close][data-rs-state~="hover"] {
  color: var(--alert-close-fg-hover);
}

[data-rs-alert-close][data-rs-state~="disabled"] {
  opacity: var(--alert-close-opacity-disabled);
  cursor: not-allowed;
  pointer-events: none;
}

/* State semântico — aria + visual */
[data-rs-alert][data-rs-state~="error"]   { background: var(--alert-bg-error);   border-color: var(--alert-border-color-error); }
[data-rs-alert][data-rs-state~="warning"] { background: var(--alert-bg-warning); border-color: var(--alert-border-color-warning); }
[data-rs-alert][data-rs-state~="success"] { background: var(--alert-bg-success); border-color: var(--alert-border-color-success); }

[data-rs-alert][data-rs-state~="closed"] { display: none; }