canonrs-server 0.1.0

CanonRS server-side rendering support
/* ═══════════════════════════════════════════════════════════════
   INPUT GROUP - Family C Forms tokens compliant
   State via data-rs-state — zero pseudo-class state selectors
   ═══════════════════════════════════════════════════════════════ */

[data-rs-input-group] {
  display: flex;
  align-items: stretch;
  gap: var(--input-group-gap);
  background: var(--input-bg);
  border: var(--input-border-width) solid var(--input-border-color);
  border-radius: var(--input-radius);
  flex-wrap: nowrap;
  overflow: hidden;
  transition: border-color var(--motion-duration-fast) var(--motion-ease-standard),
              box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
}

[data-rs-input-group][data-rs-state~="merge-radius"] {
  border-radius: var(--input-group-radius-merge);
}

[data-rs-input-group][data-rs-state~="merge-radius"] > *:not(:last-child) {
  border-inline-end: var(--input-border-width) solid var(--input-group-addon-border);
}

[data-rs-input-group][data-rs-state~="merge-radius"] > *:first-child {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}

[data-rs-input-group][data-rs-state~="merge-radius"] > *:last-child {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

[data-rs-input-group][data-rs-state~="merge-radius"] > *:not(:first-child):not(:last-child) {
  border-radius: 0;
}

[data-rs-input-group-addon] {
  display: inline-flex;
  align-items: center;
  padding: var(--input-padding-y) var(--input-padding-x);
  background: transparent;
  color: var(--input-group-addon-fg);
  font-size: var(--input-font-size);
  white-space: nowrap;
  border-inline-end: var(--input-border-width) solid var(--input-group-addon-border);
  flex-shrink: 0;
}

[data-rs-input-group-addon][data-rs-state~="last"] {
  border-inline-end: none;
  border-inline-start: var(--input-border-width) solid var(--input-group-addon-border);
}

[data-rs-input-group] [data-rs-input] {
  flex: 1;
  border: none;
  background: transparent;
  outline: none;
  box-shadow: none;
  height: var(--input-md-height);
  min-width: 0;
  color: var(--input-fg);
  font-size: var(--input-font-size);
  padding: var(--input-padding-y) var(--input-padding-x);
}

[data-rs-input-group] [data-rs-input]::placeholder {
  color: var(--input-placeholder);
  opacity: 1;
}

/* ── FOCUS WITHIN ───────────────────────────────────────────── */
[data-rs-input-group][data-rs-state~="focus-within"] {
  border-color: var(--input-focus-ring-color);
  box-shadow: var(--input-focus-ring-shadow);
}

/* ── VALIDATION via state ──────────────────────────────────────── */
[data-rs-input-group][data-rs-state~="error"] {
  border-color: var(--input-error-border);
}

[data-rs-input-group][data-rs-state~="success"] {
  border-color: var(--input-success-border);
}

[data-rs-input-group][data-rs-state~="warning"] {
  border-color: var(--input-warning-border);
}

/* ── DISABLED ───────────────────────────────────────────────── */
[data-rs-input-group][data-rs-state~="disabled"] {
  opacity: var(--input-disabled-opacity);
  cursor: not-allowed;
  pointer-events: none;
}

/* ── Input dentro do group ─────────────────────────────────── */
[data-rs-input-group] [data-rs-input] {
  background: transparent;
  border: none;
  box-shadow: none;
  flex: 1;
  min-width: 0;
}

[data-rs-input-group] [data-rs-input][data-rs-state~="focus"] {
  box-shadow: none;
  outline: none;
}

[data-rs-input-group-prefix],
[data-rs-input-group-suffix] {
    display: flex;
    align-items: center;
    padding: var(--input-padding-x);
    background: var(--input-group-addon-bg, var(--theme-surface-muted));
    color: var(--input-group-addon-fg, var(--theme-surface-fg-muted));
    font-size: var(--input-font-size);
    white-space: nowrap;
    flex-shrink: 0;
}

[data-rs-input-group-prefix] {
    border-right: var(--input-border-width, 1px) solid var(--input-border-color);
}

[data-rs-input-group-suffix] {
    border-left: var(--input-border-width, 1px) solid var(--input-border-color);
}