/* Portail BP - charte graphique (bleu marine / or / creme) - Phase 4A */
:root{--marine:#0F2A4A;--marine-2:#16375D;--or:#B08D45;--or-soft:#D8C49B;--creme:#F7F4EE;--ligne:#E4E1D8;--gris:#5B6470;--rouge:#8B2635}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Segoe UI',Arial,sans-serif;background:var(--creme);color:#2C2C2C;min-height:100vh;display:flex;flex-direction:column}
.auth-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(160deg,var(--marine) 0%,var(--marine-2) 55%,#0B2038 100%)}
.auth-card{background:#fff;border-top:4px solid var(--or);max-width:420px;width:100%;padding:36px 34px;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.auth-card h1{font-family:Georgia,serif;color:var(--marine);font-size:1.25rem;margin-bottom:4px}
.auth-card .sub{color:var(--gris);font-size:.82rem;margin-bottom:24px}
.auth-card label{display:block;font-size:.8rem;font-weight:600;color:var(--marine);margin:14px 0 6px}
.auth-card input{width:100%;padding:11px 12px;border:1px solid var(--ligne);font-size:.95rem;background:#FDFCFA}
.auth-card input:focus-visible{outline:3px solid var(--or);outline-offset:1px;border-color:var(--or)}
.btn{display:inline-block;width:100%;margin-top:22px;padding:12px;background:var(--or);color:#fff;border:none;font-size:.95rem;font-weight:700;cursor:pointer;text-align:center}
.btn:hover{background:#9A7A38}
.btn:focus-visible{outline:3px solid var(--marine);outline-offset:2px}
.alert{background:#FBEEEE;border:1px solid var(--rouge);border-left:4px solid var(--rouge);color:var(--rouge);padding:10px 12px;font-size:.85rem;margin-bottom:6px}
.alert-ok{background:#E5F5EA;border:1px solid #1E8449;border-left:4px solid #1E8449;color:#1E8449;padding:10px 12px;font-size:.85rem;margin-bottom:6px}
.brand{display:flex;flex-direction:column;gap:2px;margin-bottom:22px;border-bottom:1px solid var(--ligne);padding-bottom:16px}
.brand .cab{font-family:Georgia,serif;font-weight:700;color:var(--marine);font-size:1.05rem}
.brand .role{color:var(--or);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}
.note{margin-top:18px;font-size:.74rem;color:var(--gris);line-height:1.5}
.err-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:24px}
.err-card{max-width:520px;width:100%;background:#fff;border-top:4px solid var(--or);padding:40px;box-shadow:0 10px 30px rgba(15,42,74,.12);text-align:center}
.err-card .code{font-family:Georgia,serif;font-size:3rem;color:var(--marine)}
.err-card h1{font-family:Georgia,serif;font-size:1.15rem;color:var(--marine);margin:8px 0 10px}
.err-card p{color:var(--gris);font-size:.9rem;line-height:1.6}
.err-card a{display:inline-block;margin-top:20px;color:var(--marine);font-weight:600;text-decoration:none;border-bottom:2px solid var(--or)}
.err-card a:focus-visible{outline:3px solid var(--or);outline-offset:2px}

/* Extensions Phase 4A.1 : comptes/securite/sessions/codes */
.page-wrap{max-width:760px;margin:0 auto;padding:36px 20px 60px}
.page-card{background:#fff;border-top:4px solid var(--or);padding:28px 30px;box-shadow:0 6px 20px rgba(15,42,74,.08);margin-bottom:22px}
.page-card h1{font-family:Georgia,serif;color:var(--marine);font-size:1.15rem;margin-bottom:14px}
.page-card h2{font-family:Georgia,serif;color:var(--marine);font-size:1rem;margin:18px 0 10px;border-bottom:1px solid var(--ligne);padding-bottom:6px}
.topbar{background:var(--marine);color:#fff;padding:14px 20px;display:flex;justify-content:space-between;align-items:center;font-size:.85rem}
.topbar a{color:var(--or-soft);text-decoration:none;margin-left:14px}
.topbar a:hover{text-decoration:underline}
table.simple{width:100%;border-collapse:collapse;font-size:.85rem}
table.simple th{text-align:left;color:var(--marine);border-bottom:2px solid var(--or);padding:8px 6px}
table.simple td{padding:8px 6px;border-bottom:1px solid var(--ligne)}
.btn-secondary{background:#fff;color:var(--marine);border:1px solid var(--marine)}
.btn-secondary:hover{background:var(--creme)}
.btn-danger{background:var(--rouge)}
.btn-danger:hover{background:#6E1D28}
.btn-small{width:auto;padding:6px 12px;font-size:.78rem;margin-top:0}
.codes-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;font-family:monospace;font-size:.95rem;background:var(--creme);padding:16px;border:1px dashed var(--or);margin:14px 0}
.qr-box{display:flex;flex-direction:column;align-items:center;gap:10px;margin:16px 0}
.qr-box code{background:var(--creme);padding:10px;font-size:.72rem;word-break:break-all;display:block;border:1px solid var(--ligne)}
.badge-ok{display:inline-block;background:#E5F5EA;color:#1E8449;border:1px solid #1E8449;font-size:.7rem;padding:2px 8px;border-radius:8px}
.badge-warn{display:inline-block;background:#FBEEEE;color:var(--rouge);border:1px solid var(--rouge);font-size:.7rem;padding:2px 8px;border-radius:8px}

/* ============================================================
   Module Dossiers — Phase 4B.1
   Toutes les classes sont prefixees "pb-" pour ne jamais entrer
   en collision avec les classes existantes (auth, compte, erreurs).
   Repris fidelement de la charte Phase 2.1 (maquettes) : disposition
   a barre laterale, tableaux transformes en cartes sous 640px,
   onglets accessibles, bandeau de synthese permanent, focus visible.
   ============================================================ */
.pb-app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.pb-aside{background:var(--marine);color:#B9C9DA;display:flex;flex-direction:column}
.pb-logo{padding:20px 18px;border-bottom:1px solid rgba(255,255,255,.08)}
.pb-logo b{color:#fff;font-family:Georgia,serif;font-size:.95rem;display:block}
.pb-logo span{color:var(--or-soft);font-size:.68rem}
.pb-snav{flex:1;padding:12px 0;overflow-y:auto}
.pb-snav a{display:flex;gap:10px;align-items:center;padding:10px 18px;font-size:.82rem;border-left:3px solid transparent;transition:.15s;color:#B9C9DA;text-decoration:none}
.pb-snav a:hover{background:rgba(255,255,255,.05);color:#fff}
.pb-snav a.on{background:rgba(216,196,155,.1);color:var(--or-soft);border-left-color:var(--or)}
.pb-snav .sect{padding:14px 18px 6px;font-size:.64rem;letter-spacing:1.6px;text-transform:uppercase;color:#5E7CA0}
.pb-suser{padding:14px 18px;border-top:1px solid rgba(255,255,255,.08);font-size:.76rem}
.pb-suser b{color:#fff;display:block}
.pb-suser a{color:var(--or-soft);font-size:.72rem}
.pb-main{padding:0 0 40px;min-width:0}
.pb-topbar{background:#fff;border-bottom:1px solid var(--ligne);padding:14px 26px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.pb-topbar h1{font-family:Georgia,serif;font-size:1.15rem;color:var(--marine)}
.pb-topbar .crumb{font-size:.74rem;color:var(--gris)}
.pb-content{padding:24px 26px;display:grid;gap:20px}

.pb-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.pb-kpi{background:#fff;border:1px solid var(--ligne);border-top:3px solid var(--or);border-radius:6px;padding:16px}
.pb-kpi b{font-family:Georgia,serif;font-size:1.5rem;color:var(--marine);display:block}
.pb-kpi span{font-size:.7rem;color:var(--gris);text-transform:uppercase;letter-spacing:.5px}
.pb-panel{background:#fff;border:1px solid var(--ligne);border-radius:6px}
.pb-panel-h{padding:14px 18px;border-bottom:1px solid var(--ligne);display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.pb-panel-h h2{font-size:.95rem;color:var(--marine)}
.pb-panel-b{padding:16px 18px}

.pb-btn{display:inline-block;padding:9px 16px;border-radius:4px;font-size:.8rem;font-weight:600;cursor:pointer;border:none;transition:.15s;font-family:inherit;text-decoration:none}
.pb-b-or{background:var(--or);color:var(--marine)}
.pb-b-or:hover{background:var(--or-soft)}
.pb-b-navy{background:var(--marine);color:#fff}
.pb-b-line{border:1px solid var(--ligne);background:#fff;color:var(--marine)}
.pb-b-sm{padding:5px 11px;font-size:.72rem}

.pb-table{width:100%;border-collapse:collapse;font-size:.8rem}
.pb-table th{background:var(--marine);color:var(--or-soft);text-align:left;padding:10px 12px;font-size:.68rem;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}
.pb-table td{padding:10px 12px;border-bottom:1px solid var(--ligne);vertical-align:top}
.pb-table tr:nth-child(even) td{background:#FAFBFC}
.pb-table tr:hover td{background:#F3F0E8}
.pb-table td.date{white-space:nowrap;font-weight:700;color:var(--marine)}
.pb-t-scroll{overflow-x:auto}

.pb-chip{display:inline-block;padding:3px 10px;border-radius:10px;font-size:.68rem;font-weight:700;white-space:nowrap}
.pb-c-actif{background:#E5F5EA;color:#1E8449}.pb-c-attente{background:#FDF3DB;color:#7F6000}
.pb-c-cloture{background:#ECEDEF;color:#5B6470}.pb-c-archive{background:#ECEDEF;color:#5B6470}
.pb-c-stade{background:#E5F1F8;color:#15577A}
.pb-c-haute{background:#FCECE9;color:#B0332B}.pb-c-moyenne{background:#FDF3DB;color:#7F6000}.pb-c-basse{background:#ECEDEF;color:#5B6470}
.pb-c-principale{background:#FDF3DB;color:#7F6000;border:1px solid #B08D45}

.pb-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.pb-filters input,.pb-filters select{width:100%;padding:9px 11px;border:1px solid var(--ligne);border-radius:4px;font-size:.82rem;font-family:inherit;background:#fff}
.pb-filters input:focus,.pb-filters select:focus{outline:none;border-color:var(--or);box-shadow:0 0 0 3px rgba(176,141,69,.25)}
.pb-filters label{font-size:.72rem;font-weight:700;color:var(--marine);display:block;margin-bottom:4px}
.pb-hint{font-size:.68rem;color:var(--gris);font-weight:400;margin-top:3px}

.pb-fiche-head{background:var(--marine);color:#fff;border-radius:6px;padding:20px 22px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:center}
.pb-fiche-head h2{font-family:Georgia,serif;font-size:1.2rem}
.pb-fiche-head .ref{color:var(--or-soft);font-size:.76rem;margin-top:4px}

.pb-synthese{background:#fff;border:1px solid var(--ligne);border-top:4px solid var(--or);
border-radius:6px;padding:14px 18px;position:sticky;top:0;z-index:40;
box-shadow:0 6px 18px rgba(15,42,74,.08)}
.pb-synthese h2{font-family:Georgia,serif;font-size:1rem;color:var(--marine);margin-bottom:10px;
display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pb-syn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px 22px}
.pb-syn{display:flex;flex-direction:column;padding:5px 0;border-bottom:1px dashed var(--ligne)}
.pb-syn b{font-size:.62rem;color:var(--gris);text-transform:uppercase;letter-spacing:.5px;font-weight:700}
.pb-syn span{font-size:.82rem;color:var(--marine);font-weight:600}
@media(max-width:860px){.pb-synthese{position:static}}

.pb-tabs{display:flex;gap:2px;border-bottom:2px solid var(--ligne);flex-wrap:wrap}
.pb-tab{padding:11px 18px;font-size:.8rem;font-weight:600;color:var(--gris);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;background:none;border-top:none;border-left:none;border-right:none;font-family:inherit;text-decoration:none;display:inline-block}
.pb-tab.on,.pb-tab[aria-selected="true"]{color:var(--marine);border-bottom-color:var(--or)}
.pb-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 30px}
.pb-inf{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px dashed var(--ligne);font-size:.82rem}
.pb-inf b{color:var(--gris);font-weight:600}
.pb-inf span{text-align:right;color:var(--marine);font-weight:600}
.pb-server-note{background:#EAF2F7;border-left:3px solid #15577A;padding:11px 14px;font-size:.74rem;color:#274b63;border-radius:0 4px 4px 0}

.pb-pagination{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;padding:16px}

/* Responsive — barre laterale horizontale sous 860px */
@media(max-width:860px){
.pb-app{grid-template-columns:1fr}
.pb-aside{position:sticky;top:0;z-index:50;flex-direction:row;overflow-x:auto;align-items:center}
.pb-logo{border:none;white-space:nowrap}
.pb-snav{display:flex;padding:0}
.pb-snav .sect{display:none}
.pb-snav a{white-space:nowrap;border-left:none;border-bottom:3px solid transparent}
.pb-snav a.on{border-bottom-color:var(--or)}
.pb-suser{display:none}
.pb-topbar,.pb-content{padding-left:16px;padding-right:16px}
}

/* Cartes mobiles : sous 640px, chaque ligne de tableau .pb-t-cards devient
   une carte ; chaque cellule affiche son etiquette data-label. */
@media(max-width:640px){
table.pb-t-cards,table.pb-t-cards tbody,table.pb-t-cards tr,table.pb-t-cards td{display:block;width:100%}
table.pb-t-cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
table.pb-t-cards tr{background:#fff;border:1px solid var(--ligne);border-left:4px solid var(--or);
border-radius:6px;margin:0 0 12px;padding:6px 0;box-shadow:0 3px 10px rgba(15,42,74,.06)}
table.pb-t-cards td{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
border-bottom:1px dashed var(--ligne);padding:8px 14px;text-align:right;white-space:normal}
table.pb-t-cards td:last-child{border-bottom:none}
table.pb-t-cards td::before{content:attr(data-label);font-size:.64rem;font-weight:700;
text-transform:uppercase;letter-spacing:.5px;color:var(--gris);text-align:left;flex:0 0 42%}
table.pb-t-cards td:not([data-label])::before{content:none}
table.pb-t-cards td:not([data-label]){justify-content:flex-end}
table.pb-t-cards tr:nth-child(even) td{background:transparent}
table.pb-t-cards td.date{white-space:normal}
.pb-content{gap:14px}
.pb-filters{grid-template-columns:1fr}
}

/* Phase 4B.2A — erreurs de validation près des champs */
.pb-err{color:#B0332B;font-size:.72rem;font-weight:700;margin-top:3px}

/* --- Phase 4B.2A-R1 : listes multiples du formulaire de dossier -------- */
.pb-repeat-item{position:relative;border-top:1px dashed var(--ligne);padding-top:12px;margin-top:12px}
.pb-repeat-item:first-of-type{border-top:none;padding-top:0;margin-top:0}
.pb-repeat-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.pb-repeat-titre{font-size:.72rem;font-weight:700;color:var(--gris);text-transform:uppercase;letter-spacing:.04em}
.pb-b-remove{border:1px solid var(--ligne);background:#fff;color:#B0332B;padding:4px 10px;font-size:.7rem;border-radius:4px;cursor:pointer;font-family:inherit}
.pb-b-remove:hover{background:#FCECE9}
.pb-b-add{margin-top:12px}
.pb-b-add[hidden]{display:none}
.pb-check{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--marine);padding-top:22px}
.pb-check input{width:auto}
.pb-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
