/* =====================================================
   CRACKLENDRIER — grille hebdo (bureau) + vue jour (mobile)
   Rendu par js/cracklendrier.js. Thème sombre, accents orange / or.
   ===================================================== */
.ccal{
  --ccal-or:#ffd000; --ccal-orange:#ff7b00; --ccal-now:#ff4b1f;
  --ccal-ligne:rgba(245,241,230,.06); --ccal-ligne-demi:rgba(245,241,230,.025);
  width:min(1140px,100%);margin:24px auto 0;position:relative;
  background:var(--noir-2);border:1px solid #2a2a30;border-radius:var(--r);
  box-shadow:var(--shadow-soft);padding:0 0 14px;
}
.ccal::before{content:"";display:block;height:4px;border-radius:var(--r) var(--r) 0 0;
  background:linear-gradient(90deg,var(--ccal-orange),var(--ccal-or))}

/* ---- Barre d'info ---- */
.ccal-info{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;justify-content:space-between;
  padding:14px 18px 10px;color:var(--gris);font-size:.95rem}
.ccal-info .ccal-mix{margin-right:6px}
.ccal-tz{font-family:'Oswald',sans-serif;font-size:.75rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--ccal-or)}

.ccal-etat{padding:40px 18px;text-align:center;color:var(--gris)}
.ccal-iframe{display:block;width:calc(100% - 28px);margin:0 14px;height:800px;border:0;border-radius:10px;background:var(--noir)}

/* ---- Badges ---- */
.ccal-mix,.ccal-live,.ccal-suite{display:inline-flex;align-items:center;gap:3px;
  font-family:'Oswald',sans-serif;font-size:.68rem;font-weight:600;letter-spacing:.8px;text-transform:uppercase;
  padding:2px 7px;border-radius:999px;line-height:1.3;white-space:nowrap}
.ccal-mix{background:rgba(255,208,0,.14);color:var(--ccal-or);border:1px solid rgba(255,208,0,.45);cursor:help}
.ccal-live{background:var(--ccal-now);color:#fff;box-shadow:0 0 12px rgba(255,75,31,.6)}
.ccal-live::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff;animation:ccalPulse 1.2s infinite}
.ccal-suite{background:rgba(245,241,230,.08);color:var(--gris);text-transform:none;letter-spacing:0}
@keyframes ccalPulse{50%{opacity:.25}}

/* =================== VUE SEMAINE =================== */
.ccal-semaine{padding:0 14px}
.ccal-tetes,.ccal-corps{display:grid;grid-template-columns:54px repeat(7,minmax(0,1fr));column-gap:5px}
.ccal-entete{position:sticky;top:var(--ccal-haut,0px);z-index:5;
  background:rgba(20,20,23,.94);backdrop-filter:blur(8px);
  padding:8px 0 8px;border-bottom:1px solid #2a2a30;margin-bottom:6px}
.ccal-tetes{padding-top:2px}
.ccal-tete{text-align:center;padding:6px 2px;border-radius:10px;display:flex;flex-direction:column;gap:1px}
.ccal-tete-j{font-family:'Oswald',sans-serif;font-weight:600;font-size:.95rem;letter-spacing:1px;text-transform:uppercase;color:var(--blanc)}
.ccal-tete-d{font-size:.85rem;color:var(--gris)}
.ccal-tete.auj{background:linear-gradient(135deg,var(--ccal-orange),var(--ccal-or))}
.ccal-tete.auj .ccal-tete-j,.ccal-tete.auj .ccal-tete-d{color:#111}

.ccal-corps{position:relative;height:calc(var(--h,44px) * 24)}
.ccal-heures{position:relative}
.ccal-heures button{position:absolute;right:4px;transform:translateY(-50%);font:inherit;font-size:.75rem;color:var(--gris);
  font-variant-numeric:tabular-nums;background:none;border:0;padding:1px 4px;border-radius:5px;cursor:pointer}
.ccal-heures button:hover,.ccal-heures button:focus-visible{color:#111;background:var(--ccal-or);outline:0}
.ccal-defile.compact .ccal-heures button:nth-child(even){visibility:hidden}   /* vue resserrée : une heure sur deux */

/* ---- Barre de navigation dans les heures + cadre qui défile ---- */
.ccal-barre{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:4px 0 8px}
.ccal-saut,.ccal-zoom{font-family:'Oswald',sans-serif;font-size:.78rem;letter-spacing:.8px;text-transform:uppercase;
  padding:7px 13px;border-radius:999px;border:1px solid #33333a;background:var(--noir-3);color:var(--blanc);cursor:pointer;transition:.15s}
.ccal-saut:hover,.ccal-saut:focus-visible{border-color:var(--ccal-orange);color:var(--ccal-or);outline:0}
.ccal-saut.maintenant{border-color:rgba(255,75,31,.6);color:#ff8a6a}
.ccal-zoom{margin-left:auto;border:0;font-weight:600;color:#111;background:linear-gradient(135deg,var(--ccal-orange),var(--ccal-or))}
.ccal-zoom:hover,.ccal-zoom:focus-visible{filter:brightness(1.1);outline:0}
.ccal-defile{max-height:max(360px,calc(100vh - var(--ccal-haut,0px) - 220px));overflow-y:auto;padding-top:8px;
  scrollbar-width:thin;scrollbar-color:var(--ccal-orange) transparent}
.ccal-defile::-webkit-scrollbar{width:8px}
.ccal-defile::-webkit-scrollbar-thumb{background:var(--ccal-orange);border-radius:8px}
.ccal-defile.compact{max-height:none;overflow:visible}
.ccal-col{position:relative;border-radius:10px;
  background-image:
    repeating-linear-gradient(to bottom,var(--ccal-ligne) 0 1px,transparent 1px var(--h,44px)),
    repeating-linear-gradient(to bottom,transparent 0 calc(var(--h,44px) / 2),var(--ccal-ligne-demi) calc(var(--h,44px) / 2) calc(var(--h,44px) / 2 + 1px),transparent calc(var(--h,44px) / 2 + 1px) var(--h,44px))}
.ccal-col.auj{background-color:rgba(255,123,0,.05);box-shadow:inset 0 0 0 1px rgba(255,123,0,.25)}

/* ---- Blocs ---- */
.ccal-bloc{position:absolute;left:2px;right:2px;overflow:hidden;text-align:left;cursor:pointer;
  display:flex;flex-direction:column;gap:2px;padding:6px 8px 6px 11px;
  background:var(--fond);border:0;border-radius:9px;color:var(--blanc);font:inherit;
  box-shadow:0 2px 8px rgba(0,0,0,.35);transition:transform .15s,box-shadow .15s,filter .15s}
.ccal-bloc::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--lisere)}
.ccal-bloc:hover,.ccal-bloc:focus-visible{filter:brightness(1.18);transform:translateY(-1px);z-index:3;
  box-shadow:0 6px 18px rgba(0,0,0,.5);outline:0}
.ccal-bloc:focus-visible{box-shadow:0 0 0 2px var(--ccal-or),0 6px 18px rgba(0,0,0,.5)}
.ccal-bloc.suite{border-top-left-radius:2px;border-top-right-radius:2px}
.ccal-bloc.coupe{border-bottom-left-radius:2px;border-bottom-right-radius:2px}
.ccal-noms{font-weight:700;font-size:14px;line-height:1.15;letter-spacing:.2px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.ccal-heure{font-size:12px;color:rgba(245,241,230,.75);font-variant-numeric:tabular-nums}
.ccal-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.ccal-bloc.petit{justify-content:center;padding-top:2px;padding-bottom:2px}
.ccal-bloc.petit .ccal-heure,.ccal-bloc.petit .ccal-badges{display:none}
.ccal-bloc.petit .ccal-noms{-webkit-line-clamp:1;font-size:13px}
.ccal-bloc.mix{box-shadow:inset 0 0 0 1px rgba(255,208,0,.35),0 2px 8px rgba(0,0,0,.35)}
.ccal-bloc.live{box-shadow:0 0 0 2px var(--ccal-now),0 0 22px rgba(255,75,31,.45);z-index:2}

/* ---- Ligne « maintenant » ---- */
.ccal-now{position:absolute;left:59px;right:0;height:0;z-index:4;pointer-events:none;
  border-top:1px dashed rgba(255,75,31,.45)}
.ccal-now::after{content:"";position:absolute;top:-2px;height:3px;border-radius:3px;background:var(--ccal-now);
  box-shadow:0 0 10px var(--ccal-now);
  width:calc((100% - 30px) / 7);left:calc(var(--col,0) * ((100% - 30px) / 7 + 5px))}
.ccal-now-h{position:absolute;left:-58px;top:-10px;width:50px;text-align:right;
  font-family:'Oswald',sans-serif;font-size:.72rem;font-weight:600;color:#fff;
  background:var(--ccal-now);border-radius:6px;padding:2px 5px;font-variant-numeric:tabular-nums}

/* ---- Popover ---- */
.ccal-pop{position:fixed;z-index:200;width:min(300px,calc(100vw - 20px));
  background:#18181c;border:1px solid #33333a;border-radius:12px;padding:14px 16px;
  box-shadow:0 14px 40px rgba(0,0,0,.7);display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.ccal-pop[hidden]{display:none}
.ccal-pop-noms{font-weight:700;font-size:1.15rem;line-height:1.2}
.ccal-plus{color:var(--gris)}
.ccal-pop-quand{color:var(--blanc);font-size:.95rem;font-variant-numeric:tabular-nums}
.ccal-pop-mix,.ccal-pop-desc{color:var(--gris);font-size:.92rem;line-height:1.35}
.ccal-pop-desc strong{color:var(--blanc)}

/* =================== VUE JOUR (mobile) =================== */
.ccal-mobile{display:none}

@media (max-width:767px){
  .ccal{margin-top:10px;border-radius:12px}
  .ccal-semaine{display:none}
  .ccal-mobile{display:block}
  .ccal-info{padding:12px 14px 8px;font-size:.9rem}
  .ccal-onglets{position:sticky;top:var(--ccal-haut,0px);z-index:5;display:grid;grid-template-columns:repeat(7,1fr);gap:4px;
    padding:8px 10px;background:rgba(20,20,23,.95);backdrop-filter:blur(8px);border-bottom:1px solid #2a2a30}
  .ccal-onglet{display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 0 6px;
    background:transparent;border:1px solid transparent;border-radius:9px;color:var(--blanc);cursor:pointer;font:inherit}
  .ccal-onglet span{font-family:'Oswald',sans-serif;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}
  .ccal-onglet small{font-size:.72rem;color:var(--gris)}
  .ccal-onglet.auj{border-color:rgba(255,123,0,.55)}
  .ccal-onglet.actif{background:linear-gradient(135deg,var(--ccal-orange),var(--ccal-or));border-color:transparent}
  .ccal-onglet.actif span,.ccal-onglet.actif small{color:#111}
  .ccal-liste{display:flex;flex-direction:column;gap:8px;padding:12px 10px 0}
  .ccal-item{display:grid;grid-template-columns:92px 1fr;gap:10px;align-items:start;position:relative;overflow:hidden;
    background:var(--fond);border-radius:10px;padding:11px 12px 11px 15px}
  .ccal-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--lisere)}
  .ccal-item.live{box-shadow:0 0 0 2px var(--ccal-now),0 0 18px rgba(255,75,31,.4)}
  .ccal-item.mix{box-shadow:inset 0 0 0 1px rgba(255,208,0,.35)}
  .ccal-item.live.mix{box-shadow:0 0 0 2px var(--ccal-now),0 0 18px rgba(255,75,31,.4)}
  .ccal-item-h{font-size:12px;color:rgba(245,241,230,.8);font-variant-numeric:tabular-nums;padding-top:2px}
  .ccal-item-c{display:flex;flex-direction:column;gap:5px;min-width:0}
  .ccal-item .ccal-noms{-webkit-line-clamp:4}
  .ccal-item-note{font-size:.85rem;color:rgba(245,241,230,.7);line-height:1.3}
  .ccal-vide{color:var(--gris);text-align:center;padding:24px 0}
}
@media (prefers-reduced-motion:reduce){.ccal-live::before{animation:none}.ccal-bloc{transition:none}}
