/* ──────────────────────────────────────────────────────────────────────────
   TextEditor (Trix) — habillage partagé portail client / portail prestataire

   Utilisé par le composant twig:TextEditor
   (templates/customer_portal/components/TextEditor.html.twig), lui-même rendu
   par la messagerie du portail client et par le widget `wysiwyg` du portail
   prestataire (provider_portal/form/wysiwyg.html.twig).

   Chargé :
   - portail client    → import depuis assets/customer-portal/portal.js
   - portail prestataire → @import depuis assets/provider_portal/styles/portal.css

   Volontairement HORS `@layer` et en `!important` : trix.min.css est injecté
   sans couche (import JS) et habille `trix-editor` / `.trix-button` par
   défaut. Un `@layer` perdrait systématiquement contre lui.
   ────────────────────────────────────────────────────────────────────────── */
.customer-portal-text-editor {
    overflow: hidden;
    width: 100%;
    border: 1.5px solid #33A0BE !important;
    border-radius: 8px !important;
    background: #F2F8FF !important;
    outline: none !important;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.customer-portal-text-editor:focus-within {
    box-shadow: 0 0 0 3px rgba(51, 160, 190, 0.18) !important;
}
.customer-portal-text-editor trix-toolbar {
    display: block !important;
    padding: 0.375rem 0.625rem 0.25rem !important;
    border: 0 !important;
    border-bottom: none !important;
    background: #E4F7FC !important;
    box-shadow: none !important;
}
.customer-portal-text-editor trix-toolbar .trix-button-row {
    align-items: center;
    justify-content: flex-start;
    gap: 24px !important;
    overflow-x: auto;
}
.customer-portal-text-editor trix-toolbar .trix-button-group {
    margin: 0 !important;
    border: 0 !important;
    border-radius: 6px !important;
    background: transparent !important;
    gap: 4px !important;
    box-shadow: none !important;
}
.customer-portal-text-editor trix-toolbar .trix-button {
    height: 1.875rem !important;
    min-width: 1.875rem !important;
    padding: 0 0.3rem;
    border: 0 !important;
    border-radius: 6px !important;
    background: transparent !important;
    color: #33A0BE !important;
    transition: background 0.15s ease, color 0.15s ease;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 0 !important;
}
.trix-button.trix-button--underline{
    padding:0 !important;
}
.customer-portal-text-editor trix-toolbar .trix-button:not(:disabled):hover,
.customer-portal-text-editor trix-toolbar .trix-button.trix-active {
    background: rgba(51, 160, 190, 0.12) !important;
    color: #1a7a96 !important;
}
.customer-portal-text-editor trix-toolbar .trix-button:disabled {
    color: rgba(51, 160, 190, 0.35) !important;
}
.customer-portal-text-editor trix-toolbar .trix-button-group-spacer {
    display: none !important;
}
.customer-portal-text-editor trix-toolbar .trix-dialog {
    border: 0 !important;
    border-radius: 8px !important;
    box-shadow: 0 8px 24px rgba(51, 160, 190, 0.18) !important;
}
.customer-portal-text-editor trix-editor.customer-portal-text-editor__input {
    min-height: 87px;
    width: 100%;
    margin: 0 !important;
    padding: 0.5rem 0.875rem 0.875rem !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: #F2F8FF !important;
    color: #282828;
    font-size: 0.875rem;
    line-height: 1.5rem;
    outline: none !important;
    box-shadow: none !important;
}
.customer-portal-text-editor .customer-portal-text-editor__actions:empty {
    display: none;
}
/* --messages */
.customer-portal-text-editor--messages trix-toolbar {
    border-radius: 6px 6px 0 0 !important;
}
.customer-portal-text-editor--messages trix-editor.customer-portal-text-editor__input {
    border-radius: 0 0 6px 6px !important;
    padding-right: 8rem !important;
}

.customer-portal-text-editor--messages trix-editor.customer-portal-text-editor__input ul,
.customer-portal-text-editor--messages trix-editor.customer-portal-text-editor__input ol {
    padding-left: 1.1rem !important;
    border-radius: 0 0 6px 6px !important;
    padding-right: 8rem !important;
}

.customer-portal-text-editor--compact trix-editor.customer-portal-text-editor__input ul,
.customer-portal-text-editor--compact trix-editor.customer-portal-text-editor__input ol {
    padding-left: 1.1rem !important;
    border-radius: 0 0 6px 6px !important;
    padding-right: 8rem !important;
}
/* --compact */
.customer-portal-text-editor--compact {
    border-radius: 8px !important;
}
.customer-portal-text-editor--compact trix-toolbar {
    padding: 0.25rem 0.5rem 0.125rem !important;
}
.customer-portal-text-editor--compact trix-toolbar .trix-button-row {
    gap: 0.0625rem;
    scrollbar-width: none;
}
.customer-portal-text-editor--compact trix-toolbar .trix-button-row::-webkit-scrollbar {
    display: none;
}
.customer-portal-text-editor--compact trix-toolbar .trix-button {
    height: 1.625rem !important;
    min-width: 1.625rem !important;
    font-size: 0 !important;
}
.customer-portal-text-editor--compact trix-editor.customer-portal-text-editor__input {
    min-height: 72px;
    padding: 0.375rem 0.75rem 0.625rem !important;
    color: #282828;
}

/* ══════════════════════════════════════════════════════════════════════════
   Variantes transverses (utilisées par le widget de formulaire du portail
   prestataire, disponibles partout)
   ══════════════════════════════════════════════════════════════════════════ */

/* --error : contrainte de validation en échec (hasError) */
.customer-portal-text-editor--error {
    border-color: #D33E36 !important;
}
.customer-portal-text-editor--error:focus-within {
    box-shadow: 0 0 0 3px rgba(211, 62, 54, 0.18) !important;
}

/* --disabled : plus de toolbar, champ grisé (Trix n'a pas d'attribut disabled,
   le composant pose contenteditable="false") */
.customer-portal-text-editor--disabled {
    border-color: #C8C8C8 !important;
    background: #F5F5F5 !important;
}
.customer-portal-text-editor--disabled trix-toolbar {
    display: none !important;
}
.customer-portal-text-editor--disabled trix-editor.customer-portal-text-editor__input {
    cursor: not-allowed;
    color: #848484 !important;
    background: #F5F5F5 !important;
}

/* --no-attachments : pas de bouton "pièce jointe" (aucun upload n'est traité
   côté fiches prestataire, contrairement à la messagerie client) */
.customer-portal-text-editor--no-attachments trix-toolbar .trix-button-group--file-tools {
    display: none !important;
}

/* --max-height : hauteur plafonnée + scroll interne.
   La valeur arrive en style inline (--cp-text-editor-max-height), Tailwind ne
   peut pas générer une classe par valeur. */
.customer-portal-text-editor--max-height trix-editor.customer-portal-text-editor__input {
    max-height: var(--cp-text-editor-max-height);
    overflow-y: auto;
}

/* Compteur de caractères (showCounter) */
.customer-portal-text-editor__counter {
    padding: 0 0.875rem 0.375rem;
    background: #F2F8FF;
    text-align: right;
    font-size: 0.6875rem;
    line-height: 1rem;
    color: #848484;
}
.customer-portal-text-editor__counter.is-limit-reached {
    color: #D33E36;
}
