/* ==========================================================================
   GPLEAN AI — Design system
   Clair : ivoire chaud + or.  Sombre : laque + or.
   Typographie : Alumni Sans (display, fine) + Albert Sans (corps).
   Thème : suit l'OS par défaut ; bascule via [data-theme] sur <html>.
   ========================================================================== */

:root{
  --bg:oklch(93% .012 95);
  --surface:oklch(96.5% .008 95);
  --surface-2:oklch(90% .013 95);
  --field:var(--surface);
  --ink:oklch(24% .012 95);
  --text:oklch(35% .01 95);
  --text-muted:oklch(50% .008 95);
  --text-faint:oklch(60% .006 95);
  --rule:oklch(24% .01 95 / .14);
  --rule-strong:oklch(24% .01 95 / .26);
  --accent:oklch(66% .12 78);
  --accent-strong:oklch(52% .1 74);
  --accent-fill:oklch(80% .16 82);
  --on-accent:oklch(24% .04 80);
  --accent-soft:oklch(80% .12 82 / .16);
  --c-crit:oklch(52% .17 32);
  --c-warn:oklch(56% .12 74);
  --c-ok:oklch(48% .09 186);
  --shadow:0 22px 55px oklch(24% .02 95 / .13);
  --shadow-sm:0 8px 24px oklch(24% .02 95 / .10);
  --font-display:"Alumni Sans","Avenir Next Condensed","Segoe UI",system-ui,sans-serif;
  --font-body:"Albert Sans","Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif;
  --radius:12px;
  --maxw:1160px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme]){
    --bg:oklch(10% .006 95);--surface:oklch(15.5% .007 95);--surface-2:oklch(20% .008 95);--field:oklch(23.5% .008 95);
    --ink:oklch(92% .012 95);--text:oklch(86% .008 95);--text-muted:oklch(70% .006 95);--text-faint:oklch(56% .006 95);
    --rule:oklch(85% 0 0 / .16);--rule-strong:oklch(85% 0 0 / .30);
    --accent:oklch(84% .19 80.46);--accent-strong:oklch(84% .16 80);--accent-fill:oklch(84% .19 80.46);
    --on-accent:oklch(16% .03 80);--accent-soft:oklch(84% .16 82 / .14);
    --c-crit:oklch(66% .16 34);--c-warn:oklch(82% .15 82);--c-ok:oklch(72% .11 186);
    --shadow:0 26px 60px oklch(0% 0 0 / .5);--shadow-sm:0 10px 30px oklch(0% 0 0 / .4);
  }
}
:root[data-theme="dark"]{
  --bg:oklch(10% .006 95);--surface:oklch(15.5% .007 95);--surface-2:oklch(20% .008 95);--field:oklch(23.5% .008 95);
  --ink:oklch(92% .012 95);--text:oklch(86% .008 95);--text-muted:oklch(70% .006 95);--text-faint:oklch(56% .006 95);
  --rule:oklch(85% 0 0 / .16);--rule-strong:oklch(85% 0 0 / .30);
  --accent:oklch(84% .19 80.46);--accent-strong:oklch(84% .16 80);--accent-fill:oklch(84% .19 80.46);
  --on-accent:oklch(16% .03 80);--accent-soft:oklch(84% .16 82 / .14);
  --c-crit:oklch(66% .16 34);--c-warn:oklch(82% .15 82);--c-ok:oklch(72% .11 186);
  --shadow:0 26px 60px oklch(0% 0 0 / .5);--shadow-sm:0 10px 30px oklch(0% 0 0 / .4);
}

*{margin:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--font-body);font-size:16px;line-height:1.65;
  background:var(--bg);color:var(--text);
  -webkit-font-smoothing:antialiased;
  transition:background .25s ease,color .25s ease;
}
a{color:inherit;text-decoration:none;}
a:hover{text-decoration:none;}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px;}
img{max-width:100%;display:block;}

h1{font-family:var(--font-display);font-weight:300;font-size:clamp(2.5rem,5vw,4rem);
  line-height:1.03;letter-spacing:-.01em;color:var(--ink);text-wrap:balance;}
h2{font-family:var(--font-display);font-weight:300;font-size:clamp(1.9rem,3.4vw,2.7rem);
  line-height:1.06;letter-spacing:-.005em;color:var(--ink);text-wrap:balance;}
h3{font-family:var(--font-display);font-weight:400;font-size:1.4rem;color:var(--ink);letter-spacing:-.005em;}
p{line-height:1.65;}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
.section{padding:64px 0;}
.hidden{display:none;}
/* L'attribut HTML `hidden` doit primer : sans cela, une règle d'affichage
   comme .btn{display:inline-flex} le neutralise et l'élément reste visible. */
[hidden]{display:none !important;}

/* ===================== Header / footer ===================== */
.site-header{position:sticky;top:0;z-index:30;
  background:color-mix(in oklab,var(--bg) 88%,transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--rule);}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;height:64px;
  max-width:var(--maxw);margin:0 auto;padding:0 28px;}
.brand{display:flex;align-items:baseline;gap:12px;}
.brand-logo{height:30px;width:auto;}
.brand-text{display:flex;align-items:baseline;gap:12px;}
.brand-title,.wordmark{font-family:var(--font-display);font-weight:600;font-size:1.28rem;
  letter-spacing:.32em;text-transform:uppercase;color:var(--ink);}
.brand-sub{font-size:.72rem;color:var(--text-faint);letter-spacing:.03em;}
.nav-links{display:flex;align-items:center;gap:4px;}
.nav-link{padding:8px 13px;border-radius:8px;color:var(--text-muted);font-size:.92rem;
  transition:color .15s,background .15s;}
.nav-link:hover{color:var(--ink);background:var(--accent-soft);}
.nav-link.active{color:var(--ink);position:relative;}
.nav-link.active::after{content:"";position:absolute;left:13px;right:13px;bottom:2px;height:2px;
  background:var(--accent);border-radius:2px;}
.theme-toggle{width:38px;height:38px;padding:0;border-radius:9px;border:1px solid var(--rule);
  background:transparent;color:var(--text-muted);cursor:pointer;display:inline-flex;
  align-items:center;justify-content:center;font-family:inherit;font-size:.85rem;
  transition:color .15s,border-color .15s;}
.theme-toggle:hover{color:var(--ink);border-color:var(--rule-strong);}
.theme-toggle svg{width:18px;height:18px;}

.site-footer{background:var(--surface);border-top:1px solid var(--rule);
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:26px 40px;color:var(--text-faint);font-size:.86rem;}
.footer-left{color:var(--text-faint);}
.footer-right{display:flex;gap:18px;}

/* ===================== Buttons / pills / tabs ===================== */
.cta{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-body);font-weight:600;
  font-size:.98rem;padding:13px 24px;border-radius:10px;cursor:pointer;border:1px solid transparent;
  background:var(--accent-fill);color:var(--on-accent);text-decoration:none;
  transition:transform .12s ease,filter .15s ease;}
.cta:hover{transform:translateY(-1px);filter:brightness(1.05);text-decoration:none;}
.cta-small{padding:11px 20px;font-size:.94rem;}
.cta svg{width:17px;height:17px;}

.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:10px;
  border:1px solid var(--rule-strong);background:transparent;cursor:pointer;color:var(--ink);
  font-weight:500;font-family:inherit;font-size:.95rem;transition:background .15s,border-color .15s;}
.btn:hover{background:var(--accent-soft);border-color:var(--accent);}
.btn:disabled{opacity:.4;cursor:not-allowed;}
.btn-sm{padding:8px 12px;font-size:.85em;}

.pill{display:inline-flex;align-items:center;gap:8px;font-size:.82rem;color:var(--text-muted);
  background:transparent;border:1px solid var(--rule);padding:6px 12px;border-radius:999px;white-space:nowrap;}
.pill.small{padding:5px 10px;font-size:.82rem;}
.pill.small input{margin-right:6px;}

.tabs{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;}
.tab{border:1px solid var(--rule-strong);background:transparent;color:var(--text-muted);
  padding:9px 16px;border-radius:999px;cursor:pointer;font-family:inherit;font-size:.92rem;
  transition:color .15s,background .15s,border-color .15s;}
.tab:hover{color:var(--ink);}
.tab.active{color:var(--ink);background:var(--accent-soft);border-color:var(--accent);}

/* ===================== Hero (générique) ===================== */
.hero{padding:56px 0 40px;}
.hero-content{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
.hero-content h1{margin-bottom:16px;}
.hero-content > p{font-size:1.12rem;color:var(--text-muted);max-width:60ch;}
.hero-actions{display:flex;gap:13px;align-items:center;margin-top:24px;flex-wrap:wrap;}
.eyebrow{display:inline-block;font-size:.72rem;font-weight:500;letter-spacing:.2em;
  text-transform:uppercase;color:var(--accent-strong);margin-bottom:18px;}

/* ===================== Accueil ===================== */
.home-hero{position:relative;overflow:hidden;padding:0;}
.home-hero::before{content:"";position:absolute;inset:-10% -10% auto -10%;height:480px;
  background:radial-gradient(60% 90% at 22% 0%,var(--accent-soft),transparent 70%);pointer-events:none;}
.home-hero .wrap{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:52px;
  align-items:center;padding-top:64px;padding-bottom:72px;}
.home-hero h1{margin-bottom:20px;}
.home-hero h1 .hl{color:var(--accent-strong);font-weight:400;}
.home-hero .lede{font-size:1.12rem;color:var(--text-muted);max-width:36ch;margin:0 0 30px;}
.hero-cta{display:flex;gap:13px;flex-wrap:wrap;margin-bottom:26px;}
.trust{display:flex;gap:20px;flex-wrap:wrap;}
.trust span{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:.85rem;}
.trust svg{width:15px;height:15px;color:var(--accent);flex:0 0 auto;}

.preview{background:var(--surface);border-radius:16px;border:1px solid var(--rule);box-shadow:var(--shadow);overflow:hidden;}
.preview-head{display:flex;align-items:center;gap:11px;padding:15px 18px;border-bottom:1px solid var(--rule);}
.preview-head .avatar{width:32px;height:32px;border-radius:8px;background:var(--accent-soft);display:flex;align-items:center;justify-content:center;color:var(--accent-strong);flex:0 0 auto;}
.preview-head .avatar svg{width:17px;height:17px;}
.preview-head b{font-size:.94rem;color:var(--ink);font-weight:500;}
.preview-head small{display:block;color:var(--text-faint);font-size:.75rem;}
.preview-body{padding:18px;}
.preview .q{margin-left:auto;max-width:82%;background:var(--accent-soft);border:1px solid var(--rule);color:var(--ink);padding:10px 13px;border-radius:13px 13px 4px 13px;font-size:.9rem;}
.preview .a{margin-top:13px;max-width:92%;background:var(--surface-2);border:1px solid var(--rule);padding:12px 14px;border-radius:13px 13px 13px 4px;font-size:.91rem;color:var(--text);line-height:1.55;}
.preview .a q{font-style:normal;color:var(--ink);background:var(--accent-soft);padding:0 4px;border-radius:3px;}
.preview .source{margin-top:14px;display:flex;gap:11px;align-items:flex-start;background:var(--surface);border:1px solid var(--rule-strong);border-radius:12px;padding:11px 12px;}
.preview .fico{width:30px;height:30px;border-radius:7px;background:var(--accent-soft);display:flex;align-items:center;justify-content:center;color:var(--accent-strong);flex:0 0 auto;}
.preview .fico svg{width:16px;height:16px;}
.preview .fname{font-size:.81rem;font-weight:500;color:var(--ink);display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.preview .pagebadge{font-size:.7rem;font-weight:600;color:var(--on-accent);background:var(--accent-fill);padding:2px 8px;border-radius:6px;}
.preview .snip{font-size:.79rem;color:var(--text-muted);margin-top:4px;line-height:1.45;}

.band-2{background:var(--surface);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);}
.kicker{display:inline-block;font-size:.72rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--accent-strong);margin-bottom:12px;}
.home-intro{color:var(--text-muted);max-width:54ch;margin:0 0 34px;font-size:1.05rem;}

.cap-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.cap-card{background:var(--bg);border:1px solid var(--rule);border-radius:14px;padding:28px;transition:transform .15s ease,border-color .15s ease;}
.band-2 .cap-card{background:var(--surface-2);}
.cap-card:hover{transform:translateY(-3px);border-color:var(--accent);}
.cap-card .ch{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.cap-card .ch svg{width:24px;height:24px;color:var(--accent);flex:0 0 auto;}
.cap-card h3{margin:0;font-size:1.5rem;}
.cap-card p{color:var(--text-muted);font-size:.97rem;margin:0 0 20px;}
.cap-card .go{display:inline-flex;align-items:center;gap:8px;color:var(--accent-strong);font-weight:500;font-size:.94rem;}
.cap-card .go svg{width:16px;height:16px;transition:transform .15s ease;}
.cap-card:hover .go svg{transform:translateX(3px);}

.home-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.home-kpi{background:var(--surface);border-radius:13px;padding:22px 20px;border:1px solid var(--rule);}
.home-kpi .num{font-family:var(--font-display);font-weight:300;font-size:2.7rem;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums;}
.home-kpi .lab{margin-top:10px;font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);}
.home-kpi .lab::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--text-faint);display:inline-block;margin-right:8px;vertical-align:1px;}
.home-kpi.crit .num{color:var(--c-crit);}.home-kpi.crit .lab::before{background:var(--c-crit);}
.home-kpi.warn .num{color:var(--c-warn);}.home-kpi.warn .lab::before{background:var(--c-warn);}
.home-kpi.ok .num{color:var(--c-ok);}.home-kpi.ok .lab::before{background:var(--c-ok);}
.home-kpi.neu .num{color:var(--accent-strong);}.home-kpi.neu .lab::before{background:var(--accent);}
@media (max-width:940px){
  .home-hero .wrap{grid-template-columns:1fr;gap:36px;padding-top:44px;padding-bottom:48px;}
  .cap-cards{grid-template-columns:1fr;}.home-kpis{grid-template-columns:1fr 1fr;}
}

/* ===================== App layout / panels ===================== */
.app{padding:8px 0 64px;}
.grid-2{max-width:var(--maxw);margin:0 auto;padding:0 28px;display:grid;
  grid-template-columns:1.25fr .75fr;gap:20px;align-items:start;}
.grid-2.tight{gap:12px;}
.panel{background:var(--surface);border:1px solid var(--rule);border-radius:16px;
  box-shadow:var(--shadow-sm);overflow:hidden;}
.panel-alt{background:var(--surface-2);}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:16px 20px;border-bottom:1px solid var(--rule);}
.panel-head h2{font-size:1.05rem;font-family:var(--font-body);font-weight:600;letter-spacing:0;}
.panel-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}
.mini{font-size:.85em;color:var(--text-muted);display:flex;gap:8px;align-items:center;}

/* ===================== Forms ===================== */
label{color:var(--ink);}
input,textarea,select{font-family:inherit;}
input[type="number"]{width:96px;padding:9px 11px;border:1px solid var(--rule-strong);
  border-radius:9px;outline:none;background:var(--field);color:var(--ink);}
input[type="file"]{color:var(--text-muted);font-size:.9rem;max-width:100%;}
textarea{width:100%;padding:13px 14px;border-radius:11px;border:1px solid var(--rule-strong);
  outline:none;resize:none;font-size:1em;color:var(--ink);background:var(--field);line-height:1.5;}
textarea:focus,input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.field{margin-bottom:14px;}
.field label{display:block;margin-bottom:7px;font-weight:600;font-size:.9rem;color:var(--ink);}
.field label .opt{font-weight:400;color:var(--text-faint);font-size:.86em;}
.field input:disabled{opacity:.65;cursor:not-allowed;}
/* Deux champs cote a cote (prenom / nom), qui repassent en colonne sur mobile. */
.field-row{display:flex;gap:12px;}
.field-row .field{flex:1;min-width:0;}
@media (max-width:520px){ .field-row{flex-direction:column;gap:0;} }
.field input[type="file"],.field input[type="number"],.field textarea{width:100%;}
.check{display:flex;align-items:center;gap:10px;color:var(--ink);margin:8px 0 16px;font-weight:500;font-size:.92rem;}
.filehint{margin-top:6px;font-size:.88rem;color:var(--text-muted);word-break:break-word;}

/* ===================== Chat ===================== */
.chat-log{height:520px;overflow:auto;padding:18px 20px;background:transparent;}
.bubble{max-width:88%;padding:12px 15px;border-radius:14px;margin:12px 0;line-height:1.55;
  color:var(--ink);border:1px solid var(--rule);background:var(--surface-2);}
.bubble.user{margin-left:auto;background:var(--accent-soft);border-color:color-mix(in oklab,var(--accent) 45%,transparent);}
.bubble.bot{background:var(--surface-2);}
.bubble .meta{font-size:.78rem;color:var(--text-faint);margin-bottom:5px;text-transform:uppercase;letter-spacing:.06em;}
.bubble mark{background:var(--accent-soft);color:var(--ink);padding:0 3px;border-radius:4px;}

.composer{padding:16px 20px;border-top:1px solid var(--rule);background:transparent;}
.composer-row{display:flex;gap:12px;align-items:center;margin-top:12px;}
.spacer{flex:1;}

.upload{margin-top:14px;padding:14px;border:1px dashed var(--rule-strong);border-radius:12px;background:var(--surface-2);}
.upload-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.upload-row + .upload-row{margin-top:12px;}
.upload-status{margin-top:10px;font-size:.92rem;color:var(--text-muted);}
.upload-title{font-weight:600;color:var(--ink);font-size:.9rem;margin-bottom:10px;}
.upload-ok{color:var(--c-ok);font-weight:500;}
.doc-list-title{margin-top:12px;font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);}

/* Liste dépliable des documents de la session */
.doc-details{margin-top:12px;border-top:1px solid var(--rule);padding-top:10px;}
.doc-details summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;
  font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-faint);transition:color .15s;}
.doc-details summary:hover{color:var(--ink);}
.doc-details summary::-webkit-details-marker{display:none;}
.doc-details summary::before{content:"";width:0;height:0;flex:0 0 auto;
  border-left:5px solid currentColor;border-top:4px solid transparent;border-bottom:4px solid transparent;
  transition:transform .15s ease;}
.doc-details[open] summary::before{transform:rotate(90deg);}
.doc-count{margin-left:auto;font-size:.7rem;font-weight:600;letter-spacing:0;
  color:var(--on-accent);background:var(--accent-fill);padding:1px 8px;border-radius:999px;}

.doc-list{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;}
.doc-list li{font-size:.85rem;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:7px 10px;word-break:break-all;}
.drop-zone{position:relative;border:2px dashed var(--rule-strong);border-radius:14px;padding:20px;
  text-align:center;cursor:pointer;background:var(--surface-2);transition:border-color .15s,background .15s;}
.drop-zone:hover,.drop-zone.drag-over{border-color:var(--accent);background:var(--accent-soft);}
.drop-zone input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;font-size:0;}
.drop-zone-icon{font-size:1.5em;margin-bottom:6px;color:var(--accent);pointer-events:none;}
.drop-zone-text{color:var(--text-muted);font-size:.9em;pointer-events:none;}
.drop-zone-text u{color:var(--accent-strong);}

/* Contexte utilisé : cartes de source */
.ctx-panel{padding:18px 20px;max-height:640px;overflow:auto;background:transparent;}
.ctx-panel.empty{color:var(--text-faint);font-size:.95rem;}
.ctx-item{background:var(--surface);border:1px solid var(--rule);border-radius:13px;
  padding:13px 14px;margin-bottom:12px;transition:border-color .15s;}
.ctx-item:hover{border-color:var(--rule-strong);}
.ctx-src{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:8px;}
.ctx-file{font-size:.82rem;font-weight:600;color:var(--ink);word-break:break-all;}
.ctx-page{font-size:.7rem;font-weight:600;color:var(--on-accent);background:var(--accent-fill);
  padding:2px 8px;border-radius:6px;white-space:nowrap;}
.ctx-snip{font-size:.86rem;color:var(--text);line-height:1.5;}
.ctx-item .head{font-size:.9rem;color:var(--text-muted);margin-bottom:8px;}
.ctx-item mark{background:var(--accent-soft);color:var(--ink);padding:0 2px;border-radius:4px;}

/* ===================== Analyse ===================== */
.modern-disclaimer{margin-top:16px;padding:12px 15px;border:1px solid color-mix(in oklab,var(--c-warn) 45%,var(--rule));
  background:color-mix(in oklab,var(--c-warn) 12%,var(--surface));border-radius:12px;
  color:var(--text);font-size:.92rem;line-height:1.4;}
.modern-disclaimer b{color:var(--ink);}

/* Section explicative repliable de la page Comparaison */
.explain{margin-top:14px;border:1px solid var(--rule);border-radius:12px;background:var(--surface);}
.explain > summary{cursor:pointer;list-style:none;padding:13px 16px;display:flex;align-items:center;gap:9px;
  font-weight:600;font-size:.95rem;color:var(--ink);}
.explain > summary::-webkit-details-marker{display:none;}
.explain > summary::before{content:"";width:0;height:0;flex:0 0 auto;
  border-left:6px solid var(--accent);border-top:5px solid transparent;border-bottom:5px solid transparent;
  transition:transform .15s ease;}
.explain[open] > summary::before{transform:rotate(90deg);}
.explain-body{padding:2px 18px 18px;color:var(--text);font-size:.95rem;line-height:1.6;
  border-top:1px solid var(--rule);}
.explain-body h4{font-family:var(--font-body);font-size:.98rem;font-weight:600;color:var(--ink);
  margin:16px 0 6px;}
.explain-body p{margin:6px 0;}
.explain-body ul{margin:6px 0;padding-left:20px;}
.explain-body li{margin:5px 0;}
.explain-note{color:var(--text-muted);font-size:.9rem;font-style:italic;}
.explain-levels{border-collapse:collapse;margin:8px 0 2px;width:100%;}
.explain-levels td{padding:6px 10px 6px 0;vertical-align:top;}
.explain-levels td:first-child{white-space:nowrap;width:1%;}
.lvl{display:inline-block;font-size:.78rem;font-weight:600;padding:2px 10px;border-radius:999px;border:1px solid transparent;}
.lvl.crit{color:var(--c-crit);background:color-mix(in oklab,var(--c-crit) 14%,transparent);
  border-color:color-mix(in oklab,var(--c-crit) 40%,transparent);}
.lvl.aler{color:var(--c-warn);background:color-mix(in oklab,var(--c-warn) 16%,transparent);
  border-color:color-mix(in oklab,var(--c-warn) 40%,transparent);}
.lvl.ok{color:var(--c-ok);background:color-mix(in oklab,var(--c-ok) 14%,transparent);
  border-color:color-mix(in oklab,var(--c-ok) 35%,transparent);}

/* Les deux seuils, côte à côte. Les libellés réservent la même hauteur (deux
   lignes) pour que les champs restent alignés même si un libellé passe à la
   ligne. Grille dédiée : ne pas réutiliser .grid-2 (mise en page de page). */
.thresholds{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.thresholds .field{margin-bottom:0;min-width:0;}
.thresholds label{min-height:2.4em;font-size:.85rem;line-height:1.2;margin-bottom:6px;}
.thresholds input[type="number"]{width:100%;}

#analyseModernApp .modern-grid{display:grid;grid-template-columns:minmax(320px,400px) 1fr;gap:20px;padding:18px 20px 20px;}
#analyseModernApp .modern-grid > div{min-width:0;}
#analyseModernApp .modern-progress-card{border:1px solid var(--rule);background:var(--surface-2);border-radius:14px;padding:16px;}
#analyseModernApp .modern-progress-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;}
#analyseModernApp .modern-title{font-weight:600;font-size:1.02rem;color:var(--ink);}
#analyseModernApp .modern-sub{color:var(--text-muted);font-size:.92rem;}
#analyseModernApp .modern-percent{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}

.progress{height:8px;background:var(--surface);border:1px solid var(--rule);border-radius:999px;overflow:hidden;margin:12px 0;}
.progress-bar{height:100%;background:var(--accent-fill);width:0%;transition:width .2s ease;}

#analyseModernApp .steps{list-style:none;padding:8px 0 0;margin:0;}
#analyseModernApp .step{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;
  margin:6px 0;background:var(--surface);border:1px solid var(--rule);color:var(--text);font-size:.93rem;}
#analyseModernApp .step .dot{width:11px;height:11px;border-radius:999px;background:var(--text-faint);flex:0 0 auto;}
#analyseModernApp .step.running .dot{background:var(--accent);}
#analyseModernApp .step.done .dot{background:var(--c-ok);}
#analyseModernApp .step.running{border-color:color-mix(in oklab,var(--accent) 40%,var(--rule));}
#analyseModernApp .step.done{border-color:color-mix(in oklab,var(--c-ok) 30%,var(--rule));}
#analyseModernApp .modern-actions{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;}
#analyseModernApp .modern-results{margin-top:16px;}
#analyseModernApp .modern-results-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
#analyseModernApp .modern-results-head h3{font-size:1.5rem;}

#analyseModernApp .modern-kpis{display:flex;gap:12px;flex-wrap:wrap;}
#analyseModernApp .kpi{background:var(--surface);border:1px solid var(--rule);border-radius:13px;padding:16px 18px;min-width:120px;text-align:left;}
#analyseModernApp .kpi-num{font-family:var(--font-display);font-weight:300;font-size:2.3rem;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums;}
#analyseModernApp .kpi-label{margin-top:8px;font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);}
#analyseModernApp .kpi-label::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--text-faint);display:inline-block;margin-right:8px;vertical-align:1px;}
#analyseModernApp .kpi.crit .kpi-num{color:var(--c-crit);}
#analyseModernApp .kpi.crit .kpi-label::before{background:var(--c-crit);}
#analyseModernApp .kpi.warn .kpi-num{color:var(--c-warn);}
#analyseModernApp .kpi.warn .kpi-label::before{background:var(--c-warn);}
#analyseModernApp .kpi.ok .kpi-num{color:var(--c-ok);}
#analyseModernApp .kpi.ok .kpi-label::before{background:var(--c-ok);}

#analyseModernApp .modern-card{margin-top:14px;background:var(--surface);border:1px solid var(--rule);border-radius:14px;padding:16px;}
#analyseModernApp .modern-card-title{font-family:var(--font-display);font-weight:400;font-size:1.25rem;margin-bottom:10px;color:var(--ink);}
#analyseModernApp .modern-summary{color:var(--text);line-height:1.55;}
#analyseModernApp .modern-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px;}

#analyseModernApp .action-list{margin-top:10px;display:flex;flex-direction:column;gap:10px;}
#analyseModernApp .action-card{border:1px solid var(--rule);border-radius:13px;padding:13px 14px;background:var(--surface-2);}
#analyseModernApp .action-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}
#analyseModernApp .badge{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-weight:600;font-size:.82rem;border:1px solid transparent;}
#analyseModernApp .badge.crit{background:color-mix(in oklab,var(--c-crit) 14%,transparent);border-color:color-mix(in oklab,var(--c-crit) 40%,transparent);color:var(--c-crit);}
#analyseModernApp .badge.aler{background:color-mix(in oklab,var(--c-warn) 16%,transparent);border-color:color-mix(in oklab,var(--c-warn) 40%,transparent);color:var(--c-warn);}
#analyseModernApp .action-body{margin-top:9px;color:var(--text);line-height:1.45;}
#analyseModernApp .action-meta{margin-top:8px;color:var(--text-muted);font-size:.9rem;}

/* Champ qu'aucune donnée ne renseigne : signalé, jamais laissé muet. */
.na{color:var(--text-faint);font-style:italic;}

/* Bilan de couverture : dit ce qui a été analysé et ce qui ne l'a pas été. */
.coverage{margin-top:14px;padding:13px 15px;border-radius:12px;border:1px solid var(--rule);
  background:var(--surface-2);font-size:.92rem;line-height:1.5;}
.coverage.warn{border-color:color-mix(in oklab,var(--c-warn) 50%,var(--rule));
  background:color-mix(in oklab,var(--c-warn) 10%,var(--surface-2));}
.coverage.ok{border-color:color-mix(in oklab,var(--c-ok) 35%,var(--rule));}
.coverage .cov-head{color:var(--text);}
.coverage .cov-title{margin-top:10px;font-size:.72rem;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-faint);}
.coverage ul{margin:6px 0 0;padding-left:20px;}
.coverage li{margin:3px 0;color:var(--text);}
.coverage .cov-file{color:var(--text-faint);font-size:.85em;}
.coverage .cov-details{margin-top:10px;}
.coverage .cov-details summary{cursor:pointer;font-size:.72rem;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-faint);}
.coverage .cov-details summary:hover{color:var(--ink);}

/* Tables */
.table-tools{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:10px 0;flex-wrap:wrap;}
.table-filter{width:300px;max-width:100%;padding:9px 12px;border:1px solid var(--rule-strong);border-radius:10px;outline:none;color:var(--ink);background:var(--field);}
.table-wrap{position:relative;max-height:520px;overflow:auto;border:1px solid var(--rule);border-radius:14px;background:var(--surface);width:100%;}
.data-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.9rem;color:var(--text);table-layout:auto;}
.data-table th,.data-table td{padding:8px 11px;border-bottom:1px solid var(--rule);vertical-align:top;line-height:1.35;}
.data-table td{white-space:normal;overflow-wrap:anywhere;}
.data-table th{position:sticky;top:0;background:var(--surface-2);z-index:2;white-space:nowrap;
  border-bottom:1px solid var(--rule-strong);font-weight:600;color:var(--ink);cursor:pointer;}
.data-table th + th,.data-table td + td{border-left:1px solid var(--rule);}
.data-table tbody tr:nth-child(even){background:color-mix(in oklab,var(--surface-2) 45%,transparent);}
.data-table tbody tr:hover{background:var(--accent-soft);}
.fs-btn{position:absolute;top:8px;right:8px;z-index:5;border:1px solid var(--rule-strong);background:var(--surface-2);
  color:var(--ink);border-radius:9px;padding:6px 10px;font-size:.88rem;cursor:pointer;}
.table-wrap.fullscreen{position:fixed;inset:16px;z-index:9999;max-height:none;overflow:auto;
  background:var(--surface);border-radius:16px;box-shadow:var(--shadow);}
body.no-scroll{overflow:hidden;}

/* ===================== Toasts / tooltip ===================== */
.toast-container{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:10px;pointer-events:none;}
.toast{padding:12px 18px;border-radius:12px;color:#fff;font-size:.92rem;font-weight:600;
  min-width:200px;max-width:360px;box-shadow:var(--shadow-sm);pointer-events:auto;animation:toastIn .2s ease;}
.toast.success{background:var(--c-ok);}
.toast.error{background:var(--c-crit);}
.toast.info{background:var(--accent-strong);color:var(--on-accent);}
@keyframes toastIn{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}

.tooltip-icon{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;
  background:var(--accent-soft);color:var(--accent-strong);font-size:.78em;font-weight:700;cursor:default;
  position:relative;margin-left:5px;vertical-align:middle;}
.tooltip-icon::after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
  background:var(--ink);color:var(--bg);padding:8px 12px;border-radius:10px;font-size:.82em;font-weight:400;
  white-space:normal;width:220px;text-align:left;opacity:0;pointer-events:none;transition:opacity .15s;z-index:200;line-height:1.4;box-shadow:var(--shadow-sm);}
.tooltip-icon:hover::after{opacity:1;}

/* ===================== Authentification ===================== */
.auth{max-width:440px;margin:0 auto;padding:52px 24px 76px;}
.auth-card{background:var(--surface);border:1px solid var(--rule);border-radius:16px;box-shadow:var(--shadow-sm);padding:32px 28px;}
.auth-card .eyebrow{margin-bottom:10px;}
.auth-card h1{font-size:1.9rem;margin:0 0 20px;}
.auth-card .field{margin-bottom:16px;}
.auth-card input[type="email"],.auth-card input[type="password"],.auth-card input[type="text"]{
  width:100%;padding:12px 14px;border:1px solid var(--rule-strong);border-radius:10px;outline:none;
  background:var(--field);color:var(--ink);font-size:1em;font-family:inherit;}
.auth-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.auth-error{background:color-mix(in oklab,var(--c-crit) 12%,var(--surface));
  border:1px solid color-mix(in oklab,var(--c-crit) 40%,transparent);color:var(--c-crit);
  padding:11px 14px;border-radius:10px;margin-bottom:16px;font-size:.9rem;line-height:1.4;}
.auth-error.ok{background:color-mix(in oklab,var(--c-ok) 12%,var(--surface));
  border-color:color-mix(in oklab,var(--c-ok) 40%,transparent);color:var(--c-ok);}
.auth-links{display:flex;justify-content:space-between;gap:12px;margin-top:18px;flex-wrap:wrap;}
.auth-links a{color:var(--accent-strong);font-size:.9rem;}
.auth-links a:hover{text-decoration:underline;}
.nav-user{color:var(--text-muted);font-size:.86rem;padding:8px 8px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.logout-form{display:inline;margin:0;}
.logout-btn{background:none;border:none;cursor:pointer;font-family:inherit;font-size:.92rem;}

/* Champ mot de passe avec bouton afficher/masquer (icône œil) */
.pw-field{position:relative;}
.auth-card .pw-field input{padding-right:46px;}
.pw-toggle{position:absolute;top:50%;right:8px;transform:translateY(-50%);width:32px;height:32px;
  display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:8px;
  background:transparent;color:var(--text-muted);cursor:pointer;transition:color .15s;}
.pw-toggle:hover{color:var(--ink);}
.pw-toggle svg{width:19px;height:19px;}
.pw-field .pw-eye-off{display:none;}
.pw-field.pw-shown .pw-eye{display:none;}
.pw-field.pw-shown .pw-eye-off{display:block;}

/* ===================== Page légale ===================== */
.legal{max-width:820px;margin:0 auto;padding:44px 28px 72px;}
.legal .eyebrow{margin-bottom:14px;}
.legal h1{margin-bottom:8px;}
.legal .updated{color:var(--text-faint);font-size:.9rem;margin-bottom:28px;}
.legal h2{font-size:1.4rem;margin:32px 0 12px;}
.legal p{color:var(--text);margin:8px 0;line-height:1.65;}
.legal ul{margin:8px 0;padding-left:20px;}
.legal li{color:var(--text);margin:6px 0;line-height:1.65;}
.legal b{color:var(--ink);}
.legal a{color:var(--accent-strong);text-decoration:underline;}
.legal .todo{color:var(--c-crit);font-style:italic;}
.site-footer a{color:var(--text-muted);transition:color .15s;}
.site-footer a:hover{color:var(--ink);}

/* ===================== Responsive ===================== */
@media (max-width:940px){
  .grid-2,#analyseModernApp .modern-grid{grid-template-columns:1fr;}
  .nav{flex-wrap:wrap;height:auto;padding:12px 20px;gap:10px;}
  .nav-links{flex-wrap:wrap;}
  .chat-log{height:440px;}
  .site-footer{padding:22px 20px;}
}

/* ===================== Print / PDF ===================== */
@media print{
  .site-header,.site-footer,.hero,.hero-actions,
  #analyseModernApp .modern-left,#analyseModernApp .modern-progress-card,
  #analyseModernApp .modern-filters,#analyseModernApp .btn,
  #analyseModernApp input,#analyseModernApp label{display:none !important;}
  body{background:#fff !important;}
  #analyseModernApp .modern-card{box-shadow:none !important;border:1px solid #ddd !important;}
}
.print-mode .site-header,.print-mode .site-footer,.print-mode .hero,.print-mode .hero-actions{display:none !important;}
