@layer components{
  /* Éditeur */
  .ed{display:grid;grid-template-columns:262px 1fr;gap:var(--sp-14);height:66vh;min-height:440px}
  .ed-tree{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}
  .ed-tree-head{display:flex;align-items:center;gap:var(--sp-6);padding:var(--sp-8) var(--sp-10);border-bottom:1px solid var(--line);background:var(--card2)}
  .ed-tree-head b{flex:1;font-size:var(--fs-sm)}
  .ed-tree-head .mini{padding:var(--sp-2) var(--sp-6)}
  .ed-tree-body{flex:1;overflow:auto;padding:var(--sp-6);font-size:var(--fs-md)}
  .ed-main{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--card)}
  .ed-bar{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-6) var(--sp-10);border-bottom:1px solid var(--line);background:var(--card2)}
  .ed-path{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:48%}
  .ed-dirty{color:var(--warn);font-weight:var(--fw-bold)}
  .ed-wrap{flex:1;display:flex;overflow:hidden;background:var(--bg2)}
  .ed-gutter{padding:var(--sp-10) var(--sp-8);text-align:right;color:var(--mut2);font-family:var(--font-mono);
    font-size:var(--ed-font,12.5px);line-height:1.55;white-space:pre;user-select:none;background:var(--card2);border-right:1px solid var(--line);overflow:hidden}
  .ed-code{position:relative;flex:1;overflow:hidden}
  .ed-hl,.ed-area{position:absolute;inset:0;margin:0;padding:var(--sp-10);border:0;
    font-family:var(--font-mono);font-size:var(--ed-font,12.5px);line-height:1.55;
    white-space:pre;tab-size:var(--ed-tab,2)}
  .ed-hl{pointer-events:none;color:var(--txt);background:transparent;overflow:hidden}
  .ed-area{background:transparent;color:transparent;caret-color:var(--txt);resize:none;outline:none;overflow:auto}
  .ed-code.no-hl .ed-hl,.cdc-ed.no-hl .ed-hl{display:none}
  .ed-code.no-hl .ed-area,.cdc-ed.no-hl .ed-area{color:var(--txt)}
  .ed-wrap[hidden],.ed-bin[hidden]{display:none}
  .ed-bin{flex:1;display:grid;place-items:center;overflow:auto;background:var(--bg2);padding:var(--sp-16)}
  .ed-bin-img{max-width:100%;max-height:100%;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper)}
  .ed-bin-msg{text-align:center;color:var(--mut);font-size:var(--fs-md);line-height:2}
  .t-com{color:var(--t-com);font-style:italic} .t-str{color:var(--t-str)} .t-num{color:var(--t-num)}
  .t-kw{color:var(--t-kw)} .t-fn{color:var(--t-fn)} .t-var{color:var(--t-var)}
  .t-tag{color:var(--t-tag)} .t-attr{color:var(--t-attr)} .t-prop{color:var(--t-prop)} .t-punct{color:var(--t-punct)}
  .ed-foot{display:flex;justify-content:space-between;padding:var(--sp-4) var(--sp-10);border-top:1px solid var(--line);
    background:var(--card2);font-size:var(--fs-xs);color:var(--mut);font-family:var(--font-mono)}
  .trow{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}
  .trow:hover{background:var(--line2)}
  .tname{overflow:hidden;text-overflow:ellipsis}
  .tcaret{display:inline-flex} .tcaret svg{width:12px;height:12px;color:var(--mut2)}
  .tdir.open>.trow .tcaret{transform:rotate(90deg)}
  .tchildren{padding-left:var(--sp-12)}
  .tnode svg.ic{width:14px;height:14px;color:var(--mut)}
  .tdir>.trow .tname{color:var(--txt)}
  .tdir>.trow>svg.ic{color:var(--accent)}
  .tsec>.trow{color:var(--mut2);cursor:not-allowed}
  .tign>.trow .tname{color:var(--mut2);font-style:italic}
  .tfile.active>.trow{background:color-mix(in srgb,var(--accent) 16%,transparent)}
  .ed-bar .on{background:var(--accent);color:var(--on-solid);border-color:var(--accent)}
  /* Journal des fichiers */
  .jrnl{display:flex;flex-direction:column}
  .jrow{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-6) var(--sp-2);border-bottom:1px solid var(--line2);font-size:var(--fs-sm)}
  .jact{font-size:var(--fs-2xs);font-weight:var(--fw-bold);text-transform:uppercase;padding:var(--sp-2) var(--sp-6);border-radius:var(--radius-sm);
    border:1px solid var(--line);color:var(--mut);min-width:62px;text-align:center}
  .jact.j-write,.jact.j-create,.jact.j-upload,.jact.j-mkdir{color:var(--ok);border-color:var(--ok)}
  .jact.j-delete{color:var(--err);border-color:var(--err)}
  .jact.j-rename{color:var(--warn);border-color:var(--warn)}
  .jpath{flex:1;min-width:0;font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .jtime{color:var(--mut);font-size:var(--fs-xs);white-space:nowrap;font-variant-numeric:tabular-nums}

  /* Render : styles déplacés dans 15-render.css (module DH.render) */

  /* Cahier des charges */
  .cdc{display:grid;grid-template-columns:262px 1fr;gap:var(--sp-14);height:66vh;min-height:440px}
  .cdc-list{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}
  .cdc-list-head{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-10);border-bottom:1px solid var(--line);background:var(--card2)}
  .cdc-list-head b{flex:1;font-size:var(--fs-sm)}
  #cdc-items{flex:1;overflow:auto}
  .cdc-item{display:block;width:100%;text-align:left;padding:var(--sp-8) var(--sp-10);border:none;border-bottom:1px solid var(--line2);background:transparent;cursor:pointer;border-radius:0}
  .cdc-item:hover{background:var(--line2)}
  .cdc-item.active{background:color-mix(in srgb,var(--accent) 14%,transparent)}
  .cdc-item .t{display:block;font-weight:var(--fw-medium);font-size:var(--fs-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cdc-item .p{display:block;font-size:var(--fs-xs);color:var(--mut);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cdc-edit{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--card)}
  .cdc-bar{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-6) var(--sp-10);border-bottom:1px solid var(--line);background:var(--card2)}
  .cdc-bar .on{background:var(--accent);color:var(--on-solid);border-color:var(--accent)}
  .cdc-split{flex:1;display:grid;grid-template-columns:1fr;overflow:hidden}
  .cdc-split.split2{grid-template-columns:1fr 1fr}
  .cdc-ed{position:relative;overflow:hidden}
  .cdc-preview{overflow:auto;padding:var(--sp-14) var(--sp-18);border-left:1px solid var(--line)}
  .md{line-height:1.62}
  .md h1{font-size:var(--fs-xl);margin:.1em 0 .5em;border-bottom:1px solid var(--line);padding-bottom:.2em}
  .md h2{font-size:var(--fs-lg);margin:1em 0 .4em} .md h3{font-size:var(--fs-base);margin:1em 0 .3em}
  .md code{font-family:var(--font-mono);font-size:.9em;background:var(--bg2);padding:var(--sp-1) var(--sp-4);border-radius:var(--radius-xs);border:1px solid var(--line)}
  .md pre{background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-12);overflow:auto}
  .md pre code{background:none;border:none;padding:0}
  .md ul,.md ol{padding-left:var(--sp-22)} .md a{color:var(--link)}
  .md table{border-collapse:collapse;width:100%;margin:.5em 0;font-size:var(--fs-md)}
  .md th,.md td{border:1px solid var(--line);padding:var(--sp-4) var(--sp-8);text-align:left}
  .md blockquote{border-left:3px solid var(--accent);margin:.5em 0;padding:.2em 0 .2em 12px;color:var(--mut)}
  .md hr{border:none;border-top:1px solid var(--line);margin:1em 0}
  .md-img{max-width:100%;border-radius:var(--radius-sm);border:1px solid var(--line)}
  .md-task{list-style:none;margin-left:-20px} .md-task input{margin-right:var(--sp-6);vertical-align:middle}
  .md del{opacity:.55}

  /* Recherche fichiers */
  .ed-search{padding:var(--sp-6) var(--sp-8);border-bottom:1px solid var(--line)}
  .ed-search input{padding:var(--sp-6) var(--sp-8);font-size:var(--fs-sm)}
  .srh{padding:var(--sp-4) var(--sp-6);font-size:var(--fs-xs);color:var(--mut);border-bottom:1px solid var(--line2)}
  .sres{display:block;width:100%;text-align:left;border:none;border-bottom:1px solid var(--line2);
    background:transparent;border-radius:0;padding:var(--sp-6) var(--sp-8);cursor:pointer}
  .sres:hover{background:var(--line2)}
  .sres-p{display:block;font-size:var(--fs-xs);color:var(--link);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sres-t{display:block;font-size:var(--fs-xs);color:var(--mut);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:var(--sp-2)}

  @media(max-width:760px){ .ed,.cdc{grid-template-columns:1fr;height:auto}
    .ed-tree-body,#cdc-items{max-height:220px} .ed-wrap{min-height:300px} .cdc-split{min-height:300px} }


}
