:root {
  --bg-main: #090906;
  --bg-secondary: #121006;
  --surface: #15130C;
  --surface-active: #211C0D;
  --accent: #D7A928;
  --accent-hover: #F0C94D;
  --text-main: #F7F4EA;
  --text-muted: #B6AD91;
  --accent-rgb: 215, 169, 40;
  --accent-hover-rgb: 240, 201, 77;
  --accent-text: #110E04;
  --bg: var(--bg-main);
  --panel: color-mix(in srgb, var(--surface) 92%, transparent);
  --panel-soft: color-mix(in srgb, var(--surface-active) 92%, transparent);
  --panel-raised: var(--surface-active);
  --field: var(--bg-secondary);
  --line: rgba(225, 238, 235, .11);
  --line-strong: rgba(225, 238, 235, .2);
  --text: var(--text-main);
  --muted: var(--text-muted);
  --muted-2: color-mix(in srgb, var(--text-muted) 72%, transparent);
  --accent-2: var(--accent-hover);
  --danger: #ff8585;
  --success: var(--accent);
  --warning: #ffd27d;
  /* Compatibilite des modules historiques avec le theme sombre Orbite */
  --main: var(--bg-main);
  --secondary: var(--bg-secondary);
  --card: var(--panel);
  --active: var(--surface-active);
  --border: var(--line);
  --border-color: var(--line);
  --surface-soft: var(--panel-soft);
  --sidebar: 292px;
  --radius-lg: 24px;
  --radius-md: 18px;
  --radius-sm: 12px;
  --shadow: 0 24px 80px rgba(0, 0, 0, .34);
  --shadow-soft: 0 14px 44px rgba(0, 0, 0, .22);
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

[data-palette="bleu-nuit"] {
  --bg-main: #0B1117;
  --bg-secondary: #101922;
  --surface: #141F2A;
  --surface-active: #182534;
  --accent: #4F8CFF;
  --accent-hover: #76A7FF;
  --text-main: #F3F7FA;
  --text-muted: #94A3B8;
  --accent-rgb: 79, 140, 255;
  --accent-hover-rgb: 118, 167, 255;
  --accent-text: #06101f;
}


[data-palette="or-noir"] {
  --bg-main: #090906;
  --bg-secondary: #121006;
  --surface: #15130C;
  --surface-active: #211C0D;
  --accent: #D7A928;
  --accent-hover: #F0C94D;
  --text-main: #F7F4EA;
  --text-muted: #B6AD91;
  --accent-rgb: 215, 169, 40;
  --accent-hover-rgb: 240, 201, 77;
  --accent-text: #110E04;
}
[data-palette="anthracite"] {
  --bg-main: #101214;
  --bg-secondary: #15181B;
  --surface: #1C2024;
  --surface-active: #252A30;
  --accent: #CBD5E1;
  --accent-hover: #F1F5F9;
  --text-main: #F8FAFC;
  --text-muted: #9CA3AF;
  --accent-rgb: 203, 213, 225;
  --accent-hover-rgb: 241, 245, 249;
  --accent-text: #101214;
}
[data-palette="ardoise-cyan"] {
  --bg-main: #0C141B;
  --bg-secondary: #111C25;
  --surface: #172630;
  --surface-active: #1D3440;
  --accent: #38BDF8;
  --accent-hover: #7DD3FC;
  --text-main: #F0F9FF;
  --text-muted: #94A3B8;
  --accent-rgb: 56, 189, 248;
  --accent-hover-rgb: 125, 211, 252;
  --accent-text: #06131d;
}
[data-palette="graphite-violet"] {
  --bg-main: #111018;
  --bg-secondary: #171620;
  --surface: #1F1D2A;
  --surface-active: #292638;
  --accent: #A78BFA;
  --accent-hover: #C4B5FD;
  --text-main: #F5F3FF;
  --text-muted: #A8A3B8;
  --accent-rgb: 167, 139, 250;
  --accent-hover-rgb: 196, 181, 253;
  --accent-text: #100d1a;
}
[data-palette="vert-profond"] {
  --bg-main: #0B1311;
  --bg-secondary: #101B18;
  --surface: #17231F;
  --surface-active: #1E302A;
  --accent: #74C69D;
  --accent-hover: #95D5B2;
  --text-main: #F1FAF5;
  --text-muted: #9FB3AA;
  --accent-rgb: 116, 198, 157;
  --accent-hover-rgb: 149, 213, 178;
  --accent-text: #07120d;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { min-width: 320px; background: var(--bg); scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100vh;
  color: var(--text);
  background:
    radial-gradient(circle at 18% -10%, rgba(var(--accent-rgb), .12), transparent 36%),
    radial-gradient(circle at 88% 8%, rgba(var(--accent-hover-rgb), .09), transparent 32%),
    linear-gradient(145deg, var(--bg-main) 0%, var(--bg-secondary) 48%, var(--bg-main) 100%);
  font-size: 15px;
  line-height: 1.45;
}
button, input, select, textarea { font: inherit; }
button { color: inherit; }
a { color: var(--accent); }
h1, h2, h3, p { margin-top: 0; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, a:focus-visible {
  outline: 3px solid rgba(var(--accent-rgb), .72);
  outline-offset: 3px;
}
.skip-link {
  position: fixed;
  z-index: 200;
  top: 10px;
  left: 10px;
  padding: 10px 14px;
  border-radius: 10px;
  background: var(--accent);
  color: var(--accent-text);
  font-weight: 800;
  transform: translateY(-160%);
}
.skip-link:focus { transform: translateY(0); }

.app-shell { display: grid; grid-template-columns: var(--sidebar) minmax(0, 1fr); min-height: 100vh; }
.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--sidebar);
  height: 100vh;
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
  padding: 26px 18px 22px;
  display: flex;
  flex-direction: column;
  border-right: 1px solid var(--line);
  background: linear-gradient(180deg, color-mix(in srgb, var(--bg-secondary) 96%, transparent), color-mix(in srgb, var(--bg-main) 97%, transparent));
  box-shadow: 16px 0 60px rgba(0,0,0,.22);
}
.brand { flex: none; display: flex; align-items: center; gap: 14px; padding: 4px 10px 30px; }
.brand-mark {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  color: var(--accent-text);
  background: linear-gradient(145deg, var(--accent), var(--accent-2));
  box-shadow: 0 12px 34px rgba(var(--accent-rgb), .18);
  font-weight: 900;
  font-size: 21px;
}
.brand strong, .brand span { display: block; }
.brand strong { font-size: 20px; line-height: 1.1; letter-spacing: .01em; }
.brand span { margin-top: 4px; color: var(--muted); font-size: 13px; }
.main-nav {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  align-content: start;
  gap: 8px;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding: 3px 8px 14px 1px;
}
.nav-item {
  min-height: 50px;
  display: grid;
  grid-template-columns: 30px 1fr auto;
  align-items: center;
  gap: 8px;
  border: 1px solid transparent;
  border-radius: 16px;
  padding: 9px 12px;
  text-align: left;
  color: var(--muted);
  background: transparent;
  cursor: pointer;
  line-height: 1.25;
  transition: background .16s ease, color .16s ease, transform .16s ease, border-color .16s ease;
}
.nav-icon {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  color: var(--muted);
  background: rgba(255,255,255,.04);
  font-weight: 800;
}
.nav-item:hover { background: rgba(255,255,255,.055); color: var(--text); transform: translateX(2px); border-color: var(--line); }
.nav-item.is-active { background: linear-gradient(135deg, rgba(var(--accent-rgb), .18), rgba(var(--accent-hover-rgb), .1)); color: var(--text); border-color: rgba(var(--accent-rgb), .32); font-weight: 800; }
.nav-item.is-active .nav-icon { color: var(--accent-text); background: var(--accent); }
.nav-count { padding: 2px 8px; border-radius: 999px; background: rgba(255,255,255,.08); font-size: 12px; }
.nav-item.is-active .nav-count { color: var(--accent-text); background: var(--accent); }
.nav-badge {
  justify-self: end;
  max-width: 96px;
  padding: 3px 7px;
  border-radius: 999px;
  color: var(--muted);
  background: rgba(255,255,255,.06);
  font-size: 10px;
  line-height: 1.15;
  text-align: center;
}
.nav-item.is-active .nav-badge { color: var(--accent-text); background: rgba(var(--accent-rgb), .78); }
.sidebar-footer { flex: none; margin-top: 12px; display: grid; gap: 10px; }
.sidebar-action { width: 100%; min-height: 42px; padding: 0 12px; font-size: 13px; }
.data-indicator {
  min-height: 66px;
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 13px 12px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255,255,255,.035);
}
.data-indicator strong, .data-indicator span { display: block; }
.data-indicator strong { font-size: 13px; }
.data-indicator div span { max-width: 190px; margin-top: 5px; color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.status-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--warning); box-shadow: 0 0 0 5px rgba(255,210,125,.09); flex: none; }

.main-area { grid-column: 2; min-width: 0; min-height: 100vh; display: flex; flex-direction: column; }
.topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  min-height: 70px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  padding: 12px 32px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg-main) 72%, transparent);
  backdrop-filter: blur(18px);
}
.topbar-status { margin-right: auto; color: var(--muted); font-size: 14px; white-space: nowrap; }
.topbar-actions { margin-left: auto; display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.content { width: 100%; max-width: 1760px; margin: 0 auto; padding: 32px 24px 46px; flex: 1; }
.view { display: none; }
.view.is-visible { display: block; animation: view-in .22s ease both; }
@keyframes view-in {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}

.page-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: 28px; }
.page-heading.compact { align-items: center; }
.eyebrow { margin: 0 0 7px; text-transform: uppercase; letter-spacing: .14em; color: var(--accent); font-size: 11px; font-weight: 800; }
h1 { margin-bottom: 9px; font-size: clamp(34px, 3vw, 50px); line-height: 1.02; letter-spacing: -.015em; }
.page-heading p:not(.eyebrow) { margin: 0; color: var(--muted); font-size: 15px; line-height: 1.55; }

.btn, .icon-button { border: 0; cursor: pointer; transition: background .16s ease, border-color .16s ease, filter .16s ease, transform .16s ease, opacity .16s ease, box-shadow .16s ease; }
.btn {
  min-height: 44px;
  padding: 0 17px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border-radius: 14px;
  font-size: 14px;
  font-weight: 800;
}
.btn-primary { background: linear-gradient(135deg, var(--accent), var(--accent-hover)); color: var(--accent-text); box-shadow: 0 12px 28px rgba(var(--accent-hover-rgb), .14); }
.btn-primary:hover { filter: brightness(1.05); transform: translateY(-1px); box-shadow: 0 16px 34px rgba(var(--accent-hover-rgb), .18); }
.btn-secondary { border: 1px solid var(--line); background: rgba(255,255,255,.04); color: var(--text); }
.btn-secondary:hover { background: rgba(255,255,255,.085); border-color: var(--line-strong); transform: translateY(-1px); }
.btn-danger { border: 1px solid rgba(255,133,133,.35); background: rgba(255,133,133,.10); color: #ffd7d7; }
.btn-danger:hover { background: rgba(255,133,133,.18); }
.btn-small { min-height: 38px; padding: 0 12px; font-size: 13px; }
.btn:disabled { opacity: .65; cursor: not-allowed; transform: none; }
.btn[aria-busy="true"] { cursor: progress; }
.icon-button {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(255,255,255,.04);
  font-size: 20px;
}

.hero-panel {
  min-height: 230px;
  display: flex;
  align-items: center;
  margin-bottom: 18px;
  padding: 44px;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: 30px;
  background:
    radial-gradient(circle at 82% 8%, rgba(var(--accent-rgb), .14), transparent 34%),
    linear-gradient(135deg, color-mix(in srgb, var(--surface-active) 96%, transparent), color-mix(in srgb, var(--bg-secondary) 94%, transparent) 68%);
  box-shadow: var(--shadow);
}
.hero-panel h2 { margin-bottom: 10px; font-size: clamp(44px, 5vw, 76px); letter-spacing: -.03em; }
.type-title {
  min-width: 20ch;
  display: inline-block;
  letter-spacing: .01em;
  line-height: 1.05;
}
.type-title span {
  display: inline-block;
  min-width: 20ch;
  white-space: nowrap;
}
.type-title.is-typing span::after {
  content: "";
  display: inline-block;
  width: 2px;
  height: .86em;
  margin-left: 5px;
  transform: translateY(.08em);
  border-radius: 999px;
  background: color-mix(in srgb, var(--text-main) 72%, transparent);
  animation: caret-blink 900ms steps(2, end) infinite;
}
.type-title.is-complete span::after { content: none; }
@keyframes caret-blink {
  50% { opacity: .15; }
}
.hero-panel p { max-width: 720px; margin: 0; color: color-mix(in srgb, var(--text-main) 78%, var(--text-muted)); line-height: 1.65; font-size: 16px; }
.hero-tagline {
  margin-bottom: 10px;
  color: color-mix(in srgb, var(--text-main) 84%, var(--text-muted));
  font-size: clamp(18px, 1.7vw, 23px);
  font-weight: 600;
  line-height: 1.35;
}
.hero-copy { color: var(--muted) !important; font-size: 16px !important; }
.hero-tagline {
  opacity: 0;
  transform: translateY(4px);
  transition: opacity .28s ease, transform .28s ease;
}
.hero-tagline.is-visible {
  opacity: 1;
  transform: none;
}

.stat-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; margin: 20px 0; }
.stat-card {
  min-height: 142px;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--panel);
  box-shadow: var(--shadow-soft);
}
.stat-card span { display: block; color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .07em; font-weight: 800; }
.stat-card strong { display: block; margin: 16px 0 8px; font-size: 40px; line-height: 1; letter-spacing: -.03em; }
.stat-card small { color: var(--muted); font-size: 13px; }
.dashboard-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.panel {
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--panel);
  box-shadow: var(--shadow-soft);
}
.panel-wide { padding: 26px; }
.panel-header { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.panel-header h3 { margin-bottom: 5px; font-size: 16px; }
.panel-header p { margin: 0; color: var(--muted); font-size: 13px; }
.category-bars, .recent-list { display: grid; gap: 10px; }
.bar-row { display: block; }
button.bar-row { width: 100%; border: 0; padding: 0; color: inherit; background: transparent; text-align: left; cursor: pointer; }
button.bar-row:hover span:first-child { color: var(--text); }
.bar-row > div:first-child { display: flex; justify-content: space-between; margin-bottom: 6px; font-size: 14px; }
.bar-track { height: 8px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.06); }
.bar-track span { display: block; height: 100%; background: var(--bar-color, var(--accent)); }
.recent-item {
  width: 100%;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(255,255,255,.03);
  text-align: left;
  cursor: pointer;
  transition: background .16s ease, border-color .16s ease;
}
.recent-item:hover { background: rgba(255,255,255,.06); border-color: var(--line-strong); }
.recent-item strong, .recent-item span { display: block; }
.recent-item span { margin-top: 4px; color: var(--muted); font-size: 13px; }

.toolbar { display: grid; grid-template-columns: minmax(280px, 1fr) 220px 220px 170px; gap: 12px; padding: 14px; margin-bottom: 18px; }
.toolbar .toolbar-search:only-child { grid-column: 1 / -1; }
.toolbar-search { display: flex; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 15px; padding: 0 14px; background: rgba(255,255,255,.04); }
.toolbar-search input { width: 100%; min-height: 46px; border: 0; outline: 0; color: var(--text); background: transparent; font-size: 15px; }
input, select, textarea { border: 1px solid var(--line); color: var(--text); background: var(--field); }
select { min-height: 46px; padding: 0 12px; border-radius: 14px; font-size: 15px; }
.table-panel { overflow-x: auto; }
.table-panel table { overflow: hidden; }
table { width: 100%; min-width: 820px; border-collapse: collapse; }
th, td { padding: 18px 16px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
th { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .07em; background: rgba(255,255,255,.025); }
td { color: color-mix(in srgb, var(--text-main) 86%, var(--text-muted)); font-size: 14px; }
tbody tr { transition: background .16s ease; }
tbody tr:hover { background: rgba(255,255,255,.035); }
td strong, td small { display: block; }
td small { margin-top: 5px; color: var(--muted); }
.actions { display: flex; align-items: center; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
.status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(255,255,255,.05);
  font-size: 12px;
  font-weight: 800;
}
.status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--status-color, var(--muted)); }
.status-active { --status-color: var(--success); }
.status-veille { --status-color: var(--warning); }
.status-inactive { --status-color: var(--muted); }

/* Liste des associations : une ligne compacte et entièrement alignée */
.visually-hidden {
  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;
}
.association-table-panel {
  width: 100%;
}
.association-list-table {
  width: 100%;
  min-width: 1280px;
  table-layout: fixed;
}
.association-list-table .association-col-classification { width: 17%; }
.association-list-table .association-col-name { width: 24%; }
.association-list-table .association-col-president { width: 17%; }
.association-list-table .association-col-phone { width: 13%; }
.association-list-table .association-col-email { width: auto; }
.association-list-table .association-col-actions { width: 250px; }
.association-list-table th,
.association-list-table td {
  padding: 13px 12px;
}
.association-list-table .association-data-row td {
  min-height: 54px;
  overflow-wrap: anywhere;
}
.association-list-table .association-data-row td:nth-child(4),
.association-list-table .association-data-row td:nth-child(6) {
  white-space: nowrap;
}
.association-list-table .association-actions-cell {
  padding-left: 8px;
  padding-right: 12px;
}
.association-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  flex-wrap: nowrap;
  white-space: nowrap;
}
.association-row-actions .btn {
  min-height: 36px;
  padding: 0 11px;
  border-radius: 11px;
  font-size: 12px;
}

.empty-state {
  padding: 34px 24px;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  color: var(--muted);
  text-align: center;
  background: rgba(255,255,255,.03);
  box-shadow: var(--shadow-soft);
}
.empty-state h2 { color: var(--text); margin-bottom: 8px; }
.empty-state p { max-width: 520px; margin: 0 auto; font-size: 15px; line-height: 1.6; }
.empty-state.compact { padding: 24px 16px; }
.empty-feature .btn { margin-top: 20px; }
.table-empty { border: 0; padding: 34px 16px; }

.reference-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.taxonomy-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, .8fr); gap: 16px; align-items: start; }
.taxonomy-layout .reference-grid { grid-template-columns: 1fr; }
.reference-card {
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--panel);
  box-shadow: var(--shadow-soft);
  transition: transform .16s ease, background .16s ease, border-color .16s ease;
}
.reference-card:hover { transform: translateY(-2px); border-color: var(--line-strong); background: var(--panel-soft); }
.reference-card.is-selected { border-color: rgba(var(--accent-rgb), .62); background: var(--panel-soft); }
.reference-card h3 { margin-bottom: 8px; }
.reference-card p { min-height: 42px; color: var(--muted); line-height: 1.55; font-size: 14px; }
.reference-card footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 14px; border-top: 1px solid var(--line); color: var(--muted); font-size: 13px; }
.reference-card footer .actions { margin-left: auto; }
.subdomain-panel { padding: 24px; position: sticky; top: 92px; }
.subdomain-list { display: grid; gap: 10px; margin-top: 16px; }
.subdomain-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.035); }
.subdomain-row strong, .subdomain-row span { display: block; }
.subdomain-row span { margin-top: 4px; color: var(--muted); font-size: 12px; }
.reference-card dl { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; color: var(--muted); }
.reference-card dt { font-size: 12px; }
.reference-card dd { margin: 3px 0 0; color: var(--text); }

.form-panel { max-width: 800px; padding: 26px; display: grid; gap: 16px; }
.settings-section {
  display: grid;
  gap: 16px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--line);
}
.settings-section:last-of-type { border-bottom: 0; padding-bottom: 0; }
.settings-section h2 { margin-bottom: 7px; font-size: 18px; }
.settings-section p { margin: 0; color: var(--muted); line-height: 1.6; }
.palette-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.palette-card {
  position: relative;
  min-height: 178px;
  display: grid;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 18px;
  color: var(--text);
  background: rgba(255,255,255,.035);
  text-align: left;
  cursor: pointer;
  transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
.palette-card:hover { transform: translateY(-1px); border-color: var(--line-strong); background: rgba(255,255,255,.055); }
.palette-card.is-selected { border-color: rgba(var(--accent-rgb), .64); box-shadow: 0 0 0 1px rgba(var(--accent-rgb), .22), var(--shadow-soft); }
.palette-card strong { display: block; padding-right: 34px; font-size: 15px; }
.palette-card small { color: var(--muted); font-size: 12px; }
.palette-check {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  color: var(--accent-text);
  background: var(--accent);
  font-weight: 900;
}
.palette-preview {
  height: 78px;
  display: grid;
  grid-template-columns: 1.2fr .8fr;
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 14px;
  background: linear-gradient(135deg, var(--preview-bg), var(--preview-secondary));
}
.palette-preview span { display: block; }
.palette-preview span:nth-child(1) { grid-row: span 2; border-radius: 10px; background: var(--preview-card); }
.palette-preview span:nth-child(2) { align-self: center; height: 18px; border-radius: 999px; background: var(--preview-accent); }
.palette-preview span:nth-child(3) { border-radius: 9px; background: color-mix(in srgb, var(--preview-card) 78%, white); }
.palette-current { color: var(--muted); font-size: 14px; }
.remembered-file-panel h2 { margin-bottom: 8px; font-size: 18px; }
.remembered-file-panel p { margin: 0; color: var(--muted); line-height: 1.6; }
.form-actions { display: flex; justify-content: flex-end; }
.modal {
  width: min(880px, 94vw);
  max-height: 92vh;
  padding: 0;
  border: 1px solid var(--line-strong);
  border-radius: 24px;
  color: var(--text);
  background: var(--surface);
  box-shadow: var(--shadow);
}
.small-modal { width: min(560px, 94vw); }
.confirm-modal { width: min(520px, 94vw); }
.modal::backdrop { background: rgba(0,0,0,.7); backdrop-filter: blur(4px); }
.modal form { max-height: 92vh; display: flex; flex-direction: column; }
.modal-header, .modal-footer { padding: 20px 24px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); }
.modal-footer { border-top: 1px solid var(--line); border-bottom: 0; flex-wrap: wrap; }
.modal-header h2 { margin: 0; }
.modal-body { padding: 24px; overflow: auto; }
.form-intro { margin-bottom: 18px; color: var(--muted); font-size: 15px; line-height: 1.6; }
.form-section { padding: 20px 0; border-top: 1px solid var(--line); }
.form-section:first-of-type { border-top: 0; padding-top: 0; }
.form-section h3 { margin-bottom: 14px; color: var(--text); font-size: 16px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
.field { display: grid; gap: 6px; }
.link-action {
  justify-self: start;
  border: 0;
  padding: 0;
  color: var(--accent);
  background: transparent;
  cursor: pointer;
  font-size: 13px;
  font-weight: 800;
}
.link-action:hover { text-decoration: underline; }
.field.span-2, .field-help.span-2 { grid-column: span 2; }
.field-help { margin: -6px 0 2px; color: var(--muted-2); font-size: 13px; }
.field > span { color: var(--muted); font-size: 13px; font-weight: 800; }
.field input, .field select, .field textarea { width: 100%; min-height: 50px; padding: 12px 13px; border-radius: 14px; outline: 0; resize: vertical; font-size: 15px; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: rgba(var(--accent-rgb), .58); box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .12); }
.delete-target { padding: 14px 16px; border-radius: 12px; background: rgba(255,255,255,.045); color: var(--text) !important; font-weight: 800; overflow-wrap: anywhere; }
.preparation-panel { max-width: 680px; padding: 34px; }
.preparation-panel p { margin: 0; color: var(--muted); font-size: 16px; line-height: 1.6; }

.drawer-backdrop { position: fixed; inset: 0; z-index: 50; background: rgba(0,0,0,.62); opacity: 0; pointer-events: none; transition: opacity .18s ease; }
.drawer-backdrop.is-visible { opacity: 1; pointer-events: auto; }
.detail-drawer {
  position: fixed;
  z-index: 60;
  inset: 0 0 0 auto;
  width: min(620px, 95vw);
  display: flex;
  flex-direction: column;
  transform: translateX(102%);
  transition: transform .2s ease;
  border-left: 1px solid var(--line);
  background: var(--surface);
  box-shadow: var(--shadow);
}
.detail-drawer.is-open { transform: none; }
.drawer-header { min-height: 70px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 20px; border-bottom: 1px solid var(--line); }
.drawer-content { padding: 24px; overflow: auto; }
.drawer-title { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; border-bottom: 1px solid var(--line); padding-bottom: 16px; margin-bottom: 16px; }
.drawer-content section { padding: 18px 0; border-bottom: 1px solid var(--line); }
.drawer-content section:last-child { border-bottom: 0; }
.drawer-content h3 { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .1em; }
.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 18px; }
.detail-grid dt { color: var(--muted); font-size: 12px; }
.detail-grid dd { margin: 3px 0 0; overflow-wrap: anywhere; }

.documentation-content { display: grid; gap: 14px; }
.documentation-version { padding: 8px 12px; border: 1px solid rgba(var(--accent-rgb), .28); border-radius: 999px; color: var(--accent); font-size: 12px; font-weight: 900; text-transform: uppercase; }
.doc-section { padding: 24px; }
.doc-section h2 { margin-bottom: 12px; }
.doc-section p, .doc-section li, .doc-section blockquote { color: var(--muted); line-height: 1.7; font-size: 15px; }
.doc-section code { padding: 2px 6px; border-radius: 5px; background: rgba(255,255,255,.06); color: var(--text); }
.doc-section blockquote { margin: 0; padding: 14px 16px; border-left: 3px solid var(--accent); background: rgba(var(--accent-rgb), .06); }
.app-footer {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 32px 26px;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  color: var(--muted-2);
  font-size: 12px;
}
.app-footer span:first-child { color: var(--muted); font-weight: 800; }
.toast-region { position: fixed; z-index: 100; right: 20px; bottom: 20px; display: grid; gap: 9px; }
.toast {
  min-width: 280px;
  max-width: 400px;
  padding: 14px 16px;
  border: 1px solid var(--line-strong);
  border-radius: 12px;
  background: var(--panel-soft);
  box-shadow: 0 18px 50px rgba(0,0,0,.35);
  font-size: 14px;
}
.toast strong, .toast span { display: block; }
.toast span { margin-top: 4px; color: var(--muted); }
.toast.error { border-color: rgba(255,133,133,.45); }


.page-heading-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex-wrap: wrap; }

.csv-import-modal { width: min(1120px, 96vw); }
.csv-import-body { display: grid; gap: 18px; }
.csv-step { padding: 20px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,255,255,.025); }
.csv-step-heading { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 16px; }
.csv-step-heading > span { width: 30px; height: 30px; display: grid; place-items: center; flex: none; border-radius: 10px; color: var(--accent-text); background: var(--accent); font-weight: 900; }
.csv-step-heading h3 { margin: 0 0 4px; font-size: 17px; }
.csv-step-heading p { margin: 0; color: var(--muted); }
.csv-file-summary { margin-top: 12px; min-height: 48px; display: grid; align-content: center; gap: 3px; padding: 11px 13px; border: 1px dashed var(--line-strong); border-radius: 13px; color: var(--muted); }
.csv-file-summary strong, .csv-file-summary span { display: block; }
.csv-file-summary strong { color: var(--text); }
.csv-mapping-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.csv-options { margin-top: 16px; display: grid; grid-template-columns: minmax(240px, .7fr) 1fr; align-items: end; gap: 16px; }
.checkbox-field { min-height: 50px; display: flex; align-items: center; gap: 10px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 14px; color: var(--text); background: var(--field); cursor: pointer; }
.checkbox-field input { width: 18px; height: 18px; accent-color: var(--accent); }
.csv-import-summary { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 14px; }
.csv-import-summary span { padding: 8px 11px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); background: rgba(255,255,255,.035); }
.csv-import-summary strong { color: var(--text); }
.csv-preview-wrap { max-height: 360px; overflow: auto; border: 1px solid var(--line); border-radius: 14px; }
.csv-preview-table { min-width: 720px; }
.csv-preview-table th { position: sticky; top: 0; z-index: 1; background: var(--surface-active); }
.csv-preview-table td small { display: block; margin-top: 4px; color: var(--muted); }
.csv-row-status { display: inline-flex; padding: 5px 8px; border-radius: 999px; font-size: 12px; font-weight: 800; }
.csv-row-status.ready { color: var(--accent); background: rgba(var(--accent-rgb), .12); }
.csv-row-status.warning { color: var(--warning); background: rgba(255,210,125,.1); }
.csv-row-status.error { color: #ffd7d7; background: rgba(255,133,133,.12); }

.print-area { display: none; }
@media print {
  @page { size: A4 portrait; margin: 14mm; }
  html, body { margin: 0 !important; padding: 0 !important; background: #fff !important; color: #111 !important; }
  body.print-mode .app-shell,
  body.print-mode .drawer-backdrop,
  body.print-mode .detail-drawer,
  body.print-mode dialog,
  body.print-mode .toast-region { display: none !important; }
  body.print-mode .print-area {
    display: block !important;
    width: 100%;
    color: #111;
    background: #fff;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 10pt;
    line-height: 1.35;
    box-sizing: border-box;
  }
  body.print-mode .print-area:not(:has(.decision-template)):not(:has(.official-convention-template)) {
    width: 100%;
    margin: 0 auto !important;
    padding: 0 !important;
  }
  body.print-mode .print-area.print-layout-portrait:not(:has(.decision-template)):not(:has(.official-convention-template)) { max-width: 178mm; }
  body.print-mode .print-area.print-layout-landscape:not(:has(.decision-template)):not(:has(.official-convention-template)) { max-width: 273mm; }
  body.print-mode .print-area:not(:has(.decision-template)):not(:has(.official-convention-template)) > * {
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
  }
  .print-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; padding-bottom: 10px; margin-bottom: 15px; border-bottom: 2px solid #111; }
  .print-header p { margin: 0 0 3px; font-size: 9pt; text-transform: uppercase; letter-spacing: .08em; color: #555; }
  .print-header h1 { margin: 0 0 3px; font-size: 18pt; line-height: 1.1; }
  .print-header > div:last-child { text-align: right; }
  .print-header span, .print-header strong { display: block; }
  .print-header span { color: #555; }
  .print-sheet { width: 100%; margin: 0 0 7mm; box-sizing: border-box; }
  .print-sheet h2 { margin: 0 0 10px; font-size: 14pt; }
  .print-detail-table, .print-list-table, .print-table { width: 100%; max-width: 100%; border-collapse: collapse; box-sizing: border-box; table-layout: fixed; }
  .print-detail-table th, .print-detail-table td, .print-list-table th, .print-list-table td, .print-table th, .print-table td { padding: 6px 7px; border: 1px solid #bbb; vertical-align: top; text-align: left; overflow-wrap: anywhere; word-break: normal; }
  .print-detail-table th { width: 29%; background: #f1f3f5; }
  .print-list-table thead th, .print-table thead th { background: #e9ecef; font-size: 9pt; }
  .print-list-table td, .print-table td { font-size: 7.9pt; }
  .print-list-table thead, .print-table thead { display: table-header-group; }
  .print-list-table tfoot, .print-table tfoot { display: table-footer-group; }
  .print-list-table tr, .print-table tr { break-inside: avoid; page-break-inside: avoid; }
  .print-layout-landscape .print-header { margin-bottom: 10px; padding-bottom: 8px; }
  .print-layout-landscape .print-header h1 { font-size: 17pt; }
  .print-layout-landscape .print-list-table thead th, .print-layout-landscape .print-table thead th { font-size: 8.5pt; }
  .print-layout-landscape .print-list-table td, .print-layout-landscape .print-table td { font-size: 8.3pt; line-height: 1.28; }
  .print-layout-landscape .print-list-table tbody tr:nth-child(even), .print-layout-landscape .print-table tbody tr:nth-child(even) { background: #fafafa; }
  .print-association-list { margin-bottom: 0; }
  .print-association-table { table-layout: fixed; }
  .print-association-table .print-association-col-classification { width: 18%; }
  .print-association-table .print-association-col-name { width: 24%; }
  .print-association-table .print-association-col-president { width: 18%; }
  .print-association-table .print-association-col-phone { width: 14%; }
  .print-association-table .print-association-col-email { width: 26%; }
  .print-association-table th,
  .print-association-table td { padding: 7px 8px; }
  .print-association-table thead th { font-size: 9pt; }
  .print-association-table td { font-size: 9pt; overflow-wrap: break-word; word-break: normal; }
  .print-association-table td:nth-child(4) { white-space: nowrap; }
  .print-association-table td:nth-child(5) { overflow-wrap: anywhere; }
  .print-association-table small { font-size: 8pt; color: #555; }
  .print-documentation .doc-section { margin-bottom: 14px; padding: 0 0 12px; border: 0; border-bottom: 1px solid #ccc; background: #fff; box-shadow: none; break-inside: avoid; }
  .print-documentation .doc-section h2 { font-size: 14pt; }
  .print-documentation .doc-section p, .print-documentation .doc-section li, .print-documentation .doc-section blockquote { color: #222; font-size: 10pt; }
  .print-documentation blockquote { border-left: 3px solid #666; background: #f4f4f4; }
  .print-footer { margin-top: 18px; padding-top: 8px; border-top: 1px solid #aaa; color: #555; font-size: 8.5pt; text-align: center; }
}

@media (max-width: 1180px) {
  .csv-mapping-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .dashboard-grid, .reference-grid { grid-template-columns: 1fr 1fr; }
  .taxonomy-layout { grid-template-columns: 1fr; }
  .subdomain-panel { position: static; }
  .toolbar { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 1366px) {
  .content { padding: 26px 28px 38px; }
  .hero-panel { min-height: 200px; padding: 34px; }
  .hero-panel h2 { font-size: clamp(40px, 4.5vw, 62px); }
  .stat-card { min-height: 128px; padding: 18px; }
  .stat-card strong { font-size: 34px; }
}
@media (max-width: 900px) {
  .app-shell { display: block; }
  .sidebar { position: static; width: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  .main-area { grid-column: auto; }
  .topbar { position: static; flex-wrap: wrap; justify-content: flex-start; padding: 14px 16px; }
  .topbar-status { width: 100%; white-space: normal; }
  .topbar-actions { margin-left: 0; }
  .content { padding: 22px 16px; }
  .toolbar { grid-template-columns: 1fr; }
  .nav-item { grid-template-columns: 30px 1fr auto; }
}
@media (max-width: 650px) {
  .page-heading { flex-direction: column; align-items: flex-start; }
  .page-heading-actions { width: 100%; justify-content: stretch; }
  .page-heading .btn { width: 100%; }
  .csv-mapping-grid, .csv-options { grid-template-columns: 1fr; }
  .hero-panel { padding: 24px 18px; }
  .hero-panel h2 { font-size: 36px; }
  .type-title, .type-title span { min-width: 0; white-space: normal; }
  .stat-grid, .dashboard-grid, .reference-grid, .form-grid, .detail-grid { grid-template-columns: 1fr; }
  .field.span-2, .field-help.span-2 { grid-column: auto; }
  .topbar-actions .btn { width: 100%; }
  .app-footer { flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
  }
  .hero-tagline {
    opacity: 1;
    transform: none;
  }
  .type-title span::after {
    content: none !important;
  }
}


/* Tableau de bord : alertes utiles et modules à venir */
.dashboard-alert-section { margin: 26px 0; }
.dashboard-alert-heading { margin-bottom: 14px; }
.dashboard-alert-heading h3 { margin-bottom: 5px; font-size: 20px; }
.dashboard-alert-heading p { margin: 0; color: var(--muted); }
.dashboard-alert-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.dashboard-alert-card {
  min-height: 190px;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  color: var(--text);
  background: linear-gradient(145deg, color-mix(in srgb, var(--surface-active) 88%, transparent), color-mix(in srgb, var(--surface) 94%, transparent));
  text-align: left;
  box-shadow: var(--shadow-soft);
}
button.dashboard-alert-card { cursor: pointer; }
.dashboard-alert-card strong { margin: 14px 0 4px; font-size: 34px; line-height: 1; }
.dashboard-alert-card h4 { margin: 5px 0 7px; font-size: 16px; }
.dashboard-alert-card p { margin: 0 0 16px; color: var(--muted); font-size: 13px; }
.dashboard-alert-state {
  padding: 4px 9px;
  border-radius: 999px;
  color: var(--accent);
  background: rgba(var(--accent-rgb), .11);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.dashboard-alert-link { margin-top: auto; color: var(--accent); font-size: 13px; font-weight: 800; }
.dashboard-alert-card.is-actionable:hover { transform: translateY(-2px); border-color: rgba(var(--accent-rgb), .42); box-shadow: 0 18px 50px rgba(0,0,0,.28); }

/* Alerte règlements : badge discret de démonstration lorsqu'il reste des montants à régler. */
.dashboard-alert-card.is-payment-alert .dashboard-alert-state {
  padding: 7px 14px;
  border-radius: 999px;
  color: #f7e8ea;
  background: rgba(65, 20, 28, .82);
  border: 1px solid rgba(194, 75, 93, .82);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.04), 0 0 14px rgba(158, 45, 61, .16);
  letter-spacing: .02em;
  text-transform: none;
  animation: none;
}
.dashboard-alert-card.is-payment-alert:hover .dashboard-alert-state {
  border-color: rgba(223, 93, 112, .95);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 0 18px rgba(182, 58, 75, .22);
}
@media (prefers-reduced-motion: reduce) {
  .dashboard-alert-card.is-payment-alert .dashboard-alert-state { animation: none; }
}
.dashboard-alert-card.is-clear { box-shadow: none; }
.dashboard-alert-card.is-clear .dashboard-alert-state { color: var(--text-muted); background: rgba(255,255,255,.055); }
.dashboard-alert-card.is-clear .dashboard-alert-link { color: var(--muted); }
.dashboard-alert-card.is-unavailable {
  filter: grayscale(.9);
  opacity: .48;
  box-shadow: none;
  cursor: not-allowed;
}
.dashboard-alert-card.is-unavailable .dashboard-alert-state,
.dashboard-alert-card.is-unavailable .dashboard-alert-link { color: var(--muted); background: rgba(255,255,255,.04); }
.quick-filter-notice {
  margin: 0 0 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 13px 16px;
  border: 1px solid rgba(var(--accent-rgb), .3);
  border-radius: var(--radius-sm);
  background: rgba(var(--accent-rgb), .09);
}
.quick-filter-notice[hidden] { display: none; }
@media (max-width: 1180px) { .dashboard-alert-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) {
  .dashboard-alert-grid { grid-template-columns: 1fr; }
  .quick-filter-notice { align-items: flex-start; flex-direction: column; }
}

/* Corbeille */
[data-view-panel="trash"] .table-panel td:nth-child(3) { white-space: nowrap; color: var(--muted); }
[data-view-panel="trash"] .actions { min-width: 250px; }
@media (max-width: 760px) {
  [data-view-panel="trash"] .actions { min-width: 0; }
}


/* Contrôle qualité */
.nav-count-warning:not(:empty) { background: rgba(255, 210, 125, .14); color: var(--warning); }
.nav-item.is-active .nav-count-warning { background: var(--accent); color: var(--accent-text); }
.quality-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}
.quality-summary-card {
  min-height: 132px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--panel);
  box-shadow: var(--shadow-soft);
}
.quality-summary-card span { color: var(--muted); font-weight: 800; }
.quality-summary-card strong { margin: 6px 0; font-size: 36px; line-height: 1; }
.quality-summary-card small { color: var(--muted); }
.quality-summary-card.quality-error { border-color: rgba(255, 133, 133, .32); }
.quality-summary-card.quality-warning { border-color: rgba(255, 210, 125, .28); }
.quality-summary-card.quality-success { border-color: rgba(var(--accent-rgb), .22); }
.quality-toolbar { margin-bottom: 18px; }
.quality-list { display: grid; gap: 16px; }
.quality-card { padding: 22px; }
.quality-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.quality-card-title { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.quality-card-title h2 { margin: 0; font-size: 21px; }
.quality-card-header p { margin: 7px 0 0; color: var(--muted); }
.quality-score { padding: 4px 9px; border-radius: 999px; background: rgba(var(--accent-rgb), .12); color: var(--accent); font-size: 12px; font-weight: 900; }
.quality-card-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.quality-issue-list { display: grid; gap: 9px; }
.quality-issue {
  display: grid;
  grid-template-columns: 102px minmax(0, 1fr);
  gap: 13px;
  align-items: start;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
}
.quality-issue-error { border-color: rgba(255,133,133,.26); background: rgba(255,133,133,.055); }
.quality-issue-warning { border-color: rgba(255,210,125,.22); background: rgba(255,210,125,.04); }
.quality-issue-info { border-color: rgba(var(--accent-rgb),.18); }
.quality-issue-badge { display: inline-flex; justify-content: center; padding: 5px 8px; border-radius: 999px; font-size: 11px; font-weight: 900; white-space: nowrap; background: rgba(255,255,255,.07); color: var(--muted); }
.quality-issue-error .quality-issue-badge { color: #ffd7d7; background: rgba(255,133,133,.15); }
.quality-issue-warning .quality-issue-badge { color: var(--warning); background: rgba(255,210,125,.12); }
.quality-issue-info .quality-issue-badge { color: var(--accent); background: rgba(var(--accent-rgb),.12); }
.quality-issue strong { display: block; margin-bottom: 3px; }
.quality-issue p { margin: 0; color: var(--muted); }
.quality-all-clear { border: 1px solid rgba(var(--accent-rgb), .24); }
@media (max-width: 1180px) {
  .quality-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .quality-summary-grid { grid-template-columns: 1fr; }
  .quality-card-header { flex-direction: column; }
  .quality-card-actions { width: 100%; justify-content: flex-start; }
  .quality-issue { grid-template-columns: 1fr; }
  .quality-issue-badge { justify-self: start; }
}

/* Historique */
.history-toolbar { margin-bottom: 18px; }
.history-table-panel td:first-child { white-space: nowrap; color: var(--muted); }
.history-table-panel td:nth-child(2) { min-width: 210px; }
.history-table-panel td:nth-child(3) { min-width: 190px; }
.history-action {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.04);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}
.history-association { border-color: rgba(var(--accent-rgb), .28); background: rgba(var(--accent-rgb), .1); }
.history-import { border-color: rgba(56,189,248,.28); background: rgba(56,189,248,.1); }
.history-classification { border-color: rgba(167,139,250,.28); background: rgba(167,139,250,.1); }
.history-room { border-color: rgba(116,198,157,.28); background: rgba(116,198,157,.1); }
.history-tariff { border-color: rgba(255,210,125,.28); background: rgba(255,210,125,.1); }
.history-settings { border-color: rgba(203,213,225,.24); background: rgba(203,213,225,.08); }
.drawer-history { display: grid; gap: 10px; }
.drawer-history > div {
  display: grid;
  gap: 3px;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.03);
}
.drawer-history strong { font-size: 13px; }
.drawer-history span { color: var(--muted); font-size: 12px; }


/* Documents des associations */
.section-heading-inline { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.section-heading-inline h3 { margin: 0 0 4px; }
.section-heading-inline p { margin: 0; color: var(--muted); font-size: 13px; }
.document-list { display: grid; gap: 10px; }
.document-card { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 14px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: rgba(255,255,255,.025); }
.document-card-main { min-width: 0; display: grid; gap: 4px; }
.document-card-main strong, .document-card-main small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.document-card-main small { color: var(--muted); }
.document-type { color: var(--accent); font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.document-card-meta { min-width: 150px; display: grid; gap: 5px; justify-items: start; }
.document-card-meta small { color: var(--muted); }
.document-card-actions { display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.document-status { display: inline-flex; align-items: center; min-height: 28px; padding: 4px 9px; border-radius: 999px; border: 1px solid var(--line); font-size: 12px; font-weight: 800; }
.document-status-valid { color: var(--accent); border-color: rgba(var(--accent-rgb), .32); background: rgba(var(--accent-rgb), .10); }
.document-status-renew { color: var(--warning); border-color: rgba(255,210,125,.34); background: rgba(255,210,125,.10); }
.document-status-expired { color: #ffd7d7; border-color: rgba(255,133,133,.35); background: rgba(255,133,133,.10); }
.document-status-none { color: var(--muted); }
@media (max-width: 760px) {
  .section-heading-inline { align-items: stretch; flex-direction: column; }
  .document-card { grid-template-columns: 1fr; }
  .document-card-meta { min-width: 0; }
  .document-card-actions { justify-content: flex-start; }
}


/* Conventions et décisions */
.convention-toolbar { grid-template-columns: minmax(260px, 1fr) repeat(4, minmax(145px, auto)); }
.convention-table-panel table { min-width: 1180px; }
.convention-table-panel td:nth-child(3) { min-width: 240px; }
.convention-table-panel td:nth-child(8) .actions { flex-wrap: nowrap; }
.convention-status-brouillon,
.convention-status-a-valider,
.convention-status-en-cours,
.convention-status-signee,
.convention-status-terminee,
.convention-status-annulee {
  display: inline-flex;
  align-items: center;
  min-height: 27px;
  padding: 4px 9px;
  border-radius: 999px;
  border: 1px solid var(--line);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}
.convention-status-brouillon { color: var(--muted); background: rgba(255,255,255,.045); }
.convention-status-a-valider { color: var(--warning); background: rgba(255,210,125,.09); border-color: rgba(255,210,125,.22); }
.convention-status-en-cours { color: var(--accent-hover); background: rgba(var(--accent-rgb),.11); border-color: rgba(var(--accent-rgb),.28); }
.convention-status-signee { color: #a9edc2; background: rgba(99,210,143,.10); border-color: rgba(99,210,143,.24); }
.convention-status-terminee { color: var(--muted); background: rgba(255,255,255,.035); }
.convention-status-annulee { color: #ffc1c1; background: rgba(255,133,133,.09); border-color: rgba(255,133,133,.24); }

@media (max-width: 1180px) {
  .convention-toolbar { grid-template-columns: 1fr 1fr; }
  .convention-toolbar .toolbar-search { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
  .convention-toolbar { grid-template-columns: 1fr; }
  .convention-toolbar .toolbar-search { grid-column: auto; }
}


/* Salles et réservations */
.reservation-summary-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin-bottom:18px; }
.reservation-toolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:16px 18px; margin-bottom:16px; }
.reservation-month-nav, .reservation-filters { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.reservation-month-nav h2 { margin:0 0 0 8px; font-size:20px; min-width:190px; }
.reservation-filters select { min-height:42px; min-width:180px; }
.reservation-layout { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(330px,.85fr); gap:18px; margin-bottom:28px; align-items:start; }
.reservation-calendar-panel, .reservation-list-panel { padding:18px; }
.calendar-weekdays, .calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.calendar-weekdays { margin-bottom:6px; color:var(--muted); font-size:12px; font-weight:800; text-align:center; text-transform:uppercase; letter-spacing:.08em; }
.calendar-day { min-height:112px; padding:9px; border:1px solid var(--line); border-radius:14px; background:rgba(255,255,255,.025); overflow:hidden; }
.calendar-day.is-outside { min-height:40px; opacity:.22; }
.calendar-day.is-today { border-color:rgba(var(--accent-rgb),.62); box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.22); }
.calendar-day-number { display:inline-grid; place-items:center; min-width:26px; height:26px; border-radius:9px; font-weight:800; font-size:13px; }
.calendar-day.is-today .calendar-day-number { background:var(--accent); color:var(--accent-text); }
.calendar-events { display:grid; gap:5px; margin-top:7px; }
.calendar-event { width:100%; min-width:0; padding:5px 7px; display:grid; grid-template-columns:auto minmax(0,1fr); gap:6px; border:1px solid rgba(var(--accent-rgb),.22); border-radius:8px; background:rgba(var(--accent-rgb),.10); color:var(--text); text-align:left; cursor:pointer; }
.calendar-event strong { font-size:11px; }
.calendar-event span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px; }
.calendar-more { color:var(--muted); font-size:11px; }
.reservation-list { display:grid; gap:10px; max-height:650px; overflow:auto; padding-right:3px; }
.reservation-row { display:grid; grid-template-columns:105px minmax(0,1fr) auto auto; gap:12px; align-items:center; padding:12px; border:1px solid var(--line); border-radius:14px; background:rgba(255,255,255,.025); }
.reservation-date, .reservation-main, .reservation-meta { display:grid; gap:3px; }
.reservation-date span, .reservation-main span, .reservation-meta small { color:var(--muted); font-size:12px; }
.reservation-main { min-width:0; }
.reservation-main strong, .reservation-main span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.reservation-meta { justify-items:end; }
.reservation-status-confirmee { border-color:rgba(116,198,157,.32)!important; background:rgba(116,198,157,.12)!important; }
.reservation-status-attente { border-color:rgba(255,210,125,.34)!important; background:rgba(255,210,125,.11)!important; }
.reservation-status-annulee { opacity:.62; }
.reservation-conflict-box { margin-top:14px; padding:12px 14px; border:1px solid rgba(255,133,133,.38); border-radius:12px; background:rgba(255,133,133,.10); color:#ffd7d7; font-weight:700; }
.rooms-section-heading { margin:12px 0 16px; }
@media (max-width:1180px) { .reservation-layout { grid-template-columns:1fr; } .reservation-list { max-height:none; } }
@media (max-width:850px) { .reservation-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .reservation-toolbar { align-items:stretch; flex-direction:column; } .reservation-filters select { flex:1; min-width:0; } .calendar-day { min-height:90px; padding:6px; } .calendar-event span { display:none; } .reservation-row { grid-template-columns:90px minmax(0,1fr); } .reservation-meta, .reservation-row .actions { justify-items:start; grid-column:2; } }
@media (max-width:560px) { .reservation-summary-grid { grid-template-columns:1fr; } .calendar-day { min-height:64px; } .calendar-event { grid-template-columns:1fr; } }


/* À propos */
.about-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  gap: 18px;
}
.about-owner-card {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 28px;
}
.about-owner-card h2 { margin-bottom: 10px; font-size: clamp(26px, 3vw, 40px); }
.about-owner-card p:last-child { margin-bottom: 0; color: var(--muted); }
.about-lead { margin-bottom: 8px; color: var(--text); }
.about-orbit-mark {
  width: 78px;
  height: 78px;
  flex: 0 0 78px;
  display: grid;
  place-items: center;
  border-radius: 24px;
  color: var(--accent-text);
  background: linear-gradient(145deg, var(--accent), var(--accent-hover));
  box-shadow: 0 18px 45px rgba(var(--accent-rgb), .22);
  font-size: 34px;
  font-weight: 900;
}
.about-notice-card, .about-contact-card { padding: 26px; }
.about-notice-card h2, .about-contact-card h2 { margin-bottom: 14px; }
.about-notice-card p:last-child { margin-bottom: 0; }
.about-contact-list { display: grid; gap: 12px; }
.about-contact-item {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 68px;
  padding: 13px 15px;
  border: 1px solid var(--line);
  border-radius: 16px;
  color: var(--text);
  background: rgba(255,255,255,.035);
  text-decoration: none;
  transition: background .16s ease, border-color .16s ease, transform .16s ease;
}
.about-contact-item:hover {
  background: rgba(var(--accent-rgb), .09);
  border-color: rgba(var(--accent-rgb), .34);
  transform: translateY(-1px);
}
.about-contact-item small, .about-contact-item strong { display: block; }
.about-contact-item small { margin-bottom: 3px; color: var(--muted); }
.about-contact-item strong { overflow-wrap: anywhere; }
.about-contact-icon {
  width: 40px;
  height: 40px;
  flex: 0 0 40px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: var(--accent-text);
  background: var(--accent);
  font-weight: 900;
}
@media (max-width: 900px) {
  .about-layout { grid-template-columns: 1fr; }
  .about-owner-card { align-items: flex-start; }
}
@media (max-width: 560px) {
  .about-owner-card { flex-direction: column; padding: 22px; }
  .about-notice-card, .about-contact-card { padding: 22px; }
}

/* Orbite 2.0 — recherche globale, pagination, contacts, tâches et subventions */
.global-search-wrap { position: relative; width: min(380px, 34vw); margin-left: auto; }
.global-search { min-height: 44px; display: flex; align-items: center; gap: 9px; padding: 0 13px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.04); }
.global-search input { width: 100%; border: 0; outline: 0; color: var(--text); background: transparent; }
.global-search-results { position: absolute; z-index: 80; inset: calc(100% + 8px) 0 auto; max-height: 440px; overflow: auto; padding: 8px; border: 1px solid var(--line-strong); border-radius: 16px; background: var(--surface); box-shadow: var(--shadow); }
.global-search-results button { width: 100%; display: grid; grid-template-columns: 92px minmax(0,1fr); gap: 2px 10px; padding: 10px 12px; border: 0; border-radius: 11px; color: var(--text); background: transparent; text-align: left; cursor: pointer; }
.global-search-results button:hover { background: rgba(var(--accent-rgb), .11); }
.global-search-results button span { grid-row: 1 / span 2; color: var(--accent); font-size: 11px; font-weight: 900; text-transform: uppercase; }
.global-search-results button strong, .global-search-results button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.global-search-results button small { color: var(--muted); }

.association-col-select { width: 42px; }
/* Dans ce tableau, le conteneur gère le défilement horizontal.
   Un décalage sticky de 69px faisait passer la première ligne derrière l’en-tête. */
.association-list-table thead th { position: sticky; top: 0; z-index: 4; background: var(--surface); }
.table-sort { border: 0; padding: 0; color: inherit; background: transparent; font: inherit; font-weight: 800; cursor: pointer; white-space: nowrap; }
.table-sort:hover { color: var(--accent); }
.bulk-toolbar, .pagination-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; margin-bottom: 12px; }
.bulk-toolbar { opacity: .78; }
.bulk-toolbar.is-active { opacity: 1; border-color: rgba(var(--accent-rgb), .34); }
.bulk-toolbar select, .pagination-bar select { min-height: 38px; }
.pagination-bar { margin-top: 12px; flex-wrap: wrap; }
.pagination-bar > label, .pagination-bar .actions { display: flex; align-items: center; gap: 9px; }

.contact-editor-list { display: grid; gap: 12px; }
.contact-editor-row { display: grid; grid-template-columns: minmax(118px,.65fr) minmax(150px,.8fr) minmax(170px,1.15fr) minmax(140px,.85fr) minmax(190px,1.1fr) auto auto; gap: 10px; align-items: end; padding: 14px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.025); }
.contact-principal { padding-bottom: 10px; white-space: nowrap; }
.contact-detail-list { display: grid; gap: 9px; margin-bottom: 14px; }
.contact-detail-list article { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 14px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.025); }
.contact-detail-list article > div { display: grid; gap: 3px; }
.contact-detail-list article > div:last-child { justify-items: end; }
.contact-detail-list span, .contact-detail-list a { color: var(--muted); font-size: 13px; }

.task-list { display: grid; gap: 10px; }
.task-row { display: grid; grid-template-columns: minmax(260px,1fr) 180px 120px auto; gap: 14px; align-items: center; padding: 14px 16px; border: 1px solid var(--line); border-radius: 16px; background: var(--panel); }
.task-row > div { display: grid; gap: 3px; }
.task-row small { color: var(--muted); }
.task-late { border-color: rgba(255,133,133,.36); }
.task-today { border-color: rgba(255,210,125,.38); }
.form-alert { padding: 11px 13px; border: 1px solid rgba(255,133,133,.4); border-radius: 12px; color: #ffd7d7; background: rgba(255,133,133,.10); }

.compact-reference-grid { margin-bottom: 20px; }
.reservation-panel { padding: 18px; }
.reservation-calendar-header { margin-bottom: 14px; }
.reservation-toolbar { display: grid; grid-template-columns: repeat(3,minmax(180px,1fr)); margin-bottom: 14px; padding: 0; }
.reservation-calendar { margin-bottom: 18px; overflow-x: auto; }

@media (max-width: 1180px) {
  .global-search-wrap { width: min(320px, 32vw); }
  .contact-editor-row { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .task-row { grid-template-columns: minmax(0,1fr) 150px auto; }
  .task-row .actions { grid-column: 1 / -1; }
}
@media (max-width: 800px) {
  .global-search-wrap { order: 3; width: 100%; }
  .topbar { flex-wrap: wrap; }
  .contact-editor-row, .reservation-toolbar, .task-row { grid-template-columns: 1fr; }
  .contact-detail-list article { grid-template-columns: 1fr; }
  .contact-detail-list article > div:last-child { justify-items: start; }
  .bulk-toolbar, .pagination-bar { align-items: stretch; flex-direction: column; }
}

.drawer-subtitle { margin: -4px 0 0; color: var(--muted); font-size: 13px; }


/* Orbite 2.1.2 — domiciliation administrative configurable */
.checkbox-field.span-2 { grid-column: span 2; }
.domiciliation-toggle { align-items: flex-start; }
.domiciliation-toggle span { line-height: 1.5; }
.domiciliation-details { margin-top: 14px; transition: opacity .16s ease; }
.domiciliation-details.is-disabled { opacity: .48; }
.domiciliation-details.is-disabled input,
.domiciliation-details.is-disabled textarea { cursor: not-allowed; }
@media (max-width: 760px) {
  .checkbox-field.span-2 { grid-column: auto; }
}


/* Orbite 2.2.0 — calendriers dédiés par salle */
.room-filter-hidden { display: none !important; }
.compact-reference-grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.room-selector-card {
  position: relative;
  overflow: hidden;
  padding-top: 18px;
  border-color: color-mix(in srgb, var(--room-color) 34%, var(--line));
}
.room-selector-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 5px;
  background: var(--room-color);
}
.room-selector-card.is-selected {
  border-color: var(--room-color);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--room-color) 34%, transparent), var(--shadow-soft);
  background: color-mix(in srgb, var(--room-color) 10%, var(--panel));
}
.room-selector-main {
  width: 100%;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: 10px 12px;
  margin: 0 0 14px;
  padding: 0;
  border: 0;
  color: inherit;
  background: transparent;
  text-align: left;
  cursor: pointer;
}
.room-color-dot {
  width: 18px;
  height: 18px;
  display: inline-block;
  flex: none;
  border: 2px solid color-mix(in srgb, var(--room-color) 72%, white);
  border-radius: 999px;
  background: var(--room-color);
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--room-color) 18%, transparent);
}
.room-selector-copy { min-width: 0; display: grid; gap: 3px; }
.room-selector-copy strong {
  overflow: visible;
  white-space: normal;
  font-size: 17px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}
.room-selector-copy small { color: var(--muted); font-size: 12px; }
.room-calendar-action {
  grid-column: 2;
  justify-self: start;
  padding: 7px 10px;
  border-radius: 999px;
  color: var(--room-text-color);
  background: var(--room-color);
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
.calendar-room-heading {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.calendar-room-heading small {
  padding-left: 12px;
  border-left: 1px solid var(--line);
  color: var(--muted);
  font-size: 14px;
  font-weight: 700;
}
.room-stat-card { border-top: 4px solid var(--room-color); }
.room-stat-card strong { overflow-wrap: anywhere; font-size: clamp(25px, 3vw, 40px); }
.calendar-grid { position: relative; }
.calendar-day {
  position: relative;
  overflow: visible;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.calendar-day.has-reservation {
  border-color: color-mix(in srgb, var(--room-color) 72%, var(--line));
  background: color-mix(in srgb, var(--room-color) 16%, rgba(255,255,255,.025));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--room-color) 20%, transparent);
}
.calendar-day.has-reservation .calendar-day-number {
  color: var(--room-text-color);
  background: var(--room-color);
}
.calendar-event {
  position: relative;
  z-index: 2;
  border-color: color-mix(in srgb, var(--room-color) 70%, transparent) !important;
  color: var(--room-text-color);
  background: var(--room-color) !important;
}
.calendar-event:hover, .calendar-event:focus-visible { z-index: 80; filter: brightness(1.06); }
.calendar-event[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  z-index: 100;
  left: 0;
  bottom: calc(100% + 9px);
  width: max-content;
  max-width: min(300px, 70vw);
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, var(--room-color) 58%, white);
  border-radius: 11px;
  color: #F8FAFC;
  background: #111827;
  box-shadow: 0 14px 36px rgba(0,0,0,.42);
  font-size: 12px;
  font-weight: 650;
  line-height: 1.45;
  white-space: pre-line;
  opacity: 0;
  pointer-events: none;
  transform: translateY(4px);
  transition: opacity .12s ease, transform .12s ease;
}
.calendar-event[data-tooltip]:hover::after,
.calendar-event[data-tooltip]:focus-visible::after {
  opacity: 1;
  transform: none;
}
.room-colored-row { border-left: 5px solid var(--room-color); }
@media (max-width: 760px) {
  .room-selector-main { grid-template-columns: auto minmax(0, 1fr); }
  .room-calendar-action { grid-column: 1 / -1; justify-self: start; }
  .calendar-room-heading small { width: 100%; padding: 0; border: 0; }
}


/* Orbite 2.2.1 — navigation latérale défilante et barres de défilement thématiques */
html,
body,
.main-nav,
.modal-body,
.drawer-content,
.global-search-results,
.table-panel,
.reservation-calendar,
.documentation-content,
textarea {
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--accent) 82%, white) color-mix(in srgb, var(--surface-active) 72%, transparent);
}

html::-webkit-scrollbar,
body::-webkit-scrollbar,
.main-nav::-webkit-scrollbar,
.modal-body::-webkit-scrollbar,
.drawer-content::-webkit-scrollbar,
.global-search-results::-webkit-scrollbar,
.table-panel::-webkit-scrollbar,
.reservation-calendar::-webkit-scrollbar,
.documentation-content::-webkit-scrollbar,
textarea::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

html::-webkit-scrollbar-track,
body::-webkit-scrollbar-track,
.main-nav::-webkit-scrollbar-track,
.modal-body::-webkit-scrollbar-track,
.drawer-content::-webkit-scrollbar-track,
.global-search-results::-webkit-scrollbar-track,
.table-panel::-webkit-scrollbar-track,
.reservation-calendar::-webkit-scrollbar-track,
.documentation-content::-webkit-scrollbar-track,
textarea::-webkit-scrollbar-track {
  margin: 4px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface-active) 68%, transparent);
}

html::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb,
.main-nav::-webkit-scrollbar-thumb,
.modal-body::-webkit-scrollbar-thumb,
.drawer-content::-webkit-scrollbar-thumb,
.global-search-results::-webkit-scrollbar-thumb,
.table-panel::-webkit-scrollbar-thumb,
.reservation-calendar::-webkit-scrollbar-thumb,
.documentation-content::-webkit-scrollbar-thumb,
textarea::-webkit-scrollbar-thumb {
  min-height: 38px;
  border: 2px solid transparent;
  border-radius: 999px;
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--accent-hover) 92%, white), var(--accent)) padding-box;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent), 0 5px 14px rgba(0,0,0,.24);
}

html::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover,
.main-nav::-webkit-scrollbar-thumb:hover,
.modal-body::-webkit-scrollbar-thumb:hover,
.drawer-content::-webkit-scrollbar-thumb:hover,
.global-search-results::-webkit-scrollbar-thumb:hover,
.table-panel::-webkit-scrollbar-thumb:hover,
.reservation-calendar::-webkit-scrollbar-thumb:hover,
.documentation-content::-webkit-scrollbar-thumb:hover,
textarea::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, color-mix(in srgb, var(--accent-hover) 88%, white), var(--accent-hover)) padding-box;
}

.main-nav {
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 10px, #000 calc(100% - 12px), transparent 100%);
  mask-image: linear-gradient(to bottom, transparent 0, #000 10px, #000 calc(100% - 12px), transparent 100%);
}

@media (max-height: 820px) and (min-width: 901px) {
  .sidebar { padding: 18px 14px 16px; }
  .brand { padding: 2px 8px 16px; }
  .brand-mark { width: 42px; height: 42px; border-radius: 14px; }
  .main-nav { gap: 5px; padding-right: 6px; }
  .nav-item { min-height: 44px; padding: 7px 10px; border-radius: 14px; }
  .nav-icon { width: 28px; height: 28px; }
  .sidebar-footer { margin-top: 8px; gap: 7px; }
  .data-indicator { min-height: 58px; padding: 10px; }
}

@media (max-width: 900px) {
  .sidebar {
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  .main-nav {
    flex: none;
    min-height: auto;
    overflow: visible;
    padding-right: 1px;
    -webkit-mask-image: none;
    mask-image: none;
  }
  .sidebar-footer { margin-top: 14px; }
}


/* Orbite 2.3.0 - décisions */
.decision-only-fields[hidden]{display:none!important}.decision-settings-section .form-grid{width:100%}
@media print{
 @page{size:A4 portrait;margin:2.5cm}
 body.print-mode .print-area:has(.decision-template){font-family:"Arial Narrow",Arial,Helvetica,sans-serif;font-size:11pt;line-height:1.12}
 body.print-mode .print-area:has(.decision-template) a{color:#0563c1;text-decoration:underline}
 .decision-template{color:#000;background:#fff;font-family:"Arial Narrow",Arial,Helvetica,sans-serif;font-size:11pt;line-height:1.12}
 .decision-page{width:100%;min-height:24.68cm;background:#fff}.decision-page-one{break-after:page;page-break-after:always}.decision-page-two{break-before:page;page-break-before:always}
 .decision-top-space{height:2.1cm}.decision-main-title,.decision-section-title{margin:0;color:#000;font-family:inherit;font-size:11pt;font-weight:700;line-height:1.1;text-align:center;text-decoration:underline}.decision-main-title{margin-bottom:1.05cm}.decision-section-title{margin-top:1cm;margin-bottom:.78cm}.decision-decide{margin-top:.72cm;margin-bottom:.78cm}
 .decision-template p{margin:0 0 .5cm;color:#000;text-align:justify}.decision-object-block{display:grid;grid-template-columns:1.55cm 1fr;column-gap:.25cm;margin-bottom:1cm;line-height:1.05}.decision-object-label{text-decoration:underline}.decision-considering{margin:0 0 .55cm .55cm;padding:0}.decision-considering li{margin:0 0 .55cm;padding-left:.15cm;text-align:justify}.decision-article-label{font-weight:700;text-transform:uppercase}.decision-underlined{text-decoration:underline}
 .decision-schedule{display:flex;gap:.42cm;margin-left:.55cm!important;margin-bottom:.72cm!important;text-align:left!important}.decision-schedule mark,.decision-date-block mark{padding:0 .06cm;color:#000;background:#fff200;font-weight:700}.decision-date-block{margin-top:1.55cm}.decision-date-block p{text-align:left;line-height:1.05}.decision-signature-block{width:54%;margin:4.25cm 0 0 auto;text-align:center;line-height:1.15}.decision-signatory-name{display:block;margin-top:3.15cm}
}

/* Ajustement d'impression fidèle A4 */
@media print {
  @page { size: A4 portrait; margin: 0; }
  body.print-mode { margin: 0 !important; padding: 0 !important; background: #fff !important; }
  body.print-mode .skip-link { display: none !important; }
  body.print-mode .print-area:has(.decision-template) { margin: 0 !important; padding: 0 !important; }
  .decision-template { font-family: "Arial Narrow", "Liberation Sans Narrow", "Nimbus Sans Narrow", Arial, sans-serif; line-height: 1.05; }
  .decision-page { width: 21cm; height: 29.7cm; min-height: 29.7cm; padding: 2.5cm; overflow: hidden; }
  .decision-template p { margin-bottom: .42cm; }
  .decision-section-title { margin-top: .82cm; margin-bottom: .64cm; }
  .decision-decide { margin-top: .54cm; margin-bottom: .62cm; }
  .decision-considering { margin-bottom: .42cm; }
  .decision-considering li { margin-bottom: .42cm; }
  .decision-schedule { margin-bottom: .55cm !important; }
}
@media print {
  .decision-top-space { height: 3.2cm; }
  .decision-template p { margin-bottom: .50cm; }
  .decision-section-title { margin-top: 1cm; margin-bottom: .78cm; }
  .decision-decide { margin-top: .72cm; margin-bottom: .78cm; }
  .decision-considering { margin-bottom: .55cm; }
  .decision-considering li { margin-bottom: .55cm; }
  .decision-schedule { margin-bottom: .72cm !important; }
}


/* Orbite 2.3.1 — décisions synchronisées avec le calendrier */
.decision-only-fields[hidden], [data-non-decision-field][hidden] { display: none !important; }
.linked-reservation-notice {
  padding: 13px 15px;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: 14px;
  color: color-mix(in srgb, var(--text-main) 82%, var(--text-muted));
  background: rgba(var(--accent-rgb), .08);
  font-size: 13px;
  line-height: 1.55;
}
.calendar-link-badge {
  display: inline-flex;
  margin-top: 7px;
  padding: 3px 8px;
  border-radius: 999px;
  color: var(--accent);
  background: rgba(var(--accent-rgb), .10);
  font-size: 11px;
  font-weight: 800;
}
.decision-settings-section .form-grid { width: 100%; }

/* Orbite 2.4.0 — module Protection des données / RGPD */
.rgpd-warning{margin-bottom:18px;padding:18px 20px;border-color:rgba(255,210,125,.34);background:linear-gradient(135deg,rgba(255,210,125,.10),rgba(var(--accent-rgb),.05))}.rgpd-warning strong{display:block;margin-bottom:6px;color:var(--warning);font-size:15px}.rgpd-warning p{margin:0;color:var(--muted);line-height:1.6}
.rgpd-top-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:18px;align-items:start;margin:18px 0}.rgpd-notice-card,.rgpd-person-card,.rgpd-section{padding:24px}.rgpd-form-panel{max-width:none;margin:18px 0}.rgpd-section{margin:18px 0}.rgpd-section-heading{align-items:center}.rgpd-notice-preview{max-height:520px;overflow:auto;padding-right:8px}.rgpd-legal-notice{display:grid;gap:10px}.rgpd-legal-notice h2{margin:0 0 4px;font-size:20px}.rgpd-legal-notice p{margin:0;color:color-mix(in srgb,var(--text-main) 84%,var(--text-muted));line-height:1.62}.rgpd-legal-notice small{display:block;margin-top:8px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);line-height:1.55}
.rgpd-person-actions{display:flex;justify-content:flex-end;margin:12px 0}.rgpd-person-results{display:grid;gap:9px;max-height:360px;overflow:auto}.rgpd-person-result{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:14px;color:var(--text);background:rgba(255,255,255,.035);text-align:left;cursor:pointer}.rgpd-person-result:hover{border-color:rgba(var(--accent-rgb),.42);background:rgba(var(--accent-rgb),.08)}.rgpd-person-result strong,.rgpd-person-result span{display:block}.rgpd-person-result span{margin-top:5px;color:var(--muted);font-size:12px;line-height:1.5}
.rgpd-card-list{display:grid;gap:12px}.rgpd-record-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:18px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.03)}.rgpd-record-main h3{margin:5px 0 8px}.rgpd-record-main p{margin:0 0 9px;color:var(--muted);line-height:1.55}.rgpd-record-main small{display:block;margin-top:5px;color:var(--muted)}.rgpd-record-id{color:var(--accent);font-size:11px;font-weight:900;letter-spacing:.08em}.rgpd-request-table table{min-width:1050px}.rgpd-warning-text{color:var(--warning)!important}.rgpd-deadline{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}.rgpd-deadline-late{color:#ffd7d7;background:rgba(255,133,133,.14)}.rgpd-deadline-soon{color:var(--warning);background:rgba(255,210,125,.12)}.rgpd-deadline-valid,.rgpd-deadline-closed{color:var(--accent);background:rgba(var(--accent-rgb),.10)}.rgpd-deadline-missing{color:var(--muted);background:rgba(255,255,255,.06)}
.rgpd-retention-list,.rgpd-security-list{display:grid;gap:12px}.rgpd-retention-row{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(220px,1fr) minmax(260px,1.25fr);gap:14px;align-items:end;padding:16px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.025)}.rgpd-retention-row>div strong,.rgpd-retention-row>div small{display:block}.rgpd-retention-row>div small{margin-top:5px;color:var(--muted)}.rgpd-security-row{display:grid;grid-template-columns:minmax(320px,1fr) minmax(300px,.9fr);gap:16px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.025)}.rgpd-security-check{display:flex;gap:12px;align-items:flex-start;cursor:pointer}.rgpd-security-check input{width:20px;height:20px;flex:none;accent-color:var(--accent)}.rgpd-security-check strong,.rgpd-security-check small{display:block}.rgpd-security-check small{margin-top:5px;color:var(--muted);line-height:1.5}.rgpd-notice-preview,.rgpd-person-results{scrollbar-width:thin;scrollbar-color:var(--accent) var(--surface-active)}
@media(max-width:1100px){.rgpd-top-grid{grid-template-columns:1fr}.rgpd-retention-row,.rgpd-security-row{grid-template-columns:1fr}}@media(max-width:700px){.rgpd-record-card{grid-template-columns:1fr}.rgpd-record-card .actions{justify-content:flex-start}}
@media print{.print-rgpd,.print-rgpd-register{color:#111;background:#fff}.print-rgpd .rgpd-legal-notice{display:block}.print-rgpd .rgpd-legal-notice h2{margin-bottom:18px;color:#111}.print-rgpd .rgpd-legal-notice p{margin:0 0 11px;color:#111;line-height:1.45}.print-rgpd .rgpd-legal-notice small{color:#333;border-color:#bbb}.print-rgpd-register article{break-inside:avoid;margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid #bbb}.print-rgpd-register h2{color:#111;font-size:16pt}.print-rgpd-register dl{display:grid;grid-template-columns:4.2cm 1fr;gap:5px 12px}.print-rgpd-register dt{font-weight:700}.print-rgpd-register dd{margin:0}}


/* Orbite 2.5.0 — Règlements et encaissements */
.payment-toolbar {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: stretch;
}
.payment-toolbar .toolbar-search {
  grid-column: 1 / -1;
  min-width: 0;
}
.payment-toolbar select {
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
.payment-table-panel table { min-width: 1140px; table-layout: fixed; }
.payment-table-panel th, .payment-table-panel td { padding: 13px 10px; overflow-wrap: anywhere; }
.payment-table-panel th:nth-child(1), .payment-table-panel td:nth-child(1) { width: 7%; }
.payment-table-panel th:nth-child(2), .payment-table-panel td:nth-child(2) { width: 13%; }
.payment-table-panel th:nth-child(3), .payment-table-panel td:nth-child(3) { width: 18%; }
.payment-table-panel th:nth-child(4), .payment-table-panel td:nth-child(4), .payment-table-panel th:nth-child(5), .payment-table-panel td:nth-child(5), .payment-table-panel th:nth-child(6), .payment-table-panel td:nth-child(6) { width: 7%; white-space: nowrap; }
.payment-table-panel th:nth-child(7), .payment-table-panel td:nth-child(7) { width: 10%; }
.payment-table-panel th:nth-child(8), .payment-table-panel td:nth-child(8) { width: 15%; }
.payment-table-panel th:nth-child(9), .payment-table-panel td:nth-child(9) { width: 16%; }
.payment-table-panel td.actions { display: table-cell; white-space: nowrap; }
.payment-table-panel td.actions .btn { min-height: 34px; padding: 0 9px; font-size: 12px; }
.payment-validation { display: inline-flex; align-items: center; min-height: 27px; padding: 4px 9px; border-radius: 999px; color: var(--muted); background: rgba(255,255,255,.055); font-size: 12px; font-weight: 800; }
.payment-validation.is-valid { color: #c9ffe1; background: rgba(66, 211, 146, .15); border: 1px solid rgba(66, 211, 146, .28); }
.payment-validation.is-pending { color: #ffe6aa; background: rgba(255, 200, 87, .13); border: 1px solid rgba(255, 200, 87, .26); }
.payment-status-a-regler { --status-color: var(--accent); }
.payment-status-partiel { --status-color: var(--warning); }
.payment-status-paye { --status-color: #55d996; }
.payment-status-en-retard { --status-color: var(--danger); }
.payment-status-exonere, .payment-status-annule { --status-color: var(--muted); }
.payment-validation-check { padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.035); }
@media (max-width: 1280px) {
  .payment-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .payment-toolbar { grid-template-columns: 1fr; }
  .payment-toolbar .toolbar-search { grid-column: 1; }
}


/* Orbite 2.6.0 — sites et mairies annexes */
.association-site-label { color: var(--accent) !important; font-weight: 700; }
#associationSiteSelect { min-height: 112px; }
#associationSiteSelect option { padding: 6px 8px; }
.reservation-toolbar { grid-template-columns: repeat(4, minmax(180px, 1fr)); }
.room-selector-copy small { line-height: 1.35; }
.reference-card dl { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); }
@media (max-width: 1180px) {
  .reservation-toolbar { grid-template-columns: repeat(2, minmax(180px, 1fr)); }
}
@media (max-width: 700px) {
  .reservation-toolbar { grid-template-columns: 1fr; }
}


/* Orbite 2.6.1 — filtres calendrier et rattachement financier */
.calendar-filter-panel {
  margin: 18px 0 20px;
  padding: 18px;
  border: 1px solid rgba(var(--accent-rgb), .32);
  border-radius: var(--radius-md);
  background: linear-gradient(135deg, rgba(var(--accent-rgb), .10), rgba(255,255,255,.025));
  box-shadow: var(--shadow-soft);
}
.calendar-filter-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 14px; }
.calendar-filter-heading h3 { margin: 0; font-size: 21px; }
.calendar-filter-heading p:last-child { max-width: 520px; margin: 0; color: var(--muted); }
.reservation-toolbar .filter-field { min-width: 190px; display: grid; gap: 7px; }
.reservation-toolbar .filter-field span { color: var(--muted); font-size: 12px; font-weight: 800; }
.reservation-toolbar .filter-field-strong span { color: var(--accent); }
.reservation-toolbar .filter-field-strong select { border-color: rgba(var(--accent-rgb), .48); background: color-mix(in srgb, var(--field) 88%, var(--accent) 12%); font-weight: 800; }
.payment-table-panel { overflow-x: auto; }
.payment-table-panel table { min-width: 1120px; table-layout: auto; }
.payment-table-panel th:nth-child(1) { width: 92px; }
.payment-table-panel th:nth-child(2) { width: 180px; }
.payment-table-panel th:nth-child(3) { width: 210px; }
.payment-table-panel th:nth-child(4) { width: 290px; }
.payment-table-panel th:nth-child(5) { width: 170px; }
.payment-table-panel th:nth-child(6) { width: 140px; }
.payment-table-panel th:nth-child(7) { width: 150px; }
.payment-amounts { display: grid; grid-template-columns: 1fr; gap: 4px; min-width: 165px; }
.payment-amounts span { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }
.payment-amounts span small { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .08em; }
.payment-amounts span strong { white-space: nowrap; font-size: 13px; }
.payment-amounts > small { margin-top: 2px; }
.payment-table-panel td:nth-child(6) .payment-validation { display: inline-flex; margin-top: 8px; }
.payment-table-panel td.actions { min-width: 140px; }
@media (max-width: 980px) {
  .calendar-filter-heading { align-items: start; flex-direction: column; }
  .reservation-toolbar .filter-field { width: 100%; }
}

/* Les filtres de règlements restent contenus dans la grille, même sur écran étroit. */

/* Orbite 2.6.2 — correction responsive des filtres Règlements */
.payment-toolbar > * { min-width: 0; }

/* Orbite 2.6.3 — audit responsive complet avant démonstration */
.toolbar > *,
.page-heading > *,
.page-heading-actions > *,
.calendar-filter-heading > *,
.reservation-toolbar > *,
.form-grid > *,
.stat-grid > *,
.quality-summary-grid > *,
.dashboard-grid > *,
.reference-grid > *,
.taxonomy-layout > *,
.reservation-layout > *,
.about-layout > *,
.rgpd-top-grid > *,
.rgpd-retention-row > *,
.rgpd-security-row > *,
.task-row > *,
.contact-editor-row > *,
.bulk-toolbar > *,
.pagination-bar > * {
  min-width: 0;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),
select,
textarea {
  max-width: 100%;
}

.toolbar select,
.toolbar input:not([type="checkbox"]):not([type="radio"]),
.toolbar textarea,
.reservation-toolbar select,
.reservation-toolbar input,
.filter-field select,
.filter-field input {
  width: 100%;
  min-width: 0;
}

.calendar-filter-panel {
  overflow: hidden;
}

.calendar-filter-heading {
  align-items: flex-start;
  flex-wrap: wrap;
}

.calendar-filter-heading > div {
  flex: 1 1 340px;
}

.calendar-filter-heading > p:last-child {
  flex: 1 1 320px;
  text-align: right;
}

/* Deux colonnes stables par défaut : plus lisible et sûr avec la barre latérale. */
.calendar-filter-panel .reservation-toolbar {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  align-items: end;
  justify-content: initial;
  padding: 0;
}

.calendar-filter-panel .reservation-toolbar .filter-field {
  width: 100%;
  min-width: 0;
}

.calendar-filter-panel .reservation-toolbar .filter-field select {
  width: 100%;
  min-width: 0;
}

/* Quatre colonnes uniquement sur les très grands écrans. */
@media (min-width: 1900px) {
  .calendar-filter-panel .reservation-toolbar {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* La barre supérieure passe en plusieurs lignes avant d'être contrainte. */
@media (max-width: 1280px) {
  .topbar {
    flex-wrap: wrap;
    align-items: center;
  }
  .topbar-status {
    flex: 1 1 100%;
    width: 100%;
    white-space: normal;
  }
  .global-search-wrap {
    flex: 1 1 320px;
    width: auto;
    min-width: 0;
    margin-left: 0;
  }
  .topbar-actions {
    flex: 1 1 auto;
    min-width: 0;
  }
}

@media (max-width: 980px) {
  .calendar-filter-heading > p:last-child {
    text-align: left;
  }
  .calendar-filter-panel .reservation-toolbar {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
  .modal {
    width: min(96vw, 880px);
    max-height: 96vh;
    border-radius: 18px;
  }
  .modal form {
    max-height: 96vh;
  }
  .modal-header,
  .modal-footer {
    align-items: stretch;
    padding: 16px;
  }
  .modal-header {
    flex-wrap: wrap;
  }
  .modal-footer .btn {
    flex: 1 1 180px;
  }
  .modal-body {
    padding: 18px 16px;
  }
  .form-grid,
  .csv-mapping-grid,
  .csv-options {
    grid-template-columns: 1fr;
  }
  .field.span-2,
  .field-help.span-2 {
    grid-column: auto;
  }
}

@media (max-width: 560px) {
  .topbar-actions,
  .page-heading-actions,
  .actions {
    width: 100%;
  }
  .topbar-actions .btn,
  .page-heading-actions .btn {
    flex: 1 1 100%;
    width: 100%;
  }
  .calendar-filter-panel {
    padding: 15px;
  }
  .toast-region {
    left: 12px;
    right: 12px;
  }
  .toast {
    min-width: 0;
    max-width: none;
    width: 100%;
  }
}

/* Notifications intégrées au flux : elles poussent le contenu et ne recouvrent plus les formulaires. */
.toast-region {
  position: static;
  inset: auto;
  z-index: auto;
  width: 100%;
  padding: 0 32px;
  display: grid;
  gap: 9px;
  pointer-events: none;
}
.toast-region:empty { display: none; }
.toast-region:not(:empty) { padding-top: 12px; }
.toast {
  width: 100%;
  min-width: 0;
  max-width: none;
}
@media (max-width: 900px) {
  .toast-region { padding-left: 16px; padding-right: 16px; }
}


/* Orbite 2.7.0 — Délibérations */
.settings-note {
  margin: 0 0 16px;
  padding: 12px 14px;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 12px;
  color: var(--muted);
  background: rgba(var(--accent-rgb), .07);
}
.deliberation-toolbar { grid-template-columns: minmax(280px, 1.6fr) repeat(3, minmax(150px, .7fr)); }
.deliberation-table-panel td:nth-child(2) { min-width: 300px; }
.deliberation-table-panel td small { display: block; margin-top: 4px; color: var(--muted); }
.deliberation-status-active { color: var(--accent-text); background: var(--accent); }
.deliberation-status-remplacee, .deliberation-status-archivee { color: var(--muted); background: rgba(255,255,255,.07); }
.deliberation-status-abrogee { color: #ffd7d7; background: rgba(255,133,133,.13); }
.deliberation-selection-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.deliberation-choice {
  min-width: 0;
  display: flex;
  align-items: flex-start;
  gap: 11px;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
  cursor: pointer;
}
.deliberation-choice:hover { border-color: rgba(var(--accent-rgb), .35); background: rgba(var(--accent-rgb), .07); }
.deliberation-choice input { margin-top: 3px; flex: none; }
.deliberation-choice span { min-width: 0; display: grid; gap: 4px; }
.deliberation-choice strong, .deliberation-choice small { overflow-wrap: anywhere; }
.deliberation-choice small { color: var(--muted); }
.deliberation-choice.is-inactive { opacity: .72; }
.deliberation-choice.is-orphan { border-style: dashed; }
@media (max-width: 1280px) {
  .deliberation-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .deliberation-toolbar .toolbar-search { grid-column: 1 / -1; }
}
@media (max-width: 800px) {
  .deliberation-toolbar, .deliberation-selection-grid { grid-template-columns: 1fr; }
  .deliberation-toolbar .toolbar-search { grid-column: auto; }
}


/* Orbite 2.8.0 — conventions officielles */
.convention-only-fields[hidden] { display: none !important; }
#conventionGenericObjectField[hidden], [data-generic-period-field][hidden] { display: none !important; }

.official-template-notice {
  margin: 0 0 18px;
  padding: 14px 16px;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: 14px;
  background: rgba(var(--accent-rgb), .08);
  color: color-mix(in srgb, var(--text-main) 88%, var(--text-muted));
  line-height: 1.55;
}
.form-subtitle { margin: 24px 0 12px; color: var(--accent-hover); font-size: 14px; letter-spacing: .02em; }

@media print {
  body.print-mode .print-area:has(.official-convention-template) { margin: 0 !important; padding: 0 !important; }
  .official-convention-template {
    color: #000;
    background: #fff;
    font-family: "Arial Narrow", "Liberation Sans Narrow", "Nimbus Sans Narrow", Arial, sans-serif;
    font-size: 11pt;
    line-height: 1.08;
  }
  .official-convention-page {
    width: 21cm;
    height: 29.7cm;
    min-height: 29.7cm;
    padding: 2.3cm 2.45cm 2.2cm;
    overflow: hidden;
    background: #fff;
    page-break-after: always;
    break-after: page;
  }
  .official-convention-page-three { page-break-after: auto; break-after: auto; padding-top: 2.55cm; }
  .official-convention-title-space { height: 2.35cm; }
  .official-convention-template h1 {
    margin: 0 0 1.55cm;
    color: #000;
    font: 700 12pt/1.12 "Arial Narrow", "Liberation Sans Narrow", Arial, sans-serif;
    text-align: center;
    text-decoration: underline;
  }
  .official-convention-template h2 {
    margin: .55cm 0 .55cm;
    color: #000;
    font: 400 11pt/1.1 inherit;
    text-decoration: underline;
  }
  .official-convention-template h3 {
    margin: .55cm 0 .62cm;
    color: #000;
    font: 700 11pt/1.1 inherit;
    text-align: center;
    text-decoration: underline;
  }
  .official-convention-template h4 {
    margin: .42cm 0 .28cm;
    color: #000;
    font: 700 11pt/1.1 inherit;
    text-decoration: underline;
  }
  .official-convention-template p {
    margin: 0 0 .42cm;
    color: #000;
    text-align: justify;
  }
  .official-convention-page-two p { margin-bottom: .31cm; }
  .official-convention-page-two h4 { margin-top: .34cm; margin-bottom: .22cm; }
  .official-convention-template .official-spaced { margin-top: .88cm; }
  .official-convention-template .official-side { margin-bottom: .48cm; }
  .official-convention-template .official-right { text-align: right; }
  .official-convention-template .official-bullet { margin: .2cm 0 .48cm 4.4cm; text-align: left; }
  .official-signatures {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.2cm;
    margin-top: 1.15cm;
    text-align: center;
  }
  .official-signatures > div { min-height: 5.1cm; display: flex; flex-direction: column; align-items: center; }
  .official-signature-name { margin-top: auto; }
}


/* Orbite 2.9.0 — page de garde et profils utilisateurs */
body.auth-locked { overflow: hidden; }
body.auth-locked .app-shell { visibility: hidden; pointer-events: none; user-select: none; }
.login-screen {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  min-height: 100vh;
  min-height: 100dvh;
  padding: 28px;
  overflow: auto;
  background:
    radial-gradient(circle at 18% 4%, rgba(var(--accent-rgb), .20), transparent 36%),
    radial-gradient(circle at 92% 92%, rgba(var(--accent-hover-rgb), .14), transparent 34%),
    linear-gradient(145deg, var(--bg-main), var(--bg-secondary) 52%, var(--bg-main));
}
.login-screen[hidden] { display: none; }
.login-layout {
  position: relative;
  z-index: 2;
  width: min(100%, 1420px);
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(390px, .75fr);
  align-items: stretch;
  gap: 26px;
}
.login-hero {
  min-height: 560px;
  margin: 0;
  padding: clamp(38px, 6vw, 78px);
  display: flex;
  align-items: center;
}
.login-hero h1 { margin-bottom: 16px; font-size: clamp(50px, 6vw, 86px); }
.login-hero .hero-tagline { font-size: clamp(20px, 2vw, 28px); }
.login-hero .hero-copy { max-width: 680px; }
.login-card {
  width: 100%;
  min-height: 560px;
  padding: 36px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: 30px;
  background: color-mix(in srgb, var(--surface) 94%, transparent);
  box-shadow: 0 30px 100px rgba(0,0,0,.48);
  backdrop-filter: blur(24px);
}
.login-brand { display: flex; align-items: center; gap: 14px; margin-bottom: 30px; }
.login-brand strong, .login-brand span { display: block; }
.login-brand strong { font-size: 22px; }
.login-brand span { color: var(--muted); font-size: 13px; margin-top: 3px; }
.login-brand-mark { width: 54px; height: 54px; border-radius: 18px; font-size: 23px; }
.login-heading h2 { margin: 0 0 10px; font-size: clamp(34px, 4vw, 48px); }
.login-heading > p:last-child { color: var(--muted); line-height: 1.6; }
.login-data-status {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 72px;
  margin: 24px 0 12px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 17px;
  background: rgba(255,255,255,.035);
}
.login-data-status strong, .login-data-status span { display: block; }
.login-data-status div { min-width: 0; }
.login-data-status div span { margin-top: 4px; color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.login-data-status.is-ready .status-dot { background: var(--accent); box-shadow: 0 0 0 5px rgba(var(--accent-rgb), .12); }
.login-open-data { width: 100%; margin-bottom: 20px; }
.login-form { display: grid; gap: 16px; }
.login-submit { width: 100%; margin-top: 2px; }
.login-message { min-height: 20px; margin: 0; color: var(--danger); font-size: 13px; }
.login-message.is-success { color: var(--accent); }
.login-footnote { margin: 24px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; text-align: center; }
.login-orbit { position: fixed; border: 1px solid rgba(var(--accent-rgb), .12); border-radius: 50%; pointer-events: none; }
.login-orbit-one { width: 480px; height: 480px; top: -160px; right: -120px; }
.login-orbit-two { width: 620px; height: 620px; bottom: -300px; left: -240px; }

/* ORYSMA — emblème animé de la page de connexion */
.orysma-login-emblem {
  position: fixed;
  top: 74px;
  right: 42px;
  z-index: 3;
  width: clamp(132px, 10vw, 178px);
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  pointer-events: none;
  animation: orysma-logo-float 7s ease-in-out infinite;
  filter: drop-shadow(0 18px 36px rgba(0,0,0,.38));
}
.orysma-login-emblem::before {
  content: "";
  position: absolute;
  inset: -13px;
  border-radius: 50%;
  border: 1px solid rgba(var(--accent-rgb), .20);
  border-top-color: rgba(238, 178, 64, .58);
  border-right-color: rgba(55, 185, 198, .46);
  box-shadow: inset 0 0 32px rgba(var(--accent-rgb), .035), 0 0 34px rgba(var(--accent-rgb), .08);
  animation: orysma-orbit-spin 22s linear infinite;
}
.orysma-login-emblem::after {
  content: "";
  position: absolute;
  top: 4px;
  left: 17%;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: rgba(238, 178, 64, .95);
  box-shadow: 0 0 15px rgba(238, 178, 64, .72), 118px 92px 0 rgba(55, 185, 198, .86);
  animation: orysma-orbit-pulse 4.8s ease-in-out infinite;
}
.orysma-login-emblem img {
  position: relative;
  z-index: 1;
  display: block;
  width: 88%;
  height: 88%;
  object-fit: contain;
  opacity: .94;
  filter: drop-shadow(0 0 13px rgba(124, 92, 232, .20));
  animation: orysma-logo-breathe 5.6s ease-in-out infinite;
}
@keyframes orysma-logo-float {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(0, -9px, 0); }
}
@keyframes orysma-orbit-spin {
  to { transform: rotate(360deg); }
}
@keyframes orysma-orbit-pulse {
  0%, 100% { opacity: .68; transform: scale(.92); }
  50% { opacity: 1; transform: scale(1.18); }
}
@keyframes orysma-logo-breathe {
  0%, 100% { transform: scale(.985); opacity: .88; }
  50% { transform: scale(1.025); opacity: 1; }
}
@media (max-width: 1350px) {
  .orysma-login-emblem { top: 34px; right: 24px; width: 132px; opacity: .88; }
  .orysma-login-emblem::after { box-shadow: 0 0 15px rgba(238, 178, 64, .72), 88px 70px 0 rgba(55, 185, 198, .86); }
}
@media (max-width: 1080px) {
  .orysma-login-emblem { top: 20px; right: 18px; width: 112px; opacity: .76; }
  .orysma-login-emblem::before { inset: -9px; }
  .orysma-login-emblem::after { box-shadow: 0 0 15px rgba(238, 178, 64, .72), 72px 58px 0 rgba(55, 185, 198, .86); }
}
@media (max-width: 760px) {
  .orysma-login-emblem { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .orysma-login-emblem,
  .orysma-login-emblem::before,
  .orysma-login-emblem::after,
  .orysma-login-emblem img { animation: none !important; }
}
@media print {
  .orysma-login-emblem { display: none !important; }
}
.topbar-user {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.035);
}
.topbar-user[hidden] { display: none; }
.topbar-user-avatar {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  flex: none;
  border-radius: 10px;
  color: var(--accent-text);
  background: var(--accent);
  font-weight: 900;
}
.topbar-user strong, .topbar-user small { display: block; max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topbar-user strong { font-size: 12px; }
.topbar-user small { margin-top: 2px; color: var(--muted); font-size: 10px; }
@media (max-width: 1080px) {
  .login-layout { grid-template-columns: 1fr; max-width: 760px; }
  .login-hero { min-height: 300px; }
  .login-card { min-height: auto; }
  .topbar-user { order: 3; }
  .topbar-user strong, .topbar-user small { max-width: 110px; }
}
@media (max-width: 760px) {
  .login-screen { padding: 14px; align-items: start; }
  .login-layout { margin: 12px 0; gap: 14px; }
  .login-hero { min-height: 230px; padding: 28px 22px; border-radius: 22px; }
  .login-hero h1 { font-size: clamp(38px, 12vw, 58px); }
  .login-card { padding: 26px 20px; border-radius: 22px; }
  .login-orbit { display: none; }
  .topbar-user { width: 100%; justify-content: center; }
}
@media print {
  .login-screen, .topbar-user, #logoutButton { display: none !important; }
}

/* Correctif responsive page de garde */
.login-hero .type-title,
.login-hero .type-title span {
  min-width: 0;
  max-width: 100%;
}
@media (max-width: 760px) {
  .login-hero .type-title span { white-space: normal; }
}

/* Ajustement du titre de bienvenue pour rester dans sa carte */
.login-hero h1 { font-size: clamp(48px, 5vw, 78px); }


/* Orbite 3.0.0 — profils et lecture seule */
body.is-read-only .readonly-hidden { display: none !important; }
body.is-read-only [data-write-only] { display: none !important; }
body.is-read-only .form-actions button[type="submit"] { display: none !important; }
body.is-read-only input:disabled, body.is-read-only select:disabled, body.is-read-only textarea:disabled { opacity: .82; cursor: default; }
body.is-non-admin [data-view="configuration"] { display: none !important; }


/* Orbite 3.5 — Administration des comptes et droits */
.admin-security-notice { margin-bottom: 18px; display: grid; gap: 6px; border-color: rgba(var(--accent-rgb), .28); }
.admin-security-notice strong { font-size: 15px; }
.admin-security-notice p { margin: 0; color: var(--muted); }
.user-admin-summary { margin-bottom: 20px; }
.user-admin-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); gap: 16px; }
.user-admin-card { display: grid; gap: 16px; min-width: 0; }
.user-admin-card.is-inactive { opacity: .72; }
.user-admin-card-head { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: 12px; }
.user-admin-card-head h2 { margin: 0 0 3px; font-size: 18px; }
.user-admin-card-head p { margin: 0; color: var(--muted); }
.user-admin-avatar { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 15px; background: rgba(var(--accent-rgb), .16); color: var(--accent); font-size: 20px; font-weight: 900; }
.user-admin-meta { display: grid; gap: 6px; color: var(--muted); font-size: 13px; }
.user-modal { width: min(1100px, calc(100vw - 32px)); }
.user-modal form { max-height: min(92vh, 980px); }
.user-modal-body { display: grid; gap: 20px; overflow: auto; }
.user-form-section { display: grid; gap: 14px; padding: 18px; border: 1px solid var(--border); border-radius: 16px; background: rgba(255,255,255,.018); }
.user-form-section h3 { margin: 0 0 4px; }
.user-form-section p { margin: 0; color: var(--muted); }
.section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.user-form-options { display: grid; align-content: center; gap: 10px; }
.user-password-tools { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.user-password-tools p { flex: 1 1 320px; font-size: 13px; }
.permission-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 14px; }
.permission-table { width: 100%; border-collapse: collapse; min-width: 760px; }
.permission-table th, .permission-table td { padding: 12px 14px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: middle; }
.permission-table thead th { background: var(--secondary); color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
.permission-table tbody tr:last-child th, .permission-table tbody tr:last-child td { border-bottom: 0; }
.permission-check { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; white-space: nowrap; }
.permission-check input { width: 18px; height: 18px; accent-color: var(--accent); }
.permission-na { color: var(--muted); }
.system-permission-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
.system-permission-card { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 10px; padding: 13px; border: 1px solid var(--border); border-radius: 13px; cursor: pointer; }
.system-permission-card:hover { border-color: rgba(var(--accent-rgb), .4); background: rgba(var(--accent-rgb), .05); }
.system-permission-card input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--accent); }
.system-permission-card span { display: grid; gap: 3px; }
.system-permission-card small { color: var(--muted); line-height: 1.4; }
@media (max-width: 720px) {
  .user-admin-grid { grid-template-columns: 1fr; }
  .user-admin-card-head { grid-template-columns: 44px minmax(0, 1fr); }
  .user-admin-card-head .status { grid-column: 2; justify-self: start; }
  .permission-heading { display: grid; }
  .user-password-tools { align-items: stretch; }
}

/* Orbite 3.5 — convention officielle et aperçu */
.field-help-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:8px}.field-help-actions .field-help{margin:0;flex:1 1 340px}.field-help-actions .btn{flex:0 0 auto}
@media (max-width:720px){.field-help-actions{align-items:stretch}.field-help-actions .btn{width:100%}.modal-footer #previewConventionDocumentButton{width:100%;order:-1}}

/* Orbite 3.5 — Publipostage professionnel */
.mailing-workflow-banner{display:flex;align-items:center;gap:12px;overflow-x:auto;padding:14px 18px;margin-bottom:18px}
.mailing-step{display:flex;align-items:center;gap:9px;min-width:max-content;color:var(--muted);font-size:.88rem;font-weight:700}
.mailing-step:not(:last-child)::after{content:"→";margin-left:10px;color:color-mix(in srgb,var(--muted) 45%,transparent)}
.mailing-step strong{display:grid;place-items:center;width:27px;height:27px;border-radius:999px;background:var(--active);color:var(--text)}
.mailing-step.is-active{color:var(--accent)}
.mailing-step.is-active strong{background:var(--accent);color:#07101b}
.mailing-config-grid{display:grid;grid-template-columns:1fr;gap:18px;margin-bottom:18px;align-items:start}
.mailing-config-card{padding:0;overflow:hidden}
.mailing-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:20px 22px;border-bottom:1px solid color-mix(in srgb,var(--muted) 18%,transparent)}
.mailing-card-header h2{margin:2px 0 7px}
.mailing-card-header p:last-child{margin:0;color:var(--muted);line-height:1.5}
.switch-field{display:flex;align-items:center;gap:9px;min-width:max-content;padding:8px 11px;border:1px solid color-mix(in srgb,var(--accent) 38%,transparent);border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,var(--card));font-weight:800;cursor:pointer}
.switch-field input{accent-color:var(--accent)}
.mailing-fields{padding:20px 22px}
.mailing-fields .checkbox-field{min-height:44px}
.mailing-deliberation-block{padding:0 22px 22px}
.mailing-deliberation-list{max-height:240px;overflow:auto;padding-right:6px}
.mailing-decision-own{transition:opacity .18s ease}
.mailing-decision-own.is-disabled{opacity:.42}
.mailing-association-panel{padding:0;overflow:hidden;margin-bottom:18px}
.mailing-list-header{padding:20px 22px;border-bottom:1px solid color-mix(in srgb,var(--muted) 18%,transparent)}
.mailing-association-toolbar{margin:0;border:0;border-radius:0;border-bottom:1px solid color-mix(in srgb,var(--muted) 18%,transparent)}
.mailing-association-toolbar .toolbar-search{min-width:320px;flex:1}
.mailing-association-list{height:min(54vh,650px);min-height:360px;overflow:auto;padding:10px;background:color-mix(in srgb,var(--main) 42%,var(--card))}
.mailing-association-row{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:12px 18px;align-items:center;padding:13px 15px;margin-bottom:8px;border:1px solid color-mix(in srgb,var(--muted) 17%,transparent);border-radius:12px;background:var(--card);transition:border-color .18s ease,background .18s ease}
.mailing-association-row.is-selected{border-color:color-mix(in srgb,var(--accent) 56%,transparent);background:color-mix(in srgb,var(--accent) 8%,var(--card))}
.mailing-association-select{display:flex;align-items:flex-start;gap:12px;cursor:pointer}
.mailing-association-select input{margin-top:4px;accent-color:var(--accent);width:17px;height:17px}
.mailing-association-select span{display:grid;gap:4px}
.mailing-association-select strong{font-size:.96rem}
.mailing-association-select small{color:var(--muted)}
.mailing-existing-badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}
.mailing-row-overrides{grid-column:1/-1;border-top:1px solid color-mix(in srgb,var(--muted) 16%,transparent);padding-top:10px}
.mailing-row-overrides summary{cursor:pointer;color:var(--accent);font-weight:800;font-size:.88rem;user-select:none}
.mailing-override-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:13px;padding:14px;border-radius:10px;background:color-mix(in srgb,var(--secondary) 78%,transparent)}
.mailing-override-grid .span-2{grid-column:span 2}
.mailing-control-panel{padding:0;overflow:hidden}
.mailing-control-panel>.panel-header{padding:20px 22px;border-bottom:1px solid color-mix(in srgb,var(--muted) 18%,transparent)}
.mailing-plan-results{padding:18px 22px}
.mailing-analysis-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.quality-summary-card.is-danger{border-color:rgba(248,113,113,.45);background:rgba(127,29,29,.18)}
.quality-summary-card.is-success{border-color:rgba(74,222,128,.38);background:rgba(20,83,45,.16)}
.quality-summary-card.is-warning{border-color:rgba(250,204,21,.35);background:rgba(113,63,18,.15)}
.mailing-plan-table{margin:0;max-height:560px;overflow:auto}
.mailing-plan-table td{vertical-align:top}
.mailing-plan-table td small{display:block;margin-top:5px;color:var(--muted);line-height:1.4}
.mailing-issues{display:grid;gap:5px}
.mailing-warnings{display:grid;gap:3px;margin-top:8px;color:#facc15}
.mailing-global-error{display:flex;gap:12px;align-items:center}
.status.status-danger{background:rgba(127,29,29,.28);border-color:rgba(248,113,113,.5);color:#fecaca;white-space:normal;text-align:left}
.status.status-neutral{background:color-mix(in srgb,var(--active) 75%,transparent);color:var(--muted)}
.calendar-link-group{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}

@media (max-width:1180px){
  .mailing-config-grid{grid-template-columns:1fr}
  .mailing-override-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mailing-analysis-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .mailing-card-header,.mailing-list-header,.mailing-control-panel>.panel-header{flex-direction:column;align-items:stretch}
  .mailing-existing-badges{justify-content:flex-start}
  .mailing-association-row{grid-template-columns:1fr}
  .mailing-override-grid,.mailing-analysis-summary{grid-template-columns:1fr}
  .mailing-override-grid .span-2{grid-column:auto}
  .mailing-association-list{height:62vh;min-height:320px}
}
@media print{
  .official-convention-template+.official-convention-template,.decision-template+.decision-template,.official-convention-template+.decision-template,.decision-template+.official-convention-template{break-before:page;page-break-before:always}
}


/* Courriers groupés */
.letter-workflow-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;padding:14px 18px}
.letter-editor-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:18px;align-items:start}
.letter-editor-panel,.letter-preview-panel,.letter-association-panel,.letter-control-panel{min-width:0}
.letter-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.letter-settings-grid .span-2{grid-column:span 2}
.letter-body-editor{min-height:270px;resize:vertical;line-height:1.55}
.letter-token-bar{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:10px 12px;border:1px dashed var(--line);border-radius:13px;background:color-mix(in srgb,var(--active) 55%,transparent)}
.letter-token-bar>span{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.letter-preview-panel{position:sticky;top:18px}
.letter-preview-surface{display:flex;justify-content:center;align-items:flex-start;min-height:640px;padding:18px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(0,0,0,.08));overflow:auto}
.letter-preview-sheet{display:flex;justify-content:center;align-items:flex-start;min-width:0}
.letter-page-preview{width:210mm;min-height:297mm;zoom:.43;transform:none;margin:0;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.letter-association-panel,.letter-control-panel{margin-top:18px}
.letter-list-header{align-items:flex-start}
.letter-association-toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,300px);gap:12px;margin-bottom:12px}
.letter-association-list{height:520px;overflow:auto;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--secondary) 78%,transparent)}
.letter-association-row{display:grid;grid-template-columns:minmax(280px,1fr) minmax(260px,1.2fr) auto;gap:14px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line);transition:.16s ease}
.letter-association-row:last-child{border-bottom:0}
.letter-association-row.is-selected{background:rgba(var(--accent-rgb),.10);box-shadow:inset 3px 0 0 var(--accent)}
.letter-association-row.has-warning{background:rgba(127,29,29,.08)}
.letter-association-select{display:flex;align-items:flex-start;gap:11px;min-width:0;cursor:pointer}
.letter-association-select input{margin-top:4px}
.letter-association-select span,.letter-address-summary{display:grid;gap:4px;min-width:0}
.letter-association-select strong,.letter-address-summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.letter-association-select small,.letter-address-summary small{color:var(--muted)}
.letter-mailing-status{display:grid;gap:14px}

.letter-page{box-sizing:border-box;width:210mm;min-height:297mm;padding:20mm 20mm 22mm;color:#111;background:#fff;font-family:Arial,Helvetica,sans-serif;font-size:11pt;line-height:1.5}
.letter-document-header{display:grid;grid-template-columns:1fr 1fr;gap:18mm;min-height:55mm}
.letter-sender-block,.letter-recipient-block{display:flex;flex-direction:column;gap:1.5mm}
.letter-sender-block strong{font-size:12pt;text-transform:uppercase;letter-spacing:.03em}
.letter-sender-block span{font-size:9.7pt}
.letter-recipient-block{justify-self:end;width:82mm;padding-top:11mm;font-size:10.8pt}
.letter-recipient-block.is-incomplete{border:1px dashed #b42318;padding:8mm 5mm 5mm}
.letter-place-date{text-align:right;margin:8mm 0 10mm}
.letter-reference-block{margin-bottom:10mm}
.letter-reference-block p{margin:0 0 2mm}
.letter-document-body p{margin:0 0 6mm;text-align:justify}
.letter-document-body p:first-child{text-align:left}
.letter-signature-block{width:78mm;margin:18mm 0 0 auto;text-align:center}
.letter-signature-block p{margin:0 0 12mm;white-space:normal}
.letter-signature-block strong{display:block}

@media (max-width:1180px){
  .letter-editor-grid{grid-template-columns:1fr}
  .letter-preview-panel{position:static}
  .letter-preview-surface{min-height:560px}
  .letter-page-preview{zoom:.48;transform:none;margin:0}
}
@media (max-width:760px){
  .letter-workflow-banner{align-items:stretch;flex-direction:column}
  .letter-settings-grid,.letter-association-toolbar{grid-template-columns:1fr}
  .letter-settings-grid .span-2{grid-column:auto}
  .letter-list-header{flex-direction:column;align-items:stretch}
  .letter-association-row{grid-template-columns:1fr}
  .letter-address-summary span{white-space:normal}
  .letter-preview-surface{display:none}
}
@media print{
  body.print-mode .print-area:has(.letter-page){margin:0!important;padding:0!important}
  .letter-page{page-break-after:always;break-after:page;margin:0!important}
  .letter-page:last-child{page-break-after:auto;break-after:auto}
}


/* Correctif aperçu / impression des courriers groupés */
.letter-preview-modal{width:min(1040px,96vw);max-width:1040px}
.letter-preview-modal form{height:min(94vh,980px);max-height:94vh}
.letter-preview-dialog-body{padding:18px;background:color-mix(in srgb,var(--secondary) 82%,#000 18%)}
.letter-preview-dialog-surface{display:flex;justify-content:center;align-items:flex-start;min-height:0;padding:16px;overflow:auto;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,rgba(255,255,255,.05),rgba(0,0,0,.12))}
.letter-preview-dialog-page{flex:0 0 auto}
.letter-preview-dialog-page>.letter-page{margin:0;box-shadow:0 22px 70px rgba(0,0,0,.38)}
#orbiteLetterPrintFrame{display:block!important}
@media(max-width:900px){
  .letter-preview-dialog-page>.letter-page{zoom:.72}
}


/* Orbite 3.9 — contrôle instantané de disponibilité du publipostage */
.mailing-availability-card{grid-column:1/-1;border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:color-mix(in srgb,var(--secondary) 82%,transparent);transition:border-color .18s ease,background .18s ease}
.mailing-availability-card.is-available{border-color:rgba(74,222,128,.46);background:rgba(20,83,45,.18)}
.mailing-availability-card.is-occupied,.mailing-availability-card.is-all-occupied,.mailing-availability-card.is-invalid{border-color:rgba(248,113,113,.52);background:rgba(127,29,29,.2)}
.mailing-availability-card.is-suggestion{border-color:rgba(96,165,250,.5);background:rgba(30,64,175,.16)}
.mailing-availability-card.is-incomplete,.mailing-availability-card.is-disabled{border-color:color-mix(in srgb,var(--muted) 32%,transparent);background:color-mix(in srgb,var(--active) 58%,transparent)}
.mailing-availability-main{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:center}
.mailing-availability-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:color-mix(in srgb,var(--active) 84%,transparent);font-size:1rem;font-weight:950}
.is-available .mailing-availability-icon{background:rgba(34,197,94,.2);color:#bbf7d0}
.is-suggestion .mailing-availability-icon{background:rgba(59,130,246,.22);color:#bfdbfe}
.is-occupied .mailing-availability-icon,.is-all-occupied .mailing-availability-icon,.is-invalid .mailing-availability-icon{background:rgba(239,68,68,.23);color:#fecaca}
.mailing-availability-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.mailing-availability-title strong{font-size:.95rem}
.mailing-availability-main p{margin:4px 0 0;color:var(--muted);line-height:1.45}
.mailing-availability-main small{display:block;margin-top:5px;color:var(--text);font-weight:750}
.mailing-availability-badge,.mailing-availability-shared{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--muted) 28%,transparent);font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.035em}
.is-available .mailing-availability-badge{border-color:rgba(74,222,128,.42);color:#bbf7d0;background:rgba(20,83,45,.22)}
.is-suggestion .mailing-availability-badge{border-color:rgba(96,165,250,.45);color:#bfdbfe;background:rgba(30,64,175,.24)}
.is-occupied .mailing-availability-badge,.is-all-occupied .mailing-availability-badge,.is-invalid .mailing-availability-badge{border-color:rgba(248,113,113,.48);color:#fecaca;background:rgba(127,29,29,.26)}
.mailing-availability-shared{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 42%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent)}
.mailing-availability-conflicts{display:grid;gap:7px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(248,113,113,.26)}
.mailing-availability-conflicts>div{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:9px;background:rgba(0,0,0,.12)}
.mailing-availability-conflicts span{color:var(--muted);font-size:.83rem;text-align:right}
.mailing-availability-batch-warning{margin:12px 0 0;padding:10px 12px;border-radius:10px;border:1px solid rgba(250,204,21,.34);background:rgba(113,63,18,.16);color:#fde68a;font-size:.84rem;line-height:1.45}
.mailing-row-availability{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--active) 58%,transparent)}
.mailing-row-availability strong{font-size:.84rem}
.mailing-row-availability span{color:var(--muted);font-size:.8rem;text-align:right}
.mailing-row-availability.is-available{border-color:rgba(74,222,128,.36);background:rgba(20,83,45,.13)}
.mailing-row-availability.is-suggestion{border-color:rgba(96,165,250,.38);background:rgba(30,64,175,.13)}
.mailing-row-availability.is-occupied,.mailing-row-availability.is-all-occupied,.mailing-row-availability.is-invalid{border-color:rgba(248,113,113,.42);background:rgba(127,29,29,.15)}
@media(max-width:760px){.mailing-availability-main{grid-template-columns:34px 1fr}.mailing-availability-main .btn{grid-column:1/-1;width:100%}.mailing-availability-conflicts>div,.mailing-row-availability{align-items:flex-start;flex-direction:column}.mailing-availability-conflicts span,.mailing-row-availability span{text-align:left}}


/* Orbite 3.9 — attribution automatique et propositions de salles */
.mailing-suggestions{display:grid;gap:14px;margin-top:14px;padding-top:14px;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent)}
.mailing-suggestion-group{display:grid;gap:8px}
.mailing-suggestion-group h4{margin:0;font-size:.84rem;color:var(--text)}
.mailing-suggestion-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}
.mailing-suggestion-button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:10px 11px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--active) 66%,transparent);color:var(--text);text-align:left;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}
.mailing-suggestion-button:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 62%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--active))}
.mailing-suggestion-button strong{font-size:.8rem;white-space:nowrap}
.mailing-suggestion-button span{font-size:.76rem;color:var(--muted);text-align:right}
@media(max-width:760px){.mailing-suggestion-grid{grid-template-columns:1fr}.mailing-suggestion-button{align-items:flex-start;flex-direction:column}.mailing-suggestion-button span{text-align:left}}


/* Orbite 4.0 — emploi du temps quotidien multi-salles */
.calendar-day-help {
  margin: 0 0 14px;
  padding: 11px 14px;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 12px;
  color: var(--muted);
  background: rgba(var(--accent-rgb), .07);
  font-size: 13px;
  line-height: 1.5;
}
.calendar-day-help strong { color: var(--text); }
.calendar-day[data-open-day-planner-date] { cursor: pointer; }
.calendar-day[data-open-day-planner-date]:hover,
.calendar-day[data-open-day-planner-date]:focus-visible {
  border-color: rgba(var(--accent-rgb), .72);
  background: rgba(var(--accent-rgb), .09);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .12);
  outline: none;
}
.calendar-day-planner-hint {
  position: absolute;
  top: 10px;
  right: 8px;
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .04em;
  opacity: 0;
  transition: opacity .15s ease;
}
.calendar-day:hover .calendar-day-planner-hint,
.calendar-day:focus-visible .calendar-day-planner-hint { opacity: 1; }

.day-planner-modal { width: min(1500px, 98vw); max-height: 96vh; }
.day-planner-modal form { height: min(94vh, 1050px); max-height: 94vh; }
.day-planner-header { align-items: flex-start; }
.day-planner-header p:last-child { margin: 6px 0 0; color: var(--muted); }
.day-planner-toolbar {
  display: grid;
  grid-template-columns: auto minmax(160px, .5fr) minmax(230px, 1fr) auto;
  gap: 12px;
  align-items: end;
  padding: 14px 24px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--surface) 90%, var(--accent) 10%);
}
.day-planner-navigation { display: flex; gap: 8px; flex-wrap: wrap; }
.day-planner-toolbar .filter-field { margin: 0; }
.day-planner-toolbar input,
.day-planner-toolbar select { min-height: 40px; }
.day-planner-body { display: grid; gap: 14px; min-height: 0; }
.day-planner-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.day-planner-stat {
  display: grid;
  gap: 4px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
}
.day-planner-stat span { color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.day-planner-stat strong { font-size: 21px; overflow-wrap: anywhere; }
.day-planner-stat small { color: var(--muted); }
.day-planner-legend { display: flex; flex-wrap: wrap; gap: 14px; color: var(--muted); font-size: 12px; }
.day-planner-legend span { display: inline-flex; align-items: center; gap: 6px; }
.legend-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--accent); }
.legend-dot.is-booked { background: #74C69D; }
.legend-dot.is-waiting { background: #FFD27D; }
.legend-dot.is-free { background: transparent; border: 2px solid #74C69D; }
.legend-dot.is-conflict { background: #FF8585; }
.day-planner-scroll {
  min-height: 420px;
  max-height: 60vh;
  overflow: auto;
  border: 1px solid var(--line-strong);
  border-radius: 16px;
  background: rgba(0,0,0,.10);
}
.day-planner-grid {
  --planner-slot-height: 18px;
  display: grid;
  grid-template-columns: 78px repeat(var(--planner-room-count), minmax(190px, 1fr));
  grid-template-rows: 62px repeat(var(--planner-slot-count), var(--planner-slot-height));
  min-width: max(100%, calc(78px + var(--planner-room-count) * 190px));
  position: relative;
  isolation: isolate;
}
.day-planner-corner,
.day-planner-room-header {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line-strong);
  background: color-mix(in srgb, var(--surface) 94%, black 6%);
}
.day-planner-corner { left: 0; z-index: 40; justify-content: center; }
.day-planner-room-header { border-top: 4px solid var(--room-color); }
.day-planner-room-header div { display: grid; gap: 2px; min-width: 0; }
.day-planner-room-header strong,
.day-planner-room-header small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.day-planner-room-header small { color: var(--muted); font-size: 11px; }
.day-planner-time {
  position: sticky;
  left: 0;
  z-index: 20;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 4px;
  border-right: 1px solid var(--line-strong);
  border-top: 1px solid var(--line);
  color: var(--muted);
  background: var(--surface);
  font-size: 11px;
}
.day-planner-room-lane {
  position: relative;
  z-index: 1;
  border-right: 1px solid var(--line);
  background:
    repeating-linear-gradient(to bottom,
      transparent 0,
      transparent calc(var(--planner-slot-height) * 2 - 1px),
      rgba(255,255,255,.035) calc(var(--planner-slot-height) * 2 - 1px),
      rgba(255,255,255,.035) calc(var(--planner-slot-height) * 2)),
    repeating-linear-gradient(to bottom,
      transparent 0,
      transparent calc(var(--planner-slot-height) * 4 - 1px),
      rgba(255,255,255,.11) calc(var(--planner-slot-height) * 4 - 1px),
      rgba(255,255,255,.11) calc(var(--planner-slot-height) * 4));
}
.day-planner-room-lane.is-free { background-color: rgba(116,198,157,.035); }
.day-planner-free-label {
  position: sticky;
  top: 76px;
  display: block;
  width: fit-content;
  margin: 16px auto;
  padding: 5px 9px;
  border: 1px solid rgba(116,198,157,.32);
  border-radius: 999px;
  color: #A9EDC2;
  background: rgba(116,198,157,.08);
  font-size: 10px;
  font-weight: 800;
  pointer-events: none;
}
.day-planner-booking {
  z-index: 10;
  min-height: 30px;
  margin: 2px 5px;
  padding: 7px 8px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--room-color) 70%, white);
  border-left: 5px solid var(--room-color);
  border-radius: 10px;
  color: var(--room-text-color);
  background: color-mix(in srgb, var(--room-color) 86%, #111827 14%);
  box-shadow: 0 5px 16px rgba(0,0,0,.22);
  text-align: left;
  cursor: pointer;
}
.day-planner-booking:hover,
.day-planner-booking:focus-visible { z-index: 18; filter: brightness(1.08); outline: 2px solid rgba(255,255,255,.75); }
.day-planner-booking strong,
.day-planner-booking span,
.day-planner-booking small { width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.day-planner-booking strong { font-size: 12px; }
.day-planner-booking span { font-size: 11px; font-weight: 800; }
.day-planner-booking small { opacity: .85; font-size: 10px; }
.day-planner-booking.reservation-status-attente { color: #1F2937; background: #FFD27D !important; }
.day-planner-booking.has-conflict { border-color: #FF8585; box-shadow: 0 0 0 2px rgba(255,133,133,.42), 0 5px 16px rgba(0,0,0,.22); }
.day-planner-booking em { align-self: flex-end; padding: 2px 5px; border-radius: 999px; color: white; background: #B91C1C; font-size: 9px; font-style: normal; font-weight: 900; text-transform: uppercase; }
.day-planner-footer-note { color: var(--muted); font-size: 12px; }

@media (max-width: 1050px) {
  .day-planner-toolbar { grid-template-columns: 1fr 1fr; }
  .day-planner-navigation { grid-column: 1 / -1; }
  .day-planner-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 650px) {
  .day-planner-modal { width: 100vw; max-width: 100vw; max-height: 100vh; border-radius: 0; }
  .day-planner-modal form { height: 100vh; max-height: 100vh; }
  .day-planner-toolbar { grid-template-columns: 1fr; padding: 12px 14px; }
  .day-planner-navigation { grid-column: auto; }
  .day-planner-toolbar .btn { width: 100%; }
  .day-planner-summary { grid-template-columns: 1fr 1fr; }
  .day-planner-body { padding: 14px; }
  .calendar-day-planner-hint { display: none; }
}


/* Orbite 4.1 — Boîtes aux lettres */
.mailbox-page-heading{margin-bottom:18px}.mailbox-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.mailbox-stat{padding:16px 18px;border:1px solid color-mix(in srgb,var(--accent) 18%,transparent);border-radius:18px;background:linear-gradient(145deg,color-mix(in srgb,var(--card) 94%,white 6%),var(--card));box-shadow:0 12px 28px rgba(0,0,0,.14)}.mailbox-stat span,.mailbox-stat small{display:block;color:var(--muted)}.mailbox-stat strong{display:block;margin:3px 0;font-size:1.8rem;line-height:1}.mailbox-stat.is-free strong{color:#7bd9a5}.mailbox-stat.is-occupied strong{color:var(--accent)}.mailbox-stat.is-warning strong{color:#f2bd6a}.mailbox-toolbar{position:sticky;top:76px;z-index:8;margin-bottom:12px;backdrop-filter:blur(16px)}.mailbox-toolbar .toolbar-search{min-width:min(520px,100%);flex:1}.mailbox-legend{display:flex;gap:18px;align-items:center;margin:12px 2px 16px;color:var(--muted);font-size:.88rem}.mailbox-legend span{display:inline-flex;align-items:center;gap:7px}.mailbox-legend-dot{width:10px;height:10px;border-radius:50%;background:var(--muted)}.mailbox-legend-dot.is-free{background:#58c88a}.mailbox-legend-dot.is-occupied{background:var(--accent)}.mailbox-legend-dot.is-conflict{background:#ee6b72}.mailbox-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:10px;padding-bottom:34px}.mailbox-card{position:relative;min-width:0;min-height:112px;padding:10px 9px 11px;border:1px solid color-mix(in srgb,var(--muted) 22%,transparent);border-radius:14px;background:linear-gradient(145deg,color-mix(in srgb,var(--card) 95%,white 5%),var(--card));color:var(--text);text-align:left;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease;overflow:hidden}.mailbox-card:hover,.mailbox-card:focus-visible{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 64%,transparent);box-shadow:0 12px 24px rgba(0,0,0,.22);outline:none}.mailbox-card.is-free{background:linear-gradient(145deg,color-mix(in srgb,var(--card) 92%,#58c88a 8%),var(--card))}.mailbox-card.is-occupied{border-color:color-mix(in srgb,var(--accent) 38%,transparent)}.mailbox-card.is-conflict{border-color:#ee6b72;background:linear-gradient(145deg,color-mix(in srgb,var(--card) 89%,#ee6b72 11%),var(--card))}.mailbox-door{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 8px;margin-bottom:7px;border:1px solid color-mix(in srgb,var(--muted) 30%,transparent);border-radius:8px;background:color-mix(in srgb,var(--main) 74%,transparent);box-shadow:inset 0 -2px 0 rgba(255,255,255,.03)}.mailbox-door i{width:15px;height:3px;border-radius:8px;background:color-mix(in srgb,var(--muted) 70%,transparent)}.mailbox-door b{font-size:.9rem;letter-spacing:.08em}.mailbox-card-status{display:block;margin-bottom:4px;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.mailbox-card.is-free .mailbox-card-status{color:#7bd9a5}.mailbox-card.is-occupied .mailbox-card-status{color:var(--accent)}.mailbox-card.is-conflict .mailbox-card-status{color:#ff9b9f}.mailbox-card>strong{display:-webkit-box;overflow:hidden;font-size:.78rem;line-height:1.24;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mailbox-empty{grid-column:1/-1}.mailbox-dialog{width:min(760px,calc(100vw - 30px))}.mailbox-dialog .modal-header p{margin:4px 0 0;color:var(--muted)}.mailbox-free-message{display:flex;align-items:center;gap:18px;padding:18px;border:1px solid color-mix(in srgb,#58c88a 30%,transparent);border-radius:16px;background:color-mix(in srgb,var(--card) 92%,#58c88a 8%)}.mailbox-large-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:color-mix(in srgb,#58c88a 16%,transparent);font-size:1.65rem}.mailbox-free-message h3,.mailbox-free-message p{margin:0}.mailbox-free-message p{margin-top:4px;color:var(--muted)}.mailbox-current-section h3,.mailbox-assignment-section h3{margin-top:0}.mailbox-current-list{display:grid;gap:10px}.mailbox-current-card{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px;border:1px solid color-mix(in srgb,var(--accent) 24%,transparent);border-radius:15px;background:color-mix(in srgb,var(--card) 94%,white 6%)}.mailbox-current-card strong,.mailbox-current-card span,.mailbox-current-card small{display:block}.mailbox-current-card span,.mailbox-current-card small{margin-top:3px;color:var(--muted)}.mailbox-current-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.mailbox-assignment-section{margin-top:20px;padding-top:20px;border-top:1px solid color-mix(in srgb,var(--muted) 18%,transparent)}.mailbox-dialog-search{display:flex;margin:12px 0}.mailbox-assignment-results{display:grid;gap:8px;max-height:340px;overflow:auto;padding-right:4px}.mailbox-association-choice{display:flex;align-items:center;justify-content:space-between;gap:15px;width:100%;padding:12px 14px;border:1px solid color-mix(in srgb,var(--muted) 20%,transparent);border-radius:12px;background:color-mix(in srgb,var(--card) 96%,white 4%);color:var(--text);text-align:left;cursor:pointer}.mailbox-association-choice:hover,.mailbox-association-choice:focus-visible{border-color:var(--accent);outline:none}.mailbox-association-choice span,.mailbox-association-choice strong,.mailbox-association-choice small{display:block}.mailbox-association-choice small{margin-top:3px;color:var(--muted)}.mailbox-association-choice>b{color:var(--accent);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}.mailbox-readonly-note{padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--card) 92%,white 8%);color:var(--muted)}.mailbox-form-actions{display:flex;align-items:end;gap:8px;flex-wrap:wrap;padding-top:23px}.mailbox-availability-hint{margin-top:-4px}.mailbox-availability-hint.is-success{color:#7bd9a5}.mailbox-availability-hint.is-error{color:#ff9b9f}.domiciliation-details.is-disabled .mailbox-form-actions{opacity:.5;pointer-events:none}
@media(max-width:1450px){.mailbox-grid{grid-template-columns:repeat(8,minmax(0,1fr))}}
@media(max-width:1150px){.mailbox-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.mailbox-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.mailbox-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.mailbox-card{min-height:105px}.mailbox-stats{grid-template-columns:1fr 1fr}.mailbox-toolbar{position:static}.mailbox-current-card{align-items:flex-start;flex-direction:column}.mailbox-current-actions{justify-content:flex-start}.mailbox-form-actions{padding-top:0}}
@media(max-width:430px){.mailbox-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mailbox-stats{grid-template-columns:1fr}}

/* Orbite 4.2 — bibliothèque de logos et insertion dans les documents */
.logo-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(360px, .85fr);
  gap: 18px;
  margin-bottom: 22px;
}
.logo-import-panel,
.logo-settings-panel { padding: 20px; }
.logo-drop-zone {
  min-height: 190px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 18px;
  padding: 24px;
  border: 1.5px dashed rgba(var(--accent-rgb), .48);
  border-radius: 18px;
  background:
    radial-gradient(circle at 8% 16%, rgba(var(--accent-rgb), .13), transparent 34%),
    rgba(255,255,255,.025);
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.logo-drop-zone:hover,
.logo-drop-zone.is-dragover {
  border-color: var(--accent);
  background: rgba(var(--accent-rgb), .11);
  transform: translateY(-1px);
}
.logo-drop-zone h2 { margin: 0 0 6px; font-size: 19px; }
.logo-drop-zone p { margin: 0; color: var(--muted); line-height: 1.55; }
.logo-drop-icon {
  width: 58px;
  height: 58px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  color: var(--accent-hover);
  background: rgba(var(--accent-rgb), .16);
  font-size: 30px;
  font-weight: 700;
}
.logo-transparent-option {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: 15px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
}
.logo-transparent-option input { margin-top: 4px; }
.logo-transparent-option span { display: grid; gap: 4px; }
.logo-transparent-option small { color: var(--muted); line-height: 1.45; }
.logo-server-status { margin: 14px 2px 0; color: var(--muted); font-size: 13px; }
.logo-server-status.is-ok { color: #7bd7a6; }
.logo-server-status.is-error { color: #ff9b9b; }
.logo-server-status.is-pending { color: var(--accent-hover); }
.logo-settings-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 16px;
}
.logo-inline-control,
.logo-opacity-control { display: flex; align-items: center; gap: 10px; }
.logo-inline-control input { width: 100%; }
.logo-inline-control span,
.logo-opacity-control strong { color: var(--muted); white-space: nowrap; }
.logo-opacity-control input { width: 100%; accent-color: var(--accent); }
.logo-document-options {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  margin: 0 0 18px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
}
.logo-document-options label { display: flex; align-items: center; gap: 8px; }
.logo-library-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  margin: 8px 2px 14px;
}
.logo-library-heading h2 { margin: 0; }
.logo-library-heading p { margin: 0; color: var(--muted); }
.logo-library-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 14px;
}
.logo-library-grid > .empty-state { grid-column: 1 / -1; }
.logo-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: linear-gradient(145deg, rgba(255,255,255,.045), rgba(255,255,255,.018));
  box-shadow: 0 10px 28px rgba(0,0,0,.12);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.logo-card:hover { transform: translateY(-2px); border-color: rgba(var(--accent-rgb), .35); }
.logo-card.is-selected {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px rgba(var(--accent-rgb), .22), 0 14px 34px rgba(0,0,0,.18);
}
.logo-card-preview {
  height: 170px;
  display: grid;
  place-items: center;
  padding: 20px;
  background:
    linear-gradient(45deg, rgba(255,255,255,.05) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.05) 75%),
    linear-gradient(45deg, rgba(255,255,255,.05) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.05) 75%),
    rgba(255,255,255,.025);
  background-size: 20px 20px;
  background-position: 0 0, 10px 10px;
}
.logo-card-preview img { max-width: 100%; max-height: 100%; object-fit: contain; filter: drop-shadow(0 7px 13px rgba(0,0,0,.18)); }
.logo-card-body {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 15px 16px 10px;
}
.logo-card-body > div { min-width: 0; display: grid; gap: 5px; }
.logo-card-body strong,
.logo-card-body small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.logo-card-body small { color: var(--muted); }
.logo-selected-badge {
  flex: none;
  padding: 5px 8px;
  border-radius: 999px;
  color: var(--accent-hover);
  background: rgba(var(--accent-rgb), .16);
  font-size: 11px;
  font-weight: 700;
}
.logo-card-actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 10px 16px 16px; }
.logo-card-actions .btn { flex: 1 1 auto; }

/* Logo injecté dans les décisions et conventions */
.decision-page,
.official-convention-page { position: relative; }
.orbite-document-logo {
  --orbite-logo-width: 28mm;
  --orbite-logo-opacity: 1;
  position: absolute;
  z-index: 8;
  width: var(--orbite-logo-width);
  max-height: 48mm;
  opacity: var(--orbite-logo-opacity);
  pointer-events: none;
  user-select: none;
}
.orbite-document-logo img { display: block; width: 100%; height: auto; max-height: 48mm; object-fit: contain; }
.orbite-document-logo.is-background { z-index: 0; }
.orbite-document-logo.is-background img { filter: none; }
.orbite-document-logo--top-left { top: 10mm; left: 14mm; }
.orbite-document-logo--top-center { top: 10mm; left: 50%; transform: translateX(-50%); }
.orbite-document-logo--top-right { top: 10mm; right: 14mm; }
.orbite-document-logo--bottom-left { bottom: 10mm; left: 14mm; }
.orbite-document-logo--bottom-center { bottom: 10mm; left: 50%; transform: translateX(-50%); }
.orbite-document-logo--bottom-right { right: 14mm; bottom: 10mm; }
.orbite-document-logo--center { top: 50%; left: 50%; transform: translate(-50%, -50%); }
.orbite-document-logo.is-background.orbite-document-logo--center { width: max(var(--orbite-logo-width), 58mm); }

@media (max-width: 1080px) {
  .logo-layout { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .logo-drop-zone { grid-template-columns: 1fr; text-align: center; }
  .logo-drop-icon { margin: 0 auto; }
  .logo-settings-grid { grid-template-columns: 1fr; }
  .logo-library-heading { align-items: flex-start; flex-direction: column; }
}
.logo-card-body { flex-direction: column; align-items: stretch; }
.logo-card-body .logo-selected-badge { align-self: flex-start; }
.logo-card-preview { overflow: hidden; border-bottom: 1px solid var(--line); }
.logo-card-body,
.logo-card-actions { position: relative; z-index: 1; background: color-mix(in srgb, var(--surface) 94%, transparent); }
.decision-page > :not(.orbite-document-logo),
.official-convention-page > :not(.orbite-document-logo) { position: relative; z-index: 1; }

/* Orbite 4.2 — import MDA 2025 : BAL, salles annuelles et filtres */
.annual-room-details.is-disabled {
  opacity: .58;
}

.annual-room-details.is-disabled input,
.annual-room-details.is-disabled select,
.annual-room-details.is-disabled textarea {
  cursor: not-allowed;
}

.association-service-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .32rem;
  margin-top: .35rem;
}

.association-service-badge {
  display: inline-flex;
  align-items: center;
  min-height: 1.35rem;
  padding: .1rem .45rem;
  border: 1px solid var(--border-color, #d8dee8);
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  line-height: 1.1;
  color: #1f2937;
  background: var(--surface-soft, #f4f6f9);
}

.association-service-badge.is-bal {
  color: #315b84;
  background: #eef6ff;
  border-color: #bfd9f6;
}

.association-service-badge.is-sal {
  color: #2d6a4f;
  background: #eefbf3;
  border-color: #bfe4ca;
}

.association-service-badge.is-budget {
  color: #7a5610;
  background: #fff8e7;
  border-color: #ead49a;
}


/* Orbite 4.2 — validation directe des règlements */
.payment-row.is-unpaid { box-shadow: inset 4px 0 0 rgba(255, 91, 111, .72); }
.payment-row.is-paid { box-shadow: inset 4px 0 0 rgba(66, 211, 146, .72); }
.payment-amounts.is-unpaid strong { color: #ff7689; }
.payment-amounts.is-paid strong { color: #65e3a4; }
.payment-inline-toggle {
  display: inline-flex; align-items: center; gap: 8px; margin: 0 8px 8px 0; padding: 7px 10px;
  border: 1px solid rgba(255, 91, 111, .34); border-radius: 999px;
  color: #ffd4da; background: rgba(255, 91, 111, .11); font-size: 12px; font-weight: 900; cursor: pointer;
}
.payment-inline-toggle.is-paid { color: #c9ffe1; border-color: rgba(66, 211, 146, .34); background: rgba(66, 211, 146, .14); }
.payment-inline-toggle input { width: 17px; height: 17px; margin: 0; accent-color: #42d392; cursor: pointer; }
.payment-inline-toggle + .status { margin-right: 7px; }

.payment-inline-toggle:has(input:disabled) { opacity: .7; cursor: not-allowed; }
.payment-inline-toggle input:disabled { cursor: not-allowed; }


/* Référentiel officiel des tarifs et salles 2026 */
.tariff-filter-panel{display:grid;grid-template-columns:minmax(260px,1.7fr) repeat(5,minmax(150px,1fr));gap:12px;align-items:end}
.tariff-source-notice{margin:0 0 16px;padding:14px 16px;border:1px solid var(--border-color,#d9e1ea);border-radius:14px;background:var(--surface-soft,#f7f9fc);line-height:1.5}
.tariff-table-panel{overflow:auto}.tariff-table-panel table{min-width:1220px}.tariff-table-panel td small{display:block;margin-top:4px;color:var(--text-muted,#64748b);max-width:340px}
.tariff-selection-section{border:1px solid rgba(59,130,246,.28);background:linear-gradient(180deg,rgba(59,130,246,.06),transparent)}
.tariff-selection-info{display:flex;flex-direction:column;gap:5px;padding:12px 14px;border:1px solid var(--border-color,#d9e1ea);border-radius:12px;background:var(--surface-soft,#f7f9fc);line-height:1.45}
.tariff-selection-info strong{font-size:.96rem}.tariff-selection-info span,.tariff-selection-info small{color:var(--text-muted,#64748b)}
.room-equipment{font-size:.86rem;line-height:1.45;color:var(--text-muted,#64748b)}
@media(max-width:1180px){.tariff-filter-panel{grid-template-columns:repeat(3,minmax(180px,1fr))}.tariff-filter-panel .toolbar-search{grid-column:1/-1}}
@media(max-width:720px){.tariff-filter-panel{grid-template-columns:1fr}.tariff-filter-panel .toolbar-search{grid-column:auto}}


/* Orbite 4.6 — Demandes de location de salle */
.status-warning { --status-color: var(--warning); }
.status-neutral { --status-color: var(--muted); }
.room-request-toolbar { grid-template-columns: minmax(260px, 1fr) minmax(190px, 240px) minmax(150px, 200px); }
.room-request-modal { width: min(1080px, calc(100vw - 32px)); }
.room-request-slot-list { display: grid; gap: 14px; }
.room-request-slot { border: 1px solid var(--line); border-radius: 14px; background: color-mix(in srgb, var(--panel) 88%, transparent); padding: 14px; }
.room-request-slot > header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.room-request-slot > header strong { font-size: .95rem; }
.room-request-slot-heading { align-items: center; gap: 16px; }
.room-request-remove-slot { width: 32px; height: 32px; }
.room-request-table-panel table { min-width: 1250px; }
.room-request-slot-summaries { display: grid; gap: 8px; min-width: 390px; }
.room-request-slot-summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; line-height: 1.35; padding-bottom: 6px; border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent); }
.room-request-slot-summary:last-child { border-bottom: 0; padding-bottom: 0; }
.room-request-slot-summary strong { font-weight: 700; }
.room-request-slot-actions { display: inline-flex; gap: 6px; flex: 0 0 auto; }
.room-request-workflow-actions { min-width: 220px; flex-wrap: wrap; }
.room-request-table-panel td small { display: block; margin-top: 4px; color: var(--muted); }
@media (max-width: 900px) {
  .room-request-toolbar { grid-template-columns: 1fr; }
  .room-request-slot .form-grid { grid-template-columns: 1fr; }
  .room-request-slot-summary { align-items: flex-start; flex-direction: column; }
}


/* Orbite 4.6 — tarification automatique des demandes de location */
.room-request-tariff-card {
  display: grid;
  gap: 5px;
  padding: 12px 14px;
  border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line));
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 7%, var(--panel));
}
.room-request-tariff-card strong,
.room-request-tariff-card span,
.room-request-tariff-card small { display: block; }
.room-request-tariff-card > span,
.room-request-tariff-card > small { color: var(--muted); }
.room-request-tariff-card.is-missing {
  border-color: color-mix(in srgb, #d99a18 55%, var(--line));
  background: color-mix(in srgb, #d99a18 8%, var(--panel));
}
.room-request-tariff-card.is-included {
  border-style: dashed;
}
.room-request-price-metrics {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: 4px;
  font-weight: 700;
}
.room-request-price-metrics span:last-child { font-size: 1.05rem; color: var(--text); }
.room-request-pricing-summary {
  margin-top: 16px;
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(280px, 1.4fr);
  gap: 14px;
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--line));
  border-radius: 14px;
  background: color-mix(in srgb, var(--accent) 8%, var(--panel));
}
.room-request-pricing-summary > div { display: grid; gap: 5px; align-content: center; }
.room-request-pricing-summary > div:first-child strong { font-size: 1.45rem; }
.room-request-pricing-summary small { color: var(--muted); }
.text-warning { color: #d99a18 !important; }
@media (max-width: 760px) {
  .room-request-pricing-summary { grid-template-columns: 1fr; }
}

/* Orbite 4.6 — restriction optionnelle par mairie dans les comptes */
.user-mairie-restriction-section { border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent); border-radius: 16px; padding: 18px; background: color-mix(in srgb, var(--accent) 6%, transparent); }
.user-mairie-restriction-section select:disabled { opacity: .62; cursor: not-allowed; }
.user-admin-meta span:last-child { font-weight: 700; }


/* Module Régie de recettes — Orbite 4.6 */
.regie-info-banner { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:18px; padding:18px 20px; border-color:rgba(var(--accent-rgb),.28); background:linear-gradient(135deg,rgba(var(--accent-rgb),.11),rgba(255,255,255,.025)); }
.regie-info-banner strong { font-size:16px; }
.regie-info-banner p { margin:5px 0 0; color:var(--muted); }
.regie-info-banner > span { flex:0 0 auto; padding:8px 12px; border:1px solid rgba(var(--accent-rgb),.32); border-radius:999px; color:var(--accent); font-weight:900; letter-spacing:.06em; }
.regie-summary-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }
.regie-toolbar { display:grid; grid-template-columns:minmax(280px,1fr) 190px 230px; gap:12px; margin-bottom:18px; }
.regie-table-panel { overflow-x:auto; }
.regie-table { min-width:1420px; }
.regie-table td small { display:block; margin-top:4px; color:var(--muted); }
.regie-total-cell strong { color:var(--accent); font-size:16px; }
.regie-actions { min-width:340px; }
.regie-status-warning { color:var(--warning); border-color:rgba(255,210,125,.25); background:rgba(255,210,125,.08); }
.regie-status-success { color:#86efac; border-color:rgba(74,222,128,.28); background:rgba(74,222,128,.08); }
.regie-status-finance { color:#c4b5fd; border-color:rgba(167,139,250,.32); background:rgba(167,139,250,.09); }
.regie-status-neutral { color:var(--muted); }
.regie-finance-visa { display:block; margin-top:7px; color:#c4b5fd; font-weight:800; }
.regie-modal { width:min(940px,calc(100vw - 32px)); }
.regie-form-section { padding:18px; margin-bottom:16px; border:1px solid var(--line); border-radius:var(--radius-md); background:rgba(255,255,255,.02); }
.regie-form-section:last-child { margin-bottom:0; }
.regie-form-section h3 { margin:0 0 16px; font-size:16px; }
.regie-total-card { min-height:90px; padding:14px 16px; border:1px solid rgba(var(--accent-rgb),.32); border-radius:14px; background:rgba(var(--accent-rgb),.09); display:flex; flex-direction:column; justify-content:center; }
.regie-total-card span,.regie-total-card small { color:var(--muted); font-weight:800; }
.regie-total-card output { margin:6px 0 3px; color:var(--accent); font-size:28px; font-weight:950; }
.regie-print-document { width:100%; min-height:245mm; padding:16mm 14mm; color:#111; background:#fff; font-family:Arial,sans-serif; }
.regie-print-top { display:grid; grid-template-columns:1fr 2fr 1fr; align-items:start; }
.regie-print-top h1 { margin:0; text-align:center; font-size:21px; }
.regie-print-document h2 { margin:32px 0 10px; font-size:19px; }
.regie-print-document h3 { margin:0; font-size:16px; }
.regie-print-period { margin:42px 0 28px; font-size:18px; }
.regie-print-table { width:100%; border-collapse:collapse; table-layout:fixed; }
.regie-print-table th,.regie-print-table td { padding:12px 9px; border:1px solid #111; text-align:center; vertical-align:middle; }
.regie-print-table th:first-child,.regie-print-table td:first-child { width:42%; text-align:left; }
.regie-print-transfer { display:flex; gap:20px; align-items:center; margin:52px 0 70px 70px; font-size:16px; }
.regie-print-signature { display:grid; grid-template-columns:180px 1fr; gap:30px; align-items:start; margin-top:45px; font-size:16px; }
.regie-print-finance { margin-top:65px; padding-top:12px; border-top:1px solid #777; display:flex; justify-content:space-between; gap:20px; font-size:14px; }
.regie-print-details { margin-top:24px; break-inside:avoid; }
.regie-print-details h4 { margin:0 0 8px; font-size:14px; }
.regie-print-details table { width:100%; border-collapse:collapse; font-size:10px; }
.regie-print-details th,.regie-print-details td { padding:5px 6px; border:1px solid #777; text-align:left; vertical-align:top; }
.regie-print-details td:nth-child(4),.regie-print-details th:nth-child(4) { text-align:right; white-space:nowrap; }
.regie-print-details small { display:block; margin-top:2px; color:#444; }
@media (max-width:1180px){.regie-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.regie-toolbar{grid-template-columns:1fr 1fr}.regie-toolbar .toolbar-search{grid-column:1/-1}}
@media (max-width:720px){.regie-summary-grid{grid-template-columns:1fr}.regie-toolbar{grid-template-columns:1fr}.regie-toolbar .toolbar-search{grid-column:auto}.regie-info-banner{align-items:flex-start;flex-direction:column}.regie-actions{min-width:0}}
@media print {
  .regie-print-document {
    width: 100%;
    max-width: 174mm;
    min-height: auto;
    margin: 0 auto !important;
    padding: 6mm 7mm;
    box-sizing: border-box;
    font-size: 9.3pt;
  }
  .regie-print-top { grid-template-columns: 1fr 2.2fr 1fr; gap: 8px; }
  .regie-print-top h1 { font-size: 18px; }
  .regie-print-document h2 { margin: 24px 0 8px; font-size: 17px; }
  .regie-print-document h3 { font-size: 14px; }
  .regie-print-period { margin: 30px 0 22px; font-size: 15px; }
  .regie-print-table, .regie-print-details table { max-width: 100%; box-sizing: border-box; }
  .regie-print-table th, .regie-print-table td { padding: 9px 6px; font-size: 9px; overflow-wrap: anywhere; }
  .regie-print-details { margin-top: 18px; }
  .regie-print-details h4 { font-size: 12px; }
  .regie-print-details table { font-size: 8.2px; table-layout: fixed; }
  .regie-print-details th, .regie-print-details td { padding: 4px 5px; overflow-wrap: anywhere; }
  .regie-print-details th { font-size: 7.6px; letter-spacing: .015em; line-height: 1.15; }
  .regie-print-details th:nth-child(1), .regie-print-details td:nth-child(1) { width: 11%; }
  .regie-print-details th:nth-child(2), .regie-print-details td:nth-child(2) { width: 30%; }
  .regie-print-details th:nth-child(3), .regie-print-details td:nth-child(3) { width: 24%; }
  .regie-print-details th:nth-child(4), .regie-print-details td:nth-child(4) { width: 12%; }
  .regie-print-details th:nth-child(5), .regie-print-details td:nth-child(5) { width: 23%; }
  .regie-print-transfer { margin: 34px 0 46px 28px; font-size: 13px; }
  .regie-print-signature { grid-template-columns: 140px 1fr; gap: 24px; margin-top: 34px; font-size: 13px; }
  .regie-print-finance { margin-top: 42px; font-size: 12px; }
}


/* Orbite 4.6 — Import et rapprochement du compte de régie DFT Net */
.regie-reconciled { display:block; margin-top:7px; color:#86efac; font-weight:850; }

.regie-payment-details { margin-top:7px; min-width:190px; }
.regie-payment-details summary { cursor:pointer; color:var(--accent); font-size:.74rem; font-weight:850; white-space:nowrap; }
.regie-payment-details[open] summary { margin-bottom:8px; }
.regie-payment-detail-list { display:grid; gap:7px; min-width:330px; max-width:460px; padding:9px; border:1px solid var(--line); border-radius:12px; background:color-mix(in srgb,var(--surface) 94%,black 6%); box-shadow:0 12px 30px rgba(0,0,0,.22); }
.regie-payment-detail-item { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:start; padding:7px 8px; border-radius:9px; background:rgba(255,255,255,.025); }
.regie-payment-detail-item strong { font-size:.78rem; }
.regie-payment-detail-item small { display:block; margin-top:3px; color:var(--muted); font-size:.69rem; }
.regie-payment-detail-meta { display:grid; justify-items:end; gap:5px; }
.regie-link-state { display:inline-flex; padding:3px 7px; border-radius:999px; font-size:.64rem; font-weight:900; white-space:nowrap; }
.regie-link-state.is-lie { color:#bbf7d0; border:1px solid rgba(74,222,128,.32); background:rgba(20,83,45,.26); }
.regie-link-state.is-lie-a-confirmer { color:#fde68a; border:1px solid rgba(250,204,21,.32); background:rgba(113,63,18,.28); }
.regie-link-state.is-a-rapprocher { color:#fecaca; border:1px solid rgba(248,113,113,.35); background:rgba(127,29,29,.25); }
.payment-regie-link { color:#a7f3d0 !important; font-weight:800; }
.regie-reconciliation-error { display:block; margin-top:7px; color:var(--warning); font-weight:850; }
.regie-bank-panel { margin-top:22px; padding:20px; }
.regie-bank-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:22px; margin-bottom:18px; }
.regie-bank-heading h2 { margin:3px 0 5px; }
.regie-bank-heading p { margin:0; color:var(--muted); }
.regie-bank-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:18px; }
.regie-bank-summary > div,.regie-import-account > div { min-width:0; padding:14px 16px; border:1px solid var(--line); border-radius:14px; background:rgba(255,255,255,.025); }
.regie-bank-summary span,.regie-import-account span { display:block; color:var(--muted); font-size:12px; font-weight:850; text-transform:uppercase; letter-spacing:.04em; }
.regie-bank-summary strong,.regie-import-account strong { display:block; margin:7px 0 4px; font-size:18px; overflow-wrap:anywhere; }
.regie-bank-summary small,.regie-import-account small { display:block; color:var(--muted); overflow-wrap:anywhere; }
.regie-operation-table-panel { overflow-x:auto; border:1px solid var(--line); border-radius:14px; }
.regie-operation-table { width:100%; min-width:1180px; border-collapse:collapse; }
.regie-operation-table th,.regie-operation-table td { padding:12px 13px; border-bottom:1px solid var(--line); text-align:left; vertical-align:middle; }
.regie-operation-table th { color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.04em; background:rgba(255,255,255,.025); }
.regie-operation-table tr:last-child td { border-bottom:0; }
.regie-operation-table td small { display:block; margin-top:4px; color:var(--muted); }
.regie-operation-encaissement { color:#86efac; border-color:rgba(74,222,128,.25); background:rgba(74,222,128,.08); }
.regie-operation-reversement { color:#93c5fd; border-color:rgba(96,165,250,.28); background:rgba(59,130,246,.09); }
.regie-operation-neutral { color:var(--muted); }
.regie-operation-limit { margin:10px 2px 0; color:var(--muted); font-size:13px; }
.regie-import-modal { width:min(1120px,calc(100vw - 32px)); }
.regie-import-body { max-height:min(74vh,820px); overflow:auto; }
.regie-import-account { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:16px; }
.regie-import-preview-table { min-width:980px; }
.regie-import-preview-table td small { display:block; margin-top:6px; color:var(--muted); }
.regie-import-ok { color:#86efac; border-color:rgba(74,222,128,.25); background:rgba(74,222,128,.08); }
.regie-import-warning { color:var(--warning); border-color:rgba(255,210,125,.25); background:rgba(255,210,125,.08); }
.regie-import-duplicate-notice { margin:0 0 16px; padding:14px 16px; border:1px solid rgba(147,197,253,.30); border-radius:14px; background:rgba(59,130,246,.08); }
.regie-import-duplicate-notice strong { display:block; color:#bfdbfe; }
.regie-import-duplicate-notice p { margin:5px 0 0; color:var(--muted); }
.regie-import-option { margin-top:16px; padding:14px 16px; border:1px solid rgba(var(--accent-rgb),.28); border-radius:14px; background:rgba(var(--accent-rgb),.07); }
@media (max-width:1050px){.regie-bank-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.regie-import-account{grid-template-columns:1fr}}
@media (max-width:720px){.regie-bank-heading{flex-direction:column}.regie-bank-summary{grid-template-columns:1fr}}

/* Orbite 5.5 - documents et factures liés */
.document-financial-meta{color:#f4c2ca!important;font-weight:800}.document-card-actions{flex-wrap:wrap}


/* Orbite 5.6 — dossiers annuels par association */
.annual-dossier-summary { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.annual-dossier-toolbar .toolbar-search { min-width: min(440px, 100%); flex: 1; }
.annual-dossier-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.annual-dossier-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 18px; align-items: start; padding: 17px; border: 1px solid var(--line); border-radius: var(--radius-md); background: linear-gradient(145deg, color-mix(in srgb, var(--surface-active) 86%, transparent), color-mix(in srgb, var(--surface) 95%, transparent)); box-shadow: var(--shadow-soft); }
.annual-dossier-card.is-missing { box-shadow: inset 4px 0 0 rgba(248,113,113,.72), var(--shadow-soft); }
.annual-dossier-card.is-warning { box-shadow: inset 4px 0 0 rgba(250,204,21,.66), var(--shadow-soft); }
.annual-dossier-card.is-ok { box-shadow: inset 4px 0 0 rgba(74,222,128,.65), var(--shadow-soft); }
.annual-dossier-card-main { min-width: 0; }
.annual-dossier-card-main h3 { margin: 8px 0 5px; font-size: 15px; }
.annual-dossier-card-main p { margin: 0; color: var(--muted); font-size: 12px; }
.annual-profile-badge { display: inline-flex; padding: 4px 8px; border: 1px solid rgba(var(--accent-rgb),.28); border-radius: 999px; color: var(--accent); background: rgba(var(--accent-rgb),.08); font-size: 10px; font-weight: 900; text-transform: uppercase; letter-spacing: .04em; }
.annual-dossier-score { text-align: right; }
.annual-dossier-score strong { display: block; font-size: 25px; line-height: 1; }
.annual-dossier-score span { color: var(--muted); font-size: 11px; }
.annual-dossier-card-status { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 7px 12px; color: var(--muted); font-size: 11px; font-weight: 800; }
.annual-dossier-card-status .is-ok { color: #86efac; }
.annual-dossier-card-status .is-warning { color: #fde68a; }
.annual-dossier-card-status .is-missing { color: #fecaca; }
.annual-dossier-card > .btn { justify-self: start; }
.annual-dossier-section { padding: 16px; border: 1px solid rgba(var(--accent-rgb),.23); border-radius: var(--radius-md); background: rgba(var(--accent-rgb),.045); }
.annual-dossier-heading { margin-bottom: 13px; }
.annual-dossier-year-label { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; font-weight: 800; }
.annual-dossier-year-label select { min-width: 92px; }
.annual-dossier-progress { display: grid; grid-template-columns: minmax(180px, auto) minmax(180px, 1fr); align-items: center; gap: 16px; margin-bottom: 14px; }
.annual-dossier-progress > div:first-child { display: flex; align-items: baseline; gap: 10px; }
.annual-dossier-progress strong { font-size: 25px; }
.annual-dossier-progress span { color: var(--muted); font-size: 12px; }
.annual-progress-track { height: 8px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.07); }
.annual-progress-track span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--accent), var(--accent-hover)); }
.annual-checklist { display: grid; gap: 7px; }
.annual-check-item { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto auto; gap: 10px; align-items: center; min-height: 54px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 12px; background: color-mix(in srgb, var(--surface) 90%, transparent); }
.annual-check-item > div { display: grid; gap: 3px; min-width: 0; }
.annual-check-item strong { font-size: 13px; }
.annual-check-item small { color: var(--muted); font-size: 11px; }
.annual-check-icon { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; font-weight: 950; }
.annual-check-status { padding: 4px 8px; border-radius: 999px; font-size: 10px; font-weight: 900; white-space: nowrap; }
.annual-check-item.is-ok .annual-check-icon, .annual-check-item.is-ok .annual-check-status { color: #bbf7d0; background: rgba(22,101,52,.35); }
.annual-check-item.is-warning .annual-check-icon, .annual-check-item.is-warning .annual-check-status { color: #fde68a; background: rgba(133,77,14,.33); }
.annual-check-item.is-missing .annual-check-icon, .annual-check-item.is-missing .annual-check-status { color: #fecaca; background: rgba(127,29,29,.34); }
.annual-check-item.is-na { opacity: .63; }
.annual-check-item.is-na .annual-check-icon, .annual-check-item.is-na .annual-check-status { color: var(--muted); background: rgba(255,255,255,.055); }
@media (max-width: 1250px) { .annual-dossier-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .annual-dossier-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) { .annual-dossier-grid, .annual-dossier-summary { grid-template-columns: 1fr; } .annual-dossier-progress { grid-template-columns: 1fr; } .annual-check-item { grid-template-columns: 28px minmax(0, 1fr); } .annual-check-status, .annual-check-item .btn { grid-column: 2; justify-self: start; } }

/* Orbite 5.9 — gestion documentaire intégrée aux dossiers annuels */
.annual-dossier-heading-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 10px;
}
.annual-document-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 6px;
}
.annual-check-item .annual-document-actions .btn { white-space: nowrap; }
.document-modal { width: min(680px, calc(100vw - 32px)); }
.document-dropzone {
  display: grid;
  justify-items: center;
  gap: 7px;
  margin-bottom: 18px;
  padding: 22px 18px;
  border: 1.5px dashed rgba(var(--accent-rgb), .45);
  border-radius: 16px;
  background: rgba(var(--accent-rgb), .045);
  color: var(--muted);
  text-align: center;
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
.document-dropzone:hover,
.document-dropzone:focus-visible,
.document-dropzone.is-dragover {
  border-color: var(--accent);
  background: rgba(var(--accent-rgb), .10);
  outline: none;
}
.document-dropzone.is-dragover { transform: scale(1.01); }
.document-dropzone.has-file {
  border-style: solid;
  border-color: rgba(74, 222, 128, .45);
  background: rgba(22, 101, 52, .12);
}
.document-dropzone-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  color: var(--accent);
  background: rgba(var(--accent-rgb), .13);
  font-size: 22px;
  font-weight: 900;
}
.document-dropzone strong { color: var(--text); font-size: 15px; }
.document-dropzone small { max-width: 100%; overflow-wrap: anywhere; }
.document-metadata-grid { margin-top: 4px; }
.compact-documents-section { padding-bottom: 4px; }
.compact-document-list .document-card { padding: 11px 12px; }
@media (max-width: 760px) {
  .annual-dossier-heading-actions { width: 100%; justify-content: flex-start; }
  .annual-check-item .annual-document-actions { grid-column: 2; justify-content: flex-start; }
  .annual-document-actions .btn { flex: 0 0 auto; }
}
.document-archive > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 0;
  list-style: none;
  cursor: pointer;
}
.document-archive > summary::-webkit-details-marker { display: none; }
.document-archive > summary > span { display: grid; gap: 3px; }
.document-archive > summary strong { color: var(--text); font-size: 14px; }
.document-archive > summary small { color: var(--muted); font-size: 11px; }
.document-archive[open] > summary { margin-bottom: 10px; border-bottom: 1px solid var(--line); }

/* Orbite 6.0 — Planning transversal des associations */
.planning-filter-panel { margin-bottom: 16px; }
.planning-toolbar { display:grid; grid-template-columns:minmax(260px,1.35fr) repeat(3,minmax(180px,.8fr)); gap:12px; align-items:end; }
.planning-panel { overflow:visible; }
.planning-panel .reservation-calendar-header { align-items:flex-start; }
#planningContextLabel { margin:5px 0 0; color:var(--muted); font-size:.9rem; }
.planning-calendar-day.has-reservation {
  border-color:rgba(var(--accent-rgb),.38);
  background:rgba(var(--accent-rgb),.055);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.08);
}
.planning-calendar-day.has-reservation .calendar-day-number {
  color:var(--accent-text);
  background:var(--accent);
}
.planning-calendar-event { min-height:31px; align-items:center; }
.planning-calendar-event span { font-weight:700; }
.planning-month-list { display:grid; gap:14px; margin-top:18px; }
.planning-date-group { padding:0; border:1px solid var(--line); border-radius:16px; background:rgba(255,255,255,.018); overflow:hidden; }
.planning-date-group > h3 { margin:0; padding:12px 16px; border-bottom:1px solid var(--line); background:rgba(var(--accent-rgb),.055); font-size:.95rem; }
.planning-date-items { display:grid; }
.planning-list-row { display:grid; grid-template-columns:82px minmax(0,1fr) auto auto; gap:14px; align-items:center; padding:12px 15px; border-bottom:1px solid var(--line); box-shadow:inset 4px 0 0 var(--room-color); }
.planning-list-row:last-child { border-bottom:0; }
.planning-list-time { display:grid; gap:2px; }
.planning-list-time strong { font-size:1rem; }
.planning-list-time span { color:var(--muted); font-size:.8rem; }
.planning-list-main { display:grid; gap:3px; min-width:0; }
.planning-list-main strong,.planning-list-main span,.planning-list-main small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.planning-list-main span,.planning-list-main small { color:var(--muted); }
.association-planning-access { padding:16px 0; }
.association-planning-button { width:100%; min-height:46px; justify-content:center; font-size:.95rem; }
@media (max-width:1180px) { .planning-toolbar { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:760px) {
  .planning-toolbar { grid-template-columns:1fr; }
  .planning-list-row { grid-template-columns:70px minmax(0,1fr); }
  .planning-list-row > .status,.planning-list-row > .btn { grid-column:2; justify-self:start; }
}

/* Orbite 6.1 — Facturation */
.billing-info-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 18px 22px;
  margin-bottom: 18px;
}
.billing-info-banner strong { display: block; margin-bottom: 4px; font-size: 1rem; }
.billing-info-banner p { margin: 0; color: var(--muted); }
.billing-info-banner > span {
  flex: 0 0 auto;
  padding: 8px 12px;
  border: 1px solid color-mix(in srgb, var(--accent) 42%, transparent);
  border-radius: 999px;
  color: var(--accent-hover);
  font-weight: 800;
  letter-spacing: .06em;
}
.billing-toolbar { grid-template-columns: minmax(280px, 1fr) repeat(4, minmax(150px, auto)); }
.billing-summary-grid { margin-bottom: 18px; }
.billing-table-panel { margin-top: 18px; overflow-x: auto; }
.billing-table { min-width: 1180px; }
.billing-row td { vertical-align: top; }
.billing-type-badge {
  display: inline-flex;
  margin: 0 0 6px;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .05em;
}
.billing-type-facture { background: color-mix(in srgb, var(--accent) 18%, transparent); color: var(--accent-hover); }
.billing-type-avoir { background: rgba(245, 158, 11, .14); color: #fbbf24; }
.billing-amount strong { font-size: 1rem; }
.billing-actions { min-width: 225px; }
.invoice-status-brouillon { background: rgba(148, 163, 184, .13); color: #cbd5e1; }
.invoice-status-emise, .invoice-status-envoyee { background: rgba(79, 140, 255, .14); color: #93c5fd; }
.invoice-status-partielle { background: rgba(245, 158, 11, .14); color: #fbbf24; }
.invoice-status-payee, .invoice-status-applique { background: rgba(34, 197, 94, .14); color: #86efac; }
.invoice-status-annulee { background: rgba(239, 68, 68, .14); color: #fca5a5; }
.billing-history-panel { margin-top: 20px; }
.billing-history-list { display: grid; gap: 1px; background: var(--border); border-radius: 12px; overflow: hidden; }
.billing-history-row {
  display: grid;
  grid-template-columns: minmax(180px, .7fr) minmax(320px, 1.5fr) minmax(190px, .7fr);
  gap: 18px;
  padding: 14px 16px;
  background: var(--card);
}
.billing-history-row > div { display: grid; gap: 3px; min-width: 0; }
.billing-history-row small { color: var(--muted); overflow-wrap: anywhere; }
.invoice-modal { width: min(1180px, calc(100vw - 36px)); }
.invoice-modal-body { max-height: min(74vh, 850px); }
.invoice-link-preview {
  margin-top: 14px;
  padding: 12px 14px;
  border: 1px dashed color-mix(in srgb, var(--accent) 38%, var(--border));
  border-radius: 10px;
  color: var(--muted);
  background: color-mix(in srgb, var(--accent) 5%, transparent);
}
.invoice-line-list { display: grid; gap: 10px; }
.invoice-line-row {
  display: grid;
  grid-template-columns: 34px minmax(240px, 2fr) minmax(90px, .55fr) minmax(95px, .6fr) minmax(135px, .8fr) minmax(85px, .5fr) minmax(120px, .7fr) 38px;
  gap: 10px;
  align-items: end;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: color-mix(in srgb, var(--card) 88%, var(--secondary));
}
.invoice-line-index {
  align-self: center;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: color-mix(in srgb, var(--accent) 16%, transparent);
  color: var(--accent-hover);
  font-weight: 800;
}
.invoice-line-row .field { margin: 0; }
.invoice-line-row .field span { font-size: .72rem; }
.invoice-line-amount { display: grid; gap: 5px; align-self: center; }
.invoice-line-amount span { color: var(--muted); font-size: .72rem; }
.invoice-line-amount strong { white-space: nowrap; }
.invoice-line-remove { align-self: center; }
.invoice-total-card {
  margin: 16px 0 0 auto;
  width: min(100%, 470px);
  display: grid;
  gap: 8px;
  padding: 15px 18px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--secondary);
}
.invoice-total-card > span { display: flex; justify-content: space-between; gap: 24px; }
.invoice-grand-total { padding-top: 10px; margin-top: 4px; border-top: 1px solid var(--border); font-size: 1.08rem; }
.invoice-grand-total strong { color: var(--accent-hover); font-size: 1.2rem; }
.invoice-print-document { color: #111827; background: #fff; font: 12px/1.45 Arial, sans-serif; }
.invoice-print-header { display: flex; justify-content: space-between; gap: 30px; align-items: flex-start; padding-bottom: 18px; border-bottom: 3px solid #111827; }
.invoice-print-header h1 { margin: 0 0 5px; font-size: 22px; }
.invoice-print-header p { margin: 0; color: #4b5563; }
.invoice-print-number { text-align: right; display: grid; gap: 5px; }
.invoice-print-number span { font-size: 14px; font-weight: 700; letter-spacing: .12em; }
.invoice-print-number strong { font-size: 23px; }
.invoice-print-meta { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 18px 0; }
.invoice-print-meta > div, .invoice-print-parties > div { border: 1px solid #d1d5db; padding: 12px; border-radius: 6px; }
.invoice-print-meta span, .invoice-print-parties span, .invoice-print-object span { display: block; margin-bottom: 4px; color: #6b7280; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.invoice-print-parties { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; }
.invoice-print-parties p { margin: 5px 0 0; }
.invoice-print-object { margin-bottom: 16px; padding: 12px; background: #f3f4f6; border-radius: 6px; }
.invoice-print-object p { margin: 5px 0 0; }
.invoice-print-table { width: 100%; border-collapse: collapse; margin-top: 14px; }
.invoice-print-table th, .invoice-print-table td { padding: 9px 8px; border: 1px solid #d1d5db; text-align: left; }
.invoice-print-table th { background: #111827; color: #fff; font-size: 10px; text-transform: uppercase; letter-spacing: .04em; }
.invoice-print-table th:nth-child(n+2), .invoice-print-table td:nth-child(n+2) { text-align: right; }
.invoice-print-totals { width: 330px; margin: 16px 0 18px auto; display: grid; gap: 6px; }
.invoice-print-totals > div { display: flex; justify-content: space-between; padding: 6px 8px; }
.invoice-print-grand-total { border-top: 2px solid #111827; border-bottom: 2px solid #111827; font-size: 15px; }
.invoice-print-payment { padding: 12px; border: 1px solid #d1d5db; border-radius: 6px; }
.invoice-print-payment h2 { margin: 0 0 6px; font-size: 13px; }
.invoice-print-payment p { margin: 4px 0; }
.invoice-print-footer { margin-top: 20px; padding-top: 10px; border-top: 1px solid #d1d5db; color: #6b7280; font-size: 10px; text-align: center; }
@media (max-width: 1200px) {
  .billing-toolbar { grid-template-columns: 1fr 1fr; }
  .billing-toolbar .toolbar-search { grid-column: 1 / -1; }
  .invoice-line-row { grid-template-columns: 34px minmax(220px, 1fr) repeat(2, minmax(90px, .45fr)); }
  .invoice-line-description { grid-column: 2 / -1; }
  .invoice-line-amount { grid-column: 2 / 4; }
}
@media (max-width: 760px) {
  .billing-info-banner, .billing-history-row { display: grid; grid-template-columns: 1fr; }
  .billing-toolbar { grid-template-columns: 1fr; }
  .billing-toolbar .toolbar-search { grid-column: auto; }
  .invoice-line-row { grid-template-columns: 34px 1fr; }
  .invoice-line-description, .invoice-line-amount { grid-column: 2; }
  .invoice-line-remove { grid-column: 1; grid-row: 2; }
  .invoice-print-meta, .invoice-print-parties { grid-template-columns: 1fr 1fr; }
}


/* Orbite 6.2 - Documents PDF et pièces des campagnes de subvention */
.subvention-reference-panel { margin-bottom: 18px; display: grid; gap: 16px; }
.subvention-reference-heading { align-items: flex-end; gap: 18px; }
.subvention-reference-heading h2 { margin: 3px 0 5px; }
.subvention-reference-heading p { margin: 0; max-width: 820px; color: var(--muted); }
.subvention-reference-toolbar { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.subvention-reference-toolbar .filter-field { min-width: 170px; }
.subvention-reference-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.subvention-reference-card { border: 1px solid var(--line); border-radius: 15px; padding: 15px; background: color-mix(in srgb, var(--card) 92%, transparent); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; }
.subvention-reference-card.is-missing { border-style: dashed; }
.subvention-reference-icon { width: 48px; height: 56px; border-radius: 10px; display: grid; place-items: center; background: color-mix(in srgb, var(--accent) 18%, var(--card)); color: var(--accent); font-weight: 800; font-size: 12px; letter-spacing: .04em; border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line)); }
.subvention-reference-main { min-width: 0; }
.subvention-reference-main > span { display: block; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .08em; }
.subvention-reference-main h3 { margin: 4px 0 7px; font-size: 16px; }
.subvention-reference-main p { margin: 0; display: grid; gap: 3px; min-width: 0; }
.subvention-reference-main p strong, .subvention-reference-main p small { overflow-wrap: anywhere; }
.subvention-reference-main p small { color: var(--muted); }
.subvention-reference-actions { display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.subvention-dossier-score { display: grid; gap: 2px; min-width: 72px; }
.subvention-dossier-score strong { font-size: 15px; }
.subvention-dossier-score small { color: var(--muted); white-space: nowrap; }
.subvention-dossier-score.is-ok strong { color: var(--success); }
.subvention-dossier-score.is-warning strong { color: var(--warning); }
.subvention-dossier-score.is-missing strong { color: var(--danger); }
@media (max-width: 1050px) {
  .subvention-reference-grid { grid-template-columns: 1fr; }
  .subvention-reference-card { grid-template-columns: auto minmax(0, 1fr); }
  .subvention-reference-actions { grid-column: 1 / -1; justify-content: flex-start; }
}
@media (max-width: 700px) {
  .subvention-reference-heading { align-items: stretch; }
  .subvention-reference-toolbar { justify-content: flex-start; }
  .subvention-reference-card { grid-template-columns: 1fr; }
  .subvention-reference-icon { width: 44px; height: 48px; }
}

/* Orbite 6.3.2 — présence des utilisateurs connectés */
.topbar-presence {
  position: relative;
  min-width: 0;
}
.topbar-presence[hidden] { display: none; }
.topbar-presence-button {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  max-width: 250px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 13px;
  color: var(--text);
  background: rgba(255,255,255,.035);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.topbar-presence-button:hover,
.topbar-presence-button:focus-visible {
  border-color: color-mix(in srgb, var(--accent) 58%, var(--line));
  background: rgba(255,255,255,.06);
  outline: none;
}
.topbar-presence-dot {
  width: 10px;
  height: 10px;
  flex: none;
  border-radius: 50%;
  background: #35c978;
  box-shadow: 0 0 0 4px rgba(53,201,120,.13);
}
.topbar-presence-button strong,
.topbar-presence-button small {
  display: block;
  max-width: 190px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topbar-presence-button strong { font-size: 12px; }
.topbar-presence-button small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.topbar-presence-popover {
  position: absolute;
  z-index: 80;
  top: calc(100% + 10px);
  right: 0;
  width: min(380px, calc(100vw - 32px));
  max-height: 420px;
  overflow: auto;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--card);
  box-shadow: 0 22px 60px rgba(0,0,0,.34);
}
.topbar-presence-popover[hidden] { display: none; }
.topbar-presence-popover-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 5px 7px 10px;
  border-bottom: 1px solid var(--line);
}
.topbar-presence-popover-head strong { font-size: 13px; }
.topbar-presence-popover-head small { color: var(--muted); font-size: 10px; }
.topbar-presence-list { display: grid; gap: 5px; padding-top: 8px; }
.topbar-presence-user {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px;
  border-radius: 11px;
  background: rgba(255,255,255,.025);
}
.topbar-presence-avatar {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  color: var(--accent-text);
  background: var(--accent);
  font-size: 12px;
  font-weight: 900;
}
.topbar-presence-user strong,
.topbar-presence-user small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topbar-presence-user strong { font-size: 12px; }
.topbar-presence-user small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.topbar-presence-online {
  color: #61d796;
  font-size: 10px;
  font-weight: 800;
}
@media (max-width: 1080px) {
  .topbar-presence { order: 3; }
  .topbar-presence-button { max-width: 210px; }
  .topbar-presence-button strong,
  .topbar-presence-button small { max-width: 150px; }
}
@media (max-width: 760px) {
  .topbar-presence { width: 100%; }
  .topbar-presence-button { width: 100%; max-width: none; justify-content: center; }
  .topbar-presence-popover { left: 0; right: auto; width: 100%; }
}
@media print {
  .topbar-presence { display: none !important; }
}


/* Orbite 6.3.3 — ressources juridiques officielles */
.legal-resource-notice { margin-bottom: 1rem; border-left: 4px solid var(--accent); }
.legal-resource-notice strong { display: block; margin-bottom: .25rem; }
.legal-resource-notice p { margin: 0; color: var(--muted); }
.legal-resource-toolbar { align-items: end; gap: .75rem; margin: 1rem 0; }
.legal-resource-toolbar .toolbar-search { flex: 1 1 28rem; }
.legal-resource-toolbar > select,
.legal-resource-toolbar .filter-field { min-width: 13rem; }
.legal-resource-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 1rem; }
.legal-resource-card { display: flex; flex-direction: column; gap: .85rem; min-height: 250px; }
.legal-resource-card.is-inactive { opacity: .68; }
.legal-resource-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.legal-resource-card h2 { margin: .35rem 0 0; font-size: 1.08rem; line-height: 1.35; }
.legal-resource-card p { margin: 0; color: var(--muted); line-height: 1.55; flex: 1; }
.legal-resource-category { display: inline-flex; align-items: center; border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent); border-radius: 999px; padding: .18rem .55rem; color: var(--accent); font-size: .75rem; font-weight: 700; }
.legal-resource-meta { display: grid; gap: .3rem; font-size: .82rem; color: var(--muted); }
.legal-resource-card .actions { margin-top: auto; }
@media (max-width: 760px) {
  .legal-resource-toolbar { align-items: stretch; }
  .legal-resource-toolbar > select,
  .legal-resource-toolbar .filter-field { width: 100%; min-width: 0; }
  .legal-resource-grid { grid-template-columns: 1fr; }
}


/* =========================================================
   ORBITE 6.5 — CONFORT COGNITIF, REPÉRAGE ET ACCESSIBILITÉ
   Couche additive : aucun composant métier existant n'est remplacé.
   ========================================================= */

.nav-home-item { display: grid; gap: 8px; }
.nav-group {
  border: 1px solid transparent;
  border-radius: 16px;
}
.nav-group[open] { border-color: color-mix(in srgb, var(--line) 72%, transparent); background: rgba(255,255,255,.018); }
.nav-group > summary {
  min-height: 42px;
  display: grid;
  grid-template-columns: 24px 1fr auto;
  align-items: center;
  gap: 8px;
  padding: 8px 11px;
  border-radius: 14px;
  color: var(--muted);
  cursor: pointer;
  list-style: none;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .055em;
  user-select: none;
}
.nav-group > summary::-webkit-details-marker { display: none; }
.nav-group > summary::after { content: "›"; grid-column: 3; font-size: 18px; transform: rotate(0); transition: transform .16s ease; }
.nav-group[open] > summary::after { transform: rotate(90deg); }
.nav-group > summary > small { display: none; }
.nav-group > summary:hover { color: var(--text); background: rgba(255,255,255,.04); }
.nav-group-items { display: grid; gap: 5px; padding: 2px 5px 7px; }
.nav-group-items .nav-item { min-height: 44px; border-radius: 13px; padding-top: 7px; padding-bottom: 7px; }

.topbar-context-block { margin-right: auto; min-width: 150px; display: grid; gap: 2px; }
.topbar-context-block > strong { color: var(--text); font-size: 14px; line-height: 1.2; }
.topbar-context-block .topbar-status { margin: 0; font-size: 12px; }

.comfort-menu { position: relative; flex: none; }
.comfort-menu > summary {
  min-height: 42px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 0 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.04);
  cursor: pointer;
  list-style: none;
  font-size: 13px;
}
.comfort-menu > summary::-webkit-details-marker { display: none; }
.comfort-menu[open] > summary { border-color: rgba(var(--accent-rgb),.42); background: rgba(var(--accent-rgb),.12); }
.comfort-popover {
  position: absolute;
  z-index: 80;
  top: calc(100% + 10px);
  right: 0;
  width: min(310px, calc(100vw - 28px));
  display: grid;
  gap: 12px;
  padding: 17px;
  border: 1px solid var(--line-strong);
  border-radius: 18px;
  background: color-mix(in srgb, var(--surface) 97%, transparent);
  box-shadow: var(--shadow);
}
.comfort-popover label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; font-weight: 700; }
.comfort-popover select { width: 100%; min-height: 42px; }
.comfort-popover .comfort-check { grid-template-columns: auto 1fr; align-items: center; gap: 10px; }
.comfort-popover .comfort-check input { width: 20px; height: 20px; accent-color: var(--accent); }

.dashboard-workspace {
  display: grid;
  grid-template-columns: minmax(280px, .8fr) minmax(520px, 1.8fr);
  gap: 22px;
  align-items: center;
  margin-bottom: 20px;
  padding: 24px;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, rgba(var(--accent-rgb),.12), rgba(255,255,255,.028));
  box-shadow: var(--shadow-soft);
}
.dashboard-workspace-copy h2 { margin: 0 0 8px; font-size: clamp(24px,2.2vw,34px); }
.dashboard-workspace-copy p:not(.eyebrow) { margin: 0 0 8px; max-width: 600px; color: var(--muted); line-height: 1.55; }
.dashboard-workspace-copy small { display: block; color: var(--accent); font-weight: 800; text-transform: capitalize; }
.dashboard-quick-actions { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.dashboard-quick-action {
  min-height: 86px;
  display: grid;
  grid-template-columns: 34px 1fr;
  grid-template-rows: auto auto;
  align-items: center;
  column-gap: 10px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 15px;
  color: var(--text);
  background: rgba(255,255,255,.035);
  text-align: left;
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
.dashboard-quick-action:hover { border-color: rgba(var(--accent-rgb),.42); background: rgba(var(--accent-rgb),.09); transform: translateY(-1px); }
.dashboard-quick-action > span { grid-row: 1 / 3; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 11px; color: var(--accent-text); background: var(--accent); font-weight: 900; }
.dashboard-quick-action strong { font-size: 13px; }
.dashboard-quick-action small { color: var(--muted); font-size: 11px; }

.payment-history-note { margin-top: 7px !important; padding: 5px 8px; border-left: 3px solid var(--warning); color: var(--warning) !important; background: rgba(255,210,125,.06); border-radius: 4px; }

/* Thème clair, volontairement neutre et institutionnel. */
:root[data-ui-theme="light"] {
  --bg-main: #f4f7fb;
  --bg-secondary: #eef3f8;
  --surface: #ffffff;
  --surface-active: #eaf1f9;
  --text-main: #172231;
  --text-muted: #58677a;
  --accent: #286bd6;
  --accent-hover: #3f7fe2;
  --accent-rgb: 40,107,214;
  --accent-hover-rgb: 63,127,226;
  --accent-text: #ffffff;
  --line: rgba(27,52,79,.14);
  --line-strong: rgba(27,52,79,.28);
  --danger: #b42318;
  --warning: #9a6700;
  --shadow: 0 20px 60px rgba(31,50,73,.16);
  --shadow-soft: 0 12px 32px rgba(31,50,73,.10);
  color-scheme: light;
}
:root[data-ui-theme="light"] body { background: linear-gradient(145deg,#f7f9fc,#edf3f9 52%,#f7f9fc); }
:root[data-ui-theme="light"] .sidebar,
:root[data-ui-theme="light"] .topbar { background: color-mix(in srgb, var(--surface) 90%, transparent); }
:root[data-ui-theme="light"] .btn-secondary,
:root[data-ui-theme="light"] .nav-item:hover,
:root[data-ui-theme="light"] .toolbar-search,
:root[data-ui-theme="light"] .dashboard-quick-action { background: rgba(24,57,91,.035); }
:root[data-ui-theme="light"] .btn-danger { color: #8f1f16; background: rgba(180,35,24,.08); }

/* Contraste renforcé : repères francs, sans effets décoratifs. */
:root[data-ui-theme="contrast"] {
  --bg-main: #000000;
  --bg-secondary: #080808;
  --surface: #101010;
  --surface-active: #1a1a1a;
  --text-main: #ffffff;
  --text-muted: #e5e5e5;
  --accent: #ffd800;
  --accent-hover: #ffe75c;
  --accent-rgb: 255,216,0;
  --accent-hover-rgb: 255,231,92;
  --accent-text: #000000;
  --line: rgba(255,255,255,.36);
  --line-strong: rgba(255,255,255,.72);
  --danger: #ff6b6b;
  --warning: #ffd800;
  --shadow: none;
  --shadow-soft: none;
  color-scheme: dark;
}
:root[data-ui-theme="contrast"] body { background: #000; }
:root[data-ui-theme="contrast"] .panel,
:root[data-ui-theme="contrast"] .stat-card,
:root[data-ui-theme="contrast"] .dashboard-workspace,
:root[data-ui-theme="contrast"] .empty-state { border-width: 2px; }

:root[data-text-size="large"] body { font-size: 17px; line-height: 1.55; }
:root[data-text-size="large"] .nav-item { font-size: 15px; }
:root[data-text-size="large"] .btn { font-size: 15px; }
:root[data-text-size="large"] input,
:root[data-text-size="large"] select,
:root[data-text-size="large"] textarea { font-size: 17px; }

:root[data-density="compact"] { --radius-lg: 18px; --radius-md: 14px; --radius-sm: 10px; }
:root[data-density="compact"] .content { padding-top: 22px; }
:root[data-density="compact"] .panel-wide,
:root[data-density="compact"] .stat-card { padding: 17px; }
:root[data-density="compact"] th,
:root[data-density="compact"] td { padding: 12px 11px; }
:root[data-density="compact"] .btn { min-height: 38px; }
:root[data-density="compact"] .toolbar { padding: 10px; }

:root[data-reduce-motion] *,
:root[data-reduce-motion] *::before,
:root[data-reduce-motion] *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .001ms !important; }

@media (max-width: 1280px) {
  .dashboard-workspace { grid-template-columns: 1fr; }
  .topbar-context-block { display: none; }
}
@media (max-width: 900px) {
  .dashboard-quick-actions { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .comfort-menu > summary strong { display: none; }
}
@media (max-width: 600px) {
  .dashboard-quick-actions { grid-template-columns: 1fr; }
  .dashboard-workspace { padding: 18px; }
}


/* Orbite 7.2 — destinataire de facturation prérempli et contrôlable */
.invoice-association-preview {
  border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--border));
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 7%, var(--card));
  padding: 14px 16px;
  min-width: 0;
}
.invoice-association-empty { display: grid; gap: 4px; color: var(--muted); }
.invoice-association-empty strong { color: var(--text); }
.invoice-association-preview-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 12px; }
.invoice-association-preview-head > div { display: grid; gap: 3px; min-width: 0; }
.invoice-association-preview-head span:first-child,
.invoice-association-preview-grid span { color: var(--muted); font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; }
.invoice-association-preview-head strong { font-size: 1rem; overflow-wrap: anywhere; }
.invoice-association-preview-head small { color: var(--muted); }
.invoice-association-preview-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 18px; }
.invoice-association-preview-grid > div { display: grid; gap: 3px; min-width: 0; }
.invoice-association-preview-grid strong, .invoice-association-preview-grid small { overflow-wrap: anywhere; }
.invoice-association-preview-grid small { color: var(--muted); }
@media (max-width: 760px) {
  .invoice-association-preview-grid { grid-template-columns: 1fr; }
  .invoice-association-preview-head { align-items: stretch; }
}

/* Orbite 7.3 — retour d'erreur visible dans la fenêtre de facturation. */
.invoice-form-feedback { margin-top: 12px; }


/* Orbite PHP production — identité foncée dorée */
.login-screen {
  background:
    radial-gradient(circle at 12% 0%, rgba(215,169,40,.20), transparent 38%),
    radial-gradient(circle at 92% 8%, rgba(240,201,77,.10), transparent 34%),
    linear-gradient(145deg, #080806 0%, #141105 48%, #090906 100%);
}
.login-card,
.login-hero {
  border-color: rgba(215,169,40,.38);
  background: linear-gradient(160deg, rgba(21,19,12,.98), rgba(8,8,6,.98));
}
.login-orbit { border-color: rgba(215,169,40,.20); }
.login-form input {
  background: rgba(6,6,5,.72);
  border-color: rgba(215,169,40,.28);
}
.login-form input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 4px rgba(215,169,40,.12);
}
.login-submit {
  background: linear-gradient(135deg, #C99A1D, #E1B73F);
  color: #120E03;
}
.login-submit:hover { background: linear-gradient(135deg, #D7A928, #F0C94D); }
.login-message:empty { display: none; }
