/* =====================================================================
   CRM PLANNER — feuille de style
   Nuit de scène (menu), papier clair (contenu), ambre projecteur
   (actions principales), violet (liens et focus).
   ===================================================================== */

:root {
  --night: #1F1A2B;
  --night-2: #2B2439;
  --night-3: #3A3149;
  --night-ink: #EEEBF4;
  --night-muted: #A49EB4;

  --paper: #F5F4F8;
  --surface: #FFFFFF;
  --sunken: #FAF9FC;
  --ink: #1C1823;
  --ink-2: #3B3546;
  --muted: #6E6879;
  --line: #E4E1EA;
  --line-strong: #D0CBD9;

  --amber: #F2B705;
  --amber-hover: #FFC61A;
  --amber-ink: #2E2200;
  --amber-soft: #FFF5D1;

  --violet: #6E56CF;
  --violet-ink: #4F3AA8;
  --violet-soft: #EFEBFF;
  --green: #1F8A5B;
  --green-soft: #E2F3EA;
  --red: #C93B3B;
  --red-soft: #FCEBEB;
  --blue-soft: #E8F0FE;

  --font-display: "Bricolage Grotesque", "Instrument Sans", system-ui, sans-serif;
  --font-ui: "Instrument Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

  --r-sm: 7px;
  --r-md: 10px;
  --r-lg: 14px;
  --shadow-pop: 0 12px 32px -8px rgba(31, 26, 43, .28), 0 2px 6px rgba(31, 26, 43, .08);
  --focus: 0 0 0 3px rgba(110, 86, 207, .35);
  --sidebar-w: 252px;
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-ui);
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: var(--violet-ink); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
h1, h2, h3, h4 { font-family: var(--font-display); color: var(--ink); margin: 0; line-height: 1.15; letter-spacing: -.01em; }
h1 { font-size: 30px; font-weight: 700; }
h2 { font-size: 19px; font-weight: 650; }
h3 { font-size: 16px; font-weight: 650; }
p { margin: 0 0 .75em; }
.num, .tabular { font-variant-numeric: tabular-nums; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.nowrap { white-space: nowrap; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
:focus-visible { outline: none; box-shadow: var(--focus); border-radius: var(--r-sm); }

.ic { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; vertical-align: -3px; }
.ic-sm { width: 15px; height: 15px; vertical-align: -2px; }
.ic-lg { width: 22px; height: 22px; }

/* ------------------------------------------------------------------ */
/* Structure                                                           */
/* ------------------------------------------------------------------ */
.shell { display: grid; grid-template-columns: var(--sidebar-w) minmax(0, 1fr); min-height: 100vh; }

.sidebar {
  position: sticky; top: 0; height: 100vh; overflow-y: auto;
  background: var(--night); color: var(--night-ink);
  display: flex; flex-direction: column; padding: 18px 14px 14px;
}
.brand { display: flex; align-items: center; gap: 10px; padding: 4px 8px 18px; color: #fff; }
.brand:hover { text-decoration: none; }
.brand-mark {
  width: 30px; height: 30px; border-radius: 9px; flex: none;
  background: radial-gradient(circle at 50% 22%, #FFE58A 0 18%, var(--amber) 19% 46%, transparent 47%), var(--night-3);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.brand-name { font-family: var(--font-display); font-weight: 700; font-size: 18px; letter-spacing: -.02em; }
.brand-name span { color: var(--amber); }

.company-chip {
  display: flex; align-items: center; gap: 10px; padding: 9px 10px; margin: 0 0 14px;
  border-radius: var(--r-md); background: var(--night-2); color: var(--night-ink);
}
.company-chip img { width: 28px; height: 28px; border-radius: 7px; object-fit: contain; background: #fff; }
.company-chip .initial { width: 28px; height: 28px; border-radius: 7px; display: grid; place-items: center; font-weight: 700; font-size: 13px; color: var(--amber-ink); background: var(--amber); }
.company-chip strong { display: block; font-size: 13.5px; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.company-chip small { color: var(--night-muted); font-size: 12px; }

.nav-group { margin: 4px 0 10px; }
.nav-group > p { margin: 10px 10px 4px; font-size: 12px; color: var(--night-muted); }
.nav a {
  display: flex; align-items: center; gap: 11px; padding: 8px 10px; border-radius: var(--r-sm);
  color: var(--night-ink); font-size: 14px; position: relative;
}
.nav a .ic { color: var(--night-muted); }
.nav a:hover { background: var(--night-2); text-decoration: none; }
.nav a.is-active { background: var(--night-3); color: #fff; }
.nav a.is-active .ic { color: var(--amber); }
.nav a.is-active::before { content: ""; position: absolute; left: -14px; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0; background: var(--amber); }
.nav a .soon { margin-left: auto; font-size: 11px; color: var(--night-muted); border: 1px solid var(--night-3); border-radius: 20px; padding: 0 7px; }
.sidebar-foot { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--night-2); }
.trial-note { margin: 10px 4px 0; padding: 10px 12px; border-radius: var(--r-md); background: rgba(242,183,5,.12); color: #FBE3A0; font-size: 12.5px; line-height: 1.4; }
.trial-note a { color: var(--amber); font-weight: 600; }

.main { min-width: 0; display: flex; flex-direction: column; }
.topbar {
  position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 12px;
  height: 62px; padding: 0 28px; background: rgba(245,244,248,.92); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}
.topbar .menu-toggle { display: none; }
.search { position: relative; flex: 1; max-width: 420px; }
.search .ic { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--muted); }
.search input { width: 100%; padding: 8px 12px 8px 36px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); font: inherit; color: var(--ink); }
.search input:focus { border-color: var(--violet); box-shadow: var(--focus); outline: none; }
.topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 10px; }

.content { padding: 28px 32px 60px; width: 100%; max-width: 1920px; margin-inline: auto; }   /* centré sur les très grands écrans */
/* Sur grand écran, les formulaires restent à une largeur confortable */
form.panel:has(> .panel-body > .form-section) { max-width: 1240px; }
.content-narrow { max-width: 920px; }

/* ------------------------------------------------------------------ */
/* Menus déroulants (details/summary)                                  */
/* ------------------------------------------------------------------ */
.dropdown { position: relative; }
.dropdown > summary { list-style: none; cursor: pointer; }
.dropdown > summary::-webkit-details-marker { display: none; }
.dropdown-menu {
  position: absolute; right: 0; top: calc(100% + 8px); min-width: 230px; z-index: 40;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md);
  box-shadow: var(--shadow-pop); padding: 6px;
}
.dropdown-menu a, .dropdown-menu button {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border-radius: var(--r-sm);
  border: 0; background: none; font: inherit; color: var(--ink); text-align: left; cursor: pointer;
}
.dropdown-menu a:hover, .dropdown-menu button:hover { background: var(--paper); text-decoration: none; }
.dropdown-menu .ic { color: var(--muted); }
.dropdown-menu hr { border: 0; border-top: 1px solid var(--line); margin: 6px 0; }
.dropdown-menu .is-disabled { color: var(--muted); pointer-events: none; }
.dropdown-menu .is-disabled small { margin-left: auto; font-size: 11.5px; }
.menu-head { padding: 8px 10px 10px; }
.menu-head strong { display: block; }
.menu-head span { color: var(--muted); font-size: 13px; }
.menu-label { margin: 4px 10px 2px; font-size: 12px; color: var(--muted); }
.menu-sub { display: block; font-size: 12px; color: var(--muted); }

.user-btn { display: flex; align-items: center; gap: 8px; padding: 3px 8px 3px 3px; border-radius: 999px; border: 1px solid transparent; }
.user-btn:hover { border-color: var(--line); background: var(--surface); }
.user-btn .ic { color: var(--muted); }

.avatar {
  --av: #7C5CFF;
  width: 34px; height: 34px; border-radius: 50%; flex: none; overflow: hidden;
  display: inline-grid; place-items: center; font-size: 13px; font-weight: 650; letter-spacing: .02em;
  color: #fff; background: var(--av);
}
.avatar img { width: 100%; height: 100%; object-fit: cover; }
.avatar-sm { width: 28px; height: 28px; font-size: 11.5px; }
.avatar-lg { width: 64px; height: 64px; font-size: 22px; }

/* ------------------------------------------------------------------ */
/* Boutons                                                             */
/* ------------------------------------------------------------------ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 8px 15px; min-height: 38px; border-radius: var(--r-sm);
  border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink);
  font: 600 14px/1.2 var(--font-ui); cursor: pointer; white-space: nowrap;
  transition: background-color .12s, border-color .12s;
}
.btn:hover { background: var(--sunken); border-color: #BDB6C9; text-decoration: none; }
.btn-primary { background: var(--amber); border-color: var(--amber); color: var(--amber-ink); }
.btn-primary:hover { background: var(--amber-hover); border-color: var(--amber-hover); }
.btn-dark { background: var(--night); border-color: var(--night); color: #fff; }
.btn-dark:hover { background: var(--night-3); border-color: var(--night-3); }
.btn-ghost { background: transparent; border-color: transparent; color: var(--ink-2); }
.btn-ghost:hover { background: rgba(31,26,43,.06); border-color: transparent; }
.btn-danger { color: var(--red); }
.btn-danger:hover { background: var(--red-soft); border-color: #F1C4C4; }
.btn-sm { min-height: 32px; padding: 5px 11px; font-size: 13px; }
.btn-icon { padding: 0; width: 38px; }
.btn-sm.btn-icon { width: 32px; }
.btn-block { width: 100%; }
.btn[disabled] { opacity: .55; cursor: not-allowed; }
.link-btn { border: 0; background: none; padding: 0; font: inherit; color: var(--violet-ink); cursor: pointer; }
.link-btn:hover { text-decoration: underline; text-underline-offset: 3px; }
.inline-form { display: inline; margin: 0; }

/* ------------------------------------------------------------------ */
/* En-têtes de page                                                    */
/* ------------------------------------------------------------------ */
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.page-head p { margin: 6px 0 0; color: var(--muted); }
.page-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.crumbs { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; font-size: 13px; color: var(--muted); }
.crumbs a { color: var(--muted); }
.crumbs .ic { width: 14px; height: 14px; }

/* ------------------------------------------------------------------ */
/* Messages                                                            */
/* ------------------------------------------------------------------ */
.flashes { display: grid; gap: 8px; margin-bottom: 18px; }
.flash {
  display: flex; align-items: flex-start; gap: 10px; padding: 11px 12px 11px 14px;
  border-radius: var(--r-md); border: 1px solid; font-size: 14px;
}
.flash .ic { margin-top: 1px; }
.flash p { margin: 0; flex: 1; }
.flash-success { background: var(--green-soft); border-color: #BFE3CF; color: #14573A; }
.flash-error { background: var(--red-soft); border-color: #F2C6C6; color: #8F2323; }
.flash-info { background: var(--amber-soft); border-color: #F5DE8E; color: #5E4700; }
.flash-close { border: 0; background: none; color: inherit; opacity: .6; cursor: pointer; padding: 0 2px; }
.flash-close:hover { opacity: 1; }

.notice { display: flex; gap: 12px; padding: 14px 16px; border-radius: var(--r-md); background: var(--sunken); border: 1px solid var(--line); color: var(--ink-2); font-size: 14px; }
.notice .ic { color: var(--violet); margin-top: 2px; }
.notice p:last-child { margin-bottom: 0; }

/* ------------------------------------------------------------------ */
/* Panneaux & listes                                                   */
/* ------------------------------------------------------------------ */
.panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.panel + .panel { margin-top: 18px; }
.grid-2 > .panel, .grid-main > .panel, .plans > .panel { margin-top: 0; }
/* Même espacement partout entre les blocs empilés (cadre, puis grille de cadres, etc.) */
.panel + .grid-main, .grid-main + .panel, .grid-main + .grid-main, .panel + .grid-2, .grid-2 + .panel, .lo-tiles + .panel { margin-top: 18px; }
.panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--line); }
.panel-head p { margin: 2px 0 0; color: var(--muted); font-size: 13.5px; }
.panel-body { padding: 20px; }
.panel-foot { padding: 14px 20px; border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); display: flex; justify-content: flex-end; gap: 8px; }

.grid-2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; }
.grid-main { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 18px; align-items: start; }

.rows { list-style: none; margin: 0; padding: 0; }
.rows > li { display: flex; align-items: center; gap: 12px; padding: 12px 20px; border-top: 1px solid var(--line); }
.rows > li:first-child { border-top: 0; }
.rows .grow { flex: 1; min-width: 0; }
.rows .title { font-weight: 600; color: var(--ink); }
.rows .sub { color: var(--muted); font-size: 13px; }

.empty { text-align: center; padding: 42px 24px; color: var(--muted); }
.empty h3 { color: var(--ink); margin-bottom: 6px; }
.empty p { max-width: 46ch; margin: 0 auto 16px; }
.empty-art { width: 52px; height: 52px; margin: 0 auto 14px; border-radius: 14px; display: grid; place-items: center; background: var(--violet-soft); color: var(--violet); }

/* Tableaux */
.table-wrap { overflow-x: auto; }
.table { width: 100%; border-collapse: collapse; font-size: 14px; }
.table th { text-align: left; font-weight: 600; font-size: 12.5px; color: var(--muted); padding: 10px 16px; border-bottom: 1px solid var(--line); background: var(--sunken); white-space: nowrap; }
.table td { padding: 12px 16px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.table tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: #FBFAFD; }
.table .right { text-align: right; }
.table a.row-link { color: var(--ink); font-weight: 600; }
.table th:first-child { border-top-left-radius: var(--r-lg); }
.table th:last-child { border-top-right-radius: var(--r-lg); }
.person { display: flex; align-items: center; gap: 11px; }
.person .sub { display: block; color: var(--muted); font-size: 12.5px; font-weight: 400; }

/* Étiquettes */
.tag { display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px; border-radius: 999px; font-size: 12.5px; font-weight: 600; white-space: nowrap; background: var(--paper); color: var(--ink-2); }
.tag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .8; }
.tag-plain::before { display: none; }
.tag-prospect { background: var(--violet-soft); color: var(--violet-ink); }
.tag-client { background: var(--green-soft); color: #16704A; }
.tag-archived { background: #EEEDF1; color: var(--muted); }
.tag-amber { background: var(--amber-soft); color: #6B5000; }
.tag-red { background: var(--red-soft); color: var(--red); }

/* Filtres (onglets de statut) */
.toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.chips { display: flex; gap: 4px; flex-wrap: wrap; }
.chips a { display: inline-flex; align-items: center; gap: 7px; padding: 6px 12px; border-radius: 999px; color: var(--ink-2); font-size: 13.5px; font-weight: 500; }
.chips a:hover { background: var(--paper); text-decoration: none; }
.chips a.is-active { background: var(--night); color: #fff; }
.chips a .count { font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.chips a.is-active .count { color: var(--night-muted); }
.toolbar-form { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.toolbar-form .input { min-height: 34px; padding: 6px 10px; font-size: 13.5px; width: auto; }
.toolbar-form select.input { padding-right: 32px; background-position: right 8px center; }

.pagination { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-top: 1px solid var(--line); font-size: 13.5px; color: var(--muted); }
.pagination nav { display: flex; gap: 6px; }

/* Sous-navigation des paramètres */
.subnav { display: flex; gap: 2px; margin-bottom: 22px; border-bottom: 1px solid var(--line); overflow-x: auto; }
.subnav a { display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; color: var(--muted); font-weight: 500; border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; }
.subnav a:hover { color: var(--ink); text-decoration: none; }
.subnav a.is-active { color: var(--ink); border-bottom-color: var(--amber); }

/* ------------------------------------------------------------------ */
/* Formulaires                                                         */
/* ------------------------------------------------------------------ */
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 18px; }
.form-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.span-2 { grid-column: span 2; }
.span-all { grid-column: 1 / -1; }
.field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.field > label, .label { font-weight: 600; font-size: 13.5px; color: var(--ink-2); }
.label-opt { font-weight: 400; color: var(--muted); }
.hint { font-size: 12.5px; color: var(--muted); margin: 0; }
.input, select.input, textarea.input {
  width: 100%; min-height: 40px; padding: 8px 12px;
  border: 1px solid var(--line-strong); border-radius: var(--r-sm); background: var(--surface);
  font: inherit; color: var(--ink); transition: border-color .12s;
}
textarea.input { min-height: 96px; resize: vertical; line-height: 1.5; }
select.input { appearance: none; padding-right: 34px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E6879' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; background-size: 16px; }
.input:hover { border-color: #B8B0C6; }
.input:focus { outline: none; border-color: var(--violet); box-shadow: var(--focus); }
.input.is-invalid { border-color: var(--red); }
.input.is-invalid:focus { box-shadow: 0 0 0 3px rgba(201,59,59,.2); }
.input::placeholder { color: #A59FB1; }
.field-error { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 13px; color: var(--red); }
.field-error .ic { width: 14px; height: 14px; }
.input-affix { position: relative; }
.input-affix .input { padding-right: 46px; }
.input-affix .affix { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: var(--muted); font-size: 13.5px; pointer-events: none; }

.form-section { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 28px; padding: 24px 0; border-top: 1px solid var(--line); }
.form-section:first-child { border-top: 0; padding-top: 0; }
.form-section > header h2 { font-size: 16px; margin-bottom: 6px; }
.form-section > header p { color: var(--muted); font-size: 13.5px; margin: 0; }
.form-actions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 20px; border-top: 1px solid var(--line); }
.form-actions.sticky { position: sticky; bottom: 0; background: linear-gradient(to bottom, rgba(245,244,248,0), var(--paper) 30%); padding-bottom: 16px; border-top: 0; }

/* Contrôle segmenté (choix exclusifs) */
.seg { display: inline-flex; padding: 3px; border-radius: 10px; background: #ECEAF1; gap: 2px; }
.seg input { position: absolute; opacity: 0; pointer-events: none; }
.seg label { display: inline-flex; align-items: center; gap: 7px; padding: 6px 14px; border-radius: 8px; font-size: 13.5px; font-weight: 600; color: var(--muted); cursor: pointer; }
.seg input:checked + label { background: var(--surface); color: var(--ink); box-shadow: 0 1px 2px rgba(31,26,43,.12); }
.seg input:focus-visible + label { box-shadow: var(--focus); }

/* Cases et interrupteurs */
.check { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; font-size: 14px; }
.check input { width: 18px; height: 18px; margin: 1px 0 0; accent-color: var(--violet); flex: none; }
.check small { display: block; color: var(--muted); font-size: 12.5px; }
.switch { position: relative; display: inline-flex; align-items: center; gap: 10px; cursor: pointer; }
.switch input { position: absolute; opacity: 0; }
.switch .track { width: 38px; height: 22px; border-radius: 999px; background: var(--line-strong); position: relative; transition: background-color .15s; flex: none; }
.switch .track::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.2); transition: transform .15s; }
.switch input:checked + .track { background: var(--violet); }
.switch input:checked + .track::after { transform: translateX(16px); }
.switch input:focus-visible + .track { box-shadow: var(--focus); }

/* Pastilles de couleur */
.swatches { display: flex; gap: 8px; flex-wrap: wrap; }
.swatches input { position: absolute; opacity: 0; }
.swatches label { width: 30px; height: 30px; border-radius: 50%; background: var(--sw); cursor: pointer; box-shadow: inset 0 0 0 2px rgba(255,255,255,.7); }
.swatches input:checked + label { outline: 2px solid var(--ink); outline-offset: 2px; }
.swatches input:focus-visible + label { box-shadow: var(--focus); }
.color-field { display: flex; align-items: center; gap: 10px; }
.color-field input[type=color] { width: 44px; height: 40px; padding: 3px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); background: var(--surface); cursor: pointer; }

/* Dépôt d'image */
.logo-drop { display: flex; align-items: center; gap: 16px; }
.logo-preview { width: 88px; height: 88px; border-radius: var(--r-md); border: 1px dashed var(--line-strong); display: grid; place-items: center; background: var(--sunken); color: var(--muted); overflow: hidden; flex: none; }
.logo-preview img { width: 100%; height: 100%; object-fit: contain; padding: 8px; }

/* ------------------------------------------------------------------ */
/* Tableau de bord                                                      */
/* ------------------------------------------------------------------ */
.hello { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 26px; }
.hello h1 { font-size: 34px; }
.hello p { margin: 6px 0 0; color: var(--muted); font-size: 15px; }

.section-title { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0 0 12px; }
.section-title h2 { font-size: 20px; }
.section-title a { font-size: 13.5px; font-weight: 600; }

/* Billets : les prochaines dates sous forme de talons de billets */
.tickets { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; margin-bottom: 30px; }
@media (min-width: 1180px) { .tickets { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; } }
.ticket {
  --cat: var(--violet);
  --notch: var(--paper);
  position: relative; display: grid; grid-template-columns: 92px minmax(0, 1fr);
  min-height: 132px; color: var(--ink); background: var(--surface);
  border-radius: var(--r-lg); filter: drop-shadow(0 1px 0 var(--line)) drop-shadow(0 0 0 var(--line));
  border: 1px solid var(--line);
}
.ticket:hover { text-decoration: none; border-color: var(--line-strong); }
.ticket-stub {
  position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 12px 6px; background: var(--night); color: #fff; border-radius: calc(var(--r-lg) - 1px) 0 0 calc(var(--r-lg) - 1px);
}
.ticket-stub::after {
  /* perforation */
  content: ""; position: absolute; right: -1px; top: 10px; bottom: 10px; width: 2px;
  background: repeating-linear-gradient(to bottom, var(--surface) 0 5px, transparent 5px 10px);
}
.ticket::before, .ticket::after {
  /* encoches du talon */
  content: ""; position: absolute; left: 83px; width: 18px; height: 18px; border-radius: 50%;
  background: var(--notch); border: 1px solid var(--line); z-index: 2;
}
.ticket::before { top: -10px; clip-path: inset(50% 0 0 0); }
.ticket::after { bottom: -10px; clip-path: inset(0 0 50% 0); }
.ticket-day { font-family: var(--font-display); font-size: 40px; font-weight: 700; line-height: .95; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.ticket-month { font-family: var(--font-display); font-size: 15px; font-weight: 600; color: var(--amber); margin-top: 3px; }
.ticket-weekday { font-size: 12px; color: var(--night-muted); margin-top: 6px; }
.ticket-body { padding: 14px 16px 14px 20px; display: flex; flex-direction: column; gap: 6px; min-width: 0; border-left: 0; }
.ticket-cat { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.ticket-cat::before { content: ""; width: 8px; height: 8px; border-radius: 2px; background: var(--cat); }
.ticket-countdown + .ticket-title { margin-right: 52px; }
.ticket-title { font-family: var(--font-display); font-size: 17px; font-weight: 650; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ticket-meta { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; color: var(--muted); margin-top: auto; }
.ticket-meta span { display: inline-flex; align-items: center; gap: 5px; }
.ticket-meta .ic { width: 14px; height: 14px; }
.ticket-countdown { position: absolute; top: 12px; right: 14px; font-size: 12px; font-weight: 600; color: var(--muted); }
.ticket-countdown.is-soon { color: #8A6400; background: var(--amber-soft); padding: 1px 8px; border-radius: 999px; }

.ticket-placeholder {
  display: grid; grid-template-columns: 92px 1fr; min-height: 132px; border-radius: var(--r-lg);
  border: 1px dashed var(--line-strong); color: var(--muted);
}
.ticket-placeholder .ticket-stub { background: transparent; color: var(--line-strong); border-right: 1px dashed var(--line-strong); border-radius: 0; }
.ticket-placeholder .ticket-stub::after { display: none; }
.ticket-placeholder .ticket-body { justify-content: center; }
.ticket-placeholder strong { color: var(--ink); font-family: var(--font-display); font-size: 16px; }

/* Registre des chiffres : une seule bande, séparée par des filets */
.ledger { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); margin-bottom: 30px; }
.ledger > div { padding: 18px 20px; border-left: 1px solid var(--line); }
.ledger > div:first-child { border-left: 0; }
.ledger dt { font-size: 13px; color: var(--muted); margin-bottom: 4px; }
.ledger dd { margin: 0; font-family: var(--font-display); font-size: 25px; font-weight: 650; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.ledger dd small { font-family: var(--font-ui); font-size: 12.5px; font-weight: 500; color: var(--muted); letter-spacing: 0; margin-left: 4px; }
.ledger .foot { font-size: 12.5px; color: var(--muted); margin-top: 4px; }

.due { font-size: 12.5px; font-weight: 600; color: var(--muted); white-space: nowrap; }
.due.is-late { color: var(--red); }
.act-icon { width: 32px; height: 32px; border-radius: 9px; display: grid; place-items: center; flex: none; background: var(--paper); color: var(--ink-2); }
.act-icon.t-task { background: var(--amber-soft); color: #7A5B00; }
.act-icon.t-meeting { background: var(--violet-soft); color: var(--violet-ink); }
.act-icon.t-call { background: var(--blue-soft); color: #2954B8; }
.act-icon.t-email { background: var(--green-soft); color: var(--green); }

/* Fonctions */
.func-form { display: grid; grid-template-columns: 44px minmax(0, .8fr) minmax(0, 1.4fr) auto auto; gap: 8px; align-items: center; }
.func-row > form:first-child { flex: 1; min-width: 0; }
.func-img { width: 40px; height: 40px; border-radius: 10px; border: 1px dashed var(--line-strong); display: grid; place-items: center; color: var(--muted); cursor: pointer; overflow: hidden; background: var(--sunken); }
.func-img img { width: 100%; height: 100%; object-fit: cover; }
.func-img:hover { border-color: var(--violet); color: var(--violet); }
.func-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
.func-chip { position: relative; cursor: pointer; }
.func-chip input { position: absolute; opacity: 0; }
.func-chip > span { display: grid; grid-template-columns: 32px minmax(0, 1fr); column-gap: 10px; align-items: center; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: var(--r-md); background: var(--surface); min-height: 50px; }
.func-chip img, .func-chip i { grid-row: span 2; width: 32px; height: 32px; border-radius: 8px; object-fit: cover; display: grid; place-items: center; font-style: normal; font-weight: 700; background: var(--violet-soft); color: var(--violet-ink); }
.func-chip b { font-size: 13.5px; font-weight: 600; }
.func-chip small { font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.func-chip input:checked + span { border-color: var(--violet); box-shadow: inset 0 0 0 1px var(--violet); background: var(--violet-soft); }
.func-chip input:focus-visible + span { box-shadow: var(--focus); }
@media (max-width: 640px) { .func-form { grid-template-columns: 44px minmax(0, 1fr); } .func-form > :nth-child(n+4) { grid-column: 1 / -1; } }

/* Statistiques */
.stats-title { align-items: center; }
.stats-title .input { min-height: 34px; padding: 5px 30px 5px 10px; font-size: 14px; width: auto; }
.ledger-soft { border-top-left-radius: 0; border-top-right-radius: 0; background: var(--sunken); }
.ledger-soft dd { font-size: 21px; }
.ledger.ledger-top { border-bottom-left-radius: 0; border-bottom-right-radius: 0; margin-bottom: 0; }
.ledger + .ledger-soft { border-top: 0; }
.delta { font-weight: 700; }
.delta.is-up { color: var(--green); }
.delta.is-down { color: var(--red); }
.charts-row { margin-bottom: 18px; }
.chart { margin: 0; }
.chart svg { width: 100%; height: auto; max-height: 360px; display: block; }
.chart-grid { stroke: var(--line); stroke-width: 1; }
.chart-axis { stroke: var(--line-strong); stroke-width: 1; }
.chart-tick { font-size: 12px; fill: var(--muted); font-family: var(--font-ui); font-variant-numeric: tabular-nums; }
.chart-hit { fill: transparent; }
.chart-group:hover .chart-hit { fill: rgba(110, 86, 207, .06); }
.chart-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 10px; font-size: 13px; color: var(--ink-2); }
.chart-legend span { display: inline-flex; align-items: center; gap: 7px; }
.chart-legend i { width: 10px; height: 10px; border-radius: 3px; }
.chart-legend strong { font-variant-numeric: tabular-nums; }
.hbars { list-style: none; margin: 0; padding: 14px 20px 18px; display: grid; gap: 12px; }
.hbars li { display: grid; grid-template-columns: minmax(0, 170px) minmax(0, 1fr) auto; gap: 12px; align-items: center; font-size: 13.5px; }
.hbar-label { display: inline-flex; align-items: center; gap: 8px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.hbar-label i { width: 9px; height: 9px; border-radius: 2px; flex: none; }
.hbar-track { height: 10px; background: var(--paper); border-radius: 99px; overflow: hidden; }
.hbar { display: block; height: 100%; background: var(--violet); border-radius: 0 4px 4px 0; }
.hbar-value { font-weight: 600; }
.table-compact td, .table-compact th { padding: 9px 14px; }
.table tr.is-current td, .table tr.is-current th { background: var(--violet-soft); }
@media (max-width: 640px) { .hbars li { grid-template-columns: minmax(0, 1fr) auto; } .hbar-track { grid-column: 1 / -1; grid-row: 2; } }

/* ------------------------------------------------------------------ */
/* Fiche client                                                         */
/* ------------------------------------------------------------------ */
.profile-head { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin-bottom: 22px; }
.profile-head .avatar { border-radius: 18px; }
.profile-head h1 { font-size: 28px; }
.profile-head .meta { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; color: var(--muted); font-size: 14px; align-items: center; }
.profile-head .page-actions { margin-left: auto; }

.facts { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 10px 12px; margin: 0; font-size: 14px; }
.facts dt { color: var(--muted); }
.facts dd { margin: 0; overflow-wrap: anywhere; }

.money-pair { display: grid; grid-template-columns: 1fr 1fr; }
.money-pair > div { padding: 16px 20px; }
.money-pair > div + div { border-left: 1px solid var(--line); }
.money-pair span { display: block; font-size: 12.5px; color: var(--muted); }
.money-pair strong { font-family: var(--font-display); font-size: 21px; font-variant-numeric: tabular-nums; }

.timeline { list-style: none; margin: 0; padding: 0; }
.timeline li { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; gap: 12px; padding: 14px 20px; border-top: 1px solid var(--line); align-items: start; }
.timeline li:first-child { border-top: 0; }
.timeline .title { font-weight: 600; }
.timeline .body { color: var(--ink-2); font-size: 13.5px; white-space: pre-line; margin-top: 2px; }
.timeline .sub { color: var(--muted); font-size: 12.5px; margin-top: 3px; }
.timeline li.is-done .title { color: var(--muted); text-decoration: line-through; text-decoration-color: var(--line-strong); }
.quick-add { padding: 16px 20px; border-bottom: 1px solid var(--line); background: var(--sunken); }
.quick-add .row { display: grid; grid-template-columns: 150px minmax(0, 1fr) 190px auto; gap: 8px; }
.quick-add details { margin-top: 8px; }
.quick-add summary { cursor: pointer; font-size: 13px; color: var(--violet-ink); }

/* Fiche client : chiffres, encaissements, page client */
.ledger-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); margin-bottom: 20px; }
.ledger-5 dd { font-size: 22px; }
.ledger > div.is-due dd { color: var(--red); }
.paid-ok { color: var(--green); font-weight: 600; }
.paid-part { color: #A35F00; font-weight: 600; }
.paid-none { color: var(--muted); }
.pay-bar { display: block; width: 72px; height: 4px; margin: 5px 0 0 auto; border-radius: 99px; background: var(--paper); overflow: hidden; }
.pay-bar > span { display: block; height: 100%; background: var(--green); border-radius: inherit; }
.portal-card .panel-head { align-items: flex-start; }
.token { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; background: var(--paper); padding: 2px 6px; border-radius: 5px; word-break: break-all; }
.portal-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.portal-timeline { border-top: 1px solid var(--line); padding: 14px 20px 18px; }
.portal-timeline h3 { font-size: 14px; margin-bottom: 10px; }
.portal-timeline ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.portal-timeline li { display: grid; grid-template-columns: 12px minmax(0, 1fr); gap: 10px; position: relative; }
.portal-timeline li + li::before { content: ""; position: absolute; left: 5px; top: -10px; height: 12px; width: 2px; background: var(--line); }
.portal-timeline .dot { width: 12px; height: 12px; border-radius: 50%; background: var(--violet-soft); box-shadow: inset 0 0 0 3px var(--violet); margin-top: 3px; }
.portal-timeline p { margin: 0; font-size: 13.5px; color: var(--ink-2); }
.portal-timeline li span:not(.dot) { font-size: 12px; color: var(--muted); }
@media (max-width: 1100px) { .ledger-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .ledger-5 > div:nth-child(4) { border-left: 0; } .ledger-5 > div:nth-child(n+4) { border-top: 1px solid var(--line); } .ledger-5 > div:nth-child(3) { border-left: 1px solid var(--line); border-top: 0; } }
@media (max-width: 640px) { .ledger-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ledger-5 > div { border-left: 0 !important; border-top: 1px solid var(--line); } .ledger-5 > div:nth-child(-n+2) { border-top: 0; } .ledger-5 > div:nth-child(even) { border-left: 1px solid var(--line) !important; } }

/* ------------------------------------------------------------------ */
/* Rôles & droits                                                       */
/* ------------------------------------------------------------------ */
.perm-group { border-top: 1px solid var(--line); padding: 16px 20px; display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 16px; }
.perm-group:first-child { border-top: 0; }
.perm-group h3 { font-size: 14.5px; }
.perm-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 18px; }
.role-card { display: flex; align-items: center; gap: 14px; padding: 14px 20px; border-top: 1px solid var(--line); }
.role-card:first-child { border-top: 0; }
.role-card .grow { flex: 1; min-width: 0; }
.role-perms { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }

/* ------------------------------------------------------------------ */
/* Abonnement                                                           */
/* ------------------------------------------------------------------ */
.plan-current { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 0; overflow: hidden; }
.plan-current .left { padding: 24px; background: var(--night); color: var(--night-ink); }
.plan-current .left h2 { color: #fff; font-size: 26px; }
.plan-current .left p { color: var(--night-muted); }
.plan-current .right { padding: 24px; }
.meter { height: 8px; border-radius: 99px; background: var(--paper); overflow: hidden; margin: 6px 0 14px; }
.meter > span { display: block; height: 100%; background: var(--violet); border-radius: inherit; }
.meter.is-full > span { background: var(--red); }
.plans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.plan { position: relative; padding: 22px; display: flex; flex-direction: column; gap: 12px; }
.plan.is-current { border-color: var(--amber); box-shadow: inset 0 0 0 1px var(--amber); }
.plan .price { font-family: var(--font-display); font-size: 32px; font-weight: 700; letter-spacing: -.02em; }
.plan .price small { font-family: var(--font-ui); font-size: 13.5px; color: var(--muted); font-weight: 500; letter-spacing: 0; }
.plan ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 7px; font-size: 13.5px; }
.plan li { display: flex; gap: 8px; }
.plan li .ic { color: var(--green); width: 16px; height: 16px; margin-top: 2px; }
.plan .btn { margin-top: auto; }
.plan-badge { position: absolute; top: -11px; left: 20px; background: var(--amber); color: var(--amber-ink); font-size: 12px; font-weight: 700; padding: 2px 10px; border-radius: 999px; }

/* Modules */
.plugins { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; }
.plugin { padding: 18px; display: flex; flex-direction: column; gap: 8px; }
.plugin.is-on { border-color: #BFE3CF; }
.plugin-head { display: flex; align-items: center; justify-content: space-between; }
.plugin h3 { font-size: 16px; }
.plugin p { color: var(--ink-2); font-size: 13.5px; margin: 0; }
.plugin-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: auto; padding-top: 8px; }

/* Page « bientôt » */
.roadmap-card { padding: 34px; display: grid; grid-template-columns: 1fr auto; gap: 26px; align-items: center; }
.lot-badge { width: 120px; height: 120px; border-radius: 22px; background: var(--night); color: #fff; display: grid; place-items: center; text-align: center; }
.lot-badge strong { display: block; font-family: var(--font-display); font-size: 46px; line-height: 1; color: var(--amber); }
.lot-badge span { font-size: 13px; color: var(--night-muted); }

/* ------------------------------------------------------------------ */
/* Catalogue                                                            */
/* ------------------------------------------------------------------ */
.thumb { width: 40px; height: 40px; border-radius: 9px; overflow: hidden; flex: none; background: var(--paper); display: grid; place-items: center; }
.thumb img { width: 100%; height: 100%; object-fit: cover; }
.thumb-icon { color: var(--muted); border: 1px solid var(--line); background: var(--sunken); }
.cat-dot { display: inline-flex; align-items: center; gap: 7px; font-size: 13.5px; color: var(--ink-2); }
.cat-dot::before { content: ""; width: 8px; height: 8px; border-radius: 2px; background: var(--c, var(--violet)); flex: none; }
.margin { font-weight: 600; color: var(--green); }
.margin.is-low { color: #A35F00; }
.seg-wrap { flex-wrap: wrap; }
.repeat { display: grid; gap: 8px; }
.repeat-row { display: grid; grid-template-columns: minmax(0, 1fr) 90px 32px; gap: 8px; align-items: center; }
.pack-sum { margin: 12px 0 0; font-size: 13.5px; color: var(--muted); }
.pack-sum strong { color: var(--ink); font-variant-numeric: tabular-nums; }
.opt-links { display: grid; gap: 10px; }
.opt-link { border: 1px solid var(--line); border-radius: var(--r-md); padding: 12px 14px; display: grid; gap: 8px; }
.opt-rules { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; color: var(--ink-2); }
.opt-rules label { display: inline-flex; align-items: center; gap: 6px; }
.input-xs { width: 56px; min-height: 30px; padding: 4px 8px; text-align: center; }
.swatch-row { display: flex; flex-wrap: wrap; gap: 5px; }
.opt-chip { display: inline-flex; align-items: center; gap: 6px; padding: 2px 9px; border-radius: 999px; background: var(--paper); border: 1px solid var(--line); font-size: 12.5px; color: var(--ink-2); }
.opt-chip[style]::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1px rgba(0,0,0,.15); }
a.opt-chip:hover { border-color: var(--line-strong); text-decoration: none; }
.sticky-aside { position: sticky; top: 80px; }
.sticky-aside .panel + .panel { margin-top: 14px; }
.price-big { font-family: var(--font-display); font-size: 30px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; margin: 2px 0 10px; }
.price-big small { font-family: var(--font-ui); font-size: 13px; color: var(--muted); font-weight: 500; letter-spacing: 0; }
.price-lines { display: grid; gap: 6px; border-top: 1px solid var(--line); padding-top: 10px; font-size: 14px; }
.price-lines div { display: flex; justify-content: space-between; }
.price-lines span { color: var(--muted); }
.price-lines strong { font-variant-numeric: tabular-nums; }
.price-lines .is-low { color: #A35F00; }
.product-photo { aspect-ratio: 4 / 3; border-radius: var(--r-md); border: 1px dashed var(--line-strong); background: var(--sunken); display: grid; place-items: center; color: var(--muted); overflow: hidden; margin: 8px 0 10px; }
.product-photo img { width: 100%; height: 100%; object-fit: cover; }
.cat-row { padding-left: calc(20px + var(--depth, 0) * 28px) !important; }
.cat-row > form:first-child { flex: 1; min-width: 0; }
.cat-form { display: grid; grid-template-columns: 34px minmax(0, 1.2fr) minmax(0, 1fr) auto auto; gap: 8px; align-items: center; }
.color-dot-input { width: 30px; height: 30px; padding: 0; border: 1px solid var(--line-strong); border-radius: 50%; background: none; cursor: pointer; overflow: hidden; }
.color-dot-input::-webkit-color-swatch-wrapper { padding: 0; }
.color-dot-input::-webkit-color-swatch { border: 0; border-radius: 50%; }
.color-dot-input::-moz-color-swatch { border: 0; border-radius: 50%; }
.color-dot-input[data-empty="1"] { background: repeating-linear-gradient(45deg, var(--sunken) 0 4px, var(--line) 4px 6px); }
.color-dot-input[data-empty="1"]::-webkit-color-swatch { opacity: 0; }
.value-head, .value-row { display: grid; grid-template-columns: 34px minmax(0, 1.4fr) 120px 120px 80px 32px; gap: 8px; align-items: center; }
.value-head { font-size: 12.5px; color: var(--muted); font-weight: 600; margin-bottom: 6px; }
.no-cost .value-head, .no-cost .value-row { grid-template-columns: 34px minmax(0, 1.4fr) 120px 80px 32px; }
@media (max-width: 640px) {
  .cat-form { grid-template-columns: 34px minmax(0, 1fr); }
  .cat-form > :nth-child(n+3) { grid-column: 1 / -1; }
  .value-head { display: none; }
  .value-row { grid-template-columns: 34px minmax(0, 1fr) 32px; }
  .value-row > .input-affix, .value-row > input[name="values[stock][]"] { grid-column: 2; }
  .repeat-row { grid-template-columns: minmax(0, 1fr) 70px 32px; }
}

/* ------------------------------------------------------------------ */
/* Prestations                                                          */
/* ------------------------------------------------------------------ */
.date-chip { --c: var(--violet); display: inline-grid; grid-template-columns: auto; justify-items: center; min-width: 54px; padding: 4px 6px 5px; border-radius: 9px; background: var(--sunken); border: 1px solid var(--line); border-top: 3px solid var(--c); line-height: 1.05; flex: none; }
.date-chip b { font-family: var(--font-display); font-size: 19px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.date-chip span { font-size: 11.5px; color: var(--muted); white-space: nowrap; }
.date-chip.is-empty { border-top-color: var(--line-strong); }
.date-chip.is-empty b { color: var(--muted); }

.event-head { --cat: var(--violet); display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin-bottom: 18px; }
.event-date { position: relative; display: grid; justify-items: center; align-content: center; width: 92px; min-height: 92px; padding: 8px; border-radius: var(--r-lg); background: var(--night); color: #fff; flex: none; }
.event-date::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: 0; height: 3px; border-radius: 3px 3px 0 0; background: var(--cat); }
.event-date .d { font-family: var(--font-display); font-size: 38px; font-weight: 700; line-height: .95; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.event-date .m { font-family: var(--font-display); font-size: 14px; font-weight: 600; color: var(--amber); margin-top: 3px; white-space: nowrap; }
.event-date .w { font-size: 12px; color: var(--night-muted); margin-top: 3px; white-space: nowrap; }
.event-title { min-width: 0; flex: 1; }
.event-title h1 { font-size: 28px; overflow-wrap: anywhere; }
.event-title .meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-top: 8px; color: var(--muted); font-size: 14px; }
.countdown { font-weight: 600; color: var(--ink-2); }
.countdown.is-soon { color: #8A6400; background: var(--amber-soft); padding: 1px 9px; border-radius: 999px; }

/* Avancement du dossier : une vraie séquence, donc une frise */
.stepper { list-style: none; margin: 0 0 22px; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.stepper li { position: relative; border-left: 1px solid var(--line); }
.stepper li:first-child { border-left: 0; }
.stepper form { margin: 0; height: 100%; }
.stepper button, .stepper .step { display: flex; align-items: center; gap: 9px; width: 100%; height: 100%; padding: 12px 14px; border: 0; background: none; font: inherit; font-size: 13.5px; font-weight: 600; color: var(--muted); text-align: left; }
.stepper button { cursor: pointer; }
.stepper button:hover { background: var(--sunken); color: var(--ink); }
.stepper .dot { width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--line-strong); display: grid; place-items: center; flex: none; background: var(--surface); }
.stepper .dot .ic { width: 12px; height: 12px; stroke-width: 3; }
.stepper li.is-done button, .stepper li.is-done .step { color: var(--ink-2); }
.stepper li.is-done .dot { background: var(--green); border-color: var(--green); color: #fff; }
.stepper li.is-current { background: var(--night); }
.stepper li.is-current .step { color: #fff; }
.stepper li.is-current .dot { border-color: var(--amber); background: var(--amber); box-shadow: 0 0 0 3px rgba(242,183,5,.25); }

.crew > li { flex-wrap: wrap; }
.crew > li.is-off { opacity: .55; }
.crew .grow { min-width: 160px; }
.crew-note { margin-top: 3px; padding-left: 9px; border-left: 2px solid var(--line-strong); color: var(--ink-2) !important; }
.crew-fee { text-align: right; font-weight: 600; white-space: nowrap; }
.crew-fee small { font-weight: 500; color: var(--muted); font-size: 11.5px; margin-left: 3px; }
.crew-paid { display: block; font-size: 11.5px; font-weight: 600; color: #8A6400; }
.crew-paid.is-paid { color: var(--green); }
.crew-paid.is-direct { color: var(--muted); font-weight: 500; }
.avatar-partner { background: var(--amber-soft) !important; color: #6B5000 !important; box-shadow: inset 0 0 0 1px #F0DA94; }
.add-block { border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); }
.add-block > summary { display: flex; align-items: center; gap: 8px; padding: 13px 20px; cursor: pointer; font-weight: 600; color: var(--violet-ink); list-style: none; }
.add-block > summary::-webkit-details-marker { display: none; }
.add-block[open] > summary { border-bottom: 1px solid var(--line); }
.add-block > form { padding: 16px 20px 18px; }
.add-actions { display: flex; justify-content: flex-end; }
.rows-top { border-top: 1px solid var(--line); }
.quick-add .row-sub { margin-top: 8px; grid-template-columns: auto minmax(0, 240px) minmax(0, 1fr); align-items: center; }
.quick-add .row-sub details { margin-top: 0; }
.quick-add .row-sub .input { min-height: 34px; padding-top: 5px; padding-bottom: 5px; }
.venue-notes { display: block; margin-top: 6px; padding: 7px 10px; border-radius: var(--r-sm); background: var(--amber-soft); color: #5E4700; font-size: 13px; white-space: pre-line; }

.margin-rate { font-family: var(--font-display); font-size: 22px; font-weight: 700; color: var(--green); font-variant-numeric: tabular-nums; }
.margin-rate.is-neg { color: var(--red); }
.margin-lines { margin: 0; display: grid; gap: 8px; font-size: 14px; }
.margin-lines > div { display: flex; justify-content: space-between; gap: 12px; }
.margin-lines dt { color: var(--ink-2); }
.margin-lines dt small { color: var(--muted); }
.margin-lines dd { margin: 0; font-variant-numeric: tabular-nums; font-weight: 600; }
.margin-lines .cost dd { color: var(--muted); font-weight: 500; }
.margin-lines .total { padding-top: 10px; margin-top: 2px; border-top: 1px solid var(--line); }
.margin-lines .total dt { font-weight: 700; color: var(--ink); }
.margin-lines .total dd { font-family: var(--font-display); font-size: 19px; color: var(--green); }
.margin-lines .total.is-neg dd { color: var(--red); }

.pcat-row > form:first-child { flex: 1; min-width: 0; }
.pcat-form { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto auto; gap: 10px; align-items: center; }
.pcat-new { border-top: 1px solid var(--line); border-bottom: 0; border-radius: 0 0 var(--r-lg) var(--r-lg); }
.form-stack { display: grid; gap: 14px; }
.pay-form { display: flex; gap: 6px; align-items: center; }
.pay-form .input { width: 110px; min-height: 32px; padding: 4px 8px; font-size: 13px; }
.rows > li.is-off { opacity: .55; }
.rows a.title:hover { color: var(--violet-ink); }

/* ------------------------------------------------------------------ */
/* Agenda                                                               */
/* ------------------------------------------------------------------ */
.cal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 14px 16px; border-bottom: 1px solid var(--line); }
.cal-nav { display: flex; align-items: center; gap: 8px; }
.cal-nav h2 { font-size: 21px; min-width: 9.5em; text-align: center; }
.cal-tools { display: flex; align-items: center; gap: 12px; }
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-wd { padding: 8px 10px; font-size: 12.5px; font-weight: 600; color: var(--muted); background: var(--sunken); border-bottom: 1px solid var(--line); }
.cal-wd:nth-child(n+6) { color: var(--ink-2); }
.cal-day { min-height: 118px; padding: 6px 6px 8px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cal-day:nth-child(7n+7) { border-right: 0; }
.cal-day:nth-last-child(-n+7) { border-bottom: 0; }
.cal-day.is-out { background: #FBFAFD; }
.cal-day.is-out .cal-num { color: #B9B3C4; }
.cal-num { align-self: flex-start; min-width: 26px; height: 26px; padding: 0 6px; border-radius: 999px; display: grid; place-items: center; font-size: 13px; font-weight: 600; color: var(--ink-2); font-variant-numeric: tabular-nums; }
.cal-day.is-today .cal-num { background: var(--amber); color: var(--amber-ink); }
.cal-ev { --c: var(--violet); display: flex; gap: 5px; align-items: baseline; padding: 3px 7px; border-radius: 6px; font-size: 12.5px; line-height: 1.3; color: var(--ink); background: var(--violet-soft); background: color-mix(in srgb, var(--c) 14%, white); box-shadow: inset 3px 0 0 var(--c); min-width: 0; }
.cal-ev:hover { text-decoration: none; background: color-mix(in srgb, var(--c) 24%, white); }
.cal-ev time { font-weight: 700; font-variant-numeric: tabular-nums; flex: none; }
.cal-ev span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-ev.st-lead, .cal-ev.st-quoted { background: var(--surface); box-shadow: inset 0 0 0 1px var(--c); color: var(--ink-2); border-left: 0; }
.cal-unav { padding: 2px 7px; border-radius: 6px; font-size: 12px; color: var(--muted); background: repeating-linear-gradient(-45deg, #F1EFF5 0 5px, #E7E4EE 5px 10px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 12px 16px; border-top: 1px solid var(--line); font-size: 13px; color: var(--ink-2); }
.cal-key-lead, .cal-key-unav { display: inline-flex; align-items: center; gap: 7px; }
.cal-key-lead::before, .cal-key-unav::before { content: ""; width: 16px; height: 10px; border-radius: 3px; }
.cal-key-lead::before { box-shadow: inset 0 0 0 1px var(--violet); }
.cal-key-unav::before { background: repeating-linear-gradient(-45deg, #F1EFF5 0 3px, #DCD8E4 3px 6px); }
.crew-stack { display: inline-flex; align-items: center; }
.mini-av { --c: #8A82A0; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: 10.5px; font-weight: 700; color: #fff; background: var(--c); box-shadow: 0 0 0 2px var(--surface); margin-left: -6px; }
.mini-av:first-child { margin-left: 0; }
.mini-av.is-pending { background: var(--surface); color: var(--ink-2); box-shadow: 0 0 0 2px var(--surface), inset 0 0 0 1.5px var(--c); }
.unav-form { display: grid; gap: 12px; border-top: 1px solid var(--line); border-bottom: 0; border-radius: 0 0 var(--r-lg) var(--r-lg); }
.unav-form .btn { justify-self: start; }
.nav a .nav-badge { margin-left: auto; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; display: grid; place-items: center; font-size: 11.5px; font-weight: 700; background: var(--amber); color: var(--amber-ink); }

/* ------------------------------------------------------------------ */
/* Mes prestations : propositions façon feuille de route                */
/* ------------------------------------------------------------------ */
.grid-top { align-items: start; }
.offers { display: grid; gap: 14px; margin-bottom: 30px; }
.offer { --cat: var(--violet); display: grid; grid-template-columns: 96px minmax(0, 1fr) 230px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; box-shadow: 0 0 0 3px var(--amber-soft); border-color: #EBCB63; }
.offer-date { display: grid; align-content: center; justify-items: center; padding: 14px 6px; background: var(--night); color: #fff; position: relative; }
.offer-date::after { content: ""; position: absolute; right: 0; top: 14px; bottom: 14px; width: 3px; border-radius: 3px 0 0 3px; background: var(--cat); }
.offer-date .d { font-family: var(--font-display); font-size: 40px; font-weight: 700; line-height: .95; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.offer-date .m { font-family: var(--font-display); font-size: 15px; font-weight: 600; color: var(--amber); margin-top: 3px; }
.offer-date .w { font-size: 12px; color: var(--night-muted); margin-top: 5px; white-space: nowrap; }
.offer-body { padding: 16px 20px; min-width: 0; }
.offer-role { display: flex; align-items: baseline; gap: 10px; margin: 0 0 2px; font-family: var(--font-display); font-size: 15px; font-weight: 650; color: #7A5B00; }
.offer-when { font-family: var(--font-ui); font-size: 12.5px; font-weight: 600; color: var(--muted); }
.offer h3 { font-size: 20px; margin-bottom: 10px; }
.offer h3 a { color: var(--ink); }
.offer-facts { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 13.5px; color: var(--ink-2); }
.offer-facts li { display: inline-flex; align-items: center; gap: 6px; }
.offer-facts .ic { color: var(--muted); }
.offer-note { margin: 12px 0 0; padding: 9px 12px; border-radius: var(--r-md); background: var(--sunken); border: 1px solid var(--line); font-size: 13.5px; white-space: pre-line; }
.offer-side { display: flex; flex-direction: column; gap: 8px; justify-content: center; padding: 16px 18px; background: var(--sunken); border-left: 1px dashed var(--line-strong); }
.offer-side .btn { width: 100%; justify-content: center; }
.offer-side form { margin: 0; }
.offer-fee { margin: 0 0 4px; display: flex; align-items: baseline; gap: 6px; }
.offer-fee span { font-size: 13px; color: var(--muted); margin-right: auto; }
.offer-fee strong { font-family: var(--font-display); font-size: 24px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.offer-fee small { color: var(--muted); font-size: 12px; }
.offer-decline > summary { list-style: none; }
.offer-decline > summary::-webkit-details-marker { display: none; }
.offer-decline form { display: grid; gap: 6px; margin-top: 6px; }
.offer-decline textarea { min-height: 60px; font-size: 13.5px; }
a.ticket { color: var(--ink); }
.task-list > li { align-items: flex-start; }
.task-list form { margin: 0; }
.task-check { width: 22px; height: 22px; margin-top: 1px; border-radius: 7px; border: 2px solid var(--line-strong); background: var(--surface); display: grid; place-items: center; cursor: pointer; color: #fff; padding: 0; }
.task-check:hover { border-color: var(--violet); }
.task-check .ic { width: 13px; height: 13px; stroke-width: 3; }
.task-list li.is-done .task-check { background: var(--green); border-color: var(--green); }
.task-list li.is-done .title { color: var(--muted); text-decoration: line-through; text-decoration-color: var(--line-strong); }

@media (max-width: 1100px) {
  .stepper { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .stepper li:nth-child(4) { border-left: 0; }
  .stepper li:nth-child(n+4) { border-top: 1px solid var(--line); }
  .offer { grid-template-columns: 96px minmax(0, 1fr); }
  .offer-side { grid-column: 1 / -1; border-left: 0; border-top: 1px dashed var(--line-strong); flex-direction: row; flex-wrap: wrap; align-items: center; }
  .offer-side .btn { width: auto; }
  .offer-fee { margin: 0 auto 0 0; }
}
@media (max-width: 640px) {
  .event-date { width: 76px; min-height: 76px; }
  .event-date .d { font-size: 30px; }
  .event-title h1 { font-size: 23px; }
  .event-head .page-actions { width: 100%; }
  .stepper { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stepper li:nth-child(odd) { border-left: 0; }
  .stepper li:nth-child(n+3) { border-top: 1px solid var(--line); }
  .stepper li:nth-child(4) { border-left: 1px solid var(--line); }
  .quick-add .row-sub { grid-template-columns: minmax(0, 1fr); }
  .cal-nav h2 { font-size: 17px; min-width: 0; }
  .cal-tools { width: 100%; justify-content: space-between; }
  .cal-tools .toolbar-form, .cal-tools select.input { min-width: 0; max-width: 100%; }
  .cal-tools .toolbar-form { flex: 1; justify-content: flex-end; }
  .cal-wd { padding: 6px 2px; text-align: center; font-size: 11.5px; }
  .cal-day { min-height: 58px; padding: 3px; gap: 2px; align-items: center; }
  .cal-num { min-width: 22px; height: 22px; font-size: 12px; align-self: center; }
  .cal-ev { width: 8px; height: 8px; padding: 0; border-radius: 50%; background: var(--c); box-shadow: none; }
  .cal-ev time, .cal-ev span { display: none; }
  .cal-ev.st-lead, .cal-ev.st-quoted { background: var(--surface); box-shadow: inset 0 0 0 2px var(--c); }
  .cal-unav { width: 100%; height: 4px; padding: 0; font-size: 0; }
  .offer { grid-template-columns: 76px minmax(0, 1fr); }
  .offer-body { padding: 14px; }
  .offer h3 { font-size: 17px; }
  .pcat-form { grid-template-columns: 34px minmax(0, 1fr); }
  .pcat-form > :nth-child(n+5) { grid-column: 1 / -1; }
  .rows .hide-sm { display: none; }
}

/* ------------------------------------------------------------------ */
/* Catégories : pastille icône ou image                                 */
/* ------------------------------------------------------------------ */
.cat-badge { --c: var(--violet); display: inline-grid; place-items: center; flex: none; width: 34px; height: 34px; border-radius: 10px; color: var(--c); background: color-mix(in srgb, var(--c) 14%, white); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 22%, transparent); overflow: hidden; }
.cat-badge .ic { width: 19px; height: 19px; stroke-width: 1.7; }
.cat-badge.has-img { background: var(--sunken); box-shadow: inset 0 0 0 1px var(--line); }
.cat-badge.has-img img { width: 100%; height: 100%; object-fit: cover; }
.cat-badge.is-none { color: var(--muted); background: var(--paper); box-shadow: inset 0 0 0 1px var(--line); }
.cat-badge-sm { width: 24px; height: 24px; border-radius: 7px; }
.cat-badge-sm .ic { width: 14px; height: 14px; }
.cat-badge-lg { width: 46px; height: 46px; border-radius: 13px; }
.cat-badge-lg .ic { width: 24px; height: 24px; }
.cat-badge-xl { width: 64px; height: 64px; border-radius: 17px; }
.cat-badge-xl .ic { width: 32px; height: 32px; stroke-width: 1.5; }

.cat-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.cat-cell { position: relative; }
.cat-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 16px; display: grid; gap: 12px; height: 100%; }
.cat-card.is-new { border-style: dashed; border-color: var(--line-strong); background: var(--sunken); }
.cat-card-top { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: center; padding-right: 30px; }
.cat-preview { position: relative; cursor: pointer; border-radius: 17px; }
.cat-preview:hover .cat-preview-hint, .cat-preview:focus-within .cat-preview-hint { opacity: 1; }
.cat-preview-hint { position: absolute; right: -4px; bottom: -4px; width: 24px; height: 24px; border-radius: 50%; background: var(--night); color: #fff; display: grid; place-items: center; opacity: .85; box-shadow: 0 0 0 2px var(--surface); }
.cat-card-name { display: grid; gap: 3px; min-width: 0; }
.cat-card-name .input { font-weight: 600; }
.cat-color .color-dot-input { width: 30px; height: 30px; }
.cat-delete { position: absolute; top: 12px; right: 10px; }
.icon-picker > summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--violet-ink); list-style: none; display: inline-flex; align-items: center; gap: 6px; }
.icon-picker > summary::-webkit-details-marker { display: none; }
.icon-picker > summary::after { content: "›"; transform: rotate(90deg); display: inline-block; }
.icon-picker[open] > summary::after { transform: rotate(-90deg); }
.icon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 6px; margin-top: 10px; }
.icon-opt { position: relative; cursor: pointer; }
.icon-opt input { position: absolute; opacity: 0; }
.icon-opt > span { display: grid; justify-items: center; gap: 3px; padding: 8px 2px 6px; border-radius: 9px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); }
.icon-opt .ic { width: 22px; height: 22px; stroke-width: 1.6; }
.icon-opt small { font-size: 10.5px; color: var(--muted); text-align: center; line-height: 1.15; }
.icon-opt:hover > span { border-color: var(--line-strong); }
.icon-opt input:checked + span { border-color: var(--violet); background: var(--violet-soft); color: var(--violet-ink); box-shadow: inset 0 0 0 1px var(--violet); }
.icon-opt input:focus-visible + span { box-shadow: var(--focus); }
.cat-card-foot { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; margin-top: auto; }
.cat-card-foot .btn-ghost { margin-right: auto; }

.cat-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 10px; }
.cat-tile { --c: var(--violet); position: relative; cursor: pointer; }
.cat-tile input { position: absolute; opacity: 0; }
.cat-tile > span { display: grid; justify-items: center; gap: 8px; padding: 14px 8px 12px; border: 1px solid var(--line-strong); border-radius: var(--r-md); background: var(--surface); text-align: center; height: 100%; transition: border-color .12s, transform .12s; }
.cat-tile b { font-size: 13.5px; font-weight: 600; line-height: 1.2; }
.cat-tile:hover > span { border-color: color-mix(in srgb, var(--c) 50%, var(--line-strong)); }
.cat-tile input:checked + span { border-color: var(--c); box-shadow: inset 0 0 0 1px var(--c), 0 0 0 3px color-mix(in srgb, var(--c) 16%, transparent); background: color-mix(in srgb, var(--c) 6%, white); }
.cat-tile input:focus-visible + span { box-shadow: var(--focus); }
.cat-tile.is-none > span { border-style: dashed; }

/* ------------------------------------------------------------------ */
/* Listes de choix enrichies                                           */
/* ------------------------------------------------------------------ */
.picker { position: relative; }
.picker-native { position: absolute !important; opacity: 0; pointer-events: none; width: 1px !important; height: 1px !important; min-height: 0 !important; padding: 0 !important; border: 0 !important; }
.picker-btn { display: flex; align-items: center; gap: 10px; text-align: left; cursor: pointer; min-height: 46px; padding: 6px 10px 6px 7px; }
.picker-btn > .ic:last-child { margin-left: auto; color: var(--muted); flex: none; transition: transform .15s; }
.picker.is-open .picker-btn { border-color: var(--violet); box-shadow: var(--focus); }
.picker.is-open .picker-btn > .ic:last-child { transform: rotate(180deg); }
.pk-visual { width: 32px; height: 32px; border-radius: 9px; flex: none; display: grid; place-items: center; overflow: hidden; font-size: 11.5px; font-weight: 700; }
.pk-visual img { width: 100%; height: 100%; object-fit: cover; }
.pk-visual.has-icon { --c: var(--violet); color: var(--c); background: color-mix(in srgb, var(--c) 14%, white); }
.pk-visual.has-icon .ic { width: 17px; height: 17px; }
.pk-visual.has-initials { --c: #8A82A0; border-radius: 50%; color: #fff; background: var(--c); }
.pk-visual.is-none { background: var(--paper); color: var(--muted); }
.pk-visual.is-none .ic { width: 16px; height: 16px; }
.pk-text { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.pk-label { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pk-sub { font-size: 12.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pk-flag { align-self: flex-start; margin-top: 3px; font-size: 11.5px; font-weight: 600; padding: 0 7px; border-radius: 999px; background: var(--paper); color: var(--muted); }
.pk-flag.is-free { background: var(--green-soft); color: #16704A; }
.pk-flag.is-warn { background: var(--amber-soft); color: #6B5000; }
.pk-flag.is-busy { background: var(--red-soft); color: var(--red); }
.picker-btn .pk-flag.is-free { display: none; }
.picker-pop { position: absolute; z-index: 40; left: 0; right: 0; top: calc(100% + 6px); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--shadow-pop); padding: 6px; }
.picker.opens-up .picker-pop { top: auto; bottom: calc(100% + 6px); }
.picker-search { min-height: 36px; margin-bottom: 6px; }
.picker-list { list-style: none; margin: 0; padding: 0; max-height: 300px; overflow-y: auto; }
.picker-opt { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: 8px; cursor: pointer; }
.picker-opt:hover, .picker-opt.is-active { background: var(--paper); }
.picker-opt[aria-selected="true"] { background: var(--violet-soft); }
.picker-opt[aria-selected="true"] .pk-label { color: var(--violet-ink); }
.picker-opt[aria-disabled="true"] { opacity: .45; cursor: not-allowed; }
.picker-opt.is-busy .pk-label { color: var(--ink-2); }
.picker-group { padding: 10px 8px 4px; font-size: 12px; font-weight: 600; color: var(--muted); }
.picker-empty { margin: 0; padding: 12px 8px; color: var(--muted); font-size: 13.5px; }
.avail-warn { display: flex; align-items: center; gap: 8px; margin: 0; padding: 9px 12px; border-radius: var(--r-md); background: var(--amber-soft); color: #5E4700; font-size: 13.5px; }
.avail-warn.is-busy { background: var(--red-soft); color: #8F2323; }

/* ------------------------------------------------------------------ */
/* Lieux                                                                */
/* ------------------------------------------------------------------ */
.venue-toolbar { margin-bottom: 16px; }
.venue-toolbar .toolbar { border-bottom: 0; }
.venue-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.venues-layout .venue-grid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
.venue-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; display: flex; flex-direction: column; }
.venue-card.is-current { border-color: var(--violet); box-shadow: 0 0 0 3px var(--violet-soft); }
.venue-card-photo { position: relative; display: block; aspect-ratio: 16 / 10; background: var(--paper); }
.venue-photo, .venue-thumb { display: block; width: 100%; height: 100%; }
.venue-photo img, .venue-thumb img { width: 100%; height: 100%; object-fit: cover; }
.venue-photo.is-empty, .venue-thumb.is-empty { display: grid; place-items: center; color: #B9B3C4; background: repeating-linear-gradient(-45deg, var(--sunken) 0 10px, #F1EFF5 10px 20px); }
.venue-photo.is-empty .ic { width: 30px; height: 30px; }
.venue-card-photo:hover img { filter: brightness(1.05); }
.venue-count { position: absolute; right: 10px; top: 10px; min-width: 30px; height: 30px; padding: 0 8px; border-radius: 999px; display: grid; place-items: center; background: var(--night); color: #fff; font-weight: 700; font-size: 13px; box-shadow: 0 2px 8px rgba(31,26,43,.3); }
.venue-card-body { padding: 12px 14px 14px; display: grid; gap: 5px; }
.venue-card-body h3 { font-size: 15.5px; line-height: 1.25; }
.venue-card-body h3 a { color: var(--ink); }
.venue-city { display: flex; align-items: center; gap: 5px; margin: 0; font-size: 13px; color: var(--muted); }
.venue-stats { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 2px 0 0; font-size: 12.5px; color: var(--ink-2); }
.venue-stats b { font-variant-numeric: tabular-nums; }
.photo-slots { display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; gap: 6px; padding: 12px 12px 0; height: 220px; }
.photo-slot { position: relative; min-height: 0; }
.photo-slot.is-main { grid-row: span 2; }
.photo-drop { display: grid; place-items: center; width: 100%; height: 100%; border-radius: var(--r-md); border: 1px dashed var(--line-strong); background: var(--sunken); color: var(--muted); cursor: pointer; overflow: hidden; text-align: center; }
.photo-drop span { display: grid; justify-items: center; gap: 4px; font-size: 12px; }
.photo-drop img { width: 100%; height: 100%; object-fit: cover; }
.photo-drop:hover { border-color: var(--violet); color: var(--violet); }
.photo-slot input[type=file]:focus-visible + * , .photo-drop:focus-within { box-shadow: var(--focus); }
.photo-remove { position: absolute; top: 6px; right: 6px; cursor: pointer; }
.photo-remove input { position: absolute; opacity: 0; }
.photo-remove > span { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.92); color: var(--ink-2); box-shadow: 0 1px 4px rgba(0,0,0,.2); }
.photo-remove input:checked + span { background: var(--red); color: #fff; }
.venue-history { padding: 0 20px 16px; }
.venue-history h3 { font-size: 14px; margin-bottom: 8px; }
.venue-history ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; font-size: 13.5px; }
.venue-history li span { display: block; color: var(--muted); font-size: 12.5px; }

/* ------------------------------------------------------------------ */
/* Fiche prestation : bandeau, chiffres clés, onglets, équipe           */
/* ------------------------------------------------------------------ */
.event-hero { --cat: var(--violet); position: relative; z-index: 6; overflow: visible; border-radius: var(--r-lg); margin-bottom: 16px; min-height: 210px; display: flex; align-items: flex-end; color: #fff;
  background: radial-gradient(120% 140% at 85% 0%, color-mix(in srgb, var(--cat) 55%, var(--night)) 0%, var(--night) 60%); }
.event-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.event-hero::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: linear-gradient(to top, rgba(20,16,30,.92) 0%, rgba(20,16,30,.55) 45%, rgba(20,16,30,.1) 100%); }
.event-hero:not(.has-photo)::after { background: linear-gradient(to top, rgba(20,16,30,.35), transparent); }
.event-hero-inner { position: relative; z-index: 1; width: 100%; display: flex; align-items: flex-end; gap: 18px; flex-wrap: wrap; padding: 26px 24px 22px; }
.event-hero .event-date { background: rgba(255,255,255,.12); backdrop-filter: blur(6px); box-shadow: inset 0 0 0 1px rgba(255,255,255,.18); }
.event-hero .event-date::after { background: var(--amber); }
.event-hero .event-title h1 { color: #fff; font-size: 32px; text-shadow: 0 1px 12px rgba(0,0,0,.25); }
.event-kind { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; font-size: 13.5px; font-weight: 600; color: rgba(255,255,255,.9); }
.event-kind .num { font-weight: 500; color: rgba(255,255,255,.6); margin-left: 4px; }
.event-kind .cat-badge { background: #fff; }
.event-hero .meta { color: rgba(255,255,255,.85); }
.event-hero .meta > span { display: inline-flex; align-items: center; gap: 5px; }
.event-hero .countdown { color: #fff; }
.event-hero .countdown.is-soon { color: var(--amber-ink); background: var(--amber); }
.event-hero .page-actions { margin-left: auto; }
.event-hero .dropdown-menu { z-index: 30; }

.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 0; margin: 0 0 18px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.kpi { padding: 16px 20px; border-left: 1px solid var(--line); }
.kpi:first-child { border-left: 0; }
.kpi dt { font-size: 13px; color: var(--muted); }
.kpi dd { margin: 4px 0 2px; font-family: var(--font-display); font-size: 26px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.kpi dd small { font-family: var(--font-ui); font-size: 12.5px; font-weight: 500; color: var(--muted); letter-spacing: 0; margin-left: 5px; }
.kpi p { margin: 0; font-size: 12.5px; color: var(--muted); }
.kpi.is-due dd { color: var(--red); }
.kpi-margin { background: var(--green-soft); }
.kpi-margin dt, .kpi-margin p { color: #16704A; }
.kpi-margin dd { color: #0F5C3B; }
.kpi-margin.is-neg { background: var(--red-soft); }
.kpi-margin.is-neg dd, .kpi-margin.is-neg dt, .kpi-margin.is-neg p { color: var(--red); }

.tabs { display: flex; gap: 4px; margin: 0 0 18px; border-bottom: 1px solid var(--line); overflow-x: auto; }
.tabs a { display: inline-flex; align-items: center; gap: 7px; padding: 10px 14px; margin-bottom: -1px; border-bottom: 2px solid transparent; color: var(--muted); font-weight: 600; white-space: nowrap; }
.tabs a:hover { color: var(--ink); text-decoration: none; }
.tabs a.is-active { color: var(--ink); border-bottom-color: var(--amber); }
.tabs .count { font-size: 12px; font-weight: 600; min-width: 20px; padding: 0 6px; border-radius: 999px; background: var(--paper); color: var(--muted); text-align: center; }
.tabs .count.is-hot { background: var(--amber); color: var(--amber-ink); }

.crew-panel .panel-head .tag .ic { width: 13px; height: 13px; }
.crew-grid { display: grid; gap: 12px; padding: 16px; }
.crew-card { display: grid; grid-template-columns: 74px minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 14px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); position: relative; }
.crew-card.st-confirmed { border-color: #BFE3CF; background: linear-gradient(90deg, var(--green-soft), var(--surface) 38%); }
.crew-card.st-proposed { border-color: #F0DA94; background: linear-gradient(90deg, var(--amber-soft), var(--surface) 38%); }
.crew-card.is-off { opacity: .55; }
.crew-card-face { position: relative; width: 74px; height: 74px; }
.crew-card-face img, .crew-card-face > span:first-child { width: 74px; height: 74px; border-radius: 50%; object-fit: cover; display: grid; place-items: center; font-family: var(--font-display); font-size: 24px; font-weight: 700; color: #fff; background: var(--c, #8A82A0); box-shadow: 0 0 0 3px var(--surface); }
.crew-state { position: absolute; left: 50%; bottom: -6px; transform: translateX(-50%); padding: 1px 9px; border-radius: 999px; font-size: 11.5px; font-weight: 700; white-space: nowrap; background: var(--paper); color: var(--ink-2); box-shadow: 0 0 0 2px var(--surface); }
.st-confirmed .crew-state { background: var(--green); color: #fff; }
.st-proposed .crew-state { background: var(--amber); color: var(--amber-ink); }
.st-declined .crew-state, .st-cancelled .crew-state { background: var(--red-soft); color: var(--red); }
.crew-card-body h3 { font-size: 17px; }
.crew-role { margin: 2px 0 6px; font-weight: 600; color: var(--violet-ink); display: flex; align-items: center; gap: 8px; }
.crew-ext { font-size: 11.5px; font-weight: 600; color: #6B5000; background: var(--amber-soft); padding: 0 7px; border-radius: 999px; }
.crew-facts { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 13px; color: var(--ink-2); }
.crew-facts li { display: inline-flex; align-items: center; gap: 5px; }
.crew-facts .ic { color: var(--muted); }
.crew-card .crew-note { margin: 8px 0 0; padding: 6px 10px; border-radius: 8px; background: var(--sunken); font-size: 13px; color: var(--ink-2); }
.crew-card-side { display: grid; justify-items: end; gap: 8px; }
.crew-card .crew-fee { margin: 0; font-family: var(--font-display); font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; }
.crew-card .crew-paid { display: block; font-family: var(--font-ui); font-size: 12px; }
.crew-actions { display: flex; gap: 6px; align-items: center; }
.crew-actions form { margin: 0; }

.venue-card-side { overflow: hidden; }
.venue-side-photo { aspect-ratio: 16 / 9; background: var(--paper); }
.venue-side-photo img { width: 100%; height: 100%; object-fit: cover; }
.venue-card-side h2 { margin-bottom: 12px; }
.panel-note { display: flex; gap: 10px; align-items: flex-start; margin: 0; padding: 12px 20px; border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); font-size: 13.5px; color: var(--ink-2); }
.panel-note p { margin: 0; }
.panel-note .ic { margin-top: 2px; color: var(--muted); }
.btn.is-soon { opacity: .6; cursor: default; }
.btn.is-soon small { font-size: 11px; border: 1px solid var(--line-strong); border-radius: 999px; padding: 0 6px; margin-left: 4px; }
.module-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; padding: 16px; }
.module-card { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: var(--r-md); }
.module-card.is-on { border-color: #BFE3CF; }
.module-icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--paper); color: var(--muted); }
.module-card.is-on .module-icon { background: var(--violet-soft); color: var(--violet-ink); }
.module-card h3 { font-size: 15px; margin-bottom: 4px; }
.module-card p { font-size: 13.5px; color: var(--ink-2); margin: 0 0 8px; }
.module-state { margin: 0 !important; }
.timeline .assignee { margin-top: 6px; display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--muted); }

/* Personnes affectées : photo et prénom */
.crew-list { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.crew-chip { display: inline-flex; align-items: center; gap: 6px; padding: 2px 9px 2px 2px; border-radius: 999px; background: var(--green-soft); color: #16704A; font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.crew-chip.is-pending { background: var(--amber-soft); color: #6B5000; }
.crew-face { width: 24px; height: 24px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; flex: none; font-size: 10px; font-weight: 700; color: #fff; background: var(--c, #8A82A0); box-shadow: 0 0 0 1.5px #fff; }
.crew-face img { width: 100%; height: 100%; object-fit: cover; }
.crew-chip.is-pending .crew-face { box-shadow: 0 0 0 1.5px #fff, 0 0 0 3px #E8C65A; }
.proj-cell { display: flex; align-items: center; gap: 12px; }

/* Statistiques par catégorie, alertes d'affectation */
.alert-bar { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; padding: 12px 16px; border-radius: var(--r-md); background: var(--red-soft); border: 1px solid #F2C6C6; color: #8F2323; font-size: 14px; }
.alert-bar:hover { text-decoration: none; border-color: var(--red); }
.alert-bar > .ic:last-child { margin-left: auto; }
.cat-stats { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 18px; }
.cat-stat { --c: var(--violet); display: flex; align-items: center; gap: 10px; flex: none; padding: 10px 16px 10px 10px; border-radius: var(--r-md); background: var(--surface); border: 1px solid var(--line); color: var(--ink); min-width: 140px; }
a.cat-stat:hover { text-decoration: none; border-color: color-mix(in srgb, var(--c) 50%, var(--line-strong)); }
.cat-stat.is-active { border-color: var(--c); box-shadow: inset 0 0 0 1px var(--c); }
.cat-stat > span:last-child { display: grid; line-height: 1.15; }
.cat-stat-n { font-family: var(--font-display); font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; }
.cat-stat-l { font-size: 13px; color: var(--ink-2); }
.cat-stat-sub { font-size: 11.5px; color: var(--muted); }
.cat-stat.is-total { flex-direction: column; align-items: flex-start; justify-content: center; gap: 0; background: var(--night); border-color: var(--night); color: #fff; padding: 10px 18px; }
.cat-stat.is-total .cat-stat-n { color: var(--amber); }
.cat-stat.is-total .cat-stat-l { color: var(--night-muted); }
.staff-alert { margin: 0 0 18px; padding: 16px 18px; border-radius: var(--r-lg); background: var(--surface); border: 1px solid #F2C6C6; box-shadow: inset 4px 0 0 var(--red); }
.staff-alert-head { display: flex; gap: 12px; align-items: flex-start; }
.staff-alert-head h2 { font-size: 17px; }
.staff-alert-head p { margin: 3px 0 0; color: var(--muted); font-size: 13.5px; }
.staff-alert-icon { width: 38px; height: 38px; border-radius: 11px; display: grid; place-items: center; background: var(--red-soft); color: var(--red); flex: none; }
.staff-alert-list { list-style: none; margin: 12px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 8px; }
.staff-alert-list a { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: var(--r-md); border: 1px solid var(--line); color: var(--ink); }
.staff-alert-list a:hover { text-decoration: none; border-color: var(--line-strong); background: var(--sunken); }
.staff-alert-list .grow { flex: 1; min-width: 0; display: grid; }
.staff-alert-list .grow strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.staff-alert-list .grow span { font-size: 12.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.staff-when { font-size: 12px; font-weight: 700; color: var(--muted); white-space: nowrap; }
.staff-when.is-soon { color: var(--red); }

/* Billets du tableau de bord : photo du lieu et type d'événement */
.ticket .ticket-body:has(> .ticket-visual) { padding: 0; gap: 0; }
.ticket-visual { position: relative; height: 82px; overflow: hidden; border-radius: 0 calc(var(--r-lg) - 1px) 0 0;
  background: radial-gradient(130% 160% at 100% 0%, color-mix(in srgb, var(--cat) 30%, white) 0%, color-mix(in srgb, var(--cat) 10%, var(--sunken)) 70%); }
.ticket-visual img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ticket.has-photo .ticket-visual::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(20,16,30,.55), rgba(20,16,30,0) 70%); }
.ticket-kind { position: absolute; z-index: 1; left: 12px; bottom: 9px; display: inline-flex; align-items: center; gap: 7px; padding: 3px 10px 3px 3px; border-radius: 999px; background: rgba(255,255,255,.94); font-size: 12.5px; font-weight: 700; color: var(--ink); box-shadow: 0 1px 4px rgba(0,0,0,.12); }
.ticket-visual .ticket-countdown { z-index: 1; top: 9px; right: 10px; background: rgba(255,255,255,.94); color: var(--ink-2); padding: 1px 8px; border-radius: 999px; }
.ticket-visual .ticket-countdown.is-soon { background: var(--amber); color: var(--amber-ink); }
.ticket-text { padding: 11px 16px 13px 20px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ticket-text .ticket-meta { margin-top: 0; }
.ticket-crew { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 2px; }
.ticket-crew .tag .ic { width: 13px; height: 13px; }

@media (max-width: 1100px) {
  .crew-card { grid-template-columns: 64px minmax(0, 1fr); }
  .crew-card-side { grid-column: 1 / -1; grid-auto-flow: column; justify-content: space-between; align-items: center; }
  .crew-card-face, .crew-card-face img, .crew-card-face > span:first-child { width: 64px; height: 64px; }
}
@media (max-width: 640px) {
  .event-hero { min-height: 260px; }
  .event-hero-inner { padding: 18px 16px 16px; }
  .event-hero .event-title h1 { font-size: 24px; }
  .event-hero .page-actions { margin-left: 0; }
  .kpi { border-left: 0; border-top: 1px solid var(--line); }
  .kpi:first-child { border-top: 0; }
  .kpi dd { font-size: 22px; }
  .photo-slots { height: 180px; }
  .cat-card-top { grid-template-columns: auto minmax(0, 1fr); }
  .cat-color { grid-column: 2; }
  .staff-alert-list { grid-template-columns: minmax(0, 1fr); }
  .staff-alert-list .btn { display: none; }
  .proj-cell .cat-badge { display: none; }
}

/* ------------------------------------------------------------------ */
/* Devis & factures                                                     */
/* ------------------------------------------------------------------ */
.nav a .nav-badge.is-red { background: var(--red); color: #fff; }
.kpis-4 { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.input-sm { min-height: 32px; padding: 4px 8px; font-size: 13px; }
select.input-sm { padding-right: 28px; background-position: right 6px center; }

.doc-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; flex-wrap: wrap; margin-bottom: 16px; }
.doc-type { display: inline-flex; align-items: center; gap: 7px; padding: 3px 11px 3px 8px; border-radius: 999px; font-size: 13px; font-weight: 700; background: var(--violet-soft); color: var(--violet-ink); margin-bottom: 8px; }
.doc-type.t-invoice, .doc-type.t-deposit_invoice { background: var(--amber-soft); color: #6B5000; }
.doc-type.t-credit_note { background: var(--red-soft); color: var(--red); }
.doc-head h1 { font-size: 30px; }
.doc-head h1 span { font-weight: 500; color: var(--muted); font-size: 22px; }
.doc-head .meta { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 8px; font-size: 14px; color: var(--muted); align-items: center; }
.doc-head .meta a, .doc-head .meta span { display: inline-flex; align-items: center; gap: 5px; }
.doc-amount { text-align: right; display: grid; }
.doc-amount span { font-size: 13px; color: var(--muted); }
.doc-amount strong { font-family: var(--font-display); font-size: 34px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; line-height: 1.1; }
.doc-amount small { font-size: 12.5px; color: var(--muted); }
.doc-actions-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 12px; margin-bottom: 18px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.doc-actions-bar form { margin: 0; }
.doc-actions-bar .dropdown { margin-left: auto; }
.btn.is-copied { background: var(--green-soft); border-color: #BFE3CF; color: #16704A; }
.doc-layout { grid-template-columns: minmax(0, 1fr) 360px; }
.doc-preview { min-width: 0; }
.doc-preview iframe { display: block; width: 100%; min-height: 900px; border: 1px solid var(--line); border-radius: var(--r-lg); background: #f2eef2; }
.tpl-switch { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 10px; }
.tpl-switch-label { font-size: 13px; font-weight: 600; color: var(--muted); margin-right: 4px; }
.tpl-chip { --c: var(--violet); display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px 5px 8px; border-radius: 999px; border: 1px solid var(--line-strong); background: var(--surface); font: inherit; font-size: 13px; font-weight: 600; color: var(--ink-2); cursor: pointer; }
.tpl-chip i { width: 14px; height: 14px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 2px rgba(255,255,255,.6); }
.tpl-chip:hover { border-color: var(--c); }
.tpl-chip.is-active { border-color: var(--c); box-shadow: inset 0 0 0 1px var(--c); color: var(--ink); }
.tpl-save { display: inline-flex; align-items: center; gap: 10px; margin: 0 0 0 auto; }
.doc-track { list-style: none; margin: 0; padding: 14px 20px; display: grid; gap: 12px; }
.doc-track li { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 10px; font-size: 13.5px; color: var(--muted); position: relative; }
.doc-track li > span { width: 12px; height: 12px; margin-top: 4px; border-radius: 50%; border: 2px solid var(--line-strong); background: var(--surface); }
.doc-track li.is-done { color: var(--ink-2); }
.doc-track li.is-done > span { border-color: var(--violet); background: var(--violet); }
.doc-track li.is-signed > span { border-color: var(--green); background: var(--green); }
.doc-track em { font-style: normal; color: var(--muted); }
.doc-track img { display: block; max-width: 180px; max-height: 70px; margin-top: 6px; border-bottom: 1px solid var(--line); }
.link-box { display: flex; gap: 6px; border-top: 1px solid var(--line); padding-top: 14px; }
.link-box .input { min-height: 34px; font-size: 12.5px; color: var(--muted); }
.choice-list { display: grid; gap: 8px; margin-top: 12px; }
.choice { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; align-items: start; padding: 10px 12px; border: 1px solid var(--line-strong); border-radius: var(--r-md); cursor: pointer; }
.choice:has(input:checked) { border-color: var(--violet); box-shadow: inset 0 0 0 1px var(--violet); background: var(--violet-soft); }
.choice:has(input:disabled) { opacity: .5; cursor: not-allowed; }
.choice > input { margin-top: 3px; accent-color: var(--violet); }
.choice strong { display: block; font-size: 14px; }
.choice small { display: block; color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.pct-input { display: inline-flex; align-items: center; gap: 4px; }
.pct-input .input { width: 64px; text-align: right; }
.pay-quick { border-top: 1px solid var(--line); }
.tpl-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.tpl-card { position: relative; cursor: pointer; }
.tpl-card input { position: absolute; opacity: 0; }
.tpl-card > span { display: grid; gap: 4px; height: 100%; padding: 10px; border: 1px solid var(--line-strong); border-radius: var(--r-md); background: var(--surface); }
.tpl-card strong { font-size: 14px; }
.tpl-card small { font-size: 12px; color: var(--muted); line-height: 1.35; }
.tpl-card input:checked + span { border-color: var(--violet); box-shadow: inset 0 0 0 1px var(--violet), 0 0 0 3px var(--violet-soft); }
.tpl-card input:focus-visible + span { box-shadow: var(--focus); }
/* Vignettes des modèles */
.tpl-mini { --c: var(--violet); position: relative; display: grid; gap: 5px; align-content: start; height: 86px; padding: 30px 12px 8px; border-radius: 6px; background: #fff; border: 1px solid var(--line); overflow: hidden; margin-bottom: 4px; }
.tpl-mini i { position: absolute; left: 0; right: 0; top: 0; height: 22px; }
.tpl-mini b { height: 6px; border-radius: 3px; background: #ECEAF1; }
.tpl-mini b:nth-child(3) { width: 75%; }
.tpl-mini b:nth-child(4) { width: 55%; background: var(--c); opacity: .5; }
.tpl-mini-classique i { background: #fff; border-top: 4px solid var(--c); border-bottom: 1px solid var(--line); }
.tpl-mini-signature i { background: linear-gradient(135deg, color-mix(in srgb, var(--c) 18%, #fff), #fff); }
.tpl-mini-signature i::after { content: ""; position: absolute; right: 8px; top: 5px; width: 30px; height: 11px; border-radius: 9px; background: var(--c); }
.tpl-mini-mariage { background: #FFFDF9; outline: 1px solid #E9DFD0; outline-offset: -5px; }
.tpl-mini-mariage i { background: none; border-bottom: 1px solid var(--c); left: 30%; right: 30%; top: 14px; height: 0; }
.tpl-mini-mariage b { background: #F2EADF; }
.tpl-mini-technique i { background: #1F2430; border-bottom: 3px solid var(--c); }
.tpl-mini-epure i { background: #fff; border-bottom: 2px solid #111; }
.tpl-mini-epure b:nth-child(4) { background: #111; opacity: .6; }

/* Éditeur de lignes */
.doc-grid { grid-template-columns: minmax(0, 1fr) 330px; }
.lines-panel .panel-head { border-bottom: 0; }
.lines-editor { display: grid; }
.ln { display: grid; grid-template-columns: 26px 44px minmax(0, 1fr) 32px; gap: 10px 12px; align-items: start; padding: 12px 16px; border-top: 1px solid var(--line); background: var(--surface); }
.ln.ln-section, .ln.ln-text { grid-template-columns: 26px minmax(0, 1fr) 32px; align-items: center; background: var(--sunken); }
.ln.is-optional { background: repeating-linear-gradient(-45deg, var(--surface) 0 10px, #FBF9FE 10px 20px); }
.ln.is-optional .ln-label { font-style: italic; }
.ln-move { display: grid; gap: 2px; }
.icon-btn { width: 26px; height: 24px; border: 0; border-radius: 6px; background: none; color: var(--muted); display: grid; place-items: center; cursor: pointer; padding: 0; }
.icon-btn:hover:not(:disabled) { background: var(--paper); color: var(--ink); }
.icon-btn:disabled { opacity: .3; cursor: default; }
.icon-btn.is-up .ic { transform: rotate(180deg); }
.icon-btn.is-danger:hover { color: var(--red); background: var(--red-soft); }
.ln > .icon-btn { width: 32px; height: 32px; margin-top: 4px; }
.ln-thumb { width: 44px; height: 44px; border-radius: 10px; overflow: hidden; display: grid; place-items: center; background: var(--violet-soft); color: var(--violet-ink); font-weight: 700; }
.ln-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ln-main { min-width: 0; display: grid; gap: 6px; }
.ln-label { font-weight: 600; }
.ln-section-input { font-family: var(--font-display); font-weight: 650; font-size: 15px; }
.ln-desc { min-height: 60px; font-size: 13.5px; }
.ln-options { display: flex; flex-wrap: wrap; gap: 8px 14px; }
.ln-group { display: grid; gap: 3px; font-size: 12.5px; color: var(--muted); min-width: 150px; }
.ln-group > span { font-weight: 600; color: var(--ink-2); }
.ln-checks { display: flex; flex-wrap: wrap; gap: 4px 10px; }
.ln-check { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: var(--ink-2); }
.ln-check.has-color::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 1px rgba(0,0,0,.15); order: 2; }
.ln-children { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.ln-children-label { font-size: 12.5px; color: var(--muted); margin-right: 2px; }
.chip-x { border: 0; background: none; margin-left: 2px; color: var(--muted); cursor: pointer; font-size: 14px; line-height: 1; padding: 0 2px; }
.chip-x:hover { color: var(--red); }
.ln-tools { display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: center; }
.ln-opt { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--muted); cursor: pointer; }
.ln-opt input { accent-color: var(--violet); }
.ln-nums { grid-column: 3 / 4; display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; }
.ln-nums .ln-total-wrap { margin-left: auto; }
.ln.ln-item > .icon-btn { grid-column: 4; grid-row: 1; }
.ln-field .input { width: 84px; }
.ln-field:first-child .input { width: 62px; }
.ln-total-wrap { min-width: 96px; }
.ln-field { display: grid; gap: 3px; font-size: 11.5px; color: var(--muted); }
.ln-field .input { min-height: 34px; padding: 5px 8px; font-size: 13.5px; }
.ln-field .input.num { text-align: right; }
.ln-total-wrap { text-align: right; }
.ln-total { font-size: 15px; color: var(--ink); font-variant-numeric: tabular-nums; padding: 6px 0; white-space: nowrap; }
.ln-total.is-neg { color: var(--green); }
.lines-empty { display: grid; justify-items: center; gap: 6px; padding: 30px 20px; color: var(--muted); border-top: 1px solid var(--line); text-align: center; }
.lines-empty p { margin: 0; }
.add-line { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 14px 16px; border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); }
.add-catalog { flex: 1; min-width: 260px; }
.add-cat { flex: 0 1 240px; min-width: 200px; }
.doc-totals .margin-lines .disc-row { align-items: center; }
.doc-totals .disc-row dt { flex: 1; }
.doc-totals .disc-row dd .input { width: 96px; }
.doc-actions { justify-content: space-between; flex-wrap: wrap; }

@media (max-width: 1100px) {
  .doc-layout, .doc-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .doc-amount { text-align: left; }
  .doc-actions-bar .dropdown { margin-left: 0; }
  .doc-preview iframe { min-height: 600px; }
  .ln { grid-template-columns: 26px minmax(0, 1fr) 32px; padding: 12px; }
  .ln-thumb { display: none; }
  .ln-nums { grid-column: 1 / -1; }
  .ln.ln-item > .icon-btn { grid-column: 3; }
  .tpl-save { margin-left: 0; }
}

/* ------------------------------------------------------------------ */
/* Boîte de confirmation                                                */
/* ------------------------------------------------------------------ */
dialog.confirm { border: 0; padding: 0; border-radius: var(--r-lg); box-shadow: var(--shadow-pop); width: min(440px, calc(100vw - 32px)); color: var(--ink); }
dialog.confirm::backdrop { background: rgba(31,26,43,.45); }
dialog.confirm .body { padding: 22px 22px 8px; }
dialog.confirm h2 { font-size: 18px; margin-bottom: 8px; }
dialog.confirm p { color: var(--ink-2); }
.delete-list { margin: 0 0 10px; padding-left: 20px; color: var(--ink-2); line-height: 1.7; }
.delete-warn { display: flex; gap: 8px; padding: 10px 12px; border-radius: var(--r-md); background: var(--amber-soft); color: #5E4700; font-size: 13.5px; }
.delete-warn .ic { margin-top: 2px; }
.dropdown-menu .menu-danger { color: var(--red); }
.dropdown-menu .menu-danger .ic { color: var(--red); }
dialog.confirm .actions { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 22px 18px; }

/* ------------------------------------------------------------------ */
/* Écrans d'accès (connexion, inscription)                             */
/* ------------------------------------------------------------------ */
.auth { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); min-height: 100vh; background: var(--surface); }
.auth-stage {
  position: relative; overflow: hidden; background: var(--night); color: var(--night-ink);
  padding: 40px 48px; display: flex; flex-direction: column;
}
.auth-stage::before {
  /* faisceau de projecteur */
  content: ""; position: absolute; left: 50%; top: -12%; width: 140%; height: 95%; transform: translateX(-38%);
  background: conic-gradient(from 180deg at 40% 0%, transparent 156deg, rgba(242,183,5,.22) 172deg, rgba(255,229,138,.30) 180deg, rgba(242,183,5,.22) 188deg, transparent 204deg);
  filter: blur(6px); pointer-events: none;
}
.auth-stage .brand { position: relative; padding: 0; }
.auth-pitch { position: relative; margin-top: auto; max-width: 30ch; }
.auth-pitch h2 { color: #fff; font-size: 38px; font-weight: 700; letter-spacing: -.025em; line-height: 1.05; margin-bottom: 14px; }
.auth-pitch p { color: var(--night-muted); font-size: 15.5px; max-width: 42ch; }
.auth-stubs { position: relative; display: grid; gap: 12px; margin: 34px 0 10px; max-width: 360px; }
.auth-stubs .ticket { --notch: var(--night); min-height: 86px; grid-template-columns: 70px 1fr; border-color: var(--night-3); background: var(--night-2); color: var(--night-ink); }
.auth-stubs .ticket::before, .auth-stubs .ticket::after { left: 61px; border-color: var(--night-3); }
.auth-stubs .ticket-stub { background: var(--amber); color: var(--amber-ink); }
.auth-stubs .ticket-stub::after { background: repeating-linear-gradient(to bottom, var(--night-2) 0 5px, transparent 5px 10px); }
.auth-stubs .ticket-day { font-size: 28px; }
.auth-stubs .ticket-month { color: var(--amber-ink); font-size: 13px; }
.auth-stubs .ticket-title { font-size: 15px; color: #fff; }
.auth-stubs .ticket-meta { color: var(--night-muted); }
.auth-stubs .ticket:nth-child(2) { margin-left: 34px; opacity: .8; }
.auth-stubs .ticket:nth-child(3) { margin-left: 68px; opacity: .55; }

.auth-panel .flashes { width: 100%; max-width: 560px; }
.auth-panel { display: flex; flex-direction: column; justify-content: center; padding: 48px clamp(24px, 6vw, 88px); }
.auth-form { width: 100%; max-width: 420px; }
.auth-form.wide { max-width: 560px; }
.auth-form h1 { font-size: 32px; margin-bottom: 8px; }
.auth-form > p.lead { color: var(--muted); margin-bottom: 26px; }
.auth-form .field + .field { margin-top: 16px; }
.auth-form .form-grid .field + .field { margin-top: 0; }
.auth-form .form-grid + .field, .auth-form .field + .form-grid, .auth-form .form-grid + .form-grid { margin-top: 16px; }
.auth-form .btn-block { margin-top: 22px; min-height: 46px; font-size: 15px; }
.auth-alt { margin-top: 22px; font-size: 14px; color: var(--muted); }
.auth-row { display: flex; justify-content: space-between; align-items: center; }
.auth-step { font-size: 13px; color: var(--muted); margin: 24px 0 10px; padding-top: 18px; border-top: 1px solid var(--line); font-weight: 600; }
.pw-wrap { position: relative; }
.pw-wrap .input { padding-right: 84px; }
.pw-toggle { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); border: 0; background: none; font: 600 12.5px var(--font-ui); color: var(--violet-ink); padding: 6px 8px; cursor: pointer; border-radius: 6px; }
.plan-pick { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.plan-pick input { position: absolute; opacity: 0; }
.plan-pick label { display: block; padding: 10px 12px; border: 1px solid var(--line-strong); border-radius: var(--r-md); cursor: pointer; }
.plan-pick label strong { display: block; font-size: 14px; }
.plan-pick label span { font-size: 12.5px; color: var(--muted); }
.plan-pick input:checked + label { border-color: var(--violet); box-shadow: inset 0 0 0 1px var(--violet); background: var(--violet-soft); }
.plan-pick input:focus-visible + label { box-shadow: var(--focus); }

/* Erreurs */
.error-page { text-align: center; max-width: 480px; margin: 8vh auto; }
.error-code { font-family: var(--font-display); font-size: 88px; font-weight: 700; line-height: 1; color: var(--line-strong); letter-spacing: -.04em; }
.error-page h1 { margin: 12px 0 10px; font-size: 26px; }
.error-page p { color: var(--muted); }

/* ------------------------------------------------------------------ */
/* Adaptation écrans                                                    */
/* ------------------------------------------------------------------ */
@media (max-width: 1100px) {
  .grid-main { grid-template-columns: minmax(0, 1fr); }
  .sticky-aside { position: static; }
  .ledger { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ledger > div:nth-child(3) { border-left: 0; }
  .ledger > div:nth-child(n+3) { border-top: 1px solid var(--line); }
  .plans { grid-template-columns: minmax(0, 1fr); }
  .form-section { grid-template-columns: minmax(0, 1fr); gap: 14px; }
}
@media (max-width: 900px) {
  .shell { grid-template-columns: minmax(0, 1fr); }
  .sidebar { position: fixed; z-index: 60; left: 0; top: 0; width: 280px; transform: translateX(-100%); transition: transform .2s ease; box-shadow: var(--shadow-pop); }
  body.nav-open .sidebar { transform: none; }
  body.nav-open::after { content: ""; position: fixed; inset: 0; background: rgba(31,26,43,.4); z-index: 50; }
  .topbar .menu-toggle { display: inline-flex; }
  .topbar { padding: 0 16px; }
  .content { padding: 20px 16px 48px; }
  .auth { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
  .auth-panel { justify-content: flex-start; }
  .auth-stage { padding: 24px 20px; min-height: 0; }
  .auth-stage::before { opacity: .6; }
  .auth-pitch, .auth-stubs { display: none; }
  .auth-panel { padding: 32px 20px 48px; }
  .plan-current { grid-template-columns: minmax(0, 1fr); }
  .perm-group { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .quick-add .row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .roadmap-card { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  h1 { font-size: 25px; }
  .hello h1 { font-size: 27px; }
  .form-grid, .form-grid-3 { grid-template-columns: minmax(0, 1fr); }
  .span-2 { grid-column: auto; }
  .grid-2 { grid-template-columns: minmax(0, 1fr); }
  .tickets { grid-template-columns: minmax(0, 1fr); }
  .perm-list, .plan-pick { grid-template-columns: minmax(0, 1fr); }
  .search { display: none; }
  .topbar-actions .btn-primary span { display: none; }
  .table .hide-sm { display: none; }
  .quick-add .row { grid-template-columns: minmax(0, 1fr); }
  .money-pair { grid-template-columns: minmax(0, 1fr); }
  .money-pair > div + div { border-left: 0; border-top: 1px solid var(--line); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------- Nouveau devis (page en deux étapes) ---------- */
.nq-steps { display: flex; flex-wrap: wrap; gap: 6px 22px; list-style: none; margin: 0 0 16px; padding: 0; font-size: 13.5px; color: var(--muted); }
.nq-steps li { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; }
.nq-steps li span { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; background: var(--sunken); box-shadow: inset 0 0 0 1px var(--line-strong); color: var(--muted); }
.nq-steps li.is-current { color: var(--ink); }
.nq-steps li.is-current span { background: var(--violet); color: #fff; box-shadow: none; }
.nq-steps li.is-done span { background: var(--green-soft); color: #16704A; box-shadow: none; }
.nq-panel { max-width: 920px; }
.nq-search { display: flex; align-items: center; gap: 10px; padding: 16px 18px 6px; position: relative; }
.nq-search > .ic { position: absolute; left: 32px; color: var(--muted); pointer-events: none; }
.nq-search .input { flex: 1; min-height: 48px; padding-left: 44px; font-size: 16px; }
.nq-hint { margin: 6px 18px 12px; font-size: 13px; color: var(--muted); }
.nq-list { list-style: none; margin: 0; padding: 0 0 6px; border-top: 1px solid var(--line); }
.nq-list li + li { border-top: 1px solid var(--line); }
.nq-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto 18px; gap: 14px; align-items: center; padding: 11px 18px; color: var(--ink); text-decoration: none; }
.nq-row:hover, .nq-row:focus-visible { background: var(--violet-soft); outline: none; }
.nq-main { min-width: 0; display: grid; gap: 2px; align-content: start; }
.nq-main strong { font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nq-main small { color: var(--muted); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nq-meta { display: grid; justify-items: end; gap: 3px; }
.nq-meta small { color: var(--muted); font-size: 12.5px; white-space: nowrap; }
.nq-go { color: var(--muted); }
.nq-client { display: flex; align-items: center; gap: 14px; padding: 18px; border-bottom: 1px solid var(--line); }
.nq-client .nq-main { flex: 1; }
.nq-client .nq-main strong { font-size: 18px; }
.nq-form fieldset { border: 0; margin: 0; padding: 18px; }
.nq-form legend { float: left; width: 100%; font-family: var(--font-display); font-weight: 650; font-size: 16px; padding: 0; margin-bottom: 12px; }
.nq-form legend + * { clear: both; }
.nq-projects { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.nq-project { position: relative; display: grid; grid-template-rows: 110px auto; border: 1px solid var(--line-strong); border-radius: var(--r-lg); overflow: hidden; cursor: pointer; background: var(--surface); }
.nq-project > input { position: absolute; top: 10px; right: 10px; z-index: 2; width: 18px; height: 18px; accent-color: var(--violet); }
.nq-project:has(input:checked) { border-color: var(--violet); box-shadow: 0 0 0 2px var(--violet); }
.nq-project:has(input:focus-visible) { outline: 2px solid var(--violet); outline-offset: 2px; }
.nq-project.is-past:not(:has(input:checked)) .nq-photo { filter: grayscale(.7); opacity: .75; }
.nq-photo { position: relative; display: block; height: 110px; }
.nq-photo .cat-badge { position: absolute; left: 10px; bottom: -12px; box-shadow: 0 0 0 3px var(--surface); }
.nq-project .nq-main { padding: 18px 14px 12px; }
.nq-project .nq-main strong { white-space: normal; }
.nq-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.nq-none .nq-photo .venue-thumb .ic { width: 28px; height: 28px; }
.nq-actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; padding: 14px 18px; border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); }
.nq-actions .btn-primary { margin-left: auto; }
@media (max-width: 640px) {
  .nq-search { flex-wrap: wrap; padding: 12px 12px 4px; }
  .nq-search > .ic { left: 26px; top: 27px; }
  .nq-search .btn { width: 100%; justify-content: center; }
  .nq-row { grid-template-columns: auto minmax(0, 1fr) 16px; padding: 10px 12px; }
  .nq-meta { display: none; }
  .nq-client { flex-wrap: wrap; }
  .nq-form fieldset { padding: 14px 12px; }
  .nq-actions .btn { width: 100%; justify-content: center; }
}

/* ------------------------------------------------------------------ */
/* Lot 5 — E-mails, relances, modèles                                  */
/* ------------------------------------------------------------------ */
.ledger > div.is-hot dd { color: #8A6400; }
.fu-list { list-style: none; margin: 0; padding: 0; }
.fu-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto 150px auto; align-items: center; gap: 14px; padding: 14px 20px; border-top: 1px solid var(--line); }
.fu-row:first-child { border-top: 0; }
.fu-row.is-late { background: linear-gradient(90deg, rgba(201,59,59,.06), transparent 40%); }
.fu-row.is-today { background: linear-gradient(90deg, rgba(242,183,5,.10), transparent 40%); }
.fu-row.is-ahead { opacity: .82; }
.fu-main { min-width: 0; }
.fu-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-weight: 650; }
.fu-title a { color: var(--ink); }
.fu-sub { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 3px; font-size: 13px; color: var(--muted); }
.fu-sub span { display: inline-flex; align-items: center; gap: 5px; }
.fu-sub a { color: var(--ink-2); font-weight: 500; }
.fu-warn { color: var(--red); }
.fu-steps { display: flex; gap: 4px; list-style: none; margin: 0; padding: 0; }
.fu-steps li { display: inline-flex; align-items: center; gap: 3px; padding: 3px 8px; border-radius: 999px; font-size: 12px; font-weight: 650; background: #EEEDF1; color: var(--muted); font-variant-numeric: tabular-nums; }
.fu-steps li.is-done { background: var(--green-soft); color: #16704A; }
.fu-steps li.is-next { background: var(--amber); color: var(--amber-ink); }
.fu-steps .ic { width: 12px; height: 12px; stroke-width: 2.4; }
.fu-when { display: flex; flex-direction: column; font-size: 13px; line-height: 1.3; }
.fu-when strong { font-size: 13.5px; }
.fu-row.is-late .fu-when strong { color: var(--red); }
.fu-when span { color: var(--muted); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fu-actions { display: flex; gap: 6px; align-items: center; }
.fu-day { flex: none; width: 40px; height: 34px; border-radius: 9px; display: grid; place-items: center; background: var(--amber-soft); color: #6B5000; font-weight: 700; font-size: 13px; font-variant-numeric: tabular-nums; }
@media (max-width: 1100px) {
  .fu-row { grid-template-columns: auto minmax(0, 1fr) auto; }
  .fu-steps { grid-column: 2; }
  .fu-when { grid-column: 2; }
  .fu-actions { grid-column: 3; grid-row: 1 / span 3; flex-direction: column; align-items: stretch; }
}
@media (max-width: 640px) {
  .fu-row { grid-template-columns: minmax(0, 1fr); padding: 14px 16px; }
  .fu-row > .cat-badge { display: none; }
  .fu-steps, .fu-when { grid-column: 1; }
  .fu-actions { grid-column: 1; grid-row: auto; flex-direction: row; }
}

/* Éditeur de message */
.mail-editor { border: 1px solid var(--line-strong); border-radius: var(--r-md); background: var(--surface); overflow: hidden; }
.mail-editor:focus-within { border-color: var(--violet); box-shadow: var(--focus); }
.me-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; padding: 6px; border-bottom: 1px solid var(--line); background: var(--sunken); }
.me-toolbar button, .me-color { display: inline-flex; align-items: center; gap: 5px; min-height: 30px; padding: 4px 9px; border: 0; border-radius: 6px; background: none; font: 500 13px/1 var(--font-ui); color: var(--ink-2); cursor: pointer; }
.me-toolbar button:hover, .me-color:hover { background: rgba(31,26,43,.07); }
.me-toolbar button[aria-pressed="true"] { background: var(--night); color: #fff; }
.me-color input { width: 18px; height: 18px; padding: 0; border: 0; background: none; cursor: pointer; }
.me-sep { width: 1px; height: 20px; background: var(--line-strong); margin: 0 4px; }
.me-grow { flex: 1; }
.me-frame { display: block; width: 100%; min-height: 260px; border: 0; background: #fff; }
.me-source { border: 0; border-radius: 0; font: 13px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; min-height: 380px; resize: vertical; }
.mail-editor.is-source .me-toolbar [data-cmd] { opacity: .35; pointer-events: none; }
.var-list details { border-top: 1px solid var(--line); }
.var-list details:first-child { border-top: 0; }
.var-list summary { padding: 10px 18px; font-weight: 600; font-size: 13.5px; cursor: pointer; }
.var-list ul { list-style: none; margin: 0; padding: 0 14px 12px; display: grid; gap: 6px; }
.var-list li { display: grid; gap: 2px; }
.var-list li span { font-size: 12px; color: var(--muted); padding-left: 4px; }
.var-chip { justify-self: start; border: 1px dashed #C9B8F5; background: var(--violet-soft); color: var(--violet-ink); border-radius: 6px; padding: 2px 8px; font: 600 12.5px/1.5 var(--font-ui); cursor: pointer; }
.var-chip:hover { background: #E3DBFF; }
.var-chip.is-todo { border-color: #EBCB5C; background: var(--amber-soft); color: #6B5000; }
.mail-preview-dlg { width: min(760px, calc(100vw - 32px)) !important; }
.mail-preview-frame { width: 100%; height: min(70vh, 720px); border: 1px solid var(--line); border-radius: var(--r-md); margin-top: 8px; background: #f5f4f8; }
.mail-view iframe { display: block; width: 100%; min-height: 420px; border: 0; border-radius: var(--r-lg); }
.mail-banner-preview { max-width: 320px; border-radius: 8px; border: 1px solid var(--line); margin-bottom: 6px; }
.test-send { display: flex; align-items: center; justify-content: flex-end; gap: 14px; flex-wrap: wrap; margin-top: 4px; }
.test-send p { margin: 0; }
.input-affix .affix-left { left: 12px; right: auto; }
.input-affix:has(.affix-left) .input { padding-left: 36px; padding-right: 12px; }

/* Fenêtre d'envoi */
dialog.mail-composer { border: 0; padding: 0; border-radius: var(--r-lg); box-shadow: var(--shadow-pop); width: min(1080px, calc(100vw - 24px)); max-height: calc(100vh - 24px); color: var(--ink); }
dialog.mail-composer::backdrop { background: rgba(31,26,43,.5); }
.mail-composer form { display: flex; flex-direction: column; max-height: calc(100vh - 24px); position: relative; }
.mc-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 20px 12px; border-bottom: 1px solid var(--line); }
.mc-head h2 { font-size: 18px; }
.mc-context { margin: 3px 0 0; font-size: 13px; color: var(--muted); }
.mc-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; padding: 14px 20px; overflow: auto; }
.mc-body:has(.mc-side:not([hidden])) { grid-template-columns: minmax(0, 1fr) 230px; }
.mc-main { display: flex; flex-direction: column; gap: 9px; min-width: 0; }
.mc-row { display: grid; grid-template-columns: 70px minmax(0, 1fr); align-items: center; gap: 10px; }
.mc-row > label { font-size: 13px; font-weight: 600; color: var(--muted); }
.mc-inline { display: flex; align-items: center; gap: 10px; }
.mc-inline .input { flex: 1; }
.mc-todo { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 8px 10px; border-radius: var(--r-md); background: var(--amber-soft); color: #5E4700; font-size: 13px; }
.mc-todo-list { display: flex; flex-wrap: wrap; gap: 5px; }
.mc-editor .me-frame { min-height: 320px; max-height: 58vh; }
.mc-error { margin: 0; padding: 8px 10px; border-radius: var(--r-md); background: var(--red-soft); color: #8F2323; font-size: 13.5px; }
.mc-side h3 { font-size: 13.5px; margin: 4px 0 8px; color: var(--muted); }
.mc-side ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.mc-side li { padding: 8px 10px; border-radius: var(--r-sm); background: var(--sunken); border: 1px solid var(--line); font-size: 12.5px; }
.mc-side li strong { display: block; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mc-side li span { color: var(--muted); }
.mc-foot { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 12px 20px 16px; border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); }
.mc-loading { position: absolute; inset: 0; display: grid; place-items: center; align-content: center; gap: 10px; background: rgba(255,255,255,.72); font-weight: 600; color: var(--ink-2); border-radius: var(--r-lg); }
.mc-loading span { width: 26px; height: 26px; border-radius: 50%; border: 3px solid var(--line-strong); border-top-color: var(--amber); animation: mc-spin .8s linear infinite; }
@keyframes mc-spin { to { transform: rotate(360deg); } }
@media (max-width: 760px) {
  .mc-body:has(.mc-side:not([hidden])) { grid-template-columns: minmax(0, 1fr); }
  .mc-side { display: none; }
  .mc-row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
}

/* ------------------------------------------------------------------ */
/* Lot 6 — Plateforme et abonnement                                    */
/* ------------------------------------------------------------------ */
.sidebar-platform { background: #15111F; }
.platform-chip .initial { background: var(--violet); color: #fff; }
.nav-form { margin: 0; }
.nav-form button { display: flex; align-items: center; gap: 11px; width: 100%; padding: 8px 10px; border: 0; border-radius: var(--r-sm); background: none; color: var(--night-ink); font: inherit; font-size: 14px; cursor: pointer; text-align: left; }
.nav-form button .ic { color: var(--night-muted); }
.nav-form button:hover { background: var(--night-2); }
.impersonate-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 9px 32px; background: var(--violet); color: #fff; font-size: 13.5px; }
.impersonate-bar span { flex: 1; }
.impersonate-bar form { margin: 0; }
.impersonate-bar .btn { background: #fff; border-color: #fff; color: var(--violet-ink); }
.plans-admin { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 16px; align-items: start; }
.plans-admin .panel + .panel { margin-top: 0; }
.plan-new > summary { cursor: pointer; list-style: none; border-bottom: 0; }
.plan-new > summary::-webkit-details-marker { display: none; }
.plan-new[open] > summary { border-bottom: 1px solid var(--line); }
.plan-new .plan-edit { border: 0; border-radius: 0; }
.plan-new .plan-edit > .panel-head { display: none; }
.feature-picks { border: 0; margin: 16px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px 14px; }
.feature-picks legend { margin-bottom: 8px; }
.plugin-edit-form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; width: 100%; }
.plugin-edit-form .field { gap: 2px; }
.plugin-edit-form .grow { flex: 1; min-width: 220px; }
.plugin-inc { display: flex; align-items: center; gap: 4px 12px; flex-wrap: wrap; }
.pay-pending { border-color: #F1D27A; background: linear-gradient(180deg, #FFFBEA, var(--surface) 60%); margin-bottom: 18px; }
.pay-pending .panel-head h2 { display: flex; align-items: center; gap: 8px; }
.pay-pending .price-big { font-family: var(--font-display); font-size: 26px; }
@media (max-width: 640px) { .plans-admin { grid-template-columns: minmax(0, 1fr); } .impersonate-bar { padding: 9px 16px; } }

/* ------------------------------------------------------------------ */
/* Lot 7 — Page client (équipe), rendez-vous, témoins, Event Live      */
/* ------------------------------------------------------------------ */
.ic-up { transform: rotate(180deg); }
.opt-chip input { margin: 0; accent-color: var(--violet); }
label.opt-chip { cursor: pointer; padding: 5px 11px; font-size: 13.5px; }
label.opt-chip:has(input:checked) { background: var(--violet-soft); border-color: var(--violet); color: var(--violet-ink); }
.opt-chip.is-static { background: var(--amber-soft); border-color: transparent; }
.inline-add { display: flex; gap: 8px; align-items: center; justify-content: stretch; }
.inline-add .input { flex: 1; }
form.panel-foot.inline-add { justify-content: stretch; }
details.panel-foot { display: block; }
details.panel-foot > summary { list-style: none; cursor: pointer; display: inline-flex; }
details.panel-foot > summary::-webkit-details-marker { display: none; }
.small-title { font-size: 13px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin: 14px 0 6px; }
.small-title.is-red { color: var(--red); }
.plain-list { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 4px; font-size: 14px; }
.plain-list li { display: flex; align-items: center; gap: 7px; }
.prep-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.prep-list li { display: flex; align-items: center; gap: 10px; }
.prep-list li a { flex: 1; font-weight: 600; color: var(--ink); }
.prep-dot { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--line-strong); display: grid; place-items: center; }
.prep-list li.is-done .prep-dot { background: var(--green); border-color: var(--green); color: #fff; }
.run-list { list-style: none; margin: 0; padding: 0; }
.run-list > li { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 14px; padding: 14px 20px; border-top: 1px solid var(--line); }
.run-list > li:first-child { border-top: 0; }
.run-time { font-family: var(--font-display); font-weight: 700; font-size: 16px; }
.run-time small { display: block; font-family: var(--font-ui); font-size: 11.5px; font-weight: 500; color: var(--muted); }
.run-detail { font-size: 14px; color: var(--ink-2); margin: 4px 0; }
.run-detail p { margin: 0 0 4px; }
.run-musics { list-style: none; margin: 6px 0; padding: 0; display: grid; gap: 3px; font-size: 13.5px; }
.run-musics li { display: flex; align-items: center; gap: 6px; }
.run-tools { display: flex; gap: 0; align-items: flex-start; }
.run-edit { margin-top: 8px; }
.run-edit[open] { padding: 12px; background: var(--sunken); border-radius: var(--r-md); }
.music-board { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.music-board .panel-head h2 { display: flex; align-items: center; gap: 8px; }
.table-plan { list-style: none; margin: 0; padding: 0; }
.table-plan li { padding: 10px 20px; border-top: 1px solid var(--line); }
.table-plan li:first-child { border-top: 0; }
.table-plan p { margin: 0; }
.chat { list-style: none; margin: 0; padding: 18px 20px; display: flex; flex-direction: column; gap: 10px; max-height: 62vh; overflow-y: auto; background: var(--sunken); }
.chat-msg { display: flex; align-items: flex-end; gap: 6px; max-width: 80%; }
.chat-msg.is-team { align-self: flex-end; }
.chat-msg.is-system { align-self: center; }
.chat-bubble { background: var(--surface); border: 1px solid var(--line); border-radius: 14px 14px 14px 4px; padding: 9px 13px; min-width: 0; }
.chat-msg.is-team .chat-bubble { background: var(--violet-soft); border-color: #D8CFFF; border-radius: 14px 14px 4px 14px; }
.chat-msg.is-system .chat-bubble { background: var(--amber-soft); border-color: transparent; font-size: 13px; }
.chat-bubble p { margin: 0 0 4px; overflow-wrap: anywhere; }
.chat-file { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; margin-right: 10px; }
.chat-meta { display: block; font-size: 11.5px; color: var(--muted); }
.chat-compose { display: block; }
.chat-compose-foot { display: flex; align-items: center; gap: 12px; margin-top: 8px; flex-wrap: wrap; }
.chat-compose-foot .input { max-width: 280px; }
.chat-compose-foot .btn { margin-left: auto; }
.witness-items > li { align-items: flex-start; }
.witness-items p { margin: 6px 0 0; }
.appt-rows > li { align-items: flex-start; }
.appt-rows .title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.appt-msg { margin: 6px 0 2px; font-size: 14px; color: var(--ink-2); }
.appt-actions { display: flex; gap: 6px; align-items: center; }
.slot-days { padding: 16px 20px; display: grid; gap: 14px; }
.slot-date { margin: 0 0 6px; font-weight: 600; font-size: 13.5px; }
.slot-list { display: flex; flex-wrap: wrap; gap: 6px; }
.slot > summary { list-style: none; cursor: pointer; padding: 5px 11px; border-radius: 8px; border: 1px solid var(--line-strong); background: var(--surface); font-weight: 600; font-size: 13px; font-variant-numeric: tabular-nums; display: inline-flex; flex-direction: column; align-items: center; line-height: 1.2; }
.slot > summary::-webkit-details-marker { display: none; }
.slot > summary small { font-weight: 500; font-size: 11px; color: inherit; opacity: .85; }
.slot.is-booked > summary { background: var(--green-soft); border-color: #B7DFC9; color: var(--green); }
.slot.is-blocked > summary { background: var(--paper); color: var(--muted); text-decoration: line-through; }
.live-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.live-bar .link-box { flex: 1; min-width: 260px; margin: 0; }
.live-cover-preview { max-width: 100%; max-height: 140px; border-radius: 10px; object-fit: cover; margin-bottom: 6px; }
.grid-3cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: start; }
.grid-3cols .panel-foot { display: grid; justify-content: stretch; }
.media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; padding: 16px 20px; }
.media-item { margin: 0; position: relative; }
.media-item img, .media-item video { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 10px; background: var(--paper); }
.media-item figcaption { font-size: 12px; color: var(--muted); margin-top: 3px; }
.media-check { position: absolute; top: 6px; left: 6px; z-index: 2; background: rgba(255,255,255,.9); border-radius: 6px; padding: 3px; display: flex; }
.media-check input { width: 18px; height: 18px; margin: 0; accent-color: var(--violet); }
.bulk-bar { justify-content: flex-start; align-items: center; flex-wrap: wrap; }
.seg-links { display: inline-flex; padding: 3px; border-radius: 10px; background: #ECEAF1; gap: 2px; }
.seg-links a { padding: 5px 12px; border-radius: 8px; font-size: 13px; font-weight: 600; color: var(--muted); }
.seg-links a.is-active { background: var(--surface); color: var(--ink); box-shadow: 0 1px 2px rgba(31,26,43,.12); }
.seg-links a:hover { text-decoration: none; }
.board > li { gap: 10px; }
tr.is-off td { opacity: .55; }
.subnav .nav-badge { margin-left: 2px; }
@media (max-width: 1100px) { .grid-3cols { grid-template-columns: 1fr; } }
@media (max-width: 860px) { .music-board { grid-template-columns: 1fr; } .run-list > li { grid-template-columns: 52px minmax(0, 1fr); } .run-tools { grid-column: 2; flex-direction: row; } .chat-msg { max-width: 94%; } }
.link-box code { flex: 1; min-width: 0; display: flex; align-items: center; padding: 6px 10px; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--sunken); font-size: 12.5px; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.live-bar .link-box, .p-card .link-box, .panel-body .link-box:first-child { border-top: 0; padding-top: 0; }
fieldset.field { border: 0; padding: 0; margin: 0; min-width: 0; }
fieldset.field > legend { padding: 0; margin-bottom: 6px; }
.slot-days { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); }
.link-box { min-width: 0; max-width: 100%; }
.panel-body .input, .panel-body select.input { max-width: 100%; }
.run-list p.small .ic, .p-note .ic { margin-right: 4px; }
.margin-card-wide .margin-lines { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); column-gap: 28px; }
.margin-card-wide .margin-lines .total { grid-column: 1 / -1; border-top: 1px solid var(--line); padding-top: 8px; }
.grid-main > div > .panel + .panel { margin-top: 18px; }
.bulk-cat { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 20px; border-bottom: 1px solid var(--line); background: var(--sunken); }
.bulk-cat .input { max-width: 240px; }
.table .col-check { width: 36px; padding-right: 0; }
.table .col-check input { width: 17px; height: 17px; accent-color: var(--violet); }

/* ===== Modèles de documents HTML ===== */
.layout-rows > li { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.layout-row-main { display: flex; align-items: center; gap: 12px; flex: 1 1 280px; min-width: 0; color: inherit; text-decoration: none; }
.layout-row-main small { display: block; margin-top: 2px; }
.layout-ico { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; background: var(--amber-soft); color: var(--ink); flex: none; }
.layout-row-actions { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.tpl-card-form button { all: unset; box-sizing: border-box; display: grid; gap: 4px; width: 100%; height: 100%; padding: 10px; border: 1px solid var(--line-strong); border-radius: var(--r-md); background: var(--surface); cursor: pointer; }
.tpl-card-form button:hover { border-color: var(--ink); }
.tpl-card-form button:focus-visible { box-shadow: var(--focus); }
.tpl-card-form .btn { justify-self: start; margin-top: 6px; pointer-events: none; }
.tpl-mini-html i { background: repeating-linear-gradient(90deg, var(--c) 0 10px, transparent 10px 16px); opacity: .55; height: 6px; top: 10px; left: 12px; right: 40%; }
.layout-sub { font-size: 15px; margin: 22px 0 4px; }
.chips-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.layout-import { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
.layout-import .input { max-width: 320px; }
.layout-editor-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.layout-editor-head .spacer { flex: 1; }
.layout-name { max-width: 380px; font-weight: 700; font-size: 16px; }
.layout-editor-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.code-area { width: 100%; min-height: 62vh; font: 12.5px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; white-space: pre; overflow: auto; tab-size: 2; resize: vertical; background: #1E1B24; color: #F2EEF6; border-color: #1E1B24; padding: 12px; }
.layout-vars { margin-top: 10px; border: 1px solid var(--line); border-radius: var(--r-md); padding: 10px 12px; background: var(--surface); }
.layout-vars summary { cursor: pointer; font-weight: 700; }
.layout-vars summary small { font-weight: 400; color: var(--muted); margin-left: 6px; }
.layout-vars-group h4 { margin: 10px 0 4px; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.var-chip { border: 1px solid var(--line-strong); background: #fff; border-radius: 7px; padding: 3px 7px; margin: 0 4px 4px 0; font: 12px ui-monospace, Menlo, Consolas, monospace; cursor: pointer; }
.var-chip:hover { background: var(--amber-soft); border-color: var(--ink); }
.layout-preview { position: sticky; top: 12px; }
.layout-preview-bar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.layout-preview-bar select { flex: 1 1 200px; max-width: 340px; }
.layout-preview-bar .seg button { border: 0; background: none; padding: 6px 14px; border-radius: 8px; font-weight: 600; font-size: 13.5px; color: var(--muted); cursor: pointer; }
.layout-preview-bar .seg button.is-active { background: #fff; color: var(--ink); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.layout-frame { width: 100%; height: 78vh; border: 1px solid var(--line); border-radius: var(--r-md); background: #efeaef; }
.pdf-frozen { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 13px; color: var(--muted); margin: 0 0 8px; }
.tpl-chip-edit { text-decoration: none; }
@media (max-width: 1000px) { .layout-editor-grid { grid-template-columns: 1fr; } .layout-preview { position: static; } .code-area { min-height: 46vh; } }
.layout-code .code-area { height: 62vh; background: #1E1B24; color: #F2EEF6; border-color: #1E1B24; font: 12.5px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; white-space: pre; }
@media (max-width: 1000px) { .layout-code .code-area { height: 46vh; } }

/* ===== Rentabilité en cascade et simulateur équipe / prestataires ===== */
.margin-card-wide .margin-lines.margin-flow { grid-template-columns: 1fr; max-width: 620px; column-gap: 0; }
.margin-lines .sub { padding: 6px 0; border-top: 1px dashed var(--line); border-bottom: 1px dashed var(--line); }
.margin-lines .sub dt { font-weight: 600; color: var(--ink); }
dialog.confirm.dlg-assign { width: min(880px, calc(100vw - 32px)); }
.dlg-assign-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(250px, .9fr); gap: 18px; align-items: start; }
.add-assign { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(250px, 1fr); gap: 18px; align-items: start; }
.add-assign > .add-actions { grid-column: 1 / -1; }
.sim { margin-top: 14px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--sunken); padding: 14px 16px; position: sticky; top: 10px; }
.add-assign .sim { margin-top: 0; }
.sim h4 { display: flex; align-items: center; gap: 6px; margin: 0 0 10px; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-2); }
.sim dl { margin: 0; display: grid; gap: 6px; font-size: 13px; }
.sim dl > div { display: flex; justify-content: space-between; gap: 10px; }
.sim dt { color: var(--ink-2); }
.sim dd { margin: 0; font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.sim .cost dd { color: var(--muted); font-weight: 500; }
.sim .sub { padding: 5px 0; border-top: 1px dashed var(--line-strong); }
.sim .total { margin-top: 4px; padding: 10px 12px; border-radius: 10px; background: var(--green-soft); }
.sim .total dt { font-weight: 700; color: var(--ink); }
.sim .total dd { font-family: var(--font-display); font-size: 19px; color: var(--green); }
.sim.is-neg .total { background: var(--red-soft); }
.sim.is-neg .total dd { color: var(--red); }
.sim .hint { margin: 10px 0 0; font-size: 12px; }
.field.yes-no { display: grid; grid-template-columns: minmax(150px, max-content) max-content; justify-content: start; align-items: center; gap: 4px 14px; }
.yes-no .yn-label { font-weight: 600; font-size: 13.5px; }
.yes-no .seg { justify-self: start; }
.yes-no .hint { grid-column: 1 / -1; margin: 0; }
.seg input:disabled + label { opacity: .4; cursor: not-allowed; }
@media (max-width: 760px) { .dlg-assign-grid, .add-assign { grid-template-columns: 1fr; } .sim { position: static; } }
.doc-expired { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.doc-expired p { flex: 1; margin: 0; }

/* Devis & factures de la prestation : liste + PDF à côté */
.docs-split{display:grid;gap:18px;align-items:start}
@media (min-width:1100px){.docs-split:not(.is-empty){grid-template-columns:minmax(0,1fr) minmax(380px,46%)}}
.doc-pick tbody tr{cursor:pointer}
.doc-pick tbody tr.is-picked td{background:var(--amber-soft)}
.doc-pick tbody tr.is-picked td:first-child{box-shadow:inset 3px 0 0 var(--amber)}
.doc-pick tbody tr:focus-visible{outline:2px solid var(--amber);outline-offset:-2px}
.pdf-ico{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;color:var(--muted)}
.pdf-ico:hover{background:var(--sunken);color:inherit}
.pdf-ico.is-frozen{color:var(--green);background:var(--green-soft)}
.table .center{text-align:center}
.doc-viewer{position:sticky;top:16px;overflow:hidden}
.doc-viewer .panel-head{gap:10px}
.doc-viewer-actions{display:flex;gap:6px;flex-shrink:0}
.doc-viewer-frame{height:calc(100vh - 150px);min-height:520px;background:var(--paper)}
.doc-viewer-frame iframe{width:100%;height:100%;border:0;display:block}
@media (max-width:1099px){.doc-viewer{display:none}}

/* Page client (équipe) : fils de messages par prestataire */
.thread-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.thread-tabs a{display:flex;align-items:center;gap:10px;padding:8px 14px 8px 8px;border-radius:12px;background:var(--surface);border:1.5px solid var(--line);color:inherit;text-decoration:none}
.thread-tabs a:hover{border-color:var(--line-strong)}
.thread-tabs a.is-active{border-color:var(--amber);background:var(--amber-soft)}
.thread-tabs a > span:nth-child(2){display:flex;flex-direction:column;line-height:1.2}
.thread-tabs small{color:var(--muted);font-size:12px}

/* Facture déposée par un prestataire (espace équipe) */
.crew-invoice-link { display: inline-flex; align-items: center; gap: 5px; margin-top: 4px; padding: 3px 9px; border-radius: 999px; background: var(--green-soft); color: var(--green); font-size: 11.5px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.sidebar-crew { margin: 8px 12px 0; }

/* Couleur de chaque modèle de devis/facture */
.tpl-colors { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.tpl-color { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border-radius: var(--r-md); background: var(--sunken); box-shadow: inset 0 0 0 1px var(--line); }
.tpl-color > span { font-weight: 700; font-size: 13px; }
.tpl-color .link-btn { align-self: flex-start; }

/* Éditeur de devis : bloc déplacement */
.travel-box { margin: 0 0 14px; padding: 12px; border-radius: var(--r-md); background: var(--sunken); box-shadow: inset 0 0 0 1px var(--line); display: grid; gap: 8px; }
.travel-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-weight: 700; font-size: 13.5px; }
.travel-head > span { display: inline-flex; align-items: center; gap: 6px; }
.travel-head .switch { font-weight: 600; font-size: 12.5px; }
.travel-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 13px; }
.travel-row .input-affix { max-width: 120px; }
.travel-calc { margin: 0; display: flex; justify-content: space-between; gap: 8px; font-size: 12.5px; color: var(--muted); }
.travel-calc strong { color: var(--ink); white-space: nowrap; }
.travel-box .hint { margin: 0; }

/* ---------- Rendez-vous : agenda des créneaux (mois + détail du jour) ---------- */
.slot-main { display: grid; gap: 18px; min-width: 0; }
.slot-month { display: flex; align-items: center; gap: 8px; }
.slot-month strong { min-width: 120px; text-align: center; }
.slot-week, .slot-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.slot-week span { text-align: center; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); padding-bottom: 4px; }
.slot-cell { min-height: 66px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); padding: 6px 7px; display: flex; flex-direction: column; gap: 2px; color: var(--ink); text-decoration: none; min-width: 0; }
.slot-cell b { font-size: 14px; font-variant-numeric: tabular-nums; }
.slot-cell small { font-size: 11px; font-weight: 600; color: var(--amber-ink, var(--ink)); line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.slot-cell small.is-booked { color: var(--green); }
.slot-cell.is-blank { visibility: hidden; }
.slot-cell.is-past { opacity: .5; }
.slot-cell.has-slots { background: var(--amber-soft); border-color: color-mix(in srgb, var(--amber) 45%, var(--line)); }
.slot-cell:hover { border-color: var(--amber); text-decoration: none; }
.slot-cell.is-today b { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--ink); color: #fff; font-size: 12.5px; }
.slot-cell.is-sel { border-color: var(--amber); box-shadow: 0 0 0 2px var(--amber); background: var(--amber); }
.slot-cell.is-sel small { color: var(--amber-ink, var(--ink)); }
.slot-legend { display: flex; gap: 16px; flex-wrap: wrap; margin: 12px 0 0; font-size: 12.5px; color: var(--muted); }
.slot-legend span::before { content: ""; display: inline-block; width: 9px; height: 9px; border-radius: 3px; margin-right: 6px; vertical-align: 0; }
.slot-legend .is-free::before { background: var(--amber); }
.slot-legend .is-booked::before { background: var(--green); }
.slot-legend .is-none::before { background: var(--line-strong); }
.slot-detail .kicker, .kicker { display: block; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin-bottom: 2px; }
.slot-times { list-style: none; margin: 0; padding: 12px 20px 18px; display: grid; gap: 8px; }
.slot-times li { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.slot-times li .grow { flex: 1; min-width: 150px; display: grid; gap: 1px; }
.slot-times li small { color: var(--muted); font-size: 12.5px; }
.slot-times li.is-free { border-left: 4px solid var(--amber); }
.slot-times li.is-booked { border-left: 4px solid var(--green); background: var(--green-soft); }
.slot-times li.is-blocked { border-left: 4px solid var(--line-strong); opacity: .7; }
.slot-times li.is-blocked strong { text-decoration: line-through; }
.slot-times form { margin: 0; }
@media (max-width: 640px) {
  .slot-week, .slot-grid { gap: 3px; }
  .slot-cell { min-height: 52px; padding: 4px; border-radius: 9px; align-items: center; }
  .slot-cell small { font-size: 9.5px; }
  .slot-cell small.is-booked { display: none; }
  .slot-month strong { min-width: 0; }
}

/* Rentabilité : détail du coût catalogue */
.cat-detail { margin-top: 12px; border: 1px solid var(--line); border-radius: 10px; padding: 0 12px; }
.cat-detail summary { cursor: pointer; padding: 10px 0; font-weight: 600; font-size: 13.5px; list-style: none; display: flex; align-items: center; gap: 6px; }
.cat-detail summary::-webkit-details-marker { display: none; }
.cat-detail[open] summary .ic { transform: rotate(180deg); }
.cat-detail table { width: 100%; border-collapse: collapse; font-size: 13px; margin-bottom: 8px; }
.cat-detail th { text-align: left; font-size: 11.5px; color: var(--muted); font-weight: 600; padding: 4px 4px; border-bottom: 1px solid var(--line); }
.cat-detail td { padding: 6px 4px; border-bottom: 1px solid var(--line); vertical-align: top; }
.cat-detail .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.cat-detail tr.is-off td { color: var(--muted); }
.cat-detail tr.is-child td:first-child { padding-left: 16px; }
.cat-detail tfoot td { font-weight: 700; border-bottom: 0; }
.cat-detail .hint { margin: 0 0 10px; }

/* Tableau de bord : premiers pas */
.starter { padding: 20px 22px; margin: 4px 0 26px; border: 1px solid color-mix(in srgb, var(--amber) 45%, var(--line)); background: linear-gradient(135deg, var(--amber-soft), var(--surface) 60%); }
.starter-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.starter-head h2 { margin: 0; font-size: 19px; }
.starter-head p { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.starter-bar { height: 6px; border-radius: 99px; background: var(--line); margin: 14px 0 6px; overflow: hidden; }
.starter-bar span { display: block; height: 100%; background: var(--amber); border-radius: 99px; }
.starter-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.starter-steps li { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 12px; background: var(--surface); border: 1px solid var(--line); flex-wrap: wrap; }
.starter-steps li .grow { flex: 1; min-width: 180px; display: grid; gap: 1px; }
.starter-steps li small { color: var(--muted); font-size: 12.5px; }
.starter-steps li form { margin: 0; }
.starter-n { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: 13px; background: var(--paper, #f3f1f6); color: var(--muted); flex: none; }
.starter-steps li.is-next { border-color: var(--amber); box-shadow: 0 0 0 2px color-mix(in srgb, var(--amber) 30%, transparent); }
.starter-steps li.is-next .starter-n { background: var(--amber); color: var(--amber-ink); }
.starter-steps li.is-done { opacity: .65; }
.starter-steps li.is-done .starter-n { background: var(--green-soft); color: var(--green); }
.starter-steps li.is-done strong { text-decoration: line-through; }

/* Page client du traiteur, côté CRM : menu et couverts */
.def-list { display: grid; grid-template-columns: minmax(140px, 220px) 1fr; gap: 10px 18px; margin: 6px 0 0; }
.def-list dt { color: var(--muted); font-size: 13.5px; }
.def-list dd { margin: 0; font-weight: 500; }
@media (max-width: 640px) { .def-list { grid-template-columns: 1fr; gap: 2px; } .def-list dd { margin-bottom: 10px; } }

/* ---------- Module « Lieu & hébergements » ---------- */
.est-swatch { display: inline-block; width: 10px; height: 10px; border-radius: 3px; background: var(--c, var(--violet)); margin-right: 8px; flex: none; vertical-align: 1px; }
.est-month { display: flex; align-items: center; gap: 10px; }
.est-month strong { min-width: 130px; text-align: center; font-size: 15px; }
.est-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; padding: 10px 16px; border-bottom: 1px solid var(--line); }
.est-legend span { display: inline-flex; align-items: center; gap: 6px; }
.est-dot { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.est-dot.is-confirmed { background: var(--violet); }
.est-dot.is-option { background: repeating-linear-gradient(45deg, var(--violet-soft) 0 3px, #fff 3px 6px); border: 1px solid var(--violet); }
.est-dot.is-direct { background: var(--amber); }
.est-dot.is-over { background: var(--red); }
.est-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.est-grid, .est-book-grid { border-collapse: separate; border-spacing: 0; font-size: 13px; width: 100%; }
.est-grid th, .est-grid td, .est-book-grid th, .est-book-grid td { border-bottom: 1px solid var(--line); }
.est-grid thead th, .est-book-grid thead th { position: sticky; top: 0; background: var(--sunken); font-weight: 600; color: var(--muted); padding: 6px 2px; text-align: center; white-space: nowrap; z-index: 1; }
.est-grid thead th span, .est-book-grid thead th span { display: block; font-size: 11px; font-weight: 500; }
.est-grid thead th b, .est-book-grid thead th b { color: var(--ink); font-size: 13px; }
.est-grid thead th.is-we, .est-book-grid thead th.is-we { background: #F1EEF8; }
.est-grid thead th.is-today b { color: #fff; background: var(--violet); border-radius: 999px; padding: 1px 6px; }
.est-unit, .est-unit-h { position: sticky; left: 0; background: var(--surface); z-index: 2; text-align: left !important; padding: 8px 12px !important; min-width: 190px; max-width: 240px; border-right: 1px solid var(--line); }
.est-unit-h { background: var(--sunken) !important; z-index: 3 !important; }
.est-unit { font-weight: 600; color: var(--ink); }
.est-unit-in { display: flex; align-items: flex-start; gap: 0; }
.est-unit-in .est-swatch { margin-top: 4px; }
.est-unit small { display: block; font-weight: 400; color: var(--muted); font-size: 11.5px; }
.est-unit small.est-unit-note { color: var(--violet-ink); }
.est-kind th { text-align: left; background: var(--paper); font-size: 11.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); padding: 6px 12px; position: sticky; left: 0; }
.est-grid td { min-width: 30px; height: 34px; text-align: center; padding: 2px; border-left: 1px solid var(--line); }
.est-grid td.is-we { background: #FAF8FD; }
.est-grid td.is-today { box-shadow: inset 0 0 0 2px var(--violet-soft); }
.est-grid td > a, .est-grid td > span { display: flex; align-items: center; justify-content: center; height: 28px; border-radius: 5px; font-weight: 700; font-size: 12px; color: #fff; text-decoration: none; }
.est-grid td.is-confirmed > * { background: var(--violet); }
.est-grid td.is-option > * { background: repeating-linear-gradient(45deg, var(--violet-soft) 0 4px, #fff 4px 8px); color: var(--violet-ink); box-shadow: inset 0 0 0 1px var(--violet); }
.est-grid td.is-direct > * { background: var(--amber); color: var(--amber-ink); }
.est-grid td.is-over > * { background: var(--red); }
.est-grid td.is-partial > * { opacity: .72; }
.est-grid td > a:hover { filter: brightness(1.08); }
.est-directs { list-style: none; margin: 0; padding: 0; }
.est-directs li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 20px; border-bottom: 1px solid var(--line); }
.est-directs li:last-child { border-bottom: 0; }
.est-directs span { display: block; color: var(--muted); font-size: 13px; }
/* Grille de réservation d'une prestation */
.est-range { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; position: relative; }
.est-range-pick summary { list-style: none; }
.est-range-pick summary::-webkit-details-marker { display: none; }
.est-range-pop { position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--shadow-pop); padding: 12px; display: grid; gap: 8px; min-width: 220px; }
.est-range-pop label { display: grid; gap: 4px; }
.est-book-grid thead th { padding: 8px 4px; min-width: 64px; }
.est-book-grid thead th.is-event { background: var(--violet-soft); color: var(--violet-ink); }
.est-book-grid thead th em { display: block; font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--violet); text-transform: uppercase; letter-spacing: .04em; }
.est-book-grid td { text-align: center; padding: 6px 4px; border-left: 1px solid var(--line); vertical-align: middle; }
.est-book-grid td.is-we { background: #FAF8FD; }
.est-book-grid td.is-full { background: repeating-linear-gradient(45deg, #fff 0 5px, var(--sunken) 5px 10px); }
.est-book-grid td.is-over { background: var(--red-soft); box-shadow: inset 0 0 0 2px var(--red); }
.est-q { width: 52px; min-height: 34px; text-align: center; border: 1px solid var(--line-strong); border-radius: var(--r-sm); font: inherit; font-weight: 600; background: var(--surface); color: var(--ink); }
.est-q:focus { outline: 2px solid var(--focus); outline-offset: 1px; }
.est-q:not(:placeholder-shown) { border-color: var(--violet); background: var(--violet-soft); color: var(--violet-ink); }
.est-tick { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; cursor: pointer; }
.est-tick input { width: 20px; height: 20px; accent-color: var(--violet); }
.est-free { display: block; font-size: 10.5px; color: var(--muted); min-height: 13px; margin-top: 2px; }
.est-book-grid td.is-over .est-free { color: var(--red); font-weight: 600; }
.est-price-h, .est-note-h { min-width: 96px; }
.est-note-h { min-width: 170px; }
.est-price .input, .est-note .input { min-height: 34px; padding: 5px 8px; font-size: 13px; }
.est-price .input { width: 84px; text-align: right; }
.est-book-grid tr.is-booked .est-unit { color: var(--violet-ink); }
.est-foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.est-total { display: flex; align-items: baseline; gap: 8px; }
.est-total strong { font-size: 20px; font-variant-numeric: tabular-nums; }
.est-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.notice.is-warn { background: #FFF5D1; border-color: #F0D58A; }
.notice.is-warn .ic { color: #9A6B00; }
.table tr.is-muted td { opacity: .55; }
.table tr.is-picked td { background: var(--amber-soft); }
@media (max-width: 640px) {
  .est-unit, .est-unit-h { min-width: 130px; max-width: 150px; padding: 6px 8px !important; }
  .est-month strong { min-width: 0; }
  .est-foot { flex-direction: column; align-items: stretch; }
  .est-actions .btn, .est-actions select { width: 100%; }
}

/* ---------- Paramètres › Apparence ---------- */
.theme-presets { display: flex; flex-wrap: wrap; gap: 8px; }
.theme-preset { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px 6px 6px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); font: inherit; font-size: 13.5px; font-weight: 500; color: var(--ink-2); cursor: pointer; }
.theme-preset:hover { border-color: var(--line-strong); }
.theme-preset.is-on { border-color: var(--violet); box-shadow: 0 0 0 2px var(--violet-soft); color: var(--ink); }
.theme-swatches { display: inline-flex; }
.theme-swatches i { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--surface); margin-left: -6px; }
.theme-swatches i:first-child { margin-left: 0; }
.theme-pickers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 18px; }
.theme-pick-row { display: flex; gap: 8px; align-items: center; }
.theme-pick-row input[type=color] { width: 44px; height: 40px; padding: 2px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); background: var(--surface); cursor: pointer; flex: none; }
.theme-pick-row .input { font-family: ui-monospace, monospace; text-transform: uppercase; }
.theme-preview { display: grid; grid-template-columns: 170px minmax(0, 1fr); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; background: var(--paper); }
.tp-menu { background: var(--night); padding: 14px 10px; display: grid; gap: 4px; align-content: start; }
.tp-brand { height: 22px; width: 70px; border-radius: 6px; background: var(--amber); margin: 0 6px 10px; }
.tp-item { color: var(--night-muted); font-size: 13px; padding: 6px 10px; border-radius: 8px; }
.tp-item.is-on { background: var(--night-3); color: var(--night-ink); }
.tp-main { padding: 16px 18px; display: grid; gap: 12px; align-content: start; }
.tp-main a { color: var(--violet-ink); text-decoration: underline; }
.tp-main .check input { accent-color: var(--violet); }
.tp-tabs { display: flex; gap: 14px; border-bottom: 1px solid var(--line); font-size: 13px; color: var(--muted); }
.tp-tabs span { padding-bottom: 8px; }
.tp-tabs .is-on { color: var(--ink); border-bottom: 2px solid var(--amber); }
.tp-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
@media (max-width: 760px) { .theme-pickers { grid-template-columns: 1fr; } .theme-preview { grid-template-columns: 1fr; } .tp-menu { grid-auto-flow: column; overflow-x: auto; } .tp-brand { display: none; } }

/* =====================================================================
   Module Personnel — planning des équipes
   ===================================================================== */
.stf-head .page-actions { align-items: center; }
.stf-saved { font-size: 13px; color: var(--green); opacity: 0; transition: opacity .2s; }
.stf-saved.is-on { opacity: 1; }
.stf-saved.is-bad { color: var(--red); font-weight: 600; }
.stf.is-busy { cursor: progress; }
.stf.is-busy .stf-events { opacity: .75; transition: opacity .15s .15s; }
.linklike { background: none; border: 0; padding: 0; font: inherit; color: var(--violet-ink); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }

/* Bandeau du mois */
.stf-month { padding: 12px 14px 12px; margin-bottom: 16px; }
.stf-month-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.stf-month-nav { display: flex; align-items: center; gap: 6px; }
.stf-month-nav strong { min-width: 130px; text-align: center; font-size: 15px; }
.stf-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 12px; color: var(--ink-2); }
.stf-legend span { display: inline-flex; align-items: center; gap: 6px; }
.stf-legend i { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.stf-legend .lg-placed { background: var(--violet); }
.stf-legend .lg-miss { background: #F6D3D3; }
.stf-legend .lg-dot { background: var(--muted); border-radius: 50%; }
.stf-days { position: relative; display: grid; grid-template-columns: repeat(var(--n), minmax(30px, 1fr)); gap: 3px; overflow-x: auto; padding-bottom: 2px; }
.stf-days a { display: flex; flex-direction: column; align-items: center; padding: 5px 0 6px; border-radius: 9px; color: var(--ink); text-decoration: none; border: 1px solid transparent; line-height: 1.15; }
.stf-days a:hover { background: var(--sunken); border-color: var(--line); text-decoration: none; }
.stf-days a.is-we { background: var(--sunken); }
.stf-days a.is-on { background: var(--night); color: var(--night-ink); border-color: var(--night); }
.stf-days a.is-on .dw { color: var(--night-muted); }
.stf-days a.is-today b { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; }
.stf-days .dw { font-size: 10px; color: var(--muted); }
.stf-days b { font-size: 13px; }
.stf-days .dots { display: flex; gap: 2px; height: 6px; margin: 3px 0; }
.stf-days .dots i { width: 6px; height: 6px; border-radius: 50%; display: block; }
.stf-days .gauge { display: flex; flex-direction: column-reverse; height: 30px; width: 12px; border-radius: 3px; overflow: hidden; background: var(--paper); }
.stf-days a.is-on .gauge { background: var(--night-3); }
.stf-days .g-p { background: var(--violet); display: block; }
.stf-days .g-m { background: #F0B4B4; display: block; }

/* Mise en page : vivier à gauche, événements à droite */
.stf-layout { display: flex; gap: 16px; align-items: flex-start; }
.stf-pool { flex: 0 0 290px; position: sticky; top: 76px; max-height: calc(100vh - 92px); display: flex; flex-direction: column; overflow: hidden; }
.stf-pool-head { padding: 12px 14px; border-bottom: 1px solid var(--line); }
.stf-pool-head h2 { font-size: 15px; margin: 0; }
.stf-pool-head p { margin: 2px 0 8px; font-size: 12px; color: var(--muted); }
.stf-pool-head input[type="search"] { width: 100%; }
.stf-filters { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.stf-filters button { border: 1px solid var(--line); background: var(--surface); border-radius: 999px; padding: 3px 10px; font: inherit; font-size: 12px; cursor: pointer; color: var(--ink-2); }
.stf-filters button[aria-pressed="true"] { background: var(--night); border-color: var(--night); color: #fff; }
.stf-pool-list { list-style: none; margin: 0; padding: 4px 0; overflow-y: auto; flex: 1; }
.stf-pool-list li { display: flex; align-items: center; gap: 9px; padding: 6px 12px; cursor: grab; border-left: 3px solid transparent; user-select: none; }
.stf-pool-list li:hover { background: var(--sunken); }
.stf-pool-list li.is-sel { background: var(--violet-soft); border-left-color: var(--violet); }
.stf-pool-list li.is-placed .stf-who strong { color: var(--muted); }
.stf-pool-list li.is-off { opacity: .55; }
.stf-pool-list li input { width: 16px; height: 16px; accent-color: var(--violet); flex: none; margin: 0; }
.stf-pool-list .stf-empty { cursor: default; color: var(--muted); font-size: 13px; padding: 16px; }
.stf-pool-foot { padding: 9px 14px; border-top: 1px solid var(--line); background: var(--violet-soft); font-size: 12.5px; color: var(--violet-ink); }
.stf-av { width: 30px; height: 30px; border-radius: 50%; color: #fff; font-size: 11px; font-weight: 700; display: grid; place-items: center; flex: none; }
.stf-av.is-free { background: transparent; border: 1.5px dashed var(--line-strong); color: var(--muted); }
.stf-who { min-width: 0; flex: 1; line-height: 1.22; }
.stf-who strong { display: block; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stf-who strong.has-alert { color: var(--red); }
.stf-who small { display: block; font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stf-meta { text-align: right; line-height: 1.2; flex: none; }
.stf-meta b { display: block; font-size: 12.5px; }
.stf-tag { font: inherit; font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 999px; border: 0; background: var(--paper); color: var(--muted); cursor: pointer; }
.stf-tag.is-yes { background: var(--green-soft); color: #16704A; }
.stf-tag.is-asked { background: var(--amber-soft); color: #6B5000; }
.stf-tag.is-no { background: var(--red-soft); color: var(--red); }
.stf-tag.is-leave { background: var(--blue-soft); color: #2B4C9A; }
.stf-ghost { position: absolute; top: -100px; left: -100px; background: var(--violet); color: #fff; font-weight: 700; font-size: 13px; padding: 6px 12px; border-radius: 999px; }

/* Événements */
.stf-events { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.stf-ev { overflow: hidden; }
.stf-ev-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.stf-ev-bar { width: 8px; height: 36px; border-radius: 4px; flex: none; }
.stf-ev-title { min-width: 0; flex: 1 1 220px; }
.stf-ev-title h2 { margin: 0; font-size: 16px; }
.stf-ev-title h2 a { color: inherit; }
.stf-ev-title span { font-size: 12.5px; color: var(--muted); }
.stf-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.stf-chip { font-size: 12px; padding: 3px 9px; border-radius: 999px; background: color-mix(in srgb, var(--c) 12%, #fff); color: color-mix(in srgb, var(--c) 70%, #000); }
.stf-chip.is-miss { background: var(--red-soft); color: var(--red); }
.stf-chip.is-ok b::after { content: " ✓"; }
.stf-ev-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.stf-ev.is-internal-empty { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 16px; border: 1.5px dashed var(--line-strong); border-radius: var(--r-lg); background: var(--surface); font-size: 13px; }
.stf-ev.is-internal-empty > div { flex: 1 1 260px; }
.stf-ev.is-internal-empty .stf-ev-bar { height: 22px; width: 6px; }

.stf-grid { --lab: 210px; }
.stf-row { display: flex; min-height: 38px; border-bottom: 1px solid #F0EEF4; }
.stf-row:last-child { border-bottom: 0; }
.stf-lab { width: var(--lab); flex: none; padding: 4px 12px 4px 14px; display: flex; align-items: center; gap: 9px; border-right: 1px solid var(--line); min-width: 0; }
.stf-track { position: relative; flex: 1; min-width: 0; }
.stf-person .stf-track, .stf-free .stf-track, .stf-drop-empty .stf-track { background-image: linear-gradient(to right, #F0EEF4 1px, transparent 1px); background-size: calc(100% / var(--hours)) 100%; }
.stf-chart-row { min-height: 64px; border-bottom: 1px solid var(--line); }
.stf-peak { flex-direction: column; align-items: flex-start; justify-content: center; gap: 0; font-size: 12px; color: var(--muted); line-height: 1.3; }
.stf-peak b { font-size: 18px; color: var(--ink); }
.stf-peak em { font-style: normal; font-weight: 600; }
.stf-chart-row svg { position: absolute; inset: 4px 0 2px; width: 100%; height: calc(100% - 6px); }
.ch-gap { fill: #F6D3D3; }
.ch-area { fill: var(--violet-soft); }
.ch-line { fill: none; stroke: var(--violet); stroke-width: 2.2; stroke-linejoin: round; }
.ch-need { fill: none; stroke: #E07A1E; stroke-width: 1.8; stroke-dasharray: 5 4; }
em.is-miss, b.is-miss { color: var(--red); }
em.is-ok { color: var(--green); }
.stf-hours { min-height: 24px; background: var(--sunken); border-bottom: 1px solid var(--line); }
.stf-hours .stf-track span { position: absolute; top: 4px; transform: translateX(-50%); font-size: 11px; color: var(--muted); font-weight: 600; white-space: nowrap; }
.stf-hours .stf-track span:first-child { transform: none; }
.stf-hours .stf-track span:last-child { transform: translateX(-100%); }
.stf-post { min-height: 30px; background: var(--sunken); }
.stf-post .stf-lab { justify-content: space-between; border-right: 0; border-left: 4px solid var(--c); padding-left: 10px; }
.stf-post .stf-lab strong { font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-2); }
.stf-post .stf-lab span { font-size: 12px; color: var(--muted); }
.stf-post-info { flex: 1; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 12px; color: var(--muted); padding: 2px 10px; }
.stf-place-here { display: none; margin-left: auto; padding: 2px 10px; min-height: 26px; }
.stf-has-sel .stf-place-here { display: inline-flex; }
.stf-person .stf-lab { cursor: grab; }

.stf-bar { position: absolute; top: 6px; bottom: 6px; display: flex; align-items: center; padding: 0 10px; border-radius: 7px; border: 0; font: inherit; color: #fff; text-align: left; min-width: 6px; overflow: hidden; cursor: grab; touch-action: none;
  background: var(--c, var(--violet)); box-shadow: inset 0 0 0 1px rgba(0,0,0,.06); }
.stf-bar > span { font-size: 11.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }
.stf-bar.is-planned { background: color-mix(in srgb, var(--c) 82%, #fff); }
.stf-bar.is-proposed { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--c) 30%, #fff) 0 6px, color-mix(in srgb, var(--c) 18%, #fff) 6px 12px); color: color-mix(in srgb, var(--c) 70%, #000); box-shadow: inset 0 0 0 1.5px var(--c); }
.stf-bar.is-confirmed { background: var(--c); }
.stf-bar.is-open { -webkit-mask-image: linear-gradient(to right, #000 55%, rgba(0,0,0,.25)); mask-image: linear-gradient(to right, #000 55%, rgba(0,0,0,.25)); }
.stf-bar.is-drag { cursor: grabbing; box-shadow: 0 4px 14px -4px rgba(31,26,43,.45); z-index: 3; }
.stf-bar:focus-visible { outline: none; box-shadow: var(--focus); }
.stf-bar.is-free { background: transparent; border: 1.5px dashed var(--line-strong); color: var(--muted); cursor: default; }
.stf-bar .hd { position: absolute; top: 0; bottom: 0; width: 9px; cursor: ew-resize; }
.stf-bar .hd-l { left: 0; }
.stf-bar .hd-r { right: 0; }
.stf-bar .hd::after { content: ""; position: absolute; top: 30%; bottom: 30%; left: 3px; width: 2px; border-radius: 2px; background: rgba(255,255,255,.7); opacity: 0; }
.stf-bar:hover .hd::after { opacity: 1; }
.stf-alert { position: absolute; top: 9px; display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; color: var(--red); background: var(--red-soft); border-radius: 999px; padding: 2px 8px; white-space: nowrap; max-width: 260px; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }
.stf-free .stf-lab { gap: 9px; font-size: 12.5px; }
.stf-hint { position: absolute; left: 12px; right: 12px; top: 50%; transform: translateY(-50%); font-size: 12.5px; color: var(--muted); }
.stf-drop-empty { min-height: 54px; }
.stf-drop-empty .stf-place-here { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); }
.stf.is-dragging [data-drop] { transition: background .1s; }
.stf.is-dragging .stf-free, .stf.is-dragging .stf-drop-empty, .stf.is-dragging .stf-ev.is-internal-empty { background: #FBFAFF; }
[data-drop].is-over, .stf.is-dragging [data-drop].is-over { background: var(--violet-soft); box-shadow: inset 0 0 0 2px var(--violet); }

/* Fenêtres */
dialog.stf-dlg { border: 0; padding: 0; border-radius: 16px; box-shadow: var(--shadow-pop); width: min(460px, calc(100vw - 24px)); color: var(--ink); }
dialog.stf-dlg-wide { width: min(680px, calc(100vw - 24px)); }
dialog.stf-dlg::backdrop { background: rgba(31,26,43,.35); }
.stf-dlg-head { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-bottom: 1px solid var(--line); }
.stf-dlg-head > div { flex: 1; min-width: 0; }
.stf-dlg-head strong { display: block; font-size: 15px; }
.stf-dlg-head span:not(.stf-av) { font-size: 12px; color: var(--muted); }
.stf-dlg-body { padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; }
.stf-dlg-body label { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.stf-dlg-body input, .stf-dlg-body select, .stf-dlg-body textarea { font: inherit; font-weight: 400; }
.stf-dlg-body fieldset { border: 0; margin: 0; padding: 0; }
.stf-dlg-body legend { font-size: 12.5px; font-weight: 600; color: var(--ink-2); padding: 0; margin-bottom: 5px; }
.stf-dlg-body p { margin: 0; font-size: 12.5px; }
.stf-dlg-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--line); background: var(--sunken); }
.stf-dlg-foot .grow { flex: 1; }
.stf-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.stf-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.stf-total { background: var(--sunken); border-radius: 8px; padding: 8px 10px; color: var(--ink-2); }
.stf-pick { display: flex; flex-wrap: wrap; gap: 5px; }
.stf-chip-radio input { position: absolute; opacity: 0; pointer-events: none; }
.stf-chip-radio > span { display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; padding: 5px 11px; font-size: 12.5px; font-weight: 500; cursor: pointer; background: var(--surface); color: var(--ink); }
.stf-chip-radio > span:has(.post-vig) { padding: 4px 11px 4px 5px; }
.stf-chip-radio > span .post-vig { box-shadow: none; }
.stf-chip-radio input:checked + span .post-vig { box-shadow: 0 0 0 1.5px rgba(255,255,255,.85); }
.stf-chip-radio input:checked + span { background: var(--c); border-color: var(--c); color: #fff; font-weight: 600; }
.stf-chip-radio input:focus-visible + span { box-shadow: var(--focus); }
.stf-alerts { list-style: none; margin: 0; padding: 0; color: var(--red); font-size: 12.5px; font-weight: 600; }
.stf-needs-table { width: 100%; border-collapse: collapse; }
.stf-needs-table th { text-align: left; font-size: 12px; color: var(--muted); font-weight: 600; padding: 0 4px 4px; }
.stf-needs-table td { padding: 3px 4px; }
.stf-needs-table input, .stf-needs-table select { width: 100%; min-width: 0; padding-left: 8px; padding-right: 8px; }
.stf-needs-table select.input { padding-right: 26px; background-position: right 6px center; }
.stf-needs-table td:nth-child(2) { width: 76px; }
.stf-needs-table td:last-child { width: 40px; }
.stf-hours-table td, .stf-hours-table th { white-space: nowrap; }
.stf-hours-table tfoot td, .stf-hours-table tfoot th { border-top: 2px solid var(--line); font-weight: 700; }

@media (max-width: 1100px) {
  .stf-layout { flex-direction: column; align-items: stretch; }
  .stf-pool { position: static; flex: none; max-height: 340px; }
  .stf-grid { --lab: 150px; }
}
@media (max-width: 640px) {
  .stf-grid { --lab: 112px; }
  .stf-lab { padding: 4px 8px; gap: 6px; }
  .stf-lab .stf-av { display: none; }
  .stf-hours .stf-track span:nth-child(even) { display: none; }
  .stf-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* =====================================================================
   Module Plans de table
   ===================================================================== */
:root { --seat-room: #EE8C66; --seat-porch: #F8CDA8; --seat-edge: #C9633E; }
.seat-head .page-actions { align-items: center; }
.seat-saved { font-size: 13px; color: var(--green); }
.seat-saved.is-bad { color: var(--red); font-weight: 600; }
.seat-status-form select { min-width: 170px; }
.seat-editor { display: grid; grid-template-columns: 280px minmax(0, 1fr) 310px; gap: 14px; align-items: start; }
.seat-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.seat-box { padding: 12px 14px; }
.seat-box h2 { font-size: 12.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin: 0 0 8px; display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.seat-field { display: flex; gap: 8px; align-items: center; }
.seat-field input { width: 96px; }
.seat-props { display: flex; flex-direction: column; gap: 7px; margin-top: 10px; }
.seat-prop { border: 1px solid var(--line); border-radius: 10px; background: var(--sunken); padding: 7px 9px; display: grid; grid-template-columns: 66px minmax(0, 1fr); gap: 9px; text-align: left; align-items: center; font: inherit; color: inherit; cursor: pointer; }
.seat-prop:hover, .seat-prop.on { border-color: var(--violet); background: var(--violet-soft); }
.seat-prop[disabled] { cursor: default; }
.seat-prop svg { width: 66px; height: 56px; }
.seat-prop b { display: block; font-size: 13px; } .seat-prop span { font-size: 11.5px; color: var(--muted); } .seat-prop .bad { color: var(--red); }
.seat-confirm { margin-top: 10px; padding: 10px; border-radius: 10px; background: var(--amber-soft); font-size: 13px; }
.seat-confirm p { margin: 0 0 8px; } .seat-confirm div { display: flex; gap: 6px; flex-wrap: wrap; }
.seat-stock { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 8px; font-size: 13px; }
.seat-stock .bad { color: var(--red); font-weight: 700; }
.seat-meter { grid-column: 1 / -1; height: 5px; border-radius: 3px; background: var(--line); overflow: hidden; margin-bottom: 4px; }
.seat-meter i { display: block; height: 100%; background: var(--violet); } .seat-meter.full i { background: var(--red); }
.seat-palette { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.seat-palette button { border: 1px solid var(--line); background: var(--surface); border-radius: 9px; padding: 6px 8px; font: inherit; font-size: 12px; text-align: left; display: flex; gap: 6px; align-items: center; cursor: pointer; color: inherit; }
.seat-palette button:hover { border-color: var(--violet); }
.seat-palette svg { width: 22px; height: 22px; flex: none; }
.seat-stage { padding: 10px; }
.seat-toolbar { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 8px; }
.seat-toolbar .grow { flex: 1; }
.seat-stat { font-size: 12.5px; color: var(--muted); } .seat-stat b { color: var(--ink); }
.seat-issues { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; min-height: 26px; }
.seat-issue { font: inherit; font-size: 12px; font-weight: 600; border-radius: 999px; padding: 3px 10px; background: var(--red-soft); color: var(--red); border: 0; }
button.seat-issue { cursor: pointer; }
.seat-issue.is-warn { background: var(--amber-soft); color: #8A5A00; }
.seat-issue.is-ok { background: var(--green-soft); color: var(--green); }
.seat-room { width: 100%; height: auto; display: block; touch-action: none; user-select: none; background: var(--sunken); border-radius: 8px; }
.seat-room .tbl { cursor: grab; outline: none; }
.seat-room .foot { fill: none; stroke: none; }
.seat-room .tbl.sel .foot { stroke: var(--violet); stroke-width: 6; stroke-dasharray: 18 10; }
.seat-room .tbl.err .foot { stroke: #D63A3A; stroke-width: 8; fill: rgba(214,58,58,.14); stroke-dasharray: none; }
.seat-room .tbl.warn .foot { stroke: #F2A13A; stroke-width: 6; fill: rgba(242,161,58,.14); }
.seat-room .tbl.drop .foot { stroke: var(--violet); stroke-width: 10; fill: rgba(110,86,207,.16); }
.seat-room .tbl:focus-visible .foot { stroke: var(--violet); stroke-width: 8; }
.seat-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 11.5px; color: var(--muted); margin-top: 6px; }
.seat-legend span { display: inline-flex; gap: 5px; align-items: center; }
.seat-legend i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.seat-gadd { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; gap: 6px; margin-bottom: 6px; }
.seat-paste { margin: 4px 0; font-size: 13px; }
.seat-paste summary { cursor: pointer; color: var(--violet-ink); font-weight: 600; }
.seat-paste label { display: block; margin: 6px 0 4px; }
.seat-paste textarea { width: 100%; margin-bottom: 6px; }
.seat-gq { width: 100%; margin-top: 8px; }
.seat-glist { list-style: none; margin: 6px 0 0; padding: 0; max-height: 340px; overflow-y: auto; }
.seat-glist .gh { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); padding: 8px 2px 3px; display: flex; align-items: center; gap: 6px; }
.seat-glist .gh i { width: 9px; height: 9px; border-radius: 50%; }
.seat-glist li.g { display: flex; align-items: center; gap: 7px; padding: 4px 6px; border-radius: 7px; cursor: grab; font-size: 13px; user-select: none; }
.seat-glist li.g:hover { background: var(--sunken); }
.seat-glist li.g.sel { background: var(--violet-soft); outline: 1px solid var(--violet); }
.seat-glist li.g.placed .nm { color: var(--muted); }
.seat-glist li.g small { margin-left: auto; font-size: 11px; color: var(--muted); }
.seat-glist li.g .x { border: 0; background: none; color: var(--muted); font-size: 15px; line-height: 1; cursor: pointer; opacity: 0; }
.seat-glist li.g:hover .x, .seat-glist li.g .x:focus { opacity: 1; }
.seat-glist .empty { font-size: 13px; color: var(--muted); padding: 8px 2px; }
.seat-glist .dot, .seat-sel .dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.seat-sel .seat-row { display: flex; gap: 6px; align-items: flex-end; margin-bottom: 7px; flex-wrap: wrap; }
.seat-sel label { font-size: 12px; font-weight: 600; color: var(--ink-2); display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.seat-sel .seats { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 2px; max-height: 220px; overflow-y: auto; }
.seat-sel .seats li { display: flex; align-items: center; gap: 7px; font-size: 13px; padding: 3px 4px; border-radius: 6px; }
.seat-sel .seats li button { margin-left: auto; border: 0; background: none; color: var(--muted); font-size: 15px; cursor: pointer; }
.seat-sel .seats li.free { color: var(--muted); font-style: italic; }
.seat-tag { font-size: 11px; font-weight: 700; text-transform: none; letter-spacing: 0; background: var(--red-soft); color: var(--red); border-radius: 999px; padding: 1px 8px; }
.seat-hist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; max-height: 320px; overflow-y: auto; }
.seat-hist li { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 8px; font-size: 12.5px; }
.seat-hist .av { width: 26px; height: 26px; border-radius: 50%; color: #fff; font-size: 10.5px; font-weight: 700; display: grid; place-items: center; }
.seat-hist small { display: block; color: var(--muted); font-size: 11px; }

.seat-agenda { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; }
.seat-cal { padding: 14px; }
.seat-cal-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.seat-cal-head strong { font: 700 17px var(--font-display); min-width: 140px; text-align: center; }
.seat-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.seat-grid .dow { font-size: 11px; color: var(--muted); text-align: center; }
.seat-grid .day { min-height: 74px; border: 1px solid var(--line); border-radius: 9px; padding: 4px 5px; background: var(--sunken); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.seat-grid .day.out { visibility: hidden; }
.seat-grid .day.is-today { border-color: var(--violet); }
.seat-grid .day b { font-size: 12px; }
.seat-grid .ev { border-radius: 6px; padding: 2px 5px; font-size: 11px; font-weight: 600; text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.st-draft { background: var(--surface); color: var(--muted); border: 1px dashed var(--line-strong); }
.st-sent { background: var(--violet-soft); color: var(--violet-ink); }
.st-client { background: var(--amber-soft); color: #8A5A00; }
.st-valid { background: var(--green-soft); color: var(--green); }
.seat-st { display: inline-block; font-size: 11px; font-weight: 700; border-radius: 999px; padding: 1px 8px; }
.seat-cards { display: flex; flex-direction: column; gap: 10px; }
.seat-card { padding: 10px; display: grid; grid-template-columns: 100px minmax(0, 1fr); gap: 10px; text-decoration: none; color: inherit; }
.seat-card:hover { border-color: var(--violet); text-decoration: none; }
.seat-card svg { width: 100px; height: 84px; border-radius: 6px; background: var(--sunken); }
.seat-card h3 { font-size: 14px; margin: 0; } .seat-card p { margin: 1px 0; font-size: 12px; color: var(--muted); }
.seat-new { margin-top: 18px; padding: 14px 16px; }
.seat-new h2 { font-size: 15px; margin: 0 0 10px; }
.seat-new-form { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, .7fr) auto; gap: 10px; align-items: end; }
.seat-new-form label, .seat-roomgrid label { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.seat-roomform { max-width: 900px; }
/* Nouveau plan : prestation (recherche + liste), espace */
.seat-new-form { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.3fr) minmax(0, 1.8fr) minmax(0, 1fr) minmax(0, .7fr) auto; }
/* Choix de la prestation : recherche + liste en cartes */
.seat-pick { grid-column: 1 / -1; position: relative; display: flex; flex-direction: column; gap: 4px; }
.seat-new-form .seat-pick > label { display: block; font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.seat-pick__field { position: relative; display: flex; align-items: center; }
.seat-pick__field[hidden] { display: none; }
.seat-pick__field > svg { position: absolute; left: 12px; color: var(--muted); pointer-events: none; }
.seat-pick__field input { padding-left: 36px; height: 44px; font-size: 14px; }
.seat-pick__clear { position: absolute; right: 8px; border: 0; background: none; font-size: 20px; color: var(--muted); cursor: pointer; }
.seat-pick__list { position: absolute; z-index: 40; top: 100%; left: 0; right: 0; margin: 4px 0 0; padding: 6px; list-style: none; max-height: 380px; overflow: auto; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 14px 40px rgba(0,0,0,.14); }
.seat-pick__list[hidden] { display: none; }
.seat-pick__grp { padding: 8px 10px 4px; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.seat-pick__none { padding: 10px; font-size: 13px; color: var(--muted); }
.seat-pick__opt, .seat-pick__chosen { display: grid; grid-template-columns: 92px minmax(0, 1fr) auto auto; gap: 12px; align-items: center; padding: 8px 10px; border-radius: 9px; cursor: pointer; }
.seat-pick__opt:hover, .seat-pick__opt.is-cur { background: var(--sunken); }
.seat-pick__chosen { grid-template-columns: 92px minmax(0, 1fr) auto auto; border: 1px solid var(--accent, #6CC3B9); background: color-mix(in srgb, var(--accent, #6CC3B9) 8%, transparent); cursor: default; padding: 8px 10px 8px 12px; }
.seat-pick__chosen[hidden] { display: none; }
.seat-pick__date { font-size: 12.5px; font-weight: 700; color: var(--ink); }
.seat-pick__date.is-past { color: var(--muted); font-weight: 600; }
.seat-pick__main { display: flex; flex-direction: column; min-width: 0; }
.seat-pick__main b { font-size: 13.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.seat-pick__main small { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.seat-pick__st { font-size: 11.5px; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: var(--sunken); color: var(--ink-2); white-space: nowrap; }
.seat-pick__st.st-signed, .seat-pick__st.st-deposit { background: #DDF3E6; color: #1F7A46; }
.seat-pick__st.st-invoiced, .seat-pick__st.st-completed { background: #E3E9FB; color: #3045A8; }
.seat-pick__st.st-quoted { background: #FFF1D6; color: #8A5A00; }
.seat-pick__n { font-size: 12px; color: var(--muted); white-space: nowrap; }
@media (max-width: 640px) { .seat-pick__opt, .seat-pick__chosen { grid-template-columns: minmax(0, 1fr) auto; } .seat-pick__date { grid-column: 1 / -1; } .seat-pick__n { display: none; } }
.seat-new-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.seat-new-head h2 { margin: 0 !important; }
.seat-new-head input { max-width: 380px; flex: 1 1 240px; }
.seat-venuehint { margin: 10px 0 0; padding: 8px 12px; border-radius: 8px; background: var(--sunken); color: var(--ink-2); }
/* En-tête : les espaces en pastilles */
.seat-spacechips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.seat-spacechips a { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); font-size: 12.5px; color: var(--ink-2); text-decoration: none; }
.seat-spacechips a:hover { border-color: var(--ink-3, #999); }
.seat-spacechips i { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.seat-spacechips small { color: var(--muted); }
.seat-card-room { font-weight: 600; color: var(--ink-2) !important; }
/* Éditeur : les plans d'une même prestation en onglets */
.seat-tabs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 8px; }
.seat-tab { padding: 5px 12px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface); font-size: 13px; font-weight: 600; color: var(--ink-2); text-decoration: none; }
.seat-tab.is-on { background: var(--ink, #1F1D24); color: #fff; border-color: transparent; }
.seat-tab small { font-weight: 500; opacity: .75; }
.seat-addplan { position: relative; }
.seat-addplan > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; border-style: dashed; }
.seat-addplan > summary::-webkit-details-marker { display: none; }
.seat-addplan__box { position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; display: grid; gap: 8px; width: 260px; padding: 12px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.12); }
.seat-addplan__box label { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
/* Page « Les espaces » */
.seat-spaces { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 18px; align-items: start; }
.seat-spacelist { display: flex; flex-direction: column; gap: 8px; }
.seat-space { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 10px; align-items: center; padding: 8px; text-decoration: none; color: inherit; border: 2px solid transparent; }
.seat-space.is-on { border-color: var(--accent, #6CC3B9); }
.seat-space > svg { width: 76px; height: 60px; display: block; background: var(--sunken); border-radius: 6px; }
.seat-space b { display: block; font-size: 14px; }
.seat-space small { display: block; color: var(--muted); font-size: 12px; }
.seat-space .seat-space-venue { display: flex; align-items: center; gap: 4px; color: var(--ink-2); margin-top: 2px; }
.seat-space .seat-space-venue svg { width: 13px; height: 13px; flex: none; }
.seat-roomgrid .field > label[for] { display: block; }
.seat-space-add { justify-content: center; border-style: dashed; }
.seat-space-add.is-on { border-color: var(--accent, #6CC3B9); }
.seat-roomgrid .seat-colorfield, .seat-roomgrid .seat-wherefield { grid-column: 1 / -1; }
.seat-colorfield .label, .seat-wherefield .label { display: block; font-size: 12.5px; font-weight: 600; color: var(--ink-2); margin-bottom: 6px; }
.seat-swatches { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.seat-roomgrid label.seat-swatch { display: inline-block; position: relative; cursor: pointer; }
.seat-swatch input[type=radio] { position: absolute; opacity: 0; width: 1px; height: 1px; }
.seat-swatch span { display: block; width: 34px; height: 34px; border-radius: 50%; background: var(--c); border: 3px solid var(--surface); box-shadow: 0 0 0 1px var(--line); }
.seat-swatch input:checked + span { box-shadow: 0 0 0 3px var(--ink, #1F1D24); }
.seat-swatch input:focus-visible + span { outline: 2px solid var(--accent, #6CC3B9); outline-offset: 2px; }
.seat-roomgrid label.seat-swatch--free { display: inline-flex; flex-direction: row; align-items: center; gap: 6px; font-weight: 500; }
.seat-swatch--free input[type=color] { width: 34px; height: 34px; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: none; cursor: pointer; }
.seat-swatch--free span { width: auto; height: auto; border: 0; box-shadow: none; background: none; font-size: 12.5px; }
.seat-where { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.seat-roomgrid label.seat-wherebtn { display: flex; flex-direction: row; align-items: flex-start; gap: 8px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; cursor: pointer; font-weight: 500; }
.seat-wherebtn:has(input:checked) { border-color: var(--accent, #6CC3B9); background: color-mix(in srgb, var(--accent, #6CC3B9) 10%, transparent); }
.seat-wherebtn b { display: block; font-size: 13.5px; color: var(--ink); }
.seat-wherebtn small { display: block; color: var(--muted); font-size: 12px; }
.seat-venuepick { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
.seat-venuepick select { flex: 1 1 240px; }
.seat-venuepick p { flex-basis: 100%; margin: 0; }
.seat-venuepick[hidden] { display: none; }
@media (max-width: 900px) { .seat-spaces { grid-template-columns: minmax(0, 1fr); } .seat-where { grid-template-columns: minmax(0, 1fr); } }
.seat-roomgrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; }

@media (max-width: 1320px) { .seat-editor { grid-template-columns: 260px minmax(0, 1fr); } .seat-col-r { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; } }
@media (max-width: 1000px) { .seat-agenda { grid-template-columns: minmax(0, 1fr); } .seat-new-form { grid-template-columns: repeat(2, minmax(0, 1fr)); } .seat-col-r { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 820px) { .seat-editor { grid-template-columns: minmax(0, 1fr); } .seat-roomgrid, .seat-new-form { grid-template-columns: minmax(0, 1fr); } .seat-grid .day { min-height: 50px; } .seat-grid .ev { font-size: 0; height: 8px; padding: 0; } }

.seat-new.is-flash { animation: seatFlash 1.6s ease-out; }
@keyframes seatFlash { 0%, 40% { box-shadow: 0 0 0 4px var(--violet); } 100% { box-shadow: 0 0 0 0 transparent; } }
@media (prefers-reduced-motion: reduce) { .seat-new.is-flash { animation: none; box-shadow: 0 0 0 3px var(--violet); } }
/* Plans de table : bouton « + Mobilier » (plante, borne photo, zone photos, écran, chaise… ou objet sur mesure) */
.seat-furn { grid-column: 1 / -1; }
.seat-furn > summary { list-style: none; width: 100%; justify-content: center; cursor: pointer; }
.seat-furn > summary::-webkit-details-marker { display: none; }
.seat-furn[open] > summary { background: var(--violet-soft, #EEE9FF); border-color: var(--violet); }
.seat-furn__list { margin-top: 8px; }
.seat-furn__custom { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line); font-size: 12px; }
.seat-furn__custom b { width: 100%; font-size: 12px; }
.seat-furn__custom input[name=n] { flex: 1 1 100%; }
.seat-furn__custom input[type=number] { width: 70px; padding: 4px 6px; }

/* Vignette d'un poste / d'une fonction : pictogramme blanc sur la couleur du poste, ou image */
.post-vig { --c: #7C5CFF; display: inline-grid; place-items: center; flex: none; width: 34px; height: 34px; border-radius: 10px; background: var(--c); color: #fff; overflow: hidden; vertical-align: middle; box-shadow: inset 0 -2px 0 rgba(0,0,0,.12); }
.post-vig svg { width: 62%; height: 62%; }
.post-vig.has-img { background: #fff; box-shadow: 0 0 0 2px var(--c); }
.post-vig img { width: 100%; height: 100%; object-fit: cover; }
.post-vig--lg { width: 64px; height: 64px; border-radius: 18px; }
.post-vig--sm { width: 24px; height: 24px; border-radius: 7px; }
.post-vig--xs { width: 18px; height: 18px; border-radius: 5px; margin-right: 4px; }
.stf-lab .post-vig { margin-right: 6px; }
.stf-chip-radio .post-vig { margin-right: 6px; }
.func-chip .post-vig { margin-bottom: 4px; }

/* Paramètres › Fonctions & postes : cartes, sélecteur de couleur et de vignette */
.fn-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; padding: 16px; }
.fn-card { --c: #7C5CFF; position: relative; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); border-top: 4px solid var(--c); display: grid; }
.fn-form { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px 12px; padding: 14px 14px 10px; align-items: start; }
.fn-fields { display: grid; gap: 6px; min-width: 0; }
.fn-name { font-weight: 700; }
.fn-save { grid-column: 2; justify-self: start; }
.fn-save:not(.is-dirty) { opacity: .55; }
.fn-tools { display: flex; justify-content: flex-end; gap: 2px; padding: 0 8px 8px; }
.fn-tools form { margin: 0; }
.fn-up { transform: rotate(90deg); }
.fn-pick { position: relative; }
.fn-vig-btn { list-style: none; cursor: pointer; position: relative; display: inline-block; border-radius: 18px; }
.fn-vig-btn::-webkit-details-marker { display: none; }
.fn-vig-edit { position: absolute; right: -6px; bottom: -6px; width: 24px; height: 24px; border-radius: 50%; background: var(--surface); border: 1px solid var(--line); display: grid; place-items: center; color: var(--muted); box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.fn-vig-btn:hover .fn-vig-edit, .fn-pick[open] .fn-vig-edit { color: var(--violet); border-color: var(--violet); }
.fn-pick__panel { position: absolute; z-index: 30; top: calc(100% + 10px); left: 0; width: min(360px, 86vw); padding: 14px; border-radius: 14px; background: var(--surface); border: 1px solid var(--line); box-shadow: 0 18px 40px -12px rgba(0,0,0,.3); display: grid; gap: 12px; }
.fn-pick__sec > b { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); margin-bottom: 6px; }
.fn-colors { display: flex; flex-wrap: wrap; gap: 6px; }
.fn-color { position: relative; cursor: pointer; }
.fn-color input, .fn-icon input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.fn-color span { display: block; width: 24px; height: 24px; border-radius: 50%; background: var(--c); box-shadow: inset 0 0 0 2px rgba(255,255,255,.4); }
.fn-color input:checked + span { box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--c); }
.fn-icons { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.fn-icon { position: relative; cursor: pointer; }
.fn-icon span { display: grid; place-items: center; aspect-ratio: 1; border-radius: 9px; border: 1px solid var(--line); color: var(--ink-2, #444); background: var(--sunken); }
.fn-icon span svg { width: 60%; height: 60%; }
.fn-icon:hover span { border-color: var(--violet); }
.fn-icon input:checked + span { background: var(--violet); border-color: var(--violet); color: #fff; }
.fn-icon input:focus-visible + span, .fn-color input:focus-visible + span { outline: 2px solid var(--violet); outline-offset: 2px; }
.fn-upl { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.fn-new { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 14px 16px; border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); }
@media (max-width: 640px) { .fn-new { grid-template-columns: auto minmax(0, 1fr); } .fn-new > .btn { grid-column: 1 / -1; } }
.fn-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.fn-chip { --c: #7C5CFF; display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 4px; border-radius: 99px; border: 1px solid var(--line); background: var(--surface); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; color: inherit; }
.fn-chip:hover { border-color: var(--c); }
.func-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 2px; }

/* Planning des équipes : retirer quelqu'un, demandes pas encore envoyées */
.stf-person .stf-lab { position: relative; }
.stf-unplace { position: absolute; left: 2px; top: 50%; transform: translateY(-50%); z-index: 2; width: 22px; height: 22px; border-radius: 50%; border: 1px solid var(--line); background: var(--surface); color: var(--muted); display: grid; place-items: center; cursor: pointer; opacity: 0; transition: opacity .12s; padding: 0; }
.stf-person:hover .stf-unplace, .stf-unplace:focus-visible { opacity: 1; }
@media (hover: none) { .stf-unplace { opacity: 1; position: static; transform: none; margin-right: 4px; } }
.stf-unplace:hover { background: var(--danger, #B4322A); border-color: var(--danger, #B4322A); color: #fff; }
.stf-person.is-leaving { opacity: .35; }
.stf-notsent { color: #B45309; font-weight: 600; }
.stf-pool.is-over { outline: 2px dashed var(--danger, #B4322A); outline-offset: -4px; }
.is-dragging .stf-pool::after { content: "Déposez ici pour retirer du planning"; display: block; margin: 8px; padding: 10px; border-radius: 10px; border: 1.5px dashed var(--line-strong); text-align: center; font-size: 13px; color: var(--muted); }
.stf-req-bar { display: flex; align-items: center; gap: 12px; padding: 12px 16px; margin-bottom: 12px; border-radius: 14px; background: #FFF7E6; border: 1px solid #F3D9A4; font-size: 14px; }
.stf-req-bar > div { flex: 1; min-width: 0; }
.stf-req-ico { width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; background: #F2B705; color: #1F1A2B; flex: none; }
.stf-req-list { list-style: none; margin: 8px 0 12px; padding: 0; display: grid; gap: 6px; max-height: 46vh; overflow: auto; }
.stf-req-list label { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 10px; align-items: center; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; cursor: pointer; }
.stf-req-list label > span:first-of-type { display: grid; } .stf-req-list small { color: var(--muted); }
.stf-req-list .is-nomail label { opacity: .6; cursor: not-allowed; }
.stf-req-dates { grid-column: 2; display: flex; flex-wrap: wrap; gap: 4px; }
.stf-req-dates em { --c: #6B7280; font-style: normal; font-size: 12px; padding: 2px 8px; border-radius: 99px; background: color-mix(in srgb, var(--c) 14%, #fff); color: color-mix(in srgb, var(--c) 80%, #000); font-weight: 600; }

/* Paramètres › Équipe : postes de chacun et filtre par poste */
.team-filter { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.team-chip { --c: #6B7280; display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px 5px 6px; border-radius: 99px; border: 1px solid var(--line); background: var(--surface); font: inherit; font-size: 13px; font-weight: 600; color: inherit; cursor: pointer; }
.team-chip b { font-weight: 700; color: var(--muted); font-size: 12px; }
.team-chip:hover { border-color: var(--c); }
.team-chip.is-on { background: var(--c); border-color: var(--c); color: #fff; } .team-chip.is-on b { color: #fff; opacity: .85; }
.team-chip[data-tf=""] { padding-left: 11px; } .team-chip[data-tf=""].is-on { --c: var(--ink, #1F1A2B); }
.team-posts { display: flex; flex-wrap: wrap; gap: 4px; }
.team-post { --c: #6B7280; display: inline-flex; align-items: center; gap: 2px; padding: 2px 9px 2px 3px; border-radius: 99px; font-size: 12.5px; font-weight: 600; background: color-mix(in srgb, var(--c) 12%, transparent); color: color-mix(in srgb, var(--c) 75%, #000); }
tr[hidden] { display: none; }
.seat-furn__grp { grid-column: 1 / -1; margin: 6px 0 0; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.seat-inline { display: inline-flex !important; align-items: center; gap: 6px; font-size: 12.5px; }
.seat-inline input { width: 70px; padding: 4px 6px; }
.seat-status-form { display: flex; gap: 8px; align-items: center; flex-wrap: nowrap; }

/* Interrupteur (placer des invités, suivre le stock) */
.seat-switch { display: inline-flex !important; flex-direction: row !important; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); cursor: pointer; }
.seat-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.seat-switch span { position: relative; width: 34px; height: 20px; border-radius: 999px; background: var(--line); transition: background .15s; flex: none; }
.seat-switch span::after { content: ''; position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }
.seat-switch input:checked + span { background: var(--accent, #6CC3B9); }
.seat-switch input:checked + span::after { transform: translateX(14px); }
.seat-switch input:focus-visible + span { outline: 2px solid var(--accent, #6CC3B9); outline-offset: 2px; }
.seat-box-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.seat-box-head h2 { margin: 0 !important; }
.seat-box[hidden], #seat-auto[hidden], .seat-roomgrid .field[hidden] { display: none !important; }

/* Couleur des chaises */
.seat-chaircolors { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.seat-cc { display: flex; align-items: center; gap: 6px; padding: 6px 8px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); font-size: 12.5px; font-weight: 600; color: var(--ink-2); cursor: pointer; }
.seat-cc i { width: 16px; height: 16px; border-radius: 4px; border: 1px solid rgba(0,0,0,.2); border-bottom-width: 4px; flex: none; }
.seat-cc.on { border-color: var(--accent, #6CC3B9); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent, #6CC3B9) 35%, transparent); }

/* Planning des équipes : bandeau « pas encore envoyés » détaillé + absents du jour */
.stf-top { display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap: 12px; margin-bottom: 12px; align-items: start; }
.stf-card { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; }
.stf-pend { background: #FFFBF1; border-color: #F3D9A4; }
.stf-card-head { display: flex; align-items: center; gap: 12px; font-size: 14px; }
.stf-card-head > div { flex: 1; min-width: 0; }
.stf-card-head .muted { display: block; }
.stf-req-ico.is-off { background: #E9E4FB; color: #4F3AA8; }
.stf-pend-list { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; max-height: 300px; overflow: auto; }
.stf-pend-day { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 6px; border-radius: 10px; background: rgba(255,255,255,.7); border: 1px solid #F3E3BF; }
.stf-pend-day[hidden] { display: none; }
.stf-pend-day.is-on { border-color: #E0A82E; box-shadow: 0 0 0 2px rgba(224,168,46,.25); }
.stf-pend-date { display: flex; flex-direction: column; align-items: center; text-decoration: none; color: var(--ink); line-height: 1.1; padding: 4px 0; border-radius: 8px; }
.stf-pend-date:hover { background: #FFF1D0; }
.stf-pend-date b { font-size: 20px; }
.stf-pend-date span { font-size: 11px; color: var(--muted); white-space: nowrap; }
.stf-pend-people { display: flex; flex-wrap: wrap; gap: 5px; min-width: 0; }
.stf-pend-p { display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px 3px 6px; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); font-size: 12px; max-width: 100%; }
.stf-pend-p i { width: 8px; height: 8px; border-radius: 50%; background: var(--c); flex: none; }
.stf-pend-p b { font-weight: 700; white-space: nowrap; }
.stf-pend-p small { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stf-pend-p.is-nomail { border-style: dashed; opacity: .7; }
.stf-pend-more { align-self: flex-start; }
.stf-off-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.stf-off-p { display: inline-flex; align-items: center; gap: 7px; padding: 4px 10px 4px 4px; border-radius: 999px; border: 1px solid var(--line); background: var(--sunken); font-size: 12px; }
.stf-off-p .stf-av { width: 26px; height: 26px; font-size: 10px; }
.stf-off-p b { display: block; font-size: 12.5px; }
.stf-off-p small { display: block; color: var(--muted); font-size: 11px; }
.stf-off-p.is-leave { background: #F1ECFF; border-color: #D9CEFB; }
.stf-off-p.is-no { background: #FFF0EE; border-color: #F6CFC9; }
.stf-av img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; display: block; }
.stf-av:has(img) { background: var(--sunken); overflow: hidden; }
/* Vivier : fonctions, absents */
.stf-fnfilters { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.stf-fnfilters button { display: inline-flex; align-items: center; gap: 2px; border: 1px solid var(--line); background: var(--surface); border-radius: 999px; padding: 2px 9px 2px 4px; font: inherit; font-size: 11.5px; cursor: pointer; color: var(--ink-2); }
.stf-fnfilters button:first-child { padding-left: 9px; }
.stf-fnfilters button small { color: var(--muted); margin-left: 2px; }
.stf-fnfilters button[aria-pressed="true"] { border-color: var(--c, var(--night)); background: color-mix(in srgb, var(--c, #1F1A2B) 14%, var(--surface)); color: var(--ink); font-weight: 700; }
.stf-pool-list li.is-off { opacity: .55; cursor: not-allowed; background: repeating-linear-gradient(-45deg, transparent 0 8px, rgba(0,0,0,.03) 8px 16px); }
.stf-pool-list li.is-off input[type=checkbox] { visibility: hidden; }
.stf-offwhy { color: #8E2E58; font-weight: 700; }
/* Fenêtre des congés */
dialog.stf-dlg.stf-leave-dlg { width: min(760px, calc(100vw - 32px)); max-width: none; }
.stf-leave-grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 16px; }
.stf-leave-who .label, .stf-leave-when .label { display: block; font-size: 12.5px; font-weight: 600; color: var(--ink-2); margin-bottom: 4px; }
.stf-leave-people { list-style: none; margin: 6px 0 0; padding: 4px; max-height: 240px; overflow: auto; border: 1px solid var(--line); border-radius: 10px; }
.stf-leave-people li[hidden] { display: none; }
.stf-dlg .stf-leave-people label { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; text-align: left; gap: 8px; padding: 5px 6px; border-radius: 8px; cursor: pointer; font-size: 13px; font-weight: 500; }
.stf-leave-people label > span:last-child { display: block; min-width: 0; }
.stf-leave-people input { margin: 0; flex: none; }
.stf-leave-people label:hover { background: var(--sunken); }
.stf-leave-people .stf-av { width: 24px; height: 24px; font-size: 9px; }
.stf-leave-people small { display: block; font-size: 11px; color: var(--muted); }
.stf-leave-when { display: flex; flex-direction: column; gap: 10px; }
.stf-leave-h { font-size: 13px; margin: 16px 0 6px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.stf-leave-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; max-height: 220px; overflow: auto; }
.stf-leave-list li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; gap: 10px; align-items: center; padding: 6px 8px; border-radius: 10px; background: var(--sunken); font-size: 13px; }
.stf-leave-list small { display: block; color: var(--muted); font-size: 11.5px; }
.stf-leave-list em { font-style: normal; font-weight: 600; white-space: nowrap; }
@media (max-width: 1100px) { .stf-top { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) { .stf-leave-grid { grid-template-columns: minmax(0, 1fr); } .stf-pend-day { grid-template-columns: 54px minmax(0, 1fr); } .stf-pend-day > .btn { grid-column: 1 / -1; } }

/* Réponses : acceptés à bloquer, refus */
.stf-book { background: #F2FBF5; border-color: #BFE6CD; }
.stf-req-ico.is-book { background: #2E9E6A; color: #fff; }
.stf-btn-book { background: #2E9E6A !important; border-color: #2E9E6A !important; color: #fff !important; }
.stf-pend-day.is-book { border-color: #CDEBD8; }
.stf-pend-day.is-decl { border-color: #F6CFC9; background: #FFF6F5; }
.stf-pend-p.is-decl i { background: #D63A3A; }
.stf-decl-n { color: #B4322A; }
.stf-st { font-weight: 700; }
.stf-st.is-accepted { color: #1F7A46; }
.stf-st.is-declined { color: #B4322A; }
.stf-st.is-confirmed { color: #3045A8; }
.stf-bar.is-accepted { background: color-mix(in srgb, var(--c) 55%, #fff); box-shadow: inset 0 0 0 2px #2E9E6A; }
.stf-bar.is-declined { background: repeating-linear-gradient(135deg, #FDE2DF 0 6px, #F8CCC7 6px 12px); color: #8E2A22; box-shadow: inset 0 0 0 1.5px #D63A3A; text-decoration: line-through; }
.stf-bar.is-confirmed { box-shadow: inset 0 0 0 2px rgba(0,0,0,.25); }
.stf-req-list li[hidden] { display: none; }
.stf-req-dates em.is-dim { opacity: .35; }
.stf-top { grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); }
.stf-card-head { flex-wrap: wrap; }
.stf-card-head > div { flex: 1 1 220px; }
.stf-dlg.stf-req-dlg label.check { display: flex !important; flex-direction: row !important; align-items: center; gap: 6px; }
@media (max-width: 640px) { .stf-top { grid-template-columns: minmax(0, 1fr); } }

/* Fiche prestation : personnel du Planning des équipes */
.prj-shifts { margin: 0 16px 14px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--sunken); display: flex; flex-direction: column; gap: 10px; }
.prj-shifts-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.prj-shifts-head .btn { margin-left: auto; }
.prj-shifts-post { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 10px; align-items: start; }
.prj-shifts-name { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: 13px; padding-top: 6px; }
.prj-shifts-name small { color: var(--muted); font-weight: 600; }
.prj-shifts-people { display: flex; flex-wrap: wrap; gap: 6px; }
.prj-shift { display: inline-flex; align-items: center; gap: 8px; padding: 4px 10px 4px 4px; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); font-size: 12.5px; }
.prj-shift b { display: block; }
.prj-shift small { display: block; color: var(--muted); font-size: 11.5px; }
.prj-shift em { font-style: normal; font-weight: 700; }
.prj-face { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-size: 10.5px; font-weight: 700; overflow: hidden; flex: none; }
.prj-face img { width: 100%; height: 100%; object-fit: cover; }
.prj-shift.is-confirmed { border-color: #9FD7B5; background: #F2FBF5; }
.prj-shift.is-confirmed em { color: #1F7A46; }
.prj-shift.is-accepted em { color: #1F7A46; }
.prj-shift.is-declined { opacity: .6; text-decoration: line-through; }
.prj-shift.is-declined em { color: #B4322A; }
.prj-shift.is-planned em { color: #8A5A00; }
@media (max-width: 640px) { .prj-shifts-post { grid-template-columns: minmax(0, 1fr); } }

/* Nom de l'application : Gliveo Planner */
.brand-name .brand-app { font-style: normal; font-weight: 600; font-size: 13px; letter-spacing: 0; color: rgba(255,255,255,.62); margin-left: 2px; }

/* Planning : membres ajoutés depuis la fiche prestation (lecture seule) */
a.stf-bar.is-virtual { text-decoration: none; background-image: none; outline: 2px dashed rgba(255,255,255,.85); outline-offset: -4px; }

.prj-shift.is-assign { padding-right: 4px; }
.prj-shift.is-proposed em { color: #8A5A00; }
.prj-shift-menu { position: relative; }
.prj-shift-menu > summary { width: 26px; height: 26px; min-height: 0; padding: 0; }
.prj-shift-menu .dropdown-menu { right: 0; left: auto; }

/* Prestataires extérieurs dans le planning */
.stf-ext { display: inline-block; vertical-align: 1px; margin: 0 2px 0 0; padding: 0 6px; border-radius: 999px; background: #FFF1D0; color: #8A5A00; font-size: 10.5px; font-weight: 700; letter-spacing: .01em; }
.stf-noaccess { margin: 8px 12px 0; padding: 8px 10px; border-radius: 10px; background: #FFF8E8; border: 1px dashed #F0D49A; font-size: 12px; color: #6B5320; }
.stf-noaccess a { font-weight: 700; }

/* Légende du planning des équipes */
.stf-key { padding: 0; }
.stf-key summary { cursor: pointer; padding: 10px 14px; font-size: 13px; font-weight: 600; color: var(--ink-2); }
.stf-key-body { padding: 0 14px 12px; font-size: 12.5px; color: var(--ink-2); }
.stf-key-body p { margin: 6px 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
.stf-key-body span { display: inline-flex; align-items: center; gap: 6px; }
.stf-key-body i { width: 22px; height: 12px; border-radius: 3px; display: inline-block; --c: #7C5CFF; }
.stf-key-body .k-planned { background: color-mix(in srgb, var(--c) 82%, #fff); }
.stf-key-body .k-proposed { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--c) 30%, #fff) 0 4px, color-mix(in srgb, var(--c) 18%, #fff) 4px 8px); box-shadow: inset 0 0 0 1.5px var(--c); }
.stf-key-body .k-accepted { background: color-mix(in srgb, var(--c) 55%, #fff); box-shadow: inset 0 0 0 2px #2E9E6A; }
.stf-key-body .k-declined { background: repeating-linear-gradient(135deg, #FDE2DF 0 4px, #F8CCC7 4px 8px); box-shadow: inset 0 0 0 1.5px #D63A3A; }
.stf-key-body .k-confirmed { background: var(--c); box-shadow: inset 0 0 0 2px rgba(0,0,0,.25); }
.stf-key-body .k-virtual { background: var(--c); outline: 1.5px dashed rgba(255,255,255,.9); outline-offset: -3px; }
.stf-key-body .k-free { border: 1.5px dashed var(--line-strong); }
.stf-key-body .k-off { background: repeating-linear-gradient(-45deg, #F3F2F5 0 4px, #E2E0E6 4px 8px); }
.stf-key-body .muted { color: var(--muted); }
.pk-flag.is-ask { background: var(--violet-soft, #EEE9FF); color: var(--violet-ink, #4B3A9E); }

/* Fiche prestataire : accès à l'Espace équipe */
.pa-access { margin-bottom: 16px; }
.pa-access-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.pa-access-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px 20px; margin: 0; padding: 14px 20px 16px; }
.pa-access-list dt { font-size: 12px; color: var(--muted); margin-bottom: 2px; }
.pa-access-list dd { margin: 0; font-weight: 600; font-size: 14px; word-break: break-word; }
.notice.is-inline { display: block; line-height: 1.5; }
.notice.is-warn { background: var(--amber-soft, #FFF4D6); border-color: #EBC86A; color: #5C4500; }
.notice.is-warn .ic { color: #B98A00; vertical-align: -2px; }

/* Bandeau du mois : absents du jour */
.stf-days a { position: relative; }
.stf-day-off { position: absolute; bottom: 3px; right: 2px; min-width: 15px; height: 15px; padding: 0 3px; border-radius: 8px; font-size: 10px; font-weight: 700; line-height: 15px; text-align: center; color: #5B5566; background: repeating-linear-gradient(-45deg, #EEECF2 0 3px, #D9D5E1 3px 6px); box-shadow: inset 0 0 0 1px #C9C4D3; }
.stf-legend .lg-off { background: repeating-linear-gradient(-45deg, #EEECF2 0 3px, #C9C4D3 3px 6px); }
.stf-off-soon { display: inline; }

/* Prestation pas encore signée : visible mais en attente, pas de placement */
.stf-ev.is-pending { background-image: repeating-linear-gradient(135deg, transparent 0 14px, rgba(185,138,0,.05) 14px 28px); border: 1.5px dashed #D9B54A; }
.stf-ev.is-pending .stf-ev-bar { opacity: .45; }
.stf-ev.is-pending .stf-grid { opacity: .7; }
.stf-pending-tag { display: inline-flex; align-items: center; gap: 5px; margin-top: 4px; padding: 2px 9px; border-radius: 999px; background: #FFF4D6; color: #6B5000; font-size: 12px; font-weight: 600; }

/* Roue dentée : catégories visibles dans le planning */
.stf-cats-btn { padding: 2px 8px; font-size: 12px; }
.stf-cats-list { display: grid; gap: 8px; }
.stf-cats-list .check span { display: inline-flex; align-items: center; gap: 8px; }
.stf-cat-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.stf-cats-list .check { display: flex !important; flex-direction: row; align-items: center; gap: 10px; }

/* Rôle tenu sur une date (listes « Ses dates ») */
.role-chip { --c: #7C5CFF; display: inline-flex; align-items: center; gap: 5px; margin-right: 8px; padding: 1px 9px 1px 2px; border-radius: 99px; background: color-mix(in srgb, var(--c) 12%, var(--surface)); color: var(--ink); font-weight: 600; font-size: 12.5px; vertical-align: middle; }
/* Fonctions du prestataire : plusieurs cases */
.fn-multi .fn-chip input { position: absolute; opacity: 0; pointer-events: none; }
.fn-multi .fn-chip { position: relative; }
.fn-multi .fn-chip:has(input:checked) { border-color: var(--c); background: color-mix(in srgb, var(--c) 16%, var(--surface)); box-shadow: inset 0 0 0 1px var(--c); }
.fn-multi .fn-chip:has(input:focus-visible) { outline: 2px solid var(--c); outline-offset: 2px; }

/* Recherche Équipe / prestataires */
.team-search { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; }
.team-search .input { max-width: 420px; }
tr.is-q-hidden { display: none; }

/* ---------------- Module Logistique ---------------- */
.lg-truck { --c: #3D6BE0; display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; background: color-mix(in srgb, var(--c) 16%, var(--surface)); color: var(--c); flex: none; }
.lg-truck .ic { width: 20px; height: 20px; }
.lg-add { margin-bottom: 16px; }
.lg-add > summary { cursor: pointer; padding: 14px 18px; display: flex; align-items: center; gap: 8px; list-style: none; }
.lg-add > summary::-webkit-details-marker { display: none; }
.lg-form-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.lg-presets { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.lg-presets .chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 99px; border: 1px dashed var(--line-strong); background: var(--surface); font: inherit; font-size: 12.5px; cursor: pointer; }
.lg-week { display: grid; grid-template-columns: repeat(7, minmax(150px, 1fr)); gap: 10px; overflow-x: auto; padding-bottom: 6px; }
.lg-day { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 10px; display: flex; flex-direction: column; gap: 8px; min-height: 160px; }
.lg-day.is-we { background: color-mix(in srgb, var(--sunken) 60%, var(--surface)); }
.lg-day.is-today { border-color: var(--violet); box-shadow: 0 0 0 2px color-mix(in srgb, var(--violet) 25%, transparent); }
.lg-day > header { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.lg-day > header a { color: var(--ink); text-decoration: none; }
.lg-day > header span { color: var(--muted); font-size: 12.5px; }
.lg-day-map { font-size: 12px; display: inline-flex; align-items: center; gap: 3px; color: var(--violet) !important; }
.lg-chip { --c: #3D6BE0; display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border-radius: 10px; background: color-mix(in srgb, var(--c) 13%, var(--surface)); border-left: 4px solid var(--c); color: var(--ink); text-decoration: none; font-size: 12.5px; }
.lg-chip:hover { text-decoration: none; box-shadow: 0 2px 10px -4px rgba(31,26,43,.3); }
.lg-chip-top { display: flex; align-items: center; gap: 5px; } .lg-chip-top small { margin-left: auto; color: var(--muted); }
.lg-chip-dest { font-weight: 600; }
.lg-chip-foot { color: var(--muted); font-size: 11.5px; }
.lg-chip.st-back { opacity: .55; } .lg-chip.st-gone { border-left-style: double; }
.lg-chip.has-conflict, .lg-slot.has-conflict { box-shadow: inset 0 0 0 2px #D63A3A; }
.lg-ev { --c: #7C5CFF; display: flex; flex-direction: column; gap: 2px; padding: 7px 9px; border-radius: 10px; border: 1px solid var(--line); border-left: 4px solid var(--c); color: var(--ink); text-decoration: none; font-size: 12.5px; background: var(--surface); }
.lg-ev:hover { text-decoration: none; border-color: var(--c); }
.lg-ev small { color: var(--muted); }
.lg-ev-tag { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; color: var(--muted); }
.lg-ev.is-missing { background: #FFF3F1; } .lg-ev.is-missing .lg-ev-tag { color: #B4322A; font-weight: 600; }
.lg-empty { color: var(--muted); font-size: 12.5px; margin: auto 0; text-align: center; }
.text-red { color: #B4322A; }
/* Sorties (cartes) */
.lg-trips { display: grid; gap: 12px; }
.lg-trip { --c: #3D6BE0; border: 1px solid var(--line); border-left: 5px solid var(--c); border-radius: 14px; padding: 12px 14px; background: var(--surface); display: grid; gap: 8px; }
.lg-trip header { display: flex; align-items: center; gap: 10px; }
.lg-dest { display: flex; align-items: center; gap: 4px; color: var(--ink-2); font-size: 13.5px; }
.lg-status select { border: 1px solid var(--line); border-radius: 99px; padding: 4px 10px; font: inherit; font-size: 12.5px; font-weight: 600; background: var(--sunken); }
.lg-trip.st-loaded .lg-status select { background: #FFF4D6; border-color: #EBC86A; }
.lg-trip.st-gone .lg-status select { background: #E3ECFF; border-color: #9DB5F0; }
.lg-trip.st-back .lg-status select { background: #E3F5EC; border-color: #8FD1AE; }
.lg-meta { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 13px; color: var(--ink-2); }
.lg-meta > * { display: inline-flex; align-items: center; gap: 4px; }
.lg-conflict { margin: 0; color: #B4322A; font-size: 13px; font-weight: 600; display: flex; gap: 5px; align-items: center; }
.lg-load-head { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.lg-bar { flex: 1; height: 6px; border-radius: 99px; background: var(--sunken); overflow: hidden; } .lg-bar i { display: block; height: 100%; background: #2E9E6A; transition: width .2s; }
.lg-load ul { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.lg-load form { margin: 0; }
.lg-check { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px 5px 6px; border-radius: 99px; border: 1px solid var(--line); background: var(--surface); font: inherit; font-size: 13px; cursor: pointer; color: var(--ink); }
.lg-check .box { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 6px; border: 1.5px solid var(--line-strong); color: transparent; }
.lg-check.is-ok { background: #E3F5EC; border-color: #8FD1AE; text-decoration: line-through; color: #2F6B4D; }
.lg-check.is-ok .box { background: #2E9E6A; border-color: #2E9E6A; color: #fff; }
.lg-note { margin: 0; font-size: 13px; color: var(--ink-2); display: flex; gap: 5px; align-items: flex-start; }
.lg-trip footer { display: flex; gap: 6px; align-items: flex-start; flex-wrap: wrap; }
.lg-edit { flex: 1; } .lg-edit[open] { flex-basis: 100%; } .lg-edit > summary { list-style: none; display: inline-flex; } .lg-edit > summary::-webkit-details-marker { display: none; }
.lg-edit .lg-trip-form { margin-top: 10px; padding-top: 12px; border-top: 1px dashed var(--line); }
.lg-add-inline > summary { list-style: none; display: inline-flex; } .lg-add-inline > summary::-webkit-details-marker { display: none; }
.lg-add-inline[open] .lg-trip-form { margin-top: 12px; }
.lg-soon { opacity: .8; }
.lg-venue img { width: 100%; height: 160px; object-fit: cover; display: block; border-radius: 14px 14px 0 0; }
.lg-venue h2 { margin: 0 0 4px; font-size: 17px; }
.lg-dist { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 12px 0 6px; }
.lg-dist dt { font-size: 11.5px; color: var(--muted); } .lg-dist dd { margin: 0; font-weight: 700; font-size: 16px; }
/* Planning des camions */
.lg-trucks { overflow-x: auto; padding: 0; }
.lg-trucks-row { display: grid; grid-template-columns: 200px repeat(7, minmax(120px, 1fr)); border-bottom: 1px solid var(--line); min-width: 1040px; }
.lg-trucks-head { background: var(--sunken); font-size: 12.5px; }
.lg-trucks-head a { padding: 8px; text-align: center; color: var(--ink-2); text-decoration: none; text-transform: capitalize; }
.lg-trucks-head a.is-today { color: var(--violet); font-weight: 700; } .lg-trucks-head a.is-we { background: color-mix(in srgb, var(--sunken) 80%, #000 3%); }
.lg-trucks-name { display: flex; align-items: center; gap: 8px; padding: 10px; border-right: 1px solid var(--line); }
.lg-trucks-name small { display: block; color: var(--muted); font-size: 11.5px; }
.lg-trucks-cell { padding: 6px; border-right: 1px solid var(--line); display: flex; flex-direction: column; gap: 5px; min-height: 64px; }
.lg-trucks-cell.is-today { background: color-mix(in srgb, var(--violet) 5%, var(--surface)); }
.lg-slot { display: flex; flex-direction: column; padding: 5px 7px; border-radius: 8px; background: color-mix(in srgb, var(--c) 16%, var(--surface)); border-left: 3px solid var(--c); font-size: 11.5px; color: var(--ink); text-decoration: none; }
.lg-slot:hover { text-decoration: none; } .lg-slot small { color: var(--muted); } .lg-slot.st-back { opacity: .55; }
/* Carte */
.lg-mapwrap { display: grid; grid-template-columns: 340px 1fr; gap: 14px; align-items: start; }
.lg-maplist { display: flex; flex-direction: column; gap: 10px; max-height: 70vh; overflow: auto; }
.lg-mapveh { --c: #3D6BE0; background: var(--surface); border: 1px solid var(--line); border-top: 4px solid var(--c); border-radius: 14px; padding: 10px 12px; }
.lg-mapveh header { display: flex; align-items: center; gap: 8px; }
.lg-km { text-align: right; line-height: 1.1; } .lg-km small { display: block; color: var(--muted); font-size: 11px; }
.lg-mapveh ol { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 8px; }
.lg-mapveh li { display: flex; gap: 8px; font-size: 13px; } .lg-mapveh li small { display: block; color: var(--muted); }
.lg-mapveh li.is-depot { color: var(--muted); font-size: 12px; padding-left: 4px; }
.lg-mapveh li.has-conflict b { color: #B4322A; }
.lg-num { display: inline-grid; place-items: center; min-width: 22px; height: 22px; border-radius: 50%; background: var(--c); color: #fff; font-size: 12px; font-weight: 700; flex: none; }
.lg-map { height: 70vh; min-height: 420px; border-radius: 14px; border: 1px solid var(--line); overflow: hidden; z-index: 0; }
.lg-pin span { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; color: #fff; font-weight: 700; font-size: 13px; border: 2px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.35); }
.lg-pin-depot span { width: 30px; height: 30px; background: #1F1A2B; }
@media (max-width: 900px) { .lg-mapwrap { grid-template-columns: 1fr; } .lg-map { height: 55vh; } .lg-maplist { max-height: none; } .lg-week { grid-template-columns: 1fr; } }

/* Rendez-vous : fenêtre de modification */
dialog.appt-dlg { width: min(580px, calc(100vw - 32px)); }
dialog.appt-dlg .body { max-height: calc(100vh - 150px); overflow-y: auto; display: grid; gap: 14px; }
dialog.appt-dlg legend { font-size: 13px; font-weight: 600; margin-bottom: 6px; padding: 0; }
dialog.appt-dlg .chips { gap: 6px; }
dialog.appt-dlg .opt-chip { cursor: pointer; padding: 6px 12px; font-size: 13.5px; }
dialog.appt-dlg .opt-chip input { position: absolute; opacity: 0; pointer-events: none; }
dialog.appt-dlg .opt-chip:has(input:checked) { background: var(--night); border-color: var(--night); color: #fff; }
dialog.appt-dlg .opt-chip:has(input:focus-visible) { outline: 2px solid var(--violet); outline-offset: 2px; }
.appt-when { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.appt-when .input[type=date] { flex: 1 1 150px; }
.appt-when .input[type=time] { width: 135px; }
.appt-when.is-off { opacity: .45; }
@media (max-width: 560px) { dialog.appt-dlg .form-grid { grid-template-columns: 1fr; } }
.appt-proj-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.appt-proj-list li { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--line); border-radius: var(--r-md); }
.appt-proj-list li.is-off { opacity: .6; }
.appt-proj-list .grow { flex: 1; min-width: 0; }
.panel > .appt-proj-list { padding: 0 18px 18px; }
.lg-trip footer .menu-danger, .lg-trip footer .menu-danger .ic { color: var(--red); }
.lg-key-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 8px; }
.travel-check { display: flex; gap: 10px; align-items: flex-start; margin-top: 12px; padding: 10px 12px; border-radius: var(--r-md); background: var(--paper); border: 1px solid var(--line); font-size: 13px; }
.travel-check .ic-wrap { color: var(--muted); padding-top: 1px; }
.travel-check strong { display: block; font-size: 13.5px; }
.travel-check span { color: var(--ink-2); }
.travel-check.is-neg { border-color: color-mix(in srgb, var(--red) 35%, var(--line)); }
.travel-check.is-neg strong { color: var(--red); }
/* Logistique : statistiques */
.lg-stats-table th.num, .lg-stats-table td.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.lg-stats-table tr.muted td { color: var(--muted); }
.lg-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--c); margin-right: 8px; vertical-align: 0; }
.panel:has(> .lg-stats-table) { overflow-x: auto; }
.panel > details.panel-body summary { cursor: pointer; }
.dash-logi .ledger { margin-bottom: 0; }
.dash-logi-next { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: 13.5px; }
.dash-logi-next li { display: flex; gap: 8px; align-items: center; }
.lg-stats { display: grid; gap: 18px; margin-bottom: 14px; }
.lg-stats > .ledger, .lg-stats > .grid-2, .lg-stats > .panel { margin: 0; }
/* Notifications (Mon compte et Espace équipe) */
.push-body { display: grid; gap: 12px; }
.push-state p { margin: 0 0 8px; }
.push-ok { display: flex; align-items: center; gap: 6px; color: var(--green); }
.push-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.push-steps { margin: 0 0 6px; padding-left: 20px; display: grid; gap: 6px; font-size: 14px; }
.push-msg { margin: 0; font-size: 13.5px; color: var(--green); }
.push-msg.is-bad { color: var(--red); }
.push-prefs { display: grid; gap: 10px; padding-top: 14px; border-top: 1px solid var(--line); }
.push-prefs .btn { justify-self: start; }
.push-prefs-title { margin: 0; }
.push-devices ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; }
.push-devices li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--r-md); font-size: 14px; }
.push-devices li small { display: block; color: var(--muted); font-size: 12.5px; }
.push-devices { padding-top: 14px; border-top: 1px solid var(--line); }
.brand-mark.is-img { background: none; box-shadow: none; border-radius: 0; object-fit: contain; }
.push-journal summary { cursor: pointer; } .push-journal li.is-bad small { color: var(--red); }
/* Messages de l'équipe (fiche prestation) */
.crew-threads { display: grid; }
.crew-thread { border-top: 1px solid var(--line); }
.crew-thread > summary { display: flex; align-items: center; gap: 10px; padding: 12px 18px; cursor: pointer; list-style: none; }
.crew-thread > summary::-webkit-details-marker { display: none; }
.crew-thread > summary small { display: block; color: var(--muted); font-size: 12.5px; }
.crew-thread[open] > summary { background: var(--sunken); }
.crew-msgs { list-style: none; margin: 0; padding: 12px 18px 0; display: grid; gap: 8px; }
.crew-msgs li { max-width: 80%; justify-self: start; background: var(--paper); border: 1px solid var(--line); border-radius: 12px 12px 12px 4px; padding: 8px 12px; }
.crew-msgs li.is-office { justify-self: end; background: var(--violet-soft); border-color: transparent; border-radius: 12px 12px 4px 12px; }
.crew-msgs p { margin: 0 0 2px; font-size: 14px; }
.crew-msgs small { color: var(--muted); font-size: 12px; }
.crew-reply { display: grid; gap: 8px; padding: 12px 18px 16px; }
.crew-reply-foot { display: flex; justify-content: flex-end; gap: 8px; }
.crew-thread > summary .grow { flex: 1; min-width: 0; }
.crew-thread > summary .count { min-width: 22px; height: 22px; padding: 0 7px; border-radius: 999px; display: inline-grid; place-items: center; background: var(--red); color: #fff; font-size: 12px; font-weight: 700; }
.travel-mode { display: flex; gap: 4px; padding: 3px; background: var(--sunken); border-radius: 999px; margin: 8px 0; width: fit-content; }
.travel-mode label { position: relative; cursor: pointer; }
.travel-mode input { position: absolute; opacity: 0; pointer-events: none; }
.travel-mode span { display: block; padding: 4px 12px; border-radius: 999px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.travel-mode input:checked + span { background: var(--surface); color: var(--ink); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.travel-mode input:disabled + span { opacity: .45; cursor: not-allowed; }
.travel-mode input:focus-visible + span { box-shadow: var(--focus); }
.link-card { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } .link-card .picker { flex: 1 1 260px; }
.crew-person { margin: -2px 0 6px; font-size: 13px; display: flex; align-items: center; gap: 6px; }
.crew-person .ic { color: var(--muted); }

/* ---------- Fiche prestataire ---------- */
.pa-hero { position: relative; background: var(--surface); border: 1px solid var(--line); border-radius: 18px; overflow: hidden; margin-bottom: 22px; }
.pa-hero::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 130px; -webkit-mask-image: linear-gradient(#000 45%, transparent); mask-image: linear-gradient(#000 45%, transparent); background: radial-gradient(120% 140% at 0% 0%, #FFE9A3 0%, transparent 55%), radial-gradient(90% 160% at 100% 0%, #E6DEFF 0%, transparent 60%), var(--sunken); }
.pa-hero.is-archived::before { filter: grayscale(1); }
.pa-hero-top { position: relative; display: flex; align-items: flex-end; gap: 18px; padding: 44px 24px 18px; flex-wrap: wrap; }
.pa-hero-avatar { flex: none; width: 84px; height: 84px; border-radius: 22px; display: grid; place-items: center; background: linear-gradient(145deg, #FFD54A, #F2B705); color: var(--amber-ink); font: 700 30px/1 var(--font-display); box-shadow: 0 0 0 5px var(--surface), 0 10px 24px -10px rgba(186, 138, 0, .7); }
.pa-hero-avatar .ic { width: 38px; height: 38px; }
.pa-hero-id { flex: 1 1 260px; min-width: 0; }
.pa-kicker { margin: 0 0 2px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--violet-ink); }
.pa-hero-id h1 { margin: 0 0 10px; font: 700 30px/1.1 var(--font-display); letter-spacing: -.02em; }
.pa-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.pa-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: var(--sunken); box-shadow: inset 0 0 0 1px var(--line); font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.pa-chip .ic { color: var(--muted); }
.pa-chip.is-ok { background: var(--green-soft); box-shadow: none; color: var(--green); }
.pa-chip.is-ok .ic { color: var(--green); }
.pa-chip.is-off { background: var(--paper); color: var(--muted); }
.pa-hero-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.pa-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; border-top: 1px solid var(--line); background: var(--sunken); }
.pa-stats > div { padding: 16px 22px; border-left: 1px solid var(--line); }
.pa-stats > div:first-child { border-left: 0; }
.pa-stats dt { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--muted); }
.pa-stats dd { margin: 4px 0 2px; font: 650 24px/1.15 var(--font-display); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.pa-stats dd.sm { font-size: 18px; padding: 3px 0 2px; }
.pa-stats p { margin: 0; font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pa-stats .is-due dd { color: var(--red); }

.pa-block { background: var(--surface); border: 1px solid var(--line); border-radius: 16px; margin-bottom: 22px; }
.pa-block-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding: 18px 22px 14px; }
.pa-block-head h2 { margin: 0; font: 650 18px/1.2 var(--font-display); display: flex; align-items: center; gap: 8px; }
.pa-block-head p { margin: 4px 0 0; font-size: 13px; color: var(--muted); max-width: 70ch; }
.pa-count { display: inline-grid; place-items: center; min-width: 24px; height: 22px; padding: 0 7px; border-radius: 999px; background: var(--violet-soft); color: var(--violet-ink); font: 700 12px/1 var(--font-ui); }
.pa-empty { margin: 0; padding: 22px; text-align: center; color: var(--muted); font-size: 14px; }
.pa-empty-art { padding: 26px 22px 30px; text-align: center; color: var(--muted); }
.pa-empty-art span { display: inline-grid; place-items: center; width: 52px; height: 52px; border-radius: 14px; background: var(--violet-soft); color: var(--violet); margin-bottom: 10px; }
.pa-empty-art p { margin: 0 auto; max-width: 42ch; font-size: 14px; }

/* Personnes */
.pa-people { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; padding: 0 22px 20px; }
.pa-person { position: relative; border-radius: 14px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); padding: 14px 14px 10px; overflow: hidden; }
.pa-person::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 4px; background: var(--c); }
.pa-person-top { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.pa-person-av { flex: none; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: color-mix(in srgb, var(--c) 16%, #fff); color: var(--c); font: 700 15px/1 var(--font-display); box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--c) 35%, transparent); }
.pa-person-id { min-width: 0; }
.pa-person-id strong { display: block; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pa-person-trade { display: inline-block; margin-top: 3px; padding: 1px 8px; border-radius: 999px; font-size: 11.5px; font-weight: 700; background: color-mix(in srgb, var(--c) 12%, #fff); color: var(--c); }
.pa-person-facts { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 5px; font-size: 13px; }
.pa-person-facts li { display: flex; align-items: center; gap: 8px; min-width: 0; }
.pa-person-facts li .ic { flex: none; color: var(--muted); }
.pa-person-facts a { color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pa-person-edit { border-top: 1px dashed var(--line); margin: 0 -14px -10px; }
.pa-person-edit > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 6px; padding: 9px 14px; font-size: 13px; font-weight: 600; color: var(--violet-ink); }
.pa-person-edit > summary::-webkit-details-marker, .pa-person-add > summary::-webkit-details-marker, .pa-tip > summary::-webkit-details-marker { display: none; }
.pa-person-edit[open] > summary { background: var(--sunken); }
.pa-pform { display: grid; gap: 8px; padding: 10px 14px 6px; }
.pa-pform .field { margin: 0; }
.pa-pform label { font-size: 12px; }
.pa-pform-actions { display: flex; justify-content: flex-end; }
.pa-person-del { padding: 2px 14px 12px; }
.pa-person-add { --c: var(--violet); background: var(--sunken); box-shadow: inset 0 0 0 1.5px var(--line-strong); border: 0; }
.pa-person-add::before { display: none; }
.pa-person-add:not([open]) { display: grid; place-items: center; min-height: 150px; box-shadow: none; outline: 1.5px dashed var(--line-strong); outline-offset: -1.5px; }
.pa-person-add:not([open]):hover { background: var(--violet-soft); outline-color: var(--violet); }
.pa-person-add > summary { list-style: none; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; }
.pa-person-add[open] > summary { flex-direction: row; text-align: left; margin-bottom: 4px; }
.pa-person-add[open] > summary small { display: none; }
.pa-person-add > summary small { font-size: 12px; color: var(--muted); }
.pa-person-add .pa-pform { padding: 6px 0 4px; }

.pa-move { margin: 0 22px 20px; padding: 14px 16px 16px; border-radius: 14px; background: var(--amber-soft); box-shadow: inset 0 0 0 1px #F3DA8A; }
.pa-move-head { display: flex; gap: 12px; align-items: flex-start; }
.pa-move-ic { flex: none; width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: #FFE07A; color: #6B4E00; }
.pa-move h3 { margin: 0; font-size: 14.5px; }
.pa-move-head p { margin: 2px 0 0; font-size: 13px; color: #6B5A20; }
.pa-move-list { list-style: none; margin: 12px 0; padding: 0; display: grid; gap: 6px; }
.pa-move-list label { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 10px; background: rgba(255,255,255,.75); font-size: 13.5px; cursor: pointer; }
.pa-move-list label:has(input:checked) { background: #fff; box-shadow: inset 0 0 0 1.5px var(--amber); }
.pa-move-list .grow { flex: 1; min-width: 0; }
.pa-move-day { font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Dates */
.pa-tabs > input { position: absolute; opacity: 0; pointer-events: none; }
.pa-tabs > label { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 0 22px; padding: 8px 2px; font-size: 14px; font-weight: 600; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; }
.pa-tabs > label + input + label { margin-left: 18px; }
.pa-tabs > label span { min-width: 20px; padding: 1px 6px; border-radius: 999px; background: var(--paper); font-size: 11.5px; text-align: center; }
.pa-tabs > input:checked + label { color: var(--ink); border-bottom-color: var(--amber); }
.pa-tabs > input:checked + label span { background: var(--amber-soft); color: #8A6A00; }
.pa-tabs > input:focus-visible + label { box-shadow: var(--focus); border-radius: 6px; }
.pa-tab-panel { display: none; border-top: 1px solid var(--line); }
#pa-tab-up:checked ~ .pa-tab-panel:nth-of-type(1), #pa-tab-past:checked ~ .pa-tab-panel:nth-of-type(2) { display: block; }
.pa-dates { list-style: none; margin: 0; padding: 6px 0; }
.pa-date { display: flex; align-items: center; gap: 14px; padding: 10px 22px; }
.pa-date:hover { background: var(--sunken); }
.pa-date.is-off { opacity: .55; }
.pa-cal { flex: none; width: 54px; border-radius: 12px; overflow: hidden; text-align: center; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.pa-cal small:first-child { display: block; padding: 3px 0 2px; background: var(--night); color: #fff; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.pa-cal b { display: block; font: 700 21px/1.1 var(--font-display); padding-top: 3px; }
.pa-cal small:last-child { display: block; font-size: 10.5px; color: var(--muted); padding-bottom: 4px; }
.pa-cal.is-empty { padding: 8px 0; }
.pa-cal.is-empty small:last-child { padding: 0; }
.pa-date-main { flex: 1; min-width: 0; }
.pa-date-title { display: block; font-weight: 650; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pa-date-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 3px; font-size: 12.5px; }
.pa-who { display: inline-flex; align-items: center; gap: 5px; padding: 1px 8px 1px 2px; border-radius: 999px; background: color-mix(in srgb, var(--c) 12%, #fff); color: var(--c); font-weight: 700; }
.pa-who i { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--c); color: #fff; font: 700 9px/1 var(--font-ui); font-style: normal; }
.pa-date-side { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.pa-date-side strong { font-variant-numeric: tabular-nums; }

/* Paiements */
.pa-pays { list-style: none; margin: 0; padding: 0 0 6px; border-top: 1px solid var(--line); }
.pa-pays li { display: flex; align-items: center; gap: 12px; padding: 12px 22px; flex-wrap: wrap; }
.pa-pays li + li { border-top: 1px solid var(--line); }
.pa-pays .grow { flex: 1; min-width: 180px; }
.pa-pays .grow strong { display: block; font-size: 14px; }
.pa-pays .grow small { color: var(--muted); }
.pa-pay-ic { flex: none; width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--amber-soft); color: #8A6A00; }
.pa-pays li.is-paid .pa-pay-ic { background: var(--green-soft); color: var(--green); }

/* Colonne de droite */
.pa-facts { list-style: none; margin: 0; padding: 0 22px 16px; display: grid; gap: 12px; }
.pa-facts li { display: flex; gap: 12px; align-items: flex-start; min-width: 0; }
.pa-facts li > span:last-child { min-width: 0; overflow-wrap: anywhere; font-size: 14px; }
.pa-facts small { display: block; font-size: 11.5px; color: var(--muted); margin-bottom: 1px; }
.pa-facts em { color: var(--muted); font-style: normal; }
.pa-fact-ic { flex: none; width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; background: var(--violet-soft); color: var(--violet-ink); }
.pa-block-foot { padding: 0 22px 18px; }
.pa-notes p { margin: 0; padding: 0 22px 18px; font-size: 14px; color: var(--ink-2); }
.pa-tip { padding: 14px 18px; background: var(--sunken); }
.pa-tip > summary { list-style: none; cursor: pointer; display: flex; gap: 12px; align-items: center; }
.pa-tip > summary strong { display: block; font-size: 14px; }
.pa-tip > summary small { display: block; font-size: 12.5px; color: var(--muted); }
.pa-tip .pa-pform { padding: 12px 0 0; }

@media (max-width: 760px) {
  .pa-hero-top { padding: 40px 16px 16px; gap: 14px; }
  .pa-hero-avatar { width: 68px; height: 68px; border-radius: 18px; font-size: 24px; }
  .pa-hero-id h1 { font-size: 24px; }
  .pa-hero-actions { width: 100%; }
  .pa-stats { grid-template-columns: 1fr 1fr; }
  .pa-stats > div { padding: 14px 16px; }
  .pa-stats > div:nth-child(3) { border-left: 0; }
  .pa-stats > div:nth-child(n+3) { border-top: 1px solid var(--line); }
  .pa-block-head, .pa-people, .pa-facts { padding-left: 16px; padding-right: 16px; }
  .pa-move { margin: 0 16px 16px; }
  .pa-date { padding: 10px 16px; gap: 12px; }
  .pa-tabs > label:first-of-type { margin-left: 16px; }
  .pa-pays li { padding: 12px 16px; }
  .pa-move-list label { flex-wrap: wrap; row-gap: 4px; }
  .pa-move-list .grow { flex-basis: calc(100% - 30px); order: 2; margin-left: 26px; }
  .pa-move-list .tag { order: 3; margin-left: 26px; }
  .pa-date-title { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
  .pa-stats p { white-space: normal; }
}
.stf-agency .stf-av .ic { width: 15px; height: 15px; color: #fff; }
.stf-agency.is-company .stf-who strong { color: #8A5A00; }
.pa-move .btn { max-width: 100%; white-space: normal; text-align: left; height: auto; min-height: 32px; }
.person-pick { border: 0; padding: 0; margin: 0; min-width: 0; }
.person-pick legend { padding: 0; margin-bottom: 6px; font-size: 13px; font-weight: 600; }
.person-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.person-chips label { cursor: pointer; }
.person-chips label[hidden] { display: none; }
.person-chips input { position: absolute; opacity: 0; pointer-events: none; }
.person-chips span { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line-strong); font-size: 13.5px; font-weight: 600; }
.person-chips span small { font-weight: 500; color: var(--muted); }
.person-chips span::before { content: ""; width: 14px; height: 14px; border-radius: 4px; box-shadow: inset 0 0 0 1.5px var(--line-strong); background: #fff; }
.person-chips input:checked + span { background: var(--amber-soft); box-shadow: inset 0 0 0 1.5px var(--amber); }
.person-chips input:checked + span::before { background: var(--amber) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232E2200' stroke-width='3.5'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center/10px no-repeat; box-shadow: none; }
.person-chips input:focus-visible + span { box-shadow: var(--focus); }
.pa-who.is-tbc { --c: #8A82A0; padding-left: 8px; font-weight: 600; }

/* ---------- La cloche ---------- */
.bell-btn { position: relative; }
.bell-btn .ic { width: 20px; height: 20px; }
.bell-dot { position: absolute; top: 2px; right: 0; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: #E5484D; color: #fff; font: 800 11px/18px var(--font-ui); text-align: center; box-shadow: 0 0 0 2px var(--surface); }
.bell-dot[hidden] { display: none; }
.bell-menu { width: min(380px, calc(100vw - 24px)); padding: 0; right: 0; left: auto; overflow: hidden; }
.bell-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.bell-head form { margin: 0; }
.bell-head .link-btn[hidden] { display: none; }
.bell-list { list-style: none; margin: 0; padding: 4px 0; max-height: min(430px, 60vh); overflow-y: auto; }
.bell-list a, .bell-toast { display: flex; gap: 12px; align-items: flex-start; padding: 10px 16px; color: var(--ink); text-decoration: none; }
.bell-list a:hover { background: var(--sunken); }
.bell-list li.is-unread a { background: #FFFBEA; }
.bell-list li.is-unread a:hover { background: #FFF5D1; }
.bell-list li.is-unread .bell-txt strong::after { content: ""; display: inline-block; width: 7px; height: 7px; margin-left: 6px; border-radius: 50%; background: #E5484D; vertical-align: 2px; }
.bell-ic { flex: none; width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; background: var(--violet-soft); color: var(--violet-ink); }
.bell-txt { min-width: 0; display: block; }
.bell-txt strong { display: block; font-size: 13.5px; line-height: 1.3; }
.bell-txt small { display: block; margin-top: 2px; font-size: 12.5px; color: var(--ink-2); line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bell-txt em { display: block; margin-top: 3px; font-size: 11.5px; font-style: normal; color: var(--muted); }
.bell-empty { margin: 0; padding: 22px 18px; text-align: center; font-size: 13px; color: var(--muted); }
.bell-empty[hidden] { display: none; }
.bell-foot { display: flex; align-items: center; gap: 8px; padding: 11px 16px; border-top: 1px solid var(--line); font-size: 12.5px; font-weight: 600; color: var(--violet-ink); background: var(--sunken); }
.bell-toast { position: fixed; right: 20px; bottom: 20px; z-index: 300; width: min(360px, calc(100vw - 32px)); border-radius: 14px; background: var(--surface); box-shadow: var(--shadow-pop); transform: translateY(20px); opacity: 0; transition: transform .3s, opacity .3s; }
.bell-toast.is-in { transform: none; opacity: 1; }
.bell-head .link-btn { width: auto; padding: 0; display: inline; color: var(--violet-ink); }
.bell-head .link-btn:hover { background: none; text-decoration: underline; }
.bell-ic .ic, .bell-menu .bell-ic .ic { color: inherit; }
.bell-foot .ic { color: var(--violet-ink) !important; }
.bell-list a { border-radius: 0; align-items: flex-start; }
/* Vivier : sociétés et leurs personnes */
.stf-pool-sep { list-style: none; margin: 10px 0 2px; padding: 8px 12px 4px; border-top: 1px solid var(--line); font-size: 11.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #8A5A00; }
.stf-pool-sep small { font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--muted); }
.stf-pool-sep[hidden] { display: none; }
.stf-agency .stf-av { background: #B98A00; color: #fff; }
.stf-agency.is-company .stf-av { border-radius: 9px; }
.stf-agency.is-member { position: relative; padding-left: 30px !important; }
.stf-agency.is-member::before { content: ""; position: absolute; left: 22px; top: -4px; bottom: 50%; width: 10px; border-left: 1.5px solid #E6CF8F; border-bottom: 1.5px solid #E6CF8F; border-bottom-left-radius: 6px; }
.stf-agency.is-member .stf-av { width: 26px; height: 26px; font-size: 10.5px; background: #F2E3B3; color: #6B4E00; }
/* Planning : recherche d'une prestation */
.stf-find { position: relative; display: flex; align-items: center; }
.stf-find > .ic { position: absolute; left: 11px; color: var(--muted); pointer-events: none; }
.stf-find .input { width: 250px; padding-left: 32px; }
.stf-find-list { position: absolute; top: calc(100% + 6px); right: 0; z-index: 50; width: min(420px, 90vw); margin: 0; padding: 6px; list-style: none; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow-pop); }
.stf-find-list[hidden] { display: none; }
.stf-find-list button { display: flex; gap: 12px; align-items: flex-start; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: none; font: inherit; color: var(--ink); text-align: left; cursor: pointer; }
.stf-find-list button:hover, .stf-find-list button.is-cur { background: var(--violet-soft); }
.stf-find-list button.is-past { opacity: .65; }
.stf-find-list b { flex: none; width: 82px; font-size: 12.5px; font-variant-numeric: tabular-nums; color: var(--violet-ink); padding-top: 1px; }
.stf-find-list strong { display: block; font-size: 13.5px; }
.stf-find-list small { display: block; font-size: 12px; color: var(--muted); }
.stf-find-list .is-empty { padding: 10px; font-size: 13px; color: var(--muted); }
@media (max-width: 760px) { .stf-find, .stf-find .input { width: 100%; } }
/* Équipe affectée : le poste sous le prénom */
.crew-chip.has-role { padding-top: 3px; padding-bottom: 3px; border-radius: 12px; }
.crew-chip.has-role .crew-name { display: flex; flex-direction: column; line-height: 1.15; }
.crew-role-sm { display: flex; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 700; color: var(--ink-2); opacity: .85; }
.crew-role-sm::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--rc); flex: none; }
/* Prestataires extérieurs : bleu (l'équipe reste en vert) ; en attente : bord en pointillés */
.crew-chip.is-partner { background: #E5EDFF; color: #2747A3; }
.crew-chip.is-partner .crew-role-sm { color: #2747A3; }
.crew-chip.is-partner.is-pending { background: #F2F6FF; color: #3B57A6; box-shadow: inset 0 0 0 1.5px #A9BEF2; }
.crew-chip.is-partner.is-pending .crew-face { box-shadow: 0 0 0 1.5px #fff, 0 0 0 3px #E8C65A; }
.pa-hero-avatar.has-photo { overflow: hidden; background: var(--surface); }
.pa-hero-avatar img, .pa-person-av img, .pa-who i img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pa-person-av { overflow: hidden; }
.pa-who i { overflow: hidden; }
.pa-src { padding: 1px 7px; border-radius: 999px; background: var(--paper); color: var(--muted); font-size: 11px; font-weight: 700; }
.pa-move-actions { display: flex; flex-wrap: wrap; gap: 8px; }
/* Déjà placé ailleurs ce jour-là : un repère discret */
.stf-where { display: flex !important; align-items: center; gap: 4px; margin-top: 2px; font-size: 11px !important; font-weight: 600; color: #9A5B00 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.stf-where .ic { width: 11px; height: 11px; flex: none; }
.busy-dot { display: inline-block; width: 7px; height: 7px; margin-left: 2px; border-radius: 50%; background: #E08A00; box-shadow: 0 0 0 2px #FFE7B8; }
.person-chips label.is-busy span { box-shadow: inset 0 0 0 1px #F0C46A; }

/* Paramètres › Page client */
.pcs-jump { position: sticky; top: 62px; z-index: 5; display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 0; margin-bottom: 8px; background: var(--paper); }
.pcs-jump a { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); color: var(--ink-2); font-size: 13px; font-weight: 600; text-decoration: none; }
.pcs-jump a:hover { border-color: var(--violet); color: var(--violet-ink); }
.pcs-block { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg, 16px); padding: 22px; margin-bottom: 18px; scroll-margin-top: 120px; }
.pcs-head { margin-bottom: 16px; }
.pcs-head h2 { font-size: 19px; margin: 0 0 4px; display: flex; align-items: center; gap: 8px; }
.pcs-head p { margin: 0; color: var(--muted); font-size: 14px; max-width: 75ch; }
.pcs-pages { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.pcs-page { border: 1px solid var(--line); border-radius: 16px; overflow: hidden; background: var(--surface); display: flex; flex-direction: column; }
.pcs-page.is-off .pcs-preview { filter: grayscale(1); opacity: .55; }
.pcs-preview { padding: 14px; background: color-mix(in srgb, var(--pc) 10%, #f1f2f6); }
.pcs-prev-top { display: flex; align-items: center; gap: 8px; background: #fff; border-radius: 10px; padding: 8px 10px; font-size: 12px; line-height: 1.15; }
.pcs-prev-top small { display: block; color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .06em; }
.pcs-prev-logo { width: 22px; height: 22px; border-radius: 7px; background: var(--pc); flex: none; }
.pcs-prev-hero { margin-top: 10px; border-radius: 12px; padding: 26px 14px 14px; color: #fff; background: linear-gradient(150deg, var(--pc), color-mix(in srgb, var(--pc) 65%, #111)); }
.pcs-prev-hero small { display: block; font-size: 10px; text-transform: uppercase; letter-spacing: .08em; opacity: .85; }
.pcs-prev-hero strong { font-size: 18px; }
.pcs-prev-hero.is-serif strong { font-family: "Playfair Display", Georgia, serif; font-weight: 600; }
.pcs-prev-tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 8px; }
.pcs-prev-tiles span { height: 28px; border-radius: 8px; background: #fff; box-shadow: inset 0 0 0 9px #fff, inset 0 0 0 30px color-mix(in srgb, var(--pc) 18%, #fff); }
.pcs-page-body { padding: 16px 18px 18px; display: grid; gap: 12px; }
.pcs-page-body h3 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 16px; margin: 0; }
.pcs-page-body .field { margin: 0; }
.pcs-ic { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 10px; background: var(--violet-soft, #efeafe); color: var(--violet-ink, #4b3aa8); flex: none; }
.pcs-page .pcs-ic { background: color-mix(in srgb, var(--pc) 14%, #fff); color: color-mix(in srgb, var(--pc) 80%, #111); }
.pcs-mods { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; }
.pcs-mod { display: flex; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--sunken, #f7f7fa); }
.pcs-mod.is-on { background: var(--surface); }
.pcs-mod:not(.is-on) .pcs-ic { background: var(--line); color: var(--muted); }
.pcs-mod strong { display: block; font-size: 14px; }
.pcs-mod small { display: block; color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.pcs-mod-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; }
.pcs-checks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.pcs-check { padding: 14px; border: 1px solid var(--line); border-radius: 14px; align-items: flex-start; }
.pcs-check small { display: block; color: var(--muted); font-size: 12.5px; margin-top: 2px; font-weight: 400; }
.pcs-save { position: sticky; bottom: 0; z-index: 5; display: flex; justify-content: flex-end; padding: 12px 0; background: linear-gradient(transparent, var(--paper) 40%); }
@media (max-width: 900px) { .pcs-pages, .pcs-checks { grid-template-columns: 1fr; } }
.pcs-pages.is-single { grid-template-columns: minmax(0, 640px); }

/* Prestation › bloc Traiteur */
.cat-by { border: 0; padding: 0; margin: 0; min-width: 0; }
.cat-by legend { font-weight: 600; font-size: 13.5px; margin-bottom: 6px; padding: 0; }
.cat-by-row { display: flex; flex-wrap: wrap; gap: 6px; }
.cat-by-opt { position: relative; cursor: pointer; }
.cat-by-opt input { position: absolute; opacity: 0; pointer-events: none; }
.cat-by-opt span { display: inline-flex; align-items: center; padding: 8px 12px; border: 1px solid var(--line-strong); border-radius: 999px; font-size: 13px; font-weight: 600; color: var(--ink-2); background: var(--surface); }
.cat-by-opt input:checked + span { background: var(--violet-soft, #efeafe); border-color: var(--violet); color: var(--violet-ink); }
.cat-by-opt input:focus-visible + span { box-shadow: var(--focus); }
.cat-needs { margin-top: 18px; padding-top: 16px; border-top: 1px dashed var(--line); }
.cat-needs-title { margin: 0 0 10px; }
.cat-needs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.cat-need { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 6px 6px 12px; border: 1px solid var(--line); border-left: 4px solid var(--pc); border-radius: 10px; background: var(--surface); font-size: 13px; font-weight: 600; }
.cat-need.is-set { background: color-mix(in srgb, var(--pc) 8%, #fff); }
.cat-need .input { width: 64px; text-align: center; padding: 6px; }
.cat-agreed { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.cat-agreed > div { padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--sunken, #f7f7fa); }
.cat-agreed span { display: block; font-size: 12px; color: var(--muted); }
.cat-agreed b { display: block; font-size: 20px; margin-top: 2px; }
@media (max-width: 900px) { .cat-agreed { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Onglet Traiteur */
.cat-tab > .panel { margin-bottom: 18px; scroll-margin-top: 120px; }
.cat-jump { top: 62px; }
.cat-ob .cat-ob-detail { display: none; flex-wrap: wrap; gap: 8px; margin-top: 8px; align-items: center; font-size: 13px; color: var(--ink-2); }
.cat-ob.is-on .cat-ob-detail { display: flex; }
.cat-ob-detail label { display: inline-flex; align-items: center; gap: 6px; }
.cat-ob-detail .input { width: 96px; padding: 6px 8px; }
.cat-items { display: grid; gap: 14px; }
.cat-item { border: 1px solid var(--line); border-radius: 14px; padding: 16px; background: var(--surface); scroll-margin-top: 130px; }
.cat-item-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cat-item-cat { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--violet-ink); background: var(--violet-soft, #efeafe); padding: 4px 8px; border-radius: 999px; }
.cat-item-label { flex: 1; min-width: 220px; font-weight: 700; font-size: 15px; border-color: transparent; background: transparent; padding: 6px 8px; }
.cat-item-label:hover, .cat-item-label:focus { border-color: var(--line-strong); background: var(--surface); }
.cat-item-total { font-size: 17px; white-space: nowrap; }
.cat-item-total small { font-size: 12px; color: var(--muted); font-weight: 500; }
.cat-item-desc { margin: 6px 0 0; color: var(--muted); font-size: 13px; line-height: 1.45; max-height: 6.2em; overflow: auto; }
.cat-item-calc { display: grid; grid-template-columns: minmax(200px, 2fr) repeat(4, minmax(90px, 1fr)); gap: 10px; margin-top: 12px; }
.cat-item-calc label, .cat-notes { display: grid; gap: 4px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.cat-q-auto { display: flex; align-items: center; min-height: 40px; padding: 0 12px; border-radius: var(--r-sm, 10px); background: var(--sunken, #f4f4f7); font-weight: 700; font-size: 15px; }
.cat-choices { border: 1px dashed var(--line-strong); border-radius: 12px; padding: 10px 12px 12px; margin: 12px 0 0; }
.cat-choices legend { font-weight: 700; font-size: 13px; padding: 0 6px; display: flex; gap: 8px; align-items: center; }
.cat-count { font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 999px; }
.cat-count.is-ok { background: #e2f3ea; color: #1f6b47; }
.cat-count.is-bad { background: #fdecea; color: #b42318; }
.cat-choice-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 6px; }
.cat-choice { display: flex; gap: 8px; align-items: flex-start; padding: 7px 9px; border-radius: 9px; font-size: 13px; cursor: pointer; }
.cat-choice:hover { background: var(--sunken, #f6f6f9); }
.cat-choice input { margin-top: 2px; }
.cat-choice input:checked + span { font-weight: 600; color: var(--ink); }
.cat-notes { margin-top: 12px; }
.cat-item-foot { display: flex; align-items: center; gap: 6px; margin-top: 12px; }
.cat-add { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; margin-top: 16px; padding-top: 16px; border-top: 1px dashed var(--line); }
.cat-add .grow { flex: 1; min-width: 260px; margin: 0; }
.cat-foot { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.cat-tot { display: flex; align-items: baseline; gap: 8px; margin-right: auto; }
.cat-tot span { color: var(--muted); font-size: 13px; }
.cat-tot strong { font-size: 19px; }
.cat-tot small { color: var(--muted); }
.cat-q-link { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; }
.cat-sub { margin: 0 0 8px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.cat-files { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 8px; }
.cat-files > li { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; flex-wrap: wrap; }
.cat-files .grow { flex: 1; min-width: 200px; color: var(--ink); text-decoration: none; }
.cat-files .grow strong { display: flex; align-items: center; gap: 6px; font-size: 14px; }
.cat-files .grow small { display: block; color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.cat-file-ic { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: var(--violet-soft, #efeafe); color: var(--violet-ink); flex: none; }
.cat-versions { font-size: 12.5px; color: var(--muted); }
.cat-versions ul { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 4px; }
.cat-versions li { display: flex; align-items: center; gap: 6px; }
.cat-upload { display: grid; grid-template-columns: 1.3fr 1.3fr 1fr auto; gap: 12px; align-items: end; padding-top: 16px; border-top: 1px dashed var(--line); }
.cat-upload .field { margin: 0; }
@media (max-width: 1000px) { .cat-item-calc { grid-template-columns: 1fr 1fr; } .cat-upload { grid-template-columns: 1fr; } }
.cat-add { display: block; }
.cat-pick > summary { list-style: none; display: inline-flex; cursor: pointer; }
.cat-pick > summary::-webkit-details-marker { display: none; }
.cat-pick[open] > summary { margin-bottom: 12px; }
.cat-pick-body { border: 1px solid var(--line); border-radius: 14px; background: var(--surface); }
.cat-pick-top { display: flex; gap: 8px; padding: 12px; border-bottom: 1px solid var(--line); }
.cat-pick-top .input { flex: 1; }
.cat-pick-groups { max-height: 460px; overflow: auto; padding: 4px 12px 12px; display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 4px 18px; align-items: start; }
.cat-pick-group { border: 0; padding: 0; margin: 8px 0 0; min-width: 0; }
.cat-pick-group legend { display: flex; align-items: center; gap: 8px; width: 100%; font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-2); padding: 6px 0; }
.cat-pick-group legend .link-btn { margin-left: auto; text-transform: none; letter-spacing: 0; font-weight: 600; }
.cat-pick-dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.cat-pick-item { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: 9px; font-size: 13.5px; cursor: pointer; }
.cat-pick-item:hover { background: var(--sunken, #f6f6f9); }
.cat-pick-item:has(input:checked) { background: var(--violet-soft, #efeafe); }
.cat-pick-item small { color: var(--muted); white-space: nowrap; }
.cat-pick-item[hidden], .cat-pick-group[hidden] { display: none; }
.cat-pick-foot { position: sticky; bottom: 0; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px; border-top: 1px solid var(--line); background: var(--surface); border-radius: 0 0 14px 14px; }
.cat-q-hint { font-weight: 400; color: var(--muted); font-size: 11.5px; }

/* ---------- Logistique : commandes fournisseurs, vaisselle, nappes, agenda du mois ---------- */
.lo-ico { --c: #6E56CF; display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; background: color-mix(in srgb, var(--c) 14%, var(--surface)); color: var(--c); flex: none; }
.lo-ico .ic { width: 19px; height: 19px; }
.lo-ico-lg { width: 48px; height: 48px; border-radius: 14px; } .lo-ico-lg .ic { width: 26px; height: 26px; }
.lo-badge { display: inline-grid; place-items: center; min-width: 19px; height: 19px; padding: 0 5px; margin-left: 2px; border-radius: 99px; background: #D63A3A; color: #fff; font-size: 11px; font-weight: 700; }
.lo-st { display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px; border-radius: 99px; font-size: 12px; font-weight: 700; white-space: nowrap; }
.lo-st::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.lo-st.st-draft { background: #FFF1D6; color: #9A5B00; } .lo-st.st-sent { background: #E3EDFF; color: #2450B3; }
.lo-st.st-ok { background: var(--green-soft); color: #16704A; } .lo-st.st-done { background: #EEEDF1; color: var(--muted); } .lo-st.st-off { background: #EEEDF1; color: var(--muted); text-decoration: line-through; }
/* Choix du type */
.lo-kinds { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; }
.lo-kind { --c: #6E56CF; display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 22px 12px 18px; border-radius: 16px; background: var(--surface); border: 1px solid var(--line); color: var(--ink); text-align: center; transition: transform .12s, box-shadow .12s, border-color .12s; }
.lo-kind:hover { text-decoration: none; border-color: var(--c); transform: translateY(-2px); box-shadow: 0 10px 24px -14px color-mix(in srgb, var(--c) 70%, transparent); }
.lo-kind-ico { display: grid; place-items: center; width: 62px; height: 62px; border-radius: 18px; background: color-mix(in srgb, var(--c) 14%, var(--surface)); color: var(--c); }
.lo-kind-ico .ic { width: 32px; height: 32px; }
.lo-quick { display: flex; flex-wrap: wrap; gap: 8px; }
.lo-qk { --c: #6E56CF; display: inline-flex; align-items: center; gap: 8px; padding: 5px 12px 5px 5px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); font-weight: 600; font-size: 13.5px; }
.lo-qk .lo-ico { width: 28px; height: 28px; border-radius: 8px; } .lo-qk .lo-ico .ic { width: 16px; height: 16px; }
.lo-qk:hover { text-decoration: none; border-color: var(--c); background: color-mix(in srgb, var(--c) 6%, var(--surface)); }
/* Cartes de commande */
.lo-cards { display: grid; gap: 10px; margin-top: 14px; }
.lo-card { --c: #6E56CF; display: flex; gap: 12px; padding: 14px; border-radius: 14px; border: 1px solid var(--line); border-left: 4px solid var(--c); background: var(--surface); }
.lo-card.st-cancelled { opacity: .55; }
.lo-card.st-draft { background: linear-gradient(90deg, color-mix(in srgb, #F0B429 7%, var(--surface)), var(--surface) 40%); }
.lo-card-main { flex: 1; min-width: 0; }
.lo-card-top { display: flex; align-items: center; gap: 10px; justify-content: space-between; }
.lo-card-title { font-weight: 700; font-size: 15px; color: var(--ink); }
.lo-card-meta { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 4px; color: var(--muted); font-size: 13px; }
.lo-card-meta span { display: inline-flex; align-items: center; gap: 5px; }
.lo-card-prj { display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; font-size: 13px; font-weight: 600; }
.lo-lines { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.lo-lines li { padding: 3px 9px; border-radius: 8px; background: var(--sunken); border: 1px solid var(--line); font-size: 12.5px; }
.lo-lines li b { color: var(--c); }
.lo-details { margin: 8px 0 0; font-size: 13px; color: var(--ink-2); }
.lo-amount { margin: 6px 0 0; font-size: 12.5px; color: var(--muted); }
.lo-card-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px; }
.lo-st-form { margin-left: auto; } .lo-st-form select { min-width: 130px; }
/* Liste générale */
.lo-filters { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 16px; }
.lo-fk { --c: #6E56CF; display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px; border-radius: 99px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); font-size: 13px; font-weight: 600; }
.lo-fk .ic { color: var(--c); }
.lo-fk:hover { text-decoration: none; border-color: var(--c); }
.lo-fk.is-on { background: var(--c); border-color: var(--c); color: #fff; } .lo-fk.is-on .ic { color: #fff; }
.lo-fk:first-child.is-on { background: var(--ink); border-color: var(--ink); }
.lo-fstatus { margin-left: auto; }
.lo-daygroup { margin-bottom: 22px; }
.lo-dayh { font-size: 16px; margin: 0 0 -4px; display: flex; align-items: baseline; gap: 8px; }
.lo-dayh small { color: var(--muted); font-weight: 500; font-size: 13px; }
.lo-dayh.is-today { color: var(--violet); }
/* Formulaire */
.lo-head-t { display: flex; align-items: center; gap: 14px; }
.lo-form > .panel { margin-bottom: 16px; }
.lo-radio { padding: 6px 12px; } .lo-radio input { accent-color: var(--violet); margin: 0; }
.lo-free { display: grid; gap: 8px; margin: 12px 0 8px; }
.lo-free-head, .lo-free-row { display: grid; grid-template-columns: minmax(0, 2fr) 110px minmax(0, 2fr) 38px; gap: 8px; align-items: center; }
.lo-free-head { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; }
.lo-presets { margin: 0 0 4px; }
.lo-bar { position: sticky; bottom: 0; z-index: 5; display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 12px 16px; margin: 0 -4px 12px; background: color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter: blur(6px); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 -6px 20px -14px rgba(31,26,43,.35); }
.lo-bar-sum { margin-right: auto; font-size: 14px; }
.lo-del { margin: 4px 0 30px; }
.lo-send-now { margin-bottom: 14px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
/* Grille de vaisselle */
.lo-tw-tools { flex-wrap: wrap; align-items: flex-start; }
.lo-tw-ctl { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.lo-guests { display: inline-flex; align-items: center; gap: 6px; padding: 3px 4px 3px 10px; border-radius: 10px; background: var(--violet-soft, #EEEAFB); color: var(--violet-ink, #4A3A9A); font-weight: 600; font-size: 13px; }
.lo-guests input { width: 76px; }
.lo-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); cursor: pointer; }
.lo-check input { accent-color: var(--violet); }
.lo-tw-tools input[type=search] { width: 200px; }
.lo-tw-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 14px; padding: 16px; }
.lo-fam { border: 1px solid var(--line); border-radius: 14px; padding: 10px 12px; background: var(--sunken); align-self: start; }
.lo-fam h3 { display: flex; align-items: center; gap: 7px; margin: 2px 0 8px; font-size: 14px; color: #1F264A; }
.lo-fam h3 small { margin-left: auto; color: var(--violet); font-weight: 600; font-size: 12px; }
.lo-art { display: flex; align-items: center; gap: 8px; padding: 6px 8px; margin: 0 -4px; border-radius: 10px; transition: background .12s; }
.lo-art + .lo-art { border-top: 1px dashed var(--line); }
.lo-art.has-q { background: color-mix(in srgb, #2E9E6A 12%, var(--surface)); border-top-color: transparent; }
.lo-art-n { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.lo-art-n span { font-weight: 600; font-size: 13.5px; }
.lo-art-n small { color: var(--muted); font-size: 11.5px; }
.lo-step { display: flex; align-items: center; gap: 3px; }
.lo-step .input { width: 62px; height: 32px; padding: 0 6px; text-align: center; font-weight: 700; }
.lo-art.has-q .lo-step .input { border-color: #2E9E6A; color: #16704A; }
.lo-b { display: grid; place-items: center; width: 30px; height: 32px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); font: inherit; font-size: 17px; font-weight: 700; color: var(--ink-2); cursor: pointer; }
.lo-b:hover { border-color: var(--violet); color: var(--violet); }
.lo-b-g { color: var(--violet); } .lo-b-g .ic { width: 15px; height: 15px; }
/* Semaine : commandes du jour */
.lo-wchip { --c: #6E56CF; position: relative; display: flex; flex-direction: column; gap: 2px; padding: 7px 9px; border-radius: 10px; border: 1px dashed color-mix(in srgb, var(--c) 55%, transparent); background: color-mix(in srgb, var(--c) 7%, var(--surface)); color: var(--ink); font-size: 12.5px; }
.lo-wchip .ic { color: var(--c); }
.lo-wchip:hover { text-decoration: none; border-style: solid; }
.lo-wchip.st-cancelled { opacity: .5; }
.lo-wtodo { align-self: flex-start; margin-top: 2px; padding: 0 7px; border-radius: 99px; background: #FFF1D6; color: #9A5B00; font-size: 11px; font-weight: 700; }
/* Agenda du mois */
.lo-month { margin-top: 22px; }
.lo-legend { display: flex; flex-wrap: wrap; gap: 14px; padding: 10px 20px 0; font-size: 12.5px; color: var(--muted); }
.lo-legend span { display: inline-flex; align-items: center; gap: 5px; }
.lo-legend i { width: 10px; height: 10px; border-radius: 3px; background: var(--c); }
.lo-legend-todo { padding: 0 7px; border-radius: 99px; background: #FFF1D6; color: #9A5B00; font-weight: 700; }
.lo-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; padding: 12px 16px 16px; }
.lo-cal-h { text-align: center; font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .6px; }
.lo-cal-d { min-height: 108px; padding: 6px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.lo-cal-d.is-out { background: var(--sunken); opacity: .6; }
.lo-cal-d.is-week { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--violet) 40%, transparent); }
.lo-cal-d.is-today { border-color: var(--violet); box-shadow: 0 0 0 2px color-mix(in srgb, var(--violet) 25%, transparent); }
.lo-cal-n { align-self: flex-start; font-weight: 700; font-size: 13px; color: var(--ink); padding: 0 5px; border-radius: 6px; }
.lo-cal-d.is-today .lo-cal-n { background: var(--violet); color: #fff; }
.lo-cal-i { --c: #6E56CF; display: flex; align-items: center; gap: 4px; padding: 2px 6px; border-radius: 6px; font-size: 11.5px; line-height: 1.35; color: var(--ink); min-width: 0; }
.lo-cal-i span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lo-cal-i .ic { width: 12px; height: 12px; flex: none; color: var(--c); }
.lo-cal-i.t-p { background: color-mix(in srgb, var(--c) 16%, var(--surface)); border-left: 3px solid var(--c); font-weight: 600; }
.lo-cal-i.t-t { background: color-mix(in srgb, var(--c) 10%, var(--surface)); }
.lo-cal-i.t-o, .lo-cal-i.t-r { border: 1px dashed color-mix(in srgb, var(--c) 50%, transparent); }
.lo-cal-i.is-todo { background: #FFF6E2; }
.lo-cal-i:hover { text-decoration: none; filter: brightness(.96); }
.lo-cal-more { font-size: 11.5px; color: var(--muted); padding-left: 6px; }
/* Camions & véhicules */
.lo-fleet { margin-top: 18px; }
.lo-fleet-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; padding: 16px; }
.lo-veh { --c: #3D6BE0; display: flex; align-items: center; gap: 10px; padding: 12px; border-radius: 12px; border: 1px solid var(--line); border-left: 4px solid var(--c); color: var(--ink); }
.lo-veh:hover { text-decoration: none; border-color: var(--c); }
.lo-veh.is-off { opacity: .55; }
.lo-veh-t { flex: 1; min-width: 0; display: flex; flex-direction: column; } .lo-veh-t small { font-size: 12px; color: var(--ink-2); }
.lo-veh > .ic { color: var(--muted); }
/* Résumé de la prestation */
.lo-recap-l { list-style: none; margin: 0; padding: 10px 16px; display: grid; gap: 8px; }
.lo-recap-l li { display: flex; align-items: center; gap: 10px; font-weight: 600; }
.lo-recap-l .lo-ico { width: 30px; height: 30px; } .lo-recap-l .lo-ico .ic { width: 16px; height: 16px; }
.lo-recap-todo { margin: 0 16px 14px; padding: 8px 10px; border-radius: 10px; background: #FFF1D6; color: #9A5B00; font-weight: 700; font-size: 13px; display: flex; align-items: center; gap: 6px; }
.grid-main > aside > .panel + .panel { margin-top: 18px; }
/* Réglages : catalogue */
.lo-artset { margin-top: 18px; }
.lo-artfam { border: 1px solid var(--line); border-radius: 12px; margin-bottom: 8px; background: var(--surface); }
.lo-artfam > summary { cursor: pointer; padding: 10px 14px; display: flex; align-items: center; gap: 8px; }
.lo-artfam[open] > summary { border-bottom: 1px solid var(--line); }
.lo-artfam .lo-artrow { padding: 0 12px; }
.lo-artfam .lo-artrow:last-child { padding-bottom: 10px; }
.lo-artrow { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 2fr) 70px 90px 70px 40px; gap: 6px; align-items: center; margin-top: 6px; }
.lo-artrow-h { font-size: 11.5px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; padding-top: 8px !important; }
.lo-del-x { color: var(--muted); } .lo-del-x:has(input:checked) { color: #D63A3A; }
.lo-artnew { margin: 16px 0 4px; font-size: 14px; }
@media (max-width: 900px) {
  .lo-cal { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; padding: 8px; }
  .lo-cal-d { min-height: 64px; padding: 3px; }
  .lo-cal-i span { display: none; } .lo-cal-i { padding: 2px 3px; justify-content: center; }
  .lo-cal-i.t-p { border-left-width: 0; } .lo-cal-i.t-p::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c); }
}
@media (max-width: 640px) {
  .lo-free-head { display: none; }
  .lo-free-row { grid-template-columns: minmax(0, 1fr) 80px 38px; } .lo-free-row > :nth-child(3) { grid-column: 1 / 3; grid-row: 2; }
  .lo-tw-grid { grid-template-columns: 1fr; padding: 10px; }
  .lo-tw-tools input[type=search] { width: 100%; }
  .lo-bar { flex-wrap: wrap; } .lo-bar-sum { width: 100%; }
  .lo-st-form { margin-left: 0; }
  .lo-artrow { grid-template-columns: minmax(0, 1fr) 60px 70px 34px 34px; } .lo-artrow > :first-child { grid-column: 1 / -1; }
  .lo-artrow-h { display: none; }
}
@media (max-width: 640px) {
  .lo-bar { gap: 6px; padding: 8px 10px; flex-wrap: wrap; }
  .lo-bar > a.btn-ghost { display: none; }
  .lo-bar .btn { flex: 1; justify-content: center; padding-inline: 8px; }
  .lo-bar-sum { font-size: 13px; }
}

/* ===== Page prestation : bandeau + avancement, menu vertical (nov. 2026) ===== */
.prj-top { display: flex; gap: 16px; align-items: stretch; margin-bottom: 18px; flex-wrap: wrap; }
.prj-top .prj-hero { flex: 2.3 1 560px; margin-bottom: 0; min-height: 168px; }
.prj-top .prj-hero .event-hero-inner { padding: 20px 22px 18px; }
.prj-top .prj-hero .event-title h1 { font-size: 27px; }
.prj-progress { flex: 1 1 330px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 16px 18px; display: flex; flex-direction: column; gap: 6px; }
.prj-progress-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.prj-eyebrow { font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.prj-steps { --done: 0%; list-style: none; margin: 12px 0 6px; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); position: relative; }
.prj-steps::before, .prj-steps::after { content: ""; position: absolute; top: 10px; left: 8.33%; height: 3px; border-radius: 2px; }
.prj-steps::before { right: 8.33%; background: var(--line); }
.prj-steps::after { width: calc((100% - 16.66%) * var(--done) / 100); background: var(--green); }
.prj-steps li { position: relative; z-index: 1; text-align: center; }
.prj-steps form { margin: 0; }
.prj-steps button, .prj-steps span { display: flex; flex-direction: column; align-items: center; gap: 5px; width: 100%; border: 0; background: none; padding: 0; font: inherit; font-size: 11px; line-height: 1.2; color: var(--muted); }
.prj-steps button { cursor: pointer; }
.prj-steps button:hover { color: var(--ink); }
.prj-steps i { width: 23px; height: 23px; border-radius: 50%; display: grid; place-items: center; background: var(--surface); border: 2px solid var(--line-strong); color: #fff; }
.prj-steps i .ic { width: 12px; height: 12px; stroke-width: 3; }
.prj-steps .is-done i { background: var(--green); border-color: var(--green); }
.prj-steps .is-done button, .prj-steps .is-done span { color: var(--ink-2); }
.prj-steps .is-current i { background: var(--amber); border-color: var(--amber); box-shadow: 0 0 0 4px var(--amber-soft); }
.prj-steps .is-current span { color: var(--ink); font-weight: 700; }
.prj-next { margin-top: auto; justify-content: center; }
p.prj-next.is-done { display: flex; align-items: center; gap: 6px; color: var(--green); font-weight: 600; font-size: 13.5px; margin: auto 0 0; }

.prj-frame { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 20px; align-items: start; }
.prj-menu { position: sticky; top: 14px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 8px; display: flex; flex-direction: column; gap: 1px; }
.prj-menu a { display: flex; align-items: center; gap: 10px; padding: 8px 11px; border-radius: 9px; color: var(--ink-2); text-decoration: none; font-size: 14px; font-weight: 500; }
.prj-menu a > span:first-of-type { flex: 1; min-width: 0; }
.prj-menu a:hover { background: var(--sunken); color: var(--ink); }
.prj-menu a.is-active { background: var(--violet-soft); color: var(--violet-ink); font-weight: 650; }
.prj-menu a .count { margin-left: auto; font-size: 11.5px; font-weight: 700; color: var(--muted); background: var(--sunken); border-radius: 99px; padding: 1px 7px; }
.prj-menu a .count.is-hot { background: var(--red); color: #fff; }
.prj-menu-grp { margin: 12px 11px 3px; font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); }
.prj-menu-foot { border-top: 1px solid var(--line); margin-top: 8px; padding-top: 6px; }
.prj-menu-foot a { font-size: 13px; color: var(--muted); }
.prj-content { min-width: 0; }
.prj-content > .panel:first-child, .prj-content > .grid-main:first-child, .prj-content > .page-head:first-child { margin-top: 0; }
.prj-content .page-head { margin-bottom: 14px; }
@media (max-width: 1000px) {
  .prj-frame { grid-template-columns: minmax(0, 1fr); }
  .prj-menu { position: static; flex-direction: row; overflow-x: auto; padding: 6px; }
  .prj-menu a { white-space: nowrap; flex: none; }
  .prj-menu-grp { display: none; }
  .prj-menu-foot { border: 0; margin: 0; padding: 0; display: flex; }
}

/* Vue d'ensemble */
.ov-grid { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 18px; align-items: start; }
.ov-main { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.ov-main > .panel { margin: 0; }
.ov-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.ov-cards > .panel { margin: 0; display: flex; flex-direction: column; }
.ov-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 14px 16px 0; }
.ov-card-head h2 { font-size: 15px; margin: 0; }
.ov-card-body { padding: 10px 16px 16px; font-size: 13.5px; color: var(--ink-2); }
.ov-card-body strong { color: var(--ink); font-size: 14.5px; }
.ov-venue-photo { height: 120px; margin: 12px 16px 0; border-radius: 10px; overflow: hidden; background: var(--sunken); }
.ov-venue-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ov-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.ov-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; border-radius: 99px; padding: 3px 9px; background: var(--sunken); color: var(--ink-2); }
.ov-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 4px; }
.ov-tile { border-radius: 12px; padding: 10px 12px; background: var(--c-soft, var(--sunken)); color: var(--c, var(--ink)); }
.ov-tile b { display: block; font-size: 22px; line-height: 1.1; }
.ov-tile small { font-size: 12px; opacity: .85; }
.ov-prog { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.ov-prog li { display: flex; gap: 10px; align-items: baseline; }
.ov-prog time { font-weight: 700; font-size: 12.5px; background: var(--night); color: #fff; border-radius: 6px; padding: 2px 6px; flex: none; }
.ov-alerts .panel-head { align-items: center; }
.ov-check { display: flex; align-items: center; gap: 10px; }
.ov-check-bar { width: 140px; height: 7px; border-radius: 4px; background: var(--line); overflow: hidden; }
.ov-check-bar span { display: block; height: 100%; background: var(--green); }
.ov-alert-list { list-style: none; margin: 0; padding: 0 18px 8px; }
.ov-alert-list li { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-top: 1px solid var(--line); }
.ov-alert-list li:first-child { border-top: 0; }
.ov-ico { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; flex: none; background: var(--c-soft); color: var(--c); }
.ov-alert-list .grow b { display: block; font-size: 14px; }
.ov-alert-list .grow small { color: var(--muted); font-size: 12.5px; }
.ov-done { display: flex; flex-wrap: wrap; gap: 6px; padding: 4px 18px 16px; }
.ov-done span { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; color: var(--green); background: var(--green-soft); border-radius: 99px; padding: 3px 9px; }
.ov-done span.is-no { color: var(--muted); background: var(--sunken); }
.ov-stats { display: flex; flex-direction: column; gap: 10px; position: sticky; top: 14px; }
.ov-stat { border-radius: var(--r-lg); padding: 14px 16px; background: var(--surface); border: 1px solid var(--line); position: relative; overflow: hidden; }
.ov-stat::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--c, var(--violet)); }
.ov-stat dt { font-size: 12.5px; color: var(--muted); display: flex; align-items: center; gap: 6px; }
.ov-stat dd { margin: 3px 0 0; font-size: 22px; font-weight: 750; color: var(--ink); letter-spacing: -.01em; }
.ov-stat dd small { font-size: 12px; font-weight: 600; color: var(--muted); margin-left: 4px; }
.ov-stat p { margin: 2px 0 0; font-size: 12px; color: var(--muted); }
.ov-stat .ov-bar { height: 6px; border-radius: 4px; background: var(--line); margin-top: 8px; overflow: hidden; }
.ov-stat .ov-bar span { display: block; height: 100%; background: var(--c, var(--green)); }
.ov-stat.is-due dd { color: var(--red); }
.ov-stat.is-margin { background: var(--green-soft); border-color: transparent; }
.ov-stat.is-margin dd { color: var(--green); }
.ov-stat.is-margin.is-neg { background: var(--red-soft); }
.ov-stat.is-margin.is-neg dd { color: var(--red); }
.ov-mails { list-style: none; margin: 0; padding: 0 18px 10px; }
.ov-mails li { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-top: 1px solid var(--line); font-size: 13.5px; }
.ov-mails li:first-child { border-top: 0; }
.ov-mails .grow { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
dialog.dlg-quick { width: min(760px, calc(100vw - 32px)); }
dialog.dlg-quick .venue-pick-photo { height: 150px; border-radius: 12px; overflow: hidden; background: var(--sunken); margin-bottom: 12px; }
dialog.dlg-quick .venue-pick-photo img { width: 100%; height: 100%; object-fit: cover; }
.mail-open { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; border-radius: 99px; padding: 2px 8px; white-space: nowrap; }
.mail-open.is-yes { background: var(--green-soft); color: var(--green); }
.mail-open.is-no { background: var(--sunken); color: var(--muted); }
.doc-acts { display: flex; gap: 6px; justify-content: flex-end; }
@media (max-width: 1200px) { .ov-grid { grid-template-columns: minmax(0, 1fr); } .ov-stats { position: static; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } }
@media (max-width: 700px) { .ov-cards { grid-template-columns: minmax(0, 1fr); } }

/* Traiteur par moment du programme */
.cat-stats { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.cat-stats .ov-tile { border: 0; text-align: left; font: inherit; cursor: pointer; }
.cat-stats .ov-tile:hover { filter: brightness(.97); }
.cat-chips { margin: 10px 0 16px; }
.cat-moments { display: flex; flex-direction: column; gap: 14px; }
.cat-moments > .panel { margin: 0; overflow: hidden; }
.cat-moment-head { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--sunken); border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.cat-moment-head h2 { margin: 0; font-size: 15px; }
.cat-moment-head p { margin: 1px 0 0; font-size: 12.5px; color: var(--muted); }
.cat-moment-head .grow { flex: 1; min-width: 160px; }
.cat-time { font-weight: 700; font-size: 13px; background: var(--night); color: #fff; border-radius: 8px; padding: 4px 9px; display: inline-flex; align-items: center; }
.cat-time.is-free { background: var(--line); color: var(--ink-2); }
.cat-empty { margin: 0; padding: 14px 16px; color: var(--muted); font-size: 13.5px; }
.cat-table { margin: 0; }
.cat-table td, .cat-table th { padding-top: 8px; padding-bottom: 8px; }
.cat-table tr.is-off td { opacity: .55; }
.cat-row-sub { display: block; color: var(--muted); font-size: 12px; }
.cat-basis { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--ink-2); }
.cat-in { width: 92px; text-align: right; }
.cat-acts { display: inline-flex; gap: 6px; align-items: center; }
.cat-acts form { margin: 0; }
.cat-totbar { position: sticky; bottom: 10px; z-index: 5; margin-top: 16px; display: flex; align-items: center; gap: 26px; flex-wrap: wrap; padding: 14px 18px; border-radius: var(--r-lg); background: var(--night); color: #fff; box-shadow: 0 10px 30px rgba(20,16,30,.25); }
.cat-totbar small { display: block; font-size: 11.5px; color: var(--night-muted); }
.cat-totbar b { font-size: 17px; }
.cat-totbar > div:first-child { margin-right: auto; }
.cat-totbar form { margin: 0; }
dialog.dlg-wide { width: min(1000px, calc(100vw - 32px)); }
dialog.dlg-drawer { margin: 0 0 0 auto; height: 100vh; max-height: 100vh; width: min(560px, 100vw); border-radius: 0; padding: 0; }
dialog.dlg-drawer > form { display: flex; flex-direction: column; height: 100%; }
.drawer-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--line); }
.drawer-head h2 { margin: 0; font-size: 18px; }
.drawer-head > div { flex: 1; }
.drawer-tools { padding: 14px 22px; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 10px; }
.drawer-body { flex: 1; overflow: auto; padding: 8px 22px 16px; }
.drawer-foot { padding: 14px 22px; border-top: 1px solid var(--line); display: flex; align-items: center; gap: 12px; justify-content: space-between; }
.cat-filter { display: flex; flex-wrap: wrap; gap: 6px; }
.cat-filter .chip { border: 1px solid var(--line); background: var(--surface); border-radius: 99px; padding: 4px 11px; font: inherit; font-size: 12.5px; cursor: pointer; color: var(--ink-2); }
.cat-filter .chip.is-on { background: var(--night); border-color: var(--night); color: #fff; }
@media (max-width: 800px) { .cat-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Vue d'ensemble : alertes aux couleurs de l'appli, équipe en bulles, rentabilité + notes côte à côte */
.ov-alerts.is-brand { border-color: var(--amber); overflow: hidden; }
.ov-alerts.is-brand > .panel-head { background: var(--amber); color: var(--amber-ink); }
.ov-alerts.is-brand > .panel-head h2, .ov-alerts.is-brand > .panel-head p, .ov-alerts.is-brand .ov-check .muted { color: var(--amber-ink); }
.ov-alerts.is-brand .ov-check-bar { background: rgba(255,255,255,.35); }
.ov-alerts.is-brand .ov-check-bar span { background: var(--amber-ink); }
.ov-alerts.is-brand .ov-alert-list { padding-top: 6px; }
.ov-team .ov-miss { color: var(--red); }
.ov-needs { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 18px 4px; }
.ov-need { font-size: 12.5px; border-radius: 99px; padding: 3px 10px; background: var(--green-soft); color: var(--green); }
.ov-need.is-miss { background: var(--red-soft); color: var(--red); }
.ov-crew { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; padding: 10px 18px 16px; }
.ov-crew > div + div { border-left: 1px solid var(--line); padding-left: 16px; }
.ov-crew-t { display: flex; align-items: center; gap: 6px; margin: 0 0 10px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.ov-bubbles { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 12px 8px; }
.ov-bubble { width: 72px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 2px; }
.ov-face { position: relative; width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: var(--c); color: #fff; font-weight: 700; font-size: 14px; box-shadow: 0 0 0 3px var(--surface), 0 0 0 4px var(--line); }
.ov-face img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.ov-bubble.is-wait .ov-face { opacity: .75; }
.ov-dot { position: absolute; right: -2px; top: -2px; width: 13px; height: 13px; border-radius: 50%; background: var(--red); border: 2px solid var(--surface); }
.ov-bubble b { font-size: 12.5px; margin-top: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ov-bubble small { font-size: 11px; color: var(--muted); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ov-pair { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.ov-pair .panel { margin: 0; }
.ov-notes { display: flex; flex-direction: column; gap: 18px; }
@media (max-width: 1100px) { .ov-pair, .ov-crew { grid-template-columns: minmax(0, 1fr); } .ov-crew > div + div { border-left: 0; padding-left: 0; } }
.btn.doc-back { margin: 0 0 14px; font-size: 14px; padding: 9px 14px; }
.btn.doc-back b { font-weight: 650; max-width: 420px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Page client : lien, type de page, rubriques visibles, aperçu téléphone navigable */
.pc-grid { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 18px; align-items: start; }
.pc-main > .panel:first-child { margin-top: 0; }
.pc-link { display: flex; gap: 8px; flex-wrap: wrap; }
.pc-link .input { flex: 1 1 260px; background: var(--sunken); }
.pc-types, .pc-types-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.pc-types-form { grid-column: 1 / -1; }
.pc-type { display: flex; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; cursor: pointer; background: var(--surface); text-align: left; font: inherit; color: inherit; }
.pc-type input { position: absolute; opacity: 0; pointer-events: none; }
.pc-type > .ic { width: 22px; height: 22px; color: var(--violet); flex: none; }
.pc-type span { flex: 1; }
.pc-type b { display: block; font-size: 14px; }
.pc-type small { color: var(--muted); font-size: 12.5px; }
.pc-type.is-on { border: 2px solid var(--violet); background: var(--violet-soft); padding: 11px 13px; }
.pc-type.is-locked { border-style: dashed; }
.pc-type.is-locked:hover { border-color: var(--violet); }
.pc-mod { font-style: normal; font-size: 10.5px; font-weight: 700; color: #7A4B00; background: #FDECC8; border-radius: 99px; padding: 1px 7px; margin-left: 6px; vertical-align: 1px; }
.pc-grp { margin: 4px 0 8px; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.pc-grp + .pc-secs, .pc-grp + .pc-checks { margin-bottom: 14px; }
.pc-secs { display: flex; flex-wrap: wrap; gap: 8px; }
.pc-sec { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line); border-radius: 10px; padding: 7px 11px; font-size: 13.5px; font-weight: 500; }
.pc-sec.is-off { color: var(--muted); background: var(--sunken); text-decoration: line-through; }
.pc-sec small { font-size: 11px; text-decoration: none; }
.pc-checks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.pc-check { display: flex; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; cursor: pointer; }
.pc-check:has(input:checked) { border-color: var(--violet); background: var(--violet-soft); }
.pc-check b { display: block; font-size: 13.5px; }
.pc-check small { color: var(--muted); font-size: 12px; }
.pc-side { position: sticky; top: 14px; display: flex; flex-direction: column; gap: 10px; }
.pc-side > .panel { margin: 6px 0 0; }
.pc-phone { width: 300px; max-width: 100%; height: 600px; margin: 0 auto; border: 11px solid var(--night); border-radius: 40px; overflow: hidden; background: #fff; box-shadow: 0 22px 44px rgba(20,16,30,.2); position: relative; }
/* rendu à la largeur d'un vrai téléphone (390 px), réduit pour tenir dans le cadre : ce que voit le client */
.pc-phone iframe { width: 390px; height: calc(100% / var(--pc-scale, .7128)); border: 0; display: block; transform: scale(var(--pc-scale, .7128)); transform-origin: 0 0; }
.pc-phone.is-empty { display: grid; place-items: center; text-align: center; padding: 20px; color: var(--muted); }
.pc-phone-bar { display: flex; justify-content: center; gap: 6px; }
.pc-wed { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 24px; align-items: start; }
.pc-wed h2 { display: flex; align-items: center; gap: 8px; }
.pc-wed-list { list-style: none; padding: 0; margin: 14px 0; display: flex; flex-direction: column; gap: 8px; }
.pc-wed-list li { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.pc-price { font-size: 17px; font-weight: 700; color: var(--violet-ink); }
@media (max-width: 1250px) { .pc-grid { grid-template-columns: minmax(0, 1fr); } .pc-side { position: static; } }
@media (max-width: 760px) { .pc-types, .pc-types-form, .pc-checks, .pc-wed { grid-template-columns: minmax(0, 1fr); } }

/* Logistique de l'événement */
.lo-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 16px; }
.lo-tiles .ov-tile { text-decoration: none; display: flex; flex-direction: column; }
.lo-tiles .ov-tile span { order: -1; font-size: 12px; font-weight: 600; opacity: .8; margin-bottom: 2px; }
.lo-ico.lo-ico-sm { width: 28px; height: 28px; border-radius: 8px; }
.lo-row-title { display: inline-flex; align-items: center; gap: 10px; color: var(--ink); text-decoration: none; }
.lo-table td { vertical-align: middle; }
.lo-table .lo-st-form { margin: 0; }
.lo-st-sel { min-width: 120px; font-weight: 600; }
.lo-st-sel.st-draft { background: #FFF3D6; color: #7A4B00; }
.lo-st-sel.st-confirmed, .lo-st-sel.st-delivered { background: var(--green-soft); color: var(--green); }
.dropdown-menu a .lo-ico { margin-right: 4px; }
@media (max-width: 800px) { .lo-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Équipe en haut de la colonne des chiffres + notes */
.ov-stats-dl { display: flex; flex-direction: column; gap: 10px; margin: 0; }
.ov-team-side { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 14px 14px 12px; }
.ov-ts-head { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.ov-ts-head h2 { font-size: 14.5px; margin: 0; }
.ov-ts-head p { margin: 2px 0 0; font-size: 12px; color: var(--muted); }
.ov-ts-head > span { flex-wrap: wrap; }
.ov-team-side .ov-needs { padding: 0 0 8px; }
.ov-team-side .ov-crew { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 0; }
.ov-team-side .ov-crew > div + div { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 10px; }
.ov-team-side .ov-crew-t { font-size: 11px; margin-bottom: 8px; }
.ov-team-side .ov-bubble { width: 62px; }
.ov-team-side .ov-face { width: 40px; height: 40px; font-size: 13px; }
.ov-note-t { display: flex; align-items: center; gap: 6px; margin: 0 0 6px; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.ov-note { font-size: 13.5px; line-height: 1.5; background: var(--sunken); border-radius: 10px; padding: 10px 12px; margin-bottom: 14px; }
.ov-note.is-empty { color: var(--muted); font-style: italic; }
.ov-note:last-child { margin-bottom: 0; }

/* Paramètres › Page client : sommaire vertical, cartes des options, ajout repliable */
.pcs-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 22px; align-items: start; }
.pcs-layout > .pcs-jump { position: sticky; top: 14px; display: flex; flex-direction: column; gap: 2px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 8px; margin: 0; flex-wrap: nowrap; }
.pcs-layout > .pcs-jump a { display: flex; align-items: center; gap: 9px; padding: 8px 11px; border-radius: 9px; color: var(--ink-2); text-decoration: none; font-size: 14px; font-weight: 500; border: 0; background: none; }
.pcs-layout > .pcs-jump a:hover { background: var(--sunken); color: var(--ink); }
.pcs-layout > .pcs-jump .count { margin-left: auto; font-size: 11.5px; font-weight: 700; background: var(--red); color: #fff; border-radius: 99px; padding: 0 7px; }
.pcs-layout > .pcs-jump .count:empty { display: none; }
.pcs-jump-t { margin: 6px 11px 6px; font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); }
.pcs-jump-ext { border-top: 1px solid var(--line) !important; margin-top: 6px; padding-top: 10px !important; color: var(--muted) !important; font-size: 13px !important; }
.pcs-main { min-width: 0; }
.pcs-main > .panel:first-of-type, .pcs-main > form > .pcs-block:first-of-type { margin-top: 0; }
.pcs-main > .panel { margin-top: 22px !important; }
.pcs-cards { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; padding: 16px 18px !important; }
.pcs-cards > li { flex-direction: column; align-items: stretch !important; flex-wrap: wrap; border: 1px solid var(--line) !important; border-radius: 14px; padding: 0 0 10px !important; overflow: hidden; gap: 8px !important; display: flex; }
.pcs-cards > li > .thumb { width: 100% !important; height: 140px !important; border-radius: 0 !important; object-fit: cover; }
.pcs-cards > li > .grow { padding: 0 12px; }
.pcs-cards > li > form, .pcs-cards > li > a.btn { margin: 0 0 0 12px; display: inline-flex; }
.pcs-cards > li { display: grid !important; grid-template-columns: auto auto 1fr auto auto; grid-template-rows: auto auto auto; }
.pcs-cards > li > .thumb, .pcs-cards > li > .grow { grid-column: 1 / -1; }
.pcs-add { padding: 14px 18px 18px; border-top: 1px solid var(--line); }
.pcs-add > summary { list-style: none; cursor: pointer; display: inline-flex; }
.pcs-add > summary::-webkit-details-marker { display: none; }
.pcs-add[open] > summary { margin-bottom: 14px; }
.pcs-add > form.panel-foot { border: 0; padding: 0; background: none; }
@media (max-width: 1000px) { .pcs-layout { grid-template-columns: minmax(0, 1fr); } .pcs-layout > .pcs-jump { position: static; flex-direction: row; overflow-x: auto; } .pcs-jump-t { display: none; } }
.prj-cancel-btn { display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--line); background: var(--surface); color: var(--muted); border-radius: 99px; padding: 2px 9px; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; }
.prj-cancel-btn:hover { border-color: var(--red); color: var(--red); background: var(--red-soft); }
.prj-cancelled { display: flex; gap: 10px; align-items: flex-start; margin: 10px 0 12px; padding: 10px 12px; border-radius: 10px; background: var(--red-soft); color: var(--red); font-size: 13px; }
.prj-cancelled p { margin: 0; line-height: 1.45; }
.prj-cancelled-ic { width: 26px; height: 26px; border-radius: 50%; background: var(--red); color: #fff; display: grid; place-items: center; flex: none; }
.prj-cancelled-ic .ic { width: 14px; height: 14px; }

/* ---- Traiteur : effectifs par moment, infos du client, horaires de l'équipe ---- */
dialog.dlg-full { width: min(1240px, calc(100vw - 24px)); }
.cat-client { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; margin: 0 0 16px; border-radius: var(--r-md); background: color-mix(in srgb, var(--amber) 10%, #fff); border: 1px solid color-mix(in srgb, var(--amber) 40%, #fff); border-left: 4px solid var(--amber); flex-wrap: wrap; }
.cat-client-ic { color: var(--amber); margin-top: 1px; }
.cat-client .grow { flex: 1; min-width: 220px; font-size: 14px; }
.cat-client ul { margin: 6px 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.cat-client li { font-size: 12.5px; font-weight: 600; background: #fff; border: 1px solid var(--line); border-radius: 99px; padding: 3px 10px; color: var(--ink-2); }
.cat-client li.is-hot { border-color: var(--amber); color: var(--ink); }
.cat-client-acts { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.cat-client-acts form { margin: 0; }
.cat-eff { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 16px; border-bottom: 1px solid var(--line); }
.cat-eff-chip { display: inline-flex; align-items: center; gap: 5px; font: inherit; font-size: 12.5px; font-weight: 600; color: var(--ink-2); background: var(--surface); border: 1px solid var(--line); border-radius: 99px; padding: 4px 10px; line-height: 1.3; }
button.cat-eff-chip { cursor: pointer; }
button.cat-eff-chip:hover { border-color: var(--amber); color: var(--ink); }
.cat-eff-chip .ic { color: var(--muted); }
.cat-eff-chip.is-empty { color: var(--muted); border-style: dashed; }
.cat-eff-chip.is-add { color: var(--amber); border-style: dashed; border-color: color-mix(in srgb, var(--amber) 50%, #fff); }
.cat-eff-chip.is-add .ic { color: var(--amber); }
.cat-eff-chip.is-post { border-left: 4px solid var(--pc); }
.cat-eff-chip.is-post b { font-variant-numeric: tabular-nums; }
.cat-eff-chip.is-ok b { color: var(--green); }
.cat-eff-chip.is-short { background: var(--red-soft); border-color: #F2B8B8; border-left-color: var(--red); }
.cat-eff-chip.is-short b { color: var(--red); }
.cat-chips .ov-chip[style*="--pc"] { border-left: 3px solid var(--pc); }
button.ov-chip { border: 0; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; }
.cat-hours { margin-top: 18px; }
.cat-hours .panel-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.cat-hours .panel-head h2 { margin: 0; }
.cat-hours .panel-head p { margin: 2px 0 0; }
.cat-hours-list { display: flex; flex-direction: column; }
.cat-hour { display: flex; align-items: center; gap: 10px 14px; padding: 10px 16px; border-top: 1px solid var(--line); flex-wrap: wrap; margin: 0; }
.cat-hour-who { display: flex; align-items: center; gap: 9px; min-width: 190px; flex: 1 1 200px; border-left: 4px solid var(--pc); padding-left: 10px; }
.cat-hour-who b { display: block; font-size: 14px; }
.cat-hour-who small { color: var(--muted); font-size: 12px; }
.cat-hour-f { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--muted); margin: 0; }
.cat-hour-f select { min-width: 0; width: 200px; }
.cat-hour-t { display: inline-flex; align-items: center; gap: 6px; }
.cat-hour-t input { width: 110px; }
.cat-grid-wrap { overflow-x: auto; }
.cat-grid { min-width: 820px; }
.cat-grid td, .cat-grid th { padding: 5px 4px; vertical-align: middle; white-space: nowrap; }
.cat-grid td:first-child, .cat-grid th:first-child { position: sticky; left: 0; background: var(--surface); z-index: 1; padding-right: 10px; }
.cat-grid input[type=number] { width: 58px; text-align: center; padding-left: 4px; padding-right: 4px; }
.cat-grid input[type=time] { width: 100px; }
.cat-grid select { min-width: 0; width: 112px; }
.cat-grid .cat-time { font-size: 12px; padding: 2px 7px; margin-right: 4px; }
.cat-grid-post { display: inline-block; border-bottom: 3px solid var(--pc); padding-bottom: 2px; font-size: 12px; }
@media (max-width: 640px) { .cat-hour-f select { min-width: 0; width: 100%; } .cat-hour-f { flex: 1 1 100%; } }
.cat-by-mini { flex-wrap: nowrap; gap: 3px; }
.cat-by-mini .cat-by-opt span { padding: 5px 9px; font-size: 12px; }
.cat-hour-f .picker { width: 250px; }
.cat-mom-del { margin: 0; }
.ov-cat-list { list-style: none; margin: 0; padding: 0; }
.ov-cat-list li { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--line); flex-wrap: wrap; }
.ov-cat-list li:first-child { border-top: 0; padding-top: 0; }
.ov-cat-list .cat-time { font-size: 12px; padding: 2px 7px; min-width: 52px; justify-content: center; }
.ov-cat-name { flex: 1; min-width: 130px; }
.ov-cat-name b { display: block; font-size: 13.5px; }
.ov-cat-name small { color: var(--muted); font-size: 12px; }
.ov-cat-staff { display: flex; gap: 4px; flex-wrap: wrap; }
.ov-cat-post { font-size: 11.5px; font-weight: 700; border-radius: 99px; padding: 2px 8px; background: var(--green-soft); color: var(--green); }
.ov-cat-post.is-short { background: var(--red-soft); color: var(--red); }
.ov-cat-ht { font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; min-width: 80px; text-align: right; }
.ov-chip.is-warn { background: var(--red-soft); color: var(--red); }
.cat-grid-h { font-size: 14px; margin: 14px 0 8px; }
.cat-grid-staffhead { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 18px; }
.cat-grid-staffhead .cat-grid-h { margin: 0; }
.cat-grid-staffhead .grow { flex: 1; }
.cat-addpost { margin: 0; }
.cat-addpost .picker { width: 220px; }
.cat-mode-help { margin: 6px 0 10px; }
.cat-grid-guests { min-width: 760px; }
.cat-grid-staff { min-width: 0; }
.cat-day-list { display: flex; flex-direction: column; gap: 6px; }
.cat-day-row { display: flex; align-items: center; gap: 10px 16px; flex-wrap: wrap; padding: 8px 12px; border: 1px solid var(--line); border-left: 4px solid var(--pc); border-radius: 10px; background: var(--surface); }
.cat-day-row[hidden] { display: none; }
.cat-day-post { min-width: 170px; flex: 1 1 170px; }
.cat-day-post b { display: block; font-size: 14px; }
.cat-day-post small { color: var(--muted); font-size: 12px; }
.cat-day-f { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 12.5px; color: var(--muted); }
.cat-day-f input[type=number] { width: 70px; text-align: center; }
.cat-day-f .picker { width: 220px; }
.cat-more-posts { margin-top: 10px; }
.cat-more-posts summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--muted); display: inline-flex; align-items: center; gap: 5px; margin-bottom: 8px; }
.cat-grid th[hidden], .cat-grid td[hidden] { display: none; }
.cat-mom-id { grid-template-columns: 160px 1fr 1fr; margin-top: 10px; }

/* ---- Domaine › Catalogue : cartes avec photo et couleur de l'agenda ---- */
.est-fam { margin-bottom: 22px; }
.est-fam-head { display: flex; align-items: baseline; gap: 10px; margin: 0 0 10px; }
.est-fam-head h2 { display: inline-flex; align-items: center; gap: 7px; margin: 0; font-size: 16px; }
.est-fam-head h2 .ic { color: var(--muted); }
.est-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.est-cards.is-narrow { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }
.est-card { display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg, 14px); overflow: hidden; color: inherit; text-decoration: none; border-top: 4px solid var(--c); transition: box-shadow .15s, transform .15s; }
.est-card:hover { box-shadow: var(--shadow-pop, 0 6px 20px rgba(0,0,0,.08)); transform: translateY(-1px); }
.est-card:focus-visible { box-shadow: var(--focus); outline: 0; }
.est-card.is-picked { outline: 2px solid var(--c); outline-offset: 1px; }
.est-card.is-off { opacity: .6; }
.est-card-pic { position: relative; display: block; height: 150px; flex: none; overflow: hidden; background: color-mix(in srgb, var(--c) 14%, #fff); }
.est-card-pic img { width: 100%; height: 100%; object-fit: cover; display: block; }
.est-card-noimg { position: absolute; inset: 0; display: grid; place-items: center; color: var(--c); }
.est-card-noimg .ic { width: 34px; height: 34px; opacity: .75; }
.est-card-color { position: absolute; left: 8px; top: 8px; display: inline-flex; align-items: center; font-size: 11px; font-weight: 700; color: var(--ink-2); background: rgba(255,255,255,.92); border-radius: 99px; padding: 2px 8px 2px 6px; }
.est-card-color .est-swatch { margin-right: 5px; width: 9px; height: 9px; border-radius: 50%; }
.est-card-qty { position: absolute; right: 8px; top: 8px; font-size: 12px; font-weight: 800; color: #fff; background: rgba(31,26,43,.78); border-radius: 99px; padding: 2px 9px; }
.est-card-body { display: flex; flex-direction: column; gap: 5px; padding: 11px 13px 13px; flex: 1; }
.est-card-name { font-size: 14.5px; line-height: 1.25; }
.est-card-body .tag { align-self: flex-start; }
.est-card-price { font-size: 13px; }
.est-card-price b { font-size: 15px; font-variant-numeric: tabular-nums; }
.est-card-meta { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 12px; color: var(--muted); }
.est-card-meta span { display: inline-flex; align-items: center; gap: 4px; }
.est-card-meta .is-on { color: var(--green); font-weight: 600; }
.est-card-notes { font-size: 12px; color: var(--muted); border-top: 1px dashed var(--line); padding-top: 6px; margin-top: auto; }
.est-card-add { align-items: center; justify-content: center; gap: 6px; min-height: 160px; border: 2px dashed var(--line-strong, #d6d2e0); border-top-width: 2px; color: var(--muted); font-weight: 600; background: transparent; }
.est-card-add:hover { color: var(--amber); border-color: var(--amber); }
.est-color-row { display: flex; align-items: center; gap: 10px; }
.est-card:hover, .est-card:hover * { text-decoration: none; }
#fiche .unit-photo img { width: 100%; max-height: 170px; object-fit: cover; border-radius: 10px; display: block; margin-bottom: 6px; }

.est-card-pic img { position: absolute; inset: 0; }
.est-card-thumbs { position: absolute; right: 8px; bottom: 8px; display: flex; gap: 4px; }
.est-card-thumbs img { position: static; width: 34px; height: 34px; border-radius: 6px; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.25); object-fit: cover; }
.est-photos { border: 0; padding: 0; margin: 0; min-width: 0; }
.est-photos legend { font-weight: 600; font-size: 13.5px; margin-bottom: 6px; padding: 0; }
.est-photo-slots { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 8px; }
.est-photo-slot { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.est-photo-box { position: relative; display: block; height: 96px; border-radius: 10px; overflow: hidden; border: 1px dashed var(--line-strong); background: var(--sunken); cursor: pointer; }
.est-photo-box:hover { border-color: var(--amber); }
.est-photo-box img { width: 100%; height: 100%; object-fit: cover; display: block; }
.est-photo-empty { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); }
.est-photo-lbl { position: absolute; left: 6px; bottom: 6px; font-size: 10.5px; font-weight: 700; color: var(--ink-2); background: rgba(255,255,255,.92); border-radius: 99px; padding: 1px 7px; }
.est-photo-slot input:focus-visible + .est-photo-box, .est-photo-box:focus-within { box-shadow: var(--focus); }
.est-photo-del { font-size: 12px; }
.ek-list { display: flex; flex-direction: column; gap: 6px; }
.ek-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 6px 8px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.ek-row .grow { flex: 1 1 200px; min-width: 160px; }
.ek-row.is-del { opacity: .45; text-decoration: line-through; }
.ek-row.is-del .ek-del { color: var(--red); background: var(--red-soft); }
.ek-move { display: inline-flex; }
.ek-icon, .ek-row .picker { width: 150px; }
.ek-lod { font-size: 12.5px; margin: 0; }
.ek-n { min-width: 70px; text-align: right; }
.ek-del { cursor: pointer; }
.btn.is-disabled { opacity: .45; cursor: not-allowed; }

/* ---- Réservation du domaine : jours, HT/TTC, remise ---- */
.est-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.est-view { flex: none; }
.est-days { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 0 20px 14px; }
.est-days-lbl { display: inline-flex; align-items: center; gap: 5px; font-weight: 600; font-size: 13px; color: var(--ink-2); margin-right: 4px; }
.est-days-range { font-size: 13.5px; padding: 6px 12px; border-radius: 99px; background: var(--sunken); }
.est-days-pick { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; font-size: 12.5px; color: var(--muted); }
.est-days-pick label { display: inline-flex; align-items: center; gap: 5px; margin: 0; }
.est-days-pick input { width: 140px; }
.est-all { display: inline-block; margin-top: 4px; font: inherit; font-size: 11px; font-weight: 600; color: var(--amber); background: none; border: 1px dashed color-mix(in srgb, var(--amber) 55%, #fff); border-radius: 99px; padding: 1px 8px; cursor: pointer; }
.est-all:hover { background: color-mix(in srgb, var(--amber) 10%, #fff); }
.est-disc-h { min-width: 78px; }
.est-line-h { min-width: 96px; }
.est-disc-in { display: inline-flex; align-items: center; gap: 3px; }
.est-disc-in input { width: 58px; text-align: right; }
.est-disc-in i { font-style: normal; color: var(--muted); font-size: 12px; }
.est-book-grid td.est-line { font-weight: 700; white-space: nowrap; text-align: right; padding-right: 10px; }
.est-novat { display: block; font-size: 10.5px; color: var(--red); margin-top: 2px; }
.est-total-ttc { margin-left: 14px; }
.cat-pick-row[hidden] { display: none; }
.cat-pick-moms { display: flex; flex-wrap: wrap; gap: 4px; padding: 2px 8px 8px 36px; }
.cat-pick-moms .cat-by-opt span { padding: 3px 9px; font-size: 11.5px; }
.cat-pick-row:has(input[name="product_ids[]"]:checked) { background: var(--violet-soft, #efeafe); border-radius: 9px; }
.cat-pick-row:has(input[name="product_ids[]"]:checked) .cat-pick-item { background: transparent; }
/* Traiteur : chaque moment a sa couleur (liseré, bandeau teinté, heure) */
.cat-moment[style*="--mc"] { border-left: 4px solid var(--mc); }
.cat-moment[style*="--mc"] .cat-moment-head { background: color-mix(in srgb, var(--mc) 9%, #fff); border-bottom-color: color-mix(in srgb, var(--mc) 22%, #fff); }
.cat-moment[style*="--mc"] .cat-moment-head h2 { color: color-mix(in srgb, var(--mc) 70%, var(--ink)); }
.cat-moment[style*="--mc"] .cat-time { background: var(--mc); }
.cat-moment[style*="--mc"] .cat-eff { background: color-mix(in srgb, var(--mc) 3%, #fff); }
.cat-moments { display: flex; flex-direction: column; gap: 16px; }
.doc-row-acts { display: inline-flex; align-items: center; gap: 4px; justify-content: flex-end; }
.doc-del { margin: 0; display: inline-flex; }
.doc-del .btn:hover { color: var(--red); }
.doc-pick td:first-child .sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 190px; }
.doc-pick td:first-child .row-link { white-space: nowrap; }
/* avec l'aperçu PDF à côté, on garde l'essentiel pour voir les boutons Envoyer / poubelle */
@media (max-width: 1900px) { .doc-pick .doc-opt { display: none; } .doc-row-acts .doc-lbl { display: none; } }
/* Réservation du domaine : total et boutons collés en bas pendant le défilement (comme le Traiteur) */
.est-book .est-foot { position: sticky; bottom: 10px; z-index: 5; margin: 12px 12px 0; padding: 14px 18px; border: 0; border-radius: var(--r-lg); background: var(--night); color: #fff; box-shadow: 0 10px 30px rgba(20,16,30,.25); }
.est-book .est-foot .muted { color: var(--night-muted); }
.est-book .est-foot .est-total strong { color: #fff; font-size: 19px; }
.est-book .est-foot .picker-btn { background: rgba(255,255,255,.08); color: #fff; border-color: rgba(255,255,255,.18); }
.est-book .est-foot .picker { max-width: 260px; }
a.cat-by-opt { text-decoration: none; }
a.cat-by-opt.is-on span { background: var(--violet-soft, #efeafe); border-color: var(--violet); color: var(--violet-ink); }
.cat-pv { margin-right: 4px; }
.est-book-grid thead th.is-side em { color: var(--muted); }
.est-quick { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 4px; }
.est-quick .est-all { margin-top: 0; }
.est-all.is-clear { color: var(--muted); border-color: var(--line-strong); }
/* Traiteur : − / + autour du nombre */
.cat-step { display: inline-flex; align-items: center; gap: 0; }
.cat-step .cat-in { width: 64px; text-align: center; border-radius: 0; border-left: 0; border-right: 0; }
.cat-step-b { width: 28px; height: 32px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink-2); font: inherit; font-size: 16px; font-weight: 700; line-height: 1; cursor: pointer; padding: 0; }
.cat-step-b:first-child { border-radius: 8px 0 0 8px; }
.cat-step-b:last-child { border-radius: 0 8px 8px 0; }
.cat-step-b:hover { background: color-mix(in srgb, var(--amber) 12%, #fff); color: var(--ink); }
.cat-step.is-dirty .cat-in { background: color-mix(in srgb, var(--amber) 10%, #fff); }
.cat-mq { margin: 0; }
.cat-mq-l { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--ink-2); background: #fff; border: 1px solid var(--line); border-radius: 99px; padding: 4px 10px; cursor: pointer; margin: 0; }
.cat-mq-l.is-off { color: var(--muted); border-style: dashed; }
.cat-mq-none { font-size: 12px; color: var(--muted); }
.cat-moment-head .num.is-off { color: var(--muted); text-decoration: line-through; }
.cat-qshow { margin: 0; display: flex; flex-direction: column; gap: 3px; padding-right: 18px; border-right: 1px solid rgba(255,255,255,.15); }
.cat-qshow label { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: #fff; margin: 0; cursor: pointer; }
.cat-qshow input { accent-color: var(--amber); }
.cat-totbar > .cat-qshow + div { margin-right: auto; }

/* ---- Éditeur de devis : cadres repliables, vue compacte, sections repliables, total collé en bas ---- */
.doc-col > .panel-head { cursor: pointer; display: flex; align-items: flex-start; gap: 10px; }
.doc-col > .panel-head > div:first-child { flex: 1; min-width: 0; }
.doc-col-btn .ic { transition: transform .15s; }
.doc-col.is-collapsed .doc-col-btn .ic { transform: rotate(-90deg); }
.doc-col.is-collapsed > :not(.panel-head) { display: none !important; }
.doc-col-sum { margin: 2px 0 0; font-size: 12.5px; color: var(--muted); font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.doc-col:not(.is-collapsed) .doc-col-sum { display: none; }
.lines-tools { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ln-top { display: flex; align-items: center; gap: 6px; }
.ln-top .ln-label { flex: 1; }
.ln-expand { display: none; }
.ln-expand .ic, .ln-fold .ic { transition: transform .15s; }
.ln-section .ln-main { display: flex; align-items: center; gap: 8px; }
.ln-section .ln-main .ln-section-input { flex: 1; }
.ln.is-folded .ln-fold .ic { transform: rotate(-90deg); }
.ln-fold-info { font-size: 12.5px; color: var(--muted); white-space: nowrap; font-weight: 600; }
.ln[hidden] { display: none; }
/* vue compacte : une rangée par ligne ; les détails (description, options, pack, unité, TVA) s'ouvrent avec ⌄ */
.lines-editor.is-compact .ln.ln-item { padding: 6px 16px; align-items: center; }
.lines-editor.is-compact .ln-item .ln-thumb { width: 30px; height: 30px; border-radius: 8px; font-size: 12px; }
.lines-editor.is-compact .ln-item .ln-expand { display: inline-grid; }
.lines-editor.is-compact .ln-item.is-open .ln-expand .ic { transform: rotate(180deg); }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-desc,
.lines-editor.is-compact .ln-item:not(.is-open) .ln-options,
.lines-editor.is-compact .ln-item:not(.is-open) .ln-children,
.lines-editor.is-compact .ln-item:not(.is-open) .ln-tools,
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field > span { display: none; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field:nth-child(2),
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field:has(select) { display: none; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-main { gap: 0; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-nums { align-items: center; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-total { padding: 0; }
.lines-editor.is-compact .ln-item.is-open { background: color-mix(in srgb, var(--amber) 5%, var(--surface)); }
.doc-stickybar { position: sticky; bottom: 10px; z-index: 6; margin-top: 16px; display: flex; align-items: center; gap: 22px; flex-wrap: wrap; padding: 12px 18px; border-radius: var(--r-lg); background: var(--night); color: #fff; box-shadow: 0 10px 30px rgba(20,16,30,.25); }
.doc-stickybar small { display: block; font-size: 11.5px; color: var(--night-muted); }
.doc-stickybar b { font-size: 16px; font-variant-numeric: tabular-nums; }
.doc-stickybar .is-main b { font-size: 19px; }
.doc-stickybar .grow { flex: 1; }
.lines-editor.is-compact .ln.ln-item:not(.is-open) { grid-template-columns: 26px 30px minmax(0, 1fr) auto 32px; }
.lines-editor.is-compact .ln.ln-item:not(.is-open) .ln-nums { grid-column: 4; grid-row: 1; flex-wrap: nowrap; }
.lines-editor.is-compact .ln.ln-item:not(.is-open) > .icon-btn { grid-column: 5; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field .input { min-height: 30px; padding: 3px 7px; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-total-wrap { min-width: 90px; }
.ln-headrow { display: none; }
.lines-panel:has(.lines-editor.is-compact) .ln-headrow { display: grid; grid-template-columns: 26px 30px minmax(0, 1fr) auto 32px; gap: 10px 12px; padding: 6px 16px; font-size: 11.5px; font-weight: 600; color: var(--muted); border-top: 1px solid var(--line); }
.ln-headrow .ln-hnums { display: none; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field[title^="Coût"] { display: none; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field .input { width: 70px; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field:first-child .input { width: 56px; }
.lines-editor.is-compact .ln-item:not(.is-open) .ln-field[title^="Remise"] .input { width: 54px; }
.mc-side li > a { display: block; color: inherit; text-decoration: none; }
.mc-side li:has(> a):hover { border-color: var(--amber); background: color-mix(in srgb, var(--amber) 8%, #fff); }
/* Aperçu PDF page par page */
.doc-viewer-frame[data-pdf-pager] { position: relative; height: auto; min-height: 420px; display: flex; flex-direction: column; outline: 0; }
.pdf-page { position: relative; padding: 12px; overflow: hidden; }
.pdf-page canvas { display: block; margin: 0 auto; max-width: 100%; box-shadow: 0 4px 18px rgba(20,16,30,.14); background: #fff; }
.pdf-loading { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font-size: 13px; margin: 0; }
.pdf-loading[hidden] { display: none; }
.doc-viewer-frame[data-pdf-pager] iframe { height: calc(100vh - 150px); }
.pdf-nav { position: sticky; bottom: 10px; align-self: center; display: inline-flex; align-items: center; gap: 10px; margin: 0 0 10px; padding: 5px 8px; border-radius: 99px; background: var(--night); color: #fff; box-shadow: 0 6px 18px rgba(20,16,30,.25); }
.pdf-nav[hidden] { display: none; }
.pdf-nav .btn { background: transparent; color: #fff; border-color: transparent; }
.pdf-nav .btn:disabled { opacity: .35; }
.pdf-count { font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; min-width: 44px; text-align: center; }
.mc-files { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap; margin-top: 10px; padding: 10px 12px; border: 1px dashed var(--line-strong); border-radius: var(--r-md); background: var(--sunken); }
.mc-files[hidden] { display: none; }
.mc-files-t { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 600; color: var(--ink-2); padding-top: 3px; }
.mc-files-list { display: flex; flex-wrap: wrap; gap: 6px; flex: 1; }
.mc-file { display: inline-flex; align-items: center; gap: 7px; padding: 5px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); font-size: 13px; font-weight: 600; cursor: pointer; margin: 0; }
.mc-file small { display: block; font-weight: 500; color: var(--muted); font-size: 11.5px; }
.mc-file:has(input:checked) { border-color: var(--amber); background: color-mix(in srgb, var(--amber) 10%, #fff); }
.mc-files-list { flex-direction: column; gap: 8px; }
.mc-files-g { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.mc-files-h { flex-basis: 100%; font-size: 11.5px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.lib-files .lib-def { margin: 0; }

/* Agenda : notes façon post-it (≠ prestations à liseré, ≠ indisponibilités hachurées) */
.cal-day { position: relative; }
.cal-add { position: absolute; top: 6px; right: 6px; width: 24px; height: 24px; display: grid; place-items: center; border: 0; border-radius: 999px; background: transparent; color: var(--muted); cursor: pointer; opacity: 0; transition: opacity .15s, background .15s; }
.cal-day:hover .cal-add, .cal-add:focus-visible { opacity: 1; }
.cal-add:hover { background: var(--sunken); color: var(--ink); }
@media (hover: none) { .cal-add { opacity: .45; } }
.cal-note { --n: #F2C94C; display: block; width: 100%; min-width: 0; margin: 0; border: 0; padding: 3px 14px 3px 7px; border-radius: 3px; font: inherit; font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: linear-gradient(225deg, color-mix(in srgb, var(--n) 62%, #fff) 0 7px, color-mix(in srgb, var(--n) 30%, #fff) 7px); box-shadow: 0 1px 2px rgba(40, 30, 60, .10); transform: rotate(-.4deg); }
button.cal-note { cursor: pointer; }
button.cal-note:hover { background: linear-gradient(225deg, color-mix(in srgb, var(--n) 75%, #fff) 0 7px, color-mix(in srgb, var(--n) 42%, #fff) 7px); }
.cal-key-note { display: inline-flex; align-items: center; margin: 0; }
.cal-key-note label { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; }
.cal-key-note .color-dot-input { width: 18px; height: 18px; border-radius: 4px; }
.cal-key-note .color-dot-input::-webkit-color-swatch { border-radius: 3px; }
.cal-key-note i { width: 16px; height: 11px; border-radius: 2px; margin-right: 7px; background: color-mix(in srgb, var(--n) 40%, #fff); box-shadow: 0 1px 2px rgba(40, 30, 60, .12); }
.agn-swatches label { position: relative; }
.agn-def::after { content: ""; position: absolute; inset: 9px; border-radius: 50%; background: rgba(255, 255, 255, .85); }
.agn-cus { background: conic-gradient(#EB5757, #F2C94C, #6FBF73, #56A3E8, #9B7BE0, #E77FB3, #EB5757) !important; }
.swatches .agn-cus input[type=color] { inset: 0; width: 100%; height: 100%; cursor: pointer; }
#ag-note .actions { display: flex; align-items: center; gap: 8px; }
#ag-note .actions .grow { flex: 1; }
@media (max-width: 640px) {
  .cal-add { display: none; }
  .cal-tools { flex-wrap: wrap; }
  .cal-tools > .btn { flex: none; }
  .cal-tools > .muted { flex: 1; }
  .cal-tools .toolbar-form { flex: 0 1 auto; }
  .cal-note { width: 100%; height: 4px; padding: 0; font-size: 0; border-radius: 2px; background: var(--n); box-shadow: none; transform: none; }
}

/* Agenda : prestation sur plusieurs jours (suite les jours suivants) */
.cal-ev.has-next { border-top-right-radius: 0; border-bottom-right-radius: 0; margin-right: -7px; }
.cal-ev.is-cont { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: -7px; padding-left: 10px; box-shadow: none; }
.cal-ev.is-cont.st-lead, .cal-ev.is-cont.st-quoted { box-shadow: inset 0 0 0 1px var(--c); }
.cal-ev .cal-cont { font-size: 10.5px; font-weight: 700; color: color-mix(in srgb, var(--c) 70%, #1F1A2B); opacity: .8; }
.cal-day:nth-child(7n+1) .cal-ev.is-cont { margin-left: 0; border-top-left-radius: 6px; border-bottom-left-radius: 6px; }
.cal-day:nth-child(7n+7) .cal-ev.has-next { margin-right: 0; border-top-right-radius: 6px; border-bottom-right-radius: 6px; }
@media (max-width: 640px) { .cal-ev.has-next, .cal-ev.is-cont { margin: 0; border-radius: 50%; } }
/* En-tête de prestation : date (ou heure) de fin sous la date de début */
.event-date { width: auto; min-width: 92px; }
.event-date .to { display: grid; justify-items: center; margin-top: 5px; padding-top: 5px; border-top: 1px solid rgba(255,255,255,.18); font-size: 12px; font-weight: 600; white-space: nowrap; color: #fff; }
.event-date .to small { font-size: 11px; font-weight: 400; color: var(--night-muted); }
.event-hero .event-date .to small { color: rgba(255,255,255,.7); }

/* Devis : versions V1, V2, V3… sous le même numéro */
.doc-versions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 8px 0 4px; }
.doc-versions > span { font-size: 12.5px; color: var(--muted); margin-right: 2px; }
.doc-versions a { display: inline-flex; align-items: baseline; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 13px; font-weight: 700; color: var(--ink); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line-strong); text-decoration: none; }
.doc-versions a small { font-size: 11.5px; font-weight: 500; color: var(--muted); }
.doc-versions a:hover { background: var(--sunken); text-decoration: none; }
.doc-versions a.is-current { background: var(--night); color: #fff; box-shadow: none; }
.doc-versions a.is-current small { color: rgba(255,255,255,.7); }
.doc-versions a.is-signed:not(.is-current) { box-shadow: inset 0 0 0 1.5px #2E9E5B; }
/* Cloche : bouton « Tout marquer comme vu » bien visible */
.bell-head .link-btn.bell-readall { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: 999px; background: var(--sunken); color: var(--ink); font-weight: 600; font-size: 12.5px; box-shadow: inset 0 0 0 1px var(--line-strong); }
.bell-head .link-btn.bell-readall:hover { background: var(--night); color: #fff; text-decoration: none; box-shadow: none; }
.bell-head .link-btn.bell-readall[hidden] { display: none; }

/* Analyser un devis PDF */
.imp-panel { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 24px; padding: 22px; }
.imp-drop { display: grid; justify-items: center; align-content: center; gap: 6px; min-height: 230px; padding: 24px; border: 2px dashed var(--line-strong); border-radius: var(--r-lg); background: var(--sunken); text-align: center; cursor: pointer; transition: border-color .15s, background .15s; }
.imp-drop:hover, .imp-drop.is-over { border-color: var(--amber); background: color-mix(in srgb, var(--amber) 8%, var(--surface)); }
.imp-drop-ic { width: 52px; height: 52px; display: grid; place-items: center; border-radius: 14px; background: var(--night); color: var(--amber); margin-bottom: 6px; }
.imp-drop strong { font-size: 16px; }
.imp-drop span:last-child { color: var(--muted); font-size: 13.5px; }
.is-busy .imp-drop { opacity: .6; pointer-events: none; }
.imp-state { margin: 12px 0 0; font-weight: 600; }
.imp-state.is-bad { color: #8F2323; }
.imp-help h2 { font-size: 15px; margin-bottom: 8px; }
.imp-help ul { margin: 0 0 10px; padding-left: 18px; display: grid; gap: 6px; font-size: 14px; }
.imp-warn { margin-bottom: 12px; }
.imp-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-bottom: 16px; align-items: start; }
.imp-card { padding: 18px; }
.imp-card-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.imp-card-head h2 { font-size: 17px; margin: 0; }
.imp-step { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--night); color: var(--amber); font-weight: 700; font-size: 13px; flex: none; }
.imp-head-check { margin-left: auto; }
.imp-choices { display: grid; gap: 6px; margin-bottom: 10px; }
.imp-choice { display: flex; gap: 10px; align-items: flex-start; padding: 9px 12px; border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--line); cursor: pointer; }
.imp-choice:has(input:checked) { box-shadow: inset 0 0 0 2px var(--night); background: var(--sunken); }
.imp-choice input { margin-top: 3px; }
.imp-choice span { display: grid; gap: 1px; }
.imp-choice small { color: var(--muted); font-size: 12.5px; }
.imp-new { margin-top: 10px; padding-top: 12px; border-top: 1px dashed var(--line); }
.imp-qhead { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.imp-lines td { vertical-align: top; }
.imp-lines .imp-sec td { background: var(--sunken); }
.imp-lines .num { width: 84px; text-align: right; }
.imp-lines td small { display: block; font-size: 11.5px; }
.imp-lines tr.is-off td:not(:first-child) { opacity: .4; }
.imp-label { min-width: 260px; }
.imp-desc { margin-top: 4px; font-size: 12.5px; color: var(--muted); }
.imp-desc summary { cursor: pointer; }
.imp-desc p { margin: 6px 0 0; color: var(--ink-2); }
.imp-prod { min-width: 150px; }
.imp-diff { color: #A35F00; margin-top: 3px; }
.imp-total { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 12px 4px; border-top: 1px solid var(--line); font-size: 14px; }
.imp-actions { position: sticky; bottom: 0; display: flex; justify-content: flex-end; gap: 8px; padding: 12px 0; background: linear-gradient(transparent, var(--bg, #F7F5FA) 30%); }
@media (max-width: 900px) { .imp-panel, .imp-grid { grid-template-columns: 1fr; } .imp-qhead { grid-template-columns: 1fr 1fr; } }
.imp-lines select.input-sm { min-width: 78px; }
.imp-lines td.num { white-space: nowrap; }

/* Fiche prestataire : logo ou photo */
.pa-logo-field { display: flex; align-items: center; gap: 14px; }
.pa-logo-prev { width: 64px; height: 64px; flex: none; border-radius: 14px; display: grid; place-items: center; overflow: hidden; background: var(--night); color: #fff; font-weight: 700; font-size: 20px; }
.pa-logo-prev.has-img { background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.pa-logo-prev img { width: 100%; height: 100%; object-fit: cover; }
.pa-logo-actions { display: grid; gap: 6px; justify-items: start; }
.imp-muted-note { display: none; margin-left: auto; font-size: 12.5px; color: var(--muted); }
.imp-card.is-muted .imp-muted-note { display: inline; }
.imp-card.is-muted .imp-choices, .imp-card.is-muted .imp-new, .imp-card.is-muted > .check { opacity: .45; }
.imp-prod { min-width: 220px; }
.imp-prod-sel { width: 100%; max-width: 260px; }
.imp-prod-sel.is-linked { box-shadow: inset 0 0 0 1.5px #2E9E5B; }
.imp-ok { display: flex; align-items: center; gap: 4px; color: #1E7A44; margin-top: 3px; }
.imp-file { margin-top: 16px; }

/* Texte mis en forme : barre d'outils + zone d'écriture */
.rich-box { display: grid; gap: 0; }
.rich-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 5px 6px; border: 1px solid var(--line-strong); border-bottom: 0; border-radius: var(--r-md) var(--r-md) 0 0; background: var(--sunken); }
.rich-btn { min-width: 30px; height: 28px; padding: 0 8px; border: 0; border-radius: 6px; background: transparent; color: var(--ink); font: inherit; font-size: 13px; cursor: pointer; }
.rich-btn:hover { background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.rich-color { width: 18px; height: 18px; border: 0; border-radius: 50%; background: var(--sw); cursor: pointer; box-shadow: inset 0 0 0 2px rgba(255,255,255,.6); }
.rich-color:hover { transform: scale(1.15); }
.rich-ed { min-height: 84px; border-radius: 0 0 var(--r-md) var(--r-md); line-height: 1.5; white-space: normal; overflow-wrap: anywhere; }
.rich-ed:empty::before { content: attr(data-placeholder); color: var(--muted); }
.rich-ed ul, .rich-ed ol, .rich ul, .rich ol { margin: 4px 0; padding-left: 20px; }
.rich-ed p, .rich p { margin: 0; }

/* Formules : intertitres (lignes en gras) dans « Ce qui est compris » */
.plan-card li.plan-ft-title, li.plan-ft-title { margin-top: 8px; list-style: none; font-weight: 700; color: var(--ink); }
li.plan-ft-title:first-child { margin-top: 0; }

/* Programme sur plusieurs jours : un intertitre par journée */
.run-day { display: flex; align-items: center; gap: 10px; margin: 0; padding: 14px 20px 10px; border-top: 1px solid var(--line); background: var(--surface-2, #FAF9FB); font-size: 14px; font-weight: 700; color: var(--ink); }
.panel-head + .run-day { border-top: 0; }
.run-day small { margin-left: auto; font-weight: 500; color: var(--muted); }
.run-day-no { display: inline-grid; place-items: center; min-width: 32px; height: 24px; padding: 0 8px; border-radius: 999px; background: var(--amber-soft, #FFF4DE); color: var(--amber-ink, #8A5A00); font-size: 12px; }
.run-day + .run-list > li:first-child { border-top: 1px solid var(--line); }
.mi-day { margin: 14px 0 6px; font-size: 13px; font-weight: 700; color: var(--ink); }
.mi-day:first-child { margin-top: 0; }

/* Éditeur de devis : lieu, carte et kilomètres depuis le dépôt */
.doc-venue { margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface, #fff); }
.doc-venue-head { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.doc-venue-head .ic { color: var(--amber, #E8A33D); }
.doc-venue-addr { margin: 4px 0 0; font-size: 12.5px; color: var(--muted); }
.doc-venue-map { height: 150px; margin-top: 10px; border-radius: 10px; overflow: hidden; background: #EEECF2; z-index: 0; }
.doc-venue-km { margin: 8px 0 0; font-size: 13px; }
.doc-venue .btn { margin-top: 8px; width: 100%; justify-content: center; }
.doc-venue.is-loading .doc-venue-addr { opacity: .6; }
.doc-venue-from { margin: 4px 0 0; font-size: 12px; color: var(--muted); }

/* Bulle d'assistance (aide de la page + support Gliveo) */
.hw { position: fixed; right: 20px; bottom: 20px; z-index: 250; }
.hw-fab { position: relative; display: grid; place-items: center; width: 52px; height: 52px; border: 0; border-radius: 50%; background: var(--amber, #E8A33D); color: #fff; box-shadow: 0 8px 24px rgba(30, 20, 50, .22); cursor: pointer; transition: transform .15s; }
.hw-fab:hover { transform: translateY(-2px); }
.hw-fab-ic { width: 27px; height: 27px; --hw-dots: var(--amber, #E8A33D); }
.hw-fab .hw-fab-x { display: none; width: 20px; height: 20px; }
.hw.is-open .hw-fab-ic { display: none; }
.hw.is-open .hw-fab .hw-fab-x { display: block; }
.hw-badge { position: absolute; top: -3px; right: -3px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; background: #D64545; color: #fff; font-size: 11.5px; font-weight: 700; line-height: 20px; border: 2px solid #fff; }
.hw-panel { position: absolute; right: 0; bottom: 64px; width: min(380px, calc(100vw - 32px)); max-height: min(620px, calc(100vh - 110px)); display: flex; flex-direction: column; border-radius: 16px; background: var(--surface, #fff); box-shadow: var(--shadow-pop, 0 20px 50px rgba(30, 20, 50, .25)); overflow: hidden; }
.hw-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 16px; background: linear-gradient(135deg, #2E2A3A, #4A4258); color: #fff; }
.hw-head b { display: block; font-size: 15px; }
.hw-head small { display: block; font-size: 12px; opacity: .8; }
.hw-head .btn { color: #fff; }
.hw-tabs { display: flex; border-bottom: 1px solid var(--line); }
.hw-tabs button { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 10px 8px; border: 0; background: none; color: var(--muted); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; border-bottom: 2px solid transparent; position: relative; }
.hw-tabs button.is-on { color: var(--ink); border-bottom-color: var(--amber, #E8A33D); }
.hw-dot { width: 8px; height: 8px; border-radius: 50%; background: #D64545; }
.hw-body { padding: 14px 16px 16px; overflow-y: auto; }
.hw-body h3 { margin: 0 0 4px; font-size: 15px; }
.hw-intro { margin: 0 0 10px; font-size: 13px; color: var(--muted); }
.hw-steps { margin: 0 0 10px; padding-left: 20px; font-size: 13px; display: grid; gap: 6px; }
.hw-tip { display: flex; gap: 8px; align-items: flex-start; margin: 0 0 12px; padding: 8px 10px; border-radius: 10px; background: var(--amber-soft, #FFF4DE); color: var(--amber-ink, #8A5A00); font-size: 12.5px; }
.hw-tip .ic { flex: none; margin-top: 2px; }
.hw-guide { margin: 0 0 12px; border: 1px solid var(--line); border-radius: 10px; }
.hw-guide summary { display: flex; align-items: center; gap: 8px; padding: 9px 12px; font-size: 13px; font-weight: 600; cursor: pointer; }
.hw-guide .hw-steps { padding: 0 12px 4px 30px; }
.hw-ask { width: 100%; justify-content: center; }
.hw-chat { display: flex; flex-direction: column; gap: 10px; min-height: 320px; }
.hw-msgs { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; max-height: 360px; }
.hw-empty { margin: auto 0; text-align: center; font-size: 13px; color: var(--muted); }
.hw-msg { display: flex; flex-direction: column; align-items: flex-start; max-width: 86%; }
.hw-msg.is-mine { align-self: flex-end; align-items: flex-end; }
.hw-bubble { padding: 8px 12px; border-radius: 14px 14px 14px 4px; background: #F1EFF5; font-size: 13.5px; line-height: 1.4; white-space: normal; overflow-wrap: anywhere; }
.hw-msg.is-mine .hw-bubble { border-radius: 14px 14px 4px 14px; background: var(--amber, #E8A33D); color: #fff; }
.hw-msg small { margin-top: 3px; font-size: 11px; color: var(--muted); }
.hw-err { margin: 0; font-size: 12.5px; color: #B23B3B; }
.hw-form { display: flex; gap: 8px; align-items: flex-end; }
.hw-form textarea { flex: 1; resize: none; min-height: 42px; }
@media print { .hw { display: none; } }
@media (max-width: 640px) { .hw { right: 14px; bottom: 76px; } }
.hw-pop { position: absolute; right: 0; bottom: 64px; display: grid; gap: 2px; width: 240px; padding: 10px 14px; border: 0; border-radius: 14px 14px 4px 14px; background: #2E2A3A; color: #fff; text-align: left; font: inherit; box-shadow: 0 12px 30px rgba(30, 20, 50, .3); cursor: pointer; animation: hw-pop .3s ease-out; }
.hw-pop b { font-size: 13.5px; }
.hw-pop span { font-size: 12px; opacity: .8; }
.hw.is-open .hw-pop { display: none; }
@keyframes hw-pop { from { transform: translateY(10px); opacity: 0; } to { transform: none; opacity: 1; } }

.hw-fab-ic path { fill: #fff; }
.hw-search { position: relative; margin-bottom: 12px; }
.hw-search .ic { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--muted); }
.hw-search .input { padding-left: 32px; }
.hw-label { margin: 0 0 6px; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.hw-none { font-size: 13px; color: var(--muted); }
.hw-tours { display: grid; gap: 6px; margin-bottom: 14px; }
.hw-tour { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface, #fff); color: var(--ink); text-align: left; font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.hw-tour:hover { border-color: var(--amber, #E8A33D); background: var(--amber-soft, #FFF4DE); }
.hw-tour small { display: block; font-weight: 400; font-size: 12px; color: var(--muted); }
.hw-tour > .ic:first-child { color: var(--amber, #E8A33D); }
.hw-art summary { font-weight: 600; }
.hw-art-body { padding: 0 12px 10px; font-size: 13px; line-height: 1.5; }
.hw-art-body p { margin: 0 0 8px; }
.hw-art-body ul, .hw-art-body ol { margin: 0 0 8px; padding-left: 20px; }
/* Visite guidée */
html.tour-on .hw { display: none; }
.tour-block { position: fixed; inset: 0; z-index: 900; }
.tour-block.is-pass { pointer-events: none; }
.tour-spot { position: fixed; z-index: 901; border-radius: 12px; box-shadow: 0 0 0 9999px rgba(18, 12, 30, .62), 0 0 0 3px var(--amber, #E8A33D); pointer-events: none; transition: top .25s, left .25s, width .25s, height .25s; }
.tour-tip { position: fixed; z-index: 902; width: min(340px, calc(100vw - 24px)); padding: 14px 16px; border-radius: 14px; background: #fff; color: #1c1823; box-shadow: 0 20px 50px rgba(0, 0, 0, .3); }
.tour-tip.is-center { top: 50% !important; left: 50% !important; transform: translate(-50%, -50%); }
.tour-top { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 12px; color: #77707f; }
.tour-top b { flex: 1; font-weight: 600; }
.tour-n { padding: 2px 8px; border-radius: 999px; background: var(--amber-soft, #FFF4DE); color: var(--amber-ink, #8A5A00); font-weight: 700; }
.tour-x { border: 0; background: none; font-size: 20px; line-height: 1; color: #77707f; cursor: pointer; }
.tour-tip h4 { margin: 0 0 4px; font-size: 16px; }
.tour-tip p { margin: 0 0 10px; font-size: 13.5px; line-height: 1.45; }
.tour-miss { color: #9a6a00; font-size: 12.5px !important; }
.tour-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tour-dots { flex: 1; display: flex; gap: 4px; }
.tour-dots i { width: 6px; height: 6px; border-radius: 50%; background: #ddd8e3; }
.tour-dots i.is-on { background: var(--amber, #E8A33D); width: 16px; border-radius: 3px; }
.tour-hint { order: 3; flex-basis: 100%; font-size: 12.5px; font-weight: 600; color: var(--amber-ink, #8A5A00); }
.role-chips { margin-top: 8px; }
.role-chips span { padding: 5px 11px; font-size: 13px; }
.cost-open { margin-top: 10px; }
.dlg-costs { width: min(640px, calc(100vw - 24px)); }
.cost-list { display: grid; gap: 2px; margin-top: 12px; max-height: 60vh; overflow: auto; }
.cost-row { display: flex; align-items: center; gap: 12px; padding: 10px 2px; border-bottom: 1px solid var(--line); }
.cost-row.is-child { padding-left: 18px; }
.cost-row strong { display: block; font-size: 14px; }
.cost-row small { display: block; font-size: 12px; }
.cost-in { display: inline-flex; align-items: center; gap: 6px; flex: none; }
.cost-in .input { width: 100px; text-align: right; }
.cost-in > span { color: var(--muted); font-size: 12.5px; white-space: nowrap; }
.cost-in.is-fixed .input { box-shadow: inset 0 0 0 1.5px var(--amber); background: var(--amber-soft); }
.cost-reset { display: inline-flex; align-items: center; gap: 4px; margin-top: 4px; padding: 0; border: 0; background: none; color: var(--violet-ink, #5b3fa0); font-weight: 600; font-size: 12px; cursor: pointer; }
.cost-row > .grow { flex: 1; min-width: 0; }
.margin-head-r { display: flex; align-items: center; gap: 8px; }
.doc-costs { margin-top: 10px; }
.hw-tour-play { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--amber, #F2B705); color: #2E2200; font-size: 10px; flex: none; }
.sim dl > div.note { font-size: 12px; color: var(--muted); padding-left: 10px; margin-top: -3px; }
/* Conversation sous une surprise des témoins (CRM, Espace équipe, espace témoins) */
.wt { margin-top: 10px; }
.wt-list { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 8px; }
.wt-msg { display: flex; flex-direction: column; align-items: flex-start; max-width: 88%; }
.wt-msg.is-mine { align-items: flex-end; margin-left: auto; }
.wt-bubble { padding: 8px 12px; border-radius: 14px 14px 14px 4px; background: #f3f0f6; color: inherit; font-size: 13.5px; line-height: 1.45; overflow-wrap: anywhere; }
.wt-msg.is-team .wt-bubble { background: #FFF4CC; }
.wt-msg.is-mine .wt-bubble { border-radius: 14px 14px 4px 14px; }
.wt-msg small { font-size: 11.5px; color: var(--muted, #8a8494); margin-top: 3px; }
.wt-form { display: flex; gap: 8px; align-items: flex-end; }
.wt-form textarea { flex: 1; min-height: 38px; resize: vertical; font: inherit; font-size: 13.5px; }
.wt-form .btn { flex: none; }
/* Équipe : cartes des membres */
.tmv-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px 20px 0; }
.tmv-bar .input-sm { width: auto; }
.tm-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; padding: 14px 20px 20px; }
.tmc { display: flex; flex-direction: column; gap: 8px; padding: 14px; border-radius: 14px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); color: inherit; text-decoration: none; transition: box-shadow .15s, transform .15s; min-width: 0; }
.tmc:hover { box-shadow: inset 0 0 0 1.5px var(--amber), 0 6px 16px -10px rgba(0,0,0,.25); transform: translateY(-1px); }
.tmc[hidden] { display: none; }
.tmc.is-off { opacity: .55; }
.tmc-top { display: flex; align-items: center; justify-content: space-between; }
.tmc-n { text-align: right; line-height: 1.1; }
.tmc-n b { display: block; font-size: 20px; }
.tmc-n small { font-size: 11px; color: var(--muted); }
.tmc strong { font-size: 14.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tmc-posts { display: flex; flex-wrap: wrap; gap: 4px; min-height: 26px; }
.tmc-foot { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: auto; }
/* Fiche membre : stats par poste et agenda */
.post-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; padding: 16px 20px 20px; }
.post-stat { padding: 14px; border-radius: 14px; box-shadow: inset 0 0 0 1px var(--line); display: grid; gap: 8px; }
.post-stat-h { display: flex; align-items: center; gap: 10px; }
.post-stat-h strong { display: block; font-size: 15px; }
.post-stat-h small { color: var(--muted); font-size: 12px; }
.post-stat-bar { height: 6px; border-radius: 99px; background: var(--sunken, #f1eef4); overflow: hidden; }
.post-stat-bar span { display: block; height: 100%; background: var(--c); border-radius: 99px; }
.post-stat dl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin: 0; }
.post-stat dt { font-size: 10.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }
.post-stat dd { margin: 0; font-weight: 700; font-size: 14px; }
.mini-cal-nav { display: flex; align-items: center; gap: 8px; }
.mini-cal-nav b { min-width: 130px; text-align: center; }
.mcal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 1px; background: var(--line); border-top: 1px solid var(--line); }
.mcal-wd { background: var(--surface); padding: 6px 8px; font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; }
.mcal-d { background: var(--surface); min-height: 84px; padding: 5px; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.mcal-d.is-out { background: var(--sunken, #faf9fc); }
.mcal-d.is-out .mcal-n { opacity: .45; }
.mcal-d.is-today .mcal-n { background: var(--amber); color: var(--amber-ink, #2e2200); border-radius: 50%; width: 22px; height: 22px; display: grid; place-items: center; }
.mcal-n { font-size: 12px; font-weight: 700; }
.mcal-ev { display: block; padding: 2px 6px; border-radius: 6px; font-size: 11.5px; font-weight: 600; color: #fff; background: var(--c); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-decoration: none; }
.mcal-ev.is-wait { background: transparent; color: var(--c); box-shadow: inset 0 0 0 1.5px var(--c); }
.mcal-ev.is-off { opacity: .4; text-decoration: line-through; }
@media (max-width: 640px) { .mcal-d { min-height: 56px; } .mcal-ev { font-size: 0; padding: 0; height: 6px; } }
.pager { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 20px; border-top: 1px solid var(--line); }
.pager[hidden] { display: none; }
.rows > li[hidden] { display: none; }
.crew-person { flex-wrap: wrap; }
.crew-pp { display: inline-flex; align-items: center; gap: 5px; padding: 2px 8px 2px 2px; border-radius: 999px; background: var(--sunken, #f4f2f7); }
.crew-pp img, .crew-pp i { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; display: grid; place-items: center; font-style: normal; font-size: 10px; font-weight: 700; background: #B98A00; color: #fff; }

/* Abonnement : prix mis en avant et détail rangé par familles */
.sub-price { margin: 10px 0 0; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.sub-price b { font-size: 34px; line-height: 1; color: #fff; font-variant-numeric: tabular-nums; }
.sub-price small { font-size: 13px; color: var(--night-muted); }
.sub-detail .sub-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; padding: 18px 20px; }
.sub-group { background: var(--sunken); border-radius: var(--r-md, 12px); padding: 14px 16px; }
.sub-group h3 { display: flex; align-items: center; gap: 6px; margin: 0 0 10px; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.sub-item { display: flex; justify-content: space-between; gap: 10px; font-size: 14px; padding: 3px 0; }
.sub-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.sub-chip { display: inline-flex; align-items: baseline; gap: 6px; flex-wrap: wrap; padding: 6px 12px; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); font-size: 13.5px; }
.sub-chip b { font-weight: 700; }
.sub-chip small { color: var(--muted); font-size: 12px; }
.sub-chip s { color: var(--muted); font-size: 12px; }
.sub-chip.is-trial { background: var(--green-soft, #E8F4EC); border-color: transparent; }
.sub-chip.is-gift { background: #FFF3D6; border-color: transparent; }
.sub-total { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 22px; padding: 14px 20px; border-top: 1px solid var(--line); background: var(--sunken); border-radius: 0 0 var(--r-lg) var(--r-lg); font-size: 14px; color: var(--ink-2); }
.sub-total-end { margin-left: auto; font-size: 15px; color: var(--ink); }
.sub-total-end b { font-size: 18px; }
@media (max-width: 640px) { .sub-total-end { margin-left: 0; width: 100%; } }
.sub-chip.is-trial { border-radius: 12px; flex-direction: column; align-items: flex-start; gap: 1px; }

/* Journal des e-mails : suppression (poubelle, sélection) */
.mail-del { display: inline-flex; margin: 0; }
.rows li .mail-del { margin-left: 6px; opacity: .55; }
.rows li:hover .mail-del, .rows li .mail-del:focus-within { opacity: 1; }
.w-check { width: 36px; }
.mail-bulk-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px; background: var(--sunken); border-bottom: 1px solid var(--line); font-size: 14px; }
.mail-bulk-bar[hidden] { display: none; }

/* Devis & factures : où en est l'argent (encaissé, en attente, en retard) */
.money-split { padding: 18px 20px; }
.ms-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.ms-head h2 { margin: 0; font-size: 17px; }
.ms-head p { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.ms-pct { font-family: var(--font-display); font-size: 28px; line-height: 1; color: var(--green); display: grid; justify-items: end; }
.ms-pct small { font-family: var(--font-ui); font-size: 12px; font-weight: 500; color: var(--muted); }
.ms-bar { display: flex; height: 14px; margin: 14px 0; border-radius: 999px; overflow: hidden; background: var(--sunken); }
.ms-bar span { display: block; height: 100%; transition: width .4s; }
.ms-bar .is-paid, .ms-legend .is-paid i { background: var(--green); }
.ms-bar .is-wait, .ms-legend .is-wait i { background: #F2B705; }
.ms-bar .is-late, .ms-legend .is-late i { background: var(--red); }
.ms-legend .is-draft i { background: var(--line-strong); }
.ms-legend { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin: 0; }
.ms-legend > div { padding: 10px 12px; border-radius: var(--r-md); background: var(--paper); }
.ms-legend dt { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--muted); }
.ms-legend dt i { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.ms-legend dd { margin: 3px 0 0; font-family: var(--font-display); font-size: 21px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ms-legend .is-late dd { color: var(--red); }
.ms-legend p { margin: 0; font-size: 12px; color: var(--muted); }
.ms-foot { margin: 12px 0 0; font-size: 13.5px; }
.ms-foot a { display: inline-flex; align-items: center; gap: 6px; }
.due-line { display: block; margin-top: 3px; font-size: 12px; color: var(--muted); white-space: nowrap; }
.due-line.is-late { color: var(--red); font-weight: 600; }
.vat-switch { margin-top: 8px; }
.vat-switch label { padding: 4px 12px; font-size: 12.5px; }

/* Agenda : prestations sans personne (deux sorties) et « aller à une date » */
.staff-alert-list li.sa-row { display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: var(--r-md); padding-right: 8px; }
.staff-alert-list li.sa-row:hover { border-color: var(--line-strong); background: var(--sunken); }
.staff-alert-list li.sa-row > a.sa-main { flex: 1; min-width: 0; border: 0; background: none; }
.sa-acts { display: flex; gap: 6px; flex: none; }
.staff-alert-list .sa-acts .btn { display: inline-flex; }
@media (max-width: 720px) { .sa-acts .btn span { display: none; } }
.cal-goto { position: relative; display: inline-flex; align-items: center; margin-left: 6px; }
.cal-goto-ic { position: absolute; left: 9px; color: var(--muted); pointer-events: none; display: flex; }
.cal-goto .input { padding-left: 30px; width: 170px; }
.cal-day.is-target { box-shadow: inset 0 0 0 2px var(--accent, #F2B705); background: color-mix(in srgb, #F2B705 10%, transparent); }
.staff-alert-list:has(.sa-row) { grid-template-columns: repeat(auto-fill, minmax(480px, 1fr)); }
@media (max-width: 1100px) { .staff-alert-list:has(.sa-row) { grid-template-columns: minmax(0, 1fr); } }
/* Inscription : options à essayer */
.opt-pick { display: grid; gap: 8px; margin-top: 6px; }
.opt-pick .check { align-items: flex-start; padding: 9px 12px; border: 1px solid var(--line-strong); border-radius: var(--r-md); }
.seg.seg-4 { display: flex; flex-wrap: wrap; }
.seg.seg-4 label { flex: 1 1 auto; justify-content: center; }
.signup-trial { margin: 4px 0 18px; }
.signup-trial .ic { color: var(--green, #1F9D55); }
