/* Liste de programmes (colles-cards-page, plus bas — incluse dans l'onglet
   Colles de /devoirs/, cf. colles/_programs_panel.html) + éditeur d'un
   programme (context_bar.css + layout deux colonnes liste/PDF, cf.
   colles-editor-layout plus bas), propre à colles/detail.html. */

/* Couleur d'identité des pages "Programme de colles" (fil d'Ariane, cartes,
   éditeur, PDF...) : bleu dédié --kind-programme-colle (tokens.css), PAS
   --kind-colle/teal — ce dernier reste réservé au badge de CONTENU "Colle"
   (.sh-kind-colle, exercices/feuilles de type colle, cf. sheet_card.css) et
   à l'onglet "Colles" notées de /devoirs/ (kind=colle_notee, devoirs.css),
   deux choses distinctes de CE fichier qui ne gère que ColleProgram (refonte
   2026-08-27 : teal libéré pour les colles notées, ce module devient bleu).
   Posé sur :root (pas .colles-ctx-bar) : colles.css n'est chargé QUE sur les
   pages Colles, et .colles-ctx-bar/.colles-page sont deux boîtes SIBLINGS
   (pas l'une dans l'autre, cf. _context_bar_page.html) — une variable posée
   sur l'une ne serait pas visible dans l'autre. */
:root {
    --colles-accent: var(--kind-programme-colle);
    --colles-accent-dim: var(--kind-programme-colle-bg);
}

.colles-ctx-bar {
    --ctx-max-width: 99vw;
    /* La zone PDF doit toucher la barre (demande explicite) : context_bar.css
       pose 6px de margin-bottom par défaut (générique), annulé ici. Le
       height:calc(100vh - 51px) de .colles-page (plus bas) tenait compte de
       ces 6px : ajusté en conséquence. */
    margin-bottom: 0;
}

.colles-ctx-bar .ctx-breadcrumb-current {
    color: var(--colles-accent);
}

/* Le Σ du logo, l'onglet "Colles" actif et son trait sont pilotés par
   --page-accent posé sur <body> (nav.css) : `body.colles-ctx-active` vaut
   déjà var(--kind-programme-colle) (bleu, cf. --colles-accent plus haut),
   donc les recolorer ici serait redondant. Surtout,
   ce fichier N'EST PAS chargé que sur /colles/ : devoirs.html inclut
   colles/_programs_panel.html, qui pose le <link>. Sur /devoirs/?kind=colle
   le <body> porte devoirs-ctx-active, et l'onglet Colles y est is-active
   (base.html) — des règles nav ici donnaient donc un Σ + onglet teal à côté
   d'un fil d'Ariane couleur Devoirs. Règle du site : une seule déclaration
   d'accent par page, --page-accent sur <body>. Ne rien remettre ici.

   Reste local ce qui n'a pas d'équivalent générique : le bouton d'action
   "+ Nouveau programme" (.button-outline de theme.css, recoloré plutôt que
   d'ajouter une variante par page). */
.colles-ctx-bar .button-outline {
    color: var(--colles-accent);
    border-color: var(--colles-accent);
}

.colles-ctx-bar .button-outline:hover {
    background: var(--colles-accent-dim);
}

/* Onglet Colles de /devoirs/ (body.colles-ctx-active, cf. base.html) :
   --accent de tout le conteneur #doc-devoirs-root passe en teal, comme sur
   /colles/<id>/ — sinon boutons/focus/bordures de carte y restaient orange
   (devoirs.css), seuls le Σ/l'onglet/le fil d'Ariane suivaient déjà
   --page-accent. */
body.colles-ctx-active #doc-devoirs-root,
body.colles-ctx-active:has(#doc-devoirs-root) .doc-page-sidebar,
body.colles-ctx-active:has(#doc-devoirs-root) .doc-header {
    --accent:        var(--colles-accent);
    --accent-strong: color-mix(in srgb, var(--colles-accent) 82%, black);
    --accent-soft:   color-mix(in srgb, var(--colles-accent) 14%, transparent);
    --accent-dim:    color-mix(in srgb, var(--colles-accent) 8%, transparent);
    --shadow-glow:   0 4px 20px color-mix(in srgb, var(--colles-accent) 22%, transparent);
}

/* .colles-btn a été repliée sur `class="button button-secondary"` — la
   taille compacte du jeu générique (28px, contre 27px ici), cf. theme.css.
   Le fond passe de --surface à --surface-3 : le bouton se détache du
   panneau au lieu de s'y fondre. Ne pas redessiner un bouton ici. */

.colles-page {
    max-width: 99vw;
    margin: 0 auto;
    padding: 0;
    /* Plein-hauteur sous la context bar : le PDF doit toucher la barre et
       aller jusqu'en bas, sans scroll de page — seul .colles-editor-panel
       scrolle, cf. plus bas.
       --doc-topbar-h (posée par _context_bar_page.html, mesure réelle de
       .colles-ctx-bar + l'espace sous elle) plutôt qu'un 45px figé : depuis
       que .ctx-bar est position:fixed (context_bar.css), #app-body exclut
       déjà cette hauteur de sa PROPRE boîte (nav.css) — un 45px qui ne
       matche pas exactement cette mesure fait déborder .colles-page de
       quelques px sous #app-body et fait réapparaître la scrollbar globale
       (constaté : #app-body mesurait 6px de moins que ce calc). */
    height: calc(100vh - var(--nav-height) - var(--doc-topbar-h, 45px));
    overflow: hidden;
}

.colles-empty {
    color: var(--text-muted);
    font-size: 0.9rem;
}

/* Page "liste de programmes" (onglet Colles de /devoirs/, seul point d'entrée) :
   simple colonne de cartes devoirs-card (cf. _programs_panel.html), même
   principe de largeur/centrage qu'une page de contenu classique — plus le
   layout deux colonnes + hauteur figée qu'imposait l'ancien panneau PDF
   (celui-ci reste utilisé par l'éditeur, cf. .colles-page/.colles-pdf-panel
   plus bas, propres à colles/detail.html). */
.colles-cards-page {
    max-width: 900px;
    margin: 0 auto;
    /* Pas de padding-top : le titre (h2.devoirs-section-title) doit
       s'aligner sur celui des pages DM/DS (rendu directement dans
       .doc-page-main, sans wrapper) — un padding ici le décale de 20px
       plus bas qu'eux (constaté 2026-08-26). */
    padding: 0 0 var(--space-6);
}

/* Couleur d'identité teal sur la carte "Programme de colles", même principe
   que .devoirs-card-dm/-ds (devoirs.css) — border-left permanent + icônes
   meta/chapitres/chevron recolorées, pour rester visuellement distinct des
   cartes DM/DS quand ces cartes cohabitent (onglet Colles vs DM/DS). */
.devoirs-card.devoirs-card-colle { border-left-color: var(--colles-accent); }
.devoirs-card-colle .devoirs-card-meta svg,
.devoirs-card-colle .devoirs-card-chapters svg { color: var(--colles-accent); }
.devoirs-card-colle .devoirs-card-chevron:hover { color: var(--colles-accent); }

/* Cartes "colle notée" (_sessions_panel.html, onglet Colles) : teal
   --kind-colle plutôt que --colles-accent (bleu, réservé aux programmes de
   colle) — même principe que .devoirs-card-colle ci-dessus, cf. demande
   2026-08-27. */
.devoirs-card.devoirs-card-colle-notee { border-left-color: var(--kind-colle); }
.devoirs-card-colle-notee .devoirs-card-meta svg,
.devoirs-card-colle-notee .devoirs-card-chapters svg { color: var(--kind-colle); }
.devoirs-card-colle-notee .devoirs-card-chevron:hover { color: var(--kind-colle); }

/* Essai de mise en page pour la toute première carte "colle notée" (la plus
   récente, cf. _sessions_panel.html demande 2026-08-27) : la zone noms/notes
   devient une grille à 3 colonnes (1 par élève d'un groupe) avec un texte
   bien plus grand que les pastilles .devoirs-card-chapter-pill habituelles,
   plutôt qu'une liste compacte — juste cette zone, pas toute la carte. */
.devoirs-card-names-featured {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-3);
    margin-top: 4px;
}
.devoirs-card-names-featured-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 8px 6px;
    border-radius: 10px;
    background: var(--kind-colle-bg);
    text-align: center;
}
.devoirs-card-names-featured-name {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text);
}
.devoirs-card-names-featured-note {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--kind-colle);
}

/* En-tête de la liste des colles notées : titre + sélecteur d'année scolaire
   (cf. _sessions_panel.html) sur une même ligne. */
.colles-sessions-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
}
.colles-sessions-head .devoirs-section-title { margin: 0; }
.colles-sessions-filters {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}
.colles-year-select-form select {
    font: inherit;
    padding: 6px 10px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--surface);
    color: var(--text);
}

/* Colonne chevron à droite : structure identique à .devoirs-card-side
   (devoirs.css) mais sous un AUTRE nom — devoirs.js ouvre un panneau info
   (.exo-info-btn) quand on clique dans .devoirs-card-side, panneau qui
   n'existe pas pour les colles (pas de fiche à cocher/décocher depuis cette
   liste). Sous ce nom, le clic tombe dans la branche "else" générique de
   devoirs.js et navigue normalement vers data-href, comme le reste de la
   carte — pas de zone morte sur le chevron. */
.colle-card-side {
    flex: 0 0 auto;
    align-self: stretch;
    display: flex;
    align-items: center;
    padding: 16px 0;
    border-right: 1px solid var(--border-soft);
}

.colles-pdf-panel {
    position: relative;
    height: 100%;
    min-height: 0;
    border: 1px solid var(--border);
    border-radius: var(--radius-md, 8px);
    background: var(--surface);
    overflow: hidden;
}

.colles-pdf-panel .colles-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

/* Éditeur (colles-editor-layout) : le panneau PDF occupe toute la hauteur
   disponible sous la context bar (cf. .colles-page height: 100vh - 51px),
   contrairement à celui de l'index (colles-layout) resté en 70vh fixe. */
.colles-editor-layout .colles-pdf-panel,
.colles-editor-layout .colles-pdf-panel .colles-empty {
    height: 100%;
}

/* Casse le max-width:1180px générique posé par context_bar.css
   (main:has(> .ctx-bar)) — l'éditeur de programme a besoin de bien plus de
   largeur pour son panneau PDF (paysage, cf. .colles-editor-layout plus
   bas) ; changement local à colles/detail.html (main:has(.colles-editor-layout)),
   ne touche aucune autre page utilisant _context_bar_page.html. */
main:has(.colles-editor-layout) {
    max-width: 85vw;
    padding: 0 12px;
}

/* ---- Éditeur de programme (colles/detail.html) ---- */

/* Panneau PDF plus large ici que sur les autres pages (sheet_detail.html
   etc.) : le PDF du programme de colle est en mode paysage (colle_pdf.py),
   il lui faut plus de largeur qu'un PDF portrait classique — colonne de
   gauche réduite en conséquence, changement local à colles-editor-layout. */
.colles-editor-layout {
    display: grid;
    grid-template-columns: minmax(340px, 400px) 1fr;
    gap: var(--space-4);
    align-items: stretch;
    height: 100%;
}

/* Le panneau lui-même ne scrolle plus : Semaine/Ajouter un chapitre restent
   fixes en haut, seul #colle-chapters (plus bas) scrolle sous eux — sans ça
   toute la colonne (en-tête compris) défilait avec la liste des chapitres. */
.colles-editor-panel {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    height: 100%;
    min-height: 0;
    overflow: hidden;
    padding: var(--space-4) 0 var(--space-6) 0;
}

.colles-editor-header {
    display: flex;
    gap: var(--space-3);
    align-items: flex-end;
}

.colles-editor-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: none;
}

.colles-editor-field-grow {
    flex: 1;
}

.colles-editor-field label {
    font-size: 0.78rem;
    color: var(--text-muted);
}

/* Boîte encadrée avec icône, cf. maquette (crayon sur Numéro, calendrier
   sur Semaine) — un seul wrapper générique plutôt qu'un style par champ. */
.colles-editor-input-wrap {
    position: relative;
    display: flex;
    align-items: center;
}

.colles-editor-field input,
.colles-editor-field select {
    width: 100%;
    padding: 9px 34px 9px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius-md, 8px);
    background: var(--surface-2);
    color: var(--text);
    font-size: 0.92rem;
    appearance: none;
}

.colles-editor-field select {
    padding-left: 34px;
    padding-right: 30px;
}

.colles-editor-field input[type="number"] {
    width: 130px;
}

.colles-editor-field input:focus,
.colles-editor-field select:focus {
    outline: none;
    border-color: var(--colles-accent);
}

.colles-editor-input-icon {
    position: absolute;
    right: 11px;
    width: 15px;
    height: 15px;
    color: var(--text-muted);
    pointer-events: none;
}

.colles-editor-input-icon-lead {
    right: auto;
    left: 11px;
}

.colles-editor-savestate {
    height: 1em;
    margin: 0;
    font-size: 0.78rem;
    color: var(--success, #4a9d6e);
}

.colles-editor-savestate.is-error {
    color: var(--danger, #e5675f);
}

/* "+ Ajouter un chapitre", cf. maquette : une seule rangée pleine largeur
   plutôt que select + bouton visuellement séparés — le <select> reste le
   contrôle natif (accessibilité, pas de réimplémentation JS), habillé pour
   ressembler à un bouton. */
.colles-chapter-add {
    position: relative;
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.colles-chapter-add input {
    flex: 1;
    min-width: 0;
    padding: 9px 12px;
    border: 1px dashed var(--border);
    border-radius: var(--radius-md, 8px);
    background: var(--surface-2);
    color: var(--text);
    font-size: 0.9rem;
}

.colles-chapter-add input:focus {
    outline: none;
    border-color: var(--colles-accent);
    border-style: solid;
}

.colles-chapter-add input.is-invalid {
    border-color: var(--danger, #e5675f);
    border-style: solid;
}

/* Bouton "+" seul (plus direct qu'un bouton texte "Ajouter"), même hauteur
   que le champ voisin (colles-chapter-add input : padding 9px = ~36px). */
.colles-chapter-add-btn {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    min-width: 0;
    padding: 0;
    border: none;
    border-radius: var(--radius-md, 8px);
    background: var(--colles-accent);
    color: white;
    cursor: pointer;
}

.colles-chapter-add-btn svg {
    width: 16px;
    height: 16px;
}

.colles-chapter-add-btn:hover {
    background: color-mix(in srgb, var(--colles-accent) 85%, black);
}

/* display:block (pas flex) : un <details> comme enfant direct d'un
   display:flex ne recalcule pas sa hauteur à l'ouverture dans Chrome (bug
   constaté — la carte garde la hauteur de son <summary> seul, son contenu
   ouvert se peignant par-dessus/derrière la carte suivante au lieu de
   pousser la mise en page). Le flex ne servait qu'à l'empilement vertical,
   remplacé ici par des marges classiques. */
#colle-chapters {
    display: block;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding-right: 10px;
}

#colle-chapters .doc-chapter + .doc-chapter {
    margin-top: var(--space-3);
}

/* Chapitres en cartes distinctes (cf. maquette), plutôt que l'accordéon
   "liste continue" par défaut de .doc-chapter (cours_et_td.html) — chaque
   chapitre du programme de colle est une unité indépendante qu'on
   ajoute/retire, une carte le rend visuellement plus clairement. */
#colle-chapters .doc-chapter {
    border: 1px solid var(--border);
    border-radius: var(--radius-md, 10px);
    background: var(--surface);
    overflow: hidden;
}

#colle-chapters .doc-chapter-head {
    padding: 10px 12px;
    background: var(--surface-2);
}

#colle-chapters .doc-chapter-body {
    padding: var(--space-3) 12px;
}

/* Bouton (pas juste un badge) : cliquer dessus tout coche/décoche le
   chapitre plutôt que de replier l'accordéon (comportement par défaut d'un
   clic dans <summary>) — cf. gestionnaire dédié dans detail.html qui fait
   e.preventDefault() avant de basculer les pills. Couleur distincte selon
   l'état (vide/partiel/complet) pour donner un retour visuel immédiat. */
/* margin-left:auto ICI (pas sur .colle-chapter-remove, cf. plus bas) : les
   deux boutons ont ce même margin-left:auto générique par défaut (doc.css),
   ce qui fait que le flex partage l'espace libre EN DEUX au lieu de coller
   les deux boutons l'un à l'autre (constaté : ~55px de vide entre le badge
   et la croix). Un seul auto-margin doit porter tout l'espace libre. */
.colle-chapter-count {
    flex: none;
    min-width: 0;
    width: auto;
    margin-left: auto;
    font: inherit;
    font-size: 0.76rem;
    font-weight: 600;
    line-height: 1;
    color: var(--text-muted);
    background: var(--surface-3, var(--bg));
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 2px 9px;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

#colle-chapters .colle-chapter-remove {
    margin-left: 0;
}

.colle-chapter-count:hover {
    border-color: var(--colles-accent);
    color: var(--colles-accent);
}

.colle-chapter-count.is-partial {
    color: var(--colles-accent);
    background: color-mix(in srgb, var(--colles-accent) 8%, var(--surface-3, var(--bg)));
    border-color: color-mix(in srgb, var(--colles-accent) 40%, var(--border));
}

.colle-chapter-count.is-complete {
    color: white;
    background: var(--colles-accent);
    border-color: transparent;
}

.colle-chapter-count.is-partial:hover {
    background: color-mix(in srgb, var(--colles-accent) 18%, var(--surface-3, var(--bg)));
}

.colle-chapter-count.is-complete:hover {
    background: color-mix(in srgb, var(--colles-accent) 85%, black);
    color: white;
}

.colle-notion-section {
    margin-bottom: var(--space-3);
}

.colle-notion-section-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2);
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.02em;
    margin-bottom: 6px;
}

.colle-section-checkall {
    flex: none;
    border: none;
    background: none;
    color: var(--colles-accent);
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: none;
    letter-spacing: normal;
    cursor: pointer;
    padding: 2px 4px;
}

.colle-section-checkall:hover {
    text-decoration: underline;
}

/* Une notion/question par ligne (plus lisible pour cocher/décocher qu'un
   nuage de pills qui se réorganise à chaque clic). */
.colle-notion-pills {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

/* Case à cocher (::before) + texte sur une ligne pleine largeur : même
   logique de couleur "coché = accent" que l'ancienne pill, juste un layout
   liste au lieu d'un nuage de puces. */
.colle-notion-pill {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    width: 100%;
    border: 1px solid transparent;
    background: none;
    color: var(--text-muted);
    border-radius: var(--radius-sm);
    padding: 5px 8px;
    font-size: 0.85rem;
    line-height: 1.35;
    cursor: pointer;
    text-align: left;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}

.colle-notion-pill::before {
    content: "";
    flex: none;
    width: 14px;
    height: 14px;
    margin-top: 2px;
    border: 1px solid var(--border);
    border-radius: 3px;
    background: var(--bg);
    transition: background 0.12s, border-color 0.12s;
}

.colle-notion-pill:hover {
    background: var(--surface-2);
}

.colle-notion-pill.is-checked {
    background: var(--colles-accent-dim);
    color: var(--text);
}

.colle-notion-pill.is-checked::before {
    background: var(--colles-accent);
    border-color: var(--colles-accent);
    position: relative;
}

.colle-notion-pill.is-checked {
    position: relative;
}

.colle-notion-pill.is-checked::after {
    content: "";
    position: absolute;
    left: 12px;
    top: 7px;
    width: 5px;
    height: 8px;
    border: solid var(--surface, #fff);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.colle-notion-pill-question::before {
    border-style: dashed;
}

/* .doc-page-pdf (sheet_pdf_viewer.js/sheet_detail.css) est normalement un
   panneau LATÉRAL fixe (width: var(--pdf-panel-width)) — ici il doit
   remplir .colles-pdf-panel à la place, sur toute la hauteur disponible
   (collé à la context bar en haut, jusqu'en bas de l'écran). */
.colles-pdf-panel .doc-page-pdf {
    position: static;
    width: 100%;
    height: 100%;
}

/* Poignée de redimensionnement latéral (doc.css) : pertinente pour un
   panneau fixe en 3e colonne (sheet_detail.html), pas pour cette grille à
   deux colonnes fixes — cachée plutôt que de lui donner un comportement
   qui n'aurait aucun effet visible ici. */
.colles-pdf-panel .doc-pdf-resize-handle {
    display: none;
}

/* =========================================================
   SESSION DE COLLE (colle-session-*, session_detail.html)
   =========================================================
   Ébauche 2026-08-27 : teal --kind-colle (PAS --colles-accent, passé au
   bleu "Programme de colles" plus haut — une session de colle notée est un
   contenu de type Colle, cf. décision "le badge ira pour les colles
   notées"). Onglets élèves au centre de la context bar + panneau exercices
   (gauche, vide pour l'instant) / PDF (droite), même grille que
   .colles-editor-layout mais colonne de gauche plus étroite (liste de
   cartes, pas un formulaire). */
.colle-session-ctx-bar .ctx-breadcrumb-current { color: var(--kind-colle); }
.colle-session-ctx-bar .button-outline { color: var(--kind-colle); border-color: var(--kind-colle); }
.colle-session-ctx-bar .button-outline:hover { background: var(--kind-colle-bg); }

/* Double :has() pour battre en spécificité main:has(> .ctx-bar) de
   context_bar.css (max-width:1180px), injecté en <body> donc plus tard dans
   l'ordre du document — cf. même piège documenté dans cahier.css. */
/* padding-right/max-width à 0 côté droit : la scrollbar du PDF doit toucher
   le bord droit de la fenêtre (demande 2026-08-29) — les 12px de padding et
   le 99vw centré la laissaient à ~23px du bord. */
main:has(.colle-session-layout):has(.colle-session-layout) {
    max-width: 100vw;
    padding: 0 0 0 12px;
}

/* #app-body réserve 10px à droite (scrollbar-gutter: stable, nav.css) : sur
   CETTE page il n'y a jamais de défilement vertical global (la grille fait
   exactement la hauteur disponible et scrolle en interne), donc cette
   gouttière ne fait qu'éloigner la scrollbar du PDF du bord de la fenêtre. */
body:has(.colle-session-layout) #app-body {
    overflow-y: hidden;
    scrollbar-gutter: auto;
}

/* height:100% ci-dessous ne peut se résoudre que si CE conteneur a lui-même
   une hauteur explicite (pas juste un ancêtre en min-height) — contrairement
   à .colles-editor-layout, qui hérite la sienne de .colles-page (colles/
   detail.html), .colle-session-layout n'a pas ce wrapper : sans cette règle
   le panneau PDF s'écrasait à 0px de haut (constaté 2026-08-27). Même
   formule que .colles-page (--doc-topbar-h posée par _context_bar_page.html). */
.colle-session-layout {
    display: grid;
    /* Largeur de la colonne exercices : variable (poignée .colle-col-resize,
       mémorisée en localStorage — cf. session_sheets.js). Sa valeur par défaut
       reste le calc historique documenté juste en dessous. */
    /* max() reproduit exactement l'ancien minmax(340px, calc(...)) : sur écran
       large c'est la largeur d'une colonne du mode compte rendu (cf. plus
       bas), sur écran étroit le plancher de 340px qui l'emportait de fait. */
    --colle-exos-width: max(340px, calc((100% - 2 * var(--space-4)) / 3));
    --colle-handle-w: 9px;
    /* main élargi à 99vw ci-dessus + colonne exercices élargie : les deux
       zones (exos + PDF) gagnent en largeur (demande 2026-08-27). PDF réduit
       de 15% au profit de la colonne exercices (demande suivante) : partage
       proportionnel (32%/68% au lieu d'une largeur gauche figée) pour que
       la compensation tienne quelle que soit la largeur d'écran. */
    /* Largeur de la colonne exercices = largeur EXACTE d'une colonne du mode
       compte rendu (demande 2026-08-27) : la grille du compte rendu occupe
       toute la largeur de ce meme conteneur et la decoupe en 3 colonnes
       egales separees par 2 gaps, d'ou (100% - 2 gaps) / 3. Les deux modes
       partagent le meme gap (--space-4), donc passer de l'un a l'autre ne
       deplace pas le panneau de gauche. minmax garde un plancher a 340px sur
       ecran etroit (le calc y devient plus petit que le contenu). */
    /* 3 pistes : exercices | poignée | PDF. gap:0 — l'écart visuel est porté
       par le padding-right de .colle-session-exercises, ce qui place sa
       scrollbar contre la zone PDF (et non collée aux cartes d'exercices,
       cf. demande 2026-08-29). */
    /* Piste de largeur directe (pas de minmax) : face à un `1fr`, un
       minmax(min, X) se résout TOUJOURS à son minimum — le fr absorbe tout
       l'espace libre — donc la largeur choisie à la poignée n'aurait aucun
       effet. Le plancher est appliqué en JS (clampWidth). */
    grid-template-columns: var(--colle-exos-width) var(--colle-handle-w) minmax(0, 1fr);
    gap: 0;
    align-items: stretch;
    height: calc(100vh - var(--nav-height) - var(--doc-topbar-h, 45px));
    overflow: hidden;
}

.colle-session-exercises {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    min-width: 0;
    overflow-y: auto;
    /* Jamais de défilement horizontal dans la liste (demande 2026-08-29) : un
       bloc trop large (LaTeX, tableau) est rogné plutôt que d'ajouter une
       barre horizontale sous toute la colonne. */
    overflow-x: hidden;
    /* Écarte le contenu de la scrollbar, qui reste elle collée au bord droit
       de la colonne, donc à la zone PDF. */
    padding-right: var(--space-4);
}

/* Poignée de redimensionnement exercices <-> PDF. */
.colle-col-resize {
    position: relative;
    cursor: col-resize;
    background: none;
    border: none;
}
.colle-col-resize::before {
    content: "";
    position: absolute;
    top: 0; bottom: 0; left: 50%;
    width: 1px;
    transform: translateX(-50%);
    background: var(--border);
    transition: background 0.12s, width 0.12s;
}
.colle-col-resize:hover::before,
.colle-col-resize:focus-visible::before,
.colle-col-resize.is-dragging::before { background: var(--kind-colle); width: 2px; }
.colle-col-resize:focus-visible { outline: none; }
/* Pendant le glissement, empêche la sélection de texte et fige le curseur. */
body.colle-col-resizing { cursor: col-resize; user-select: none; }

.colle-session-panel { display: none; min-width: 0; }
.colle-session-panel.is-active { display: block; }
/* Rien ne doit dépasser en largeur (cf. overflow-x:hidden de la colonne) :
   les blocs larges d'une carte d'exercice défilent dans leur propre boîte. */
.colle-session-panel * { max-width: 100%; }
.colle-session-panel pre,
.colle-session-panel table { overflow-x: auto; }
/* --space-4 (20px) et non --space-3 : la pilule d'options d'une carte
   (.exo-colle-bar, exercise_card.css) déborde de ~16px au-dessus du cadre de
   l'énoncé — l'écart entre deux cartes doit lui laisser la place plutôt que
   de la faire recouvrir le commentaire de la carte précédente. */
.colle-session-panel .exercise-card { margin-top: var(--space-4); }

/* Onglets élèves (ctx-bar-center) : même gabarit que .devoirs-view-toggle
   (devoirs.css) — pilules cote a cote, actif recolore en teal. */
.colle-session-tabs {
    display: flex;
    gap: 4px;
}
.colle-session-tab {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 12px 5px 6px;
    border-radius: var(--radius-sm);
    background: transparent;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    font-weight: 600;
    transition: background 0.12s, color 0.12s;
}
.colle-session-tab:hover { background: var(--surface-2); color: var(--text); }
.colle-session-tab.is-active { background: var(--kind-colle-bg); color: var(--kind-colle); }
.colle-session-tab { cursor: grab; }
.colle-session-tab.is-dragging { opacity: 0.4; cursor: grabbing; }
.colle-session-tab-avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--surface-3);
    color: var(--text);
    font-size: 0.75rem;
    font-weight: 700;
    flex: 0 0 auto;
}
.colle-session-tab.is-active .colle-session-tab-avatar { background: var(--kind-colle); color: var(--on-accent, #fff); }
.colle-session-tab-name { font-size: 0.85rem; white-space: nowrap; }
.colle-session-tabs-empty { color: var(--text-faint); font-size: 0.85rem; }
.colle-session-tabs.is-hidden { display: none; }

/* Mode "Compte rendu" : les 3 panneaux élèves côte à côte en tableau, plus
   de PDF ni d'onglets (demande 2026-08-27). */
.colles-pdf-panel.is-hidden { display: none; }
.colle-session-layout.is-report-mode { grid-template-columns: 1fr; }
/* Plus de PDF à redimensionner en mode compte rendu. */
.colle-session-layout.is-report-mode .colle-col-resize { display: none; }
.colle-session-exercises.is-report-mode { padding-right: 0; }
.colle-session-exercises.is-report-mode {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: var(--space-4);
    align-items: start;
    overflow-y: auto;
}
.colle-session-exercises.is-report-mode .colle-session-panel {
    display: block;
    height: 100%;
    overflow-y: auto;
    border-left: 1px solid var(--border);
    padding-left: var(--space-3);
}
.colle-session-exercises.is-report-mode .colle-session-panel:first-child { border-left: none; padding-left: 0; }
/* En-tête du panneau élève : nom à gauche, note /20 éditable à droite
   (demande 2026-08-27). Contrairement à l'ancien titre (visible seulement en
   mode compte rendu), l'en-tête est affiché en permanence — c'est lui qui
   rappelle de quel élève sont les exercices affichés. */
/* Grille 3 colonnes plutot qu'un space-between : le nom de l'eleve est
   centre sur la largeur du panneau (demande 2026-08-27) et la note reste
   collee a droite — la colonne 1 vide equilibre la colonne 3. */
/* Nom de l'élève + note : fixes en haut de la colonne, hors du défilement
   (demande 2026-08-29) — sticky plutôt que sortis du conteneur scrollable,
   pour que chaque panneau élève garde son propre en-tête sans dupliquer la
   structure. Fond opaque obligatoire : les cartes défilent dessous. */
.colle-session-panel-header {
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--bg);
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: var(--space-3);
    margin-bottom: var(--space-2);
    padding-bottom: var(--space-2);
    border-bottom: 1px solid var(--border-subtle, var(--border));
}
.colle-session-panel-title {
    grid-column: 2;
    text-align: center;
    font-weight: 700;
    color: var(--kind-colle);
    font-size: 0.95rem;
}

.colle-session-grade {
    grid-column: 3;
    justify-self: end;
    display: flex;
    align-items: baseline;
    gap: 2px;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-secondary, var(--text-muted));
}
/* Au repos le champ ne ressemble pas a un champ (pas de cadre, pas de fond) :
   la note se lit comme du texte et le chrome d'edition n'apparait qu'au clic
   (demande 2026-08-27 — pas au survol : la case restait alors visible apres
   Entree tant que la souris ne bougeait pas, donnant l'impression qu'elle ne
   se refermait pas). La bordure est transparente plutot
   qu'absente pour que rien ne bouge quand elle apparait. */
.colle-session-grade-input {
    width: 1.6rem;
    padding: 2px 4px;
    text-align: center;
    font: inherit;
    font-variant-numeric: tabular-nums;
    color: var(--text-primary, var(--text));
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-sm, 4px);
    cursor: pointer;
}
.colle-session-grade-input:focus {
    outline: none;
    cursor: text;
    background: var(--surface-2, transparent);
    border-color: var(--kind-colle);
}
/* Retour visuel de sauvegarde : seulement TANT QUE le champ a le focus —
   sinon la bordure verte "enregistre" survivait au blur et la case restait
   visible alors qu'on avait quitte le champ (demande 2026-08-27 : la case
   disparait dans tous les cas). L'erreur, elle, reste visible apres le blur :
   une note refusee par le serveur (hors [0 ; 20]) ne doit pas passer
   inapercue. */
.colle-session-grade-input:focus.is-saving { border-color: var(--border-strong, var(--border)); }
.colle-session-grade-input:focus.is-saved { border-color: var(--success, var(--kind-colle)); }
.colle-session-grade-input.is-error { border-color: var(--danger, #e5534b); }
.colle-session-grade-total { color: var(--text-muted); font-weight: 500; }

/* =========================================================
   ONGLETS DE FEUILLES + IMPORT + QUESTION DE COURS/COMMENTAIRE
   (demande 2026-08-28)
   ========================================================= */

/* ---- panneaux élèves : les deux champs compacts au-dessus des exercices,
   volontairement PAS des .exercise-card (2 lignes, pas de liseré). ---- */
/* Question de cours + Commentaire : UN seul bloc encadré, deux zones
   séparées par un simple filet (demande 2026-08-29). Les champs eux-mêmes
   perdent donc leur propre cadre — c'est le groupe qui le porte. */
.colle-note-group {
    border: 1px solid var(--border);
    border-radius: var(--radius-sm, 8px);
    background: var(--surface);
    margin-bottom: var(--space-3);
}
.colle-note-group .colle-note-field { margin: 0; padding: 7px 9px 8px; }
.colle-note-group .colle-note-field + .colle-note-field { border-top: 1px solid var(--border-soft); }
.colle-note-group .colle-note-textarea {
    border: none;
    background: none;
    border-radius: 0;
    padding: 0;
    min-height: 32px;
}
/* Le cadre étant porté par le groupe, le retour visuel (focus, état de
   sauvegarde) passe par un halo plutôt que par la bordure du champ. */
.colle-note-group .colle-note-textarea:focus { border: none; box-shadow: 0 0 0 2px var(--kind-colle-bg); }
.colle-note-group .colle-note-textarea.is-saved { box-shadow: 0 0 0 2px color-mix(in srgb, var(--success) 30%, transparent); }
.colle-note-group .colle-note-textarea.is-error { box-shadow: 0 0 0 2px color-mix(in srgb, var(--danger) 35%, transparent); }
.colle-note-group .colle-note-rendered {
    border: none;
    background: none;
    border-radius: 0;
    padding: 0 20px 0 0;
    min-height: 0;
}
.colle-note-group .colle-note-rendered-close { top: -1px; right: -2px; }

.colle-note-field { position: relative; margin-bottom: var(--space-2); }
.colle-note-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.colle-note-label {
    font-size: 0.68rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
    color: var(--text-faint);
}
.colle-note-add-btn {
    min-width: 0; flex: none;
    width: 18px; height: 18px; border-radius: 50%;
    border: 1px dashed var(--border); color: var(--text-faint); background: none;
    display: flex; align-items: center; justify-content: center; font-size: 12px; line-height: 1;
    cursor: pointer; padding: 0;
}
.colle-note-add-btn:hover, .colle-note-add-btn.is-open { color: var(--kind-colle); border-color: var(--kind-colle); background: var(--kind-colle-bg); }
.colle-note-textarea {
    width: 100%; resize: vertical; min-height: 44px;
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-sm, 8px);
    color: var(--text); font: inherit; font-size: 0.8rem; line-height: 1.4;
    padding: 7px 9px; outline: none;
}
.colle-note-textarea:focus { border-color: var(--kind-colle); }
.colle-note-textarea-comment { min-height: 34px; color: var(--text-muted); }
.colle-note-textarea.is-saving { border-color: var(--border-strong, var(--border)); }
.colle-note-textarea.is-saved { border-color: var(--success, var(--kind-colle)); }
.colle-note-textarea.is-error { border-color: var(--danger, #e5534b); }
.colle-note-rendered {
    position: relative; background: var(--surface); border: 1px solid var(--kind-colle);
    border-radius: var(--radius-sm, 8px); padding: 8px 24px 8px 9px;
    font-size: 0.82rem; color: var(--text); line-height: 1.5; min-height: 24px;
}
.colle-note-rendered-close {
    position: absolute; top: 5px; right: 5px; width: 16px; height: 16px; border-radius: 4px;
    border: none; background: none; color: var(--text-faint); cursor: pointer;
    display: flex; align-items: center; justify-content: center; font-size: 11px; line-height: 1;
}
.colle-note-rendered-close:hover { background: var(--surface-3); color: var(--text); }

.colle-qc-pop {
    display: none; position: absolute; top: 100%; left: 0; margin-top: 4px;
    width: 320px; max-width: calc(100vw - 60px);
    background: var(--surface); border: 1px solid var(--border); border-radius: 12px;
    box-shadow: var(--shadow-lg); z-index: 30; overflow: hidden;
}
.colle-qc-pop.is-open { display: block; }
.colle-qc-pop-head { padding: 10px 13px; border-bottom: 1px solid var(--border); font-weight: 650; font-size: 0.8rem; display: flex; justify-content: space-between; align-items: center; }
.colle-qc-pop-head .x { color: var(--text-faint); cursor: pointer; width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; border-radius: 4px; }
.colle-qc-pop-head .x:hover { background: var(--surface-3); color: var(--text); }
.colle-qc-pop-body { padding: 8px 8px 10px; max-height: 280px; overflow-y: auto; }
.colle-qc-section + .colle-qc-section { margin-top: 10px; }
.colle-qc-section-title {
    display: flex; align-items: center; gap: 6px;
    font-size: 0.62rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
    color: var(--kind-colle); padding: 0 6px; margin-bottom: 4px;
}
.colle-qc-section-title .d { width: 5px; height: 5px; border-radius: 50%; background: var(--kind-colle); flex: none; }
.colle-qc-item {
    display: block; width: 100%; min-width: 0; text-align: left;
    border: none; background: none; color: var(--text-muted);
    font: inherit; font-size: 0.76rem; line-height: 1.4;
    padding: 6px 7px; border-radius: 6px; cursor: pointer;
}
.colle-qc-item:hover { background: var(--surface-2); color: var(--text); }

/* ---- onglets de feuilles au-dessus du panneau PDF : ne prennent pas de
   place sur la colonne exercices (colle-session-exercises), tout vit dans
   colle-sheets-col, cf. session_detail.html. ---- */
.colle-sheets-col { display: flex; flex-direction: column; min-height: 0; min-width: 0; position: relative; }
.colle-sheets-col.is-hidden { display: none; }

/* Pastille « Favori » posée sur le PDF (cf. session_sheets.js) — même rendu
   que .fpdf-usage-favorite du faux PDF ; taille de police fixée en JS pour
   suivre le zoom. */
.colle-pdf-favorite {
    position: absolute;
    z-index: 3;
    pointer-events: none;
    padding: 0 0.4em;
    border-radius: 0.4em;
    font-family: var(--font-ui, system-ui, sans-serif);
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: 0.02em;
    color: var(--star);
    background: color-mix(in srgb, var(--star) 16%, transparent);
}

.colle-sheet-tabs-row { display: flex; align-items: flex-end; gap: 4px; padding: 0 0 0 2px; position: relative; }
.colle-sheet-tab {
    display: flex; align-items: center; gap: 7px;
    padding: 7px 8px 7px 10px; border-radius: 8px 8px 0 0;
    font-size: 0.76rem; color: var(--text-muted); text-decoration: none;
    background: var(--surface-2); border: 1px solid var(--border-soft); border-bottom: none;
    max-width: 190px; position: relative; top: 1px;
}
.colle-sheet-tab-sw { width: 7px; height: 7px; border-radius: 2px; flex: none; }
.colle-sheet-tab-icon { width: 15px; height: 15px; flex: none; object-fit: contain; }
.colle-sheet-tab-lbl { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.colle-sheet-tab.is-active { background: var(--surface); color: var(--text); border-color: var(--border); font-weight: 600; }
.colle-sheet-tab-x {
    margin-left: 2px; color: var(--text-faint); width: 14px; height: 14px;
    display: flex; align-items: center; justify-content: center; border-radius: 3px; flex: none; font-size: 11px;
}
.colle-sheet-tab-x:hover { background: var(--surface-3); color: var(--text); }
.colle-sheet-tab-add {
    min-width: 0; flex: none;
    display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 6px;
    color: var(--text-faint); border: 1px dashed var(--border); cursor: pointer; margin: 0 0 3px 4px;
    background: none; font: inherit; font-size: 12px; line-height: 1; padding: 0;
}
.colle-sheet-tab-add:hover, .colle-sheet-tab-add.is-open { color: var(--kind-colle); border-color: var(--kind-colle); background: var(--kind-colle-bg); }

.colle-sheet-import-pop {
    display: none; position: absolute; top: 36px; right: 0; width: 400px; max-width: calc(100vw - 60px);
    background: var(--surface); border: 1px solid var(--border); border-radius: 12px;
    box-shadow: var(--shadow-lg); z-index: 30; overflow: hidden;
}
.colle-sheet-import-pop.is-open { display: block; }
.colle-sheet-import-head { padding: 12px 14px; border-bottom: 1px solid var(--border); font-weight: 650; font-size: 0.82rem; display: flex; justify-content: space-between; align-items: center; }
.colle-sheet-import-head .x { color: var(--text-faint); cursor: pointer; width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; border-radius: 4px; }
.colle-sheet-import-head .x:hover { background: var(--surface-3); color: var(--text); }
.colle-sheet-import-body { padding: 12px 14px 14px; }

.colle-sheet-search { display: flex; align-items: center; gap: 8px; border: 1px solid var(--border); border-radius: 7px; padding: 7px 10px; background: var(--surface-2); margin-bottom: 10px; color: var(--text-faint); }
.colle-sheet-search svg { width: 14px; height: 14px; flex: none; }
.colle-sheet-search input { border: none; background: none; outline: none; color: var(--text); font: inherit; font-size: 0.8rem; width: 100%; }
.colle-sheet-search input::placeholder { color: var(--text-faint); }

.colle-chip-label { font-size: 0.58rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-faint); margin: 0 0 5px; }
.colle-chip-row { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 10px; align-items: center; }
/* Puces volontairement discrètes (demande 2026-08-28 : « trop gros ») : ce
   sont des filtres secondaires, pas les actions principales du popover. */
/* min-width:0 sur TOUS les boutons de ce module : `button { min-width:120px }`
   (form.css, piège générique documenté là-bas) prime sinon sur width/padding
   et étire chaque puce et chaque "+" sur 120px. */
.colle-chip {
    min-width: 0;
    padding: 2px 8px; border-radius: 999px; border: 1px solid var(--border);
    font: inherit; font-size: 0.66rem; line-height: 1.5;
    color: var(--text-muted); cursor: pointer; background: none; white-space: nowrap;
}
.colle-chip.on { background: var(--kind-colle-bg); border-color: var(--kind-colle); color: var(--kind-colle); font-weight: 600; }

/* Puces "type de feuille" : le logo seul (demande 2026-08-28), le libellé
   passe en title/aria-label — les 9 types tiennent ainsi sur une ligne. */
.colle-chip-kind { padding: 3px; border-radius: 7px; display: flex; align-items: center; justify-content: center; }
.colle-chip-kind img { width: 17px; height: 17px; display: block; object-fit: contain; opacity: 0.4; transition: opacity .12s; }
.colle-chip-kind.on img { opacity: 1; }

.colle-chip-add {
    min-width: 0;
    display: flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%;
    border: 1px dashed var(--border); color: var(--text-faint); background: none; cursor: pointer;
    font: inherit; font-size: 11px; line-height: 1; padding: 0;
}
.colle-chip-add:hover { color: var(--kind-colle); border-color: var(--kind-colle); background: var(--kind-colle-bg); }
.colle-chip-add-input { position: relative; display: flex; align-items: center; gap: 4px; border: 1px solid var(--kind-colle); border-radius: 999px; background: var(--surface-2); padding: 2px 8px; }
.colle-chip-add-input input { border: none; background: none; outline: none; color: var(--text); font: inherit; font-size: 0.66rem; width: 130px; }
.colle-chip-add-input input::placeholder { color: var(--text-faint); }
.colle-chip-add-results {
    position: absolute; top: 100%; left: 0; margin-top: 4px; width: 220px;
    background: var(--surface); border: 1px solid var(--border); border-radius: 8px;
    box-shadow: var(--shadow); max-height: 180px; overflow-y: auto; z-index: 31;
}
.colle-chip-add-results:empty { display: none; }
.colle-chip-add-results button {
    display: block; width: 100%; min-width: 0; text-align: left; border: none; background: none; color: var(--text);
    font: inherit; font-size: 0.76rem; padding: 6px 10px; cursor: pointer;
}
.colle-chip-add-results button:hover { background: var(--surface-2); }

.colle-sheet-res-list { display: flex; flex-direction: column; gap: 10px; max-height: 300px; overflow-y: auto; }
/* Résultats groupés par chapitre (demande 2026-08-28) — même gabarit de
   titre de section que le popover "Questions de cours" (.colle-qc-section-
   title), les deux listes se lisent ainsi de la même façon. */
.colle-sheet-res-group { display: flex; flex-direction: column; gap: 5px; }
.colle-sheet-res-group-title {
    display: flex; align-items: center; gap: 6px;
    font-size: 0.62rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
    color: var(--kind-colle); padding: 0 2px;
}
.colle-sheet-res-group-title .d { width: 5px; height: 5px; border-radius: 50%; background: var(--kind-colle); flex: none; }
.colle-sheet-res-item { display: flex; align-items: center; gap: 9px; padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 0.76rem; }
.colle-sheet-res-icon { width: 18px; height: 18px; flex: none; object-fit: contain; }
.colle-sheet-res-item .nm { flex: 1; min-width: 0; color: var(--text); }
.colle-sheet-res-item .nm small { display: block; color: var(--text-faint); font-size: 0.66rem; font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.colle-sheet-res-item button { min-width: 0; font: inherit; font-size: 0.7rem; padding: 4px 10px; border-radius: 6px; border: 1px solid var(--kind-colle); background: var(--kind-colle-bg); color: var(--kind-colle); font-weight: 600; cursor: pointer; flex: none; }
.colle-res-empty { color: var(--text-faint); font-size: 0.76rem; text-align: center; padding: 14px 0; }

/* Panneau PDF affleurant à droite (cf. main ci-dessus) : plus de bordure ni
   d'arrondi de ce côté, sinon la scrollbar reste décalée de 1px et l'angle
   arrondi laisse un coin de fond visible contre le bord de la fenêtre. */
.colle-sheets-col .colles-pdf-panel {
    border-right: none;
    border-radius: 0 0 0 var(--radius-md, 8px);
}
