/* ═══════════════════════════════════════════════════════════════
   PORTAIL EXTERNE 91studio v1.0.0 (portail.html) — shell dédié externes.
   Langage de l'app (Apple HIG) : tokens repris de critical.css, autonome.
   ═══════════════════════════════════════════════════════════════ */
:root {
    --bg: #F5F5F7; --card: #FFFFFF; --hover: rgba(0,0,0,.04);
    --ink: #1d1d1f; --ink2: #424245; --ink3: #86868b;
    --line: rgba(0,0,0,.08); --line2: rgba(0,0,0,.04);
    --blue: #007AFF; --indigo: #2379D5; --indigo-soft: rgba(35,121,213,.10);
    --green: #34C759; --orange: #FF9500; --red: #FF3B30;
}
@media (prefers-color-scheme: dark) { :root {
    --bg: #18181A; --card: #232326; --hover: rgba(255,255,255,.06);
    --ink: #f5f5f7; --ink2: #d1d1d6; --ink3: #86868b;
    --line: rgba(255,255,255,.08); --line2: rgba(255,255,255,.05);
    --blue: #0A84FF; --indigo: #0A84FF; --indigo-soft: rgba(10,132,255,.16);
    --green: #34D399; --orange: #FF9F0A; --red: #FF453A;
} }
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--ink);
    font: 14px/1.5 -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;
    -webkit-font-smoothing: antialiased; }
.ptl-shell { min-height: 100vh; display: flex; flex-direction: column; }
.ptl-head { display: flex; align-items: center; gap: 14px; padding: 12px 22px;
    background: var(--card); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 10; }
.ptl-brand { display: flex; align-items: center; gap: 10px; }
.ptl-brand b { font-size: 14px; } .ptl-brand small { display: block; color: var(--ink3); font-size: 11px; }
.ptl-mark { width: 32px; height: 32px; border-radius: 8px; background: var(--ink); color: var(--card);
    display: grid; place-items: center; font-weight: 700; font-size: 13px; }
.ptl-logo { width: 34px; height: 34px; border-radius: 8px; display: block; flex-shrink: 0; }
.ptl-crumb { font-size: 13px; color: var(--ink3); }
.ptl-sp { flex: 1; }
.ptl-who { font-size: 13px; font-weight: 510; text-align: right; }
.ptl-who small { display: block; color: var(--ink3); font-weight: 400; font-size: 11px; }
.ptl-main { flex: 1; width: 100%; max-width: 980px; margin: 0 auto; padding: 26px 22px 60px; }
.ptl-foot { padding: 14px 22px; font-size: 11.5px; color: var(--ink3); text-align: center;
    border-top: 1px solid var(--line2); }
.ptl-foot a { color: var(--ink3); }
.ptl-h1 { font-size: 22px; font-weight: 650; letter-spacing: -.3px; margin: 6px 0 16px; }
.ptl-loading, .ptl-empty { padding: 44px 20px; text-align: center; color: var(--ink3); font-size: 13px; }
.ptl-muted { color: var(--ink3); } .ptl-muted-sm { color: var(--ink3); font-size: 12px; margin-top: 10px; }
.ptl-f { font-size: 11.5px; color: var(--ink3); margin-top: 2px; }
/* Détail DPGF du lot (Lot J) — table lisible, scroll horizontal isolé */
.ptl-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ptl-dpgf-table { min-width: 640px; }
.ptl-dpgf-table th, .ptl-dpgf-table td { white-space: nowrap; }
.ptl-dpgf-table td:nth-child(2) { white-space: normal; min-width: 240px; }
.ptl-dpgf-ref { color: var(--ink3); font-variant-numeric: tabular-nums; font-size: 12px; }
.ptl-dpgf-sec td { background: var(--bg); font-size: 13px; padding-top: 14px; }
.ptl-dpgf-sub td { color: var(--ink2); font-size: 12.5px; padding-left: 26px; }
.ptl-dpgf-table tfoot td { border-top: 1px solid var(--line); font-size: 14px; }
/* Barre de filtres du cahier des plans (Lot J) */
.ptl-filterbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 12px; }
.ptl-filter-q { flex: 1 1 180px; min-width: 140px; height: 34px; padding: 0 12px;
    border: 0.5px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--ink);
    font-size: 13px; }
.ptl-filter-sel { height: 34px; padding: 0 8px; border: 0.5px solid var(--line); border-radius: 8px;
    background: var(--card); color: var(--ink2); font-size: 13px; cursor: pointer; }
/* Observations des intervenants (BET/CSPS/CT) sous le statut de visa d'un plan */
.ptl-obs { margin-top: 6px; display: flex; flex-direction: column; gap: 5px; }
.ptl-obs-item { border-left: 2px solid var(--indigo); padding: 2px 0 2px 8px; }
.ptl-obs-who { display: block; font-size: 10.5px; font-weight: 600; color: var(--ink3); letter-spacing: -.1px; }
.ptl-obs-txt { display: block; font-size: 12px; color: var(--ink2); overflow-wrap: anywhere; }

/* Boutons */
.ptl-btn { display: inline-flex; align-items: center; justify-content: center; gap: 5px;
    height: 32px; padding: 0 14px; font-size: 13px; font-weight: 500;
    border: 0.5px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink2);
    cursor: pointer; font-family: inherit; letter-spacing: -.08px; transition: .14s; }
.ptl-btn:hover { background: var(--hover); color: var(--ink); }
.ptl-btn:active { transform: scale(.97); }
.ptl-primary { background: var(--indigo); color: #fff; border-color: transparent; font-weight: 600; }
.ptl-primary:hover { background: var(--blue); color: #fff; }
.ptl-sm { height: 28px; padding: 0 11px; font-size: 12px; }
.ptl-link { border: none; background: none; color: var(--blue); cursor: pointer; font-size: 13px;
    padding: 4px 0; font-family: inherit; }
.ptl-link:hover { text-decoration: underline; }

/* Login */
.ptl-login { max-width: 380px; margin: 8vh auto 0; background: var(--card); border-radius: 16px;
    padding: 28px; display: flex; flex-direction: column; gap: 12px; }
.ptl-login h1 { margin: 0; font-size: 20px; letter-spacing: -.3px; }
.ptl-login label { font-size: 12.5px; font-weight: 510; color: var(--ink2);
    display: flex; flex-direction: column; gap: 5px; }
.ptl-login input, .ptl-dialog-b input, .ptl-dialog-b select {
    border: 0.5px solid var(--line); border-radius: 9px; background: var(--bg); color: var(--ink);
    font: inherit; padding: 9px 12px; width: 100%; }
.ptl-login input:focus, .ptl-dialog-b input:focus { outline: 2px solid var(--blue); border-color: transparent; }
.ptl-error { background: rgba(255,59,48,.1); color: var(--red); border-radius: 8px;
    padding: 9px 12px; font-size: 12.5px; }

/* Cartes chantiers */
.ptl-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.ptl-card-btn { text-align: left; background: var(--card); border: 0.5px solid var(--line);
    border-radius: 14px; padding: 18px; cursor: pointer; font-family: inherit; transition: .15s; }
.ptl-card-btn:hover { box-shadow: 0 6px 20px rgba(0,0,0,.08); transform: translateY(-1px); }
.ptl-card-btn b { display: block; font-size: 14.5px; color: var(--ink); letter-spacing: -.1px; }
.ptl-card-btn small { color: var(--ink3); font-size: 12px; }

/* Sous-nav + table */
.ptl-subnav { display: flex; gap: 4px; margin: 0 0 14px; }
.ptl-subnav-btn { height: 30px; padding: 0 12px; font-size: 12.5px; font-weight: 510;
    color: var(--ink2); background: none; border: 1px solid transparent; border-radius: 8px;
    cursor: pointer; font-family: inherit; }
.ptl-subnav-btn:hover { background: var(--hover); color: var(--ink); }
.ptl-subnav-btn.active { color: var(--blue); background: var(--indigo-soft); font-weight: 600; }
.ptl-card { background: var(--card); border-radius: 16px; overflow: hidden; }
.ptl-card-h { display: flex; align-items: center; gap: 10px; padding: 15px 18px;
    border-bottom: 1px solid var(--line); }
.ptl-card-h b { font-size: 14.5px; font-weight: 600; }
.ptl-table { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.ptl-table th { padding: 11px 18px; font-size: 12px; font-weight: 600; color: var(--ink3);
    text-align: left; border-bottom: 1px solid var(--line); white-space: nowrap; }
.ptl-table td { padding: 12px 18px; border-bottom: 1px solid var(--line2); vertical-align: middle; }
.ptl-table tbody tr:last-child td { border-bottom: none; }
.ptl-num { text-align: right; }
/* Indice de révision : carré bordé encre 1.5px (canonique registre), jamais de pastille pleine */
.ptl-ind { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 4px;
    border-radius: 5px; border: 1.5px solid var(--ink); background: none; color: var(--ink);
    font-weight: 600; font-size: 12px; }
/* Statut visa : registre de bureau d'études - carré plein 8px + libellé dans la couleur d'encre,
   jamais de chip pastel arrondi (règle UI 91studio). */
.ptl-pill { display: inline-flex; align-items: center; gap: 6px; padding: 0;
    font-size: 11.5px; font-weight: 600; white-space: nowrap; }
.ptl-pill i { width: 8px; height: 8px; border-radius: 2px; }
.ptl-bpe { color: var(--green); } .ptl-bpe i { background: var(--green); }
.ptl-vso, .ptl-vao { color: var(--orange); }
.ptl-vso i, .ptl-vao i { background: var(--orange); }
.ptl-ref { color: var(--red); } .ptl-ref i { background: var(--red); }
.ptl-att { color: var(--ink3); } .ptl-att i { background: var(--ink3); }

/* Modal dépôt */
.ptl-overlay { position: fixed; inset: 0; z-index: 100; background: rgba(0,0,0,.4);
    display: grid; place-items: center; padding: 18px; }
.ptl-dialog { background: var(--card); border-radius: 16px; width: min(460px, 100%);
    box-shadow: 0 20px 60px rgba(0,0,0,.3); overflow: hidden; }
.ptl-dialog-b { padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.ptl-dialog-b label { font-size: 12.5px; font-weight: 510; color: var(--ink2);
    display: flex; flex-direction: column; gap: 5px; }
.ptl-row2 { display: grid; grid-template-columns: 90px 1fr; gap: 12px; }

/* Colonne d'actions d'une ligne (Voir / télécharger) */
.ptl-actions { display: flex; gap: 6px; justify-content: flex-end; align-items: center; white-space: nowrap; }

/* Lien document cliquable (situations déposées) — ouvre l'aperçu */
.ptl-doc-link { border: 0; background: none; padding: 0; margin-top: 2px; cursor: pointer;
    font: inherit; font-size: 11.5px; color: var(--indigo); text-align: left; }
.ptl-doc-link:hover { text-decoration: underline; }

/* Actions gérables (modifier / supprimer) sous une ligne — style lien discret */
.ptl-row-actions { display: flex; gap: 12px; margin-top: 6px; }
.ptl-mini-act { border: 0; background: none; padding: 0; cursor: pointer; font: inherit;
    font-size: 11.5px; color: var(--ink3); display: inline-flex; align-items: center; gap: 4px; }
.ptl-mini-act:hover { color: var(--ink); }
.ptl-mini-act.ptl-mini-danger:hover { color: var(--red); }

/* Bouton destructif (dialogue de confirmation) — ghost rouge, zéro fond lourd */
.ptl-danger { color: var(--red); border-color: var(--red); background: none; font-weight: 600; }
.ptl-danger:hover { background: rgba(255,59,48,.1); color: var(--red); }
.ptl-confirm-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 6px; }

/* Modale d'aperçu de document (PDF / image) sans téléchargement */
.ptl-preview { width: min(1040px, 96vw); height: 92vh; display: flex; flex-direction: column; }
.ptl-preview .ptl-card-h { flex: 0 0 auto; }
.ptl-preview-body { flex: 1 1 auto; min-height: 0; background: var(--bg);
    display: flex; overflow: auto; }
.ptl-preview-body iframe { flex: 1 1 auto; width: 100%; height: 100%; border: 0; }
.ptl-preview-body img { max-width: 100%; max-height: 100%; margin: auto; object-fit: contain; }
.ptl-preview-msg { margin: auto; text-align: center; color: var(--ink3); font-size: 13px;
    line-height: 1.6; padding: 40px 24px; }

/* Vue « Mon avancement par lot » (portail entreprise) */
.ptl-av { padding: 8px 18px 16px; display: flex; flex-direction: column; gap: 15px; }
.ptl-av-row { display: flex; flex-direction: column; gap: 5px; }
.ptl-av-head { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; }
.ptl-av-pct { font-variant-numeric: tabular-nums; color: var(--ink2); font-weight: 600; }
.ptl-av-bar { height: 7px; border-radius: 4px; background: var(--hover); overflow: hidden; }
.ptl-av-fill { height: 100%; background: var(--indigo); border-radius: 4px; transition: width .3s ease; }
.ptl-av-meta { font-size: 11.5px; color: var(--ink3); }

/* Toast transitoire (erreurs de téléchargement/aperçu) */
.ptl-toast { position: fixed; left: 50%; bottom: 24px; transform: translate(-50%, 12px);
    z-index: 200; max-width: min(420px, 92vw); padding: 11px 16px; border-radius: 10px;
    background: var(--ink); color: var(--card); font-size: 13px; line-height: 1.4;
    box-shadow: 0 12px 30px rgba(0,0,0,.28); opacity: 0; pointer-events: none;
    transition: opacity .18s ease, transform .18s ease; }
.ptl-toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ─── Responsive telephone (<= 640) : cartes empilees, sous-nav scrollable, cibles tactiles ─── */
@media (max-width: 640px) {
    .ptl-main { padding: 16px 12px 48px; }
    .ptl-head { padding: 10px 14px; gap: 10px; }
    .ptl-who small { display: none; }
    .ptl-brand small { display: none; }
    .ptl-brand b { font-size: 13.5px; white-space: nowrap; }
    .ptl-crumb { display: none; }
    .ptl-h1 { font-size: 19px; }

    /* Sous-nav : defilement horizontal plutot que retour a la ligne */
    .ptl-subnav { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
        scrollbar-width: none; margin: 0 -12px 14px; padding: 0 12px; }
    .ptl-subnav::-webkit-scrollbar { display: none; }
    .ptl-subnav-btn { flex: 0 0 auto; }

    /* En-tete de carte : le bouton passe dessous si besoin */
    .ptl-card-h { flex-wrap: wrap; gap: 8px 10px; }
    .ptl-card-h .ptl-btn { flex: 0 0 auto; }

    /* Tables -> cartes empilees (1 ligne = 1 carte) */
    .ptl-table thead { display: none; }
    .ptl-table, .ptl-table tbody { display: block; }
    .ptl-table tr { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px;
        padding: 13px 16px; border-bottom: 1px solid var(--line); }
    .ptl-table tbody tr:last-child { border-bottom: 0; }
    .ptl-table td { display: inline-flex; align-items: center; flex-wrap: wrap; padding: 0; border: 0 !important; }
    .ptl-table td:first-child { flex: 1 1 100%; flex-direction: column; align-items: flex-start; gap: 2px; }
    /* Note d'observation (colonne visa) : passe SOUS le pill, pleine largeur, texte coupe proprement */
    .ptl-table td .ptl-f { flex: 1 1 100%; margin-top: 2px; overflow-wrap: anywhere; }
    .ptl-table td.ptl-actions { flex: 1 1 100%; justify-content: flex-start; gap: 8px; margin-top: 2px; }
    .ptl-num { text-align: left; }
    /* Colonnes chiffrees/statut : label lisible au-dessus de la valeur (fini les nombres flottants) */
    .ptl-table td[data-label] { flex: 0 0 auto; flex-direction: column; align-items: flex-start; gap: 1px;
        margin-top: 6px; }
    .ptl-table td[data-label]::before { content: attr(data-label); font-size: 10px; font-weight: 500;
        color: var(--ink3); letter-spacing: .01em; text-transform: none; }
    .ptl-table td[data-label] { font-weight: 600; font-variant-numeric: tabular-nums; }

    /* Cibles tactiles >= 40 px (recommandation Apple HIG) */
    .ptl-btn { height: 40px; }
    .ptl-btn.ptl-sm { height: 36px; }
    .ptl-mini-act { min-height: 34px; }
    .ptl-doc-link { min-height: 30px; }

    /* Modales -> feuille plein ecran ; header (titre + fermer) TOUJOURS visible, corps scrollable */
    .ptl-overlay { padding: 0; place-items: stretch; }
    .ptl-dialog { width: 100% !important; max-width: 100%; height: 100%; max-height: 100%;
        border-radius: 0; display: flex; flex-direction: column; }
    .ptl-dialog > .ptl-card-h { position: sticky; top: 0; z-index: 3; background: var(--card); flex: 0 0 auto; }
    .ptl-dialog-b { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
    .ptl-sit-grid { flex: 1 1 auto; min-height: 0; overflow-y: auto; display: block; }
    .ptl-sit-decompte { border-left: 0; border-top: 1px solid var(--line); }
    .ptl-preview { height: 100%; }
    .ptl-row2 { grid-template-columns: 1fr; }
}

/* Barre de force du mot de passe (page de définition) */
.ptl-strength {
    height: 6px;
    border-radius: 999px;
    background: rgba(0, 0, 0, .08);
    overflow: hidden;
    margin: 4px 0 4px;
}
.ptl-strength-fill {
    height: 100%;
    width: 0;
    border-radius: 999px;
    transition: width .18s, background-color .18s;
    background: var(--red);
}
.ptl-strength-fill.weak { background: var(--red); }
.ptl-strength-fill.med { background: var(--orange); }
.ptl-strength-fill.strong { background: var(--green); }
.ptl-str-label { font-size: 11.5px; color: var(--ink3); margin-bottom: 8px; }
/* Champ mot de passe avec œil afficher/masquer (comme Google) */
.ptl-pwd-wrap { position: relative; display: block; width: 100%; }
.ptl-pwd-wrap input { padding-right: 42px !important; box-sizing: border-box; }
.ptl-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
    display: flex; align-items: center; justify-content: center; width: 30px; height: 30px;
    padding: 0; border: 0; background: none; color: var(--ink3); cursor: pointer; border-radius: 7px; }
.ptl-eye:hover { color: var(--ink); background: var(--hover); }
/* Formulaire situation d'avancement : saisie à gauche, décompte à droite.
   Inspiration Linear : labels gris alignés, hauteurs de champ constantes,
   rythme régulier, filets fins, valeurs tabulaires alignées à droite. */
.ptl-sit-grid { display: grid; grid-template-columns: 1fr 330px; align-items: stretch; }
.ptl-sit-form { gap: 15px; padding: 18px 20px; }
.ptl-sit-intro { font-size: 12.5px; line-height: 1.5; color: var(--ink3); margin: 0 0 2px; }
/* Label : ligne de titre (gris) + champ dessous, alignés */
.ptl-sit-form label { display: flex; flex-direction: column; gap: 6px; }
.ptl-fl { font-size: 12px; font-weight: 550; color: var(--ink2); letter-spacing: -.01em;
    display: inline-flex; align-items: baseline; gap: 7px; }
.ptl-hint { font-size: 11px; font-weight: 400; font-style: normal; color: var(--ink3); }
.ptl-sit-form input[type="number"], .ptl-sit-form input[type="text"], .ptl-sit-form select {
    height: 40px; border: 0.5px solid var(--line); border-radius: 9px; background: var(--bg);
    color: var(--ink); font: inherit; padding: 0 12px; width: 100%; box-sizing: border-box; }
.ptl-sit-form input[type="file"] { font-size: 12.5px; color: var(--ink3); }
.ptl-sit-form input:focus, .ptl-sit-form select:focus { outline: 2px solid var(--blue); border-color: transparent; }
.ptl-sit-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ptl-sit-submit { margin-top: 4px; height: 42px; justify-content: center; }
/* Décompte : registre clé -> valeur, valeurs alignées à droite (tabular) */
.ptl-sit-decompte { background: var(--bg); border-left: 1px solid var(--line); padding: 18px 20px; }
.ptl-dc-title { font-weight: 600; font-size: 12.5px; letter-spacing: -.01em; margin-bottom: 14px; color: var(--ink); }
.ptl-dc-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
    padding: 5px 0; font-size: 12.5px; color: var(--ink3); }
.ptl-dc-row > span:last-child { font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--ink2); }
.ptl-dc-strong { color: var(--ink); font-weight: 600; }
.ptl-dc-strong > span:last-child { color: var(--ink); font-weight: 600; }
.ptl-dc-sep { height: 1px; background: var(--line); margin: 9px 0; }
@media (max-width: 720px) {
    .ptl-sit-grid { grid-template-columns: 1fr; }
    .ptl-sit-decompte { border-left: 0; border-top: 1px solid var(--line); }
}

/* ─── Dossier administratif entreprise (Lot K : assurances + RIB) ─── */
.ptl-dossier { display: flex; flex-direction: column; }
.ptl-dossier-row { display: flex; align-items: center; gap: 14px; padding: 13px 18px;
    border-top: 1px solid var(--line2); }
.ptl-dossier-row:first-child { border-top: 0; }
.ptl-dossier-ic { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 9px;
    display: grid; place-items: center; background: var(--hover); color: var(--ink3); }
.ptl-dossier-main { flex: 1 1 auto; min-width: 0; }
.ptl-dossier-t { font-size: 13.5px; font-weight: 560; color: var(--ink); letter-spacing: -.1px; }
.ptl-dossier-st { flex: 0 0 auto; }
.ptl-valid { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px;
    font-weight: 560; color: var(--ink3); white-space: nowrap; }
.ptl-valid i { width: 7px; height: 7px; border-radius: 50%; background: var(--ink3); flex: 0 0 auto; }
.ptl-valid-ok i { background: var(--green); }
.ptl-valid-soon { color: var(--orange); } .ptl-valid-soon i { background: var(--orange); }
.ptl-valid-expired { color: var(--red); } .ptl-valid-expired i { background: var(--red); }
.ptl-valid-none i { background: var(--line); border: 1px solid var(--ink3); }

/* Liste de fichiers d'une piece (multi-documents) : apercu + retrait par fichier */
.ptl-dossier-files { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.ptl-file-chip { display: inline-flex; align-items: center; border: 0.5px solid var(--line);
    border-radius: 8px; background: var(--bg); max-width: 100%; }
.ptl-file-name { display: inline-flex; align-items: center; gap: 5px; border: 0; background: none;
    padding: 5px 4px 5px 9px; font: inherit; font-size: 12px; color: var(--ink2); cursor: pointer; min-width: 0; }
.ptl-file-name span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 200px; }
.ptl-file-name:hover { color: var(--ink); }
.ptl-file-del { border: 0; background: none; padding: 5px 8px 5px 4px; font: inherit; font-size: 12px;
    color: var(--ink3); cursor: pointer; line-height: 1; }
.ptl-file-del:hover { color: var(--red); }

@media (max-width: 640px) {
    /* Dossier assurances : rangee dense (compact) - padding et icone reduits, indent serre */
    .ptl-dossier-row { flex-wrap: wrap; align-items: flex-start; gap: 2px 10px; padding: 9px 14px; }
    .ptl-dossier-ic { order: 0; width: 28px; height: 28px; border-radius: 7px; margin-top: 1px; }
    .ptl-dossier-main { flex: 1 1 auto; order: 1; min-width: 0; }
    .ptl-dossier-t { font-size: 13px; }
    .ptl-dossier-st { order: 2; flex: 1 1 100%; margin-left: 38px; margin-top: 1px; }
    .ptl-dossier-row .ptl-actions { order: 3; flex: 1 1 100%; justify-content: flex-start;
        margin-left: 38px; margin-top: 4px; gap: 6px; }
    .ptl-dossier-row .ptl-actions .ptl-btn { height: 34px; }
}
