/* Direction-safe primitives shared by localized public and member surfaces. */
:root {
  --locale-inline-start: left;
  --locale-inline-end: right;
  --locale-slide-past-inline-end: 100%;
  --locale-shadow-toward-inline-start: -10px;
  --locale-center-translate: -50%;
  --locale-toggle-translate: 20px;
}
:root[dir="rtl"] {
  --locale-inline-start: right;
  --locale-inline-end: left;
  --locale-slide-past-inline-end: -100%;
  --locale-shadow-toward-inline-start: 10px;
  --locale-center-translate: 50%;
  --locale-toggle-translate: -20px;
}

[dir="rtl"] .locale-mirror-inline,
[dir="rtl"] [data-locale-mirror="inline"] { transform: scaleX(-1); }

/* Shared overlay edge contract: components can opt into logical placement. */
.locale-overlay-inline-end { inset-inline-end: 0; }

/* User-authored text keeps its own bidi runs without changing UI direction. */
.user-content,
[data-user-content] {
  unicode-bidi: plaintext;
  text-align: start;
  overflow-wrap: anywhere;
}

.locale-number,
[data-locale-number] {
  direction: ltr;
  unicode-bidi: isolate;
}
