/**
 * Police Ubuntu Sans, auto-hébergée (voir assets/fonts/ubuntu-sans-variable.woff2), utilisée
 * uniquement par le mode d'impression "Version chant" (voir la règle @media print plus bas dans
 * ce fichier) — le navigateur ne télécharge ce fichier que si une règle CSS l'utilise réellement,
 * donc jamais lors d'une simple lecture de la page, seulement au moment d'imprimer via ce mode.
 * Police variable (axes de graisse 100-800 et de chasse 75-100%) : un seul fichier suffit à
 * couvrir toutes les graisses, pas besoin d'un fichier par variante.
 */
@font-face {
    font-family: 'Ubuntu Sans';
    src: url('fonts/ubuntu-sans-variable.woff2') format('woff2');
    font-weight: 100 800;
    font-stretch: 75% 100%;
    font-style: normal;
    font-display: swap;
}

.gtm-single-part {
    /* En layout "page-builder" (Astra), le thème ne fournit plus aucun conteneur/marge :
       on gère nous-mêmes un espacement confortable et un comportement responsive. */
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    padding: 2em 5%;
    margin: 0 auto;
}

.gtm-single-part * {
    box-sizing: border-box;
    max-width: 100%;
}

.gtm-single-part .gtm-header {
    margin-bottom: 1.5em;
}

.gtm-single-part .gtm-artist {
    margin: 0.2em 0 0.6em;
    font-size: 1.1em;
    opacity: 0.75;
    font-style: italic;
}

.gtm-single-part .gtm-infos {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 0 1.5em;
    padding: 0;
    margin: 0.5em 0 0;
    font-size: 0.95em;
    opacity: 0.85;
}

.gtm-print-button {
    margin-top: 0.8em;
    padding: 0.5em 1em;
    font-size: 0.9em;
    font-weight: 600;
    background: rgba(127,127,127,0.1);
    border: 1px solid rgba(127,127,127,0.3);
    border-radius: 6px;
    cursor: pointer;
    color: inherit;
}

.gtm-print-button:hover {
    background: rgba(127,127,127,0.2);
}

.gtm-print-button-chant {
    margin-left: 0.5em;
}

.gtm-single-part .gtm-section {
    margin: 2em 0;
}

.gtm-single-part .gtm-section h2 {
    border-bottom: 2px solid currentColor;
    padding-bottom: 0.3em;
    margin-bottom: 0.8em;
    opacity: 0.9;
}

.gtm-chords-row {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.gtm-chord-svg {
    color: inherit;
}

.gtm-chord-missing {
    display: inline-block;
    padding: 6px 10px;
    border: 1px dashed currentColor;
    border-radius: 4px;
    opacity: 0.6;
    font-size: 0.85em;
}

.gtm-chord-diagram-unavailable {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100px;
    height: 125px;
    border: 1px dashed currentColor;
    border-radius: 4px;
    opacity: 0.5;
    font-size: 1.5em;
}

/* ---------------------------------------------------------------------
 * Enchaînements d'accords (Intro, Couplet, Refrain...) — puces compactes
 * qui s'enroulent naturellement, alternative à un tableau plein largeur.
 * ------------------------------------------------------------------- */
.gtm-progressions {
    display: flex;
    flex-direction: column;
    gap: 0.5em;
}

.gtm-progression-row {
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 0.6em;
}

.gtm-progression-title {
    font-weight: 600;
    font-size: 0.85em;
    opacity: 0.7;
    min-width: 5.5em;
    padding-top: 4px; /* recentre visuellement le titre par rapport à la hauteur d'un carré de mesure */
}

.gtm-progression-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

/* Grille pro par mesures (déclenchée par l'usage de "|" dans la saisie) : suite de carrés,
   chacun découpé selon le nombre d'accords qu'il contient (1 = plein, 2 = diagonale,
   4 = croix), façon grille de musicien de session. */
.gtm-measures-row {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.gtm-measure-wrapper {
    display: inline-flex;
}

.gtm-measure-square {
    color: inherit;
    background: rgba(127,127,127,0.05);
    border-radius: 3px;
}

.gtm-chord-progression-item {
    position: relative;
    display: inline-block;
}

.gtm-chord-progression-item .gtm-chord-tag {
    display: inline-block;
    background: rgba(127,127,127,0.12);
    border-radius: 5px;
    padding: 3px 9px;
    font-weight: 600;
    font-size: 0.9em;
    cursor: default;
}

.gtm-chord-progression-item:not(.gtm-chord-unknown) .gtm-chord-tag {
    cursor: pointer;
}

.gtm-chord-progression-item.gtm-chord-unknown .gtm-chord-tag {
    background: transparent;
    border-bottom: 1px dashed currentColor;
    border-radius: 0;
    opacity: 0.6;
}

/* Popover diagramme : affiché au survol (souris) ou au focus (clavier/tactile via tabindex) */
.gtm-chord-popover {
    display: none;
    position: absolute;
    z-index: 10;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    margin-top: 6px;
    background: var(--gtm-popover-bg, #fff);
    color: var(--gtm-popover-color, #1d2327);
    border-radius: 6px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.2);
    padding: 6px;
}

.gtm-chord-progression-item:hover .gtm-chord-popover,
.gtm-chord-progression-item:focus .gtm-chord-popover,
.gtm-chord-progression-item:focus-within .gtm-chord-popover {
    display: block;
}

.gtm-tablature,
.gtm-chord-grid {
    font-family: 'Courier New', Courier, monospace;
    white-space: pre;
    overflow-x: auto;
    background: rgba(127,127,127,0.08);
    padding: 1em;
    border-radius: 6px;
    line-height: 1.4;
    font-size: 0.95em;
}

.gtm-control-panel {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    row-gap: 6px;
    column-gap: 18px;
    margin-bottom: 1.2em;
    padding: 0.5em 0.9em;
    background: rgba(127,127,127,0.08);
    border-radius: 6px;
    font-size: 0.85em;
    line-height: 1.3;
}

.gtm-control-item {
    display: flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}

.gtm-control-item label,
.gtm-control-item .gtm-tuning-label {
    font-weight: 600;
    opacity: 0.7;
    font-size: 0.9em;
}

.gtm-tuning-value {
    font-weight: 600;
}

.gtm-control-panel select {
    /* Astra (et d'autres thèmes) appliquent width:100% à tous les champs de formulaire par
       défaut : sans cette règle, les <select> s'étirent sur toute la largeur du conteneur flex
       et provoquent un retour à la ligne alors qu'ils ne contiennent que quelques caractères. */
    width: auto;
    flex: 0 0 auto;
    display: inline-block;
    font-family: inherit;
    font-size: 1em;
    padding: 2px 4px;
}

.gtm-control-panel select.gtm-transpose-select {
    min-width: 3.5em;
    max-width: 4.5em;
}

.gtm-control-panel select.gtm-notation-select {
    min-width: 8em;
}

.gtm-control-panel select.gtm-capo-select {
    min-width: 4.5em;
    max-width: 6em;
}

.gtm-control-panel select.gtm-tuning-select {
    min-width: 10em;
    max-width: 16em;
}

.gtm-tuning-warning {
    color: #b32d2e;
    font-size: 0.85em;
    font-weight: 600;
}

@media (max-width: 480px) {
    .gtm-control-panel {
        column-gap: 10px;
        font-size: 0.8em;
    }
}

.gtm-grid {
    font-family: 'Courier New', Courier, monospace;
    background: rgba(127,127,127,0.08);
    padding: 1em;
    border-radius: 6px;
    overflow-x: auto;
    line-height: 1.6;
}

.gtm-grid-line {
    white-space: pre;
}

.gtm-grid-line-empty {
    height: 1.2em;
}

.gtm-grid-chords {
    min-height: 1.2em;
    color: var(--gtm-chord-color, #b5560a);
    font-weight: bold;
}

.gtm-grid-lyrics {
    margin-bottom: 0.3em;
}

.gtm-chord-tag {
    display: inline-block;
}

.gtm-chord-tag-raw {
    display: inline-block;
    opacity: 0.85;
    font-family: 'Courier New', Courier, monospace;
    font-size: 0.92em;
    letter-spacing: 0.02em;
}

.gtm-styles-menu {
    list-style: none;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5em 1.2em;
}

.gtm-style-count {
    opacity: 0.6;
    font-size: 0.85em;
}

.gtm-song-list {
    list-style: disc;
    padding-left: 1.5em;
}

.gtm-song-artist {
    opacity: 0.65;
    font-style: italic;
    font-size: 0.9em;
}

.gtm-shortcode-error {
    padding: 0.6em 1em;
    background: rgba(214, 54, 56, 0.08);
    border-left: 3px solid #d63638;
    color: #d63638;
}

/* ---------------------------------------------------------------------
 * Pleine largeur (opt-in via le filtre PHP gtm_force_fullwidth) : masque la
 * barre latérale et étend le contenu sur les sélecteurs les plus courants
 * (Twenty Twenty*, Astra, GeneratePress, OceanWP, Genesis Framework...).
 * N'a aucun effet tant que la classe "gtm-fullwidth" n'est pas ajoutée au <body>.
 * ------------------------------------------------------------------- */
body.gtm-fullwidth #secondary,
body.gtm-fullwidth .widget-area,
body.gtm-fullwidth .sidebar {
    display: none !important;
}

body.gtm-fullwidth #primary,
body.gtm-fullwidth .content-area,
body.gtm-fullwidth #main,
body.gtm-fullwidth .site-main,
body.gtm-fullwidth .entry-content,
body.gtm-fullwidth .site-content,
body.gtm-fullwidth .wp-site-blocks {
    max-width: 100% !important;
    width: 100% !important;
    float: none !important;
}

body.gtm-fullwidth .gtm-single-part {
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 2em;
}

/* ---------------------------------------------------------------------
 * En-tête plus compact (logo réduit + police du titre/slogan réduite) sur
 * les pages de partitions uniquement — n'affecte pas le reste du site.
 * Couvre à la fois les classes spécifiques à Astra ET les classes
 * génériques ("site-header", "site-title", "site-description") utilisées
 * par de nombreux thèmes (dont le thème par défaut de WordPress), pour
 * fonctionner quel que soit le thème actif. Actif par défaut, aucune
 * configuration nécessaire. Pour l'ajuster ou le désactiver, surchargez
 * ces règles dans le CSS additionnel de votre thème (Personnaliser > CSS
 * additionnel), qui passe toujours après celui de ce plugin.
 * Pour la version imprimée/export PDF, voir la règle @media print plus
 * bas : l'en-tête du thème y est entièrement masqué (pas juste réduit),
 * une tablature n'a pas besoin de la marque du site sur papier.
 * ------------------------------------------------------------------- */
body.gtm-guitar-part-page .ast-desktop-header .ast-site-identity,
body.gtm-guitar-part-page .ast-desktop-header .site-branding,
body.gtm-guitar-part-page .site-header .site-branding,
body.gtm-guitar-part-page .site-header {
    padding-top: 6px;
    padding-bottom: 6px;
}

body.gtm-guitar-part-page .ast-desktop-header img.custom-logo,
body.gtm-guitar-part-page .ast-desktop-header .site-logo-img,
body.gtm-guitar-part-page .ast-desktop-header .custom-logo-link img,
body.gtm-guitar-part-page .site-header img.custom-logo,
body.gtm-guitar-part-page .site-header .custom-logo-link img,
body.gtm-guitar-part-page .site-header .site-logo-img {
    max-height: 40px;
    width: auto;
}

/* Nom du site et slogan (classes génériques "site-title"/"site-description",
   utilisées par la plupart des thèmes y compris quand ils n'ont pas de logo
   image et affichent le nom du site en texte). */
body.gtm-guitar-part-page .site-header .site-title,
body.gtm-guitar-part-page .site-header .site-title a {
    font-size: 1.15em;
    line-height: 1.2;
}

body.gtm-guitar-part-page .site-header .site-description {
    font-size: 0.8em;
    margin-top: 0.2em;
}

.gtm-files-list {
    list-style: disc;
    padding-left: 1.5em;
}

/* ---------------------------------------------------------------------
 * Vidéo intégrée (YouTube/Vimeo) — wrapper responsive 16:9
 * ------------------------------------------------------------------- */
.gtm-video-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1em;
}

.gtm-video-block {
    width: 100%;
    max-width: 720px;
}

.gtm-video-caption {
    margin: 0 0 0.4em;
    font-weight: 600;
    font-size: 0.9em;
    opacity: 0.8;
}

.gtm-video-embed {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 6px;
    background: #000;
}

/* Deux vidéos renseignées : 50% chacune sur écran large, empilées en pleine largeur sur mobile.
   aspect-ratio (plutôt qu'un hack en padding-bottom) garde un vrai ratio 16:9 quelle que soit
   la largeur réellement occupée par chaque vidéo dans la ligne flex. */
.gtm-video-row-double .gtm-video-block {
    flex: 1 1 320px;
    max-width: calc(50% - 0.5em);
}

@media (max-width: 600px) {
    .gtm-video-row-double .gtm-video-block {
        max-width: 100%;
    }
}

.gtm-video-embed iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

/* ---------------------------------------------------------------------
 * Lien "print-only" : masqué à l'écran, affiché seulement à l'impression
 * (voir la règle @media print tout en bas du fichier) pour remplacer les
 * lecteurs audio/vidéo/iframes non fonctionnels sur papier par une simple
 * référence texte, et laisser toute la place aux paroles et accords.
 * ------------------------------------------------------------------- */
.gtm-print-link {
    display: none;
}

/* ---------------------------------------------------------------------
 * Lecteurs audio/vidéo pour les fichiers uploadés
 * ------------------------------------------------------------------- */
.gtm-media-grid {
    display: flex;
    flex-direction: column;
    gap: 1em;
}

.gtm-media-item {
    background: rgba(127,127,127,0.06);
    border-radius: 6px;
    padding: 0.8em;
}

.gtm-media-label {
    margin: 0 0 0.4em;
    font-weight: 600;
    font-size: 0.9em;
}

.gtm-media-size {
    font-weight: 400;
    opacity: 0.6;
}

.gtm-audio-item audio {
    width: 100%;
}

.gtm-video-item video {
    width: 100%;
    max-width: 480px;
    border-radius: 4px;
    display: block;
}

/* ---------------------------------------------------------------------
 * Riffs & Gimmicks
 * ------------------------------------------------------------------- */
.gtm-riffs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1em;
}

.gtm-riff-card {
    background: rgba(127,127,127,0.06);
    border-radius: 8px;
    padding: 1em;
}

.gtm-riff-card h3 {
    margin: 0 0 0.5em;
    font-size: 1em;
    opacity: 0.9;
}

.gtm-riff-tab {
    margin-bottom: 0.6em;
    font-size: 0.85em;
}

.gtm-riff-card .gtm-media-item {
    padding: 0.5em;
    background: transparent;
}

.gtm-riff-card .gtm-media-label {
    display: none; /* dans une carte de riff, le nom du fichier est redondant avec le titre du riff */
}

/* =======================================================================
 * Version imprimée : les paroles et accords passent au premier plan.
 * - En-tête réduit de moitié (moins de place pour le titre, plus pour la partition)
 * - Vidéos compactées (légende + URL sur une seule ligne) et reléguées en bas de page
 * - Panneau de réglages (Notation/Capo/Transposer) visible en haut, pour savoir dans
 *   quel état (notation, capo, transposition) la grille imprimée a été figée
 * ===================================================================== */
@media print {
    /* Une tablature imprimée n'a besoin ni de la marque du site, ni de sa barre latérale,
       ni des commentaires : on masque entièrement le "chrome" du thème (pas juste réduit,
       comme à l'écran) pour ne garder que le contenu utile au guitariste. Couvre à la fois
       les classes spécifiques à Astra et les classes génériques utilisées par la plupart
       des thèmes WordPress. */
    body.gtm-guitar-part-page .site-header,
    body.gtm-guitar-part-page .ast-desktop-header,
    body.gtm-guitar-part-page #masthead,
    body.gtm-guitar-part-page .site-footer,
    body.gtm-guitar-part-page #colophon,
    body.gtm-guitar-part-page footer.site-footer,
    body.gtm-guitar-part-page #secondary,
    body.gtm-guitar-part-page .widget-area,
    body.gtm-guitar-part-page .sidebar,
    body.gtm-guitar-part-page .comments-area,
    body.gtm-guitar-part-page #comments,
    body.gtm-guitar-part-page nav {
        display: none !important;
    }

    /* Image mise en avant : décorative, pas utile pour jouer — on économise la place et l'encre. */
    .gtm-thumbnail {
        display: none;
    }

    /* Corrige une différence de rendu entre "Enregistrer en PDF" et une impression sur
       imprimante physique : quand un bloc de texte préformaté (white-space: pre, utilisé ici
       pour la tablature et la grille d'accords) est coupé par un saut de page au milieu, le
       moteur de rendu de certains navigateurs insère des sauts de ligne parasites à l'endroit
       de la coupure sur une impression physique, alors que l'export PDF s'en sort généralement
       sans ce défaut. La solution : empêcher ces blocs (et les lignes de la grille une par une)
       d'être coupés au milieu d'une page — ils passent entiers à la page suivante si besoin,
       ce qui produit un rendu identique quelle que soit la destination d'impression choisie. */
    .gtm-tablature,
    .gtm-riff-tab,
    .gtm-chord-grid,
    .gtm-grid-line,
    .gtm-riff-card,
    .gtm-measure-wrapper,
    .gtm-chord-diagram-slot {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    /* Le bouton lui-même ne doit pas apparaître sur le papier/PDF généré */
    .gtm-print-button {
        display: none;
    }

    /* Réordonnancement de la page : priorité à la partition, vidéos/fichiers en dernier.
       (nécessite que .gtm-single-part devienne un conteneur flex en colonne à l'impression ;
       chaque section garde son ordre naturel à l'écran, seul l'ordre d'impression change) */
    .gtm-single-part {
        display: flex;
        flex-direction: column;
    }

    .gtm-header,
    .gtm-thumbnail {
        order: 1;
    }

    .gtm-content {
        order: 2;
    }

    /* Le panneau de contrôle reste visible (contrairement à avant) : il indique dans quel état
       (notation, capo, transposition) la grille ci-dessous a été figée au moment de l'impression.
       Les <select> eux-mêmes s'impriment généralement avec leur valeur sélectionnée visible. */
    .gtm-control-panel {
        order: 3;
        background: none;
        padding: 0.3em 0;
        border-bottom: 1px solid #ccc;
    }

    /* Accordage "Standard" : c'est le réglage par défaut, qui ne change rien à ce qui est joué —
       inutile de lui donner de la place sur une partition imprimée. Le Capo, lui, reste toujours
       affiché à l'impression même sur "Aucun" (voir GTM_Renderer::render_control_panel()).
       Classe posée au rendu initial par GTM_Renderer::render_control_panel() ET mise à jour en
       direct par assets/js/frontend.js (updatePrintVisibility()) si le guitariste change
       l'accordage avant d'imprimer : c'est l'état AFFICHÉ au moment de l'impression qui compte,
       pas forcément le réglage d'origine enregistré sur la partition. */
    .gtm-control-item.gtm-hide-at-print {
        display: none;
    }

    .gtm-progressions-section {
        order: 4;
    }

    .gtm-chords-section {
        order: 5;
    }

    .gtm-grid-section {
        order: 6;
    }

    .gtm-tablature-section {
        order: 7;
    }

    .gtm-riffs-section {
        order: 8;
    }

    /* Vidéos et fichiers : moins importants sur papier, relégués en fin de page */
    .gtm-video-section {
        order: 9;
    }

    .gtm-media-section {
        order: 10;
    }

    .gtm-other-files-section {
        order: 11;
    }

    /* Popover diagramme au survol : inutile et non fonctionnel sur papier (pas de survol) —
       les puces d'accords elles-mêmes restent affichées, déjà compactes. */
    .gtm-chord-popover {
        display: none !important;
    }

    /* En-tête réduit d'environ moitié : le titre de la chanson n'a pas besoin d'autant
       de place à l'impression qu'à l'écran. */
    .gtm-single-part .gtm-header h1 {
        font-size: 1.3em;
        margin: 0 0 0.2em;
    }

    .gtm-single-part .gtm-artist {
        font-size: 0.85em;
        margin: 0 0 0.3em;
    }

    .gtm-single-part .gtm-infos {
        font-size: 0.75em;
        gap: 0 1em;
    }

    .gtm-single-part .gtm-header {
        margin-bottom: 0.6em;
    }

    /* Vidéos : plus d'iframe (ne fonctionne pas sur papier), la légende et le lien texte
       tiennent sur une seule ligne compacte au lieu du bloc vidéo + légende séparée. */
    .gtm-video-embed {
        display: none;
    }

    .gtm-video-caption {
        display: none; /* le lien print-only ci-dessous reprend déjà la légende, pas de doublon */
    }

    .gtm-video-block {
        max-width: 100%;
        margin-bottom: 0.15em;
    }

    .gtm-video-row {
        display: block;
    }

    /* Lecteurs audio/vidéo des fichiers uploadés : remplacés par leur lien texte, sans le
       nom de fichier séparé au-dessus (déjà repris dans le lien) pour rester compact. */
    .gtm-audio-item audio,
    .gtm-video-item video,
    .gtm-media-label {
        display: none;
    }

    .gtm-media-item {
        background: none;
        padding: 0;
        margin-bottom: 0.15em;
    }

    .gtm-media-grid {
        gap: 0.15em;
    }

    /* Le lien texte (légende + URL sur une seule ligne), cible de tout ce qui précède,
       redevient visible à l'impression. */
    .gtm-print-link {
        display: block;
        font-size: 0.8em;
        color: #333;
        margin: 0;
    }

    /* Priorité à la lecture : on réduit l'espacement entre sections pour tenir sur moins de pages */
    .gtm-single-part .gtm-section {
        margin: 0.7em 0;
    }

    .gtm-riff-card .gtm-media-item {
        padding: 0;
    }
}

/**
 * Mode "Version chant" (voir le bouton dédié dans templates/single-guitar-part.php et le
 * gestionnaire de clic dans assets/js/frontend.js, qui pose la classe .gtm-print-mode-chant sur
 * <body> juste avant d'imprimer) : n'imprime QUE les paroles, sans rien de ce qui concerne la
 * guitare (accords, panneau Capo/Notation/Transposition, tablature, riffs, enchaînements
 * d'accords, médias), dans une police plus grande et plus lisible pour chanter — sans lien avec
 * le mode d'impression "normal" ci-dessus (@media print), qui continue de fonctionner à
 * l'identique pour le bouton "Télécharger en PDF / Imprimer" classique.
 */
@media print {
    body.gtm-print-mode-chant .gtm-grid-chords,
    body.gtm-print-mode-chant .gtm-control-panel,
    body.gtm-print-mode-chant .gtm-chords-section,
    body.gtm-print-mode-chant .gtm-progressions-section,
    body.gtm-print-mode-chant .gtm-tablature-section,
    body.gtm-print-mode-chant .gtm-riffs-section,
    body.gtm-print-mode-chant .gtm-video-section,
    body.gtm-print-mode-chant .gtm-media-section,
    body.gtm-print-mode-chant .gtm-other-files-section {
        display: none !important;
    }

    /* La grille perd son fond grisé et sa police à chasse fixe (pensée pour l'alignement
       accords/paroles, devenu inutile puisque les accords sont masqués ci-dessus) : c'est
       maintenant un simple texte de paroles, dans la police Ubuntu Sans auto-hébergée (voir
       @font-face en haut de ce fichier) et une taille nettement plus grande pour rester lisible
       à distance en chantant. */
    body.gtm-print-mode-chant .gtm-grid {
        background: none;
        padding: 0;
        font-family: 'Ubuntu Sans', 'Ubuntu', sans-serif;
        font-size: 16pt;
        line-height: 1.9;
    }

    /* .gtm-grid-line garde "white-space: pre" pour l'alignement accords/paroles en temps normal —
       en mode chant, ce n'est plus nécessaire (et ça empêcherait le retour à la ligne naturel
       d'une parole trop longue pour la largeur de la page). */
    body.gtm-print-mode-chant .gtm-grid-line {
        white-space: normal;
    }

    body.gtm-print-mode-chant .gtm-grid-lyrics {
        margin-bottom: 0.5em;
    }

    /* Titre "Grille d'accords / Paroles" de la section : n'a plus de sens une fois les accords
       retirés (voir la demande utilisateur ayant motivé cette règle) — seules les paroles
       restent affichées dans cette section en mode chant. */
    body.gtm-print-mode-chant .gtm-grid-section > h2 {
        display: none;
    }

    /* Contenu natif de l'article WordPress (éditeur classique/Gutenberg, via the_content() dans
       templates/single-guitar-part.php) — hors des métadonnées propres au plugin (artiste,
       tonalité, accords, paroles...), donc hors de propos sur une feuille de paroles à chanter :
       masqué s'il est renseigné, comme tout le reste du contenu "guitare" ci-dessus. */
    body.gtm-print-mode-chant .gtm-content {
        display: none;
    }
}
