@layer modules{
/* ════════ Complément « Calendrier » - UI type Morgen ════════
   Panneau latéral (mini-mois + calques), barre de vues, grille horaire.
   Réutilise les tokens de 01-tokens.css (--card, --line, --accent, --txt, --mut…). */

/* Les cartes posées sur le fond de la page n'ont plus de bordure (le proprio, 2026-10-20, après Figma : « idem pour les autres compléments avec ce type de cards ») ; celles posées DANS une carte gardent la leur. */
.cal{ display:grid; grid-template-columns:236px 1fr; gap:0; align-items:stretch; position:relative;
  border:0; border-radius:var(--radius); overflow:hidden; background:var(--card);
  min-height:560px; height:calc(100vh - 220px); }
@media (max-width:860px){ .cal{ grid-template-columns:1fr; height:auto; } }

/* ── Panneau latéral ── */
.cal-side{ border-right:1px solid var(--line); background:var(--card2); padding:var(--sp-14) var(--sp-12);
  display:flex; flex-direction:column; gap:var(--sp-16); overflow:auto; }
@media (max-width:860px){ .cal-side{ border-right:none; border-bottom:1px solid var(--line); } }
.cal-newbtn{ display:flex; align-items:center; justify-content:center; gap:var(--sp-6); width:100%;
  padding:var(--sp-8) var(--sp-10); border:none; border-radius:var(--radius-sm); background:var(--accent); color:var(--on-solid);
  font:inherit; font-size:var(--fs-md); font-weight:var(--fw-strong); cursor:pointer; transition:.12s; }
.cal-newbtn:hover{ background:var(--accent-h); }
.cal-newbtn svg{ width:15px; height:15px; }

/* Mini-mois */
.cal-mini{ display:flex; flex-direction:column; gap:var(--sp-6); }
.cal-mini-h{ display:flex; align-items:center; justify-content:space-between; font-size:var(--fs-sm); font-weight:var(--fw-strong); text-transform:capitalize; }
.cal-mini-nav{ display:inline-flex; gap:var(--sp-2); }
.cal-mini-nav button{ width:22px; height:22px; border:none; background:none; color:var(--mut); border-radius:var(--radius-sm);
  font-size:var(--fs-base); cursor:pointer; line-height:var(--lh-flat); }
.cal-mini-nav button:hover{ background:var(--card); color:var(--txt); }
.cal-mini-dow{ display:grid; grid-template-columns:repeat(7,1fr); gap:var(--sp-1); }
.cal-mini-dow span{ text-align:center; font-size:var(--fs-2xs); color:var(--mut2,var(--mut)); text-transform:uppercase; padding-bottom:var(--sp-2); }
.cal-mini-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:var(--sp-1); }
.cal-mini-d{ aspect-ratio:1; display:flex; align-items:center; justify-content:center; position:relative;
  border:none; background:none; color:var(--txt); font:inherit; font-size:var(--fs-xs); border-radius:50%; cursor:pointer; transition:.1s; }
.cal-mini-d:hover{ background:var(--card); }
.cal-mini-d.out{ color:var(--mut); opacity:.45; }
.cal-mini-d.today{ color:var(--accent); font-weight:var(--fw-bold); }
.cal-mini-d.sel{ background:var(--accent); color:var(--on-solid); font-weight:var(--fw-strong); }
.cal-mini-d.has::after{ content:""; position:absolute; bottom:2px; left:50%; transform:translateX(-50%);
  width:3px; height:3px; border-radius:50%; background:var(--accent); }
.cal-mini-d.sel.has::after{ background:var(--on-solid); }

/* Calques (calendriers) */
.cal-side-t{ font-size:var(--fs-2xs); font-weight:var(--fw-strong); color:var(--mut); text-transform:uppercase; letter-spacing:.05em; margin-bottom:var(--sp-6); }
.cal-layers{ display:flex; flex-direction:column; gap:var(--sp-1); }
.cal-layer{ display:flex; align-items:center; gap:var(--sp-8); padding:var(--sp-6) var(--sp-6); border-radius:var(--radius-sm); cursor:pointer; transition:.1s; }
.cal-layer:hover{ background:var(--card); }
.cal-layer input{ appearance:none; -webkit-appearance:none; width:15px; height:15px; border-radius:var(--radius-xs);
  border:1.5px solid var(--lc); background:transparent; cursor:pointer; position:relative; flex:0 0 auto; transition:.1s; }
.cal-layer input:checked{ background:var(--lc); }
.cal-layer input:checked::after{ content:"✓"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:var(--fs-2xs); color:var(--on-solid); font-weight:var(--fw-bold); }
.cal-layer-name{ flex:1; font-size:var(--fs-sm); color:var(--txt); }
.cal-layer-n{ font-size:var(--fs-xs); color:var(--mut); font-variant-numeric:tabular-nums; }

/* ── Zone principale ── */
.cal-main{ min-width:0; display:flex; flex-direction:column; }
.cal-loading{ display:flex; align-items:center; gap:var(--sp-8); color:var(--mut); padding:var(--sp-24); }
.cal-spin{ width:14px; height:14px; border:2px solid var(--line); border-top-color:var(--accent);
  border-radius:50%; display:inline-block; animation:calspin .7s linear infinite; }
@keyframes calspin{ to{ transform:rotate(360deg); } }

/* Barre supérieure */
.cal-top{ display:flex; align-items:center; justify-content:space-between; gap:var(--sp-14); flex-wrap:wrap;
  padding:var(--sp-10) var(--sp-14); border-bottom:1px solid var(--line); }
.cal-top-l{ display:flex; align-items:center; gap:var(--sp-12); min-width:0; }
.cal-top-r{ display:flex; align-items:center; gap:var(--sp-10); flex-wrap:wrap; }
.cal-nav{ display:flex; align-items:center; gap:var(--sp-4); }
.cal-period{ margin:0; font-size:var(--fs-base); font-weight:var(--fw-strong); text-transform:capitalize; white-space:nowrap; }
.cal-ico{ display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px;
  border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--card); color:var(--txt); cursor:pointer; transition:.12s; }
.cal-ico:hover{ background:var(--card2); border-color:var(--accent); }
.cal-ico svg{ width:15px; height:15px; }
.cal-today{ padding:var(--sp-6) var(--sp-12); border:1px solid var(--line); border-radius:var(--radius-sm);
  background:var(--card); color:var(--txt); font:inherit; font-size:var(--fs-sm); cursor:pointer; transition:.12s; }
.cal-today:hover{ background:var(--card2); border-color:var(--accent); }
.cal-tabs{ display:inline-flex; padding:var(--sp-2); gap:var(--sp-2); background:var(--card2); border:1px solid var(--line); border-radius:var(--radius-sm); }
.cal-tab{ padding:var(--sp-4) var(--sp-12); border:none; background:none; color:var(--mut); font:inherit; font-size:var(--fs-sm); border-radius:var(--radius-sm); cursor:pointer; transition:.12s; }
.cal-tab:hover{ color:var(--txt); }
.cal-tab.on{ background:var(--card); color:var(--txt); font-weight:var(--fw-strong); box-shadow:var(--elev-1); }
.cal-add{ display:inline-flex; align-items:center; gap:var(--sp-6); padding:var(--sp-6) var(--sp-12); border:1px solid var(--accent);
  border-radius:var(--radius-sm); background:var(--accent); color:var(--on-solid); font:inherit; font-size:var(--fs-sm); font-weight:var(--fw-strong); cursor:pointer; transition:.12s; }
.cal-add:hover{ background:var(--accent-h); }
.cal-add svg{ width:14px; height:14px; }
.cal-add.ghost{ background:transparent; color:var(--accent); }
.cal-add.ghost:hover{ background:var(--card2); }

/* Corps */
.cal-body{ flex:1; min-height:0; overflow:hidden; display:flex; flex-direction:column; }

/* ════════ GRILLE HORAIRE (Jour / Semaine) ════════ */
.cal-tg{ display:flex; flex-direction:column; height:100%; min-height:0; }
.cal-tg-head{ display:flex; border-bottom:1px solid var(--line); }
.cal-tg-corner{ width:56px; flex:0 0 56px; }
.cal-dcols-h{ flex:1; display:grid; }
.cal-dcol-h{ display:flex; flex-direction:column; align-items:center; gap:var(--sp-1); padding:var(--sp-6) var(--sp-4);
  border-left:1px solid var(--line2); background:none; color:var(--mut); font:inherit; cursor:pointer; transition:.1s; }
.cal-dcol-h:hover{ background:var(--card2); }
.cal-dcol-dow{ font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:.03em; }
.cal-dcol-n{ font-size:var(--fs-lg); font-weight:var(--fw-strong); color:var(--txt); width:30px; height:30px; display:flex; align-items:center; justify-content:center; border-radius:50%; }
.cal-dcol-h.today .cal-dcol-dow{ color:var(--accent); }
.cal-dcol-h.today .cal-dcol-n{ background:var(--accent); color:var(--on-solid); }

/* Bandeau journée entière */
.cal-tg-allday{ display:flex; border-bottom:1px solid var(--line); max-height:84px; overflow:auto; }
.cal-ad-rail{ width:56px; flex:0 0 56px; padding:var(--sp-4) var(--sp-6); font-size:var(--fs-2xs); color:var(--mut); text-transform:uppercase; text-align:right; }
.cal-ad-cells{ flex:1; display:grid; }
.cal-ad-cell{ border-left:1px solid var(--line2); padding:var(--sp-2); display:flex; flex-direction:column; gap:var(--sp-2); min-height:24px; }
.cal-adchip{ display:flex; align-items:center; gap:var(--sp-4); width:100%; text-align:left; border:none;
  background:color-mix(in srgb,var(--ec) 16%, var(--card)); color:var(--txt); border-radius:var(--radius-sm); padding:var(--sp-2) var(--sp-6);
  font:inherit; font-size:var(--fs-xs); cursor:pointer; transition:.1s; border-left:2px solid var(--ec); }
.cal-adchip:hover{ background:color-mix(in srgb,var(--ec) 26%, var(--card)); }
.cal-adchip i{ width:6px; height:6px; border-radius:50%; background:var(--ec); flex:0 0 auto; }
.cal-adchip span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-adchip.done span{ text-decoration:line-through; color:var(--mut); }

/* Corps défilant */
.cal-tg-scroll{ flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; }
.cal-tg-grid{ display:flex; position:relative; }
.cal-hours{ width:56px; flex:0 0 56px; }
.cal-hr{ position:relative; border-bottom:1px solid var(--line2); }
.cal-hr span{ position:absolute; top:-7px; right:7px; font-size:var(--fs-2xs); color:var(--mut); background:var(--card); padding:0 var(--sp-2); }
.cal-hr:first-child span{ top:1px; }
.cal-dcols{ flex:1; display:grid; position:relative; }
.cal-dcol{ position:relative; border-left:1px solid var(--line2); }
.cal-dcol.today{ background:color-mix(in srgb,var(--accent) 4%, transparent); }
.cal-slot{ border-bottom:1px solid var(--line2); }
.cal-slot:nth-child(odd){ background:color-mix(in srgb,var(--card2) 35%, transparent); }
.cal-tev{ position:absolute; border-radius:var(--radius-sm); padding:var(--sp-2) var(--sp-6); overflow:hidden; cursor:pointer;
  background:color-mix(in srgb,var(--ec) 18%, var(--card)); border-left:3px solid var(--ec);
  display:flex; flex-direction:column; gap:var(--sp-1); transition:.1s; box-sizing:border-box; }
.cal-tev:hover{ background:color-mix(in srgb,var(--ec) 30%, var(--card)); z-index:5; }
.cal-tev-t{ font-size:var(--fs-xs); font-weight:var(--fw-strong); color:var(--txt); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; line-height:1.25; }
.cal-tev-w{ font-size:var(--fs-2xs); color:color-mix(in srgb,var(--ec) 70%, var(--txt)); white-space:nowrap; }
.cal-tev.done .cal-tev-t{ text-decoration:line-through; color:var(--mut); }
.cal-tev.social{ border-left-style:dashed; }
/* Ligne « maintenant » */
.cal-now{ position:absolute; left:0; right:0; height:0; border-top:2px solid var(--err); z-index:6; pointer-events:none; }
.cal-now i{ position:absolute; left:-4px; top:-5px; width:8px; height:8px; border-radius:50%; background:var(--err); }

/* ════════ VUE MOIS ════════ */
.cal-mgrid{ display:flex; flex-direction:column; height:100%; }
.cal-mhead{ display:grid; grid-template-columns:repeat(7,1fr); border-bottom:1px solid var(--line); }
.cal-mhead span{ padding:var(--sp-6) var(--sp-10); font-size:var(--fs-2xs); font-weight:var(--fw-strong); color:var(--mut); text-transform:uppercase; letter-spacing:.03em; }
.cal-mbody{ flex:1; display:grid; grid-template-columns:repeat(7,1fr); grid-auto-rows:1fr; min-height:0; }
.cal-mcell{ border-right:1px solid var(--line2); border-bottom:1px solid var(--line2); padding:var(--sp-4) var(--sp-4);
  min-width:0; cursor:pointer; transition:background .1s; display:flex; flex-direction:column; gap:var(--sp-2); overflow:hidden; }
.cal-mcell:nth-child(7n){ border-right:none; }
.cal-mcell:hover{ background:var(--card2); }
.cal-mcell.out{ background:color-mix(in srgb,var(--card2) 50%, transparent); }
.cal-mcell.out .cal-mcell-n{ color:var(--mut); opacity:.55; }
.cal-mcell.sel{ box-shadow:inset 0 0 0 2px var(--accent); }
.cal-mcell-n{ font-size:var(--fs-sm); font-weight:var(--fw-strong); color:var(--txt); width:23px; height:21px; display:flex; align-items:center; justify-content:center; }
.cal-mcell.today .cal-mcell-n{ background:var(--accent); color:var(--on-solid); border-radius:50%; }
.cal-mcell-evs{ display:flex; flex-direction:column; gap:var(--sp-2); min-width:0; overflow:hidden; }
.cal-mchip{ display:flex; align-items:center; gap:var(--sp-4); width:100%; text-align:left; border:none; background:none;
  border-radius:var(--radius-xs); padding:var(--sp-1) var(--sp-4); font:inherit; font-size:var(--fs-xs); color:var(--txt); cursor:pointer; min-width:0; transition:.1s; }
.cal-mchip:hover{ background:color-mix(in srgb,var(--ec) 18%, var(--card2)); }
.cal-mchip .cal-mchip-dot{ width:6px; height:6px; border-radius:50%; background:var(--ec); flex:0 0 auto; }
.cal-mchip .cal-mchip-bar{ width:100%; max-width:none; height:14px; flex:1; border-radius:var(--radius-xs);
  background:color-mix(in srgb,var(--ec) 20%, var(--card)); border-left:3px solid var(--ec); }
.cal-mchip span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* journée entière : pastille pleine largeur teintée */
.cal-mchip:has(.cal-mchip-bar){ position:relative; }
.cal-mchip:has(.cal-mchip-bar) span{ position:absolute; left:11px; right:4px; color:var(--txt); }
.cal-mchip.done span{ text-decoration:line-through; color:var(--mut); }
.cal-mchip.social .cal-mchip-dot{ background:var(--ec); }
.cal-more{ font-size:var(--fs-2xs); color:var(--mut); padding:0 var(--sp-4); border:none; background:none; cursor:pointer; text-align:left; }
.cal-more:hover{ color:var(--accent); }

/* ════════ AGENDA ════════ */
.cal-agenda{ flex:1; overflow:auto; padding:var(--sp-14); display:flex; flex-direction:column; gap:var(--sp-18); }
.cal-agroup{ display:grid; grid-template-columns:64px 1fr; gap:var(--sp-14); align-items:start; }
.cal-aday{ display:flex; flex-direction:column; align-items:center; text-align:center; position:sticky; top:0; }
.cal-aday b{ font-size:var(--fs-xl); font-weight:var(--fw-strong); line-height:var(--lh-flat); }
.cal-aday span{ font-size:var(--fs-2xs); color:var(--mut); text-transform:capitalize; margin-top:var(--sp-2); }
.cal-rel{ margin-top:var(--sp-4); font-size:var(--fs-2xs); font-weight:var(--fw-bold); color:var(--accent)!important; text-transform:uppercase; letter-spacing:.04em; }
.cal-arows{ display:flex; flex-direction:column; gap:var(--sp-6); min-width:0; }
.cal-arow{ display:flex; align-items:center; gap:var(--sp-10); padding:var(--sp-8) var(--sp-12); border:1px solid var(--line);
  border-radius:var(--radius-sm); background:var(--card); cursor:pointer; transition:.1s; }
.cal-arow:hover{ border-color:var(--accent); background:var(--card2); }
.cal-arow.done .cal-atitle{ text-decoration:line-through; color:var(--mut); }
.cal-arow.social{ background:color-mix(in srgb,#db2777 6%, var(--card)); }
.cal-adot{ width:9px; height:9px; border-radius:50%; flex:0 0 auto; }
.cal-awhen{ font-size:var(--fs-sm); color:var(--mut); min-width:62px; font-variant-numeric:tabular-nums; }
.cal-atitle{ flex:1; min-width:0; font-size:var(--fs-md); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-badge{ font-size:var(--fs-2xs); font-weight:var(--fw-strong); padding:var(--sp-2) var(--sp-8); border-radius:var(--radius-pill); color:var(--bc);
  background:color-mix(in srgb,var(--bc) 14%, transparent); white-space:nowrap; }
.cal-asg{ font-size:var(--fs-xs); color:var(--mut); white-space:nowrap; }
.cal-asg.ai{ color:var(--accent); }
.cal-empty{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--sp-12); padding:var(--sp-48) var(--sp-12); color:var(--mut); text-align:center; }
.cal-empty svg{ width:38px; height:38px; opacity:.4; }
.cal-empty p{ margin:0; font-size:var(--fs-md); }

/* ════════ TÂCHES ════════ */
.cal-tboard{ flex:1; overflow:auto; padding:var(--sp-14); display:grid; grid-template-columns:repeat(3,1fr); gap:var(--sp-14); align-items:start; }
@media (max-width:880px){ .cal-tboard{ grid-template-columns:1fr; } }
.cal-tcol{ border:1px solid var(--line); border-radius:var(--radius); background:var(--card2); display:flex; flex-direction:column; }
.cal-tcol-h{ display:flex; align-items:center; gap:var(--sp-6); padding:var(--sp-10) var(--sp-12); font-size:var(--fs-sm); font-weight:var(--fw-strong); color:var(--txt); border-bottom:1px solid var(--line); }
.cal-tcol.ai .cal-tcol-h{ color:var(--accent); }
.cal-tcol.done .cal-tcol-h{ color:var(--ok); }
.cal-tcount{ margin-left:auto; font-size:var(--fs-xs); font-weight:var(--fw-strong); color:var(--mut); background:var(--card); border-radius:var(--radius-pill); padding:var(--sp-1) var(--sp-8); }
.cal-tcol-b{ display:flex; flex-direction:column; gap:var(--sp-6); padding:var(--sp-10); }
.cal-tempty{ font-size:var(--fs-sm); color:var(--mut); text-align:center; padding:var(--sp-10) var(--sp-4); }
.cal-tadd{ display:inline-flex; align-items:center; justify-content:center; gap:var(--sp-4); padding:var(--sp-6); border:1px dashed var(--line);
  border-radius:var(--radius-sm); background:none; color:var(--mut); font:inherit; font-size:var(--fs-sm); cursor:pointer; transition:.12s; }
.cal-tadd:hover{ border-color:var(--accent); color:var(--accent); }
.cal-tadd svg{ width:13px; height:13px; }
.cal-tcard{ display:flex; gap:var(--sp-8); padding:var(--sp-8) var(--sp-10); border:1px solid var(--line); border-left:3px solid var(--ec);
  border-radius:var(--radius-sm); background:var(--card); transition:.1s; }
.cal-tcard:hover{ border-color:var(--accent); }
.cal-tcard.done{ opacity:.62; }
.cal-tcard.done .cal-ttitle{ text-decoration:line-through; }
.cal-tcard.overdue{ border-color:color-mix(in srgb,var(--err) 55%, var(--line)); }
.cal-tck input{ width:16px; height:16px; accent-color:var(--ok); cursor:pointer; margin-top:var(--sp-1); }
.cal-tbody{ flex:1; min-width:0; cursor:pointer; }
.cal-ttitle{ font-size:var(--fs-md); color:var(--txt); margin-bottom:var(--sp-2); word-break:break-word; }
.cal-tmeta{ display:flex; align-items:center; gap:var(--sp-8); font-size:var(--fs-xs); color:var(--mut); flex-wrap:wrap; }
.cal-overdue{ color:var(--err); font-weight:var(--fw-strong); }

/* ════════ Overlay & modal d'édition ════════ */
.cal-overlay[hidden]{ display:none; }
.cal-overlay{ position:fixed; inset:0; z-index:1200; background:rgba(1,4,9,.5);
  display:flex; align-items:flex-start; justify-content:center; padding:var(--sp-40) var(--sp-16); overflow:auto;
  backdrop-filter:blur(2px); animation:calfade .14s ease; }
@keyframes calfade{ from{ opacity:0; } }
.cal-modal{ width:100%; max-width:520px; background:var(--card); border:1px solid var(--line);
  border-radius:var(--radius); box-shadow:var(--shadow); display:flex; flex-direction:column;
  max-height:calc(100vh - 80px); animation:calpop .16s ease; }
@keyframes calpop{ from{ transform:translateY(8px); opacity:0; } }
.cal-modal-head{ display:flex; align-items:center; justify-content:space-between; gap:var(--sp-10); padding:var(--sp-14) var(--sp-16); border-bottom:1px solid var(--line); }
.cal-modal-head h3{ margin:0; font-size:var(--fs-base); }
.cal-modal-body{ padding:var(--sp-16); display:flex; flex-direction:column; gap:var(--sp-12); overflow:auto; }
.cal-modal-foot{ display:flex; align-items:center; gap:var(--sp-8); padding:var(--sp-12) var(--sp-16); border-top:1px solid var(--line); }
.cal-modal-foot .sp{ flex:1; }
.cal-modal-foot button{ padding:var(--sp-8) var(--sp-14); border:1px solid var(--line); border-radius:var(--radius-sm);
  background:var(--card2); color:var(--txt); font:inherit; font-size:var(--fs-md); cursor:pointer; transition:.12s; }
.cal-modal-foot button:hover{ background:var(--card); border-color:var(--accent); }
.cal-modal-foot button.primary{ background:var(--accent); color:var(--on-solid); border-color:var(--accent); }
.cal-modal-foot button.primary:hover{ background:var(--accent-h); }
.cal-del{ color:var(--err)!important; border-color:transparent!important; background:none!important; display:inline-flex; align-items:center; gap:var(--sp-6); }
.cal-del:hover{ background:color-mix(in srgb,var(--err) 12%, transparent)!important; }
.cal-del svg{ width:14px; height:14px; }
.cal-ed-f{ display:flex; flex-direction:column; gap:var(--sp-4); flex:1; min-width:0; }
.cal-ed-f>span{ font-size:var(--fs-xs); color:var(--mut); font-weight:var(--fw-strong); }
.cal-ed-f input, .cal-ed-f textarea{ background:var(--bg2); color:var(--txt); border:1px solid var(--line); border-radius:var(--radius-sm); padding:var(--sp-8) var(--sp-10); font:inherit; font-size:var(--fs-md); width:100%; }
.cal-ed-f input:focus, .cal-ed-f textarea:focus{ outline:none; border-color:var(--accent); }
.cal-ed-f input.cal-err{ border-color:var(--err); }
.cal-ed-f textarea{ resize:vertical; }
.cal-ed-row{ display:flex; gap:var(--sp-12); }
@media (max-width:520px){ .cal-ed-row{ flex-direction:column; } }
.cal-ed-allday, .cal-ed-done{ display:inline-flex; align-items:center; gap:var(--sp-6); font-size:var(--fs-sm); color:var(--txt); cursor:pointer; }
.cal-ed-allday input, .cal-ed-done input{ width:15px; height:15px; accent-color:var(--accent); }
.cal-ed-times.off{ display:none; }
.cal-ed-done{ flex:0 0 auto; align-self:flex-end; padding-bottom:var(--sp-8); }
.cal-typrow{ display:flex; gap:var(--sp-8); flex-wrap:wrap; }
.cal-typ{ display:inline-flex; align-items:center; gap:var(--sp-6); padding:var(--sp-6) var(--sp-12); border:1px solid var(--line); border-radius:var(--radius-pill);
  background:var(--card2); color:var(--mut); font:inherit; font-size:var(--fs-sm); cursor:pointer; transition:.12s; }
.cal-typ i{ width:8px; height:8px; border-radius:50%; }
.cal-typ:hover{ color:var(--txt); }
.cal-typ.on{ color:var(--txt); border-color:var(--tc); background:color-mix(in srgb,var(--tc) 14%, transparent); font-weight:var(--fw-strong); }
.cal-seg{ display:inline-flex; border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.cal-seg button{ padding:var(--sp-8) var(--sp-14); border:none; background:var(--card2); color:var(--mut); font:inherit; font-size:var(--fs-sm); cursor:pointer; transition:.12s; }
.cal-seg button+button{ border-left:1px solid var(--line); }
.cal-seg button.on{ background:var(--accent); color:var(--on-solid); font-weight:var(--fw-strong); }
.cal-seg button:not(.on):hover{ color:var(--txt); }
.cal-sws{ display:flex; gap:var(--sp-6); flex-wrap:wrap; }
.cal-sw{ width:24px; height:24px; border-radius:50%; border:2px solid transparent; cursor:pointer; transition:.1s; }
.cal-sw:hover{ transform:scale(1.1); }
.cal-sw.on{ border-color:var(--txt); box-shadow:0 0 0 2px var(--card); }
.cal-ai-lead{ margin:0; font-size:var(--fs-sm); color:var(--mut); }
.cal-ai-status{ font-size:var(--fs-sm); color:var(--accent); min-height:16px; }


/* ── CDC_CAL (2026-10-21, le proprio : « surtout le design : minimaliste, compact ») : panneau étroit sans bouton en double,
   barre plate d'une ligne, grille à 36 px l'heure sans bandes, en-têtes de jour sur une ligne, blocs d'une ligne, mois et
   agenda sans cadres, éditeur resserré. Les règles ci-dessous viennent après et l'emportent. ── */
.cal{ grid-template-columns:196px 1fr; height:calc(100vh - 200px); min-height:520px; background:var(--card); }
.cal-side{ padding:var(--sp-10) var(--sp-10); gap:var(--sp-10); background:var(--card); }
.cal-mini-h{ font-size:var(--fs-xs); }
.cal-mini-d{ font-size:var(--fs-2xs); border-radius:var(--radius-sm); }
.cal-mini-d.sel{ border-radius:var(--radius-sm); }
.cal-side-jour{ display:flex; flex-direction:column; gap:var(--sp-1); padding:var(--sp-6) var(--sp-8); border-radius:var(--radius-sm); background:var(--card2); }
.cal-side-jour b{ font-size:var(--fs-xs); text-transform:capitalize; } .cal-side-jour span{ font-size:var(--fs-2xs); color:var(--mut); }
.cal-layers{ flex-direction:row; flex-wrap:wrap; gap:var(--sp-4); }
.cal-layers .cal-side-t{ width:100%; margin-bottom:var(--sp-2); }
.cal-layer{ gap:var(--sp-4); padding:var(--sp-2) var(--sp-6); border-radius:var(--radius-pill); background:var(--card2); color:var(--mut); }
.cal-layer.on{ color:var(--txt); background:color-mix(in srgb,var(--lc) 14%,var(--card)); }
.cal-layer input{ width:10px; height:10px; border-radius:var(--radius-pill); border-width:1.5px; }
.cal-layer input:checked::after{ content:none; }
.cal-layer-name{ font-size:var(--fs-2xs); }
.cal-layer-n{ font-size:var(--fs-2xs); }
.cal-top{ padding:var(--sp-6) var(--sp-10); gap:var(--sp-8); }   /* une ligne quand elle tient, deux sinon : la période ne se coupe pas */
.cal-add,.cal-today{ white-space:nowrap; }
.cal-period{ font-size:var(--fs-sm); }
.cal-ico{ width:26px; height:26px; border:0; background:transparent; }
.cal-ico:hover{ background:var(--card2); }
.cal-today{ padding:var(--sp-4) var(--sp-8); border:0; background:var(--card2); font-size:var(--fs-xs); }
.cal-tabs{ border:0; }
.cal-tab{ padding:var(--sp-2) var(--sp-8); font-size:var(--fs-xs); }
.cal-tab.on{ box-shadow:var(--shadow-sm); }
.cal-add{ padding:var(--sp-4) var(--sp-10); font-size:var(--fs-xs); border:0; }
.cal-plage{ border:0; background:var(--card2); color:var(--mut); font:inherit; font-size:var(--fs-2xs); font-weight:var(--fw-label); padding:var(--sp-4) var(--sp-8); border-radius:var(--radius-sm); cursor:pointer; white-space:nowrap; }
.cal-plage:hover{ color:var(--txt); }
.cal-top-r{ gap:var(--sp-6); flex-wrap:nowrap; }
.cal-tg-corner,.cal-ad-rail,.cal-hours{ width:44px; flex-basis:44px; }
.cal-dcol-h{ flex-direction:row; justify-content:center; gap:var(--sp-4); padding:var(--sp-4); border-left:0; }
.cal-dcol-dow{ font-size:var(--fs-2xs); }
.cal-dcol-n{ font-size:var(--fs-sm); width:22px; height:22px; border-radius:var(--radius-sm); }
.cal-tg-head,.cal-tg-allday{ border-bottom-color:var(--line2); }
.cal-ad-cell{ border-left-color:transparent; min-height:18px; padding:var(--sp-1) var(--sp-2); }
.cal-hr span{ font-size:var(--fs-2xs); top:-6px; right:4px; }
.cal-slot{ border-bottom-color:var(--line2); }
.cal-slot:nth-child(odd){ background:transparent; }
.cal-dcol{ border-left-color:var(--line2); }
.cal-tev{ border-left-width:2px; padding:var(--sp-1) var(--sp-4); gap:0; cursor:grab; }
.cal-tev.court{ flex-direction:row; align-items:center; gap:var(--sp-4); }
.cal-tev.court .cal-tev-w{ order:-1; }
.cal-tev.glisse{ opacity:.85; z-index:7; cursor:grabbing; box-shadow:var(--shadow-sm); }
.cal-fantome{ left:2px; right:2px; background:color-mix(in srgb,var(--accent) 16%,var(--card)); border-left:2px dashed var(--accent); color:var(--accent); font-size:var(--fs-2xs); padding:var(--sp-1) var(--sp-4); pointer-events:none; z-index:6; }
.cal-mhead span{ padding:var(--sp-4) var(--sp-6); }
.cal-mcell{ padding:var(--sp-2) var(--sp-2); }
.cal-mcell-n{ font-size:var(--fs-xs); width:20px; height:18px; }
.cal-mcell.today .cal-mcell-n{ border-radius:var(--radius-sm); }
.cal-mcell.sel{ box-shadow:inset 0 0 0 1px var(--accent); }
.cal-mchip{ padding:0 var(--sp-2); font-size:var(--fs-2xs); }
.cal-mchip .cal-mchip-bar{ height:12px; }
.cal-agenda{ padding:var(--sp-10); gap:var(--sp-12); }
.cal-arow{ border:0; padding:var(--sp-6) var(--sp-8); background:transparent; }
.cal-arow:hover{ background:var(--card2); }
.cal-arows{ gap:var(--sp-2); }
.cal-atitle{ font-size:var(--fs-sm); }
.cal-aday b{ font-size:var(--fs-lg); }
.cal-tboard{ padding:var(--sp-10); gap:var(--sp-10); }
.cal-tcol{ border:0; background:transparent; }
.cal-tcol-h{ padding:var(--sp-6) var(--sp-4); border-bottom:0; }
.cal-tcol-b{ padding:0; gap:var(--sp-4); }
.cal-tcard{ border:0; border-left:2px solid var(--ec); background:var(--card2); padding:var(--sp-6) var(--sp-8); }
.cal-tcard:hover{ background:color-mix(in srgb,var(--ec) 10%,var(--card2)); }
.cal-ttitle{ font-size:var(--fs-sm); }
.cal-modal{ max-width:460px; border:0; }
.cal-modal-head{ padding:var(--sp-10) var(--sp-14); }
.cal-modal-head h3{ font-size:var(--fs-sm); }
.cal-modal-body{ padding:var(--sp-12) var(--sp-14); gap:var(--sp-8); }
.cal-modal-foot{ padding:var(--sp-8) var(--sp-14); }
.cal-modal-foot button{ padding:var(--sp-6) var(--sp-10); font-size:var(--fs-sm); border:0; }
.cal-ed-f input, .cal-ed-f textarea{ padding:var(--sp-6) var(--sp-8); font-size:var(--fs-sm); }
.cal-ed-f>span{ font-size:var(--fs-2xs); }
.cal-typ{ padding:var(--sp-4) var(--sp-8); font-size:var(--fs-xs); border:0; }
.cal-sw{ width:18px; height:18px; }
.cal-seg button{ padding:var(--sp-4) var(--sp-10); font-size:var(--fs-xs); }

/* Les pastilles de couleur de l'éditeur (le proprio, 2026-10-22 : « bien centrer et revoir la taille ») : le bouton de l'atelier
   porte un padding horizontal, la pastille en devenait un ovale de 32 × 24 ; ici un vrai rond de 20 px, sans padding ni
   bordure, le choix dit par un anneau, la rangée alignée au milieu. */
.cal-sws{ align-items:center; gap:var(--sp-8); padding:var(--sp-2) 0; }
.cal-sws .cal-sw{ width:20px; height:20px; min-width:0; min-height:0; flex:0 0 20px; padding:0; margin:0; border:0; border-radius:50%; line-height:0; box-sizing:border-box; }
.cal-sws .cal-sw:hover{ transform:scale(1.15); }
.cal-sws .cal-sw.on{ border:0; box-shadow:0 0 0 2px var(--card), 0 0 0 4px var(--txt); }

/* ── CDC_CAL 2 (2026-10-22, le proprio : « il faut corriger l'affichage » du mini-mois, « et fais toutes tes propositions ») :
   mini-mois en rangées fixes, état vide de la vue Jour, barre sans chevrons, bande du jour effacée en vue Jour, ligne
   « maintenant » fine avec l'heure, entrées du jour dans le panneau, calques sans zéro, segment « Journée · 24 h », une seule
   hiérarchie de titres, grille jusqu'en bas. Après le bloc CDC_CAL, l'emporte. ── */
.cal-side{ gap:var(--sp-12); }
.cal-mini{ gap:var(--sp-4); }
.cal-mini-h{ font-size:var(--fs-sm); font-weight:var(--fw-strong); color:var(--txt); text-transform:none; }
.cal-mini-h>span:first-child::first-letter{ text-transform:uppercase; }
.cal-mini-nav button{ width:20px; height:20px; font-size:var(--fs-sm); }
.cal-mini-dow{ gap:0; }
.cal-mini-dow span{ font-size:var(--fs-2xs); padding-bottom:0; line-height:var(--lh-tight,1.2); height:18px; }
.cal-mini-grid{ gap:0; grid-auto-rows:24px; }
.cal-mini-d{ aspect-ratio:auto; height:24px; width:100%; padding:0; font-size:var(--fs-xs); border-radius:var(--radius-sm); }
.cal-mini-d.sel{ background:var(--accent); }
.cal-mini-d.today:not(.sel){ box-shadow:inset 0 0 0 1px var(--accent); }
.cal-mini-d.has::after{ bottom:1px; }
.cal-side-t{ font-size:var(--fs-sm); font-weight:var(--fw-strong); color:var(--txt); text-transform:none; letter-spacing:0; margin-bottom:var(--sp-4); }
.cal-side-jour{ gap:var(--sp-4); padding:var(--sp-6) var(--sp-8); }
.cal-side-jour b{ font-size:var(--fs-xs); font-weight:var(--fw-strong); }
.cal-side-evs{ display:flex; flex-direction:column; gap:var(--sp-1); }
.cal-side-ev{ display:flex; align-items:center; gap:var(--sp-6); width:100%; padding:var(--sp-2) var(--sp-2); border:0; border-radius:var(--radius-sm); background:transparent;
  color:var(--txt); font:inherit; font-size:var(--fs-2xs); text-align:left; cursor:pointer; }
.cal-side-ev:hover{ background:var(--card); }
.cal-side-ev i{ width:6px; height:6px; border-radius:50%; background:var(--ec); flex:none; }
.cal-side-ev-h{ color:var(--mut); font-variant-numeric:tabular-nums; flex:none; }
.cal-side-ev-t{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-layer-n{ color:var(--mut); }
.cal-top-l{ gap:var(--sp-8); }
.cal-today{ padding:var(--sp-4) var(--sp-8); }
.cal-period{ font-size:var(--fs-sm); font-weight:var(--fw-strong); }
.cal-tabs{ padding:var(--sp-2); gap:var(--sp-2); background:var(--card2); border-radius:var(--radius-pill); }
.cal-tab{ padding:var(--sp-2) var(--sp-10); border-radius:var(--radius-pill); }
.cal-tab.on{ background:var(--card); box-shadow:var(--shadow-sm); }
.cal-plage-seg .cal-tab{ padding:var(--sp-2) var(--sp-8); font-size:var(--fs-2xs); }
.cal-tg-day .cal-tg-head{ display:none; }
.cal-tg-corner,.cal-ad-rail{ font-size:var(--fs-2xs); text-transform:none; }
.cal-tg-scroll{ position:relative; }
.cal-tg-grid{ min-height:100%; }
.cal-dcol,.cal-hours{ background-image:repeating-linear-gradient(to bottom, transparent 0 35px, var(--line2) 35px 36px); }   /* les lignes continuent sous la dernière heure (9) */
.cal-dcol.today{ background-color:color-mix(in srgb,var(--accent) 4%, transparent); }
.cal-slot{ border-bottom-color:transparent; }
.cal-now{ border-top:1px solid var(--accent); }
.cal-now i{ display:none; }
.cal-now span{ position:absolute; left:4px; top:-9px; padding:0 var(--sp-4); border-radius:var(--radius-pill); background:var(--accent); color:var(--on-solid);
  font-size:var(--fs-2xs); font-weight:var(--fw-strong); line-height:16px; font-variant-numeric:tabular-nums; }
.cal-vide{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--sp-8); pointer-events:none; z-index:5; }
.cal-vide b{ font-size:var(--fs-sm); font-weight:var(--fw-medium); color:var(--mut); }
.cal-vide-btn{ pointer-events:auto; display:inline-flex; align-items:center; gap:var(--sp-4); padding:var(--sp-4) var(--sp-10); border:1px solid var(--line); border-radius:var(--radius-pill);
  background:var(--card); color:var(--txt); font:inherit; font-size:var(--fs-xs); cursor:pointer; }
.cal-vide-btn:hover{ border-color:var(--accent); color:var(--accent); } .cal-vide-btn svg{ width:12px; height:12px; }
}
