/* ===== Light theme (jujutsu-sarlat.fr) ===== */
:root{
  --bg:#ffffff; --card:#ffffff; --muted:#6a6a75; --muted-bg:#f6f6fb;
  --text:#1b1b22; --accent:#D7263D; --accent-weak:rgba(215,38,61,.12);
  --accent2:#6C3BC0; --accent2-weak:rgba(108,59,192,.12);
  --violet-dark:#2a1f47; --mauve:#f7f4ff; --mauve-alt:#e4dbff;
  --today:#6C3BC0; /* violet for today */
  --weekend:#f7f4ff; --holiday-tint: rgba(108,59,192,.10);
  --border:#e6e6f1; --shadow:0 10px 24px rgba(0,0,0,.06);
  --holidays:#F9B5D0;
}
*{box-sizing:border-box}
body{
  margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Arial,"Apple Color Emoji","Segoe UI Emoji";
  background:var(--bg);color:var(--text);padding:32px;display:flex;justify-content:center
}
.container{width:100%;max-width:1240px;display:flex;flex-direction:column;gap:20px}

/* Header: center title, arrows sides */
.cal-head{display:block}
.cal-head-grid{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;
  padding:22px clamp(18px,4vw,36px);border-bottom:1px solid var(--border);background:var(--muted-bg)
}
.cal-head-grid .title{text-align:center;font-size:clamp(20px,3vw,28px);font-weight:700;letter-spacing:.2px}

.calendar,.admin{
  background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);overflow:hidden
}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{
  appearance:none;border:1px solid var(--border);background:#fff;color:var(--text);
  padding:10px 14px;border-radius:10px;cursor:pointer;text-decoration:none;
  display:inline-flex;align-items:center;gap:8px;transition:transform .05s,border-color .2s,background-color .2s,box-shadow .2s;
  font-weight:600;font-size:14px;line-height:1;white-space:nowrap
}
.btn:hover{border-color:var(--mauve-alt);background:var(--mauve);box-shadow:0 4px 12px rgba(0,0,0,.05);transform:translateY(-1px)}
.btn-accent{border-color:var(--accent);background:var(--accent-weak);color:var(--text)}

.calendar-wrap{overflow-x:auto;border-radius:16px}
.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--border);min-width:640px}
.weekday{background:var(--muted-bg);padding:14px 10px;text-align:center;font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:#5a5a66;position:sticky;top:0;z-index:1}
.day{background:#fff;min-height:clamp(110px,14vw,170px);padding:14px;display:flex;flex-direction:column;gap:10px;border:1px solid transparent;position:relative}
.day.out{opacity:.55}
.day.weekend{background:var(--weekend)}

/* Holidays: horizontal band (no label) */
.day.holiday{position:relative}
.day.holiday::before{
  content:"";
  position:absolute;left:0;right:0;top:50%;
  height:4px;transform:translateY(-50%);
  background:var(--holidays);
  opacity:.35;border-radius:2px;
}

/* date badge */
.date-badge{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;font-weight:700;font-size:14px;user-select:none;color:#222;border:1px solid transparent}
.date-badge.today{background:var(--today);color:#fff;border:1px solid var(--accent2);box-shadow:none}
.date-badge.now-month{color:#2b2b33}

.events{margin-top:auto;display:flex;flex-direction:column;gap:8px}

/* Event pill */
.pill{
  display:flex;flex-direction:column;align-items:flex-start;
  padding:8px 10px;border-radius:9px;background:var(--mauve);
  border:1px solid var(--mauve-alt);color:var(--text);
  font-size:12px;white-space:normal;line-height:1.4
}
.pill .loc{opacity:.8;font-size:11px;margin-top:2px}
a.btn:focus-visible,.day:focus-within{outline:2px solid var(--accent2);outline-offset:-2px}
.print-watermark{ display:none; }
/* Admin */
.admin-titlebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px clamp(18px,4vw,36px);border-bottom:1px solid var(--border);background:var(--muted-bg)}
.admin-title{margin:0;font-size:clamp(20px,3vw,28px);font-weight:700;line-height:1.2;letter-spacing:.2px;color:var(--text)}
.admin-body{padding:28px clamp(18px,4vw,40px);display:grid;gap:24px;background:#fff;overflow-x:hidden}
.form{display:grid;gap:18px 20px;grid-template-columns:repeat(12, minmax(0, 1fr));width:100%;max-width:100%;box-sizing:border-box}
.form .row{display:contents}
.label{grid-column:span 4;color:#4c4c56;font-size:14px;align-self:center;white-space:nowrap;min-width:0}
.input{grid-column:span 8;min-width:0}
.input label{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.input input,.input textarea,.input select{width:100%;max-width:100%;box-sizing:border-box;padding:12px 14px;border:1px solid var(--border);background:#fff;color:var(--text);border-radius:10px;font-size:14px}
.help{grid-column:1 / -1;color:#5b5b66;font-size:12px;overflow-wrap:anywhere}
.table{width:100%;border-collapse:collapse;background:#fff}
.table th,.table td{border-bottom:1px solid var(--border);padding:14px 12px;text-align:left;font-size:14px;vertical-align:top}
.editable-cell{cursor:text}
.editable-cell:hover{background:rgba(155,126,189,.08)}
.editable-cell.is-saving{opacity:.6}
.inline-edit-input{width:100%;min-width:120px;padding:6px 8px;border:1px solid var(--accent2);background:#fff;color:var(--text);border-radius:8px;font:inherit;box-shadow:0 0 0 3px var(--accent2-weak)}
.inline-edit-input:focus{outline:none}
.inline-edit-select{min-width:110px;cursor:pointer}
.badge{display:inline-block;padding:2px 6px;border-radius:6px;border:1px solid var(--mauve-alt);font-size:12px;background:var(--mauve)}
.badge-admin{border-color:#6C3BC0;background:rgba(108,59,192,.14);color:#2A1F47}
.badge-member{border-color:#7BA4FF;background:rgba(123,164,255,.18);color:#1f3f78}
.badge-active{border-color:#2e9d62;background:rgba(46,157,98,.14);color:#17613b}
.badge-inactive{border-color:#d7263d;background:rgba(215,38,61,.12);color:#8f1425}
.user-search{position:relative;max-width:460px;width:100%}
.user-search::before{content:"🔎";position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:15px;opacity:.55;pointer-events:none}
.table-search{width:100%;padding:13px 16px 13px 42px;border:1px solid var(--border);background:#fff;color:var(--text);border-radius:999px;font-size:14px;box-shadow:0 6px 18px rgba(0,0,0,.04);transition:border-color .2s,box-shadow .2s,background-color .2s}
.table-search::placeholder{color:#8a8a96}
.table-search:focus{outline:none;border-color:var(--accent2);box-shadow:0 0 0 4px var(--accent2-weak),0 8px 22px rgba(0,0,0,.06)}
.admin-section-separator{width:100%;height:1px;margin:6px 0;border:0;background:var(--border)}
.sep{height:1px;background:var(--border);margin:12px 0}
.right{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.login-actions{display:flex;gap:16px;justify-content:flex-end;align-items:center;flex-wrap:wrap}
.text-link{color:#5b4a6f;text-decoration:none;font-size:13px;font-weight:600;line-height:1.2;border-bottom:1px solid rgba(91,74,111,.28);transition:color .2s,border-color .2s}
.text-link:hover{color:var(--accent);border-bottom-color:var(--accent)}
.small{font-size:12px;color:#666}
.login-box{padding:32px;display:grid;gap:20px;background:#fff}
.notice{padding:14px 16px;border:1px solid var(--mauve-alt);background:var(--mauve);border-radius:10px}

/* Swatches */
.swatches{display:flex;gap:10px;flex-wrap:wrap;max-width:100%;margin-top:10px}
.swatch{width:26px;height:26px;border-radius:6px;border:1px solid var(--border);cursor:pointer;transition:transform .1s}
.swatch:hover{transform:scale(1.1)}

/* Footer under calendar */
.cal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}
/* --- Empêche le débordement horizontal dans la zone admin --- */
.admin { overflow: hidden; }              /* déjà présent, on confirme */
.admin-body { overflow-x: hidden; }       /* coupe les débordements horizontaux */

/* --- Le grid ne doit jamais forcer une largeur > conteneur --- */
.admin-body .form {
  grid-template-columns: repeat(12, minmax(0, 1fr)); /* autorise le shrink */
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/* --- Les colonnes doivent pouvoir rétrécir --- */
.admin-body .label,
.admin-body .input {
  min-width: 0; /* clé pour éviter que le contenu étire la colonne */
}

/* --- Les champs respectent la largeur disponible --- */
.admin-body .input input,
.admin-body .input textarea,
.admin-body .input select {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/* --- Les blocs longs (aide, petits textes) doivent pouvoir couper les mots --- */
.admin-body .help,
.admin-body .small {
  overflow-wrap: anywhere;   /* coupe où nécessaire */
  word-break: break-word;
}

/* --- Les swatches doivent se replier, pas pousser à l'horizontal --- */
.admin-body .swatches {
  max-width: 100%;
  flex-wrap: wrap;
}

/* --- Les labels inline (checkbox + texte) gardent une seule ligne sans forcer la largeur totale --- */
.admin-body .input label {
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media print {
  @page { size: A4 landscape; margin: 8mm; }

  body { padding: 0 !important; background: #fff !important; }
  .container { max-width: none !important; width: 100% !important; }

  .cal-footer, .admin, .btn, .actions { display: none !important; }

  .cal-head { display:none !important; }

  .calendar{
    position:relative !important;
    overflow:visible !important;   /* important */
  }

  .print-watermark{
    display:flex !important;
    position:absolute !important;
    inset:0 !important;
    align-items:center !important;
    justify-content:center !important;
    font-size:100px !important;
    font-weight:800 !important;
    color:#2A1F47 !important;      /* plus visible que #6C3BC0 */
    opacity:0.06 !important;       /* ajuste à 0.08 si trop léger */
    white-space:nowrap !important;
    pointer-events:none !important;
    z-index:10 !important;         /* AU-DESSUS de la grille */
    mix-blend-mode:multiply !important; /* aide sur fond blanc */
  }

  .calendar-wrap, .grid{
    position:relative !important;
    z-index:1 !important;
  }

  .grid {
    min-width: 0 !important;
    width: 100% !important;
    gap: 0 !important;
    background: #ddd !important;
  }

  .weekday {
    font-size: 10px !important;
    padding: 5px 4px !important;
    position: static !important;
  }

  .day {
    min-height: 25mm !important;
    padding: 5px !important;
    padding-top: 0 !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
    gap: 0 !important;
    border: solid 1px #ccc !important;
  }

  .date-badge { width: 20px !important; height: 20px !important; border-radius: 8px !important; font-size: 12px !important; }
  .date-badge.today {border:none!important; background:none!important;color:#000!important}
  .events { gap: 3px !important; }
  .pill { font-size: 10px !important; padding: 5px !important; }
  .pill .loc { font-size: 8.5px !important; margin-top: 1mm !important; }

  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}