/* =============================================================================
   Nicolas — webapp standalone (nicolas.naturalink.net)
   Feuille de styles. Organisée par zones : variables, shell, sidebar, chat,
   fond neuronal, composer, login, modale paramètres.
   Thème sombre. Le fond WebGL (js/shader.js) est rendu DERRIÈRE le chat ;
   les bulles de message sont en "glassmorphism" pour rester lisibles dessus.
   ========================================================================== */

/* ---- Variables de thème ---------------------------------------------------- */
:root{
  --bg:#0e0f13;        /* fond global */
  --panel:#15171d;     /* panneaux (sidebar) */
  --panel2:#1b1e26;    /* éléments interactifs */
  --line:#262a35;      /* bordures */
  --txt:#e7e9ee;       /* texte principal */
  --mut:#8b90a0;       /* texte atténué */
  --acc:#7b9bff;       /* accent (Nicolas, liens) */
  --acc2:#d6a84f;      /* accent secondaire (mémoire / contradictions) */
}

*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);
  font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}

/* ---- Shell : sidebar + zone principale ------------------------------------ */
#app{display:flex;height:100vh}

/* ---- Sidebar (repliable, style ChatGPT/Claude) ---------------------------- */
.sidebar{width:264px;background:var(--panel);border-right:1px solid var(--line);
  display:flex;flex-direction:column;flex-shrink:0;
  transition:width .18s ease,opacity .18s ease;overflow:hidden}
#app.collapsed .sidebar{width:0;opacity:0;border:none}      /* état replié */
.sb-top{padding:12px 12px 8px}
.sb-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.brand{display:flex;align-items:center;gap:8px;font-weight:600;font-size:16px}
.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--acc);
  box-shadow:0 0 10px var(--acc)}
.iconbtn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);
  color:var(--mut);border-radius:8px;width:32px;height:32px;display:flex;
  align-items:center;justify-content:center;flex-shrink:0}
.iconbtn:hover{color:var(--txt)}
.collapse-btn{margin-left:auto}
.reveal{position:fixed;top:10px;left:10px;z-index:40;display:none} /* bouton ré-ouvrir */
#app.collapsed .reveal{display:flex}

.btn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);
  color:var(--txt);border-radius:9px;padding:9px 12px;font-size:13px;width:100%;
  text-align:left;display:flex;align-items:center;gap:8px}
.btn:hover{border-color:#39405a}
.btn.primary{background:var(--acc);color:#0b0d12;border-color:var(--acc);
  font-weight:600;justify-content:center}

.convs{flex:1;overflow:auto;padding:8px 8px 0}      /* liste des conversations */
.conv{padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--mut);
  font-size:13px;display:flex;align-items:center;gap:6px}
.conv .conv-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv:hover,.conv.active{background:var(--panel2);color:var(--txt)}
.conv-del{flex:0 0 auto;border:none;background:transparent;color:var(--mut);cursor:pointer;
  padding:2px;border-radius:6px;display:none;align-items:center;line-height:0}
.conv:hover .conv-del{display:inline-flex}
.conv-del:hover{color:#f0623a;background:rgba(240,98,58,.12)}
.sb-bottom{padding:10px;border-top:1px solid var(--line);display:flex;
  flex-direction:column;gap:6px}

/* ---- Zone principale (chat) ----------------------------------------------- */
.main{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}
/* Le canvas du fond neuronal est inséré en premier enfant de .main, en absolu. */
.nicolas-neural-canvas{position:absolute;inset:0;width:100%;height:100%;
  z-index:0;pointer-events:none}
/* Tout le contenu du chat passe AU-DESSUS du canvas. */
.topbar,.msgs,.composer{position:relative;z-index:1}

.topbar{height:52px;border-bottom:1px solid var(--line);display:flex;
  align-items:center;gap:10px;padding:0 16px;background:rgba(14,15,19,.55);
  backdrop-filter:blur(2px)}
.topbar .orch{margin-left:auto;display:flex;align-items:center;gap:8px;
  color:var(--mut);font-size:12px}
select{background:var(--panel2);color:var(--txt);border:1px solid var(--line);
  border-radius:8px;padding:6px 8px;font-size:12px}

/* ---- Messages ------------------------------------------------------------- */
.msgs{flex:1;min-height:0;overflow-y:auto;padding:24px 0}
.row{max-width:760px;margin:0 auto;padding:6px 20px}
.msg{display:flex;gap:12px;padding:10px 0}
.msg .who{width:30px;height:30px;border-radius:9px;flex-shrink:0;object-fit:cover;
  background:#1b1e26;border:1px solid var(--line)}   /* avatar = <img>, jamais un emoji */
.bodywrap{min-width:0;flex:1}
/* Bulle glassmorphism : translucide + flou, pour rester lisible sur le fond vif */
.msg .body{white-space:pre-wrap;word-wrap:break-word;background:rgba(28,32,44,.32);
  border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:8px 12px;
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  box-shadow:0 2px 10px rgba(0,0,0,.18)}
.time{font-size:11px;color:var(--mut);margin-top:4px;opacity:.85}  /* horodatage */

/* ---- #3 : avatar de Nicolas (assistant) à droite, user à gauche ----------- */
.msg.assistant{flex-direction:row-reverse}
.msg.assistant .body{background:rgba(102,51,153,.12);border-color:rgba(102,51,153,.22)}
.msg.assistant .time{text-align:right}

/* ---- #1 : séquence "réveil" au premier message ---------------------------- */
.awakening-flash{position:relative}
.awakening-flash{animation:wake-pulse 2.6s ease-out 1}
.awakening-flash::before{content:'';position:absolute;inset:0;pointer-events:none;z-index:40;
  background:radial-gradient(circle at center,rgba(255,215,0,.30) 0%,rgba(255,140,0,.16) 25%,rgba(102,51,153,.08) 55%,transparent 80%);
  opacity:0;animation:wake-overlay 2.6s ease-out 1;mix-blend-mode:screen}
.awakening-flash::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:40;
  animation:wake-border 2.6s ease-out 1}
@keyframes wake-pulse{0%{filter:brightness(1) saturate(1)}15%{filter:brightness(1.35) saturate(1.5)}50%{filter:brightness(1.08) saturate(1.15)}100%{filter:brightness(1) saturate(1)}}
@keyframes wake-overlay{0%{opacity:0;transform:scale(.3)}20%{opacity:1;transform:scale(1.1)}50%{opacity:.55;transform:scale(1)}100%{opacity:0;transform:scale(1)}}
@keyframes wake-border{0%{box-shadow:inset 0 0 0 0 rgba(255,215,0,0)}15%{box-shadow:inset 0 0 80px 4px rgba(255,215,0,.45)}40%{box-shadow:inset 0 0 60px 2px rgba(255,140,0,.28)}100%{box-shadow:inset 0 0 0 0 rgba(255,215,0,0)}}
.row.awakening .wake-label{color:#ffd700;font-weight:700;text-shadow:0 0 8px rgba(255,215,0,.6);animation:wake-label 2.4s ease-out 1}
@keyframes wake-label{0%{opacity:0;transform:translateY(8px) scale(.9)}25%{opacity:1;transform:translateY(0) scale(1.05)}100%{opacity:1;transform:translateY(0) scale(1)}}
.wake-dots{display:inline-flex;gap:4px;margin-left:8px;vertical-align:middle}
.wake-dots i{width:7px;height:7px;border-radius:50%;background:#ffd700;box-shadow:0 0 10px #ffd700;animation:wake-dot 1.2s ease-in-out infinite}
.wake-dots i:nth-child(2){animation-delay:.2s}
.wake-dots i:nth-child(3){animation-delay:.4s}
@keyframes wake-dot{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}
.row.awakening .msg.assistant .who{animation:wake-av 2.4s ease-out 1}
@keyframes wake-av{0%{transform:scale(.8);box-shadow:0 0 6px #ffd700}20%{transform:scale(1.25);box-shadow:0 0 32px #ffd700,0 0 56px rgba(255,165,0,.7)}60%{transform:scale(1.1);box-shadow:0 0 22px #ffd700}100%{transform:scale(1);box-shadow:0 0 14px #ffd700,0 0 28px rgba(255,215,0,.3)}}

/* ---- Accordéon "Cerveau Alpha" (détail des blocs du neurocircuit) --------- */
.brainbox{border:1px solid var(--line);border-left:3px solid var(--acc);
  border-radius:8px;margin:6px 0;background:rgba(21,23,29,.7)}
.brainbox summary{cursor:pointer;padding:8px 12px;color:var(--acc);font-size:12px}
.brainrow{padding:6px 12px;border-top:1px solid var(--line);font-size:12px;color:var(--mut)}
.brainrow b{color:var(--txt)}

/* ---- Mémoire-apprenante : arbitrage de contradiction ---------------------- */
.mg{border:1px solid var(--line);border-left:3px solid var(--acc2);border-radius:8px;
  margin:6px 0;background:rgba(21,23,29,.8);padding:8px 12px}
.mg button{cursor:pointer;font-size:11px;padding:3px 9px;border-radius:5px;
  border:1px solid var(--line);background:var(--panel2);color:var(--txt);margin-right:6px}

/* ---- Composer (barre de saisie + toolbar) --------------------------------- */
.composer{border-top:1px solid var(--line);padding:10px 20px 14px;
  background:rgba(14,15,19,.55);backdrop-filter:blur(2px)}
.composer .wrap{max-width:760px;margin:0 auto;position:relative}
textarea{flex:1;resize:none;background:var(--panel2);color:var(--txt);
  border:1px solid var(--line);border-radius:12px;padding:11px 14px;font:inherit;
  max-height:160px}
/* Barre de saisie façon WhatsApp : pilule arrondie + boutons ronds */
.inrow{display:flex;gap:10px;align-items:flex-end}
.inbar{flex:1;display:flex;align-items:flex-end;gap:4px;background:var(--panel2);
  border:1px solid var(--line);border-radius:22px;padding:4px 6px}
.inbar textarea{flex:1;background:transparent;border:none;border-radius:0;
  padding:9px 6px;max-height:160px;outline:none}
.cbtn{cursor:pointer;border:none;background:transparent;color:var(--mut);
  width:38px;height:38px;border-radius:50%;flex-shrink:0;display:flex;
  align-items:center;justify-content:center}
.cbtn:hover{color:var(--txt);background:rgba(255,255,255,.06)}
.send{cursor:pointer;background:var(--acc);color:#0b0d12;border:none;
  border-radius:50%;width:44px;height:44px;flex-shrink:0;display:flex;
  align-items:center;justify-content:center}
.send:hover{filter:brightness(1.08)}
/* Pièces jointes (chips) + popover emoji */
.attach-tray{display:flex;flex-wrap:wrap;gap:6px}
.attach-tray:not(:empty){margin-bottom:8px}
.attach-chip{display:inline-flex;align-items:center;gap:5px;background:var(--panel2);
  border:1px solid var(--line);border-radius:14px;padding:3px 6px 3px 9px;
  font-size:12px;color:var(--txt)}
.attach-chip .ac-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.attach-chip button{cursor:pointer;border:none;background:transparent;color:var(--mut);
  display:flex;align-items:center;padding:2px;border-radius:50%}
.attach-chip button:hover{color:var(--txt);background:rgba(255,255,255,.08)}
/* Pièces jointes affichées DANS le message (cartes façon ChatGPT/Claude) */
.msg-atts{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.msg-att{display:inline-flex;align-items:center;gap:8px;max-width:240px;background:var(--panel2);
  border:1px solid var(--line);border-radius:10px;padding:6px 10px}
.msg-att-thumb{width:38px;height:38px;border-radius:7px;object-fit:cover;background:var(--panel);flex:0 0 auto}
.msg-att-ic{width:34px;height:34px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:var(--panel);color:var(--acc);flex:0 0 auto}
.msg-att-meta{display:flex;flex-direction:column;min-width:0}
.msg-att-name{font-size:12.5px;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-att-sz{font-size:11px;color:var(--mut)}
.emoji-pop{position:absolute;left:0;bottom:60px;z-index:30;display:grid;
  grid-template-columns:repeat(8,1fr);gap:2px;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;padding:8px;
  box-shadow:0 12px 32px rgba(0,0,0,.45)}
.emoji-pop button{cursor:pointer;border:none;background:transparent;font-size:20px;
  width:32px;height:32px;border-radius:8px}
.emoji-pop button:hover{background:rgba(255,255,255,.08)}
.topbtn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);
  color:var(--mut);width:32px;height:30px;border-radius:8px;display:inline-flex;
  align-items:center;justify-content:center;margin-left:8px}
.topbtn:hover{color:var(--txt)}
/* Puce afficher/masquer le sélecteur d'orchestrateur / de scope */
.tb-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--acc);cursor:pointer;margin-right:7px;vertical-align:middle;box-shadow:0 0 7px rgba(122,162,247,.55);transition:opacity .2s,box-shadow .2s}
.tb-dot:hover{opacity:.65}
.orch .orch-alt{display:none;color:var(--mut)}
.orch.collapsed .orch-label,.orch.collapsed select{display:none}
.orch.collapsed .orch-alt{display:inline}
/* « Nicolas » décalé quand la sidebar est repliée (sinon caché par le bouton menu) */
#app.collapsed .topbar > b{margin-left:46px}
/* Mode humanisé OFF : la barre d'addons (trousse à outils) disparaît */
body.humanized-off .eden-toolbox{display:none!important}
/* Avatar cliquable → modal d'agrandissement */
.msg .who{cursor:zoom-in}
.avatar-modal{position:fixed;inset:0;z-index:3000;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:avm-in .15s ease}
.avatar-modal img{max-width:80vw;max-height:80vh;border-radius:16px;box-shadow:0 24px 70px rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.14)}
@keyframes avm-in{from{opacity:0}to{opacity:1}}
/* Carte "comportement généré" sous la bulle */
.behavior-card{display:flex;align-items:center;gap:8px;margin:8px 0 2px;padding:8px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;font-size:13px;color:var(--txt)}
.behavior-card .bc-name{font-weight:600}
.behavior-card .bc-status{margin-left:auto;font-size:12px;color:var(--mut);display:inline-flex;align-items:center;gap:4px}
/* Optima : liste des outils appelés par Claude Code */
.optima-tools{margin:6px 0 2px;display:flex;flex-direction:column;gap:3px}
.optima-tool{font-size:12px;color:var(--mut);display:inline-flex;align-items:center;gap:5px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:3px 9px;width:fit-content}
.optima-tool b{color:var(--txt);font-weight:600}
.optima-loader{display:inline-block;width:15px;height:15px;border:2px solid var(--line);border-top-color:var(--acc);border-radius:50%;animation:cox-spin .8s linear infinite;vertical-align:-2px;margin-right:8px}
.optima-boot{color:var(--mut);font-size:13px}
.optima-boot i{opacity:.7}
.optima-boot b{color:var(--acc);font-weight:600}
/* Indicateur d'activité Optima : « Nicolas … » + chrono par étape (benchmarks). */
.optima-status{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:12.5px;color:var(--mut)}
.optima-status-l{color:var(--acc)}
.optima-status-l::after{content:'…'}
.optima-status-t{font-variant-numeric:tabular-nums;opacity:.65;font-size:11px;background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:0 5px}
/* Animation "Nicolas réfléchit…" (bulle en attente du flux) */
.thinking{display:inline-flex;align-items:center;color:var(--mut);font-size:13px;font-style:italic}
.thinking i{width:5px;height:5px;border-radius:50%;background:currentColor;margin-left:3px;animation:think 1.2s infinite;font-style:normal}
.thinking i:nth-child(1){margin-left:7px}
.thinking i:nth-child(2){animation-delay:.18s}
.thinking i:nth-child(3){animation-delay:.36s}
@keyframes think{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
/* claude-oauth — modal de login Claude (mode Optima) */
.cox-modal-bg{position:fixed;inset:0;z-index:3200;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center}
.cox-modal{width:480px;max-width:92vw;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.55);overflow:hidden}
.cox-modal-header{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}
.cox-modal-title{font-weight:600;display:inline-flex;align-items:center;gap:6px}
.cox-modal-close{margin-left:auto;background:transparent;border:none;color:var(--mut);cursor:pointer;display:inline-flex;padding:4px;border-radius:6px}
.cox-modal-close:hover{color:var(--txt);background:rgba(255,255,255,.06)}
.cox-modal-body{padding:16px;color:var(--txt);font-size:14px;line-height:1.5}
.cox-modal-body p{margin:0 0 10px}
.cox-modal-body code{background:var(--panel2);padding:1px 5px;border-radius:5px;font-size:12px}
.cox-hidden{display:none}
.cox-code-input{width:100%;box-sizing:border-box;margin:6px 0 10px;padding:9px 11px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--txt);font:inherit}
.cox-btn{cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:9px 14px;font:inherit;margin:2px 6px 2px 0}
.cox-btn-primary{background:var(--acc);color:#0b0d12;border:none;font-weight:600}
.cox-btn-secondary{background:var(--panel2);color:var(--txt)}
.cox-success{color:#7ee787;display:inline-flex;align-items:center;gap:6px}
.cox-success-details{color:var(--mut);font-size:12px}
.cox-error-msg{color:#ff7b72}
.cox-spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--acc);border-radius:50%;animation:cox-spin .8s linear infinite;margin:4px 0 10px}
@keyframes cox-spin{to{transform:rotate(360deg)}}
/* nicolas-admin — modal « Gérer Nicolas » (superadmin) */
.na-window .na-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px}
.na-tab{cursor:pointer;border:none;background:transparent;color:var(--mut);padding:8px 12px;border-bottom:2px solid transparent;font:inherit}
.na-tab.on{color:var(--txt);border-bottom-color:var(--acc)}
.na-tab:hover{color:var(--txt)}
.na-pane{display:flex;flex-direction:column;gap:8px}
.na-pane label{font-size:13px;color:var(--mut)}
.na-pane code{background:var(--panel2);padding:1px 5px;border-radius:5px;font-size:12px}
.na-ta{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:inherit;resize:vertical;width:100%;box-sizing:border-box}
.na-actions{display:flex;align-items:center;gap:10px;margin-top:4px}
.na-btn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:8px;padding:8px 14px;font:inherit;display:inline-flex;align-items:center;gap:5px}
.na-btn:hover{border-color:var(--acc)}
.na-primary{background:var(--acc);color:#0b0d12;border:none;font-weight:600}
.na-msg{font-size:12px;color:#7ee787;display:inline-flex;align-items:center;gap:4px}
.na-hint{font-size:12px;color:var(--mut);opacity:.8;margin:0}
.na-avatar-row{display:flex;align-items:center;gap:16px}
.na-avatar-prev{width:96px;height:96px;border-radius:16px;object-fit:cover;border:1px solid var(--line);background:var(--panel2)}
.na-mem-list{display:flex;flex-direction:column;gap:4px;max-height:200px;overflow:auto}
.na-mem-item{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;font-size:13px}
.na-mem-name{display:inline-flex;align-items:center;gap:6px}
.na-mem-btns button{cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--mut);border-radius:6px;padding:3px 8px;font-size:12px}
.na-mem-btns button:hover{color:var(--txt)}
.na-danger{color:#ff7b72!important}
.na-empty{color:var(--mut);font-size:13px;padding:8px}
.na-mem-editor{margin-top:10px;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.na-profile{display:flex;align-items:center;gap:6px;margin-bottom:10px}
.na-profile-lbl{font-size:12px;color:var(--mut);margin-right:4px}
.na-pbtn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--mut);border-radius:16px;padding:4px 12px;font:inherit;font-size:12px}
.na-pbtn.on{background:var(--acc);color:#0b0d12;border-color:var(--acc);font-weight:600}
/* claude-oauth — onglets Recherche/Production */
.cox-tabs{display:flex;gap:4px;padding:0 16px;border-bottom:1px solid var(--line)}
.cox-tab{cursor:pointer;border:none;background:transparent;color:var(--mut);padding:8px 12px;border-bottom:2px solid transparent;font:inherit;font-size:13px}
.cox-tab.on{color:var(--txt);border-bottom-color:var(--acc)}
.cox-tab:hover{color:var(--txt)}
/* Paramètres — profil utilisateur (description + liens) */
.prof-ta{width:100%;box-sizing:border-box;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font:inherit;resize:vertical}
.prof-link{display:flex;gap:6px;margin-bottom:6px}
.prof-in{flex:1;min-width:0;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font:inherit}
.prof-in:first-child{flex:0 0 130px}
.prof-rm{width:auto!important;display:inline-flex;align-items:center;padding:6px 9px!important}
/* edenweb — fenêtre de recherche web */
.web-bar{display:flex;gap:8px;margin-bottom:12px}
.web-q{flex:1;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:9px 12px;font:inherit}
.web-go{cursor:pointer;border:none;background:var(--acc);color:#0b0d12;border-radius:8px;padding:0 14px;display:inline-flex;align-items:center}
.web-results{display:flex;flex-direction:column;gap:10px}
.web-res{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.web-res a{color:var(--acc);font-weight:600;text-decoration:none}
.web-res a:hover{text-decoration:underline}
.web-url{font-size:11px;color:var(--mut);margin:2px 0;word-break:break-all}
.web-snip{font-size:13px;color:var(--txt);margin:4px 0}
.web-read{cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--mut);border-radius:6px;padding:3px 9px;font-size:12px;margin-top:4px}
.web-read:hover{color:var(--txt)}
.web-content{margin-top:8px;font-size:12px;color:var(--mut);max-height:200px;overflow:auto;white-space:pre-wrap;border-top:1px solid var(--line);padding-top:6px}
.web-empty{color:var(--mut);font-size:13px}
/* edenrec — enregistrement d'écran */
.rec-pane{display:flex;flex-direction:column;gap:8px}
.rec-pane label{font-size:13px;color:var(--mut)}
.rec-in{width:120px;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:8px 11px;font:inherit}
.rec-hint{font-size:12px;color:var(--mut);opacity:.85}
.rec-pane code{background:var(--panel2);padding:1px 5px;border-radius:5px;font-size:12px}
.rec-btn{cursor:pointer;border:none;border-radius:8px;padding:9px 16px;font:inherit;font-weight:600;display:inline-flex;align-items:center;gap:6px;background:var(--acc);color:#0b0d12}
.edenrec-cd{position:fixed;inset:0;z-index:2147483646;display:flex;align-items:center;justify-content:center;font-size:140px;font-weight:800;color:#fff;background:rgba(0,0,0,.45);text-shadow:0 4px 24px rgba(0,0,0,.7);pointer-events:none}
.auto-rec-lbl{display:inline-flex;align-items:center;gap:3px;cursor:pointer;color:var(--mut);padding:0 4px}
.auto-rec-lbl:hover{color:var(--txt)}
/* edenmusic — lecteur audio + visualisations */
.music-bar{display:flex;gap:8px;margin-bottom:10px}
.music-sel{flex:1;min-width:0;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit}
.music-play{cursor:pointer;border:none;background:var(--acc);color:#0b0d12;border-radius:8px;padding:0 14px;display:inline-flex;align-items:center}
.music-modes{font-size:13px;color:var(--mut);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.music-mode{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:5px 8px;font:inherit}
.music-canvas{width:100%;height:230px;background:rgba(13,17,23,.5);border:1px solid var(--line);border-radius:10px}
.music-empty{color:var(--mut);font-size:13px;margin-top:8px}
.rec-music{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--txt);cursor:pointer}
/* edenlauncher — palette d'addons (Alt+K) */
.launcher-ov{position:fixed;inset:0;z-index:3500;background:rgba(0,0,0,.5);display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;animation:avm-in .12s ease}
.launcher{width:560px;max-width:92vw;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.6);overflow:hidden}
.launcher-q{width:100%;box-sizing:border-box;border:none;border-bottom:1px solid var(--line);background:transparent;color:var(--txt);padding:16px 18px;font:inherit;font-size:16px;outline:none}
.launcher-grid{max-height:50vh;overflow:auto;display:grid;grid-template-columns:repeat(2,1fr);gap:4px;padding:8px}
.launcher-item{display:flex;align-items:center;gap:10px;cursor:pointer;border:1px solid transparent;background:transparent;color:var(--txt);border-radius:10px;padding:10px 12px;font:inherit;text-align:left}
.launcher-item:hover,.launcher-item.sel{background:var(--panel2);border-color:var(--line)}
.launcher-item.sel{border-color:var(--acc)}
.launcher-item .li-ic{display:inline-flex;flex:0 0 auto}
.launcher-item .li-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.launcher-empty{color:var(--mut);padding:16px;grid-column:1/-1}
/* edenvid — lecteur vidéo */
.vid-bar{display:flex;gap:8px;margin-bottom:8px}
.vid-sel{flex:1;min-width:0;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit}
.vid-el{width:100%;max-height:calc(100% - 56px);background:#000;border-radius:10px;border:1px solid var(--line)}
.vid-empty{color:var(--mut);font-size:13px;margin-top:8px}
/* explorateur — loader de téléversement */
.exp-uploading{position:fixed;inset:0;z-index:4000;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center}
.exp-up-box{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 22px;color:var(--txt);font-size:14px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.exp-up-spin{width:20px;height:20px;border:3px solid var(--line);border-top-color:var(--acc);border-radius:50%;animation:exp-spin .8s linear infinite;flex:0 0 auto}
@keyframes exp-spin{to{transform:rotate(360deg)}}
/* edenrec : masque le pointeur réel pendant l'enregistrement (le faux curseur vert reste) */
html.edenrec-hidecur, html.edenrec-hidecur *{cursor:none!important}
/* aucune notification toast ne doit polluer la vidéo enregistrée */
html.edenrec-hidecur .eden-toasts{display:none!important}
@keyframes edenrec-blink{50%{opacity:.2}}
/* Mode humanisé OFF : cartes-résultat dans la conversation */
.result-card{display:flex;align-items:center;gap:10px;margin:8px 0;padding:10px 14px;background:var(--panel2);border:1px solid var(--line);border-radius:12px;max-width:560px}
.result-card .rc-ic{display:inline-flex;flex:0 0 auto}
.result-card .rc-name{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.result-card button{cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--acc);border-radius:8px;padding:5px 12px;font:inherit;font-size:13px}
.result-card button:hover{background:rgba(255,255,255,.06)}
.set-human-lbl{display:flex;align-items:flex-start;gap:8px;cursor:pointer;font-size:13px;line-height:1.4}
.builds-card .rc-build{margin-left:4px}
.builds-card .rc-build:disabled{opacity:.5;cursor:default}
/* Réveil : on estompe les messages pour laisser voir le réseau de neurones s'illuminer */
.msgs{transition:opacity .55s ease}
.msgs.awakening-dim{opacity:.14}

/* ---- Écran de login ------------------------------------------------------- */
.login{margin:auto;width:320px;background:var(--panel);border:1px solid var(--line);
  border-radius:14px;padding:26px}
.login h1{margin:0 0 4px;font-size:20px;display:flex;align-items:center;gap:8px}
.login p{color:var(--mut);margin:0 0 18px;font-size:13px}
.login input{width:100%;background:var(--panel2);color:var(--txt);
  border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin-bottom:10px;font:inherit}
.login .err{color:#ff6b6b;font-size:12px;min-height:16px}

/* ---- Modale Paramètres ---------------------------------------------------- */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;
  align-items:center;justify-content:center;z-index:50}
.sheet{width:min(760px,92vw);max-height:84vh;overflow:auto;background:var(--panel);
  border:1px solid var(--line);border-radius:14px;padding:20px}
.sheet h2{margin:0 0 14px;font-size:16px}
.sheet .x{float:right;cursor:pointer;color:var(--mut)}
.expert{border:1px solid var(--line);border-radius:8px;padding:8px 10px;
  margin-bottom:6px;font-size:13px}
.expert .t{color:var(--acc)}
.muted{color:var(--mut);font-size:12px}

/* ===========================================================================
   CORE + ADDONS : trousse à outils, fenêtres flottantes, toasts
   Étagement z-index : chat (1) < fenêtres/modals (1000+) < trousse (2000000).
   La trousse est TOUJOURS au-dessus de n'importe quel modal.
   =========================================================================== */

/* ---- Trousse à outils (panneau droite, repliable, always-on-top) ---------- */
.eden-toolbox{position:fixed;top:64px;right:0;z-index:2000000;display:flex;
  flex-direction:column;align-items:flex-end;gap:8px}
.eden-tb-toggle{cursor:pointer;width:40px;height:40px;border-radius:10px 0 0 10px;
  border:1px solid var(--line);border-right:none;background:var(--panel);color:var(--txt);
  font-size:18px;display:flex;align-items:center;justify-content:center;
  box-shadow:-2px 2px 12px rgba(0,0,0,.35)}
.eden-tb-toggle:hover{background:var(--panel2)}
.eden-tb-icons{display:flex;flex-direction:column;gap:6px;background:var(--panel);
  border:1px solid var(--line);border-right:none;border-radius:10px 0 0 10px;
  padding:8px 6px;box-shadow:-2px 2px 16px rgba(0,0,0,.4);transition:opacity .15s,transform .15s}
.eden-toolbox.collapsed .eden-tb-icons{opacity:0;transform:translateX(110%);pointer-events:none}
.eden-tb-icon{cursor:pointer;width:40px;height:40px;border-radius:9px;border:1px solid var(--line);
  background:var(--panel2);color:var(--txt);font-size:18px;display:flex;align-items:center;justify-content:center}
.eden-tb-icon:hover{border-color:var(--acc)}
.eden-tb-empty{color:var(--mut);font-size:11px;padding:4px 2px;text-align:center}

/* ---- Fenêtres façon hypreden : semi-transparentes (conversation visible),
   design Tokyo Night, glow de focus orange, opacité réglable (var --eden-win-op),
   mode tiling optionnel. ----------------------------------------------------- */
.eden-win{position:fixed;z-index:1000;display:flex;flex-direction:column;
  opacity:var(--eden-win-op,.96);
  background:linear-gradient(135deg,rgba(26,27,38,.92),rgba(22,22,30,.92));
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(93,220,154,.22);border-radius:11px;color:#c0caf5;
  box-shadow:0 18px 60px rgba(0,0,0,.55);overflow:hidden;min-width:280px;min-height:180px;
  transition:box-shadow .15s,border-color .15s}
.eden-win-focused{border-color:rgba(255,165,70,.55);
  box-shadow:0 0 0 2px rgba(255,165,70,.55),0 0 18px rgba(255,165,70,.30),0 18px 60px rgba(0,0,0,.55)}
/* secondaire d'un duo de sélection (Alt+clic) : anneau CYAN (la primaire reste orange) */
.eden-win-paired{border-color:rgba(94,226,255,.6);
  box-shadow:0 0 0 2px rgba(94,226,255,.65),0 0 18px rgba(94,226,255,.30),0 18px 60px rgba(0,0,0,.55)}
.eden-win-bar{height:38px;flex-shrink:0;display:flex;align-items:center;gap:8px;
  padding:0 8px 0 12px;cursor:move;background:rgba(122,162,247,.07);
  border-bottom:1px solid rgba(255,255,255,.06);user-select:none;
  font-family:ui-monospace,Menlo,Consolas,monospace}
.eden-win-dot{position:relative;width:9px;height:9px;border-radius:50%;background:#5ddc9a;flex-shrink:0;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 0 8px rgba(93,220,154,.6);transition:background .12s,box-shadow .12s,transform .12s}
.eden-win-focused .eden-win-dot{background:#ffa546;box-shadow:0 0 8px rgba(255,165,70,.7)}
/* croix blanche centrée, révélée au survol (façon pastille macOS) */
.eden-win-dot::after{content:'\00d7';color:#fff;font:700 9px/1 -apple-system,Menlo,monospace;
  opacity:0;transform:scale(.6);transition:opacity .12s,transform .12s;pointer-events:none}
/* survol = bouton de fermeture : rouge + croix blanche, halo conservé */
.eden-win-dot:hover{background:#f7768e;box-shadow:0 0 10px rgba(247,118,142,.85);transform:scale(1.25)}
.eden-win-dot:hover::after{opacity:1;transform:scale(1)}
.eden-win-title{flex:1;font-size:12.5px;font-weight:600;color:#c0caf5;letter-spacing:.3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eden-win-close{cursor:pointer;border:none;background:transparent;color:#565f89;
  font-size:15px;width:28px;height:28px;border-radius:6px}
.eden-win-close:hover{color:#f7768e;background:rgba(247,118,142,.12)}
.eden-win-pipbtn{cursor:pointer;border:none;background:transparent;color:#565f89;font-size:14px;width:28px;height:28px;border-radius:6px}
.eden-win-pipbtn:hover{color:var(--acc);background:rgba(122,162,247,.14)}
/* fenêtre détachée en PiP : remplit la fenêtre OS séparée */
.eden-win-detached{position:static!important;left:auto!important;top:auto!important;width:100%!important;height:100vh!important;border-radius:0!important;box-shadow:none!important;border:none!important}
.eden-pip-body{margin:0;background:#16161e}
/* curseur de souris « visible » du moteur d'actions (Eden.act) */
.eden-fakecursor{position:fixed;left:0;top:0;z-index:2147483646;pointer-events:none;display:none;filter:drop-shadow(0 2px 3px rgba(0,0,0,.55))}
.eden-fakecursor{filter:drop-shadow(0 1px 4px rgba(61,220,132,.6))}
.eden-fakecursor.clicking::after{content:'';position:absolute;left:3px;top:3px;width:30px;height:30px;margin:-15px;border-radius:50%;border:2px solid #3ddc84;animation:eden-cursor-click .28s ease-out}
@keyframes eden-cursor-click{0%{transform:scale(.2);opacity:.9}100%{transform:scale(1.4);opacity:0}}
/* icônes SVG cohérentes (Eden.icon) : alignement dans textes/boutons */
.eden-ic{display:inline-block;vertical-align:-0.18em;flex-shrink:0}
button .eden-ic,.eden-win-bar .eden-ic{vertical-align:middle}
/* edenact — surbrillance d'éléments pour démos/tutoriels (cadre animé) */
.eden-hl{position:fixed;z-index:2147483600;pointer-events:none;border-radius:8px;box-sizing:border-box;border:3px solid transparent}
.eden-hl-red{border-color:#ff3b3b;box-shadow:0 0 0 2px rgba(255,59,59,.35),0 0 18px 3px rgba(255,59,59,.55)}
.eden-hl-blue{border-color:#3b9bff;box-shadow:0 0 0 2px rgba(59,155,255,.35),0 0 18px 3px rgba(59,155,255,.55)}
.eden-hl.blink{animation:eden-hl-blink .7s steps(1,end) infinite}
@keyframes eden-hl-blink{0%,49%{opacity:1}50%,100%{opacity:.18}}
/* edenact — bandeau de narration façon RPG (gradient sombre en bas, texte temporisé) */
.eden-narrate{position:fixed;left:0;right:0;bottom:0;z-index:2147483601;pointer-events:none;display:flex;justify-content:center;padding:0 0 max(28px,5vh);opacity:0;transform:translateY(18px);transition:opacity .4s ease,transform .4s ease}
.eden-narrate.show{opacity:1;transform:translateY(0)}
.eden-narrate-inner{max-width:min(880px,86vw);width:100%;margin:0 24px;padding:18px 26px 20px;border-radius:14px;background:linear-gradient(180deg,rgba(8,10,18,.78),rgba(4,6,12,.94));border:1px solid rgba(255,255,255,.12);box-shadow:0 12px 40px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.eden-narrate-title{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#ffd479;margin-bottom:6px;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.eden-narrate-text{font-size:18px;line-height:1.5;color:#f3f4f8;text-shadow:0 1px 3px rgba(0,0,0,.7);min-height:1.5em}
.eden-win-body{flex:1;min-height:0;overflow:auto;padding:12px;color:#c0caf5}
/* mode tiling : transition douce des tuiles + barre non déplaçable */
.eden-win-tiled{transition:left .18s ease,top .18s ease,width .18s ease,height .18s ease,box-shadow .15s,border-color .15s}
.eden-win-tiled .eden-win-bar{cursor:default}
/* En tiling : pas de min-width/height (sinon une tuile plus petite que le min
   DÉBORDE sur sa voisine), et pas d'ombre portée débordante (déborde le gap et
   donne l'illusion que les tuiles passent les unes au-dessus des autres). */
body.eden-tiling .eden-win{border-radius:8px;min-width:0;min-height:0;box-shadow:none}
/* focus en tiling = anneau INTÉRIEUR (ne déborde pas hors de la tuile) */
body.eden-tiling .eden-win-focused{box-shadow:inset 0 0 0 2px rgba(255,165,70,.75)}
body.eden-tiling .eden-win-paired{box-shadow:inset 0 0 0 2px rgba(94,226,255,.85)}
/* poignées de redimensionnement entre tuiles (gutters draguables) */
.eden-tile-handle{position:fixed;z-index:1900000;background:transparent;transition:background .12s}
.eden-tile-handle.v{cursor:col-resize}
.eden-tile-handle.h{cursor:row-resize}
.eden-tile-handle:hover{background:rgba(255,165,70,.45)}
body.eden-tile-dragging{user-select:none}
body.eden-tile-dragging .eden-tile-handle{background:rgba(255,165,70,.35)}
body.eden-tile-dragging .eden-win-tiled{transition:none}  /* resize live sans lag */
/* contrôle WM (tiling) en bas de la trousse */
.eden-tb-wm{display:flex;justify-content:center;padding:6px 8px;
  background:var(--panel);border-left:1px solid var(--line);border-top:1px solid var(--line)}
.eden-toolbox.collapsed .eden-tb-wm{opacity:0;transform:translateX(110%);pointer-events:none;transition:.18s}
.eden-tb-wmbtn{cursor:pointer;width:34px;height:30px;border-radius:8px;border:1px solid var(--line);
  background:var(--panel2);color:var(--mut);font-size:14px}
.eden-tb-wmbtn:hover{color:var(--txt);border-color:var(--acc)}
.eden-tb-wmbtn.on,body.eden-tiling .eden-tb-wmbtn{color:#ffa546;border-color:rgba(255,165,70,.5)}

/* outil démo Notes */
.eden-app-notes .eden-win-body{display:flex;flex-direction:column;gap:8px}
.eden-notes-area{flex:1;resize:none;background:rgba(10,11,15,.5);color:var(--txt);
  border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:13px/1.5 inherit}
.eden-notes-status{font-size:11px;color:var(--mut)}

/* ---- Toasts --------------------------------------------------------------- */
.eden-toasts{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);
  z-index:3000000;display:flex;flex-direction:column;gap:8px;align-items:center}
.eden-toast{padding:9px 16px;border-radius:9px;font-size:13px;color:var(--txt);
  background:var(--panel);border:1px solid var(--line);box-shadow:0 6px 24px rgba(0,0,0,.4);
  transition:opacity .3s}
.eden-toast-success{border-color:rgba(122,223,156,.5)}
.eden-toast-error{border-color:rgba(255,107,107,.5)}
.eden-toast-warn{border-color:rgba(214,168,79,.5)}

/* ===== Addon office (viewer DOCX) ===== */
/* Plugin: office — fenêtre flottante DOCX (palette dark EdenALOS). */

.office-float-window {
  position: fixed;
  display: flex;
  flex-direction: column;
  background: rgba(8, 14, 28, 0.97);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 10px;
  box-shadow:
    0 18px 60px rgba(0, 0, 0, 0.55),
    0 0 24px rgba(88, 200, 255, 0.14);
  overflow: hidden;
  font-family: var(--font-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
  color: var(--fg, #cdd6f4);
  animation: office-win-in 0.18s ease-out;
}
@keyframes office-win-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; } }
.office-float-window.office-float-window-maximized { border-radius: 0; box-shadow: none; }
.office-float-window.office-float-fullscreen { border-radius: 0; border: none; box-shadow: none; }

/* Titlebar (factorisée par Eden.shell) */
.office-float-window-titlebar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 34px;
  padding: 0 12px;
  background: rgba(255, 255, 255, 0.04);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  cursor: grab;
  user-select: none;
  flex-shrink: 0;
}
.office-float-window-titlebar:active { cursor: grabbing; }
.office-float-window-titlebar-left {
  display: flex; align-items: center; gap: 8px;
  min-width: 0; flex: 1;
}
.office-float-window-title {
  font-size: 13px; font-weight: 600;
  color: var(--fg, #cdd6f4);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  letter-spacing: 0.01em;
  margin-left: 6px;
}

/* Boutons titlebar extra (download) */
.office-actions {
  display: flex; gap: 4px;
  flex-shrink: 0;
  margin-left: 10px;
}
.office-action {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 22px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 4px;
  color: var(--fg, #cdd6f4);
  font-size: 12px;
  font-family: inherit;
  cursor: pointer;
  text-decoration: none;
  transition: background .15s, border-color .15s, color .15s;
  padding: 0;
}
.office-action:hover {
  background: rgba(88, 200, 255, 0.14);
  border-color: rgba(88, 200, 255, 0.32);
  color: #a8d4ff;
}

/* Body — surface "papier" sombre, prose lisible */
.office-float-window-body {
  flex: 1;
  overflow: auto;
  background: #1a1a1a;
  padding: 24px;
}
.office-doc {
  max-width: 820px;
  margin: 0 auto;
  background: #f5f1e8;
  color: #1a1a1a;
  padding: 56px 72px;
  border-radius: 4px;
  box-shadow: 0 6px 28px rgba(0, 0, 0, 0.45);
  font-family: 'Calibri', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  min-height: 300px;
}
.office-doc h1 { font-size: 26px; margin: 0 0 14px; font-weight: 700; }
.office-doc h2 { font-size: 20px; margin: 22px 0 10px; font-weight: 700; }
.office-doc h3 { font-size: 17px; margin: 18px 0 8px; font-weight: 600; }
.office-doc h4, .office-doc h5, .office-doc h6 { font-size: 15px; margin: 14px 0 6px; font-weight: 600; }
.office-doc p { margin: 0 0 10px; }
.office-doc ul, .office-doc ol { margin: 0 0 12px; padding-left: 28px; }
.office-doc li { margin: 2px 0; }
.office-doc a { color: #1a4ea8; text-decoration: underline; }
.office-doc img { max-width: 100%; height: auto; }
.office-doc table {
  border-collapse: collapse;
  margin: 12px 0;
  font-size: 13px;
}
.office-doc th, .office-doc td {
  border: 1px solid #c9c2b3;
  padding: 6px 10px;
  text-align: left;
  vertical-align: top;
}
.office-doc th { background: #ebe5d4; font-weight: 600; }
.office-doc blockquote {
  margin: 10px 0;
  padding: 6px 14px;
  border-left: 3px solid #b9a87c;
  color: #444;
  background: rgba(0, 0, 0, 0.02);
}
.office-doc pre {
  background: #2a2a2a;
  color: #f5f1e8;
  padding: 12px 14px;
  border-radius: 4px;
  overflow-x: auto;
  font-family: 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12.5px;
  line-height: 1.45;
}
.office-doc code {
  background: rgba(0, 0, 0, 0.06);
  padding: 1px 5px;
  border-radius: 3px;
  font-family: 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12.5px;
}
.office-doc hr {
  border: 0;
  border-top: 1px solid #c9c2b3;
  margin: 18px 0;
}

/* ===== Addon eod (éditeur de document) ===== */
/* ═══════════════════════════════════════════════════════════════════════
   Plugin doc — éditeur WYSIWYG (Google Docs equivalent).
   Fenêtre flottante + toolbar + page A4 simulée + launcher modal.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Fenêtre flottante ─────────────────────────────────────────────── */
.doc-float-window {
  position: fixed;
  display: flex;
  flex-direction: column;
  background: rgba(8, 14, 28, 0.97);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 10px;
  box-shadow:
    0 18px 60px rgba(0, 0, 0, 0.55),
    0 0 24px rgba(88, 200, 255, 0.14);
  overflow: hidden;
  font-family: var(--font-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
  color: var(--fg, #cdd6f4);
  animation: doc-win-in 0.18s ease-out;
}
@keyframes doc-win-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; } }
.doc-float-window.doc-float-window-maximized { border-radius: 0; box-shadow: none; }

.doc-float-window-titlebar {
  display: flex; align-items: center; justify-content: space-between;
  height: 34px; padding: 0 12px;
  background: rgba(255, 255, 255, 0.04);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  cursor: grab; user-select: none; flex-shrink: 0;
}
.doc-float-window-titlebar:active { cursor: grabbing; }
.doc-float-window-titlebar-left { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 1; }
.doc-float-window-title {
  font-size: 13px; font-weight: 600;
  color: var(--fg, #cdd6f4);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  letter-spacing: 0.01em; margin-left: 6px;
}

.doc-float-window-body {
  flex: 1;
  display: flex; flex-direction: column;
  overflow: hidden;
  background: #0d1117;
}

/* ── Toolbar ───────────────────────────────────────────────────────── */
.doc-toolbar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px;
  padding: 8px 12px;
  background: rgba(255, 255, 255, 0.03);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  flex-shrink: 0;
  font-size: 12px;
}
.doc-tb-btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 28px; height: 26px;
  padding: 0 6px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 4px;
  color: var(--fg, #cdd6f4);
  font-size: 13px;
  font-family: inherit;
  cursor: pointer;
  transition: background .12s, border-color .12s;
}
.doc-tb-btn:hover {
  background: rgba(88, 200, 255, 0.14);
  border-color: rgba(88, 200, 255, 0.28);
}
.doc-tb-btn:active { transform: translateY(1px); }
.doc-tb-select {
  height: 26px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 4px;
  color: var(--fg, #cdd6f4);
  font-size: 12px;
  padding: 0 6px;
  cursor: pointer;
}
.doc-tb-color {
  width: 28px; height: 26px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 4px;
  padding: 0 2px;
  background: rgba(255, 255, 255, 0.04);
  cursor: pointer;
}
.doc-tb-sep {
  width: 1px; height: 18px;
  background: rgba(255, 255, 255, 0.10);
  margin: 0 4px;
  flex-shrink: 0;
}

/* ── Canvas + page A4 ──────────────────────────────────────────────── */
.doc-canvas {
  flex: 1; min-height: 0;
  overflow: auto;
  background: #1a1a1a;
  padding: 24px 0;
}
.doc-page {
  width: min(21cm, calc(100% - 48px));
  min-height: 27cm;
  margin: 0 auto;
  padding: 2.5cm 2cm;
  background: #f5f1e8;
  color: #1a1a1a;
  border-radius: 4px;
  box-shadow: 0 6px 28px rgba(0, 0, 0, 0.45);
  font-family: 'Calibri', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  outline: none;
}
.doc-page:focus { outline: 2px solid rgba(88, 200, 255, 0.20); outline-offset: 2px; }
.doc-page p { margin: 0 0 10px; }
.doc-page h1 { font-size: 26px; margin: 0 0 14px; font-weight: 700; }
.doc-page h2 { font-size: 20px; margin: 22px 0 10px; font-weight: 700; }
.doc-page h3 { font-size: 17px; margin: 18px 0 8px; font-weight: 600; }
.doc-page h4 { font-size: 15px; margin: 14px 0 6px; font-weight: 600; }
.doc-page ul, .doc-page ol { margin: 0 0 12px; padding-left: 28px; }
.doc-page li { margin: 2px 0; }
.doc-page a { color: #1a4ea8; text-decoration: underline; }
.doc-page img { max-width: 100%; height: auto; }
.doc-page table { border-collapse: collapse; margin: 12px 0; font-size: 13px; }
.doc-page th, .doc-page td { border: 1px solid #c9c2b3; padding: 6px 10px; text-align: left; vertical-align: top; }
.doc-page th { background: #ebe5d4; font-weight: 600; }
.doc-page blockquote {
  margin: 10px 0; padding: 6px 14px;
  border-left: 3px solid #b9a87c;
  color: #444; background: rgba(0, 0, 0, 0.02);
}
.doc-page pre {
  background: #2a2a2a; color: #f5f1e8;
  padding: 12px 14px; border-radius: 4px;
  overflow-x: auto;
  font-family: 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12.5px; line-height: 1.45;
}
.doc-page hr { border: 0; border-top: 1px solid #c9c2b3; margin: 18px 0; }

/* ── Launcher modal ────────────────────────────────────────────────── */
.doc-launcher-overlay {
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.65);
  z-index: 2000;
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
}
.doc-launcher {
  background: var(--bg-secondary, #1e1e2e);
  color: var(--text-primary, #cdd6f4);
  border: 1px solid var(--border-color, #45475a);
  border-radius: 10px;
  width: 100%; max-width: 520px;
  max-height: 80vh;
  display: flex; flex-direction: column;
  overflow: hidden;
  box-shadow: 0 16px 50px rgba(0, 0, 0, 0.55);
}
.doc-launcher-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border-color, #313244);
  background: var(--bg-tertiary, #181825);
  font-weight: 600;
  color: var(--accent-primary, #cba6f7);
}
.doc-launcher-close {
  background: transparent; border: none; color: inherit; cursor: pointer;
  font-size: 18px; padding: 4px 8px; border-radius: 4px;
}
.doc-launcher-close:hover { background: var(--bg-hover, #313244); }
.doc-launcher-body { padding: 14px; overflow-y: auto; }
.doc-launcher-new {
  width: 100%; padding: 10px;
  background: var(--accent-primary, #cba6f7);
  color: #1e1e2e; border: none; border-radius: 6px;
  font-weight: 600; font-size: 13px;
  cursor: pointer; margin-bottom: 12px;
}
.doc-launcher-new:hover { filter: brightness(1.08); }
.doc-launcher-list { display: flex; flex-direction: column; gap: 6px; }
.doc-launcher-item {
  display: flex; flex-direction: column; align-items: flex-start;
  width: 100%; padding: 10px 12px;
  background: var(--bg-tertiary, #181825);
  border: 1px solid var(--border-color, #313244);
  border-radius: 6px;
  color: inherit;
  cursor: pointer; text-align: left;
  transition: border-color .12s, background .12s;
}
.doc-launcher-item:hover {
  border-color: var(--accent-primary, #cba6f7);
  background: var(--bg-hover, #313244);
}
.doc-launcher-item-name { font-weight: 600; font-size: 13px; }
.doc-launcher-item-meta { font-size: 11px; color: var(--text-secondary, #a6adc8); margin-top: 2px; }
.doc-launcher-empty {
  text-align: center;
  color: var(--text-secondary, #a6adc8);
  padding: 24px;
  font-size: 12px;
  font-style: italic;
}

/* ===== Addon eos (tableur) ===== */
/* Plugin: sheet — tableur Phase 2 (palette dark EdenALOS). */

.sheet-float-window {
  position: fixed;
  display: flex; flex-direction: column;
  background: rgba(8, 14, 28, 0.97);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 10px;
  box-shadow:
    0 18px 60px rgba(0, 0, 0, 0.55),
    0 0 24px rgba(88, 200, 255, 0.14);
  overflow: hidden;
  font-family: var(--font-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
  color: var(--fg, #cdd6f4);
  animation: sheet-win-in 0.18s ease-out;
}
@keyframes sheet-win-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; } }
.sheet-float-window.sheet-float-window-maximized { border-radius: 0; box-shadow: none; }

.sheet-float-window-titlebar {
  display: flex; align-items: center;
  height: 32px; padding: 0 12px;
  background: rgba(255, 255, 255, 0.04);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  cursor: grab; user-select: none;
  flex-shrink: 0;
}
.sheet-float-window-titlebar:active { cursor: grabbing; }
.sheet-float-window-titlebar-left {
  display: flex; align-items: center; gap: 8px;
  min-width: 0; flex: 1;
}
.sheet-float-window-title {
  font-size: 13px; font-weight: 600;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-left: 6px;
}

/* Body : flex column (toolbar / formula / grid / tabs) */
.sheet-float-window-body {
  display: flex; flex-direction: column;
  flex: 1; overflow: hidden;
  position: relative;
  background: #0a0f1c;
  outline: none;
}

/* Toolbar */
.sheet-toolbar {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 10px;
  background: rgba(255, 255, 255, 0.02);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  flex-shrink: 0;
  flex-wrap: wrap;
}
/* Groupe d'actions de la toolbar : pattern Google Sheets — boutons collés
   entre eux dans un groupe, séparateur entre groupes via pseudo-element. */
.sheet-tb-group {
  display: inline-flex;
  align-items: center;
  gap: 1px;
  padding: 0 4px;
  position: relative;
}
.sheet-tb-group + .sheet-tb-group::before {
  content: '';
  position: absolute;
  left: -1px;
  top: 4px;
  bottom: 4px;
  width: 1px;
  background: rgba(255, 255, 255, 0.10);
}
.sheet-tb-sep {
  width: 1px; height: 22px;
  background: rgba(255, 255, 255, 0.08);
  margin: 0 4px;
}
.sheet-name {
  flex: 0 0 200px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--fg, #cdd6f4);
  border-radius: 5px;
  padding: 5px 9px;
  font-family: inherit;
  font-size: 12.5px;
  outline: none;
  font-weight: 600;
}
.sheet-name:focus { border-color: rgba(88, 200, 255, 0.40); }
.sheet-tb-btn {
  min-width: 28px; height: 26px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--fg, #cdd6f4);
  border-radius: 5px;
  font-size: 12px;
  cursor: pointer;
  padding: 0 8px;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: inherit;
  transition: background .15s, border-color .15s, color .15s;
}
.sheet-tb-btn:hover {
  background: rgba(88, 200, 255, 0.12);
  border-color: rgba(88, 200, 255, 0.32);
  color: #a8d4ff;
}
/* Bouton toggle actif (bold/italic/underline/strike/align ON sur la cellule) */
.sheet-tb-btn.is-active {
  background: rgba(88, 200, 255, 0.18);
  border-color: rgba(88, 200, 255, 0.50);
  color: #58c8ff;
}
/* Mini label texte à droite de l'icône (ex: "+L", "+C", "CSV", "XLSX") */
.sheet-tb-btn .sheet-tb-mini {
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.05em;
  margin-left: 3px;
  opacity: 0.85;
}
/* SVG dans bouton toolbar : flex centering OK, pas de problème de baseline */
.sheet-tb-btn svg { flex-shrink: 0; }
/* Wrapper pour color picker : icône cliquable révèle le color picker natif
   masqué par-dessus. Pattern Google Sheets : icône A barrée + bandeau couleur. */
.sheet-tb-color-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px; height: 26px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.04);
  cursor: pointer;
  color: var(--fg, #cdd6f4);
  transition: background .15s, border-color .15s, color .15s;
}
.sheet-tb-color-wrap:hover {
  background: rgba(88, 200, 255, 0.12);
  border-color: rgba(88, 200, 255, 0.32);
  color: #a8d4ff;
}
.sheet-tb-color-wrap input[type="color"] {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  border: none;
  background: transparent;
  cursor: pointer;
  opacity: 0; /* Native color input invisible — on révèle juste l'icône SVG dessous */
  padding: 0;
}
.sheet-tb-sel {
  height: 26px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--fg, #cdd6f4);
  border-radius: 5px;
  font-family: inherit;
  font-size: 11.5px;
  padding: 0 6px;
  outline: none;
  cursor: pointer;
}
.sheet-tb-sel:focus { border-color: rgba(88, 200, 255, 0.40); }
.sheet-tb-color {
  width: 30px; height: 26px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  background: transparent;
  cursor: pointer;
  padding: 2px;
}
.sheet-info {
  flex: 1; text-align: right;
  font-size: 11.5px;
  color: rgba(255, 255, 255, 0.5);
  font-variant-numeric: tabular-nums;
  margin-left: 12px;
  min-width: 200px;
}

/* Formula bar */
.sheet-formulabar {
  display: flex; align-items: center;
  background: rgba(0, 0, 0, 0.20);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  flex-shrink: 0;
}
.sheet-fbar-addr {
  width: 60px; text-align: center;
  font-size: 12px; font-weight: 700;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  color: #a8d4ff;
  padding: 5px 0;
  border-right: 1px solid rgba(255, 255, 255, 0.06);
  flex-shrink: 0;
}
.sheet-fbar-input {
  flex: 1;
  background: transparent;
  border: 0;
  color: var(--fg, #cdd6f4);
  padding: 5px 10px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12.5px;
  outline: none;
}

/* Grid wrapper */
.sheet-grid-wrap {
  flex: 1;
  overflow: auto;
  background: #0a0f1c;
  position: relative;
}
.sheet-grid {
  border-collapse: separate;
  border-spacing: 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  table-layout: fixed;
}

/* Headers */
.sheet-grid thead th,
.sheet-grid th.sheet-head-row {
  background: rgba(255, 255, 255, 0.03);
  color: rgba(255, 255, 255, 0.55);
  font-weight: 600;
  font-size: 10.5px;
  letter-spacing: 0.05em;
  text-align: center;
  padding: 4px 0;
  border-right: 1px solid rgba(255, 255, 255, 0.04);
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
  user-select: none;
  position: relative;
}
.sheet-grid thead th { position: sticky; top: 0; z-index: 3; height: 22px; }
.sheet-head-corner {
  width: 44px !important;
  position: sticky !important;
  left: 0; z-index: 4 !important;
  background: rgba(255, 255, 255, 0.05) !important;
}
.sheet-head-row {
  position: sticky;
  left: 0;
  z-index: 2;
  width: 44px;
  background: rgba(255, 255, 255, 0.03);
}
.sheet-col-resize {
  position: absolute;
  right: 0; top: 0; bottom: 0;
  width: 5px;
  cursor: col-resize;
}
.sheet-col-resize:hover { background: rgba(88, 200, 255, 0.30); }
.sheet-row-resize {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 4px;
  cursor: row-resize;
}
.sheet-row-resize:hover { background: rgba(88, 200, 255, 0.30); }

/* Cells */
.sheet-grid td {
  height: 22px;
  padding: 2px 6px;
  border-right: 1px solid rgba(255, 255, 255, 0.04);
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
  color: var(--fg, #cdd6f4);
  background: transparent;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: cell;
  font-variant-numeric: tabular-nums;
}
.sheet-grid td.is-active {
  outline: 2px solid rgba(88, 200, 255, 0.55);
  outline-offset: -2px;
  z-index: 1;
  position: relative;
}
.sheet-grid td.is-in-range {
  background: rgba(88, 200, 255, 0.06);
}

/* Editor flottant */
.sheet-celledit {
  position: absolute;
  display: none;
  z-index: 50;
  background: #0a0f1c;
  border: 2px solid rgba(88, 200, 255, 0.7);
  color: #fff;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  padding: 1px 5px;
  outline: none;
  box-shadow: 0 4px 14px rgba(88, 200, 255, 0.18);
}

/* Tabs feuilles */
.sheet-tabs {
  display: flex;
  flex-shrink: 0;
  background: rgba(0, 0, 0, 0.30);
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  padding: 0 8px;
  overflow-x: auto;
  height: 30px;
}
.sheet-tab {
  display: inline-flex; align-items: center;
  height: 30px;
  padding: 0 12px;
  background: transparent;
  border: none;
  border-right: 1px solid rgba(255, 255, 255, 0.04);
  color: rgba(255, 255, 255, 0.6);
  font-family: inherit;
  font-size: 11.5px;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  position: relative;
  gap: 6px;
}
.sheet-tab:hover { background: rgba(255, 255, 255, 0.04); color: #fff; }
.sheet-tab.active {
  background: rgba(88, 200, 255, 0.10);
  color: #a8d4ff;
  border-bottom: 2px solid #58c8ff;
}
.sheet-tab-x {
  width: 14px; height: 14px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  font-size: 11px;
  color: rgba(255, 255, 255, 0.4);
  transition: background .12s, color .12s;
}
.sheet-tab-x:hover { background: rgba(239, 68, 68, 0.20); color: #ef4444; }
.sheet-tab-add {
  width: 28px; height: 30px;
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.5);
  font-size: 16px;
  cursor: pointer;
  flex-shrink: 0;
}
.sheet-tab-add:hover { color: #a8d4ff; }

/* Modals (conditional formatting / validation) */
.sheet-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(2, 6, 14, 0.78);
  z-index: 9000;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.sheet-modal {
  background: rgba(8, 14, 28, 0.98);
  border: 1px solid rgba(88, 200, 255, 0.30);
  border-radius: 10px;
  width: min(560px, 96vw);
  max-height: 86vh;
  display: flex; flex-direction: column;
  overflow: hidden;
  color: var(--fg, #cdd6f4);
  font-family: var(--font-ui, sans-serif);
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6);
}
.sheet-modal-head {
  font-size: 14px; font-weight: 600;
  padding: 14px 18px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  letter-spacing: 0.02em;
}
.sheet-modal-body { flex: 1; overflow-y: auto; padding: 14px 18px; }
.sheet-modal-row {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.sheet-modal-row label {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.65);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.sheet-modal-row input[type="text"],
.sheet-modal-row input[type="number"],
.sheet-modal-row input:not([type]),
.sheet-modal-row select {
  flex: 1;
  min-width: 100px;
  background: rgba(0, 0, 0, 0.30);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 5px;
  color: var(--fg, #cdd6f4);
  padding: 6px 10px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  outline: none;
}
.sheet-modal-row input:focus,
.sheet-modal-row select:focus {
  border-color: rgba(88, 200, 255, 0.50);
}
.sheet-modal-row input[type="color"] {
  width: 36px; height: 26px;
  flex: 0 0 auto;
  padding: 2px;
  cursor: pointer;
}
.sheet-modal-row input[type="checkbox"] {
  flex: 0 0 auto;
  margin-right: 4px;
}
.sheet-modal-add {
  background: rgba(88, 200, 255, 0.16);
  border: 1px solid rgba(88, 200, 255, 0.40);
  color: #a8d4ff;
  padding: 7px 14px;
  border-radius: 5px;
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  margin-bottom: 14px;
  letter-spacing: 0.04em;
}
.sheet-modal-add:hover { background: rgba(88, 200, 255, 0.24); }
.sheet-modal-list { font-size: 11.5px; }
.sheet-modal-empty {
  padding: 16px 0;
  text-align: center;
  color: rgba(255, 255, 255, 0.4);
  font-style: italic;
}
.sheet-modal-rules {
  width: 100%;
  border-collapse: collapse;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
.sheet-modal-rules th {
  text-align: left;
  padding: 5px 8px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.55);
  font-weight: 600;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.sheet-modal-rules td {
  padding: 6px 8px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
  color: var(--fg, #cdd6f4);
  vertical-align: middle;
}
.sheet-modal-rules code {
  background: rgba(255, 255, 255, 0.04);
  padding: 1px 5px; border-radius: 3px; font-size: 11px;
}
.sheet-modal-preview {
  padding: 2px 8px;
  border-radius: 3px;
  font-weight: 600;
}
.sheet-modal-rm {
  width: 22px; height: 22px;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.10);
  color: rgba(255, 255, 255, 0.55);
  border-radius: 50%;
  cursor: pointer;
  font-size: 12px;
}
.sheet-modal-rm:hover { background: rgba(239, 68, 68, 0.16); border-color: #ef4444; color: #ef4444; }
.sheet-modal-foot {
  padding: 12px 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  display: flex; justify-content: flex-end;
  flex-shrink: 0;
}
.sheet-modal-close {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.10);
  color: var(--fg, #cdd6f4);
  padding: 7px 16px;
  border-radius: 5px;
  font-family: inherit;
  font-size: 12px;
  cursor: pointer;
}
.sheet-modal-close:hover { background: rgba(255, 255, 255, 0.08); }

/* Indicateur ▾ pour cellules avec validation list */
.sheet-grid td[data-validation="list"] {
  position: relative;
  padding-right: 18px;
}
.sheet-grid td[data-validation="list"]::after {
  content: '▾';
  position: absolute;
  right: 4px; top: 50%;
  transform: translateY(-50%);
  font-size: 9px;
  color: rgba(88, 200, 255, 0.55);
  pointer-events: none;
}

/* Picker de liste déroulante au clic sur une cellule list-validée */
.sheet-list-picker {
  position: fixed;
  z-index: 9500;
  background: rgba(8, 14, 28, 0.98);
  border: 1px solid rgba(88, 200, 255, 0.40);
  border-radius: 6px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.55);
  display: flex; flex-direction: column;
  padding: 4px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  min-width: 120px;
  max-height: 280px;
  overflow-y: auto;
}
.sheet-list-opt, .sheet-list-clear {
  background: transparent;
  border: none;
  color: var(--fg, #cdd6f4);
  text-align: left;
  padding: 6px 10px;
  border-radius: 4px;
  cursor: pointer;
  font-family: inherit;
  font-size: 12px;
}
.sheet-list-opt:hover { background: rgba(88, 200, 255, 0.14); color: #a8d4ff; }
.sheet-list-clear { color: rgba(255, 255, 255, 0.4); font-style: italic; border-top: 1px solid rgba(255,255,255,0.06); margin-top: 2px; }

/* Menu contextuel (cellule, header ligne/colonne) — pattern Google Sheets */
.sheet-ctxmenu {
  position: fixed;
  z-index: 999999;
  background: rgba(8, 14, 28, 0.98);
  border: 1px solid rgba(88, 200, 255, 0.30);
  border-radius: 6px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.55);
  padding: 4px;
  display: flex; flex-direction: column;
  min-width: 220px;
  user-select: none;
}
.sheet-ctxmenu button {
  background: transparent;
  border: none;
  color: var(--fg, #cdd6f4);
  text-align: left;
  padding: 6px 10px;
  font-family: var(--font-ui, sans-serif);
  font-size: 12px;
  cursor: pointer;
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: 9px;
}
.sheet-ctxmenu button svg { flex-shrink: 0; opacity: 0.85; }
.sheet-ctxmenu button:hover { background: rgba(88, 200, 255, 0.14); color: #a8d4ff; }
.sheet-ctxmenu button:hover svg { opacity: 1; }
.sheet-ctxmenu button.danger { color: #ff8b94; }
.sheet-ctxmenu button.danger:hover { background: rgba(239, 68, 68, 0.14); color: #ff5d6c; }
.sheet-ctxmenu .sheet-ctxmenu-sep {
  height: 1px;
  background: rgba(255, 255, 255, 0.10);
  margin: 4px 6px;
}

/* ---- Explorateur de fichiers (tools/explorer.js) --------------------------- */
.exp-window .eden-win-body{padding:0;display:flex;flex-direction:column}
.exp-toolbar{display:flex;align-items:center;gap:6px;padding:8px 10px;flex-shrink:0;
  border-bottom:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03)}
.exp-tb{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--mut);
  border-radius:7px;height:28px;min-width:30px;padding:0 7px;font-size:13px}
.exp-tb:hover{color:var(--txt);border-color:var(--acc)}
.exp-tb-spacer{flex:1}
.exp-breadcrumb{display:flex;align-items:center;gap:2px;flex-wrap:wrap;font-size:12px;overflow:hidden}
.exp-crumb{cursor:pointer;border:none;background:transparent;color:var(--acc);
  font-size:12px;padding:2px 4px;border-radius:5px;max-width:140px;overflow:hidden;
  white-space:nowrap;text-overflow:ellipsis}
.exp-crumb:hover{background:rgba(255,255,255,.06)}
.exp-sep{color:var(--mut);font-size:12px}
.exp-list{flex:1;min-height:0;overflow:auto;padding:6px}
.exp-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;
  cursor:default;user-select:none}
.exp-row:hover{background:rgba(255,255,255,.05)}
.exp-row-ic{width:20px;text-align:center;font-size:15px;flex-shrink:0}
.exp-row-name{flex:1;font-size:13px;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.exp-row-meta{font-size:11px;color:var(--mut);flex-shrink:0}
.exp-row-menu{opacity:0;cursor:pointer;border:none;background:transparent;color:var(--mut);
  font-size:15px;width:24px;height:24px;border-radius:6px;flex-shrink:0}
.exp-row:hover .exp-row-menu{opacity:1}
.exp-row-menu:hover{color:var(--txt);background:rgba(255,255,255,.08)}
.exp-empty,.exp-loading{color:var(--mut);font-size:12px;text-align:center;padding:24px 10px}
.exp-textview{margin:0;padding:14px;font:12px/1.55 ui-monospace,Menlo,Consolas,monospace;
  color:var(--txt);white-space:pre-wrap;word-break:break-word;height:100%;overflow:auto;box-sizing:border-box}
/* menu contextuel d'une ligne (au-dessus des fenêtres) */
.exp-menu{position:fixed;z-index:2500000;min-width:170px;background:var(--panel);
  border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 40px rgba(0,0,0,.5);
  padding:5px;display:flex;flex-direction:column;gap:1px}
.exp-menu-item{cursor:pointer;border:none;background:transparent;color:var(--txt);
  text-align:left;font-size:12.5px;padding:7px 10px;border-radius:6px}
.exp-menu-item:hover{background:rgba(123,155,255,.16)}
.exp-menu-item.danger{color:#ff8b94}
.exp-menu-item.danger:hover{background:rgba(239,68,68,.16);color:#ff5d6c}
.exp-menu-sep{height:1px;background:rgba(255,255,255,.10);margin:4px 6px}

/* ---- Export / impression (tools/print.js, porté de l'addon print) ---------- */
/* ═══════════════════════════════════════════════════════════════════════
   Plugin print — modal d'export partagée (PDF / DOCX / HTML).
   Lifted depuis EMD (.emd-em-*) → renommé .print-em-* pour réutilisation
   par sheet et doc plus tard.
   ═══════════════════════════════════════════════════════════════════════ */

.print-em-overlay {
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.65);
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.print-em {
  background: var(--bg-secondary, #1e1e2e);
  color: var(--text-primary, #cdd6f4);
  border: 1px solid var(--border-color, #45475a);
  border-radius: 10px;
  width: 100%;
  max-width: 640px;
  max-height: 92vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 16px 50px rgba(0, 0, 0, 0.55);
  font-size: 13px;
}
.print-em-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border-color, #313244);
  background: var(--bg-tertiary, #181825);
}
.print-em-title { font-weight: 600; color: var(--accent-primary, #cba6f7); font-size: 14px; }
.print-em-close {
  background: transparent; border: none; color: inherit; cursor: pointer;
  font-size: 18px; line-height: 1; padding: 4px 8px; border-radius: 4px;
}
.print-em-close:hover { background: var(--bg-hover, #313244); }

.print-em-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px 20px 18px; }

.print-em-fmt-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 16px; }
.print-em-fmt {
  background: var(--bg-tertiary, #11111b);
  border: 2px solid var(--border-color, #313244);
  border-radius: 8px;
  padding: 12px 8px;
  cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  color: inherit;
  transition: border-color .12s;
}
.print-em-fmt:hover { border-color: var(--accent-primary, #cba6f7); }
.print-em-fmt.is-active { border-color: var(--accent-primary, #cba6f7); background: var(--bg-secondary, #1e1e2e); }
.print-em-fmt-i { font-size: 22px; line-height: 1; }
.print-em-fmt-l { font-weight: 600; font-size: 13px; }
.print-em-fmt-d { font-size: 10px; color: var(--text-secondary, #a6adc8); text-align: center; }

.print-em-section { border: 1px solid var(--border-color, #313244); border-radius: 6px; margin-bottom: 10px; overflow: hidden; }
.print-em-section-head {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  background: var(--bg-tertiary, #181825);
  cursor: pointer;
}
.print-em-section-head:hover { background: var(--bg-hover, #313244); }
.print-em-toggle {
  width: 36px; height: 20px;
  background: var(--bg-primary, #1e1e2e);
  border: 1px solid var(--border-color, #45475a);
  border-radius: 12px; position: relative;
  cursor: pointer; flex-shrink: 0;
  transition: background .15s;
}
.print-em-toggle::after {
  content: ''; position: absolute;
  top: 2px; left: 2px;
  width: 14px; height: 14px;
  background: #cdd6f4; border-radius: 50%;
  transition: transform .15s;
}
.print-em-toggle.on { background: var(--accent-primary, #cba6f7); }
.print-em-toggle.on::after { transform: translateX(16px); background: #1e1e2e; }
.print-em-section-l { flex: 1; font-weight: 500; }
.print-em-section-body { display: none; padding: 12px; background: var(--bg-primary, #1e1e2e); }
.print-em-section-body.open { display: block; }
.print-em-section-body label { display: block; font-size: 11px; color: var(--text-secondary, #a6adc8); margin: 8px 0 4px; }
.print-em-section-body label:first-child { margin-top: 0; }
.print-em-section-body input[type="text"],
.print-em-section-body select {
  width: 100%; box-sizing: border-box;
  padding: 7px 10px; font-size: 13px;
  background: var(--bg-tertiary, #11111b);
  color: var(--text-primary, #cdd6f4);
  border: 1px solid var(--border-color, #45475a);
  border-radius: 4px; outline: none;
  font-family: inherit;
}
.print-em-section-body input[type="text"]:focus,
.print-em-section-body select:focus { border-color: var(--accent-primary, #cba6f7); }
.print-em-section-body .print-em-color { width: 50px; height: 32px; padding: 2px; cursor: pointer; }
.print-em-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.print-em-check { display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12px; }
.print-em-check input { margin: 0; }

.print-em-actions { display: flex; align-items: center; gap: 10px; padding-top: 14px; }
.print-em-progress { flex: 1; font-size: 11px; color: var(--text-secondary, #a6adc8); }

@media (max-width: 767px) {
  .print-em-overlay { padding: 0; align-items: stretch; }
  .print-em { max-width: none; max-height: none; height: 100%; border-radius: 0; }
  .print-em-fmt-row { grid-template-columns: 1fr; }
  .print-em-fmt { flex-direction: row; justify-content: flex-start; gap: 12px; padding: 12px; }
  .print-em-fmt-d { text-align: left; flex: 1; }
}

/* override nicolas : le modal d'export passe AU-DESSUS des fenêtres flottantes
   (z 1000+), SOUS la trousse (2000000) et les toasts (3000000). */
.print-em-overlay{z-index:1999998}

/* ---- EMD : éditeur Markdown (tools/emd.js) --------------------------------- */
.emd-float-window .eden-win-body{padding:0;display:flex;flex-direction:column}

/* ---- #2 : bloc-document inline dans le chat (repliable) ------------------- */
.doc-card{border:1px solid var(--line);border-radius:10px;margin:8px 0;background:rgba(21,23,29,.6);overflow:hidden}
.doc-card-head{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;background:rgba(102,51,153,.12);border-bottom:1px solid var(--line);user-select:none}
.doc-card.collapsed .doc-card-head{border-bottom:none}
.doc-card-ico{font-size:16px}
.doc-card-name{font-weight:600;color:var(--txt);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.doc-card-action{font-size:10.5px;color:var(--mut);background:rgba(255,255,255,.06);padding:1px 7px;border-radius:10px}
.doc-card-sp{flex:1}
.doc-card-head button{background:none;border:none;color:var(--mut);cursor:pointer;font-size:14px;padding:2px 5px;border-radius:5px;line-height:1}
.doc-card-head button:hover{background:rgba(255,255,255,.08);color:var(--txt)}
.doc-card-toggle{transition:transform .15s}
.doc-card.collapsed .doc-card-toggle{transform:rotate(-90deg)}
.doc-card-body{height:440px;overflow:hidden}
.doc-card.collapsed .doc-card-body{display:none}
.doc-card-fb{padding:24px;color:var(--mut);font-size:13px;text-align:center}
.doc-card-fb button{margin-top:8px;background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:7px;padding:6px 12px;cursor:pointer}
.doc-seg-text{white-space:pre-wrap;word-wrap:break-word;margin-bottom:6px}
/* fenêtre embarquée (inline) : remplit le bloc-document, pas de barre de titre */
.eden-inline-win{display:flex;flex-direction:column;height:100%;background:transparent}
.eden-inline-bar{display:none}
.eden-inline-win > .eden-win-body{flex:1;min-height:0;overflow:auto;padding:0}
.emd-inline-win > .eden-win-body{overflow:hidden;display:flex;flex-direction:column}
.doc-inline-win > .eden-win-body{padding:12px}
/* edencode : éditeur de code WASM (flottant + inline) */
.ec-standalone-window .eden-win-body{padding:0;display:flex;flex-direction:column}
.ec-bar{display:flex;align-items:center;gap:10px;padding:6px 10px;background:#11151c;border-bottom:1px solid #2a3140;color:#8a96a8;font:12px/1 sans-serif;flex-shrink:0}
.ec-path{font-family:ui-monospace,monospace;color:#cfd8e3;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ec-dirty{color:#f4c54a;font-size:11px}
.ec-save{background:#161b24;border:1px solid #2a3140;color:#cfd8e3;border-radius:5px;padding:4px 10px;font-size:11px;cursor:pointer}
.ec-save:hover{border-color:var(--acc)}
.ec-canvas-wrap{flex:1 1 0%;min-height:0;position:relative;overflow:hidden;background:#0a0c12}
.ec-canvas{width:100%;height:100%;display:block;outline:none}
.ec-err{padding:20px;color:#ffb3bb;font:13px monospace}
/* edencode v2 : vue projet + accueil + compile */
.ec-project-window .eden-win-body,.ec-home-window .eden-win-body,.ec-compile-window .eden-win-body{padding:0;display:flex;flex-direction:column}
.ec-bar .ec-proj{font-weight:600;color:#cfd8e3;font-size:13px;flex:0 0 auto}
.ec-bar button{background:#161b24;border:1px solid #2a3140;color:#cfd8e3;border-radius:5px;padding:4px 9px;font-size:12px;cursor:pointer}
.ec-bar button:hover{border-color:var(--acc)}
.ec-save.on{color:#f4c54a;border-color:#f4c54a}
.ec-main{flex:1;min-height:0;display:flex}
.ec-tree{width:200px;flex-shrink:0;overflow:auto;background:rgba(0,0,0,.22);border-right:1px solid #2a3140;padding:6px 0}
.ec-tree-dir{color:#7aa2f7;padding:3px 6px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-tree-file{color:var(--mut);padding:3px 6px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-tree-file:hover{background:rgba(255,255,255,.05);color:var(--txt)}
.ec-tree-file.active{background:rgba(122,162,247,.18);color:#c0caf5}
.ec-tree-empty{color:var(--mut);font-size:11px;padding:10px}
.ec-main .ec-canvas-wrap{flex:1;min-height:0}
.ec-home{display:flex;flex-direction:column;height:100%}
.ec-home-h{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #2a3140;color:#cfd8e3}
.ec-home-list{flex:1;overflow:auto;padding:8px}
.ec-home-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer;border:1px solid transparent}
.ec-home-item:hover{background:rgba(255,255,255,.05);border-color:#2a3140}
.ec-home-name{flex:1;color:var(--txt);font-size:14px}
.ec-home-open{color:var(--acc);font-size:12px;opacity:.7}
.ec-cmp{padding:16px;display:flex;flex-direction:column;gap:8px}
.ec-cmp label{font-size:12px;color:var(--mut)}
.ec-cmp-targets{display:flex;gap:14px;font-size:13px}
.ec-cmp-targets label{display:flex;align-items:center;gap:5px;color:var(--txt)}
.ec-in{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:13px}
.ec-cmp-actions{display:flex;align-items:center;gap:10px;margin-top:8px}
.ec-cmp-status{flex:1;color:var(--mut);font-size:12px}
.ec-main.no-tree .ec-tree{display:none}
.ec-wrap{display:inline-flex;align-items:center;gap:4px;color:#cfd8e3;font-size:12px;cursor:pointer;padding:0 4px;white-space:nowrap}
.ec-tree-dir.drop{background:rgba(122,162,247,.25);outline:1px dashed var(--acc);outline-offset:-2px}
.ec-tree-file[draggable]{cursor:grab}
.ec-menu{position:fixed;z-index:99999;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.55);overflow:hidden;min-width:170px}
.ec-menu-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--txt);padding:8px 14px;cursor:pointer;font-size:13px}
.ec-menu-item:hover{background:rgba(122,162,247,.16)}
.ec-menu-item.danger{color:#f7768e}
/* edenauto : gestion des comportements */
.auto-window .eden-win-body,.auto-report .eden-win-body{padding:0;display:flex;flex-direction:column}
.auto-tabs{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--line);flex-shrink:0}
.auto-tab{background:none;border:1px solid transparent;color:var(--mut);border-radius:7px;padding:5px 12px;cursor:pointer;font-size:13px}
.auto-tab.on{background:rgba(122,162,247,.16);color:#c0caf5;border-color:rgba(122,162,247,.4)}
.auto-list{flex:1;overflow:auto;padding:8px}
.auto-empty{color:var(--mut);font-size:13px;padding:20px;text-align:center}
.auto-item{border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin-bottom:8px;background:rgba(21,23,29,.6)}
.auto-name{font-weight:600;color:var(--txt);font-size:14px}
.auto-desc{color:var(--mut);font-size:12px;margin:4px 0 8px}
.auto-actions{display:flex;flex-wrap:wrap;gap:5px}
.auto-actions button{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:4px 8px;cursor:pointer;font-size:13px}
.auto-actions button:hover{border-color:var(--acc)}
.auto-actions .auto-danger:hover{border-color:#f7768e}
.auto-form{display:flex;flex-direction:column;gap:6px;padding:14px;height:100%}
.auto-form label{font-size:12px;color:var(--mut)}
.auto-in,.auto-ta{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:13px}
.auto-ta{resize:none;flex:0 0 70px}
.auto-form-act{display:flex;align-items:center;gap:10px;margin-top:6px}
.auto-status{flex:1;color:var(--mut);font-size:12px}
.auto-modal .eden-win-body{padding:0}
.auto-countdown{position:fixed;inset:0;z-index:2147483645;display:flex;align-items:center;justify-content:center;background:rgba(10,12,18,.55);backdrop-filter:blur(2px)}
.auto-cd-num{font-size:140px;font-weight:800;color:#fff;text-shadow:0 0 40px rgba(122,162,247,.8);animation:auto-cd .85s ease-out}
@keyframes auto-cd{0%{transform:scale(.4);opacity:0}30%{transform:scale(1.1);opacity:1}100%{transform:scale(1);opacity:.85}}
.auto-rep{display:flex;flex-direction:column;height:100%}
.auto-rep-h{padding:12px 14px;border-bottom:1px solid var(--line);font-size:13px;color:var(--txt)}
.auto-ok{color:#9ece6a}.auto-ko{color:#f7768e}.auto-warn{color:#e0af68}
.auto-rep-steps{flex:1;overflow:auto;padding:8px 10px;font:12px/1.5 ui-monospace,monospace}
.auto-step{padding:3px 6px;border-bottom:1px solid rgba(255,255,255,.04)}
.auto-step.ok .auto-step-k{color:#9ece6a}.auto-step.ko .auto-step-k{color:#f7768e}
.auto-step-d{color:#c0caf5}.auto-step-e{color:#f7768e}.auto-step-t{color:#565f89;float:right}
.vsim-proj{background:#161b24;color:#cfd8e3;border:1px solid #2a3140;border-radius:5px;padding:3px 6px;font-size:12px;max-width:150px}
/* vanisim : prévisualiseur multi-device (flottant + inline) */
.vsim-window .eden-win-body{padding:0;display:flex;flex-direction:column}
.vsim-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#11151c;border-bottom:1px solid #2a3140;flex-shrink:0;font-size:12px;color:#8a96a8}
.vsim-dev{background:#161b24;color:#cfd8e3;border:1px solid #2a3140;border-radius:5px;padding:3px 6px;font-size:12px;max-width:230px}
.vsim-bar button{background:#161b24;border:1px solid #2a3140;color:#cfd8e3;border-radius:5px;padding:3px 9px;font-size:12px;cursor:pointer}
.vsim-bar button:hover{border-color:var(--acc)}
.vsim-dim{margin-left:auto;color:#6a7585;font-size:11px}
.vsim-stage{flex:1;min-height:0;overflow:auto;display:flex;align-items:flex-start;justify-content:center;background:#0a0c12;padding:12px}
.vsim-shell{transform-origin:top center;flex-shrink:0;border-radius:16px;overflow:hidden;background:#000;box-shadow:0 0 0 6px #1a1f28,0 12px 40px rgba(0,0,0,.55)}
.vsim-iframe{width:100%;height:100%;border:0;display:block;background:#fff}
.vsim-console{height:130px;flex-shrink:0;overflow:auto;background:#0d1017;border-top:1px solid #2a3140;font:11px/1.5 ui-monospace,monospace;padding:6px 8px}
.vsim-log{white-space:pre-wrap;word-break:break-word;border-bottom:1px solid rgba(255,255,255,.04);padding:1px 0}
.vsim-log-warn{color:#e0af68}
.vsim-log-error{color:#f7768e}
.vsim-log-info{color:#7dcfff}
.vsim-log-log{color:#c0caf5}
.vsim-insp-panel{flex-shrink:0;max-height:160px;overflow:auto;background:#0d1017;border-top:1px solid #2a3140;padding:8px 10px;font-size:12px;color:#c0caf5}
.vsim-insp-head{font-size:12.5px;color:#cfd8e3}
.vsim-insp-head b{color:#7dcfff}
.vsim-pin{color:#e0af68}
.vsim-insp-css{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px}
.vsim-insp-css span{font:11px ui-monospace,monospace;color:#9aa5b1}
.vsim-insp-css i{color:#565f89;font-style:normal}
.vsim-insp-txt{margin-top:6px;color:#9ece6a;font-size:11px}
.vsim-bar button.on{background:rgba(247,118,142,.18);border-color:#f7768e;color:#f7768e}

/* ---- RPC : badge d'indication / opt-in du partage de session ------------- */
.rpc-badge{position:fixed;left:14px;bottom:14px;z-index:9000;font-size:12px;padding:7px 12px;border-radius:18px;cursor:pointer;user-select:none;border:1px solid var(--line);box-shadow:0 4px 16px rgba(0,0,0,.4);transition:background .2s,border-color .2s,color .2s;display:flex;align-items:center;gap:6px}
.rpc-badge.off{background:rgba(28,32,44,.85);color:var(--mut)}
.rpc-badge.off:hover{color:var(--txt);border-color:var(--acc)}
.rpc-badge.on{background:rgba(46,204,113,.16);border-color:rgba(46,204,113,.5);color:#7ee2a8}
.rpc-badge.on.watched{background:rgba(224,175,104,.18);border-color:rgba(224,175,104,.6);color:#e0af68;animation:rpc-pulse 1.6s ease-in-out infinite}
.rpc-badge .rpc-x{opacity:.55;font-size:11px}
.rpc-badge.flash::after{content:attr(data-flash);position:absolute;left:0;bottom:calc(100% + 6px);white-space:nowrap;background:#1b1e26;border:1px solid var(--acc);color:#c0caf5;padding:4px 8px;border-radius:7px;font-size:11px;box-shadow:0 4px 14px rgba(0,0,0,.5)}
@keyframes rpc-pulse{0%,100%{box-shadow:0 0 0 0 rgba(224,175,104,.45)}50%{box-shadow:0 0 0 6px rgba(224,175,104,0)}}
.emd-toolbar{display:flex;align-items:center;gap:6px;padding:7px 10px;flex-shrink:0;
  border-bottom:1px solid rgba(255,255,255,.07);background:rgba(122,162,247,.05)}
.emd-tb{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--mut);
  border-radius:7px;height:28px;min-width:30px;padding:0 8px;font-size:13px}
.emd-tb:hover{color:var(--txt);border-color:var(--acc)}
.emd-main{flex:1;min-height:0;display:flex}
.emd-tree{width:190px;flex-shrink:0;overflow:auto;padding:6px 4px;border-right:1px solid rgba(255,255,255,.07);
  background:rgba(0,0,0,.18);font-size:12px}
.emd-main.no-tree .emd-tree{display:none}
.emd-tree-dir{color:#7aa2f7;padding:3px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.emd-tree-file{color:var(--mut);padding:3px 4px;border-radius:5px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emd-tree-file:hover{background:rgba(255,255,255,.06);color:var(--txt)}
.emd-tree-file.active{background:rgba(123,155,255,.18);color:#c0caf5}
.emd-tree-loading,.emd-tree-empty{color:var(--mut);font-size:11px;padding:8px 4px}
.emd-editor{flex:1;min-width:0;resize:none;border:none;outline:none;padding:14px 16px;
  background:#16161e;color:#c0caf5;font:13px/1.6 ui-monospace,Menlo,Consolas,monospace;tab-size:2}
.emd-main.no-preview .emd-editor{flex:1}
.emd-preview{flex:1;min-width:0;overflow:auto;padding:14px 18px;background:#1a1b26;color:#c0caf5;
  border-left:1px solid rgba(255,255,255,.07);font:14px/1.65 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
.emd-main.no-preview .emd-preview{display:none}
/* markdown rendu */
.emd-preview h1,.emd-preview h2,.emd-preview h3{color:#fff;line-height:1.3;margin:.8em 0 .4em}
.emd-preview h1{font-size:1.7em;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:.2em}
.emd-preview h2{font-size:1.35em;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:.15em}
.emd-preview h3{font-size:1.15em}
.emd-preview a{color:#7aa2f7}
.emd-preview code{background:rgba(122,162,247,.14);color:#9ece6a;padding:1px 5px;border-radius:4px;font:12px ui-monospace,monospace}
.emd-preview pre{background:#11121a;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:12px;overflow:auto}
.emd-preview pre code{background:none;color:#c0caf5;padding:0}
.emd-preview blockquote{border-left:3px solid #7aa2f7;margin:.6em 0;padding:.2em 0 .2em 12px;color:var(--mut)}
.emd-preview table{border-collapse:collapse;margin:.6em 0}
.emd-preview th,.emd-preview td{border:1px solid rgba(255,255,255,.12);padding:5px 10px}
.emd-preview th{background:rgba(122,162,247,.12)}
.emd-preview img{max-width:100%}
.emd-mermaid{margin:.8em 0;text-align:center;background:#11121a;border-radius:8px;padding:10px}
.emd-mermaid svg{max-width:100%;height:auto}

/* ---- Explorateur : propriétés + bouton coller désactivé --------------------- */
.exp-tb[disabled]{opacity:.4;cursor:not-allowed}
.exp-props-window .eden-win-body{padding:0}
.exp-props{display:flex;flex-direction:column;gap:2px;padding:14px 16px}
.exp-props-row{display:flex;gap:12px;font-size:13px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.exp-props-row span{color:var(--mut);min-width:92px;flex-shrink:0}
.exp-props-row b{color:var(--txt);font-weight:600;word-break:break-word}
.exp-props-row b.mono{font:12px ui-monospace,Menlo,Consolas,monospace;color:#9ece6a}
.exp-props-copy{margin-top:12px;cursor:pointer;border:1px solid var(--line);background:var(--panel2);
  color:var(--txt);border-radius:8px;padding:8px 12px;font-size:13px;align-self:flex-start}
.exp-props-copy:hover{border-color:var(--acc)}

/* ---- Explorateur : viewer d'image ----------------------------------------- */
.exp-img-window .eden-win-body{padding:0}
.exp-imgview{height:100%;display:flex;align-items:center;justify-content:center;overflow:auto;background:#0d0e13;color:var(--mut);padding:10px}
.exp-imgview img{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px}

/* ---- gedontol : gestionnaire edontol (tools/gedontol.js) ------------------- */
.ged-window .eden-win-body{padding:0;display:flex;flex-direction:column}
.ged-top{display:flex;align-items:center;gap:8px;padding:8px 10px;flex-shrink:0;
  border-bottom:1px solid rgba(255,255,255,.08);background:rgba(122,162,247,.05)}
.ged-tabs{display:flex;gap:4px}
.ged-tab{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--mut);
  border-radius:7px;padding:5px 12px;font-size:13px}
.ged-tab.active{color:#c0caf5;border-color:var(--acc);background:rgba(123,155,255,.14)}
.ged-top-sp{flex:1}
.ged-scope{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:5px 8px;font-size:12px;max-width:180px}
.ged-btn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:7px;padding:6px 12px;font-size:13px}
.ged-btn:hover{border-color:var(--acc)}
.ged-add{background:rgba(94,220,154,.16);border-color:rgba(94,220,154,.45);color:#9ece6a}
.ged-danger{background:rgba(255,165,70,.14);border-color:rgba(255,165,70,.45);color:#ffa546}
.ged-body{flex:1;min-height:0;overflow:auto;padding:12px}
.ged-filter,.ged-addrow{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.ged-in{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:7px 9px;font-size:13px;min-width:120px}
.ged-hint{color:var(--mut);font-size:12px;padding:14px 4px;text-align:center}
.ged-table{width:100%;border-collapse:collapse;font-size:12.5px}
.ged-table th{text-align:left;color:var(--mut);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#1a1b26}
.ged-table td{padding:6px 8px;border-bottom:1px solid rgba(255,255,255,.05);color:var(--txt);vertical-align:middle}
.ged-table tr:hover td{background:rgba(255,255,255,.03)}
.ged-x{cursor:pointer;border:none;background:transparent;color:#f7768e;font-size:14px;border-radius:5px;padding:2px 6px}
.ged-x:hover{background:rgba(247,118,142,.14)}
.ged-pw{cursor:pointer;border:none;background:transparent;color:var(--mut);font-size:14px;border-radius:5px;padding:2px 6px;margin-right:4px}
.ged-pw:hover{color:var(--txt);background:rgba(255,255,255,.08)}
.ged-role{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:6px;padding:3px 6px;font-size:12px}
.ged-status{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:6px;padding:3px 9px;font-size:11px}
.ged-count{color:var(--mut);font-size:11px;margin-top:8px}
.ged-newacc{margin-top:16px;padding-top:12px;border-top:1px solid var(--line);display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.ged-newacc b{color:var(--acc);font-size:12px;width:100%}

/* ---- gedontol : graphe visuel (canvas force-directed) ---------------------- */
.ged-body{display:flex;flex-direction:column}
.ged-vizinfo{color:var(--mut);font-size:11px;align-self:center;margin-left:4px}
.ged-canvaswrap{position:relative;flex:1;min-height:240px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#0d0e13}
.ged-canvas{display:block;width:100%;height:100%;cursor:grab}
.ged-canvas:active{cursor:grabbing}
.ged-sel{position:absolute;top:8px;right:8px;max-width:270px;max-height:75%;overflow:auto;display:none;
  background:rgba(26,27,38,.93);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:11px;
  backdrop-filter:blur(6px);box-shadow:0 8px 28px rgba(0,0,0,.5)}
.ged-sel-h{color:#ffa546;font-weight:700;margin-bottom:6px;word-break:break-all}
.ged-sel-h span{color:var(--mut);font-weight:400}
.ged-sel-r{color:var(--mut);padding:2px 0;word-break:break-all;line-height:1.4}
.ged-sel-r b{color:#7aa2f7}

/* ---- Pistachio propre (tools/pistachio.js) --------------------------------- */
.pist-window .eden-win-body{padding:0}
.pist-wrap{display:flex;height:100%}
.pist-side{width:210px;flex-shrink:0;border-right:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.18);display:flex;flex-direction:column}
.pist-side-h{padding:8px 10px;color:var(--mut);font-size:11px;font-weight:600;border-bottom:1px solid var(--line)}
.pist-list{flex:1;overflow:auto;padding:6px}
.pist-item{display:block;width:100%;text-align:left;cursor:pointer;border:1px solid transparent;background:transparent;color:var(--txt);border-radius:7px;padding:7px 8px;font-size:12.5px;margin-bottom:2px}
.pist-item:hover{background:rgba(255,255,255,.05)}
.pist-item.sel{background:rgba(123,155,255,.16);border-color:var(--acc)}
.pist-item.active{color:#9ece6a}
.pist-item-id{display:block;color:var(--mut);font-size:10px;font-family:ui-monospace,monospace;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pist-main{flex:1;min-width:0;display:flex;flex-direction:column}
.pist-hint{color:var(--mut);font-size:12px;padding:20px;text-align:center}
.pist-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.08);flex-wrap:wrap}
.pist-bar b{color:#c0caf5}
.pist-meta{color:var(--mut);font-size:11px}
.pist-live{color:#9ece6a;font-weight:700}
.pist-sp{flex:1}
.pist-ro{color:var(--mut);font-size:11px;font-style:italic}
.pist-btn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:7px;padding:5px 10px;font-size:12px}
.pist-btn:hover{border-color:var(--acc)}
.pist-save{background:rgba(94,220,154,.16);border-color:rgba(94,220,154,.45);color:#9ece6a}
.pist-activate{background:rgba(255,165,70,.14);border-color:rgba(255,165,70,.45);color:#ffa546}
.pist-canvaswrap{position:relative;flex:1;min-height:160px;background:#0d0e13;border-bottom:1px solid var(--line)}
.pist-canvas{display:block;width:100%;height:100%;cursor:grab}
.pist-canvas:active{cursor:grabbing}
.pist-editrow{height:38%;min-height:120px;display:flex}
.pist-json{flex:1;resize:none;border:none;outline:none;background:#16161e;color:#c0caf5;padding:10px 12px;font:11.5px/1.5 ui-monospace,Menlo,Consolas,monospace}

/* ---- edenmail (tools/edenmail.js) ------------------------------------------ */
.mail-window .eden-win-body{padding:0;display:flex;flex-direction:column}
.mail-top{display:flex;align-items:center;gap:8px;padding:8px 10px;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(122,162,247,.05)}
.mail-btn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:7px;padding:5px 10px;font-size:13px}
.mail-btn:hover{border-color:var(--acc)}
.mail-compose{background:rgba(94,220,154,.16);border-color:rgba(94,220,154,.45);color:#9ece6a}
.mail-who{color:var(--mut);font-size:11px;margin-left:auto}
.mail-search{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:5px 10px;font-size:12.5px;width:220px}
.mail-search:focus{border-color:var(--acc);outline:none}
.mail-main{flex:1;min-height:0;display:flex}
.mail-rail{width:152px;flex-shrink:0;overflow:auto;border-right:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.22);padding:6px 0}
.mail-box{padding:7px 11px;font-size:12.5px;color:var(--mut);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:2px solid transparent}
.mail-box:hover{background:rgba(255,255,255,.04);color:var(--txt)}
.mail-box.active{background:rgba(123,155,255,.14);color:#fff;border-left-color:var(--acc)}
.mail-list{width:300px;flex-shrink:0;overflow:auto;border-right:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.15)}
.mail-list-h{padding:7px 11px;font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0;background:#15161f;border-bottom:1px solid rgba(255,255,255,.06);z-index:1}
.mail-cnt{opacity:.6}
.mail-item{padding:9px 8px 9px 4px;border-bottom:1px solid rgba(255,255,255,.05);cursor:pointer;display:flex;gap:4px;align-items:flex-start}
.mail-item:hover{background:rgba(255,255,255,.04)}
.mail-item.sel{background:rgba(123,155,255,.16)}
.mail-item.unseen .mail-item-subj{color:#fff;font-weight:700}
.mail-item-c{min-width:0;flex:1}
.mail-star{background:none;border:none;cursor:pointer;font-size:15px;color:#4a4f6a;padding:0 2px;line-height:1.3;flex-shrink:0}
.mail-star.on,.mail-star:hover{color:#e0af68}
.mail-ans{color:#9ece6a}
.mail-item-from{color:#c0caf5;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mail-item-subj{color:var(--mut);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:2px 0}
.mail-item-date{color:var(--mut);font-size:10.5px}
.mail-more{display:block;width:calc(100% - 16px);margin:8px;padding:7px;background:var(--panel2);border:1px solid var(--line);border-radius:7px;color:var(--txt);cursor:pointer;font-size:12px}
.mail-more:hover{border-color:var(--acc)}
.mail-read{flex:1;min-width:0;overflow:auto;display:flex;flex-direction:column}
.mail-hint{color:var(--mut);font-size:12px;padding:24px;text-align:center}
.mail-msg-h{padding:14px 16px;border-bottom:1px solid var(--line)}
.mail-msg-subj{color:#fff;font-size:16px;font-weight:600;margin-bottom:6px}
.mail-msg-meta{color:var(--mut);font-size:12px;margin-bottom:8px;line-height:1.5}
.mail-tools{display:flex;flex-wrap:wrap;gap:6px}
.mail-tools .mail-btn{padding:4px 8px;font-size:12px}
.mail-danger{color:#f7768e;border-color:rgba(247,118,142,.4)}
.mail-danger:hover{border-color:#f7768e;background:rgba(247,118,142,.12)}
.mail-att{margin-top:10px;padding:7px 9px;background:rgba(224,175,104,.1);border:1px solid rgba(224,175,104,.3);border-radius:6px;font-size:12px;color:#e0af68}
.mail-cc-row{display:flex;flex-direction:column;gap:8px}
.mail-msg-body{padding:14px 16px;overflow:auto;color:#c0caf5;font-size:13px;line-height:1.55}
.mail-msg-body pre{white-space:pre-wrap;word-break:break-word;font:13px/1.5 inherit;margin:0}
.mail-html{background:#fff;color:#111;border-radius:6px;padding:12px;max-width:100%;overflow:auto}
.mail-html img{max-width:100%}
.mail-setup{padding:24px;color:var(--txt);max-width:560px}
.mail-setup h3{color:#ffa546;margin:0 0 10px}
.mail-setup p{color:var(--mut);font-size:13px;line-height:1.5}
.mail-setup pre{background:#11121a;border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:#9ece6a;font:12px ui-monospace,monospace;overflow:auto}
.mail-setup-d{font-size:12px}
.mail-compose-window .eden-win-body{padding:0}
.mail-c{display:flex;flex-direction:column;height:100%;padding:10px;gap:8px}
.mail-in{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:13px}
.mail-ta{flex:1;resize:none;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:10px;font:13px/1.5 inherit}
.mail-c-actions{display:flex;align-items:center;gap:8px;position:relative}
.mail-c-status{color:var(--mut);font-size:12px;flex:1}
.mail-att-dl{cursor:pointer;border:1px solid rgba(224,175,104,.4);background:rgba(224,175,104,.12);color:#e0af68;border-radius:6px;padding:3px 8px;font-size:12px;margin:2px 4px 2px 0}
.mail-att-dl:hover{border-color:#e0af68;background:rgba(224,175,104,.22)}
.mail-att-dl:disabled{opacity:.5;cursor:default}
.mail-atts{display:flex;flex-wrap:wrap;gap:6px;max-height:84px;overflow:auto}
.mail-chip{display:inline-flex;align-items:center;gap:5px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:3px 6px 3px 10px;font-size:12px;color:var(--txt)}
.mail-chip-sz{color:var(--mut);font-size:11px}
.mail-chip-x{background:none;border:none;color:var(--mut);cursor:pointer;font-size:12px;padding:0 2px}
.mail-chip-x:hover{color:#f7768e}
.mail-attmenu{position:absolute;bottom:38px;left:90px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.5);display:flex;flex-direction:column;z-index:10;overflow:hidden}
.mail-attmenu button{background:none;border:none;color:var(--txt);text-align:left;padding:8px 14px;cursor:pointer;font-size:12.5px;white-space:nowrap}
.mail-attmenu button:hover{background:rgba(123,155,255,.16)}
.mail-vfs-window .eden-win-body{padding:0}
.mvfs{display:flex;flex-direction:column;height:100%}
.mvfs-crumb{padding:8px 11px;font-size:12px;color:var(--mut);border-bottom:1px solid var(--line);flex-shrink:0}
.mvfs-c{color:var(--acc);cursor:pointer}
.mvfs-c:hover{text-decoration:underline}
.mvfs-list{flex:1;overflow:auto}
.mvfs-row{padding:8px 12px;font-size:13px;color:var(--txt);cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04);display:flex;align-items:center;gap:6px}
.mvfs-row:hover{background:rgba(255,255,255,.05)}
.mvfs-sz{margin-left:auto;color:var(--mut);font-size:11px}

/* ===========================================================================
   RESPONSIVE / MOBILE (≤ 720px) — nicolas.naturalink.net ergonomique au doigt.
   - Sidebar = tiroir overlay (ne pousse plus le chat) + backdrop tactile.
   - Chat plein écran, cibles tactiles agrandies, fenêtres d'addons plein écran.
   =========================================================================== */
.sb-backdrop{display:none}
@media (max-width: 720px) {
  #app{height:100dvh}
  /* Sidebar : tiroir overlay glissant, hors flux (le chat reste plein écran) */
  .sidebar{position:fixed;top:0;left:0;bottom:0;width:min(82vw,300px);z-index:60;
    flex-shrink:0;transform:translateX(0);opacity:1;
    box-shadow:0 0 44px rgba(0,0,0,.55);transition:transform .2s ease}
  #app.collapsed .sidebar{width:min(82vw,300px);opacity:1;border-right:1px solid var(--line);
    transform:translateX(-100%)}
  /* Backdrop affiché quand le tiroir est ouvert (tap = fermer) */
  .sb-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:55}
  #app:not(.collapsed) .sb-backdrop{display:block}
  #app.collapsed .sb-backdrop{display:none}
  /* Bouton hamburger (déjà visible quand replié) + topbar qui lui laisse la place */
  .reveal{top:8px;left:8px}
  .topbar{height:50px;padding:0 12px 0 54px}
  #app.collapsed .topbar > b{margin-left:0}
  .topbar > b{font-size:15px}
  .topbar .orch{font-size:11px;gap:6px}
  .topbar .orch select{max-width:42vw}
  /* Chat : marges réduites, pleine largeur */
  .msgs{padding:14px 0}
  .row{padding:6px 13px;max-width:100%}
  .composer{padding:8px 10px calc(8px + env(safe-area-inset-bottom))}
  .composer .wrap{max-width:100%}
  /* Connexion / inscription : s'ajuste aux petits écrans */
  .login{width:min(340px,92vw);padding:22px}
  /* Modales de sélection : jamais plus larges que l'écran */
  .cox-modal,.launcher{width:min(560px,94vw)}
  /* Fenêtres flottantes d'addons : plein écran sur mobile (sinon inutilisables) */
  .eden-win{position:fixed!important;inset:0!important;left:0!important;top:0!important;
    width:auto!important;height:auto!important;min-width:0!important;min-height:0!important;
    border-radius:0!important;transform:none!important}
  /* Cibles tactiles plus confortables */
  .iconbtn{width:38px;height:38px}
  .eden-tb-icon,.eden-tb-toggle{width:44px;height:44px}
}

/* ===== EOP : éditeur de présentations ===================================== */
.eop-window .eden-win-body{display:flex;flex-direction:column;padding:0}
.eop-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.eop-title{flex:0 1 260px;min-width:140px;background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font:inherit;font-weight:600}
.eop-bar .eop-sp{flex:1}
.eop-btn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:8px;padding:6px 11px;font-size:12.5px;display:inline-flex;align-items:center;gap:5px}
.eop-btn:hover{border-color:#39405a}
.eop-btn.eop-primary{background:var(--acc);color:#0b0d12;border-color:var(--acc);font-weight:600}
.eop-status{font-size:12px;color:var(--acc)}
.eop-list{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:12px}
.eop-empty{color:var(--mut);text-align:center;margin-top:40px;font-size:13px}
.eop-card{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.eop-card-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.eop-card-n{width:24px;height:24px;border-radius:6px;background:var(--panel);color:var(--acc);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:0 0 auto}
.eop-card-title{flex:1;min-width:0;background:var(--panel);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:6px 9px;font:inherit;font-weight:600}
.eop-mini{cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--mut);border-radius:6px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.eop-mini:hover{color:var(--txt)}
.eop-mini.eop-del:hover{color:#f0623a;border-color:#f0623a}
.eop-card-body{width:100%;box-sizing:border-box;min-height:70px;resize:vertical;background:var(--panel);color:var(--txt);border:1px solid var(--line);border-radius:7px;padding:8px 10px;font:inherit;font-size:13px;line-height:1.5}
/* Aperçu (export PDF) : pages de diapo */
.eop-slide-page{page-break-after:always;padding:48px 56px;min-height:420px;border:1px solid #e5e7eb;border-radius:8px;margin:0 0 18px;background:#fff;color:#1f2937;position:relative}
.eop-slide-page.eop-cover{display:flex;align-items:center;justify-content:center;text-align:center}
.eop-sp-title{font-size:1.7em;font-weight:700;margin:0 0 18px}
.eop-sp-list{font-size:1.15em;line-height:1.8;margin:0;padding-left:1.2em}
.eop-sp-num{position:absolute;bottom:14px;right:18px;font-size:.8em;color:#9ca3af}

/* ===== edenauto : bouton + modal Doc DSL ================================= */
.auto-doc{cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:8px;padding:5px 10px;font-size:12.5px;display:inline-flex;align-items:center;gap:5px;margin-right:8px}
.auto-doc:hover{border-color:#39405a}
.auto-doc-modal .eden-win-body{display:flex;flex-direction:column;padding:0}
.auto-doc-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);flex-shrink:0}
.auto-doc-msg{font-size:12px;color:var(--acc)}
.auto-doc-body{flex:1;overflow:auto;padding:16px 20px;line-height:1.6}
.auto-doc-body h1{font-size:20px;margin:.2em 0 .6em}
.auto-doc-body h2{font-size:16px;margin:1.2em 0 .5em;border-bottom:1px solid var(--line);padding-bottom:4px}
.auto-doc-body h3{font-size:14px;margin:1em 0 .4em;color:var(--acc)}
.auto-doc-body code{background:var(--panel2);padding:1px 5px;border-radius:4px;font-size:12.5px}
.auto-doc-body pre{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:12px;overflow:auto}
.auto-doc-body pre code{background:none;padding:0}
.auto-doc-body ul{padding-left:1.3em}
.auto-doc-body li{margin:.25em 0}
.auto-doc-mermaid{display:flex;justify-content:center;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:14px;margin:12px 0;overflow:auto}
.auto-doc-mermaid svg{max-width:100%;height:auto}
.auto-doc-body table{border-collapse:collapse;width:100%;margin:10px 0;font-size:13px}
.auto-doc-body th,.auto-doc-body td{border:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:top}
.auto-doc-body th{background:var(--panel2)}
.auto-doc-body blockquote{border-left:3px solid var(--acc);margin:10px 0;padding:4px 12px;color:var(--mut)}
