/* ─────────────────────────────────────────────────────────────────────────────
   Organiser prose.

   Wherever an organiser writes formatted text — an event's Description
   (FR-201), a page design's "Text" block (FR-205) — what is stored is a run of
   <p>, <ul> and the odd <a> rather than a single string. .u-rich is what the
   surrounding design wraps that run in.

   Deliberately one file, loaded by both shells: the Vuexy admin layout, where
   the organiser reads back what they wrote, and the three public event designs,
   where a participant does. Two copies would drift, and the whole point is that
   the paragraph looks the same in the builder as it does on the page.

   It sets spacing and nothing else. Size, colour and weight stay with the
   classes beside it, so a block keeps its design's own type scale — FR-205's
   "layout and structure remain locked" applies to the organiser's formatting
   too. First and last child margins collapse, so a one-paragraph block sits
   exactly where the plain string it replaced used to.
   ────────────────────────────────────────────────────────────────────────── */
.u-rich > :first-child { margin-top: 0; }
.u-rich > :last-child { margin-bottom: 0; }

.u-rich p { margin: 0 0 1em; }

.u-rich ul,
.u-rich ol { margin: 0 0 1em; padding-left: 1.35em; }

.u-rich li { margin-bottom: 0.35em; }

.u-rich h2,
.u-rich h3 {
    /* Sized off the surrounding text rather than re-specified: a heading typed
       inside a body block is the organiser emphasising a line, not opting out
       of the design's scale. */
    font-size: 1.15em;
    font-weight: 700;
    margin: 1.25em 0 0.5em;
}

.u-rich a { color: inherit; text-decoration: underline; }

.u-rich strong { font-weight: 700; }

.u-rich blockquote {
    margin: 0 0 1em;
    padding-left: 1em;
    border-left: 3px solid currentColor;
    opacity: 0.85;
}

/* The editor itself — Quill sizes to its content, which starts at one empty
   line and reads as a broken input. */
.rich-editor { min-height: 160px; }

.rich-editor.is-invalid { border-color: var(--bs-form-invalid-color, #ff3e1d); }
