/* Espace client — composants propres au portail client, sur les jetons du portail exécutif (base-portail.css). */

/* Connexion */
.auth-screen{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,520px);background:var(--page)}
.auth-side{display:flex;flex-direction:column;justify-content:space-between;padding:48px clamp(28px,5vw,72px);color:#fff;background:radial-gradient(circle at 12% 0,rgba(0,180,216,.18),transparent 34%),linear-gradient(165deg,#0b2038,#061426 78%)}
.auth-side .brand{padding:0}
.auth-side h1{font-size:clamp(28px,3vw,40px);line-height:1.15;letter-spacing:-.035em;margin:0 0 14px;max-width:560px}
.auth-side p{color:#b8c7d7;font-size:14px;line-height:1.75;max-width:520px;margin:0}
.auth-points{display:grid;gap:12px;margin-top:28px;max-width:520px}
.auth-points div{display:flex;gap:11px;align-items:flex-start;font-size:13px;color:#d6e3ee;line-height:1.6}
.auth-points .icon{color:var(--cyan-2);margin-top:2px}
.auth-side small{color:#7f95ab;font-size:11px}
.auth-main{display:flex;align-items:center;justify-content:center;padding:32px 24px}
.auth-card{width:100%;max-width:400px}
.auth-card h2{font-size:24px;margin-bottom:6px}
.auth-card>p{color:var(--muted);font-size:12px;margin-bottom:20px;line-height:1.7}
.auth-card form{display:grid;gap:14px}
.auth-card .button.primary{min-height:42px;font-size:12px}
@media(max-width:860px){.auth-screen{grid-template-columns:1fr}.auth-side{padding:28px 22px}.auth-points{display:none}.auth-side h1{font-size:24px}}

/* Santé et statuts */
.health{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:750;color:var(--muted);white-space:nowrap}
.health::before{content:"";width:8px;height:8px;border-radius:50%;background:#a2afbc;box-shadow:0 0 0 3px #eef2f7}
.health.ok{color:var(--green)}.health.ok::before{background:#1d9669;box-shadow:0 0 0 3px var(--green-bg)}
.health.attention{color:var(--amber)}.health.attention::before{background:#d08a12;box-shadow:0 0 0 3px var(--amber-bg)}
.health.probleme{color:var(--red)}.health.probleme::before{background:#c83e4d;box-shadow:0 0 0 3px var(--red-bg)}
.health.en_attente{color:#0a7389}.health.en_attente::before{background:var(--cyan);box-shadow:0 0 0 3px var(--sky)}
.status-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:10px;font-weight:700;color:var(--muted);white-space:nowrap}
.status-pill::before{content:"";width:7px;height:7px;border-radius:50%;background:#a2afbc}
.status-pill.online{color:var(--green);border-color:#bedfcc;background:var(--green-bg)}.status-pill.online::before{background:#1d9669}
.status-pill.offline{color:var(--amber);border-color:#f0d69b;background:var(--amber-bg)}.status-pill.offline::before{background:#d08a12}

/* Vue d'ensemble */
.hello{margin-bottom:18px}
.hello h2{margin-bottom:4px}
.hello p{color:var(--muted);font-size:13px;margin:0;max-width:820px;line-height:1.7}
.summary-banner{display:flex;align-items:center;gap:12px;padding:14px 18px;margin-bottom:16px;border-radius:14px;font-size:12px;font-weight:650;border:1px solid}
.summary-banner .icon{width:20px;height:20px}
.summary-banner.ok{background:var(--green-bg);border-color:#bedfcc;color:var(--green)}
.summary-banner.attention{background:var(--amber-bg);border-color:#f0d69b;color:#825011}
.summary-banner.probleme{background:var(--red-bg);border-color:#f2c8cf;color:#9d2a3d}
.summary-banner.neutre{background:#f0fbfd;border-color:#bce5ed;color:#20596a}
.metric-link{display:block;text-decoration:none;color:inherit}
.metric-link:hover .metric{border-color:#aebfd0}

/* Automatisations */
.automation-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}
.automation-card{display:flex;flex-direction:column;padding:18px;cursor:pointer;transition:border-color .15s,box-shadow .15s;text-align:left;width:100%;font:inherit;color:inherit}
.automation-card:hover{border-color:#9fc9d6;box-shadow:0 12px 32px rgba(7,24,44,.07)}
.automation-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px}
.automation-head h3{font-size:15px;line-height:1.4;margin:0}
.automation-purpose{font-size:12px;color:#40536a;line-height:1.7;margin:0 0 14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin:0 0 14px;padding:12px;border-radius:10px;background:#f7f9fc;border:1px solid var(--line)}
.facts dt{font-size:9px;letter-spacing:.06em;text-transform:uppercase;font-weight:750;color:var(--muted);margin-bottom:2px}
.facts dd{margin:0;font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums}
.tool-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto}
.automation-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.long-text{white-space:pre-wrap;font-size:12px;line-height:1.75;color:var(--ink);margin:0}
.section-title{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:20px 0 8px}
.section-title:first-child{margin-top:0}

/* Échéancier */
.timeline-month{padding:14px 18px 6px;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.timeline-row{display:flex;align-items:flex-start;gap:14px;padding:13px 18px;border-bottom:1px solid #e8edf3}
.timeline-row:last-child{border-bottom:0}
.timeline-row.late{box-shadow:inset 3px 0 #c83e4d}
.timeline-row.done{opacity:.72}
.timeline-row.done .date-tile{background:#f1f5f9}
.timeline-main{flex:1;min-width:0}
.timeline-main strong{display:block;font-size:13px;color:var(--navy);font-weight:650}
.timeline-main p{font-size:11px;color:var(--muted);margin:3px 0 0;line-height:1.6}
.timeline-end{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0}
.timeline-end .money{font-size:13px;font-weight:700;color:var(--navy)}
.date-tile.paiement{border-color:#f0d69b;background:#fffaf0}
.date-tile.livrable{border-color:#b8e9f2;background:#f3fcfe}
.segmented{display:inline-flex;flex-wrap:wrap;gap:6px}
.segmented button{padding:7px 11px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:11px;font-weight:650}
.segmented button[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}

/* Applications */
.app-card{overflow:hidden}
.app-card .card-head h3{display:flex;align-items:center;gap:9px;font-size:16px}
.app-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--sky);color:#08788f;flex-shrink:0}
.app-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.app-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0}
.app-columns>div{padding:16px 18px}
.app-columns>div+div{border-left:1px solid var(--line)}
.file-row{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid #eef2f6}
.file-row:last-child{border-bottom:0}
.file-row .file-main{flex:1;min-width:0}
.file-row .file-main strong{display:block;font-size:12px;color:var(--navy);font-weight:650;overflow-wrap:anywhere}
.file-row .file-main span{display:block;font-size:10px;color:var(--muted);margin-top:2px}
@media(max-width:900px){.app-columns{grid-template-columns:1fr}.app-columns>div+div{border-left:0;border-top:1px solid var(--line)}}

/* Onglets (fiche client) */
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:0 0 18px}
.tab{display:inline-flex;align-items:center;gap:7px;padding:10px 13px;margin-bottom:-1px;border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);font-size:12px;font-weight:650;text-decoration:none}
.tab:hover{color:var(--navy)}
.tab.active{color:var(--navy);border-bottom-color:var(--cyan)}
.tab .nav-count{margin-left:2px}
.vision-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;margin-bottom:16px;border-radius:12px;background:#0c2637;color:#d6e6f0;font-size:12px}
.vision-bar strong{color:#fff}
.vision-bar .tabs{border:0;margin:0 0 0 auto}
.vision-bar .tab{color:#a9c1d3;padding:6px 9px}
.vision-bar .tab.active{color:#fff;border-bottom-color:var(--cyan-2)}
.vision-bar .button{background:transparent;color:#fff;border-color:#33506a}

/* Secrets affichés une seule fois */
.secret-box{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;background:var(--navy);color:#e6f8fc;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}
.secret-box span{flex:1}
.secret-box .button{background:#143653;color:#fff;border-color:#2b4c6b}
pre.code-block{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;padding:13px 15px;border-radius:10px;background:var(--navy);color:#dceff7;font:11px/1.7 ui-monospace,SFMono-Regular,Menlo,monospace}

/* Assistant : page complète */
.assistant-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:16px;align-items:start}
.conversation-list .activity-row{cursor:pointer;width:100%;text-align:left;background:none;border-left:0;border-right:0;border-top:0;font:inherit}
.conversation-list .activity-row:hover{background:#f5fbfd}
.conversation-list .activity-row.active{background:var(--sky);box-shadow:inset 3px 0 var(--cyan)}
.conversation-list .activity-row.unread strong{font-weight:800}
.assistant-thread{display:flex;flex-direction:column;height:calc(100dvh - 230px);min-height:460px}
.assistant-thread .chat-messages{flex:1}
@media(max-width:1000px){.assistant-layout{grid-template-columns:1fr}.assistant-thread{height:auto;min-height:0}.assistant-thread .chat-messages{max-height:60vh}}

/* Messages (page et bulle) */
.chat-messages{display:flex;flex-direction:column;gap:10px;padding:16px 18px;overflow-y:auto;background:linear-gradient(180deg,#fbfdfe,#f7fafc)}
.chat-msg{max-width:84%;padding:10px 13px;border-radius:14px;font-size:12.5px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-msg small{display:block;font-size:9.5px;font-weight:700;letter-spacing:.02em;opacity:.7;margin-bottom:3px}
.chat-msg.from-client{align-self:flex-end;background:var(--navy);color:#fff;border-bottom-right-radius:4px}
.chat-msg.from-ia{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:4px;box-shadow:0 2px 8px rgba(7,24,44,.04)}
.chat-msg.from-admin{align-self:flex-start;background:var(--sky);border:1px solid #bce8f0;border-bottom-left-radius:4px}
.chat-msg.from-systeme{align-self:center;max-width:92%;background:#f1f4f8;color:var(--muted);font-size:11px;text-align:center}
.chat-sources{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;white-space:normal}
.chat-sources .tag{font-size:9px}
.chat-typing{align-self:flex-start;display:inline-flex;gap:4px;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:14px;border-bottom-left-radius:4px}
.chat-typing i{width:6px;height:6px;border-radius:50%;background:#8eabc1;animation:typing 1.2s infinite ease-in-out}
.chat-typing i:nth-child(2){animation-delay:.15s}.chat-typing i:nth-child(3){animation-delay:.3s}
@keyframes typing{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}
.chat-empty{margin:auto;text-align:center;color:var(--muted);font-size:12px;line-height:1.7;max-width:320px;padding:20px}
.chat-empty .icon{width:28px;height:28px;color:#08788f;margin-bottom:8px}
.chat-suggestions{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.chat-suggestions button{padding:8px 11px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:11px;text-align:left}
.chat-suggestions button:hover{border-color:#9fc9d6;background:#f5fbfd}
.chat-composer{display:flex;gap:8px;align-items:flex-end;padding:12px 14px;border-top:1px solid var(--line);background:#fff}
.chat-composer textarea{flex:1;resize:none;min-height:42px;max-height:140px;padding:10px 12px;border:1px solid #d8e2eb;border-radius:10px;font-size:12px;line-height:1.5;color:var(--ink)}
.chat-composer .button{min-height:42px}
.chat-note{padding:0 14px 10px;font-size:9.5px;color:var(--muted);background:#fff;line-height:1.5}

/* Bulle flottante */
.chat-fab{position:fixed;right:24px;bottom:24px;z-index:80;display:flex;align-items:center;gap:9px;padding:13px 18px 13px 15px;border-radius:999px;background:var(--navy);color:#fff;font-size:12px;font-weight:700;box-shadow:0 14px 40px rgba(7,24,44,.28);transition:transform .15s,box-shadow .15s}
.chat-fab:hover{transform:translateY(-2px);box-shadow:0 18px 46px rgba(7,24,44,.32)}
.chat-fab .icon{color:var(--cyan-2);width:20px;height:20px}
.chat-fab .fab-dot{width:8px;height:8px;border-radius:50%;background:#1d9669;box-shadow:0 0 0 3px rgba(29,150,105,.25)}
.chat-fab .fab-dot.offline{background:#d08a12;box-shadow:0 0 0 3px rgba(208,138,18,.25)}
.chat-fab.open{opacity:0;pointer-events:none}
.chat-panel{position:fixed;right:24px;bottom:24px;z-index:85;width:min(400px,calc(100vw - 32px));height:min(620px,calc(100dvh - 48px));display:flex;flex-direction:column;background:#fff;border:1px solid #cfdce8;border-radius:18px;box-shadow:0 24px 80px rgba(7,24,44,.28);overflow:hidden}
.chat-panel-head{display:flex;align-items:center;gap:10px;padding:14px 14px 14px 16px;background:linear-gradient(165deg,#0b2038,#061426);color:#fff}
.chat-panel-head .app-icon{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.08);color:var(--cyan-2)}
.chat-panel-head strong{display:block;font-size:13px}
.chat-panel-head span{display:block;font-size:10px;color:#a6b6c9}
.chat-panel-head .head-actions{margin-left:auto;display:flex;gap:4px}
.chat-panel-head .icon-button{width:32px;min-height:32px;background:transparent;border-color:transparent;color:#c9d7e4}
.chat-panel-head .icon-button:hover{background:rgba(255,255,255,.08);color:#fff;box-shadow:none}
.chat-panel .chat-messages{flex:1}
@media(max-width:560px){.chat-fab{right:16px;bottom:16px;padding:13px}.chat-fab .fab-label{display:none}.chat-panel{right:8px;bottom:8px;width:calc(100vw - 16px);height:calc(100dvh - 16px);border-radius:14px}}
@media print{.chat-fab,.chat-panel{display:none!important}}

/* Divers */
.inline-form{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.inline-form .field{flex:1;min-width:200px}
.row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.clickable{cursor:pointer}
.empty-hint{font-size:11px;color:var(--muted);padding:14px 18px;margin:0}
.badge-count{display:inline-block;min-width:18px;padding:1px 6px;border-radius:7px;background:var(--cyan);color:#041d30;font-size:10px;font-weight:800;text-align:center}
.kpi-inline{display:flex;gap:18px;flex-wrap:wrap;font-size:11px;color:var(--muted)}
.kpi-inline strong{color:var(--navy);font-size:13px}
.client-heading h2{margin:0}
.client-heading .field{margin-left:auto;min-width:170px}
a.nav-item,a.sidebar-folder,a.activity-row,a.metric-link,a.tab,a.button{text-decoration:none}
a.activity-row{color:inherit}
a.activity-row:hover{background:#f5fbfd}
/* Double authentification */
.mfa-setup{display:grid;gap:14px}
.mfa-steps{margin:0;padding-left:18px;display:grid;gap:16px;font-size:11px;line-height:1.7;color:var(--ink)}
.mfa-steps>li{padding-left:2px}
.mfa-steps>li>*:not(strong){margin-top:10px}
.mfa-steps a{display:inline-block;color:#08788f}
.mfa-qr{display:block;width:184px;height:184px;border:1px solid var(--line);border-radius:10px;background:#fff}
.mfa-confirm{display:grid;gap:12px}
.recovery-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 22px;margin:0;padding:12px 14px 12px 34px;border-radius:10px;background:var(--navy);color:#e6f8fc;font:12px/1.8 ui-monospace,SFMono-Regular,Menlo,monospace}
.recovery{gap:12px}
.recovery>.button{justify-self:start}
.row-actions.start{justify-content:flex-start}
/* Case à cocher dans une grille de formulaire : la case et son libellé sur la même ligne */
.check-field.field{display:flex;flex-direction:row;align-items:flex-start}
.check-field.field input{width:16px;height:16px;min-height:0;padding:0}
.notice.field{display:flex;flex-direction:row}
