/* Dif’ Prod’ Com’ — actions Éditorial et surfaces communes, V15.6.3.
 * Feuille commune remplacée, non doublée. Aucun événement ou état métier.
 * Les onglets, les étapes et les icônes de navigation ne sont pas des actions.
 */
:root {
  --dpc-card: #fff;
  --dpc-surface: #fff;
  --surface: #fff;
  --dpc-button-ink: #76518a;
  --dpc-button-underline: #d4c5dc;
  --dpc-button-action: #ff521b;
  --dpc-button-on-action: #111;
  --dpc-button-danger: #a13232;
  --dpc-button-danger-surface: #fff3f1;
  --dpc-button-focus: #76518a;
  --dpc-editorial-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3.54 15.08 20.46 8.92 M11.49 4.74 20.46 8.92 16.27 17.89' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* One surface policy for desktop, authentication, public forms and mobile.
 * Only containers are targeted: badges, navigation states, avatars and the
 * intentional colours of commit/destructive buttons keep their semantics.
 * This shared boundary also removes the historical gradients on cards. */
:where(.card, .panel, .auth-card, .m-card, .m-section, .modal, dialog,
  .production-card, .project-card, .diffuser-card, .contact-card, .next-card,
  .workflow-card, .workflow-column, .production-column, .column, .deal,
  .detail-section, .summary-box, .list-panel, .doc-page, .admin-page-panel,
  .admin-page-nav, .modal-head, .modal-foot, .duplicate-pair, .danger-zone,
  .cockpit-urgent, .cockpit-late, .cockpit-regular, .cockpit-series,
  .waiting-response-group, .diffusion-action-group, .agenda-group,
  .person-access-box, .technical-field, .new-record-filters, .v11-template-picker,
  .map-panel, .map-result, .new-record-existing-row,
  .diffusion-contact-summary > div, .diffusion-contact-manager-row,
  .external-shell, .external-card, .share-document, fieldset) {
  background: var(--dpc-card, #fff) !important;
}

/* Une commande reste identifiable sans survol et possède une zone de clic. */
:where(.btn:not(.dpc-system-icon), .m-btn, .link-button,
  .panel-head button, .section-head button, .v11-mail-command,
  .argumentary-email-link, .auth-card button, .share-document button,
  .roadbook-tools button, .external-shell button,
  [data-action="email-services-save"], .m-project-chat .m-chat-foot button
):where(:not(.active):not([aria-selected="true"]):not(.step)) {
  color: var(--dpc-button-ink) !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: 4px !important;
  box-shadow: none !important;
  padding: 9px 7px !important;
  min-height: 44px !important;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start !important;
  text-align: left !important;
  gap: 8px;
  --dpc-editorial-arrow: inline-block;
  font-weight: 500 !important;
  letter-spacing: normal !important;
  line-height: 1.45;
  text-decoration: underline var(--dpc-button-underline) 1px !important;
  text-underline-offset: 5px;
  text-decoration-skip-ink: auto;
  transform: none !important;
  filter: none !important;
  transition: color 140ms ease, text-decoration-color 140ms ease;
}
/* SVG décoratif monochrome : le masque prend la couleur du lien sans ajouter
 * de texte accessible, de requête réseau ni d’élément au DOM. L’inclinaison
 * est dessinée dans le tracé, sans découpe polygonale ou rotation CSS.
 * Les marges internes et les extrémités arrondies évitent les bords coupés.
 */
:where(.btn:not(.dpc-system-icon), .m-btn, .link-button,
  .panel-head button, .section-head button, .v11-mail-command,
  .argumentary-email-link, .auth-card button, .share-document button,
  .roadbook-tools button, .external-shell button,
  [data-action="email-services-save"], .m-project-chat .m-chat-foot button
):where(:not(.active):not([aria-selected="true"]):not(.step))::after {
  content: "";
  display: var(--dpc-editorial-arrow, none);
  width: .9em;
  height: .9em;
  flex: 0 0 .9em;
  background: currentColor;
  -webkit-mask: var(--dpc-editorial-glyph) center / contain no-repeat;
  mask: var(--dpc-editorial-glyph) center / contain no-repeat;
  mask-mode: alpha;
  text-decoration: none;
  pointer-events: none;
}
:where(.btn:not(.dpc-system-icon), .m-btn, .link-button,
  .panel-head button, .section-head button, .v11-mail-command,
  .argumentary-email-link, .auth-card button, .share-document button,
  .roadbook-tools button, .external-shell button,
  [data-action="email-services-save"], .m-project-chat .m-chat-foot button
):where(:not(.active):not([aria-selected="true"]):not(.step)):where(:hover, :focus-visible) {
  text-decoration-color: currentColor !important;
}

/* L’action prioritaire porte un trait orange, sans boîte supplémentaire. */
:where(.btn.primary, .m-btn.primary, .external-shell button.primary):where(:not(.active):not([aria-selected="true"])) {
  color: var(--dpc-button-on-action) !important;
  text-decoration-color: var(--dpc-button-action) !important;
  text-decoration-thickness: 2px !important;
}

/* Engagement : envoyer et confirmer. Les commandes hors formulaire
 * sont identifiées par leurs attributs, jamais par leur libellé ou un observer.
 */
:where(.btn[type="submit"], .m-btn[type="submit"],
  form .btn:not([type]), form .m-btn:not([type]),
  .auth-card button:not([type="button"]), .external-shell button[type="submit"],
  .external-shell button[data-submit], .external-shell button[data-draft],
  [data-vd-close-choice="save"], [data-v11-action="mail-draft-save"],
  [data-m-action="validation-change-submit"],
  [data-argumentary-conflict="keep"], .dpc-commit,
  .m-project-chat .m-chat-foot button[type="submit"]
):where(:not(.dpc-save)) {
  color: var(--dpc-commit-ink, var(--dpc-button-on-action)) !important;
  background: var(--dpc-commit-background, var(--dpc-button-action)) !important;
  border: 1px solid var(--dpc-commit-border, var(--dpc-button-action)) !important;
  border-radius: 8px !important;
  padding: 10px 16px !important;
  min-height: 44px !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  justify-content: center !important;
  text-align: center !important;
  --dpc-editorial-arrow: none;
}
/* La connexion utilise la même mécanique de soumission, en contour discret.
 * La connexion conserve son contour discret. Les sauvegardes suivent
 * le style Éditorial ; les autres engagements restent orange. La transparence reprend le fond réel du cadre.
 */
#loginForm > button:not([type="button"]) {
  --dpc-commit-ink: #111;
  --dpc-commit-background: transparent;
  --dpc-commit-border: #111;
}
:where(.btn[type="submit"], .m-btn[type="submit"],
  form .btn:not([type]), form .m-btn:not([type]),
  .auth-card button:not([type="button"]), .external-shell button[type="submit"],
  .external-shell button[data-submit], .external-shell button[data-draft],
  [data-vd-close-choice="save"], [data-v11-action="mail-draft-save"],
  [data-m-action="validation-change-submit"],
  [data-argumentary-conflict="keep"], .dpc-commit,
  .m-project-chat .m-chat-foot button[type="submit"]
):where(:not(.dpc-save)):where(:hover, :focus-visible):where(:not(:disabled):not([aria-disabled="true"])) {
  box-shadow: inset 0 0 0 1px var(--dpc-button-on-action) !important;
}

/* Destruction : repère rouge explicite, même si un ancien primary subsiste. */
:where(.btn.danger, .m-btn.danger,
  [data-action^="entity-delete-"], [data-action$="-delete"],
  [data-action="structure-remove-row"], [data-action="schedule-remove"],
  [data-action="budget-remove"], [data-v11-action="mail-draft-delete"],
  [data-v14-action="legal-delete"], [data-agenda-task-action="delete"], [data-remove]
) {
  color: var(--dpc-button-danger) !important;
  background: var(--dpc-button-danger-surface) !important;
  border: 1px solid var(--dpc-button-danger) !important;
  border-radius: 8px !important;
  padding: 9px 13px !important;
  min-height: 44px !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  justify-content: center !important;
  text-align: center !important;
  --dpc-editorial-arrow: none;
}
:where(.btn.danger, .m-btn.danger,
  [data-action^="entity-delete-"], [data-action$="-delete"],
  [data-action="structure-remove-row"], [data-action="schedule-remove"],
  [data-action="budget-remove"], [data-v11-action="mail-draft-delete"],
  [data-v14-action="legal-delete"], [data-agenda-task-action="delete"], [data-remove]
):where(:hover, :focus-visible):where(:not(:disabled):not([aria-disabled="true"])) {
  color: #fff !important;
  background: var(--dpc-button-danger) !important;
}

/* Clavier, erreur, chargement et indisponibilité restent lisibles. */
:is(.btn, .m-btn, .link-button, .panel-head button, .section-head button,
  .v11-mail-command, .argumentary-email-link, .auth-card button,
  .share-document button, .roadbook-tools button, .external-shell button,
  .m-project-chat .m-chat-foot button):focus-visible {
  outline: 2px solid var(--dpc-button-focus) !important;
  outline-offset: 3px;
}
.dpc-account .dpc-system-icon:focus-visible { outline-color: #fbfaf8 !important; }
:is(.btn, .m-btn, .link-button, .panel-head button, .section-head button,
  .v11-mail-command, .argumentary-email-link, .auth-card button,
  .share-document button, .roadbook-tools button, .external-shell button,
  .m-project-chat .m-chat-foot button):is(:disabled, [aria-disabled="true"]) {
  opacity: .48;
  cursor: not-allowed;
  box-shadow: none !important;
  transform: none !important;
  text-decoration: none !important;
  --dpc-editorial-arrow: none;
}
/* Un chevron, une pagination, une sélection ou un chargement ne reçoit pas
 * une seconde flèche. Les boutons d’engagement gardent leur centrage propre.
 */
:where(.dpc-system-icon, [role="tab"], [aria-pressed], .is-loading,
  [aria-busy="true"], [data-action="noop"], [data-action="month-prev"],
  [data-action="month-next"], .admin-page-nav button, .record-switch button,
  .tabs-inline button, .m-tabs button, .pagination button) {
  --dpc-editorial-arrow: none;
}
:is(.admin-primary-nav, .admin-secondary-nav) button:not(.active) {
  color: var(--dpc-button-ink) !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
}
.btn-row, .modal-foot, .toolbar, .m-actions {
  min-width: 0;
  flex-wrap: wrap;
  gap: 8px 16px;
}
:is(.btn-row, .modal-foot, .toolbar, .m-actions) > :is(.btn, .m-btn) {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}
@media (pointer: coarse) {
  :is(.btn:not(.dpc-system-icon), .m-btn, .link-button, .auth-card button,
    .external-shell button, .panel-head button, .section-head button) {
    min-width: 44px;
    min-height: 44px;
  }
}
@media (prefers-reduced-motion: reduce) {
  :is(.btn, .m-btn, .link-button, .auth-card button, .external-shell button) {
    transition: none !important;
  }
}
@media (forced-colors: active) {
  :is(.btn, .m-btn, .auth-card button, .external-shell button) {
    border-color: ButtonText !important;
    text-decoration-color: currentColor !important;
  }
}
