/* risc-ia-projet — socle UI commun minimal v0.2.0
   Fondations et primitives transversales uniquement. */
:root{
  --risc-brand:#080b8f;
  --risc-brand-strong:#05086f;
  --risc-brand-soft:#f3f4ff;
  --risc-accent:#e54a12;
  --risc-gold:#e7b52f;
  --risc-ink:#171a45;
  --risc-muted:#535b79;
  --risc-inverse:#ffffff;
  --risc-page:#f6f7fc;
  --risc-surface:#ffffff;
  --risc-surface-soft:#f7f8fd;
  --risc-border:#d8dcef;
  --risc-border-strong:#c6cbea;
  --risc-success:#08703f;
  --risc-success-bg:#e6f8ee;
  --risc-warning:#7a5100;
  --risc-warning-bg:#fff1c9;
  --risc-error:#a32916;
  --risc-error-bg:#ffe4df;
  --risc-focus:#e54a12;
  --risc-radius-sm:8px;
  --risc-radius-md:12px;
  --risc-radius-lg:16px;
  --risc-radius-xl:20px;
  --risc-radius-pill:999px;
  --risc-shadow-sm:0 2px 8px rgba(9,11,143,.05);
  --risc-shadow-md:0 8px 24px rgba(9,11,143,.08);
  --risc-shadow-lg:0 20px 60px rgba(15,18,60,.18);
  --risc-space-1:4px;
  --risc-space-2:8px;
  --risc-space-3:12px;
  --risc-space-4:16px;
  --risc-space-5:20px;
  --risc-space-6:24px;
  --risc-space-8:32px;
  --risc-space-10:40px;
  --risc-space-12:48px;
  --risc-space-16:64px;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--risc-ink);
  background:var(--risc-page);
  line-height:1.5;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--risc-page);color:var(--risc-ink)}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
button:disabled,[aria-disabled="true"]{cursor:not-allowed;opacity:.48}
a{color:inherit}
img{max-width:100%}

/* Focus transverse : visible au clavier, sans dépendre d'une page. */
:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{
  outline:3px solid color-mix(in srgb,var(--risc-focus) 38%, transparent);
  outline-offset:3px;
}

/* Boutons partagés. Les alias historiques sont conservés pendant la migration HTML/JS. */
.risc-button,.primary,.secondary,.ghost,.danger,.button-link{
  min-height:42px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:10px 15px;
  border:1px solid transparent;
  border-radius:var(--risc-radius-md);
  font-weight:800;
  line-height:1.2;
  text-decoration:none;
  transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease;
}
.risc-button--primary,.primary{
  color:#fff;
  background:var(--risc-brand);
  border-color:var(--risc-brand);
  box-shadow:var(--risc-shadow-sm);
}
.risc-button--primary:hover,.primary:hover{background:var(--risc-brand-strong);border-color:var(--risc-brand-strong)}
.risc-button--secondary,.secondary{
  color:var(--risc-brand);
  background:#fff;
  border-color:var(--risc-border-strong);
}
.risc-button--secondary:hover,.secondary:hover{border-color:var(--risc-accent);background:#fff8f3}
.risc-button--ghost,.ghost{
  color:var(--risc-brand);
  background:#fff;
  border-color:var(--risc-border-strong);
  box-shadow:none;
}
.risc-button--ghost:hover,.ghost:hover{border-color:var(--risc-accent);background:#fff8f3}
.risc-button--danger,.danger{color:#fff;background:var(--risc-error);border-color:var(--risc-error)}
.risc-button--sm{min-height:36px;padding:7px 11px;font-size:13px}
.risc-button--lg{min-height:48px;padding:13px 20px}

/* Champs réellement communs. Les pages conservent leurs dimensions métier. */
:where(input:not([type="checkbox"]):not([type="radio"]),textarea,select){
  color:var(--risc-ink);
  background:#fff;
  border:1px solid var(--risc-border-strong);
  border-radius:var(--risc-radius-md);
}
:where(input:not([type="checkbox"]):not([type="radio"]),textarea,select):focus{
  border-color:var(--risc-accent);
}
::placeholder{color:#69718b;opacity:1}

/* Badges / états : structure commune, sens conservé par les classes métier existantes. */
.risc-badge,.status,.status-badge,.verdict,.state,.pill{
  display:inline-flex;
  align-items:center;
  width:max-content;
  max-width:100%;
  padding:5px 9px;
  border-radius:var(--risc-radius-pill);
  font-size:12px;
  font-weight:850;
  line-height:1.15;
}
.status.ok,.status.conforme,.verdict.conforme,.state.ACTIVE,.state.OK,.state.CONFORME,
.status-badge.conforme,.risc-badge--success{color:var(--risc-success);background:var(--risc-success-bg)}
.status.np,.status.pending,.verdict.non-prouve,.state.TEST,.state.NON_PROUVE,
.status-badge.non-prouve,.risc-badge--warning{color:var(--risc-warning);background:var(--risc-warning-bg)}
.status.ko,.verdict.non-conforme,.state.KO,.state.NON_CONFORME,
.status-badge.non-conforme,.risc-badge--error{color:var(--risc-error);background:var(--risc-error-bg)}
.status.progress,.state.EN_COURS{color:var(--risc-brand);background:#e9eaff}
.state.PROJET,.state.CONTEXTUEL,.pill{color:#3d4665;background:#eef1f6}

/* Dialogues communs lorsque la fonction est équivalente. */
dialog{
  width:min(92vw,780px);
  max-height:88vh;
  overflow:auto;
  padding:0;
  border:1px solid var(--risc-border);
  border-radius:var(--risc-radius-lg);
  background:#fff;
  color:var(--risc-ink);
  box-shadow:var(--risc-shadow-lg);
}
dialog::backdrop{background:rgba(8,11,70,.42)}
.modal{padding:24px}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--risc-border)}
.icon{min-width:38px;min-height:38px;padding:5px 10px;border:1px solid var(--risc-border);border-radius:10px;background:#fff;color:var(--risc-brand);font-size:20px}

.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}
