/* ═══════════════════════════════════════════════════════════════════
   assets/syn-notifs.css — centre de notifications (lot 23)

   .ncFond > .ncPanneau : le centre (panneau à droite ; plein écran sur
   téléphone). .ncBannieres : les bannières en bas de l'écran.
   .ncFond.ncPage : « Mes notifications ». Écrit par assets/notif-centre.js.
   ═══════════════════════════════════════════════════════════════════ */
:root.ncOuvert, :root.ncOuvert body { overflow: hidden; }
.ncFond { position: fixed; inset: 0; z-index: 2500; background: rgba(15,18,28,.28); font-family: Manrope, system-ui, -apple-system, "Segoe UI", sans-serif; color: #12161c; }
.ncFond[hidden] { display: none; }
.ncFond *, .ncBannieres * { box-sizing: border-box; }
:where(.ncFond, .ncBannieres) :where(button, input, select) { font-family: inherit; cursor: pointer; }
.ncAct, .ncF, .ncBt, .ncRegler, .ncFermer, .ncJour { color: #12161c; }
.ncPanneau { position: absolute; top: 12px; right: 12px; bottom: 12px; width: 460px; max-width: calc(100% - 24px); background: #fff; border: 1px solid #e3e7ee; border-radius: 20px; box-shadow: 0 24px 60px rgba(15,23,42,.16); display: flex; flex-direction: column; overflow: hidden; animation: ncEntre .22s ease-out; }
@keyframes ncEntre { from { transform: translateX(16px); opacity: 0; } to { transform: none; opacity: 1; } }
.ncTete { display: flex; align-items: center; gap: 8px; padding: 16px 16px 10px; }
.ncTete h2 { flex: 1; margin: 0; font-size: 20px; font-weight: 800; letter-spacing: -.01em; }
.ncFermer { width: 38px; height: 38px; border-radius: 10px; border: 1px solid #e3e7ee; background: #fff; display: none; place-items: center; flex: none; }
.ncAct { height: 32px; padding: 0 11px; border-radius: 9px; border: 1px solid #e3e7ee; background: #fff; font-size: 12.5px; font-weight: 700; white-space: nowrap; }
.ncAct:hover { border-color: #c9cfd9; }
.ncAct:disabled { opacity: .5; cursor: default; }
.ncAct.ncP { background: #6d28d9; border-color: #6d28d9; color: #fff; }
.ncCourt { display: none; }
.ncRoue { width: 34px; padding: 0; display: grid; place-items: center; }
.ncFiltres { display: flex; gap: 6px; padding: 0 16px 10px; overflow-x: auto; scrollbar-width: none; }
.ncF { height: 32px; padding: 0 12px; border-radius: 999px; border: 1px solid #e3e7ee; background: #fff; font-size: 12.5px; font-weight: 700; color: #4b5563; white-space: nowrap; flex: none; }
.ncF.on { background: #12161c; border-color: #12161c; color: #fff; }
.ncListe { flex: 1; overflow: auto; padding: 0 8px 12px; overscroll-behavior: contain; }
.ncGrp { padding: 12px 10px 6px; font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: #9ca3af; }
.ncIt, .ncAnnonce { position: relative; display: flex; gap: 12px; padding: 12px 10px; border-radius: 14px; }
.ncIt:hover { background: #f8fafc; }
.ncIt.nl { background: #faf8ff; }
.ncIt.urgent { box-shadow: inset 3px 0 0 #b91c1c; }
.ncAnnonce { border: 1px solid; margin: 0 2px 4px; }
.ncIco { width: 38px; height: 38px; border-radius: 11px; display: grid; place-items: center; flex: none; }
.ncTxt { flex: 1; min-width: 0; padding-right: 14px; }
.ncT { font-size: 14px; font-weight: 700; line-height: 1.35; overflow-wrap: anywhere; }
.ncNb { display: inline-block; padding: 0 6px; border-radius: 999px; background: #ede9fe; color: #4c1d95; font-size: 11.5px; font-weight: 800; vertical-align: 1px; }
.ncD { font-size: 13px; color: #4b5563; margin-top: 3px; line-height: 1.45; overflow-wrap: anywhere; white-space: pre-line; }
.ncPied { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; margin-top: 8px; }
.ncH { font-size: 12px; color: #9ca3af; font-weight: 600; margin-right: 2px; }
.ncSuppr { margin-left: auto; width: 28px; height: 28px; border: 0; border-radius: 8px; background: none; color: #9ca3af; display: grid; place-items: center; opacity: 0; }
.ncIt:hover .ncSuppr, .ncSuppr:focus-visible { opacity: 1; }
.ncSuppr:hover { background: #f1f2f6; color: #b91c1c; }
.ncSous { margin: 8px 0 0; padding: 0 0 0 14px; font-size: 12.5px; color: #4b5563; display: flex; flex-direction: column; gap: 3px; }
.ncPt { position: absolute; top: 18px; right: 10px; width: 9px; height: 9px; border-radius: 50%; background: #6d28d9; }
.ncVide { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 48px 20px; text-align: center; color: #6b7280; font-size: 13px; }
.ncVide b { color: #12161c; font-size: 15px; }
.ncRegler { margin: 0 16px 14px; height: 44px; border-radius: 12px; border: 1px solid #e3e7ee; background: #fff; font-size: 14px; font-weight: 700; flex: none; }
.ncFond button:focus-visible, .ncBan:focus-visible, .ncBannieres button:focus-visible { outline: 3px solid #c4b5fd; outline-offset: 2px; }

/* Bannières */
.ncBannieres { position: fixed; left: 24px; bottom: 22px; z-index: 2400; display: flex; flex-direction: column; gap: 10px; width: 380px; max-width: calc(100% - 32px); font-family: Manrope, system-ui, -apple-system, "Segoe UI", sans-serif; }
.ncBan { display: flex; gap: 12px; align-items: flex-start; padding: 14px; border-radius: 16px; background: #12161c; color: #fff; box-shadow: 0 16px 40px rgba(15,23,42,.3); cursor: pointer; animation: ncMonte .25s ease-out; }
.ncBan .ncIco { background: #2b2f38; width: 36px; height: 36px; }
.ncBan .ncTxt { padding: 0; }
.ncBan b { font-size: 14px; display: block; overflow-wrap: anywhere; }
.ncBan .ncTxt div { font-size: 13px; color: #cbd5e1; margin-top: 2px; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.ncBan .ncH { color: #94a3b8; flex: none; }
.ncBanX { width: 26px; height: 26px; border: 0; border-radius: 8px; background: none; color: #94a3b8; display: grid; place-items: center; flex: none; }
.ncBan.ncSort { opacity: 0; transform: translateY(8px); transition: opacity .2s, transform .2s; }
@keyframes ncMonte { from { transform: translateY(10px); opacity: 0; } to { transform: none; opacity: 1; } }

/* Mes notifications */
.ncPage { background: #f4f6fa; overflow: auto; }
.ncPageIn { max-width: 1240px; margin: 0 auto; padding: 22px 28px 28px; }
.ncPageTete { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding-bottom: 14px; }
.ncPageTitre { flex: 1; min-width: 260px; }
.ncPageTitre h1 { margin: 0; font-size: 24px; font-weight: 800; letter-spacing: -.02em; }
.ncPageTitre p { margin: 3px 0 0; font-size: 13px; color: #6b7280; }
.ncBt { height: 40px; padding: 0 14px; border-radius: 10px; border: 1px solid #e3e7ee; background: #fff; font-size: 13.5px; font-weight: 700; }
.ncBtP { background: #6d28d9; border-color: #6d28d9; color: #fff; }
.ncEtat { font-size: 13px; font-weight: 700; color: #b45309; }
.ncPageCorps { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 18px; align-items: start; }
.ncCol { display: flex; flex-direction: column; gap: 14px; }
.ncCarte { background: #fff; border: 1px solid #e3e7ee; border-radius: 16px; padding: 18px 20px; }
.ncLg { display: grid; grid-template-columns: minmax(0, 1fr) repeat(4, 84px); align-items: center; gap: 8px; padding: 8px 0; border-top: 1px solid #f1f3f7; }
.ncLg:first-child { border-top: 0; padding-top: 0; }
.ncLg > div b { font-size: 14px; display: block; }
.ncLg > div small { font-size: 12.5px; color: #6b7280; }
.ncLg > span { display: flex; justify-content: center; }
.ncTh { font-size: 11.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #9ca3af; text-align: center; }
.ncMasque { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.ncCase { width: 30px; height: 30px; border-radius: 9px; border: 2px solid #d9dee7; background: #fff; display: grid; place-items: center; padding: 0; }
.ncCase.on { background: #6d28d9; border-color: #6d28d9; }
.ncCase.fixe { background: #f2ecfc; border-color: #ddd6fe; cursor: default; }
.ncCase.na { border-style: dashed; color: #9ca3af; cursor: default; font-weight: 800; }
.ncNote { margin: 12px 0 0; font-size: 12.5px; color: #b45309; font-weight: 600; }
.ncCT { font-size: 15px; }
.ncCS { font-size: 12.5px; color: #6b7280; margin: 3px 0 8px; }
.ncLigneC { display: flex; align-items: center; gap: 10px; min-height: 40px; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.ncLigneC input { width: 20px; height: 20px; accent-color: #6d28d9; margin: 0; flex: none; }
.ncHeures { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; flex-wrap: wrap; margin: 4px 0 8px; }
.ncHeures input, .ncHeures select { height: 38px; border: 1px solid #d9dee7; border-radius: 9px; padding: 0 9px; font: 600 13.5px Manrope, system-ui, sans-serif; background: #fff; color: #12161c; }
.ncHeures select { flex: 1; min-width: 0; }
.ncJours { display: flex; gap: 6px; }
.ncJour { width: 36px; height: 36px; border-radius: 50%; border: 1px solid #e3e7ee; background: #fff; font-size: 12.5px; font-weight: 800; color: #6b7280; }
.ncJour.on { background: #12161c; border-color: #12161c; color: #fff; }

@media (max-width: 900px) { .ncPageCorps { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) {
  .ncFond:not(.ncPage) { background: #fff; }
  .ncPanneau { inset: 0; width: auto; max-width: none; border: 0; border-radius: 0; box-shadow: none; animation: none; }
  .ncFermer { display: grid; }
  .ncTete .ncRoue { display: none; }
  .ncLong { display: none; } .ncCourt { display: inline; }
  .ncSuppr { opacity: 1; }
  .ncBannieres { left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); width: auto; max-width: none; }
  .ncPageIn { padding: 16px 14px 24px; }
  .ncPageTete .ncBtP { order: 3; width: 100%; }
  .ncLg { grid-template-columns: minmax(0, 1fr) repeat(4, 44px); gap: 4px; }
  .ncTh { font-size: 9.5px; letter-spacing: 0; }
  .ncCarte { padding: 16px 14px; }
}
@media (prefers-reduced-motion: reduce) { .ncPanneau, .ncBan { animation: none; } .ncBan.ncSort { transition: none; } }
:root.anims-off .ncPanneau, :root.anims-off .ncBan { animation: none; }
