/* =====================================================================
   Espace support DreamprojectAI : couche systeme (chargee en dernier).
   Applique la charte (drp-tokens.css) aux elements de base et aux
   composants Bootstrap des pages non surchargees : police, tailles,
   graisses, hauteurs de controle, rayon, couleurs de role.
   Valeurs par defaut des elements en :where() (specificite nulle) :
   les composants du theme gardent la main.
   ===================================================================== */

/* ---------------------------------------------------------------- base */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-family:var(--drp-font);font-size:var(--drp-fs-base);line-height:var(--drp-lh-body);
  font-weight:var(--drp-fw-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  font-feature-settings:"cv11","ss01";
}
button,input,select,textarea,optgroup,
.btn,.form-control,.form-select,.ts-control,.ts-dropdown,.dropdown-menu,.tooltip,.popover,.toast,.modal,.ck,.ck *{font-family:var(--drp-font)}
:where(code,kbd,samp,pre){font-family:var(--drp-font-mono);font-size:.9em}

/* Titres et petit texte : vraie specificite (element ou classe seule) pour battre Bootstrap
   (h4 en calc(rem+vw), .small a .875em = 12,25 px) sur les gabarits d'origine non surcharges ;
   les composants du theme (classe + element) gardent la main. */
h1,.h1{font-size:var(--drp-fs-h2);font-weight:var(--drp-fw-semibold);line-height:var(--drp-lh-snug);letter-spacing:var(--drp-ls-title)}
h2,.h2{font-size:var(--drp-fs-h4);font-weight:var(--drp-fw-semibold);line-height:var(--drp-lh-snug);letter-spacing:var(--drp-ls-title)}
h3,.h3{font-size:var(--drp-fs-lg);font-weight:var(--drp-fw-semibold);line-height:var(--drp-lh-snug)}
h4,.h4{font-size:var(--drp-fs-md);font-weight:var(--drp-fw-semibold);line-height:var(--drp-lh-snug)}
h5,.h5,h6,.h6{font-size:var(--drp-fs-base);font-weight:var(--drp-fw-semibold);line-height:var(--drp-lh-snug)}
small,.small{font-size:var(--drp-fs-sm)}
.fw-light,.fw-lighter{font-weight:var(--drp-fw-regular) !important}
.fs-1{font-size:var(--drp-fs-h2) !important}.fs-2{font-size:var(--drp-fs-h3) !important}.fs-3{font-size:var(--drp-fs-h4) !important}
.fs-4{font-size:var(--drp-fs-lg) !important}.fs-5{font-size:var(--drp-fs-md) !important}.fs-6{font-size:var(--drp-fs-base) !important}
:where(b,strong){font-weight:var(--drp-fw-semibold)}
@media (max-width:767.98px){h1,.h1{font-size:var(--drp-fs-h3)}}

:where(a){color:var(--drp-link);text-underline-offset:.15em}
:where(a:hover){color:var(--drp-accent-strong,var(--drp-accent))}
:where(.text-muted,.text-body-secondary){color:var(--drp-text-sec) !important}
:where(.text-success){color:var(--drp-success) !important}
:where(.text-danger){color:var(--drp-danger) !important}
:where(.text-warning){color:var(--drp-warning) !important}
:where(.text-info){color:var(--drp-info) !important}
::selection{background:color-mix(in srgb,var(--drp-accent) 30%,transparent)}

/* focus clavier visible et identique partout */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--drp-accent);outline-offset:2px;box-shadow:none;
}

/* --------------------------------------------------------------- boutons */
.btn,.drp-btn{
  min-height:var(--drp-ctl-md);padding:0 var(--drp-sp-4);
  font-size:var(--drp-fs-sm);font-weight:var(--drp-fw-semibold);line-height:1.2;letter-spacing:0;text-transform:none;
  border-radius:var(--drp-radius);
  display:inline-flex;align-items:center;justify-content:center;gap:var(--drp-sp-2);
}
.btn-sm,.drp-btn--sm{min-height:var(--drp-ctl-sm);padding:0 var(--drp-sp-3);font-size:var(--drp-fs-caption)}
.btn-lg,.drp-btn--lg{min-height:var(--drp-ctl-lg);padding:0 var(--drp-sp-5);font-size:var(--drp-fs-base)}
.btn .icon,.drp-btn .icon{width:16px;height:16px;flex:none}
.btn-primary{--bs-btn-bg:var(--drp-btn);--bs-btn-border-color:var(--drp-btn);--bs-btn-hover-bg:var(--drp-btn-h);--bs-btn-hover-border-color:var(--drp-btn-h);
  --bs-btn-active-bg:var(--drp-btn-h);--bs-btn-active-border-color:var(--drp-btn-h);--bs-btn-color:#fff;--bs-btn-hover-color:#fff;--bs-btn-active-color:#fff;
  --bs-btn-disabled-bg:var(--drp-btn);--bs-btn-disabled-border-color:var(--drp-btn)}
.btn-outline-primary,.btn-secondary,.btn-outline-secondary,.btn-light{
  --bs-btn-color:var(--drp-text);--bs-btn-bg:transparent;--bs-btn-border-color:var(--drp-border-s);
  --bs-btn-hover-color:var(--drp-accent);--bs-btn-hover-bg:var(--drp-bg-muted);--bs-btn-hover-border-color:var(--drp-accent);
  --bs-btn-active-color:var(--drp-accent);--bs-btn-active-bg:var(--drp-bg-muted);--bs-btn-active-border-color:var(--drp-accent)}
.btn-danger{--bs-btn-bg:#b42318;--bs-btn-border-color:#b42318;--bs-btn-hover-bg:#912018;--bs-btn-hover-border-color:#912018;--bs-btn-color:#fff;--bs-btn-hover-color:#fff}
.btn-link{--bs-btn-color:var(--drp-link);--bs-btn-hover-color:var(--drp-accent-strong,var(--drp-accent));padding-inline:0}

/* ----------------------------------------------------------------- champs */
.form-control,.form-select,.drp-form-control,.ts-wrapper.form-select .ts-control,.ts-wrapper .ts-control{
  min-height:var(--drp-ctl-md);font-size:var(--drp-fs-base);line-height:1.4;border-radius:var(--drp-radius) !important;
}
textarea.form-control,textarea.drp-form-control{min-height:calc(var(--drp-ctl-md) * 2.5)}
.form-control-sm,.form-select-sm{min-height:var(--drp-ctl-sm);font-size:var(--drp-fs-sm)}
.form-label,.drp-form-label,label{font-size:var(--drp-fs-sm);font-weight:var(--drp-fw-medium);color:var(--drp-text)}
.form-text,.drp-form-hint{font-size:var(--drp-fs-caption);color:var(--drp-text-sec)}
.form-control::placeholder,.drp-form-control::placeholder{color:var(--drp-text-sec);opacity:.85}
.form-check-input{border-radius:var(--drp-radius)}
.form-check-input[type=radio]{border-radius:50%}
.form-check-input:checked{background-color:var(--drp-btn);border-color:var(--drp-btn)}
.invalid-feedback{font-size:var(--drp-fs-caption);color:var(--drp-danger)}
/* Smartphone : 16 px dans les champs, sinon iOS zoome a la saisie */
@media (max-width:767.98px){
  .form-control,.form-select,.drp-form-control,.ts-control,.ts-control input{font-size:var(--drp-fs-md) !important}
}

/* --------------------------------------------------------------- tableaux */
.table{--bs-table-bg:transparent;--bs-table-color:var(--drp-text);--bs-table-border-color:var(--drp-border);font-size:var(--drp-fs-sm)}
.table>thead>tr>th,.drp-table>thead>tr>th{
  font-size:var(--drp-fs-caption);font-weight:var(--drp-fw-semibold);letter-spacing:var(--drp-ls-caps);text-transform:uppercase;color:var(--drp-text-sec);
}
.table>:not(caption)>*>*{padding:var(--drp-sp-3) var(--drp-sp-3)}

/* ------------------------------------------- cartes, badges, alertes, menus */
.card,.modal-content,.dropdown-menu,.popover,.alert,.list-group,.list-group-item,.accordion-item,.nav-tabs .nav-link,.page-link,.toast,.badge,.progress{border-radius:var(--drp-radius) !important}
.rounded-circle,.avatar,img.rounded-circle,.fi,.form-check-input[type=radio]{border-radius:50% !important}
.badge{font-size:var(--drp-fs-caption);font-weight:var(--drp-fw-semibold);letter-spacing:.02em;padding:.3em .55em}
.alert{font-size:var(--drp-fs-sm);border-width:1px;border-left-width:3px}
.alert-success{--bs-alert-color:var(--drp-success);--bs-alert-bg:color-mix(in srgb,var(--drp-success) 10%,var(--drp-bg-card));--bs-alert-border-color:var(--drp-success)}
.alert-danger{--bs-alert-color:var(--drp-danger);--bs-alert-bg:color-mix(in srgb,var(--drp-danger) 10%,var(--drp-bg-card));--bs-alert-border-color:var(--drp-danger)}
.alert-warning{--bs-alert-color:var(--drp-warning);--bs-alert-bg:color-mix(in srgb,var(--drp-warning) 10%,var(--drp-bg-card));--bs-alert-border-color:var(--drp-warning)}
.alert-info,.alert-primary{--bs-alert-color:var(--drp-text);--bs-alert-bg:color-mix(in srgb,var(--drp-accent) 8%,var(--drp-bg-card));--bs-alert-border-color:var(--drp-accent)}
.dropdown-menu{--bs-dropdown-bg:var(--drp-bg-elevated);--bs-dropdown-color:var(--drp-text);--bs-dropdown-border-color:var(--drp-border-s);
  --bs-dropdown-link-color:var(--drp-text);--bs-dropdown-link-hover-bg:var(--drp-bg-muted);--bs-dropdown-link-hover-color:var(--drp-text);
  --bs-dropdown-link-active-bg:var(--drp-btn);--bs-dropdown-font-size:var(--drp-fs-sm);box-shadow:var(--drp-shadow-lg)}
.dropdown-item{font-size:var(--drp-fs-sm);padding:var(--drp-sp-2) var(--drp-sp-4)}
.pagination{--bs-pagination-color:var(--drp-text);--bs-pagination-bg:transparent;--bs-pagination-border-color:var(--drp-border-s);
  --bs-pagination-hover-color:var(--drp-accent);--bs-pagination-hover-bg:var(--drp-bg-muted);--bs-pagination-active-bg:var(--drp-btn);
  --bs-pagination-active-border-color:var(--drp-btn);--bs-pagination-active-color:#fff;--bs-pagination-font-size:var(--drp-fs-sm)}
.nav-tabs{--bs-nav-tabs-border-color:var(--drp-border-s);--bs-nav-tabs-link-active-color:var(--drp-text);--bs-nav-tabs-link-active-border-color:var(--drp-border-s) var(--drp-border-s) var(--drp-bg-card)}
.nav-link{font-size:var(--drp-fs-sm);font-weight:var(--drp-fw-medium);color:var(--drp-text-sec)}
.nav-link:hover,.nav-link.active{color:var(--drp-text)}
.modal{--bs-modal-bg:var(--drp-bg-card);--bs-modal-color:var(--drp-text);--bs-modal-border-color:var(--drp-border-s);--bs-modal-header-border-color:var(--drp-border);--bs-modal-footer-border-color:var(--drp-border)}
.modal-title{font-size:var(--drp-fs-lg);font-weight:var(--drp-fw-semibold)}
[data-bs-theme="dark"] .btn-close{filter:invert(1) grayscale(1) brightness(2)}
.breadcrumb{font-size:var(--drp-fs-sm)}
hr{border-color:var(--drp-border);opacity:1}

/* Logo typographique : base 15 px, les lettres a 0,8 em restent au-dessus du plancher de 12 px. */
.drp-logo{font-size:15px}
/* Editeur de message (CKEditor) : sa police passe par ses propres variables. */
:root{--ck-font-face:var(--drp-font);--ck-border-radius:var(--drp-radius)}
/* sa feuille est injectee apres la notre : on impose la police sur ses elements */
.ck.ck-reset_all,.ck.ck-reset_all *,.ck.ck-reset_all :not(svg){font-family:var(--drp-font) !important}

/* En-tete : tous les controles a la meme hauteur (40 px), icone de theme jamais ecrasee. */
.drp-header__actions .drp-theme-toggle{width:var(--drp-ctl-md);height:var(--drp-ctl-md);flex:none}
.drp-theme-toggle svg.icon{width:18px !important;height:18px !important;min-width:18px;flex:none}
.drp-header__actions .ts-wrapper.form-select{padding:0;border:0 !important;min-height:0;height:var(--drp-ctl-md);background:none}
.drp-header__actions .ts-wrapper .ts-control{height:var(--drp-ctl-md);min-height:var(--drp-ctl-md);border:1px solid var(--drp-border-s) !important;background:var(--drp-bg-card) !important;border-radius:var(--drp-radius) !important}
[data-bs-theme="light"] .drp-header__actions .ts-wrapper .ts-control{border-color:#8a929a !important}

/* Bouton plein : texte blanc partout, meme dans un contenu qui colore ses liens (articles, panneaux). */
a.drp-btn--primary,a.drp-btn--primary:hover,a.drp-btn--primary:focus,a.btn-primary,a.btn-primary:hover{color:#fff !important;text-decoration:none}

/* Smartphone : boutons d'un meme groupe empiles a la meme largeur (page d'erreur, accueil, carte membres). */
@media (max-width:575.98px){
  .drp-error__act,.drp-members .drp-hero__cta{display:flex;flex-direction:column;align-items:stretch;gap:var(--drp-sp-2)}
  .drp-error__act>.drp-btn,.drp-members .drp-hero__cta>.drp-btn{width:100%;margin:0}
}

/* Pastilles : texte principal (le gris secondaire tombait a 4,2:1 sur leur fond en sombre). */
.drp-chip{color:var(--drp-text)}
/* Badges d'etat (Actif, Ouvert, Paye...) : fond teinte + texte de la couleur du role, lisibles dans les deux modes. */
.badge.bg-success,.badge.text-bg-success{background:color-mix(in srgb,var(--drp-success) 16%,var(--drp-bg-card)) !important;color:var(--drp-success) !important;border:1px solid color-mix(in srgb,var(--drp-success) 45%,transparent)}
.badge.bg-danger,.badge.text-bg-danger{background:color-mix(in srgb,var(--drp-danger) 16%,var(--drp-bg-card)) !important;color:var(--drp-danger) !important;border:1px solid color-mix(in srgb,var(--drp-danger) 45%,transparent)}
.badge.bg-warning,.badge.text-bg-warning{background:color-mix(in srgb,var(--drp-warning) 16%,var(--drp-bg-card)) !important;color:var(--drp-warning) !important;border:1px solid color-mix(in srgb,var(--drp-warning) 45%,transparent)}
.badge.bg-info,.badge.text-bg-info,.badge.bg-primary,.badge.text-bg-primary{background:color-mix(in srgb,var(--drp-accent) 14%,var(--drp-bg-card)) !important;color:var(--drp-text) !important;border:1px solid color-mix(in srgb,var(--drp-accent) 45%,transparent)}
.badge.bg-secondary,.badge.bg-light,.badge.bg-dark,.badge.text-bg-secondary{background:var(--drp-bg-muted) !important;color:var(--drp-text) !important;border:1px solid var(--drp-border-s)}
/* Code (bon de reduction...) : jamais sous 12 px, couleur du texte. */
code{font-size:max(var(--drp-fs-caption),.9em);color:var(--drp-text);background:var(--drp-bg-muted);padding:.1em .35em}
/* Barres d'action (portefeuille...) : passent a la ligne plutot que de deborder. */
.drp-viewbar,.drp-viewbar__g{flex-wrap:wrap;min-width:0}
.drp-viewbar__g .drp-form-control{max-width:100%}

/* Texte pour lecteurs d'ecran : invisible et sans encombrement (il allongeait la page sous un tableau defilant). */
.drp-sr{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0,0,0,0) !important;clip-path:inset(50%) !important;white-space:nowrap !important;border:0 !important}
.drp-tscroll{position:relative}

/* Blocs du tableau de bord : l'en-tete (titre + boutons) passe a la ligne au lieu d'elargir la colonne ;
   un bloc ne depasse jamais sa colonne, un tableau trop large defile dans son bloc. */
.drp-panel__hd{flex-wrap:wrap;row-gap:var(--drp-sp-2)}
.drp-panel__hd>span{flex-wrap:wrap;min-width:0}
.drp-panel{min-width:0;max-width:100%}
.drp-panel--flush{overflow-x:auto}
.drp-home-cols>*,.drp-cockpit>*,.drp-band>*,.drp-svc>*{min-width:0}
