/* Vues du planning (annuelle, mois, semaine, liste), barre d'outils, légende, détail, impression. */

/* ---------- Barre d'outils ---------- */
.pl-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.pl-nav{display:flex;align-items:center;gap:4px;flex:1 1 300px;min-width:0}
.pl-arrow{border:1px solid var(--bord);background:var(--papier)}
.pl-arrow:hover{background:var(--fond)}
.pl-arrow[disabled]{opacity:.4;cursor:not-allowed}
.pl-label{margin-left:8px;font-family:"Barlow Condensed",sans-serif;font-size:24px;font-weight:700;color:var(--nuit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.pl-tools select.input{min-height:36px;padding:4px 30px 4px 10px;border:1px solid var(--champ);border-radius:var(--r);background:var(--papier);font-size:14px}
.pl-search{min-width:180px;width:210px}
.pl-search input{min-height:36px}
.pl-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;border-radius:999px;background:var(--bleu);color:#fff;font-size:12px;padding:0 6px}
.pl-export{position:relative}
.pl-export .menu{min-width:250px;z-index:25}
.pl-views button .ic{width:16px;height:16px}
@media (max-width:1100px){.pl-nav{flex-basis:100%;order:-1}}
@media (max-width:640px){
  .pl-views{width:100%}.pl-views button{flex:1;justify-content:center;padding:0 6px}
  .pl-tools{width:100%}.pl-search{flex:1 1 100%;width:auto;min-width:0;order:-1}
  .lg-cats,.lg-layers{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
  .lg-cat,.lg-layers li{flex:none;white-space:nowrap}
  .pl-label{font-size:20px}
}

/* ---------- Filtres ---------- */
.pl-filters{animation:pop .16s var(--ease)}
.fl-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.fl-grid fieldset{border:0;margin:0;padding:0;min-width:0;display:flex;flex-direction:column;gap:8px}
.fl-grid legend{font-weight:700;font-size:14px;padding:0;margin-bottom:6px}
.fl-sub{margin-top:10px}
.fl-list{display:flex;flex-direction:column;gap:6px}
.fl-scroll{max-height:216px;overflow:auto;padding-right:6px}
.fl-opt{font-size:14px;align-items:center}
.fl-opt .cat-dot{width:18px;height:18px}
.fl-find input{min-height:34px}
@media (max-width:1100px){.fl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.fl-grid{grid-template-columns:1fr}}

/* ---------- Légende ---------- */
.pl-legend{display:flex;flex-direction:column;gap:10px}
.lg-cats{display:flex;flex-wrap:wrap;gap:6px}
.lg-cat{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:2px 10px 2px 3px;border-radius:999px;border:1px solid color-mix(in srgb,var(--cat) 35%,#fff);background:color-mix(in srgb,var(--cat) 10%,#fff);font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s,background .15s,box-shadow .15s}
.lg-cat .ic{width:24px;height:24px;padding:4px;border-radius:50%;background:var(--cat);color:var(--cat-fg)}
.lg-cat .n{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.lg-cat:hover{background:color-mix(in srgb,var(--cat) 18%,#fff)}
.lg-cat[aria-pressed=true]{box-shadow:0 0 0 2px var(--cat);background:color-mix(in srgb,var(--cat) 20%,#fff)}
.lg-cat.off{opacity:.45}
.lg-layers{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;list-style:none;font-size:13px;color:var(--muted)}
.lg-layers li{display:inline-flex;align-items:center;gap:6px}
.sw{display:inline-flex;align-items:center;justify-content:center;width:18px;height:14px;border-radius:3px;font-style:normal;font-size:10px;font-weight:800}
.sw-hol{background:var(--ferie-bg);color:var(--rouge);box-shadow:inset 2px 0 0 var(--rouge)}
.sw-civ{background:#fff;border:1px solid var(--info-bd);position:relative}.sw-civ::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--bleu)}
.sw-vac{background:var(--vac)}
.sw-vac.ov,.yv-vac.ov,.mv-vac.ov,.pill-vac.ov{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.45) 0 3px,transparent 3px 7px)}
.sw-we{background:var(--we);border:1px solid var(--bord)}
.sw-tent{border:1.5px dashed var(--encre-2);background:#fff}
.sw-canc{background:repeating-linear-gradient(135deg,#C8D0D6 0 3px,#EEF1F4 3px 6px)}
.sw-star{width:16px;height:16px;color:#B98900;fill:var(--jaune)}

/* ---------- Événements (commun) ---------- */
.ev{font:inherit;cursor:pointer;border:0;text-align:left}
.ev:focus-visible{outline:2px solid var(--encre);outline-offset:1px;z-index:6}
.yv-ev,.mv-ev,.wv-ev{background:var(--cat);color:var(--cat-fg)}
.ev.st-tentative{border:1.5px dashed currentColor;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 5px,transparent 5px 10px)}
.ev.st-cancelled{opacity:.55;text-decoration:line-through;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.35) 0 4px,transparent 4px 8px)}
.ev.hl{box-shadow:0 0 0 2px var(--jaune),0 2px 6px rgba(20,33,43,.25)}
.ev .star{width:12px;height:12px;fill:var(--jaune);color:var(--jaune);flex:none}

/* ---------- Pastilles calques ---------- */
.pill-hol,.pill-civ,.pill-vac{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;border:1px solid}
.pill-hol>span,.pill-civ>span,.pill-vac>span{overflow:hidden;text-overflow:ellipsis}
.pill-hol{color:var(--rouge);background:#fff;border-color:#F0B7BF}
.pill-hol .ic,.pill-vac .ic{width:12px;height:12px}
.pill-civ{color:var(--bleu);background:#fff;border-color:var(--info-bd);font-weight:600}
.pill-vac{color:#0E4F58;background:var(--vac-bg);border-color:#BCE0E5;font-weight:600}

/* =====================================================================
   Vue annuelle
   ===================================================================== */
.yv{--rh:27px;--dz:34px;--vz:10px}
.yv-scroll{overflow-x:auto;background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);box-shadow:var(--ombre)}
.yv-scroll:focus-visible{outline-offset:-2px}
.yv-grid{min-width:1040px}
.yv-head,.yv-body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}
.yv-head{position:sticky;top:0}
.yv-mh{padding:8px 4px 6px;text-align:center;font-family:"Barlow Condensed",sans-serif;font-size:16px;font-weight:700;color:var(--nuit);text-transform:capitalize;border-bottom:2px solid var(--nuit);border-right:1px solid var(--bord);background:var(--papier-2);line-height:1.1}
.yv-mh small{display:block;font-family:"Source Sans 3",sans-serif;font-size:11px;font-weight:600;color:var(--muted)}
.yv-mh:last-child,.yv-col:last-child{border-right:0}
.yv-col{position:relative;display:grid;grid-template-rows:repeat(31,var(--rh));border-right:1px solid var(--bord)}
.yc{position:relative;display:flex;align-items:center;border-bottom:1px solid var(--bord-2);cursor:pointer;min-width:0}
.yc:hover{background:#EAF2F8}
.yc-d{width:var(--dz);flex:none;height:100%;display:flex;align-items:center;gap:2px;padding-left:4px;font-size:12px;font-variant-numeric:tabular-nums}
.yc-d i{font-style:normal;width:9px;font-size:10px;font-weight:600;color:var(--muted)}
.yc-d b{font-weight:600;min-width:15px;text-align:right}
.yc.we{background:var(--we)}
.yc.vac .yc-d{background:var(--vac-bg)}
.yc.hol{background:var(--ferie-bg);box-shadow:inset 3px 0 0 var(--rouge)}
.yc.hol .yc-d b{color:var(--rouge);font-weight:800}
.yc.today .yc-d b{background:var(--nuit);color:#fff;border-radius:4px;padding:0 2px}
.yc-civ{position:absolute;left:calc(var(--dz) - 7px);top:4px;width:6px;height:6px;border-radius:50%;background:var(--bleu);box-shadow:0 0 0 1.5px #fff}
.yc-void{background:repeating-linear-gradient(135deg,#F3F5F7 0 4px,#E9EDF0 4px 8px);border-bottom:1px solid transparent;cursor:default}
.yc-void:hover{background:repeating-linear-gradient(135deg,#F3F5F7 0 4px,#E9EDF0 4px 8px)}
.yv-vac{position:absolute;left:var(--dz);width:calc(var(--vz) - 2px);background:var(--vac);border-radius:3px;color:#fff;pointer-events:none;overflow:hidden;z-index:1}
.yv-vac span{display:block;writing-mode:vertical-rl;font-size:8.5px;font-weight:700;line-height:1;white-space:nowrap;padding:3px 0;letter-spacing:.02em;max-height:100%}
.yv-lanes{position:absolute;top:0;bottom:0;left:calc(var(--dz) + var(--vz));right:2px;pointer-events:none;z-index:2}
.yv-ev{position:absolute;pointer-events:auto;display:flex;align-items:flex-start;gap:3px;padding:2px 4px;border-radius:4px;font-size:11px;font-weight:600;line-height:1.12;overflow:hidden;min-width:0}
.yv-ev .ic{width:12px;height:12px;margin-top:1px;flex:none}
.yv-ev .lbl{overflow:hidden;word-break:break-word;hyphens:auto}
.yv-ev.m-h .lbl{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--clamp,8);word-break:normal;overflow-wrap:anywhere}
.yv-ev.m-h.multi{flex-direction:column;gap:2px}
.yv-ev.m-i{justify-content:center;align-items:center;padding:0}
.yv-ev.m-v{flex-direction:column;align-items:center;padding:3px 0}
.yv-ev.m-v .lbl{writing-mode:vertical-rl;font-size:10px;white-space:nowrap;text-overflow:ellipsis;max-height:100%}
.yv-ev.cb{border-top-left-radius:0;border-top-right-radius:0}
.yv-ev.ca{border-bottom-left-radius:0;border-bottom-right-radius:0}
.yv-ev.st-tentative::after{content:"?";position:absolute;right:1px;bottom:1px;width:11px;height:11px;border-radius:50%;background:#fff;color:var(--encre);font-size:9px;font-weight:800;line-height:11px;text-align:center;text-decoration:none}
.yv-hol{position:absolute;right:3px;margin-top:5px;height:calc(var(--rh) - 10px);display:flex;align-items:center;padding:0 3px;border-radius:3px;background:#fff;color:var(--rouge);border:1px solid #EDA7B1;font-size:9px;font-weight:800;line-height:1;z-index:3;pointer-events:none;white-space:nowrap;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.yv-hol.shift{right:30px}
.yv-more{position:absolute;right:2px;margin-top:4px;height:calc(var(--rh) - 8px);min-width:24px;padding:0 4px;border-radius:4px;border:1px solid var(--nuit);background:var(--nuit);color:#fff;font-size:10.5px;font-weight:800;z-index:4;cursor:pointer}
.yv-more:hover{background:var(--bleu)}

/* =====================================================================
   Vue mois
   ===================================================================== */
.mv{--mh-head:32px;--mh-vac:18px;--mh-lane:24px;--mh-more:22px;background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--ombre)}
.mv-dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--papier-2);border-bottom:1px solid var(--bord)}
.mv-dow div{padding:8px 10px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.mv-dow .abbr{display:none}
.mw{position:relative;min-height:124px;border-bottom:1px solid var(--bord)}
.mw:last-child{border-bottom:0}
.mw-bg{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.md{border-right:1px solid var(--bord-2);cursor:pointer;transition:background .1s}
.md:last-child{border-right:0}
.md:hover{background:#F2F7FB}
.md.we{background:var(--we)}
.md.hol{background:var(--ferie-bg)}
.md.out{background:#FAFBFC}
.md.sel{background:rgba(0,85,150,.14)!important;box-shadow:inset 0 0 0 2px rgba(0,85,150,.35)}
.mw-fg{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:3px;padding-bottom:8px;pointer-events:none}
.mw-fg>*{pointer-events:auto}
.md-head{display:flex;align-items:center;gap:5px;padding:4px 6px 0;min-width:0;pointer-events:none}
.md-head>*{pointer-events:auto}
.md-num{flex:none;min-width:28px;height:28px;padding:0 4px;border:0;border-radius:50%;background:transparent;font-weight:700;font-size:14px;cursor:pointer;font-variant-numeric:tabular-nums}
.md-num:hover{background:rgba(0,58,102,.08)}
.md-head.out .md-num{color:#9AA7B0}
.md-head.hol .md-num{color:var(--rouge)}
.md-head.today .md-num{background:var(--nuit);color:#fff}
.mv-vac{display:flex;align-items:center;gap:4px;margin:0 2px;padding:0 6px;border-radius:4px;background:var(--vac-bg);color:#0E4F58;border-left:3px solid var(--vac);font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;min-width:0}
.mv-vac .ic{width:12px;height:12px;flex:none}
.mv-vac span{overflow:hidden;text-overflow:ellipsis}
.mv-vac.cb{border-left-color:transparent;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}
.mv-vac.ca{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}
.mv-ev{display:flex;align-items:center;gap:5px;margin:0 4px;padding:0 7px;border-radius:5px;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;min-width:0;line-height:1}
.mv-ev .ic{width:14px;height:14px;flex:none}
.mv-ev .lbl{overflow:hidden;text-overflow:ellipsis;min-width:0}
.mv-ev .tag{flex:none;font-size:10.5px;font-weight:700;padding:1px 5px;border-radius:999px;background:rgba(255,255,255,.85);color:var(--encre);text-decoration:none}
.mv-ev .cont{width:12px;height:12px;opacity:.85}
.mv-ev.cb{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}
.mv-ev.ca{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}
.mv-more{justify-self:start;margin:0 6px;padding:0 6px;border:0;border-radius:4px;background:transparent;color:var(--bleu);font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.mv-more:hover{background:var(--info-bg);text-decoration:underline}
@media (max-width:900px){.md-head .pill-civ{display:none}}
@media (max-width:640px){
  .mv{--mh-head:28px;--mh-lane:22px;--mh-vac:14px}
  .mv-dow .full{display:none}.mv-dow .abbr{display:inline}
  .mv-dow div{padding:6px 4px;font-size:11px;letter-spacing:0;text-align:center}
  .mw{min-height:92px}
  .md-head{padding:2px 2px 0;justify-content:center}
  .md-num{min-width:24px;height:24px;font-size:13px}
  .md-head .pill-hol{padding:0;border:0;background:none}.md-head .pill-hol>span{display:none}
  .mv-ev{margin:0 1px;padding:0 3px;font-size:10.5px;gap:2px}
  .mv-ev .ic{width:11px;height:11px}.mv-ev .tag,.mv-ev .cont{display:none}
  .mv-vac{font-size:0;padding:0}.mv-vac .ic{display:none}
  .mv-more{font-size:11px;margin:0 2px;padding:0 2px}
}

/* =====================================================================
   Vue semaine
   ===================================================================== */
.wv{--mh-lane:26px;background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);box-shadow:var(--ombre);overflow:hidden}
.wv-scroll{overflow-x:auto}
.wv-grid{min-width:760px}
.wv-head,.wv-allday,.wv-body{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr))}
.wv-head{border-bottom:1px solid var(--bord);background:var(--papier-2)}
.wv-dh{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:8px;border-left:1px solid var(--bord-2);min-width:0}
.wv-dh.we{background:var(--we)}.wv-dh.hol{background:var(--ferie-bg)}
.wv-day{display:flex;align-items:baseline;gap:6px;border:0;background:none;cursor:pointer;padding:0;color:var(--muted);font-size:13px;font-weight:600;text-transform:capitalize}
.wv-day b{font-size:22px;color:var(--encre);font-family:"Barlow Condensed",sans-serif}
.wv-dh.hol .wv-day b{color:var(--rouge)}
.wv-dh.today .wv-day b{color:#fff;background:var(--nuit);border-radius:6px;padding:0 6px}
.wv-vac{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:#0E4F58;background:var(--vac-bg);border-left:3px solid var(--vac);padding:0 6px;border-radius:3px}
.wv-vac .ic{width:12px;height:12px}
.wv-allday{row-gap:3px;padding:6px 0;border-bottom:2px solid var(--bord);min-height:40px}
.wv-lab{grid-row:1/-1;grid-column:1;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;padding:6px 6px;letter-spacing:.04em}
.wv-bodywrap{max-height:min(620px,65vh);overflow-y:auto}
.wv-body{position:relative}
.wv-hours{grid-column:1;position:relative}
.wv-h{position:absolute;right:8px;font-size:11.5px;color:var(--muted);transform:translateY(-7px);font-variant-numeric:tabular-nums}
.wv-h:first-child{transform:none}
.wv-col{position:relative;border-left:1px solid var(--bord-2);background-image:repeating-linear-gradient(to bottom,transparent 0 calc(var(--hh) - 1px),var(--bord-2) calc(var(--hh) - 1px) var(--hh));cursor:pointer}
.wv-col.we{background-color:var(--we)}.wv-col.hol{background-color:var(--ferie-bg)}
.wv-ev{position:absolute;display:flex;flex-direction:column;gap:2px;padding:4px 6px;border-radius:6px;font-size:12px;font-weight:600;overflow:hidden;line-height:1.2;margin-left:2px}
.wv-ev .t{font-size:11px;opacity:.9;font-variant-numeric:tabular-nums}
.wv-ev .lbl{display:flex;gap:4px;align-items:flex-start}
.wv-ev .ic{width:13px;height:13px;flex:none;margin-top:1px}
.wv-ev .tag{align-self:flex-start;font-size:10.5px;font-weight:700;padding:0 5px;border-radius:999px;background:rgba(255,255,255,.85);color:var(--encre)}

/* =====================================================================
   Vue liste
   ===================================================================== */
.lv{display:flex;flex-direction:column;gap:18px}
.lv-month{background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);box-shadow:var(--ombre);overflow:hidden}
.lv-month h2{padding:12px 18px;background:var(--papier-2);border-bottom:1px solid var(--bord);font-family:"Barlow Condensed",sans-serif;font-size:22px;font-weight:700;color:var(--nuit)}
.lv-month h2 small{font-family:"Source Sans 3",sans-serif;font-size:13px;font-weight:600;color:var(--muted);margin-left:8px}
.lv-days{list-style:none;margin:0;padding:0}
.lv-day{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;padding:12px 18px;border-top:1px solid var(--bord-2)}
.lv-day:first-child{border-top:0}
.lv-day.we{background:#FAFBFC}
.lv-date{display:flex;flex-direction:column;align-items:center;line-height:1.1;color:var(--muted);font-size:12px;font-weight:600;text-transform:capitalize}
.lv-date b{font-family:"Barlow Condensed",sans-serif;font-size:28px;color:var(--encre)}
.lv-day.hol .lv-date b{color:var(--rouge)}
.lv-day.today .lv-date b{color:#fff;background:var(--nuit);border-radius:8px;padding:0 8px}
.lv-body{display:flex;flex-direction:column;gap:8px;min-width:0}
.lv-h{font-size:15px;font-weight:700;color:var(--encre-2)}
.lv-chips{display:flex;flex-wrap:wrap;gap:6px}
.lv-evs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.lv-ev{width:100%;display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;border:1px solid var(--bord);border-left:4px solid var(--cat);background:var(--papier);color:var(--encre);transition:background .15s,box-shadow .15s}
.lv-ev:hover{background:var(--papier-2);box-shadow:var(--ombre)}
.lv-ev.st-tentative{border-style:dashed;border-left-style:solid;background-image:none}
.lv-ev.st-cancelled{opacity:.6;background-image:none}
.lv-ev.st-cancelled .lv-title{text-decoration:line-through}
.lv-ev.hl{box-shadow:inset 0 0 0 1px #F0D68A;background:#FFFBEE}
.lv-ev .cat-dot{width:28px;height:28px}.lv-ev .cat-dot .ic{width:15px;height:15px}
.lv-main{flex:1;min-width:0;display:flex;flex-direction:column}
.lv-title{font-weight:700}
.lv-meta{font-size:13px;color:var(--muted)}
.lv-badges{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}
@media (max-width:640px){.lv-day{grid-template-columns:44px minmax(0,1fr);gap:10px;padding:10px 12px}.lv-date b{font-size:22px}.lv-ev{flex-wrap:wrap}.lv-badges{justify-content:flex-start;width:100%;padding-left:40px}}

/* ---------- Détail (panneau latéral) ---------- */
.dt-badges{display:flex;flex-wrap:wrap;gap:6px}
.dt-title{font-family:"Barlow Condensed",sans-serif;font-size:26px;font-weight:700;color:var(--nuit);line-height:1.15}
.dt-title.cancelled{text-decoration:line-through;opacity:.7}
.dt-meta{margin:0;display:flex;flex-direction:column;gap:10px}
.dt-row{display:grid;grid-template-columns:20px 110px minmax(0,1fr);gap:8px;align-items:start;font-size:14.5px}
.dt-row .ic{color:var(--muted);margin-top:2px}
.dt-row dt{color:var(--muted);font-weight:600}
.dt-row dd{margin:0}
.dt-desc{white-space:pre-line}
.dt-cal{display:flex;gap:8px;font-size:13.5px;color:var(--muted);align-items:flex-start}
.dt-cal>div{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.dt-notes{padding:10px 12px;border-radius:10px;background:var(--papier-2);border:1px solid var(--bord);font-size:14px}
.dt-notes .label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);margin-bottom:4px}
.dt-notes .ic{width:14px;height:14px}
.dt-authors{font-size:12.5px;color:var(--muted)}
.linkish{border:0;background:none;padding:0;color:inherit;font-weight:700;text-decoration:underline;cursor:pointer}
@media (max-width:480px){.dt-row{grid-template-columns:20px minmax(0,1fr)}.dt-row dt{grid-column:2}.dt-row dd{grid-column:2}}

/* ---------- Infobulle ---------- */
.pl-tip{position:fixed;z-index:80;max-width:300px;display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:10px;background:var(--encre);color:#fff;font-size:13px;line-height:1.35;pointer-events:none;box-shadow:var(--ombre-2);animation:pop .12s var(--ease)}
.pl-tip b{font-size:14px}
.pl-tip span{display:flex;align-items:center;gap:5px;color:#D9E2E8}
.pl-tip .ic{width:13px;height:13px}
.pl-tip .tip-cat{margin-top:4px;align-self:flex-start;padding:1px 8px 1px 3px;border-radius:999px;background:var(--cat);color:var(--cat-fg);font-weight:600;font-size:12px}

/* ---------- Dialogue d'impression ---------- */
.pr-set{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pr-opt{padding:10px 12px;border:1px solid var(--bord);border-radius:10px}
.pr-opt:has(input:checked){border-color:var(--bleu);background:var(--info-bg)}
.pr-opt b{display:block}
.dlg .hint .ic{width:14px;height:14px;vertical-align:-2px}

/* ---------- Impression ---------- */
.print-head,.print-foot{display:none}
@media print{
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  html,body{background:#fff!important}
  .sidenav,.topbar,.skip,.pl-toolbar,.pl-filters,.pl-notice,body:has(.pl-view) .page-head,#toasts,.drawer,.drawer-back,.pl-tip,dialog,.pub-head,.pub-foot,.pl-legend .lg-cat .n{display:none!important}
  .shell,.frame{display:block!important}
  main.content{padding:0!important;max-width:none!important;gap:3mm!important;animation:none!important}
  .print-head{display:flex!important;align-items:center;gap:4mm;border-bottom:.6mm solid #003A66;padding-bottom:2mm}
  .print-head img{width:8mm;height:11mm;object-fit:contain}
  .print-head b{display:block;font-family:"Barlow Condensed",sans-serif;font-size:15pt;color:#003A66;line-height:1}
  .print-head span{display:block;font-size:9pt;color:#55656F}
  .print-head strong{margin-left:auto;font-family:"Barlow Condensed",sans-serif;font-size:18pt;color:#003A66}
  .print-foot{display:flex!important;justify-content:space-between;font-size:8pt;color:#55656F;border-top:.3mm solid #DCE2E7;padding-top:1.5mm}
  .pl-legend{gap:1.5mm}
  .lg-cats{gap:1.5mm}.lg-cat{min-height:0;padding:0 2mm 0 .5mm;font-size:7.5pt;box-shadow:none!important;opacity:1!important}
  .lg-cat .ic{width:4mm;height:4mm;padding:.6mm}
  .lg-layers{font-size:7.5pt;gap:1mm 4mm}
  .yv-scroll,.mv,.wv,.lv-month{box-shadow:none;border-radius:0;overflow:visible}
  .yv-grid{min-width:0!important}
  .yv-head{position:static}
  .yc:hover{background:inherit}
  .pl-view{break-inside:avoid}
  body.print-a3 .yv{--rh:7.15mm;--dz:9mm;--vz:2.8mm}
  body.print-a3 .yv-ev{font-size:7.5pt}
  body.print-a3 .yc-d{font-size:8pt}
  body.print-a4l .yv,body.print-a4p .yv{--rh:4.75mm;--dz:6.5mm;--vz:2mm}
  body.print-a4l .yv-ev,body.print-a4p .yv-ev{font-size:5.4pt;padding:.3mm .6mm;gap:.4mm}
  body.print-a4l .yv-ev .ic,body.print-a4p .yv-ev .ic{width:2.4mm;height:2.4mm}
  body.print-a4l .yc-d,body.print-a4p .yc-d{font-size:6pt;padding-left:.8mm}
  body.print-a4l .yc-d i,body.print-a4p .yc-d i{font-size:5pt}
  body.print-a4l .yv-mh,body.print-a4p .yv-mh{font-size:9pt;padding:1mm}
  body.print-a4l .yv-hol,body.print-a4p .yv-hol{font-size:5pt;margin-top:.6mm;height:calc(var(--rh) - 1.2mm)}
  body.print-a4l .yv-vac span,body.print-a4p .yv-vac span{font-size:4.5pt}
  .mw{break-inside:avoid;min-height:22mm}
  .wv-bodywrap{max-height:none;overflow:visible}
  .lv-day{break-inside:avoid}
  .yv-more{background:#003A66!important}
  .yc.today .yc-d b,.md-head.today .md-num,.lv-day.today .lv-date b,.wv-dh.today .wv-day b{background:none!important;color:inherit!important}
}

/* =====================================================================
   Mode application plein écran (façon agenda) : panneau latéral + grille
   qui occupe toute la hauteur disponible. Utilisé par planning.html et public.html.
   ===================================================================== */
body.pl-app .frame{height:100vh;height:100dvh}
body.pl-app .topbar{flex:none}
body.pl-app main.content{max-width:none;padding:0;gap:0;min-height:0;overflow:hidden;animation:none}
body.pl-app #planning{flex:1;min-height:0}
.pa{display:grid;grid-template-columns:264px minmax(0,1fr);height:100%;min-height:0;background:var(--papier);position:relative}
.pa.side-off{grid-template-columns:0 minmax(0,1fr)}
.pa-side{overflow-y:auto;overflow-x:hidden;padding:14px 12px 24px 14px;border-right:1px solid var(--bord);display:flex;flex-direction:column;gap:18px;background:var(--papier);min-width:0}
.pa.side-off .pa-side{visibility:hidden;padding:0;border:0}
.pa-main{display:flex;flex-direction:column;min-width:0;min-height:0}

/* Créer */
.pa-create{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;height:52px;padding:0 22px 0 16px;border-radius:16px;background:var(--papier);color:var(--nuit);font-weight:700;font-size:15px;text-decoration:none;box-shadow:0 1px 3px rgba(20,33,43,.2),0 4px 10px rgba(20,33,43,.1);transition:box-shadow .15s,background .15s}
.pa-create .ic{width:24px;height:24px;color:var(--bleu)}
.pa-create:hover{background:var(--jaune-pale);color:var(--nuit);box-shadow:0 2px 6px rgba(20,33,43,.25),0 8px 18px rgba(20,33,43,.12)}

/* Mini-calendrier */
.mc-head{display:flex;align-items:center;gap:2px;padding:0 0 4px 6px}
.mc-head b{flex:1;font-size:14px;font-weight:700;color:var(--encre-2)}
.mc-nav{width:28px;height:28px}.mc-nav .ic{width:16px;height:16px}
.mc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;text-align:center}
.mc-dow{font-size:10.5px;font-weight:700;color:var(--muted);padding:2px 0}
.mc-d{position:relative;height:30px;border:0;border-radius:50%;background:none;font-size:12px;font-weight:600;color:var(--encre-2);cursor:pointer;font-variant-numeric:tabular-nums;aspect-ratio:1;justify-self:center;width:30px;padding:0}
.mc-d:hover{background:var(--fond)}
.mc-d.out{color:#9AA7B0;font-weight:400}
.mc-d.vac{background:var(--vac-bg)}
.mc-d.hol{color:var(--rouge);font-weight:800}
.mc-d.sel{background:#D6E6F3;color:var(--nuit)}
.mc-d.busy::after{content:"";position:absolute;left:50%;bottom:3px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--bleu)}
.mc-d.today{background:var(--nuit);color:#fff}
.mc-d.today::after{background:var(--jaune)}

/* Catégories et statuts à cocher */
.pa-block{display:flex;flex-direction:column;gap:2px}
.pa-block[hidden]{display:none}
.pa-h{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 6px 4px}
.pa-cats{display:flex;flex-direction:column}
.pa-cat{position:relative;display:flex;align-items:center;gap:9px;min-height:34px;padding:0 6px;border-radius:8px;cursor:pointer;font-size:14px}
.pa-cat:hover{background:var(--fond)}
.pa-cat input{position:absolute;opacity:0;width:1px;height:1px}
.pa-box{width:18px;height:18px;flex:none;border-radius:4px;border:2px solid var(--cat);display:flex;align-items:center;justify-content:center;color:transparent;transition:background .12s}
.pa-box .ic{width:13px;height:13px;stroke-width:3.2}
.pa-cat input:checked+.pa-box{background:var(--cat);color:var(--cat-fg)}
.pa-cat input:focus-visible+.pa-box{outline:2px solid var(--bleu);outline-offset:2px}
.pa-ic{width:15px;height:15px;color:var(--cat)}
.pa-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pa-n{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.pa-all{align-self:flex-start;margin:4px 6px 0;border:0;background:none;color:var(--bleu);font-weight:700;font-size:13px;cursor:pointer;padding:2px 0}
.pa-all:hover{text-decoration:underline}
.pa-layers{list-style:none;margin:0;padding:0 6px;display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--muted)}
.pa-layers li{display:flex;align-items:center;gap:8px}

/* Barre d'outils compacte */
.pa .pl-toolbar{flex-wrap:nowrap;gap:6px;padding:8px 14px;border-bottom:1px solid var(--bord);min-height:58px;background:var(--papier)}
.pa .pl-toolbar>*{flex:none}
.pa-toggle{margin-right:2px}
.pl-today{min-height:36px;border-radius:999px;padding:0 16px}
.pl-arrows{display:flex}
.pa .pl-arrow{border:0;background:transparent;border-radius:50%}
.pa .pl-arrow:hover{background:var(--fond)}
.pa .pl-label{flex:0 1 auto!important;min-width:0;margin:0 0 0 6px;font-size:25px}
.pl-spacer{flex:1 1 auto!important}
.pa .pl-search{width:220px;min-width:140px;flex:0 1 220px!important}
.pa .pl-sel select.input{min-height:36px;padding:4px 28px 4px 10px;border:1px solid var(--champ);border-radius:var(--r);background:var(--papier);font-size:14px}
.pl-tbtn{position:relative;border:1px solid var(--bord);background:var(--papier)}
.pl-tbtn:hover{background:var(--fond)}
.pl-tbtn[aria-expanded=true]{background:var(--info-bg);border-color:var(--info-bd)}
.pl-tbtn .pl-count{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;font-size:11px;padding:0 5px}
.pl-pop{position:relative}
.pl-pop .pl-filters{position:absolute;right:0;top:calc(100% + 8px);width:min(880px,calc(100vw - 32px));max-height:min(70vh,560px);overflow:auto;z-index:40;box-shadow:var(--ombre-2)}
.pa .pl-views button{min-height:30px}
.pa .pl-notice:not(:empty){padding:8px 14px 0}
.pa .pl-legend{display:none}

/* Vues étirées sur toute la place disponible */
.pa .pl-view{flex:1;min-height:0;overflow:hidden;position:relative}
.pa[data-vue=liste] .pl-view{overflow:auto;padding:16px 20px 28px;background:var(--fond)}
.pa .yv,.pa .yv-scroll{height:100%}
.pa .yv-scroll{border:0;border-radius:0;box-shadow:none;overflow:auto}
.pa .yv-mh{padding:6px 4px 5px}
.pa .mv{height:100%;display:flex;flex-direction:column;border:0;border-radius:0;box-shadow:none}
.pa .mw{flex:1 1 0;min-height:0;overflow:hidden}
.pa .wv{height:100%;display:flex;flex-direction:column;border:0;border-radius:0;box-shadow:none}
.pa .wv-scroll{flex:1;min-height:0;display:flex;flex-direction:column}
.pa .wv-grid{flex:1;min-height:0;display:flex;flex-direction:column}
.pa .wv-head,.pa .wv-allday{flex:none}
.pa .wv-bodywrap{flex:1;max-height:none;min-height:0}

@media (max-width:1280px){.pa .pl-views button span{display:none}.pa .pl-views button{padding:0 9px}}
@media (max-width:1100px){.pa .pl-search{width:170px;flex-basis:170px!important}.pa .pl-label{font-size:22px}}
@media (max-width:900px){
  .pa{grid-template-columns:minmax(0,1fr)!important}
  .pa-side{position:absolute;left:0;top:0;bottom:0;width:284px;z-index:35;box-shadow:var(--ombre-2);transition:transform .2s var(--ease)}
  .pa.side-off .pa-side{visibility:visible;transform:translateX(-105%);padding:14px 12px 24px 14px}
  .pa .pl-toolbar{flex-wrap:wrap;row-gap:8px}
  .pa .pl-label{flex:1 1 auto!important;font-size:20px}
  .pl-spacer{display:none}
  .pa .pl-search{order:10;flex:1 1 100%!important;width:auto}
  .pa .pl-sel{order:11}
  .pa .pl-pop,.pa .pl-export{order:12}
  .pa .pl-views{order:13;margin-left:auto}
}
@media print{
  body.pl-app .frame,body.pl-app main.content,.pa,.pa-main,.pa .pl-view{height:auto!important;overflow:visible!important;display:block!important}
  .pa-side{display:none!important}
  .pa .pl-legend{display:flex!important;margin:2mm 0}
  .pa .yv,.pa .yv-scroll{height:auto!important}
  .pa .mv,.pa .wv{height:auto!important;display:block!important}
}
@media (max-width:640px){
  .pa .pl-views{flex:1 1 auto!important;width:auto;margin-left:0}
  .pa .pl-views button{flex:1}
  .pa .pl-toolbar{padding:8px 10px}
}

/* Image d'événement */
.dt-img{margin:-16px -20px 0;background:var(--papier-2);border-bottom:1px solid var(--bord-2)}
.dt-img img{display:block;width:100%;max-height:320px;object-fit:contain}
.lv-img{width:56px;height:56px;flex:none;object-fit:cover;border-radius:8px;border:1px solid var(--bord)}

/* Vue annuelle : jour sélectionné au clavier */
.yc:focus{outline:none}
.yc:focus-visible{z-index:5;background:#DCEBF7;box-shadow:inset 0 0 0 2px var(--nuit)}
.yc:focus-visible .yc-d b{text-decoration:underline;text-underline-offset:2px}
@media print{.yc:focus-visible{background:inherit;box-shadow:none}}
/* Le titre de la période reste lisible : c'est la recherche qui rétrécit en premier. */
.pa .pl-label{flex:0 0 auto!important;white-space:nowrap}
.pa .pl-search{flex:0 1 220px!important;min-width:110px}
@media (max-width:900px){.pa .pl-label{flex:1 1 auto!important}}

/* Navigation entre les événements d'un même jour, dans le panneau de détail */
.dt-pager{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-6px 0 2px;padding:4px;border:1px solid var(--bord);border-radius:10px;background:var(--papier-2);font-size:13px;font-weight:600;color:var(--muted)}
.dt-pager .icon-btn{width:32px;height:32px;border:1px solid var(--bord);background:var(--papier)}
.dt-pager .icon-btn[disabled]{opacity:.35;cursor:default}
.dt-pager+.dt-img{margin-top:0;border-radius:10px;border:1px solid var(--bord-2)}

/* Infobulle avec l'image de l'événement */
.pl-tip.has-img{width:280px;padding:0 0 10px;overflow:hidden}
.pl-tip.has-img>*:not(img){margin-left:12px;margin-right:12px}
.pl-tip img{display:block;width:100%;max-height:160px;object-fit:cover;margin-bottom:6px;background:#0d1a24}

/* =====================================================================
   Mode plein écran (bouton ⛶ ou touche F) : ni menu principal ni bandeau,
   le planning occupe tout l'écran ; la saisie s'ouvre dans une fenêtre.
   ===================================================================== */
.pl-create-inline{display:none!important}
body.pl-focus .pl-create-inline{display:inline-flex!important;border-radius:999px;padding:0 16px 0 12px}
body.pl-focus .sidenav,body.pl-focus .topbar,body.pl-focus .pub-head{display:none!important}
body.pl-focus .frame{height:100vh;height:100dvh}
body.pl-focus.pub{height:100vh;height:100dvh}
.pl-full[aria-pressed=true]{background:var(--nuit);color:#fff;border-color:var(--nuit)}
.pl-full[aria-pressed=true]:hover{background:var(--bleu)}
dialog.dlg-form{width:min(1240px,calc(100vw - 32px));height:calc(100vh - 32px);height:calc(100dvh - 32px);max-height:none}
dialog.dlg-form .dlg-body{flex:1;padding:0;overflow:hidden}
.pl-form-frame{display:block;width:100%;height:100%;border:0;border-top:1px solid var(--bord-2);background:var(--fond)}
@media (max-width:640px){dialog.dlg-form{width:100vw;height:100dvh;max-width:none;border-radius:0}}

/* =====================================================================
   Météo (pastilles des vues mois et semaine)
   ===================================================================== */
.wx{display:inline-flex;align-items:center;gap:3px;margin-left:auto;padding:1px 6px 1px 4px;border-radius:999px;background:#F1F6FA;border:1px solid #DCE8F1;color:#29475E;font-size:11.5px;font-weight:600;white-space:nowrap;flex:none}
.wx .ic{width:14px;height:14px}
.wx b{font-weight:700;font-variant-numeric:tabular-nums}
.wv-dtop{display:flex;align-items:center;gap:6px;width:100%}
@media (max-width:640px){.md-head .wx{display:none}}

/* =====================================================================
   Vue jour
   ===================================================================== */
.pa[data-vue=jour] .pl-view{overflow:auto;background:var(--fond)}
.dv{max-width:1100px;margin:0 auto;padding:18px 20px 32px;display:flex;flex-direction:column;gap:16px}
.dv-head{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,300px);gap:18px;align-items:center;background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);padding:16px 18px;box-shadow:var(--ombre)}
.dv-date{display:flex;flex-direction:column;align-items:center;min-width:92px;padding:6px 10px;border-radius:12px;background:var(--papier-2);border:1px solid var(--bord-2);line-height:1.1}
.dv-date span{font-size:13px;font-weight:600;color:var(--muted)}
.dv-date b{font-family:"Barlow Condensed",sans-serif;font-size:46px;color:var(--nuit);line-height:1}
.dv.hol .dv-date b{color:var(--rouge)}
.dv-date.today{background:var(--nuit);border-color:var(--nuit)}.dv-date.today b,.dv-date.today span{color:#fff}
.dv-info{display:flex;flex-direction:column;gap:8px;align-items:flex-start;min-width:0}
.dv-count{font-weight:700;font-size:16px;color:var(--encre-2)}
.dv-wx{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:12px;background:linear-gradient(160deg,#EAF4FB,#F7FAFC);border:1px solid #D6E6F2}
.dv-wx-main{display:flex;align-items:center;gap:12px}
.dv-wx-ic{width:40px;height:40px;color:#E39B00}
.dv-wx-main b{display:block;font-family:"Barlow Condensed",sans-serif;font-size:30px;line-height:1;color:var(--nuit)}
.dv-wx-main b small{font-size:20px;color:var(--muted)}
.dv-wx-main span{font-size:14px;font-weight:600;color:var(--encre-2)}
.dv-wx-meta{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;list-style:none;font-size:13px;color:var(--encre-2)}
.dv-wx-meta li{display:inline-flex;align-items:center;gap:5px}.dv-wx-meta .ic{width:14px;height:14px;color:var(--bleu)}
.dv-wx-src{font-size:11.5px;color:var(--muted)}
.dv-wx-src a{color:inherit}
.dv-wx-none{flex-direction:row;align-items:center;font-size:13px;color:var(--muted)}
.dv-wx-none .dv-wx-ic{width:28px;height:28px;color:#9AB3C6;flex:none}
.dv-h{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.dv-h small{text-transform:none;letter-spacing:0;font-weight:600;margin-left:6px}
.dv-allday,.dv-grid{background:var(--papier);border:1px solid var(--bord);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--ombre)}
.dv-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}
.dv-card{width:100%;height:100%;display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;border:1px solid var(--bord);border-left:5px solid var(--cat);background:var(--papier);color:var(--encre);transition:box-shadow .15s,background .15s}
.dv-card:hover{background:var(--papier-2);box-shadow:var(--ombre-2)}
.dv-card img{width:64px;height:64px;flex:none;object-fit:cover;border-radius:10px}
.dv-card-ic{width:44px;height:44px;flex:none;border-radius:12px;background:var(--cat);color:var(--cat-fg);display:flex;align-items:center;justify-content:center}
.dv-card-ic .ic{width:22px;height:22px}
.dv-card-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dv-card-cat{font-size:12px;font-weight:700;color:var(--muted)}
.dv-card-title{font-weight:700;font-size:16px;line-height:1.25}
.dv-card-meta{font-size:13px;color:var(--muted)}
.dv-card.st-tentative{border-style:dashed;border-left-style:solid;background-image:none}
.dv-card.st-cancelled{opacity:.6;background-image:none}.dv-card.st-cancelled .dv-card-title{text-decoration:line-through}
.dv-card.hl{box-shadow:inset 0 0 0 1px #F0D68A;background:#FFFBEE}
.dv-body{position:relative;margin-left:0}
.dv-row{position:absolute;left:0;right:0;border-top:1px solid var(--bord-2);display:flex;align-items:flex-start}
.dv.we .dv-row{background:#FAFBFC}
.dv-hour{width:56px;flex:none;font-size:12px;font-weight:600;color:var(--muted);padding:3px 0 0;font-variant-numeric:tabular-nums}
.dv-hwx{width:84px;flex:none;display:inline-flex;align-items:center;gap:3px;padding-top:3px;font-size:12px;font-weight:600;color:#29475E;font-variant-numeric:tabular-nums}
.dv-hwx .ic{width:14px;height:14px}
.dv-hwx i{font-style:normal;font-size:11px;color:var(--bleu);margin-left:2px}
.dv-slot{flex:1;align-self:stretch;border:0;background:transparent;cursor:pointer;border-radius:6px}
.dv-slot:hover{background:rgba(0,85,150,.06)}
.dv-slot:focus-visible{outline:2px solid var(--bleu);outline-offset:-2px}
.dv-evs{position:absolute;top:0;bottom:0;left:144px;right:0;pointer-events:none}
.dv-evs .dv-ev{pointer-events:auto;font-size:13px;padding:6px 8px;gap:3px}
.dv-evs .dv-ev .lbl{font-size:14px}
@media (max-width:900px){.dv-head{grid-template-columns:auto minmax(0,1fr)}.dv-wx{grid-column:1/-1}}
@media (max-width:640px){.dv{padding:12px 10px 24px}.dv-cards{grid-template-columns:1fr}.dv-hwx{width:62px}.dv-hwx i{display:none}.dv-evs{left:118px}.dv-date b{font-size:38px}}

/* Barre d'outils : libellés des vues masqués quand la zone du planning est étroite (requête de conteneur). */
.pa-main{container-type:inline-size;container-name:plmain}
@container plmain (max-width: 1180px){.pa .pl-views button span{display:none}.pa .pl-views button{padding:0 9px}}
@container plmain (max-width: 980px){.pa .pl-search{flex-basis:150px!important}}
.dv-card{flex-wrap:wrap}
.dv-card .dv-card-main{flex:1 1 200px}
.dv-card .lv-badges{width:auto!important;padding-left:0!important;justify-content:flex-end}
.dv-card .lv-badges:empty{display:none}
@media (max-width:640px){.dv-card .lv-badges{width:100%!important;justify-content:flex-start}}
/* Vue mois plein écran : bandeaux compacts pour afficher plus d'événements par jour */
.pa .mv{--mh-head:30px;--mh-vac:16px;--mh-lane:22px;--mh-more:20px}
.pa .mv .md-num{height:26px;min-width:26px;font-size:13.5px}
.pa .mv .mv-ev{font-size:12px}
/* Barre d'outils : passe sur deux lignes quand la zone du planning est étroite (vue publique sans panneau, tablette) */
@container plmain (max-width: 1100px){
  .pa .pl-toolbar{flex-wrap:wrap;row-gap:8px}
  .pa .pl-toolbar .pl-spacer{display:none}
  .pa .pl-label{flex:1 1 auto!important}
  .pa .pl-views{margin-left:auto}
}

/* Panneau latéral sur petit écran : en-tête avec croix, voile cliquable */
.pa-side-head{display:none}
.pa-backdrop{display:none}
@media (max-width:900px){
  .pa-side-head{display:flex;align-items:center;gap:8px;margin:-4px 0 4px}
  .pa-side-head b{flex:1;font-size:15px;color:var(--nuit)}
  .pa-close{width:40px;height:40px;border:1px solid var(--bord)}
  .pa-backdrop{display:block;position:absolute;inset:0;z-index:34;background:rgba(20,33,43,.4);opacity:1;transition:opacity .2s var(--ease)}
  .pa.side-off .pa-backdrop{opacity:0;pointer-events:none}
  .pa.side-off .pa-side{visibility:hidden;transition:transform .2s var(--ease),visibility 0s .2s}
  .pa-side{max-width:calc(100% - 48px)}
}
/* Petit écran : filtres et export en volet bas pleine largeur (plus de menu coupé hors de l'écran) */
@media (max-width:900px){
  .pl-pop .pl-filters{position:fixed;left:8px;right:8px;top:auto;bottom:8px;width:auto;max-height:min(78dvh,640px);z-index:60;border-radius:16px;animation:pl-sheet .2s var(--ease)}
  .pl-export .menu{position:fixed;left:8px;right:8px;top:auto;bottom:8px;width:auto;min-width:0;z-index:60;border-radius:16px;padding:8px;animation:pl-sheet .2s var(--ease)}
  .pl-export .menu button{min-height:48px;font-size:15px}
  .fl-grid{grid-template-columns:1fr}
}
@keyframes pl-sheet{from{transform:translateY(24px);opacity:0}}
@media (prefers-reduced-motion:reduce){.pl-pop .pl-filters,.pl-export .menu{animation:none}}
