/* EXDEV AutoGestion v1.4 — Stability & UX */
:root{--ux-success:#34e7a4;--ux-danger:#ff6384;--ux-warning:#ffca58;--ux-info:#37d9ff;--ux-panel:#0b1c2f;--ux-border:rgba(56,211,255,.22)}
*,*::before,*::after{box-sizing:border-box}
:is(.workspace-main,.workspace-view,.view,.module-panel,.module-cover,.card,.grid,.form-grid,.row,.split-head,.topbar-actions)>*{min-width:0}
:is(p,span,strong,b,small,label,td,th,a,button,.code,.notice,.muted){overflow-wrap:anywhere;word-break:normal}
:is(input,textarea,select,button,.btn,a){max-width:100%}
:is(button,.btn,a,[role="button"]):focus-visible{outline:3px solid rgba(55,217,255,.58)!important;outline-offset:3px!important;box-shadow:0 0 0 5px rgba(55,217,255,.12)!important}
.exdev-skip-link{position:fixed;left:16px;top:12px;z-index:2147483647;transform:translateY(-160%);padding:10px 14px;border-radius:10px;background:#eefcff;color:#03111f;font-weight:900;text-decoration:none;transition:transform .2s ease}
.exdev-skip-link:focus{transform:translateY(0)}
.exdev-toast-region{position:fixed;right:18px;bottom:18px;z-index:2147483000;display:grid;gap:10px;width:min(420px,calc(100vw - 28px));pointer-events:none}
.exdev-toast{pointer-events:auto;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;padding:14px 14px;border:1px solid var(--ux-border);border-radius:16px;background:rgba(7,19,35,.96);box-shadow:0 22px 70px rgba(0,0,0,.42);backdrop-filter:blur(18px);animation:uxToastIn .28s cubic-bezier(.22,1,.36,1)}
.exdev-toast[data-tone="success"]{border-color:rgba(52,231,164,.4)}.exdev-toast[data-tone="danger"]{border-color:rgba(255,99,132,.45)}.exdev-toast[data-tone="warning"]{border-color:rgba(255,202,88,.45)}
.exdev-toast-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:rgba(55,217,255,.11);color:var(--ux-info);font-weight:950}.exdev-toast[data-tone="success"] .exdev-toast-icon{color:var(--ux-success);background:rgba(52,231,164,.11)}.exdev-toast[data-tone="danger"] .exdev-toast-icon{color:var(--ux-danger);background:rgba(255,99,132,.11)}.exdev-toast[data-tone="warning"] .exdev-toast-icon{color:var(--ux-warning);background:rgba(255,202,88,.11)}
.exdev-toast-copy{min-width:0}.exdev-toast-title{display:block;margin:1px 0 3px;color:#f5fbff;font-size:14px}.exdev-toast-message{margin:0;color:#aabbd3;font-size:13px;line-height:1.45;white-space:pre-line}.exdev-toast-details{margin-top:8px;color:#7f94b0;font-size:11px}.exdev-toast-close{border:0;background:transparent;color:#8395ad;font-size:20px;line-height:1;cursor:pointer;padding:2px}
.exdev-toast.is-leaving{animation:uxToastOut .22s ease forwards}
@keyframes uxToastIn{from{opacity:0;transform:translate3d(18px,12px,0) scale(.97)}to{opacity:1;transform:none}}@keyframes uxToastOut{to{opacity:0;transform:translate3d(22px,0,0) scale(.96)}}
.exdev-dialog-backdrop{position:fixed;inset:0;z-index:2147483100;display:grid;place-items:center;padding:20px;background:rgba(0,7,16,.74);backdrop-filter:blur(10px)}
.exdev-dialog{width:min(560px,100%);padding:22px;border:1px solid var(--ux-border);border-radius:22px;background:linear-gradient(160deg,#10243a,#081525);box-shadow:0 30px 100px rgba(0,0,0,.58)}.exdev-dialog h2{margin:0 0 10px}.exdev-dialog p{white-space:pre-wrap;color:#afbed2;line-height:1.55}.exdev-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.is-ux-loading{position:relative!important;cursor:progress!important;pointer-events:none!important}.is-ux-loading>.exdev-button-label{opacity:.72}.exdev-button-spinner{display:inline-block;width:14px;height:14px;margin-right:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-2px;animation:uxSpin .65s linear infinite}@keyframes uxSpin{to{transform:rotate(360deg)}}
.exdev-skeleton{display:grid;gap:18px;width:100%;padding:2px}.exdev-skeleton-line,.exdev-skeleton-card{position:relative;overflow:hidden;background:rgba(113,145,178,.09);border:1px solid rgba(113,145,178,.10)}.exdev-skeleton-line{height:18px;border-radius:8px}.exdev-skeleton-line.lg{width:42%;height:34px}.exdev-skeleton-line.md{width:68%}.exdev-skeleton-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.exdev-skeleton-card{height:132px;border-radius:18px}.exdev-skeleton-line::after,.exdev-skeleton-card::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(135,225,255,.10),transparent);animation:uxShimmer 1.3s infinite}@keyframes uxShimmer{to{transform:translateX(100%)}}
.exdev-error-inline{margin-top:10px;padding:10px 12px;border:1px solid rgba(255,99,132,.3);border-radius:12px;background:rgba(255,99,132,.08);color:#ff9aaf;font-size:12px;white-space:pre-wrap}
.exdev-live-region{position:fixed!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.workspace-topbar{gap:14px}.workspace-title{min-width:0}.workspace-title h2,.workspace-title p{overflow:hidden;text-overflow:ellipsis}.topbar-actions{min-width:0}
.version-grid article,.ops-metrics-grid article,.quick-stats article{min-width:0}.version-grid b,.ops-metrics-grid strong,.quick-stats strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.table-card,.data-table-wrap,.exdev-admin-table{overflow-x:auto;overscroll-behavior-inline:contain}
@media(max-width:860px){.exdev-toast-region{right:14px;bottom:14px}.exdev-skeleton-grid{grid-template-columns:1fr}.workspace-topbar{align-items:flex-start;flex-wrap:wrap}.workspace-title{flex:1 1 220px}.topbar-actions{width:auto;margin-left:auto}.dialog,.modal,.exdev-dialog{max-height:calc(100dvh - 28px);overflow:auto}.row-actions,.module-cover>.row-actions,.split-head>.row-actions{flex-wrap:wrap}.row-actions>*{flex:1 1 150px}}
@media(max-width:560px){.exdev-toast{grid-template-columns:auto minmax(0,1fr);padding:13px}.exdev-toast-close{grid-column:2;grid-row:1;justify-self:end}.exdev-toast-copy{grid-column:2}.workspace-title h2{font-size:clamp(20px,7vw,28px)}.account-button span:not(.account-avatar):not(.chevron){max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.exdev-toast,.exdev-toast.is-leaving,.exdev-skeleton-line::after,.exdev-skeleton-card::after,.exdev-button-spinner{animation-duration:.001ms!important;animation-iteration-count:1!important}}

/* =========================================================
   EXDEV AutoGestion v1.4.2 — Accessibility hardening
   ========================================================= */

.sr-only,
.exdev-sr-only {
  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;
  white-space: nowrap !important;
  border: 0 !important;
}

[hidden],
.hidden {
  display: none !important;
}

:where(button, .btn, input, textarea, select, a, [tabindex]):focus-visible {
  outline: 3px solid color-mix(in srgb, var(--ux-info) 72%, white 28%) !important;
  outline-offset: 3px !important;
}

:where(button, .btn)[disabled],
:where(button, .btn)[aria-disabled="true"] {
  cursor: not-allowed !important;
  opacity: .58 !important;
}

:where(input, textarea, select)[aria-invalid="true"] {
  border-color: rgba(255, 99, 132, .82) !important;
  box-shadow: 0 0 0 3px rgba(255, 99, 132, .12) !important;
}

.exdev-field-error {
  display: block;
  margin-top: 6px;
  color: #ff9db1;
  font-size: 12px;
  line-height: 1.4;
}

.workspace-sidebar[aria-hidden="true"] {
  visibility: hidden;
}

@media (min-width: 861px) {
  .workspace-sidebar[aria-hidden="true"] {
    visibility: visible;
  }
}

.side-item[aria-current="page"],
.nav[aria-current="page"] {
  border-color: rgba(55, 217, 255, .52) !important;
}

[role="tab"][aria-selected="true"] {
  color: #fff !important;
}

/* Mobile tables become readable cards with labels generated by ux.js. */
@media (max-width: 760px) {
  .workspace-view table.exdev-responsive-table,
  .admin-workspace-view table.exdev-responsive-table {
    display: block !important;
    width: 100% !important;
    border: 0 !important;
    overflow: visible !important;
  }

  table.exdev-responsive-table thead {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
  }

  table.exdev-responsive-table tbody {
    display: grid !important;
    gap: 12px !important;
  }

  table.exdev-responsive-table tr {
    display: grid !important;
    gap: 8px !important;
    padding: 14px !important;
    border: 1px solid rgba(72, 190, 230, .18) !important;
    border-radius: 16px !important;
    background: rgba(8, 23, 40, .88) !important;
  }

  table.exdev-responsive-table td {
    display: grid !important;
    grid-template-columns: minmax(105px, .8fr) minmax(0, 1.2fr) !important;
    align-items: start !important;
    gap: 12px !important;
    width: 100% !important;
    padding: 7px 0 !important;
    border: 0 !important;
    text-align: right !important;
  }

  table.exdev-responsive-table td::before {
    content: attr(data-label);
    color: #8fa9c5;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .03em;
    text-align: left;
    text-transform: uppercase;
  }

  table.exdev-responsive-table td:empty {
    display: none !important;
  }
}

@media (max-width: 430px) {
  table.exdev-responsive-table td {
    grid-template-columns: 1fr !important;
    text-align: left !important;
  }
}

@media (prefers-contrast: more) {
  :root {
    --ux-border: rgba(100, 226, 255, .52);
  }

  .module-panel,
  .module-cover,
  .card,
  .plugin-card,
  .help-card,
  .version-panel,
  .workspace-topbar {
    border-color: rgba(100, 226, 255, .42) !important;
  }

  .muted,
  small,
  .workspace-title p {
    color: #c4d5e8 !important;
  }
}

@media (forced-colors: active) {
  *, *::before, *::after {
    forced-color-adjust: auto;
  }

  .btn,
  button,
  input,
  textarea,
  select,
  .module-panel,
  .module-cover,
  .card {
    border: 1px solid CanvasText !important;
  }
}
