/* Gestacrises Plan — styles applicatifs. Les règles génériques sont volontairement
   limitées à .app pour ne jamais dégrader l'écran de connexion. */
:root{--plan-ink:#16354d;--plan-blue:#176ba0;--plan-border:var(--gcp-trait,#6B8CA8);--plan-muted:#556d7e;--plan-radius:16px}
.app{background:#f4f7fa;color:var(--plan-ink)}
.app .container{max-width:1320px;padding-bottom:100px}
.app .gdc-file-summary{display:none!important}
.app .card,.app .upload-box,.app .coverage,.app .mission,.app .org-source,.app .means-source{border:1px solid var(--plan-border)!important;border-radius:var(--plan-radius)!important;box-shadow:var(--gcp-ombre-posee,0 2px 8px rgba(21,67,96,.10))!important;background:#fff}
.app .card{padding:24px!important}.app .upload-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:20px}.app .upload-box{padding:22px!important;background:#fbfdff!important}.app .upload-box h3{font-size:var(--gcp-t-titre,18px);color:var(--plan-ink);margin:0 0 12px}.app .upload-box .small{font-size:var(--gcp-t-moyen,14px);line-height:1.6}.app .section-head h2{font-size:25px;letter-spacing:-.4px}.app .section-head p,.app .small{color:var(--plan-muted)}
.app button.btn,.app button.btn-secondary,.app button.ui-btn,.app button.mc-btn,.app button[data-maj],.plan-utility button,.plan-dialog button{min-height:44px!important;border-radius:var(--gcp-rayon-grand,12px)!important;padding:10px 18px!important;font:600 14px/1.3 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;cursor:pointer;transition:background .15s,box-shadow .15s;background:var(--plan-blue)!important;border:1px solid var(--plan-blue)!important;color:#fff!important;box-shadow:none!important;transform:none!important}
.app button.btn.secondary,.app button.btn-secondary,.app button.ui-btn--neutral,.plan-utility button.btn.secondary,.plan-dialog .btn.secondary,.plan-dialog-head button{background:#fff!important;border-color:var(--gcp-noir,#154360)!important;color:var(--plan-ink)!important}
.app button:hover:not(:disabled),.plan-dialog button:hover:not(:disabled),.plan-utility button:hover:not(:disabled){filter:brightness(.97)}
.app button:focus-visible,.app input:focus-visible,.app textarea:focus-visible,.app select:focus-visible,.plan-dialog button:focus-visible,.plan-dialog textarea:focus-visible{outline:3px solid #51a9df!important;outline-offset:3px}
.app button:disabled,.plan-dialog button:disabled{opacity:.55!important;cursor:wait!important;transform:none!important}.app button.busy::before{content:'';display:inline-block;width:13px;height:13px;border:2px solid currentColor;border-right-color:transparent;border-radius:var(--gcp-rond,50%);margin-right:8px;animation:plan-spin 1s linear infinite}
.app input[type=file]{width:100%;min-height:48px!important;font:14px system-ui!important;padding:8px 0!important;color:var(--plan-muted)}.app input[type=file]::file-selector-button{min-height:44px!important;border:1px solid var(--gcp-trait,#6B8CA8)!important;background:#fff!important;color:var(--plan-ink)!important;border-radius:var(--gcp-rayon-grand,12px)!important;padding:10px 18px!important;margin-right:12px!important;font:600 14px system-ui!important;cursor:pointer}
.app input:not([type=file]):not([type=checkbox]):not([type=radio]),.app textarea,.app select,.plan-dialog textarea{border:1px solid var(--gcp-trait,#6B8CA8)!important;border-radius:var(--gcp-rayon,9px)!important;color:var(--plan-ink);font:inherit;min-height:44px}.app textarea,.plan-dialog textarea{padding:14px!important;line-height:1.5;width:100%;min-height:130px}.app .actions,.plan-dialog .actions{gap:10px!important;flex-wrap:wrap}.app .rule{border-radius:var(--gcp-rayon-grand,12px);padding:14px;background:#edf5fb;color:var(--plan-ink)}
.plan-dialog{width:min(920px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid var(--plan-border);border-radius:var(--gcp-rayon-grand,12px);color:var(--plan-ink);box-shadow:var(--gcp-ombre-fenetre,0 18px 55px rgba(21,67,96,.30))}.plan-dialog::backdrop{background:#0c27466b;backdrop-filter:blur(3px)}.plan-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0;padding:18px 24px;position:sticky;top:0;background:#fff;z-index:2}.plan-dialog-head h2{font-size:var(--gcp-t-grand,20px);margin:0}.plan-dialog-body{padding:24px}.plan-dialog label{display:block;font-weight:650;margin-bottom:10px}.plan-dialog .actions{display:flex;justify-content:flex-end;margin-top:20px}.plan-status{padding:12px 0;font-weight:650;color:var(--plan-blue)}
.plan-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 22px;margin:14px 0 0}.plan-fields div{min-width:0;padding:10px 12px;background:#f8fbfd;border-radius:var(--gcp-rayon,9px)}.plan-fields dt{font-size:var(--gcp-t-petit,12px);color:var(--plan-muted);margin-bottom:4px;font-weight:650}.plan-fields dd{margin:0;font-size:var(--gcp-t-moyen,14px);overflow-wrap:anywhere;white-space:pre-wrap}.plan-item{padding:20px 0;border-bottom:1px solid var(--plan-border)}.plan-item h3{font-size:var(--gcp-t-titre,18px);margin:0;color:var(--plan-ink)}.plan-badge{display:inline-block;background:#eaf4fc;border-radius:var(--gcp-pilule,999px);padding:6px 12px;font-size:var(--gcp-t-petit,12px);font-weight:650;color:#17608e}.plan-empty{padding:24px;border:1px dashed var(--gcp-trait,#6B8CA8);border-radius:var(--gcp-rayon-grand,12px);color:var(--plan-muted)}
.app .plan-doc-row{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;gap:10px!important}.app .plan-doc-row>div{min-width:0;flex:1}.app .plan-doc-row b{overflow-wrap:anywhere}.app .plan-file-remove{appearance:none;border:0!important;background:transparent!important;color:#c43b3b!important;font-size:0!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;padding:0!important;border-radius:var(--gcp-rond,50%)!important;box-shadow:none!important;cursor:pointer;display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:none!important}.app .plan-file-remove::before{content:'×';font:700 25px/1 system-ui}.app .plan-file-remove:hover{background:#fff0f0!important}.app .plan-file-remove:focus-visible{outline:3px solid #e79b9b!important;outline-offset:2px}
.plan-diff{overflow:auto;max-height:48vh}.plan-diff table{width:100%;border-collapse:collapse}.plan-diff th,.plan-diff td{padding:12px;border-bottom:1px solid var(--plan-border);text-align:left;vertical-align:top;white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--gcp-t-moyen,14px)}.plan-diff thead{background:#eff5fa;position:sticky;top:0}.plan-diff td:last-child{background:#f0f9f5;color:#165b40}/* L'historique : un groupe par étape ou par événement, sans en-tête de colonnes répété à chacun — une heure, un nom, une phrase se lisent sans. La phrase se lit en entier : elle est le contenu, pas un résumé de ce qui se déplie. Les colonnes ont la même largeur d'un groupe à l'autre, pour que l'œil descende droit. */.gc-historique .plan-lignes>.plan-lignes-entete{display:none}.gc-historique .plan-l-fait{font-size:var(--gcp-t-moyen,14px);font-weight:500;color:var(--gcp-noir,#154360);line-height:1.35}.gc-historique .plan-titre-bloc{margin:18px 0 8px}/* La tête porte l'état du registre, qui se lit sans défiler : intact en vert, touché en rouge. */.gc-historique-fenetre .plan-dialog-head{align-items:flex-start;flex-wrap:wrap}.gc-historique-titre{display:flex;align-items:center;gap:8px}.gc-historique-titre h2{flex:none}/* Le « ? » suit le titre : poussé au bout, il se retrouvait au-dessus de la fin de l'état du registre, loin de ce qu'il explique. */.gc-historique-titre .gc-aide{margin-left:0}/* Ni « small » ni paragraphe : la charte impose l'encre à l'un et à l'autre, et le rouge d'un registre touché disparaissait. */.plan-dialog .gc-historique-etat{margin:4px 0 0;font-size:var(--gcp-t-courant,13px);font-weight:600}.plan-dialog .gc-historique-etat[data-etat=intact]{color:var(--gcp-vert-fonce,#1E8449)}.plan-dialog .gc-historique-etat[data-etat=altere]{color:var(--gcp-rouge,#C0392B);font-weight:700}.gc-historique-actions{display:flex;gap:8px;flex-wrap:wrap}.gc-historique-empreinte{font-family:monospace;overflow-wrap:anywhere}.gc-historique .plan-titre-bloc:first-child{margin-top:4px}
.plan-utility{position:fixed;right:18px;top:18px;display:flex;gap:8px;z-index:1000001;background:#ffffffed;padding:8px;border:1px solid var(--plan-border);border-radius:var(--gcp-rayon-grand,12px);box-shadow:var(--gcp-ombre-flottante,0 6px 22px rgba(21,67,96,.20))}
.app .voxtral-mic-btn,.plan-dialog .voxtral-mic-btn{border:1px solid var(--gcp-trait,#6B8CA8)!important;border-radius:var(--gcp-rayon,9px)!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;padding:0!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;right:8px!important;background:#edf5fb!important;box-shadow:none!important;color:#176ba0!important;font-size:var(--gcp-t-titre,18px)!important}.app .voxtral-mic-btn.voxtral-mic-recording,.app .voxtral-mic-btn.voxtral-mic-active,.plan-dialog .voxtral-mic-btn.voxtral-mic-active{background:#fee7e7!important;border:2px solid var(--gcp-rouge,#C0392B)!important}.app .voxtral-mic-btn.voxtral-mic-transcribing,.plan-dialog .voxtral-mic-btn.voxtral-mic-transcribing{background:#fff3d9!important;border:2px solid var(--gcp-orange-vif,#E67E22)!important}.voxtral-textarea-wrap textarea{padding-right:62px!important}
/* LE MICRO QUI ÉCOUTE SE VOIT. La règle de son état — rose et bord rouge —
   pesait moins que celle du bouton, posée juste avant avec deux classes : dans
   l'application, le micro restait bleu pâle pendant qu'il écoutait, et l'on ne
   savait pas s'il avait démarré. Elle porte maintenant les mêmes classes, plus
   la sienne. */
/* LE MICRO EST UN ACCESSOIRE, PAS UN BOUTON D'ACTION.
   À 44 px posé vingt pixels à l'intérieur du champ, il mangeait la case :
   sur « Nature de l'événement », cinquante-trois pixels de texte passaient
   dessous, et l'exemple se lisait « coupure d'é[micro]it ». Il tient
   maintenant au bord, en 34 px, et la case lui réserve sa place.
   Il ne se pose plus que sur les zones de texte, où l'on écrit des phrases :
   une case d'une ligne n'a plus rien à lui réserver. */
.app .voxtral-textarea-wrap textarea,.plan-dialog .voxtral-textarea-wrap textarea{padding-right:50px!important}
@keyframes plan-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.app *,.plan-dialog *{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media(max-width:700px){.app .upload-grid{grid-template-columns:1fr!important}.plan-fields{grid-template-columns:1fr 1fr}.app .card{padding:16px!important}.plan-dialog-body{padding:16px}.plan-dialog-head{padding:14px}.plan-utility{top:auto;bottom:72px;right:8px;padding:5px;max-width:calc(100vw - 16px)}.plan-utility button{padding:8px 10px!important;font-size:var(--gcp-t-petit,12px)!important}.plan-diff th,.plan-diff td{padding:8px}.app .actions>button,.plan-dialog .actions>button{flex:1}.app .container{padding-bottom:155px!important}}
@media(max-width:440px){.plan-fields{grid-template-columns:1fr}.plan-dialog-head h2{font-size:var(--gcp-t-saisie,16px)}.plan-utility{flex-direction:column}}
