/* Planning général des événements · Mairie du Plan-de-la-Tour — styles communs (coquille et composants).
   Les styles propres aux vues du planning sont dans planning.css. */
:root{
  --bleu:#005596;--nuit:#003A66;--nuit-2:#00305A;--jaune:#FFD86D;--jaune-pale:#FFF3CC;--rouge:#C8162C;--rouge-pale:#FDECEE;--ardoise:#495963;
  --encre:#14212B;--encre-2:#2A3B47;--muted:#55656F;--fond:#F4F6F8;--papier:#FFFFFF;--papier-2:#F8FAFB;
  --bord:#DCE2E7;--bord-2:#E8EDF1;--champ:#B9C4CC;
  --ok:#1F6B3F;--ok-bg:#E5F3EA;--warn:#7A4A00;--warn-bg:#FFF2D9;--danger:#A3122A;--danger-bg:#FDECEE;--danger-bd:#E8B9C0;
  --info-bg:#EEF5FB;--info-bd:#C9DDEE;
  --vac:#2E8B9A;--vac-bg:#E3F3F5;--we:#EEF1F4;--ferie-bg:#FDEFF1;
  --r:8px;--r-lg:12px;--ombre:0 1px 2px rgba(20,33,43,.05);--ombre-2:0 10px 30px -8px rgba(20,33,43,.18),0 2px 6px rgba(20,33,43,.06);
  --ease:cubic-bezier(.2,.7,.2,1);--nav-w:248px
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}
body{margin:0;min-height:100vh;background:var(--fond);color:var(--encre);font:15px/1.5 "Source Sans 3",-apple-system,"Segoe UI",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--bleu)}a:hover{color:var(--nuit)}
h1,h2,h3,h4{margin:0;line-height:1.2}
p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--bleu);outline-offset:2px}
[hidden]{display:none!important}
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ic{width:18px;height:18px;flex:none}
.skip{position:absolute;left:-999px;top:8px;z-index:100;background:var(--nuit);color:#fff;padding:8px 14px;border-radius:var(--r)}
.skip:focus{left:8px}

/* ---------- Coquille ---------- */
.shell{display:flex;min-height:100vh}
.sidenav{position:sticky;top:0;height:100vh;width:var(--nav-w);flex:none;background:var(--nuit);color:#D5E3EE;display:flex;flex-direction:column;padding:16px 12px 12px;gap:8px;overflow-y:auto;overflow-x:hidden;z-index:30}
body.nav-anim .sidenav{transition:width .22s var(--ease)}
.nav-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 14px;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:4px}
.nav-brand img{width:28px;height:36px;object-fit:contain;flex:none}
.nav-brand b{display:block;font-family:"Barlow Condensed",sans-serif;font-size:21px;font-weight:700;color:#fff;line-height:1.05;white-space:nowrap}
.nav-brand small{display:block;font-size:12.5px;color:#9FBBD3;white-space:nowrap}
.nav-links{display:flex;flex-direction:column;gap:2px}
.nav-sect{margin:12px 10px 4px;font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#8EADC8;white-space:nowrap}
.sidenav a,.nav-demo button{display:flex;align-items:center;gap:12px;min-height:36px;padding:0 10px;border-radius:var(--r);color:#D5E3EE;text-decoration:none;white-space:nowrap;transition:background .15s var(--ease),color .15s var(--ease)}
.sidenav a:hover{background:rgba(255,255,255,.08);color:#fff}
.sidenav a[aria-current=page]{background:var(--jaune);color:var(--nuit);font-weight:700}
.sidenav a span,.nav-demo button span{overflow:hidden;text-overflow:ellipsis;max-width:180px;transition:max-width .22s var(--ease),opacity .2s}
.nav-demo{margin-top:auto;display:flex;flex-direction:column;gap:4px;border-top:1px solid rgba(255,255,255,.1);padding-top:6px}
.nav-demo select{min-height:36px;margin:0 4px 4px;border-radius:6px;border:1px solid rgba(255,255,255,.22);background:var(--nuit-2);color:#fff;padding:0 8px;font-size:13.5px}
.nav-demo button{border:0;background:transparent;cursor:pointer;font-size:14px;min-height:36px;text-align:left}
.nav-demo button:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-collapse{align-self:flex-end;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r);border:1px solid rgba(255,255,255,.18);background:transparent;color:#D5E3EE;cursor:pointer}
.nav-collapse:hover{background:rgba(255,255,255,.08)}
body.nav-collapsed{--nav-w:68px}
body.nav-collapsed .sidenav a span,body.nav-collapsed .nav-demo button span{max-width:0;opacity:0}
body.nav-collapsed .nav-brand span,body.nav-collapsed .nav-sect,body.nav-collapsed .nav-demo select{display:none}
body.nav-collapsed .nav-collapse{align-self:center;transform:rotate(180deg)}
body.nav-collapsed .sidenav a,body.nav-collapsed .nav-demo button{justify-content:center;padding:0}

.frame{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;min-height:60px;padding:8px 28px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--bord)}
.topbar-title{flex:1;min-width:0;font-weight:600;color:var(--encre-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-title span{color:var(--muted);font-weight:400}
.topbar .nav-open{display:none}
.usermenu{position:relative}
.who{display:flex;align-items:center;gap:10px;border:0;background:transparent;cursor:pointer;padding:4px 8px;border-radius:var(--r);text-align:left}
.who:hover{background:var(--fond)}
.who-txt b{display:block;font-size:14px;line-height:1.2}
.who-txt small{display:block;font-size:12.5px;color:var(--muted);line-height:1.2}
.avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#fff;background:var(--bleu);flex:none}
.avatar.admin{background:var(--rouge)}.avatar.viewer{background:var(--ardoise)}
.menu{position:absolute;right:0;top:calc(100% + 6px);min-width:210px;background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);box-shadow:var(--ombre-2);padding:6px;display:flex;flex-direction:column;animation:pop .16s var(--ease)}
.menu a,.menu button{display:flex;align-items:center;gap:10px;min-height:38px;padding:0 10px;border:0;background:none;border-radius:6px;color:var(--encre);text-decoration:none;cursor:pointer;text-align:left}
.menu a:hover,.menu button:hover{background:var(--fond)}
.menu .danger{color:var(--danger)}
main.content{flex:1;width:100%;max-width:1480px;margin:0 auto;padding:28px;display:flex;flex-direction:column;gap:20px;animation:fade .25s var(--ease);outline:none}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:translateY(-4px)}}

@media (max-width:900px){
  .sidenav{position:fixed;left:0;top:0;transform:translateX(-100%);transition:transform .22s var(--ease);width:268px;box-shadow:var(--ombre-2)}
  body.nav-mobile-open .sidenav{transform:none}
  body.nav-collapsed{--nav-w:248px}
  body.nav-collapsed .sidenav a span,body.nav-collapsed .nav-demo button span{max-width:180px;opacity:1}
  body.nav-collapsed .nav-brand span,body.nav-collapsed .nav-sect{display:block}
  body.nav-collapsed .nav-demo select{display:block}
  body.nav-collapsed .sidenav a,body.nav-collapsed .nav-demo button{justify-content:flex-start;padding:0 10px}
  .nav-collapse{display:none}
  .topbar .nav-open{display:inline-flex}
  .topbar{padding:8px 16px}
  .topbar-title span,.who-txt,.topbar .btn span{display:none}
  main.content{padding:20px 16px}
}

/* ---------- En-tête de page ---------- */
.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 24px}
.page-head>div:first-child{flex:1 1 320px;min-width:0}
.kicker{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.02em}
h1.titre{margin-top:2px;font-family:"Barlow Condensed",sans-serif;font-weight:700;font-size:34px;color:var(--nuit);letter-spacing:.005em}
.lead{margin-top:4px;color:var(--muted);max-width:72ch}
.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
@media (max-width:640px){h1.titre{font-size:28px}}

/* ---------- Blocs ---------- */
.card{background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);padding:20px;display:flex;flex-direction:column;gap:14px;min-width:0;box-shadow:var(--ombre)}
.card h2{font-size:17px;font-weight:700}
.card-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.card-head h2{flex:1}
.card-head .hint{flex-basis:100%}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 16px}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}
.sticky-col{position:sticky;top:80px;display:flex;flex-direction:column;gap:16px}
@media (max-width:1100px){.cols{grid-template-columns:1fr}.sticky-col{position:static}}
@media (max-width:640px){.grid-2,.grid-3{grid-template-columns:1fr}}
.hint{font-size:13px;color:var(--muted)}
.sep{border-top:1px solid var(--bord-2);margin:4px 0}
.notice{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;font-size:14px;border:1px solid}
.notice .ic{margin-top:1px}
.notice>div{flex:1;min-width:0}
.notice-info{background:var(--info-bg);border-color:var(--info-bd);color:#1E3445}
.notice-warn{background:var(--warn-bg);border-color:#F3D9A4;color:#4B3100}
.notice-alert{background:var(--danger-bg);border-color:var(--danger-bd);color:#5E0B18}
.notice-ok{background:var(--ok-bg);border-color:#BFE0CB;color:#163F27}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.kpi{background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);padding:14px 16px}
.kpi b{display:block;font-family:"Barlow Condensed",sans-serif;font-size:30px;line-height:1.1;color:var(--nuit)}
.kpi span{font-size:13px;color:var(--muted)}

/* ---------- Boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border-radius:var(--r);border:1px solid transparent;background:var(--bleu);color:#fff;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s var(--ease),border-color .15s,transform .1s}
.btn:hover{background:var(--nuit);color:#fff}
.btn:active{transform:translateY(1px)}
.btn[disabled],.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}
.btn-sm{min-height:34px;padding:0 12px;font-size:14px}
.btn-ghost,.btn-outline{background:var(--papier);color:var(--encre);border-color:var(--bord)}
.btn-ghost:hover,.btn-outline:hover{background:var(--fond);color:var(--encre);border-color:var(--champ)}
.btn-ghost{border-color:transparent;background:transparent}
.btn-danger{background:var(--danger)}.btn-danger:hover{background:#7E0C20}
.btn-warn{background:#B26A00}.btn-warn:hover{background:#8C5300}
.btn-success{background:var(--ok)}.btn-success:hover{background:#164F2E}
.btn-yellow{background:var(--jaune);color:var(--nuit)}.btn-yellow:hover{background:#F5C94A;color:var(--nuit)}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--r);border:1px solid transparent;background:transparent;color:var(--encre-2);cursor:pointer;flex:none}
.icon-btn:hover{background:var(--fond)}
.btn-group{display:inline-flex;border:1px solid var(--bord);border-radius:var(--r);background:var(--papier);padding:3px;gap:2px}
.btn-group button{border:0;background:transparent;min-height:32px;padding:0 12px;border-radius:6px;cursor:pointer;font-weight:600;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.btn-group button:hover{color:var(--encre)}
.btn-group button[aria-pressed=true],.btn-group button[aria-selected=true]{background:var(--nuit);color:#fff}

/* ---------- Formulaires ---------- */
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field>label,.label{font-weight:600;font-size:14px}
.req{color:var(--rouge)}
.input,.field input:not([type=checkbox]):not([type=radio]):not([type=color]),.field select,.field textarea{width:100%;min-height:40px;padding:8px 12px;border:1px solid var(--champ);border-radius:var(--r);background:var(--papier);transition:border-color .15s,box-shadow .15s}
.field textarea{min-height:90px;resize:vertical}
.input:focus,.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--bleu);box-shadow:0 0 0 3px rgba(0,85,150,.18)}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--danger)}
.field-err{color:var(--danger);font-size:13px;font-weight:600}
.check{display:flex;align-items:flex-start;gap:10px;cursor:pointer;min-height:24px}
.check input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--bleu);flex:none}
.check small{display:block;color:var(--muted);font-size:13px}
.counter{font-size:12.5px;color:var(--muted);align-self:flex-end}
.search{position:relative;min-width:200px}
.search .ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted);width:16px;height:16px}
.search input{width:100%;min-height:38px;padding:6px 12px 6px 34px;border:1px solid var(--champ);border-radius:var(--r);background:var(--papier)}
.search input:focus{outline:none;border-color:var(--bleu);box-shadow:0 0 0 3px rgba(0,85,150,.18)}
.switch{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer}
.switch input{appearance:none;width:40px;height:22px;border-radius:999px;background:var(--champ);position:relative;cursor:pointer;transition:background .15s;flex:none;margin:0}
.switch input::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s var(--ease);box-shadow:0 1px 2px rgba(0,0,0,.2)}
.switch input:checked{background:var(--bleu)}
.switch input:checked::after{transform:translateX(18px)}

/* ---------- Tableaux ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--bord);border-radius:var(--r-lg);background:var(--papier)}
table.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--papier-2);padding:10px 14px;border-bottom:1px solid var(--bord);white-space:nowrap}
.tbl td{padding:10px 14px;border-bottom:1px solid var(--bord-2);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover{background:var(--papier-2)}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl .act{text-align:right;white-space:nowrap}
.sel-bar{position:sticky;bottom:12px;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;background:var(--nuit);color:#fff;border-radius:var(--r-lg);box-shadow:var(--ombre-2)}
.sel-bar .btn-ghost{color:#fff}.sel-bar .btn-ghost:hover{background:rgba(255,255,255,.1);color:#fff}

/* ---------- Badges, pastilles ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:12.5px;font-weight:600;background:var(--fond);color:var(--encre-2);border:1px solid var(--bord);white-space:nowrap}
.badge .ic{width:13px;height:13px}
.badge-confirmed{background:var(--ok-bg);color:var(--ok);border-color:#C3E2CE}
.badge-tentative{background:var(--warn-bg);color:var(--warn);border:1px dashed #D9A441}
.badge-cancelled{background:var(--fond);color:var(--muted);text-decoration:line-through}
.badge-public{background:var(--info-bg);color:var(--bleu);border-color:var(--info-bd)}
.badge-internal{background:var(--fond);color:var(--ardoise)}
.badge-role-admin{background:var(--rouge-pale);color:var(--danger);border-color:var(--danger-bd)}
.badge-role-programmer{background:var(--info-bg);color:var(--bleu);border-color:var(--info-bd)}
.badge-role-viewer{background:var(--fond);color:var(--ardoise)}
.badge-pending{background:var(--warn-bg);color:var(--warn);border-color:#F3D9A4}
.badge-disabled{background:var(--fond);color:var(--muted)}
.badge-highlight{background:var(--jaune-pale);color:#6B4D00;border-color:#F0D68A}
.cat-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 4px;border-radius:999px;background:color-mix(in srgb,var(--cat) 12%,#fff);color:var(--encre);font-size:13px;font-weight:600;white-space:nowrap;border:1px solid color-mix(in srgb,var(--cat) 30%,#fff)}
.cat-chip .ic{width:20px;height:20px;padding:3px;border-radius:50%;background:var(--cat);color:var(--cat-fg)}
.cat-chip.sm{font-size:12px;padding:1px 8px 1px 2px}.cat-chip.sm .ic{width:17px;height:17px;padding:2.5px}
.cat-dot{display:inline-flex;width:20px;height:20px;border-radius:50%;background:var(--cat);color:var(--cat-fg);align-items:center;justify-content:center;flex:none}
.cat-dot .ic{width:12px;height:12px}

/* ---------- Dialogues, panneau, toasts, aide ---------- */
dialog.dlg{border:0;border-radius:14px;padding:0;width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 48px);box-shadow:var(--ombre-2);color:var(--encre);display:flex;flex-direction:column}
dialog.dlg:not([open]){display:none}
dialog.dlg-wide{width:min(860px,calc(100vw - 32px))}
dialog.dlg::backdrop{background:rgba(20,33,43,.45);backdrop-filter:blur(2px)}
dialog.dlg[open]{animation:pop .18s var(--ease)}
.dlg-head{display:flex;align-items:center;gap:12px;padding:16px 16px 8px 20px}
.dlg-head h2{flex:1;font-size:19px;font-family:"Barlow Condensed",sans-serif;font-weight:700;color:var(--nuit)}
.dlg-body{padding:6px 20px 16px;overflow:auto;display:flex;flex-direction:column;gap:12px}
.dlg-foot{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 20px 16px;border-top:1px solid var(--bord-2)}
.drawer-back{position:fixed;inset:0;background:rgba(20,33,43,.35);opacity:0;transition:opacity .2s;z-index:60}
.drawer-back.in{opacity:1}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100vw);background:var(--papier);box-shadow:var(--ombre-2);z-index:61;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .22s var(--ease)}
.drawer.in{transform:none}
.drawer-head{display:flex;align-items:center;gap:10px;padding:16px 16px 10px 20px;border-bottom:1px solid var(--bord-2)}
.drawer-head h2{flex:1;font-size:20px;font-family:"Barlow Condensed",sans-serif;font-weight:700;color:var(--nuit)}
.drawer-body{flex:1;overflow:auto;padding:16px 20px;display:flex;flex-direction:column;gap:14px}
.drawer-foot{display:flex;flex-wrap:wrap;gap:8px;padding:12px 20px;border-top:1px solid var(--bord-2)}
#toasts{position:fixed;right:20px;bottom:20px;z-index:90;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}
.toast{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;background:var(--encre);color:#fff;box-shadow:var(--ombre-2);font-size:14px;animation:pop .2s var(--ease);transition:opacity .3s,transform .3s}
.toast .ic{color:#7FD3A0}
.toast-err{background:#5E0B18}.toast-err .ic{color:#FFB3BF}
.toast-warn .ic{color:var(--jaune)}
.toast.out{opacity:0;transform:translateY(6px)}
.info-tip{position:relative;display:inline-flex;vertical-align:middle;color:var(--muted);cursor:help}
.info-tip .ic{width:15px;height:15px}
.info-pop{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);width:max-content;max-width:280px;background:var(--encre);color:#fff;font-size:12.5px;font-weight:400;line-height:1.4;padding:8px 10px;border-radius:8px;opacity:0;pointer-events:none;transition:opacity .15s;z-index:50}
.info-tip:hover .info-pop,.info-tip:focus .info-pop{opacity:1}
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:40px 20px;color:var(--muted)}
.empty>.ic{width:34px;height:34px;color:var(--champ);margin-bottom:6px}
.empty-title{font-weight:700;color:var(--encre-2);font-size:16px}
.empty-text{max-width:46ch;font-size:14px}
.empty .btn{margin-top:10px}

/* Onglets */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--bord);overflow-x:auto}
.tabs [role=tab]{border:0;background:none;padding:10px 14px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs [role=tab]:hover{color:var(--encre)}
.tabs [role=tab][aria-selected=true]{color:var(--nuit);border-bottom-color:var(--jaune)}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Pastille de compteur dans le menu */
.sidenav a{position:relative}
.nav-badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--rouge);color:#fff;font-style:normal;font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.sidenav a[aria-current=page] .nav-badge{background:var(--nuit)}
body.nav-collapsed .nav-badge{position:absolute;top:2px;right:6px;min-width:16px;height:16px;font-size:10px;padding:0 4px}
/* Panneau : navigation jour → événement → retour */
.drawer-head{align-items:center}
.drawer-titles{flex:1;min-width:0;display:flex;flex-direction:column}
.drawer-titles h2{flex:none;overflow:hidden;text-overflow:ellipsis}
.drawer-crumb{align-self:flex-start;border:0;background:none;padding:0;font:inherit;font-size:12.5px;font-weight:600;color:var(--bleu);cursor:pointer;text-transform:none}
.drawer-crumb:hover{text-decoration:underline}
.drawer-backbtn{border:1px solid var(--bord);margin-left:-6px}
.drawer.swap{transition:none}
.drawer.swap .drawer-body{animation:fade .18s var(--ease)}
/* Fiche ouverte dans la fenêtre de saisie du planning plein écran */
body.framed main.content{padding:20px 24px;max-width:none}
body.framed{background:var(--fond)}

/* Responsive : tout conteneur qui défile devient le bloc de référence de ses éléments
   positionnés (libellés .sr-only, info-bulles). Sans cela, ils « sortent » du cadre
   et élargissent toute la page sur mobile. */
.table-wrap,.tabs,.dlg-body,.drawer-body,.fl-scroll,.yv-scroll,.wv-scroll,.pl-view,.rs-scroll,.vo,.lg-layers,.preview-tbl,.snippet,.sx-chips{position:relative}
html,body{max-width:100%;overflow-x:clip}
/* Info-bulles d'aide : retirées de la mise en page tant qu'elles ne sont pas affichées
   (sinon, au bord droit d'un écran étroit, elles élargissent la page). */
.info-pop{display:none}
.info-tip:hover .info-pop,.info-tip:focus .info-pop{display:block;opacity:1}
@media (max-width:640px){.info-pop{left:auto;right:-8px;transform:none;max-width:min(280px,calc(100vw - 48px))}}

/* Menu mobile : croix de fermeture et voile cliquable */
.nav-close{display:none;margin-left:auto;width:40px;height:40px;border-radius:var(--r);border:1px solid rgba(255,255,255,.2);background:transparent;color:#fff;align-items:center;justify-content:center;cursor:pointer;flex:none}
.nav-close:hover{background:rgba(255,255,255,.1)}
.nav-backdrop{display:none}
@media (max-width:900px){
  .nav-close{display:inline-flex}
  .nav-backdrop{display:block;position:fixed;inset:0;z-index:29;background:rgba(20,33,43,.45);opacity:0;pointer-events:none;transition:opacity .2s var(--ease)}
  body.nav-mobile-open .nav-backdrop{opacity:1;pointer-events:auto}
  body.nav-mobile-open{overflow:hidden}
  .sidenav{z-index:30;max-width:calc(100vw - 48px)}
  body:not(.nav-mobile-open) .sidenav{visibility:hidden;transition:transform .22s var(--ease),visibility 0s .22s}
  body.nav-mobile-open .sidenav{visibility:visible;transition:transform .22s var(--ease)}
}
/* Panneau latéral : une bande reste visible à gauche sur téléphone, pour le fermer en touchant à côté */
.drawer{width:min(440px,calc(100vw - 36px))}
.drawer-head .icon-btn,.dlg-head .icon-btn{width:40px;height:40px}
/* Messages : au-dessus de la barre d'actions groupées quand elle est affichée ; pleine largeur sur téléphone */
body:has(.sel-bar:not([hidden])) #toasts{bottom:110px}
@media (max-width:640px){#toasts{left:12px;right:12px;bottom:12px;max-width:none}body:has(.sel-bar:not([hidden])) #toasts{bottom:150px}}
