/* justice.fr design system — charte officielle DSFR */
:root {
  --blue:     #003189;
  --blue-mid: #0053b3;
  --blue-lt:  #e8edfa;
  --blue-bg:  #f0f5ff;
  --red:      #e1000f;
  --white:    #ffffff;
  --gray-bg:  #f6f6f6;
  --gray-100: #eeeeee;
  --gray-200: #dddddd;
  --gray-400: #9c9c9c;
  --gray-600: #666666;
  --gray-800: #333333;
  --black:    #1e1e1e;
  --success:  #18753c;
  --warn:     #b34000;
  --font: 'Marianne', system-ui, -apple-system, Arial, sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: var(--font); background: var(--gray-bg); color: var(--black); min-height: 100vh; }

/* ── HEADER OFFICIEL ── */
.gov-header {
  background: var(--white);
  border-bottom: 2px solid var(--gray-200);
}
.gov-bar {
  background: var(--blue);
  height: 5px;
  width: 100%;
}
.gov-brand {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  padding: 1rem 2rem;
  border-bottom: 1px solid var(--gray-200);
}
.gov-logo-img {
  height: 60px;
  width: auto;
  flex-shrink: 0;
}
.gov-logo-fallback {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.gov-marianne {
  display: flex;
  width: 28px;
  height: 56px;
  flex-direction: column;
  flex-shrink: 0;
}
.gov-marianne-flag {
  display: flex;
  height: 18px;
  border-radius: 2px;
  overflow: hidden;
  margin-bottom: 4px;
}
.gov-marianne-flag span { flex: 1; }
.gov-marianne-flag span:nth-child(1) { background: #002395; }
.gov-marianne-flag span:nth-child(2) { background: #fff; }
.gov-marianne-flag span:nth-child(3) { background: #ED2939; }
.gov-marianne-rf {
  font-size: 0.55rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--blue);
  text-align: center;
  line-height: 1.2;
  text-transform: uppercase;
}
.gov-name {
  display: flex;
  flex-direction: column;
  border-left: 2px solid var(--blue);
  padding-left: 0.75rem;
}
.gov-name-main {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--blue);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.2;
}
.gov-name-sub {
  font-size: 0.65rem;
  color: var(--gray-600);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-top: 2px;
}
.gov-divider { width: 1px; height: 50px; background: var(--gray-200); }
.gov-site-name {
  display: flex;
  flex-direction: column;
}
.gov-site-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--blue);
  text-decoration: none;
}
.gov-site-desc {
  font-size: 0.75rem;
  color: var(--gray-600);
  margin-top: 2px;
}
.gov-nav {
  background: var(--blue);
  padding: 0 2rem;
  display: flex;
  align-items: center;
  gap: 0;
}
.gov-nav a {
  color: rgba(255,255,255,0.85);
  text-decoration: none;
  font-size: 0.82rem;
  font-weight: 500;
  padding: 0.75rem 1rem;
  border-bottom: 3px solid transparent;
  transition: all 0.15s;
  display: block;
}
.gov-nav a:hover, .gov-nav a.active {
  color: #fff;
  border-bottom-color: #fff;
}
.gov-nav .nav-right { margin-left: auto; }

/* ── PAGE CONTENT ── */
.page-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 2rem;
}
.breadcrumb {
  font-size: 0.78rem;
  color: var(--gray-600);
  margin-bottom: 1.5rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.breadcrumb a { color: var(--blue); text-decoration: none; }
.breadcrumb a:hover { text-decoration: underline; }
.breadcrumb-sep { color: var(--gray-400); }

/* ── CARDS ── */
.card {
  background: var(--white);
  border: 1px solid var(--gray-200);
  border-radius: 4px;
  overflow: hidden;
}
.card + .card { margin-top: 1rem; }
.card-head {
  padding: 1rem 1.5rem;
  border-bottom: 1px solid var(--gray-200);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.card-head-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--blue);
}
.card-body { padding: 1.5rem; }

/* ── FORMS ── */
.form-group { margin-bottom: 1.2rem; }
.form-group label {
  display: block;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--black);
  margin-bottom: 0.4rem;
}
.form-control {
  width: 100%;
  padding: 0.6rem 0.85rem;
  border: 1.5px solid var(--gray-400);
  border-radius: 4px;
  font-family: var(--font);
  font-size: 0.9rem;
  color: var(--black);
  background: var(--white);
  outline: none;
  transition: border-color 0.2s;
}
.form-control:focus { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(0,49,137,0.15); }
.form-hint { font-size: 0.75rem; color: var(--gray-600); margin-top: 0.3rem; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

/* ── BUTTONS ── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.6rem 1.4rem;
  border-radius: 4px;
  font-family: var(--font);
  font-size: 0.88rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
  border: 2px solid transparent;
  text-decoration: none;
}
.btn-primary { background: var(--blue); color: #fff; border-color: var(--blue); }
.btn-primary:hover { background: var(--blue-mid); border-color: var(--blue-mid); }
.btn-secondary { background: transparent; color: var(--blue); border-color: var(--blue); }
.btn-secondary:hover { background: var(--blue-lt); }
.btn-danger { background: var(--red); color: #fff; border-color: var(--red); }
.btn-sm { padding: 0.35rem 0.8rem; font-size: 0.78rem; }
.btn:disabled { opacity: 0.55; cursor: not-allowed; }
.btn-full { width: 100%; justify-content: center; }

/* ── ALERTS ── */
.alert {
  padding: 0.85rem 1rem;
  border-radius: 4px;
  font-size: 0.86rem;
  margin-bottom: 1.2rem;
  border-left: 4px solid;
  line-height: 1.5;
}
.alert-success { background: #dffee6; border-color: var(--success); color: #0e4d29; }
.alert-error   { background: #ffeef0; border-color: var(--red);     color: #7a0007; }
.alert-info    { background: var(--blue-lt); border-color: var(--blue); color: var(--blue); }
.alert-warn    { background: #fff0e3; border-color: var(--warn);    color: #5e2200; }

/* ── TABLES ── */
.data-table { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
.data-table th {
  background: var(--blue);
  color: #fff;
  padding: 0.6rem 0.85rem;
  text-align: left;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.data-table td { padding: 0.6rem 0.85rem; border-bottom: 1px solid var(--gray-100); vertical-align: top; }
.data-table tr:last-child td { border-bottom: none; }
.data-table tr:hover td { background: var(--blue-bg); }

/* ── BADGES ── */
.badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 3px;
  font-size: 0.72rem;
  font-weight: 700;
}
.badge-obl  { background: #fff3cd; color: #5c3d00; border: 1px solid #f0c040; }
.badge-chk  { background: #d8edff; color: #003175; border: 1px solid #8bbfef; }
.badge-admin { background: var(--blue-lt); color: var(--blue); border: 1px solid #b8c9ef; }
.badge-user  { background: #e8f5e9; color: #1b5e20; border: 1px solid #a5d6a7; }
.badge-on   { background: #dffee6; color: #0e4d29; border: 1px solid #86efac; }
.badge-off  { background: #ffeef0; color: #7a0007; border: 1px solid #fca5a5; }

/* ── FOOTER ── */
.gov-footer {
  background: var(--blue);
  color: rgba(255,255,255,0.75);
  padding: 1.5rem 2rem;
  margin-top: 3rem;
  font-size: 0.78rem;
}
.gov-footer a { color: rgba(255,255,255,0.75); text-decoration: underline; }

/* ── LOADING DOTS ── */
.dots { display: flex; gap: 4px; align-items: center; }
.dots span { width: 6px; height: 6px; border-radius: 50%; background: var(--blue); animation: bounce 1.2s ease infinite; }
.dots span:nth-child(2) { animation-delay: 0.2s; }
.dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes bounce { 0%,80%,100%{transform:translateY(0);opacity:0.4}40%{transform:translateY(-5px);opacity:1} }

/* ── PRINT ── */
@media print {
  body * { visibility: hidden; }
  #print-content, #print-content * { visibility: visible; }
  #print-content { position: fixed; left: 0; top: 0; width: 100%; padding: 2cm; }
}
