/* ==========================================================================
   PORTAIL CLIENT GRENIER SOLUTIONS — feuille de style commune
   --------------------------------------------------------------------------
   Remplace Bootstrap et client-shell.css pour le portail client seulement.
   L'admin et les pages publiques n'incluent jamais ce fichier.

   Préfixe `pc-` partout : les styles partagés avec l'admin (tickets.css,
   documents.css, wiki.css…) ne sont jamais touchés par une règle d'ici.
   Les retouches propres à un module vivent dans public/css/portail/<module>.css.

   Décisions : docs/REFONTE-PORTAIL-CLIENT.md
   ========================================================================== */

@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 300 800;
    font-display: swap;
    src: url('/fonts/source-sans-3/normal-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 300 800;
    font-display: swap;
    src: url('/fonts/source-sans-3/normal-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Source Sans 3';
    font-style: italic;
    font-weight: 300 800;
    font-display: swap;
    src: url('/fonts/source-sans-3/italique-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Source Sans 3';
    font-style: italic;
    font-weight: 300 800;
    font-display: swap;
    src: url('/fonts/source-sans-3/italique-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* --------------------------------------------------------------------------
   Jetons
   -------------------------------------------------------------------------- */
:root {
    /* Fonds */
    --pc-fond: #EFEDE5;          /* gris chaud de l'application */
    --pc-feuille: #FFFFFF;       /* panneaux, tuiles, tableaux */
    --pc-teinte: #F7F5EF;        /* en-têtes de groupe, survol neutre */
    --pc-survol: #F2F6FA;        /* survol d'une ligne cliquable */

    /* Encre */
    --pc-encre: #1F1E1B;
    --pc-encre-2: #58554C;
    --pc-encre-3: #757164;       /* contraste AA sur blanc */

    /* Filets */
    --pc-filet: #D8D4C7;
    --pc-filet-2: #E8E5DB;

    /* Marque (logo) */
    --pc-marine: #0C3D75;
    --pc-marine-f: #082D57;
    --pc-marine-t: #E4ECF4;
    --pc-ciel: #2E93D0;
    --pc-ciel-t: #E1EFF8;

    /* États */
    --pc-ok: #2C6A4C;   --pc-ok-t: #E3EFE8;
    --pc-att: #8A5800;  --pc-att-t: #F8EDD3;
    --pc-mal: #A53822;  --pc-mal-t: #F7E6E1;

    --pc-police: 'Source Sans 3', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --pc-mono: ui-monospace, 'Cascadia Mono', Consolas, 'SFMono-Regular', monospace;

    --pc-rayon: 4px;
    --pc-rayon-g: 6px;
    --pc-haut: 52px;             /* hauteur de la barre du haut */
    --pc-ombre-menu: 0 8px 22px rgba(31, 30, 27, .15);

    --ic-accent: var(--pc-ciel);
}

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body.pc-corps {
    margin: 0;
    min-height: 100vh;
    font: 15px/1.45 var(--pc-police);
    color: var(--pc-encre);
    background: var(--pc-fond);
    -webkit-font-smoothing: antialiased;
}
/* Règles de base en :where() : spécificité d'un simple élément, pour que
   n'importe quelle classe (.pc-btn-pri…) l'emporte sans artifice. */
:where(.pc-corps) :where(button, input, select, textarea) { font: inherit; color: inherit; }
:where(.pc-corps) a { color: var(--pc-marine); text-decoration: none; }
:where(.pc-corps) a:hover { text-decoration: underline; }
:where(.pc-corps) :where(img, svg) { vertical-align: middle; }
:where(.pc-corps) :where(h1, h2, h3, h4) { margin: 0; line-height: 1.2; }
:where(.pc-corps) p { margin: 0 0 .6em; }
.pc-corps :focus-visible { outline: 2px solid var(--pc-ciel); outline-offset: 1px; }
.pc-corps [hidden] { display: none !important; }
:where(.pc-corps) hr { border: 0; border-top: 1px solid var(--pc-filet-2); margin: 12px 0; }
:where(.pc-corps) code, .pc-mono { font-family: var(--pc-mono); }

/* Icônes */
.pc-ic { width: 16px; height: 16px; flex: none; color: inherit; }
.pc-ic-g { width: 20px; height: 20px; }
.pc-ic-tg { width: 40px; height: 40px; color: var(--pc-marine); }

/* Logo d'entreprise sans image (initiales) : à plat, aux couleurs du portail.
   business-logo.css (partagé avec l'admin) pose un dégradé ; on ne le retouche
   que dans le portail client. */
.pc-corps .bl-empty, .pc-corps .bl-broken { background: var(--pc-marine-t); color: var(--pc-marine); }
.pc-corps .bl-empty .bl-fallback, .pc-corps .bl-broken .bl-fallback { color: var(--pc-marine); }

/* Utilitaires (peu, volontairement) */
.pc-muet { color: var(--pc-encre-3); }
.pc-doux { color: var(--pc-encre-2); }
.pc-petit { font-size: 13.5px; }
.pc-num { font-variant-numeric: tabular-nums; }
.pc-id { white-space: nowrap; font-weight: 600; color: var(--pc-marine); font-variant-numeric: tabular-nums; }
.pc-pousse { flex: 1 1 auto; }
.pc-ligne { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pc-pile > * + * { margin-top: 12px; }
.pc-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.pc-tronque { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

/* --------------------------------------------------------------------------
   Barre du haut
   -------------------------------------------------------------------------- */
.pc-haut {
    position: sticky; top: 0; z-index: 40;
    height: var(--pc-haut);
    display: flex; align-items: center; gap: 6px;
    padding: 0 12px 0 8px;
    background: var(--pc-feuille);
    border-bottom: 1px solid var(--pc-filet);
}
.pc-lanceur-btn {
    width: 38px; height: 38px; border: 0; border-radius: var(--pc-rayon);
    background: none; color: var(--pc-marine); cursor: pointer;
    display: grid; place-items: center; flex: none;
}
.pc-lanceur-btn .pc-ic { width: 22px; height: 22px; }
.pc-lanceur-btn:hover, .pc-lanceur-btn[aria-expanded="true"] { background: var(--pc-teinte); }
.pc-logo { display: flex; align-items: center; padding: 0 6px; flex: none; }
.pc-logo img { height: 26px; display: block; }
.pc-sep { width: 1px; height: 24px; background: var(--pc-filet); flex: none; margin: 0 4px; }
.pc-module-nom { font-size: 16px; font-weight: 600; white-space: nowrap; color: var(--pc-encre); }
.pc-corps a.pc-module-nom:hover { text-decoration: none; color: var(--pc-marine); }

.pc-recherche-btn {
    margin-left: 14px; height: 34px; width: min(340px, 30vw);
    display: flex; align-items: center; gap: 8px; padding: 0 10px;
    border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon);
    background: var(--pc-feuille); color: var(--pc-encre-3); cursor: text; text-align: left;
}
.pc-recherche-btn:hover { border-color: #BDB8A8; }
.pc-recherche-btn kbd { margin-left: auto; font: 12px var(--pc-mono); color: var(--pc-encre-3); border: 1px solid var(--pc-filet); border-radius: 3px; padding: 0 5px; background: var(--pc-teinte); }

.pc-haut-droite { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.pc-soutien { display: flex; align-items: center; gap: 12px; font-size: 13.5px; color: var(--pc-encre-2); margin-right: 6px; }
.pc-soutien a { color: var(--pc-encre-2); display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.pc-soutien a:hover { color: var(--pc-marine); }

.pc-bouton-haut {
    height: 36px; padding: 0 8px; border: 0; border-radius: var(--pc-rayon);
    background: none; cursor: pointer; display: flex; align-items: center; gap: 8px;
    color: var(--pc-encre);
}
.pc-bouton-haut:hover, .pc-bouton-haut[aria-expanded="true"] { background: var(--pc-teinte); }
.pc-entreprise-nom { font-weight: 600; font-size: 14px; max-width: 220px; }
.pc-avatar {
    width: 30px; height: 30px; border-radius: 50%;
    background: var(--pc-ciel); color: #fff; font-weight: 700; font-size: 12.5px;
    display: grid; place-items: center; flex: none; letter-spacing: .02em;
}

/* Menus déroulants */
.pc-deroulant { position: relative; }
.pc-menu {
    position: absolute; right: 0; top: calc(100% + 6px); z-index: 60;
    min-width: 250px; padding: 5px;
    background: var(--pc-feuille); border: 1px solid var(--pc-filet);
    border-radius: var(--pc-rayon); box-shadow: var(--pc-ombre-menu);
}
.pc-menu-tete { padding: 8px 10px 6px; }
.pc-menu-tete b { display: block; font-weight: 600; }
.pc-menu-tete small { color: var(--pc-encre-3); font-size: 13px; }
.pc-menu-titre { padding: 8px 10px 3px; font-size: 12.5px; font-weight: 600; color: var(--pc-encre-3); }
.pc-menu a, .pc-menu button {
    display: flex; align-items: center; gap: 9px; width: 100%;
    padding: 7px 10px; border: 0; border-radius: 3px; background: none;
    color: var(--pc-encre); text-align: left; cursor: pointer; font-size: 14.5px;
}
.pc-menu a:hover, .pc-menu button:hover { background: var(--pc-marine-t); text-decoration: none; }
.pc-menu .pc-courant { margin-left: auto; color: var(--pc-ok); }
.pc-menu hr { margin: 5px 0; }
.pc-menu form { margin: 0; }

/* --------------------------------------------------------------------------
   Lanceur d'applications (panneau déroulant)
   -------------------------------------------------------------------------- */
.pc-lanceur {
    position: fixed; left: 0; top: var(--pc-haut); z-index: 50;
    width: min(800px, 100vw); max-height: calc(100vh - var(--pc-haut));
    overflow: auto; padding: 14px;
    background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-top: 0;
    border-radius: 0 0 var(--pc-rayon-g) 0; box-shadow: 0 12px 28px rgba(31, 30, 27, .18);
}
.pc-lanceur-filtre {
    width: 100%; height: 34px; padding: 0 10px; margin-bottom: 12px;
    border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon);
}
.pc-lanceur-filtre:focus { outline: none; border-color: var(--pc-ciel); box-shadow: 0 0 0 2px var(--pc-ciel-t); }
.pc-lanceur .pc-grille-apps { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; }
/* minmax(0, 1fr) : la colonne du nom peut rétrécir sous la largeur de son
   plus long mot ; sinon « Abonnements » + son compteur débordent de la case. */
.pc-lanceur .pc-tuile {
    min-height: 0; min-width: 0; padding: 8px; border-color: transparent;
    grid-template-columns: 32px minmax(0, 1fr) auto; grid-template-rows: auto; column-gap: 9px; align-items: center;
}
.pc-lanceur .pc-tuile .pc-tuile-nom { min-width: 0; overflow-wrap: break-word; hyphens: auto; }
.pc-lanceur .pc-tuile .pc-ic-tg { width: 30px; height: 30px; margin: 0; grid-row: auto; }
.pc-lanceur .pc-tuile .pc-tuile-nom { grid-column: 2; grid-row: 1; font-size: 14.5px; }
.pc-lanceur .pc-tuile .pc-tuile-ligne { display: none; }
.pc-lanceur .pc-tuile .pc-cnt { grid-column: 3; grid-row: 1; align-self: center; }
.pc-lanceur .pc-tuile[aria-current="page"] { background: var(--pc-marine-t); }

/* --------------------------------------------------------------------------
   Tuiles d'applications
   -------------------------------------------------------------------------- */
.pc-grille-apps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.pc-tuile {
    position: relative; display: grid;
    grid-template-columns: 1fr auto; grid-template-rows: auto auto auto; align-content: start;
    min-height: 116px; padding: 12px 12px 11px;
    background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon-g);
    color: var(--pc-encre); text-align: left;
}
.pc-corps a.pc-tuile:hover { border-color: var(--pc-marine); background: #FBFCFE; text-decoration: none; }
.pc-tuile .pc-ic-tg { grid-column: 1; margin-bottom: 9px; }
.pc-tuile-nom { grid-column: 1 / 3; font-weight: 600; font-size: 15.5px; line-height: 1.2; }
.pc-tuile-ligne { grid-column: 1 / 3; margin-top: 2px; font-size: 13px; color: var(--pc-encre-3); }
.pc-tuile .pc-cnt { grid-column: 2; grid-row: 1; align-self: start; justify-self: end; }
.pc-tuile-ext { position: absolute; right: 12px; top: 12px; color: var(--pc-encre-3); }
/* Module non inclus pour ce client : visible, inactif. */
.pc-tuile.pc-inactive { background: var(--pc-teinte); color: var(--pc-encre-3); cursor: default; }
.pc-tuile.pc-inactive .pc-ic-tg { color: #A9A493; --ic-accent: #C4BFAE; }
.pc-tuile.pc-inactive .pc-tuile-ligne { font-style: italic; }

/* Compteurs */
.pc-cnt {
    display: inline-block; min-width: 24px; height: 22px; padding: 0 6px;
    background: var(--pc-marine); color: #fff; border-radius: 3px;
    font: 600 12px/22px var(--pc-mono); text-align: center;
}
.pc-cnt.pc-action { background: var(--pc-mal); }
.pc-cnt.pc-info { background: var(--pc-ciel-t); color: var(--pc-marine); }
.pc-cnt.pc-zero { background: var(--pc-teinte); color: var(--pc-encre-3); border: 1px solid var(--pc-filet); line-height: 20px; }

/* --------------------------------------------------------------------------
   Bannière (double authentification)
   -------------------------------------------------------------------------- */
.pc-banniere {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 16px; font-size: 14px;
    background: var(--pc-att-t); color: #4E3600; border-bottom: 1px solid #EBD9AE;
}
.pc-banniere a { font-weight: 600; color: #4E3600; text-decoration: underline; }
.pc-banniere button { margin-left: auto; border: 0; background: none; cursor: pointer; color: inherit; padding: 4px; border-radius: 3px; display: grid; place-items: center; }
.pc-banniere button:hover { background: rgba(0, 0, 0, .06); }

/* --------------------------------------------------------------------------
   Page et en-tête de module
   -------------------------------------------------------------------------- */
.pc-page { padding: 18px 22px 40px; max-width: 1600px; margin: 0 auto; }
.pc-page-large { max-width: none; }
.pc-entete-module {
    background: var(--pc-feuille); border-bottom: 1px solid var(--pc-filet);
    padding: 10px 22px 10px;
}
.pc-entete-module .pc-r1, .pc-entete-module .pc-r2 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pc-entete-module .pc-r1 { min-height: 34px; }
.pc-entete-module .pc-r2 { margin-top: 8px; }
.pc-fil { display: flex; align-items: center; gap: 8px; font-size: 21px; font-weight: 700; letter-spacing: -.01em; min-width: 0; }
.pc-fil a { font-weight: 400; font-size: 17px; }
.pc-fil .pc-fil-sep { color: var(--pc-encre-3); font-weight: 400; }
.pc-titre-page { font-size: 24px; font-weight: 700; letter-spacing: -.01em; }
.pc-sous-titre { color: var(--pc-encre-2); font-size: 14px; }

/* --------------------------------------------------------------------------
   Boutons
   -------------------------------------------------------------------------- */
.pc-btn {
    height: 32px; padding: 0 13px;
    display: inline-flex; align-items: center; justify-content: center; gap: 7px;
    border: 1px solid var(--pc-filet); border-radius: 3px;
    background: var(--pc-feuille); color: var(--pc-encre);
    font-weight: 600; font-size: 14.5px; white-space: nowrap; cursor: pointer;
    text-decoration: none;
}
.pc-corps a.pc-btn:hover { text-decoration: none; }
.pc-btn:hover { background: var(--pc-teinte); }
.pc-btn:disabled, .pc-btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.pc-btn-pri { background: var(--pc-marine); border-color: var(--pc-marine); color: #fff; }
.pc-corps a.pc-btn-pri { color: #fff; }
.pc-btn-pri:hover { background: var(--pc-marine-f); }
.pc-btn-danger { color: var(--pc-mal); border-color: #E2B9AF; }
.pc-btn-danger:hover { background: var(--pc-mal-t); }
.pc-btn-plat { border-color: transparent; background: none; }
.pc-btn-plat:hover { background: var(--pc-teinte); }
.pc-btn-pt { height: 27px; padding: 0 9px; font-size: 13.5px; }
.pc-btn-gr { height: 40px; padding: 0 18px; font-size: 15.5px; }
.pc-btn-bloc { width: 100%; }

/* Contrôle segmenté (vues Liste / Kanban / Calendrier) */
.pc-vues { display: inline-flex; border: 1px solid var(--pc-filet); border-radius: 3px; overflow: hidden; background: var(--pc-feuille); }
.pc-vues a, .pc-vues button {
    height: 30px; padding: 0 11px; display: inline-flex; align-items: center; gap: 6px;
    border: 0; border-right: 1px solid var(--pc-filet); background: none;
    color: var(--pc-encre-2); cursor: pointer; font-size: 14px;
}
.pc-vues > :last-child { border-right: 0; }
.pc-vues a:hover, .pc-vues button:hover { background: var(--pc-teinte); text-decoration: none; }
.pc-vues .pc-actif, .pc-vues [aria-pressed="true"] { background: var(--pc-marine); color: #fff; }
.pc-corps .pc-vues a.pc-actif { color: #fff; }

/* Onglets */
/* Le filet du bas est une ombre intérieure (et non une bordure avec des
   onglets en marge négative) : sinon les onglets débordent d'un pixel vers le
   bas et Windows affiche une barre de défilement verticale (▲ ▼) à côté. */
.pc-onglets {
    display: flex; gap: 2px; box-shadow: inset 0 -1px 0 var(--pc-filet);
    overflow-x: auto; overflow-y: hidden; scrollbar-width: none;
}
.pc-onglets::-webkit-scrollbar { display: none; }
.pc-onglets a, .pc-onglets button {
    flex: none; padding: 7px 12px 9px; border: 0; border-bottom: 2px solid transparent;
    background: none; color: var(--pc-encre-2); cursor: pointer; white-space: nowrap; font-size: 14.5px;
}
.pc-onglets a:hover, .pc-onglets button:hover { color: var(--pc-encre); text-decoration: none; }
.pc-onglets .pc-actif, .pc-onglets [aria-selected="true"] { border-bottom-color: var(--pc-marine); color: var(--pc-marine); font-weight: 600; }
.pc-onglets .pc-n { margin-left: 5px; font: 12px var(--pc-mono); color: var(--pc-encre-3); }

/* --------------------------------------------------------------------------
   Formulaires
   -------------------------------------------------------------------------- */
.pc-champ { display: block; margin-bottom: 14px; }
.pc-champ > label, .pc-etiquette { display: block; margin-bottom: 5px; font-weight: 600; font-size: 14px; }
.pc-aide { margin-top: 5px; font-size: 13px; color: var(--pc-encre-3); }
.pc-entree, .pc-selecteur, .pc-zone {
    display: block; width: 100%; padding: 7px 10px;
    border: 1px solid var(--pc-filet); border-radius: 3px; background: var(--pc-feuille);
    color: var(--pc-encre); font-size: 15px; line-height: 1.35;
}
.pc-entree, .pc-selecteur { height: 36px; }
.pc-zone { min-height: 110px; resize: vertical; }
.pc-entree:focus, .pc-selecteur:focus, .pc-zone:focus { outline: none; border-color: var(--pc-ciel); box-shadow: 0 0 0 3px var(--pc-ciel-t); }
.pc-entree[aria-invalid="true"] { border-color: var(--pc-mal); }
.pc-case { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.pc-case input { width: 16px; height: 16px; accent-color: var(--pc-marine); }
.pc-recherche-locale { position: relative; width: 340px; max-width: 100%; }
.pc-recherche-locale .pc-ic { position: absolute; left: 10px; top: 10px; color: var(--pc-encre-3); }
.pc-recherche-locale .pc-entree { padding-left: 32px; height: 34px; }

/* --------------------------------------------------------------------------
   Panneaux, listes, tableaux
   -------------------------------------------------------------------------- */
.pc-panneau { background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon-g); min-width: 0; }
.pc-panneau-tete { display: flex; align-items: baseline; gap: 10px; padding: 12px 14px 10px; border-bottom: 1px solid var(--pc-filet-2); }
.pc-panneau-tete h2, .pc-panneau-tete h3 { font-size: 16px; font-weight: 700; }
.pc-panneau-tete .pc-muet { font-size: 13px; }
.pc-panneau-tete > :last-child:not(:first-child) { margin-left: auto; }
.pc-panneau-corps { padding: 12px 14px; }
.pc-panneau-pied { padding: 9px 14px; border-top: 1px solid var(--pc-filet-2); font-size: 14px; }

.pc-tableau-cadre { background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon-g); overflow-x: auto; }
.pc-tableau { width: 100%; border-collapse: collapse; font-size: 14.5px; }
.pc-tableau th {
    position: sticky; top: 0; z-index: 1;
    padding: 9px 12px; text-align: left; font-weight: 600; font-size: 13.5px; color: var(--pc-encre-2);
    background: var(--pc-teinte); border-bottom: 1px solid var(--pc-filet); white-space: nowrap;
}
.pc-tableau td { padding: 9px 12px; border-bottom: 1px solid var(--pc-filet-2); vertical-align: middle; }
.pc-tableau tbody tr:last-child td { border-bottom: 0; }
.pc-tableau tbody tr.pc-cliquable { cursor: pointer; }
.pc-tableau tbody tr.pc-cliquable:hover td { background: var(--pc-survol); }
.pc-tableau tbody tr.pc-selection td { background: var(--pc-marine-t); }
.pc-tableau tbody tr.pc-a-agir td:first-child { box-shadow: inset 3px 0 0 var(--pc-att); }
.pc-tableau .pc-droite { text-align: right; }
.pc-tableau .pc-etroit { width: 1%; white-space: nowrap; }

.pc-liste-lignes { list-style: none; margin: 0; padding: 0; }
.pc-liste-lignes > li { padding: 10px 14px; border-bottom: 1px solid var(--pc-filet-2); }
.pc-liste-lignes > li:last-child { border-bottom: 0; }
.pc-liste-lignes > li.pc-cliquable:hover { background: var(--pc-survol); cursor: pointer; }

.pc-dl { display: grid; grid-template-columns: max-content 1fr; gap: 6px 18px; margin: 0; font-size: 14.5px; }
.pc-dl dt { color: var(--pc-encre-3); }
.pc-dl dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }

.pc-groupe-tete { padding: 7px 14px; background: var(--pc-teinte); border-bottom: 1px solid var(--pc-filet-2); font-size: 13px; font-weight: 600; color: var(--pc-encre-2); }

/* Étiquettes d'état (rectangles, pas de pilules) */
.pc-etat {
    display: inline-block; padding: 1px 7px; border-radius: 3px;
    font-size: 13px; font-weight: 600; white-space: nowrap;
    background: var(--pc-teinte); color: var(--pc-encre-2);
}
.pc-etat.pc-marine { background: var(--pc-marine-t); color: var(--pc-marine); }
.pc-etat.pc-ok { background: var(--pc-ok-t); color: var(--pc-ok); }
.pc-etat.pc-att { background: var(--pc-att-t); color: var(--pc-att); }
.pc-etat.pc-mal { background: var(--pc-mal-t); color: var(--pc-mal); }

/* Avis dans la page */
.pc-avis { display: flex; gap: 10px; align-items: flex-start; padding: 10px 14px; border-radius: var(--pc-rayon); border: 1px solid var(--pc-filet); background: var(--pc-feuille); font-size: 14.5px; }
.pc-avis .pc-ic { margin-top: 2px; }
.pc-avis.pc-ok { background: var(--pc-ok-t); border-color: #BCD6C6; color: #1F4D37; }
.pc-avis.pc-att { background: var(--pc-att-t); border-color: #EBD9AE; color: #4E3600; }
.pc-avis.pc-mal { background: var(--pc-mal-t); border-color: #E5BFB5; color: #6E2414; }
.pc-avis.pc-info { background: var(--pc-ciel-t); border-color: #BFDCEE; color: #0B3459; }

/* État vide */
.pc-vide { padding: 34px 20px; text-align: center; color: var(--pc-encre-2); }
.pc-vide .pc-ic-tg { color: #B6B09E; --ic-accent: #C9C3B2; margin-bottom: 8px; }
.pc-vide b { display: block; color: var(--pc-encre); font-size: 16px; margin-bottom: 3px; }

/* Barre de progression */
.pc-prog { height: 6px; background: var(--pc-filet-2); border-radius: 1px; overflow: hidden; }
.pc-prog > i { display: block; height: 100%; background: var(--pc-marine); }

/* Pagination */
.pc-pagination { display: flex; align-items: center; gap: 4px; justify-content: flex-end; padding: 10px 0; }
.pc-pagination a, .pc-pagination span {
    min-width: 32px; height: 30px; padding: 0 8px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--pc-filet); border-radius: 3px; background: var(--pc-feuille); font-size: 14px;
}
.pc-pagination a:hover { background: var(--pc-teinte); text-decoration: none; }
.pc-pagination .pc-actif { background: var(--pc-marine); border-color: var(--pc-marine); color: #fff; }

/* --------------------------------------------------------------------------
   Tiroir latéral (détail d'une demande, etc.)
   -------------------------------------------------------------------------- */
.pc-tiroir {
    position: fixed; top: var(--pc-haut); right: 0; bottom: 0; z-index: 35;
    width: min(560px, 100vw); display: flex; flex-direction: column;
    background: var(--pc-feuille); border-left: 1px solid var(--pc-filet);
    box-shadow: -10px 0 26px rgba(31, 30, 27, .10);
}
.pc-tiroir-tete { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--pc-filet); background: var(--pc-teinte); }
.pc-tiroir-corps { flex: 1; overflow: auto; padding: 14px 16px 24px; }

/* --------------------------------------------------------------------------
   Kanban (lecture seule)
   -------------------------------------------------------------------------- */
.pc-kanban { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(250px, 1fr); gap: 12px; overflow-x: auto; align-items: start; padding-bottom: 6px; }
.pc-colonne { background: var(--pc-teinte); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon-g); min-height: 120px; }
.pc-colonne-tete { display: flex; align-items: center; gap: 8px; padding: 9px 11px; font-weight: 600; font-size: 14px; border-bottom: 1px solid var(--pc-filet); }
.pc-colonne-tete .pc-cnt { margin-left: auto; }
.pc-colonne.pc-a-agir { border-color: #E3C77F; }
.pc-colonne.pc-a-agir .pc-colonne-tete { background: var(--pc-att-t); }
.pc-colonne-corps { padding: 8px; display: grid; gap: 7px; }
.pc-fiche { display: block; padding: 9px 10px; background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon); color: var(--pc-encre); }
.pc-corps a.pc-fiche:hover { border-color: var(--pc-marine); text-decoration: none; }
.pc-fiche-titre { font-weight: 600; line-height: 1.25; margin: 2px 0 4px; }
.pc-fiche-meta { font-size: 13px; color: var(--pc-encre-3); display: flex; gap: 8px; flex-wrap: wrap; }

/* --------------------------------------------------------------------------
   Calendrier (mois)
   -------------------------------------------------------------------------- */
.pc-cal { background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon-g); overflow: hidden; }
.pc-cal-tete { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--pc-filet); }
.pc-cal-tete h3 { font-size: 17px; font-weight: 700; text-transform: capitalize; min-width: 150px; }
.pc-cal-grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.pc-cal-jsem { padding: 6px 8px; font-size: 12.5px; font-weight: 600; color: var(--pc-encre-3); background: var(--pc-teinte); border-bottom: 1px solid var(--pc-filet); }
.pc-cal-jour { min-height: 96px; padding: 4px 6px 6px; border-right: 1px solid var(--pc-filet-2); border-bottom: 1px solid var(--pc-filet-2); min-width: 0; }
.pc-cal-jour:nth-child(7n) { border-right: 0; }
.pc-cal-jour.pc-hors { background: #FAF9F5; color: var(--pc-encre-3); }
.pc-cal-num { font-size: 13px; font-variant-numeric: tabular-nums; margin-bottom: 3px; display: inline-block; min-width: 22px; text-align: center; border-radius: 3px; }
.pc-cal-jour.pc-auj .pc-cal-num { background: var(--pc-marine); color: #fff; font-weight: 700; }
.pc-cal-evt {
    display: block; margin-top: 2px; padding: 1px 5px; border-radius: 3px;
    font-size: 12.5px; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    background: var(--pc-marine-t); color: var(--pc-marine);
}
.pc-corps a.pc-cal-evt:hover { text-decoration: none; filter: brightness(.96); }
.pc-cal-evt.pc-att { background: var(--pc-att-t); color: var(--pc-att); }
.pc-cal-evt.pc-mal { background: var(--pc-mal-t); color: var(--pc-mal); }
.pc-cal-evt.pc-ok { background: var(--pc-ok-t); color: var(--pc-ok); }

/* --------------------------------------------------------------------------
   Palette de recherche (Ctrl K)
   -------------------------------------------------------------------------- */
.pc-voile { position: fixed; inset: 0; z-index: 70; background: rgba(31, 30, 27, .28); }
.pc-palette {
    position: fixed; z-index: 71; left: 50%; top: 12vh; transform: translateX(-50%);
    width: min(640px, calc(100vw - 24px)); max-height: 70vh; display: flex; flex-direction: column;
    background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon-g);
    box-shadow: 0 18px 44px rgba(31, 30, 27, .25);
}
.pc-palette-champ { display: flex; align-items: center; gap: 10px; padding: 0 14px; border-bottom: 1px solid var(--pc-filet); }
.pc-palette-champ input { flex: 1; height: 50px; border: 0; outline: none; font-size: 17px; background: none; }
.pc-corps .pc-palette-champ input:focus-visible { outline: none; }
.pc-palette-champ:focus-within { box-shadow: inset 0 -2px 0 var(--pc-ciel); }
.pc-palette-resultats { overflow: auto; padding: 6px; }
.pc-palette-groupe { padding: 8px 10px 4px; font-size: 12.5px; font-weight: 600; color: var(--pc-encre-3); }
.pc-palette-res { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 3px; color: var(--pc-encre); }
.pc-corps a.pc-palette-res:hover, .pc-palette-res.pc-actif { background: var(--pc-marine-t); text-decoration: none; }
.pc-palette-res small { color: var(--pc-encre-3); margin-left: auto; white-space: nowrap; }
.pc-palette-pied { padding: 7px 14px; border-top: 1px solid var(--pc-filet-2); font-size: 12.5px; color: var(--pc-encre-3); }

/* --------------------------------------------------------------------------
   Onglets mobiles (barre du bas)
   -------------------------------------------------------------------------- */
.pc-onglets-mobiles { display: none; }

/* --------------------------------------------------------------------------
   Points de rupture
   -------------------------------------------------------------------------- */
@media (max-width: 1200px) {
    .pc-grille-apps { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .pc-soutien .pc-soutien-tel { display: none; }
}
@media (max-width: 980px) {
    .pc-recherche-btn { width: 40px; margin-left: 6px; padding: 0; justify-content: center; }
    .pc-recherche-btn span, .pc-recherche-btn kbd { display: none; }
    .pc-soutien { display: none; }
    .pc-grille-apps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .pc-lanceur .pc-grille-apps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
    :root { --pc-haut: 50px; }
    .pc-page { padding: 14px 12px 90px; }
    .pc-entete-module { padding: 10px 12px; }
    .pc-module-nom, .pc-sep, .pc-entreprise-nom, .pc-bouton-nouvelle span { display: none; }
    .pc-logo img { height: 22px; }
    .pc-grille-apps { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .pc-tuile { min-height: 104px; }
    .pc-lanceur { width: 100vw; border-radius: 0; height: calc(100dvh - var(--pc-haut) - 58px); max-height: none; }
    .pc-tiroir { top: 0; width: 100vw; z-index: 65; }
    .pc-fil { font-size: 18px; }
    .pc-tableau-cadre.pc-empilable { border: 0; background: none; overflow: visible; }
    .pc-tableau-cadre.pc-empilable .pc-tableau thead { display: none; }
    .pc-tableau-cadre.pc-empilable .pc-tableau, .pc-tableau-cadre.pc-empilable .pc-tableau tbody,
    .pc-tableau-cadre.pc-empilable .pc-tableau tr, .pc-tableau-cadre.pc-empilable .pc-tableau td { display: block; width: 100%; }
    .pc-tableau-cadre.pc-empilable .pc-tableau tr { background: var(--pc-feuille); border: 1px solid var(--pc-filet); border-radius: var(--pc-rayon-g); margin-bottom: 8px; padding: 6px 0; }
    .pc-tableau-cadre.pc-empilable .pc-tableau td { border: 0; padding: 3px 12px; }
    .pc-tableau-cadre.pc-empilable .pc-tableau td[data-libelle]::before { content: attr(data-libelle) " · "; color: var(--pc-encre-3); font-size: 13px; }

    .pc-onglets-mobiles {
        display: grid; grid-template-columns: repeat(4, 1fr);
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
        height: calc(58px + env(safe-area-inset-bottom, 0px)); padding-bottom: env(safe-area-inset-bottom, 0px);
        background: var(--pc-feuille); border-top: 1px solid var(--pc-filet);
    }
    .pc-onglets-mobiles a, .pc-onglets-mobiles button {
        display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
        border: 0; background: none; color: var(--pc-encre-2); font-size: 12px; cursor: pointer;
    }
    .pc-onglets-mobiles .pc-ic { width: 22px; height: 22px; }
    .pc-onglets-mobiles .pc-actif { color: var(--pc-marine); font-weight: 600; }
    .pc-corps .pc-onglets-mobiles a:hover { text-decoration: none; }
}

@media print {
    .pc-haut, .pc-onglets-mobiles, .pc-banniere, .pc-lanceur { display: none !important; }
    body.pc-corps { background: #fff; }
}
@media (prefers-reduced-motion: reduce) {
    .pc-corps * { transition: none !important; animation: none !important; }
}
