/* Sakurust — composants. Aucune couleur en dur : uniquement des var(--…) du thème. */

/* ---------- Polices auto-hébergées (graisses utilisées seulement) ---------- */
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/hanken-grotesk-latin-400-normal.787b3fdd0b.woff2") format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:500;font-display:swap;src:url("/assets/fonts/hanken-grotesk-latin-500-normal.31f666af7b.woff2") format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/hanken-grotesk-latin-600-normal.58f23b7ae3.woff2") format("woff2")}
@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/m-plus-rounded-1c-latin-700-normal.1688f14412.woff2") format("woff2")}
@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-weight:800;font-display:swap;src:url("/assets/fonts/m-plus-rounded-1c-latin-800-normal.69a2ee93cd.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/jetbrains-mono-latin-400-normal.14425ba9c6.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/jetbrains-mono-latin-600-normal.400c6bfda1.woff2") format("woff2")}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 14px/22px var(--font-sans);
  min-height:100vh;display:flex;flex-direction:column}
a{color:var(--accent-text);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-xs)}
.n-mono,code,kbd,pre{font-family:var(--font-mono)}
.n-muted{color:var(--ink-subtle)}
.n-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.n-skip{position:absolute;left:var(--space-4);top:-100px;z-index:10;padding:var(--space-2) var(--space-4);
  background:var(--surface-raised);border-radius:var(--radius-pill);box-shadow:var(--shadow-sm)}
.n-skip:focus{top:var(--space-2)}
.n-icon{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

/* ---------- Barre du haut ---------- */
.n-topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:var(--space-4);
  height:64px;padding:0 var(--space-6);background:var(--bg);border-bottom:1px solid var(--border)}
.n-wordmark{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--ink);white-space:nowrap}
.n-wordmark:hover{text-decoration:none}
.n-wordmark-hex{font:600 15px/1 var(--font-mono);letter-spacing:.02em}
.n-wordmark-cloud{font:800 19px/1 var(--font-display);color:var(--accent-text)}
.n-pill{display:inline-flex;align-items:center;height:22px;padding:0 var(--space-2);border-radius:var(--radius-pill);
  background:var(--accent-soft);color:var(--accent-text);border:1px solid var(--accent-soft-border);font:600 12px/1 var(--font-sans)}
.n-search{flex:1;max-width:520px;margin-left:auto;display:flex;align-items:center;gap:var(--space-2);
  height:var(--size-control-md);padding:0 var(--space-3);background:var(--surface-sunken);
  border:1px solid var(--border-control);border-radius:var(--radius-pill);color:var(--ink-subtle)}
.n-search:focus-within{outline:2px solid var(--focus-ring);outline-offset:2px}
.n-search input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font:400 14px/22px var(--font-sans);outline:none}
.n-search input::placeholder{color:var(--ink-subtle)}
.n-kbd{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border:1px solid var(--border-strong);
  border-radius:var(--radius-xs);background:var(--surface);color:var(--ink-subtle);font-size:12px}
.n-langs{display:flex;gap:var(--space-1)}
.n-lang{display:inline-grid;place-items:center;min-width:var(--size-control-sm);height:var(--size-control-sm);padding:0 var(--space-2);
  border-radius:var(--radius-pill);color:var(--ink-muted);font:600 12px/1 var(--font-sans)}
.n-lang:hover{background:var(--surface-sunken);text-decoration:none}
.n-lang.is-active{background:var(--accent-soft);color:var(--accent-text)}

/* ---------- Boutons ---------- */
.n-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:var(--size-control-md);
  padding:0 var(--space-5);border-radius:var(--radius-pill);border:1px solid transparent;cursor:pointer;
  font:600 14px/1 var(--font-sans);transition:background var(--duration-fast) var(--ease-standard)}
.n-btn:hover{text-decoration:none}
.n-btn-primary{background:var(--accent);color:var(--on-accent)}
.n-btn-primary:hover{background:var(--accent-hover)}
.n-btn-primary:active{background:var(--accent-press)}
.n-btn-ghost{background:transparent;color:var(--ink-muted)}
.n-btn-ghost:hover{background:var(--surface-sunken)}
.n-btn-icon{width:var(--size-control-md);padding:0}
.n-btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--border-control)}
.n-btn-secondary:hover{background:var(--surface-sunken)}
.n-btn-danger{background:var(--danger-bg);color:var(--danger-fg);border-color:var(--danger-fg)}
.n-btn-danger:hover{background:var(--danger-fg);color:var(--bg)}
.n-btn-sm{height:var(--size-control-sm);padding:0 var(--space-3);font-size:13px}
.n-btn-lg{height:var(--size-control-lg);padding:0 var(--space-6);font:800 16px/1 var(--font-display)}
.n-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}

/* ---------- Compte (barre du haut) ---------- */
.n-account{position:relative}
.n-account summary{list-style:none;cursor:pointer}
.n-account summary::-webkit-details-marker{display:none}
.n-avatar{display:grid;place-items:center;width:var(--size-control-md);height:var(--size-control-md);border-radius:var(--radius-pill);
  background:var(--accent-soft);color:var(--accent-text);border:1px solid var(--accent-soft-border);font:800 14px/1 var(--font-display)}
.n-menu{position:absolute;right:0;top:calc(100% + var(--space-2));z-index:10;min-width:220px;padding:var(--space-2);
  background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}
.n-menu form{margin:0}
.n-menu-name{margin:0;padding:var(--space-2) var(--space-3);font-weight:600;color:var(--ink);border-bottom:1px solid var(--border)}
.n-menu-item{display:block;width:100%;margin-top:var(--space-1);padding:var(--space-2) var(--space-3);border:0;border-radius:var(--radius-pill);
  background:none;color:var(--ink-muted);font:500 14px/22px var(--font-sans);text-align:left;cursor:pointer}
.n-menu-item:hover{background:var(--surface-sunken);color:var(--ink);text-decoration:none}

/* ---------- Formulaires ---------- */
.n-form{display:grid;gap:var(--space-4);max-width:420px}
.n-form-inline{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3);max-width:none;margin:var(--space-4) 0 var(--space-2)}
.n-field{display:grid;gap:var(--space-1)}
.n-field label{font-weight:600;color:var(--ink-muted)}
.n-grow{flex:1;min-width:200px}
.n-field input,.n-field select,.n-nav-roots select,.n-nav-roots input[type=number]{height:var(--size-control-md);padding:0 var(--space-3);border:1px solid var(--border-control);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink);font:400 14px/22px var(--font-sans)}
.n-field input.n-mono{font-family:var(--font-mono)}
.n-field input:focus-visible,.n-field select:focus-visible,.n-nav-roots select:focus-visible,.n-nav-roots input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.n-login{max-width:480px;margin:0 auto}
.n-login h1,.n-admin h1{margin:0 0 var(--space-6);font:800 40px/48px var(--font-display)}
.n-fallback{margin-top:var(--space-6);padding:var(--space-4) var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle)}
.n-fallback summary{cursor:pointer;font-weight:600;color:var(--ink-muted)}
.n-fallback[open] summary{margin-bottom:var(--space-4)}
.n-banner-danger{background:var(--danger-bg);color:var(--danger-fg)}
.n-banner-success{background:var(--success-bg);color:var(--success-fg)}
.n-shape-triangle{width:0;height:0;background:none;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid currentColor}

/* ---------- Administration ---------- */
.n-admin{max-width:960px}
.n-admin h2{margin:var(--space-12) 0 var(--space-2);font:800 26px/34px var(--font-display)}
.n-table-wrap{overflow-x:auto;margin-top:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md)}
.n-table{width:100%;border-collapse:collapse}
.n-table th,.n-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}
.n-table tbody tr:last-child td{border-bottom:0}
.n-table th{background:var(--bg-subtle);font-weight:600;color:var(--ink-muted);white-space:nowrap}
.n-right{text-align:right}
.n-perm,.n-source{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 var(--space-3);border-radius:var(--radius-pill);font:600 12px/1 var(--font-sans)}
.n-perm::before,.n-source::before{content:"";width:8px;height:8px;background:currentColor}
.n-perm-read{background:var(--neutral-bg);color:var(--neutral-fg)}
.n-perm-read::before{border-radius:50%}
.n-perm-edit{background:var(--info-bg);color:var(--info-fg)}
.n-perm-edit::before{border-radius:2px}
.n-perm-admin{background:var(--accent-soft);color:var(--accent-text)}
.n-perm-admin::before{transform:rotate(45deg);border-radius:1px}
.n-source{background:var(--neutral-bg);color:var(--neutral-fg)}
.n-source-special::before{border-radius:50%}
.n-source-oidc{background:var(--info-bg);color:var(--info-fg)}
.n-confirm{display:inline-block}
.n-confirm summary{list-style:none}
.n-confirm summary::-webkit-details-marker{display:none}
.n-confirm[open] summary{display:none}
.n-confirm form{display:inline}
.n-plain-list{list-style:none;margin:var(--space-3) 0;padding:0}
.n-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border)}
.n-row form{margin:0}

/* ---------- Mise en page ---------- */
.n-layout{flex:1;display:grid;grid-template-columns:var(--size-sidebar) minmax(0,1fr) 240px;gap:var(--space-8);
  width:100%;max-width:1440px;margin:0 auto;padding:var(--space-8) var(--space-6)}
.n-main{min-width:0}
.n-topbar-minimal [data-theme-toggle]{margin-left:auto}
.n-layout-minimal{display:flex;justify-content:center;padding-top:var(--space-16)}
.n-layout-minimal .n-main{width:100%;max-width:480px}
.n-main:focus{outline:none}

/* ---------- Arborescence ---------- */
.n-tree{position:sticky;top:88px;align-self:start;max-height:calc(100vh - 112px);overflow:auto;padding-right:var(--space-2)}
.n-tree ul{list-style:none;margin:0;padding:0}
.n-tree li a,.n-tree li .is-folder{display:block;padding:6px var(--space-3);border-radius:var(--radius-pill);
  color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.n-tree li a:hover{background:var(--surface-sunken);text-decoration:none;color:var(--ink)}
.n-tree li a.is-active{background:var(--accent-soft);color:var(--accent-text);font-weight:600}
.n-tree li .is-folder{color:var(--ink-subtle)}
.n-tree li.has-children>a::before,.n-tree li.has-children>.is-folder::before{content:"";display:inline-block;width:6px;height:6px;
  margin:0 8px 2px 0;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);
  transition:transform var(--duration-fast) var(--ease-standard)}
.n-tree li.is-open>a::before,.n-tree li.is-open>.is-folder::before{transform:rotate(45deg)}
.n-tree .d1{padding-left:var(--space-4)}.n-tree .d2{padding-left:var(--space-8)}.n-tree .d3{padding-left:var(--space-12)}
.n-tree .d4{padding-left:var(--space-16)}.n-tree .d5{padding-left:var(--space-20)}

/* ---------- Page ---------- */
.n-crumbs ol{display:flex;flex-wrap:wrap;gap:var(--space-1);list-style:none;margin:0 0 var(--space-3);padding:0;color:var(--ink-subtle)}
.n-crumbs li:not(:last-child)::after{content:"/";margin-left:var(--space-1);color:var(--border-strong)}
.n-page-head h1,.n-list-page h1,.n-404 h1{margin:0;font:800 40px/48px var(--font-display);letter-spacing:-.01em;overflow-wrap:anywhere}
.n-page-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-3) 0 var(--space-6);color:var(--ink-subtle)}
.n-banner{display:flex;align-items:center;gap:var(--space-3);margin:0 0 var(--space-6);padding:var(--space-3) var(--space-4);
  border-radius:var(--radius-md);font-weight:500}
.n-banner-info{background:var(--info-bg);color:var(--info-fg)}
.n-banner-warning{background:var(--warning-bg);color:var(--warning-fg)}
.n-banner a{color:inherit;text-decoration:underline}
.n-shape{flex:none;width:10px;height:10px;background:currentColor}
.n-shape-round{border-radius:50%}
.n-shape-diamond{transform:rotate(45deg);border-radius:2px}

/* ---------- Contenu (lecture : 16/26) ---------- */
.n-prose{font-size:16px;line-height:26px;max-width:76ch;overflow-wrap:break-word}
.n-prose>:first-child{margin-top:0}
.n-prose p,.n-prose ul,.n-prose ol,.n-prose blockquote,.n-prose table,.n-prose pre,.n-prose .callout,.n-prose .math-block{margin:0 0 var(--space-5)}
.n-prose h2,.n-prose h3,.n-prose h4,.n-prose h5,.n-prose h6{font-family:var(--font-display);font-weight:800;scroll-margin-top:88px}
.n-prose h2{font-size:28px;line-height:36px;margin:var(--space-12) 0 var(--space-4)}
.n-prose h3{font-size:21px;line-height:28px;margin:var(--space-8) 0 var(--space-3)}
.n-prose h4,.n-prose h5,.n-prose h6{font-size:17px;line-height:24px;margin:var(--space-6) 0 var(--space-2)}
.n-prose ul,.n-prose ol{padding-left:var(--space-6)}
.n-prose li+li{margin-top:var(--space-1)}
.n-prose li>input[type=checkbox]{margin:0 var(--space-2) 0 calc(-1 * var(--space-5));accent-color:var(--accent-text)}
.n-prose .contains-task-list{list-style:none}
.n-prose hr{border:0;border-top:1px solid var(--border);margin:var(--space-10) 0}
.n-prose blockquote{padding:var(--space-1) var(--space-5);border-left:3px solid var(--border-strong);color:var(--ink-muted)}
.n-prose img{max-width:100%;height:auto;border-radius:var(--radius-md)}
.n-prose :not(pre)>code{padding:2px 6px;border-radius:var(--radius-xs);background:var(--surface-sunken);font-size:.875em}
.n-prose kbd{padding:1px 6px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:var(--radius-xs);font-size:.85em}
.n-prose a.wl-missing{color:var(--danger-fg);text-decoration:underline dotted;text-underline-offset:3px}
.n-prose .footnotes{margin-top:var(--space-12);padding-top:var(--space-4);border-top:1px solid var(--border);font-size:14px;line-height:22px;color:var(--ink-muted)}

/* code */
.n-prose pre{position:relative;padding:var(--space-4) var(--space-5);overflow-x:auto;border-radius:var(--radius-md);
  background:var(--surface-sunken);border:1px solid var(--border);font-size:13.5px;line-height:22px;tab-size:4}
.n-prose pre[data-lang]::before{content:attr(data-lang);position:absolute;top:var(--space-2);right:var(--space-3);
  font:600 11px/1 var(--font-sans);color:var(--ink-subtle);text-transform:uppercase;letter-spacing:.06em}
.n-prose pre code{font-size:inherit}
.hl-comment{color:var(--ink-subtle);font-style:italic}
.hl-keyword,.hl-storage{color:var(--accent-text)}
.hl-string{color:var(--success-fg)}
.hl-constant,.hl-numeric{color:var(--info-fg)}
.hl-entity,.hl-support,.hl-variable.hl-function{color:var(--warning-fg)}
.hl-variable.hl-parameter,.hl-punctuation.hl-definition{color:var(--ink)}
.hl-invalid{color:var(--danger-fg)}

/* encadrés */
.n-prose .callout{padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);border:1px solid}
.n-prose .callout[data-callout=info]{background:var(--info-bg);border-color:var(--info-bg);color:var(--ink)}
.n-prose .callout[data-callout=attention]{background:var(--warning-bg);border-color:var(--warning-bg);color:var(--ink)}
.n-prose .callout-title{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);font-weight:600}
.n-prose .callout[data-callout=info] .callout-title{color:var(--info-fg)}
.n-prose .callout[data-callout=attention] .callout-title{color:var(--warning-fg)}
/* statut jamais par la couleur seule : une forme précède le titre */
.n-prose .callout-title::before{content:"";flex:none;width:10px;height:10px;background:currentColor}
.n-prose .callout[data-callout=info] .callout-title::before{border-radius:50%}
.n-prose .callout[data-callout=attention] .callout-title::before{width:0;height:0;background:none;
  border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid currentColor}
.n-prose .callout-content>:last-child{margin-bottom:0}

/* tableaux : défilement horizontal */
.n-prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:14px;line-height:22px}
.n-prose th,.n-prose td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
.n-prose th{background:var(--bg-subtle);font-weight:600;white-space:nowrap}
.n-prose th[align=center],.n-prose td[align=center]{text-align:center}
.n-prose th[align=right],.n-prose td[align=right]{text-align:right}

/* maths et diagrammes */
.n-prose math{font-size:1.05em}
.n-prose math[display=block]{display:block math;overflow-x:auto;overflow-y:hidden;padding:var(--space-2) 0;margin:0 0 var(--space-5)}
.n-prose .math-block{overflow-x:auto}
.n-prose .math-error{color:var(--danger-fg)}
.n-prose pre.mermaid{background:var(--surface);text-align:center}

/* ---------- Colonne de droite ---------- */
.n-aside{position:sticky;top:88px;align-self:start;max-height:calc(100vh - 112px);overflow:auto}
.n-aside-block+.n-aside-block{margin-top:var(--space-8)}
.n-aside-title{margin:0 0 var(--space-3);font:600 12px/16px var(--font-sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-subtle)}
.n-toc,.n-links,.n-tags{list-style:none;margin:0;padding:0}
.n-toc a,.n-links a{display:block;padding:4px 0;color:var(--ink-muted)}
.n-toc a:hover,.n-links a:hover{color:var(--accent-text)}
.n-toc .l3 a{padding-left:var(--space-4);font-size:13px}
.n-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.n-tag{display:inline-flex;align-items:center;height:26px;padding:0 var(--space-3);border-radius:var(--radius-pill);
  background:var(--neutral-bg);color:var(--neutral-fg);font:500 13px/1 var(--font-sans)}

/* ---------- Listes, recherche ---------- */
.n-list-page h1{margin-bottom:var(--space-2)}
.n-results{list-style:none;margin:var(--space-6) 0 0;padding:0}
.n-results li{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--border)}
.n-results a{display:flex;flex-direction:column;gap:2px;min-width:0}
.n-results a:hover{text-decoration:none}
.n-results a:hover .n-result-title{text-decoration:underline}
.n-result-path{font-size:12px;color:var(--ink-subtle)}
.n-result-title{font:600 17px/24px var(--font-sans);color:var(--ink)}
.n-result-meta{flex:none;color:var(--ink-subtle);font-size:13px}

/* ---------- Mascotte (emplacement, jamais dessinée) ---------- */
.n-mascot{display:grid;place-items:center;aspect-ratio:3/4;width:100%;border-radius:var(--radius-lg);
  background:var(--neutral-bg);color:var(--neutral-fg);border:1px dashed var(--border-strong)}
.n-mascot span{font:600 12px/1 var(--font-sans);text-transform:uppercase;letter-spacing:.1em}
.n-empty{display:grid;justify-items:center;gap:var(--space-4);margin-top:var(--space-10);text-align:center;color:var(--ink-muted)}
.n-empty .n-mascot{width:140px}

/* ---------- 404 ---------- */
.n-404{display:grid;grid-template-columns:minmax(160px,240px) 1fr;align-items:center;gap:var(--space-12);
  padding:var(--space-12) var(--space-8);border-radius:var(--radius-lg);background:var(--accent-wash)}
.n-stage-mascot{padding:var(--space-4);border-radius:var(--radius-lg);background:var(--accent);transform:rotate(-2deg)}
.n-stage-mascot .n-mascot{border-style:solid;border-color:var(--petal)}
.n-404-code{margin:0 0 var(--space-2);font-size:14px;color:var(--accent-text);font-weight:600}
.n-404-text p{font-size:16px;line-height:26px;color:var(--ink-muted)}

/* ---------- Pied de page ---------- */
.n-footer{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-6);border-top:1px solid var(--border);
  color:var(--ink-muted);font-size:13px}

/* ---------- Responsive : 1200 / 960 / 640 ---------- */
@media (max-width:1200px){
  .n-layout{grid-template-columns:var(--size-sidebar) minmax(0,1fr)}
  .n-aside{grid-column:2;position:static;max-height:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-6)}
  .n-aside-block+.n-aside-block{margin-top:0}
}
@media (max-width:960px){
  .n-layout{display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-6) var(--space-4)}
  .n-main{order:1}.n-aside{order:2}
  .n-tree{order:3;align-self:stretch;position:static;max-height:none;padding-top:var(--space-6);border-top:1px solid var(--border)}
  .n-aside{align-self:stretch}
  .n-topbar{padding:0 var(--space-4);gap:var(--space-3)}
}
@media (max-width:640px){
  .n-topbar{height:auto;flex-wrap:wrap;padding:var(--space-3) var(--space-4)}
  .n-search{order:3;flex-basis:100%;max-width:none;margin:0}
  .n-langs{margin-left:auto}
  .n-kbd{display:none}
  .n-page-head h1,.n-list-page h1,.n-404 h1{font-size:30px;line-height:38px}
  .n-404{grid-template-columns:1fr;justify-items:center;text-align:center;padding:var(--space-8) var(--space-4)}
  .n-404 .n-stage-mascot{width:160px}
  .n-footer{flex-direction:column}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
}
@media print{
  .n-topbar,.n-tree,.n-aside,.n-footer,.n-skip{display:none}
  .n-layout{display:block;padding:0}
}

/* ---------- Actions de page ---------- */
.n-page-title{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}
.n-page-title form{margin:0}
.n-page-actions{display:flex;gap:var(--space-2);flex:none}
.n-new-page{margin-left:var(--space-1)}
.n-hint{margin:var(--space-1) 0 0;font-size:13px;color:var(--ink-subtle)}
.n-eyebrow{margin:0 0 var(--space-1);font-size:13px;color:var(--ink-subtle)}
.n-inline-form{margin:0 0 var(--space-4)}
.n-nowrap{white-space:nowrap}
.n-banner-warning a,.n-banner-info a,.n-banner-danger a,.n-banner-success a{color:inherit;text-decoration:underline}

/* ---------- Éditeur ---------- */
.n-layout:has(.n-editor){grid-template-columns:var(--size-sidebar) minmax(0,1fr)}
.n-layout:has(.n-editor) .n-aside{display:none}
.n-editor-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}
.n-editor-head h1{margin:0;font:800 30px/38px var(--font-display)}
.n-editor-status{display:flex;align-items:center;gap:var(--space-3);margin:0;color:var(--ink-subtle);font-size:13px}
.n-edit-panes{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-4)}
.n-pane{display:flex;flex-direction:column;min-width:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}
.n-pane>:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}
.n-pane>:last-child{border-radius:0 0 var(--radius-md) var(--radius-md)}
.n-source-wrap{overflow:hidden}
.n-pane-title{margin:0;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border);background:var(--bg-subtle);
  font:600 12px/24px var(--font-sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-subtle)}
.n-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);padding:var(--space-2);border-bottom:1px solid var(--border);background:var(--bg-subtle)}
.n-tool{display:inline-flex;align-items:center;height:var(--size-control-sm);padding:0 var(--space-3);border:1px solid transparent;border-radius:var(--radius-pill);
  background:transparent;color:var(--ink-muted);font:600 13px/1 var(--font-sans);cursor:pointer;list-style:none}
.n-tool::-webkit-details-marker{display:none}
.n-tool:hover{background:var(--surface-sunken);color:var(--ink)}
.n-source-wrap{position:relative;flex:1;min-height:60vh}
.n-source-wrap textarea{display:block;width:100%;height:100%;min-height:60vh;padding:var(--space-3) var(--space-4);border:0;resize:vertical;
  background:var(--surface);color:var(--ink);font:400 14px/22px var(--font-mono)}
.n-source-wrap.has-cm .cm-editor{position:absolute;inset:0}
.n-preview{flex:1;padding:var(--space-4) var(--space-5);max-height:70vh;overflow:auto;max-width:none}
.n-edit-foot{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-4);margin-top:var(--space-4)}
.n-check{display:inline-flex;align-items:center;gap:var(--space-2);height:var(--size-control-md);color:var(--ink-muted)}
.n-check input{width:16px;height:16px;accent-color:var(--accent-text)}
.n-edit-foot .n-actions{margin-left:auto}

/* GIF */
.n-gif-picker{position:relative}
.n-gif-panel{position:absolute;left:0;top:calc(100% + var(--space-2));z-index:20;width:min(460px,80vw);padding:var(--space-3);
  background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}
.n-gif-panel input{width:100%;height:var(--size-control-md);padding:0 var(--space-3);border:1px solid var(--border-control);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink);font:400 14px/22px var(--font-sans)}
.n-gif-results{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);max-height:320px;overflow:auto;margin-top:var(--space-3)}
.n-gif-results p{grid-column:1/-1;margin:0}
.n-gif{padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-sunken);cursor:pointer;overflow:hidden;aspect-ratio:4/3}
.n-gif img{display:block;width:100%;height:100%;object-fit:cover}
.n-gif:hover,.n-gif:focus-visible{border-color:var(--accent-text)}
.n-gif-credit{margin:var(--space-2) 0 0;font:600 11px/16px var(--font-sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-subtle);text-align:right}

/* ---------- Historique et diff ---------- */
.n-delta{font-weight:600}
.n-delta-add{color:var(--success-fg)}
.n-delta-del{color:var(--danger-fg)}
.n-delta-same{color:var(--ink-subtle)}
.n-history td{white-space:nowrap}
.n-history td:nth-child(5){white-space:normal}
.n-row-actions{margin:var(--space-4) 0}
.n-pager{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-4)}
.n-page-pill{display:inline-grid;place-items:center;min-width:var(--size-control-sm);height:var(--size-control-sm);padding:0 var(--space-3);
  border-radius:var(--radius-pill);color:var(--ink-muted);font-weight:600}
.n-page-pill:hover{background:var(--surface-sunken);text-decoration:none}
.n-page-pill.is-active{background:var(--accent-soft);color:var(--accent-text)}
.n-diff-meta p{margin:var(--space-1) 0}
.n-diff-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin:var(--space-6) 0 var(--space-3)}
.n-diff-bar p{margin:0}
.n-tabs{display:flex;gap:var(--space-1);padding:var(--space-1);border-radius:var(--radius-pill);background:var(--surface-sunken)}
.n-tab{padding:6px var(--space-4);border-radius:var(--radius-pill);color:var(--ink-muted);font-weight:600}
.n-tab:hover{text-decoration:none;color:var(--ink)}
.n-tab.is-active{background:var(--surface);color:var(--accent-text);box-shadow:var(--shadow-xs)}
.n-diff{margin-bottom:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);overflow-x:auto}
.n-diff-hunk{margin:0;padding:var(--space-1) var(--space-3);background:var(--info-bg);color:var(--info-fg);font-size:12px}
.n-diff-table{width:100%;border-collapse:collapse;font:400 13px/20px var(--font-mono)}
.n-diff-table td{padding:0 var(--space-2);vertical-align:top}
.n-ln{width:1%;min-width:40px;text-align:right;color:var(--ink-subtle);background:var(--bg-subtle);user-select:none}
.n-sign{width:1%;text-align:center;user-select:none;font-weight:600}
.n-code{white-space:pre-wrap;overflow-wrap:anywhere}
.n-diff-side{table-layout:fixed}
.n-diff-side .n-ln{width:48px;min-width:0}
.n-diff-side .n-sign{width:24px}
.n-add{background:var(--success-bg)}
.n-sign.n-add{color:var(--success-fg)}
.n-del{background:var(--danger-bg)}
.n-sign.n-del{color:var(--danger-fg)}
.n-blank{background:var(--surface-sunken)}
.n-code mark{border-radius:3px;padding:0 1px;color:inherit}
.n-code.n-add mark{background:var(--success-fg);color:var(--success-bg)}
.n-code.n-del mark{background:var(--danger-fg);color:var(--danger-bg)}

@media (max-width:960px){
  .n-edit-panes{grid-template-columns:1fr}
  .n-preview{max-height:none}
}

/* ---------- Conflit ---------- */
.n-layout:has(.n-conflict){grid-template-columns:var(--size-sidebar) minmax(0,1fr)}
.n-layout:has(.n-conflict) .n-aside{display:none}
.n-conflict h1{margin:0 0 var(--space-4);font:800 30px/38px var(--font-display)}
.n-conflict pre{margin:0;padding:var(--space-3) var(--space-4);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:20px}
.n-stable-block{margin:var(--space-2) 0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle)}
.n-stable-block summary{padding:var(--space-2) var(--space-4);cursor:pointer;color:var(--ink-subtle);font-size:13px}
.n-conflict-block{margin:var(--space-4) 0;padding:var(--space-4);border:1px solid var(--warning-fg);border-radius:var(--radius-md);background:var(--surface)}
.n-conflict-block legend{padding:0 var(--space-2);font-weight:600;color:var(--warning-fg)}
.n-conflict-sides{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}
.n-side{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
.n-side .n-pane-title{display:flex;align-items:center;gap:var(--space-2)}
.n-side-ours pre{background:var(--info-bg)}
.n-side-theirs pre{background:var(--accent-wash)}
.n-shape-square{border-radius:1px}
/* `.n-shape` est déclarée après `.n-shape-triangle` : on rétablit le triangle partout */
.n-shape.n-shape-triangle{width:0;height:0;background:none;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid currentColor}
.n-choices{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-3) 0}
.n-choice{display:inline-flex;align-items:center;gap:var(--space-2);height:var(--size-control-sm);padding:0 var(--space-4);
  border:1px solid var(--border-control);border-radius:var(--radius-pill);cursor:pointer;font-weight:500}
.n-choice:has(input:checked){background:var(--accent-soft);border-color:var(--accent-soft-border);color:var(--accent-text)}
.n-choice input{accent-color:var(--accent-text)}
.n-manual{display:none;width:100%;padding:var(--space-3);border:1px solid var(--border-control);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink);font-size:13px;line-height:20px}
.n-conflict-block:has(input[value=manual]:checked) .n-manual{display:block}
@media (max-width:960px){.n-conflict-sides{grid-template-columns:1fr}}

/* ---------- Recherche (jalon 5) ---------- */
.n-search-page h1{margin:0 0 var(--space-4);font:800 40px/48px var(--font-display);letter-spacing:-.01em}
.n-search-big{display:flex;gap:var(--space-3)}
.n-search-big input{flex:1;min-width:0;height:var(--size-control-lg);padding:0 var(--space-4);border:1px solid var(--border-control);
  border-radius:var(--radius-pill);background:var(--surface);color:var(--ink);font:400 16px/1 var(--font-sans)}
.n-search-big input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.n-search-big .n-btn{height:var(--size-control-lg)}
.n-search-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:var(--space-8);margin-top:var(--space-6)}
.n-filters{display:grid;align-content:start;gap:var(--space-5)}
.n-filters fieldset{margin:0;padding:0;border:0;display:grid;gap:2px}
.n-filters legend{margin-bottom:var(--space-2);font:600 12px/1 var(--font-sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-subtle)}
.n-facet{display:flex;align-items:center;gap:var(--space-2);min-height:32px;padding:0 var(--space-3);border-radius:var(--radius-pill);
  color:var(--ink-muted);font-size:14px;cursor:pointer}
.n-facet:hover{background:var(--surface-sunken)}
.n-facet:has(input:checked){background:var(--accent-soft);color:var(--accent-text)}
.n-facet input{margin:0;width:16px;height:16px;accent-color:var(--accent-text)}
.n-facet input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.n-facet span:first-of-type{flex:1;min-width:0;overflow-wrap:anywhere}
.n-count{flex:none;font:500 12px/1 var(--font-mono);color:var(--ink-subtle)}
.n-facet-code{border:1px solid var(--border)}
.n-search-count{margin:0 0 var(--space-4);color:var(--ink-subtle);font-size:14px}
.n-suggest{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4)}
.n-suggest-label{font:600 12px/1 var(--font-sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-subtle);margin-right:var(--space-1)}
.n-suggest-pill{display:inline-flex;align-items:center;height:var(--size-control-sm);padding:0 var(--space-3);border-radius:var(--radius-pill);
  border:1px solid var(--border-strong);color:var(--ink);font-size:14px}
.n-suggest-pill:hover{background:var(--surface-sunken);text-decoration:none}
.n-create-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6);
  padding:var(--space-4) var(--space-5);border:1px dashed var(--accent-soft-border);border-radius:var(--radius-md);background:var(--accent-wash)}
.n-create-card p{margin:0;color:var(--ink-muted)}
.n-hits{list-style:none;margin:0;padding:0}
.n-hit{display:grid;gap:var(--space-2);padding:var(--space-4) 0;border-bottom:1px solid var(--border)}
.n-hit-link{display:flex;flex-direction:column;gap:2px;min-width:0}
.n-hit-link:hover{text-decoration:none}
.n-hit-link:hover .n-result-title{text-decoration:underline}
.n-snippet{margin:0;color:var(--ink-muted);font-size:14px;line-height:22px;overflow-wrap:anywhere}
.n-snippet mark{background:var(--accent-soft);color:var(--accent-text);border-radius:4px;font-weight:600}
.n-hit-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.n-hit-meta .n-result-meta{margin-left:auto}
.n-pill-neutral{gap:6px;background:var(--neutral-bg);color:var(--neutral-fg);border-color:var(--border)}
.n-pill-neutral .n-shape{width:7px;height:7px}
@media (max-width:960px){
  .n-search-grid{grid-template-columns:1fr}
  .n-search-results{order:-1}
}
.n-search-big input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}

/* ---------- Navigation (jalon 6) ---------- */
.n-form-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-2)}
.n-move h1{font-size:30px;line-height:38px}
.n-move .n-result-path{margin:0 0 var(--space-1)}
a.n-tag-link{color:var(--neutral-fg)}
a.n-tag-link:hover{background:var(--accent-soft);color:var(--accent-text);text-decoration:none}
.n-aside-more{margin:var(--space-3) 0 0;font-size:13px}

/* ---------- Fichiers (jalon 7) ---------- */
.n-files-page{max-width:760px}
.n-files-page h1{margin:0 0 var(--space-6);font:800 30px/38px var(--font-display)}
.n-file-rows{list-style:none;margin:0 0 var(--space-8);padding:0}
.n-file-rows .n-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-2) var(--space-4);
  padding:var(--space-3) 0;border-bottom:1px solid var(--border)}
.n-file-md{grid-column:1/-1;font:400 12px/1.4 var(--font-mono);color:var(--ink-subtle);overflow-wrap:anywhere}
.n-confirm{position:relative}
.n-confirm summary{list-style:none;cursor:pointer}
.n-confirm summary::-webkit-details-marker{display:none}
.n-confirm[open] form{position:absolute;right:0;top:calc(100% + var(--space-1));z-index:5;padding:var(--space-2);
  background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}
.n-upload{padding:var(--space-5);border:1px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--bg-subtle)}
.n-upload input[type=file]{font:inherit;color:var(--ink-muted)}
.n-file-pick{display:block;margin-bottom:var(--space-2);font-weight:600;color:var(--ink-muted)}
.n-file-results{margin-top:var(--space-3)}
.n-file-list{list-style:none;margin:var(--space-2) 0 0;padding:0;display:grid;gap:var(--space-1)}
.n-file-insert{display:flex;width:100%;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);
  border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);cursor:pointer;text-align:left}
.n-file-insert:hover{background:var(--accent-soft);border-color:var(--accent-soft-border)}
.n-file-insert:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.n-file-error{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);color:var(--danger-fg);font-size:13px}
.n-small{font-size:13px}

/* ---------- Intégrations (jalon 8) ---------- */
.n-form-row{display:flex;flex-wrap:wrap;gap:var(--space-4)}
.n-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-1)}
.n-status{display:inline-flex;align-items:center;gap:6px;color:var(--ink-muted)}
.n-status .n-shape{width:8px;height:8px}
.n-status-ok{color:var(--success-fg)}
.n-status-danger{color:var(--danger-fg)}
.n-status-warn{color:var(--warning-fg)}
/* paires libellé : valeur (administration) */
.n-meta-list{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2,8px) var(--space-4,16px);margin:0}
.n-meta-list dt{color:var(--ink-muted)}
.n-meta-list dd{margin:0}
.n-token-once{display:grid;gap:var(--space-2);margin:0 0 var(--space-4);padding:var(--space-4);border-radius:var(--radius-md);
  background:var(--warning-bg);color:var(--warning-fg)}
.n-token-once p{display:flex;align-items:center;gap:var(--space-2);margin:0;font-weight:600}
.n-token-once input{height:var(--size-control-md);padding:0 var(--space-3);border:1px solid var(--border-control);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink);font-size:13px}

/* ---------- Extensions (jalon 9) ---------- */
/* références externes : source + état (mot et forme) + détails */
.n-xref{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;padding:1px var(--space-2) 1px var(--space-1);
  border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-subtle);font-size:.92em;line-height:1.5;vertical-align:baseline}
.n-xref-name{padding:0 var(--space-1);font-family:var(--font-mono);font-weight:600}
.n-xref-src{color:var(--ink-subtle);font:600 11px/1 var(--font-sans);letter-spacing:.02em;text-transform:uppercase}
.n-xref-state{display:inline-flex;align-items:center;gap:4px;font:600 12px/1 var(--font-sans)}
.n-xref-state .n-shape{width:7px;height:7px}
.n-xref-state .n-shape.n-shape-triangle{border-left-width:4px;border-right-width:4px;border-bottom-width:7px}
.n-xref-meta{color:var(--ink-muted);font-size:12px}
.n-xref-ok .n-xref-state{color:var(--success-fg)}
.n-xref-info .n-xref-state{color:var(--info-fg)}
.n-xref-warn{border-color:var(--warning-fg)}
.n-xref-warn .n-xref-state{color:var(--warning-fg)}
.n-xref-down{border-color:var(--danger-fg);background:var(--danger-bg)}
.n-xref-down .n-xref-state{color:var(--danger-fg)}
.n-xref-unknown .n-xref-state{color:var(--neutral-fg)}
.n-xref-plain{font-family:var(--font-mono)}
.n-xref-graph{display:block;margin:var(--space-4) 0}
.n-xref-graph img{display:block;max-width:100%;height:auto;margin-bottom:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
.n-shape-square{border-radius:1px}
/* `.n-shape` est déclarée après `.n-shape-triangle` : on rétablit le triangle partout */
.n-shape.n-shape-triangle{width:0;height:0;background:none;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid currentColor}

/* glossaire */
.n-prose a.n-term{color:inherit;text-decoration:underline dotted var(--accent-text);text-underline-offset:3px;cursor:help}
.n-prose a.n-term:hover{color:var(--accent-text)}

/* niveau de lecture */
.n-level{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 var(--space-2);border-radius:var(--radius-pill);font:600 12px/1 var(--font-sans)}
.n-level .n-shape{width:7px;height:7px}
.n-level .n-shape.n-shape-triangle{border-left-width:4px;border-right-width:4px;border-bottom-width:7px}
.n-level-debutant{background:var(--success-bg);color:var(--success-fg)}
.n-level-confirme{background:var(--info-bg);color:var(--info-fg)}
.n-level-astreinte{background:var(--warning-bg);color:var(--warning-fg)}

/* partage */
.n-share-row{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);min-width:0}
.n-share-link{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.n-share-qr{display:block;width:120px;height:120px;margin:var(--space-2) 0;padding:var(--space-1);border:1px solid var(--border);
  border-radius:var(--radius-sm);background:var(--surface)}
.n-check-warning{color:var(--warning-fg);font-weight:600}

/* palette de commandes */
.n-palette{width:min(640px,calc(100vw - 32px));max-height:min(70vh,560px);margin:12vh auto auto;padding:0;border:1px solid var(--border);
  border-radius:var(--radius-md);background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow-lg);overflow:hidden}
.n-palette[open]{display:flex;flex-direction:column}
.n-palette::backdrop{background:var(--scrim)}
.n-palette-input{height:var(--size-control-lg);padding:0 var(--space-5);border:0;border-bottom:1px solid var(--border);
  background:transparent;color:var(--ink);font:400 16px/1 var(--font-sans);outline:none}
.n-palette-input::placeholder{color:var(--ink-subtle)}
.n-palette-list{flex:1;margin:0;padding:var(--space-2);list-style:none;overflow-y:auto}
.n-palette-group{padding:var(--space-2) var(--space-3) var(--space-1);color:var(--ink-subtle);font:600 11px/1 var(--font-sans);
  letter-spacing:.04em;text-transform:uppercase}
.n-palette-item{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);
  border-radius:var(--radius-sm);cursor:pointer}
.n-palette-item.is-active{background:var(--accent-soft);color:var(--accent-text)}
.n-palette-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.n-palette-path{flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-subtle);font-size:12px}
.n-palette-hint{margin:0;padding:var(--space-2) var(--space-5);border-top:1px solid var(--border);color:var(--ink-subtle);font-size:12px}

/* vue imprimable */
.n-print{max-width:820px;margin:0 auto;padding:var(--space-6)}
.n-print-bar{display:flex;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-6)}
.n-print-head{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--space-1) var(--space-4);
  padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}
.n-print-brand{margin:0;font-weight:700}
.n-print-qr{grid-row:span 2;width:96px;height:96px}
.n-print-url{margin:0;color:var(--ink-subtle);font-size:12px;overflow-wrap:anywhere}
.n-print-page{padding:var(--space-8) 0;border-bottom:1px solid var(--border)}
.n-print-page h1{margin:0 0 var(--space-2);font:800 30px/38px var(--font-display)}
.n-print-page .n-page-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.n-print-foot{padding-top:var(--space-4);color:var(--ink-subtle);font-size:12px}

@media print{
  .n-topbar,.n-tree,.n-aside,.n-footer,.n-page-actions,.n-skip,.n-print-bar,.n-palette,[data-theme-toggle]{display:none !important}
  .n-layout{display:block}
  .n-main{max-width:none;padding:0}
  .n-print{max-width:none;padding:0}
  .n-print-page{break-before:page;border-bottom:0}
  .n-print-page:first-of-type{break-before:auto}
  .n-prose pre,.n-prose table,.n-prose figure,.n-xref-graph{break-inside:avoid}
  .n-prose h2,.n-prose h3{break-after:avoid}
  .n-prose a[href^="http"]:not(.n-xref-name)::after{content:" (" attr(href) ")";color:var(--ink-subtle);font-size:.85em;overflow-wrap:anywhere}
  .n-prose a.n-term{text-decoration:none}
}

/* ---------- Espaces, icônes des dossiers, sections de l'administration ---------- */
.n-spaces{border-bottom:1px solid var(--border);background:var(--bg)}
.n-spaces ul{display:flex;gap:var(--space-1);max-width:1440px;margin:0 auto;padding:var(--space-2) var(--space-6);list-style:none;overflow-x:auto}
.n-spaces a{display:inline-flex;align-items:center;gap:var(--space-2);height:var(--size-control-sm);padding:0 var(--space-4);
  border-radius:var(--radius-pill);color:var(--ink-muted);font-weight:500;white-space:nowrap}
.n-spaces a:hover{background:var(--surface-sunken);color:var(--ink);text-decoration:none}
.n-spaces a.is-active{background:var(--accent-soft);color:var(--accent-text);font-weight:600}
.n-spaces .n-icon{width:18px;height:18px}
.n-tree li a{display:flex;align-items:center}
.n-tree li.has-children>a::before{flex:none}
.n-tree-icon{width:18px;height:18px;margin-right:var(--space-2)}
.n-admin-nav li a{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);white-space:normal}
.n-admin-nav li+li{margin-top:2px}
.n-admin-nav li a>span{display:flex;flex-direction:column;min-width:0}
.n-admin-nav-label{font-weight:600;color:var(--ink)}
.n-admin-nav a.is-active .n-admin-nav-label{color:var(--accent-text)}
.n-admin-nav-hint{font-size:12px;line-height:16px;color:var(--ink-subtle)}
.n-eyebrow{margin:0 0 var(--space-1);color:var(--ink-subtle);font:500 12px/18px var(--font-mono);letter-spacing:.04em;text-transform:uppercase}
.n-admin h1{margin-bottom:var(--space-2)}
.n-admin-intro{margin:0 0 var(--space-8);color:var(--ink-muted);font-size:16px;line-height:26px}
.n-admin-block{padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}
.n-admin-block+.n-admin-block{margin-top:var(--space-6)}
.n-admin .n-admin-block h2{margin:0 0 var(--space-2);font:700 22px/30px var(--font-display)}
.n-nav-root{display:flex;align-items:center;gap:var(--space-3)}
.n-icon-empty{display:inline-block;border:1px dashed var(--border-strong);border-radius:var(--radius-xs)}
.n-input-narrow{width:88px}
.n-icon-gallery{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-6)}
.n-icon-sample{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);
  background:var(--surface-sunken);color:var(--ink-muted);font-size:12px}
.n-icon-sample .n-icon{width:16px;height:16px}
@media (max-width:960px){
  .n-admin-nav{order:0;border-top:0;padding-top:0}
  .n-admin-nav ul{display:flex;gap:var(--space-1);overflow-x:auto}
  .n-admin-nav li+li{margin-top:0}
  .n-admin-nav-hint{display:none}
  .n-spaces ul{padding:var(--space-2) var(--space-4)}
}
.n-form-wide{max-width:none}
.n-form-wide>.n-btn{justify-self:start}
.n-nav-roots td{vertical-align:middle}
.n-nav-roots td:first-child{min-width:200px}
.n-nav-roots select{min-width:180px}
.n-nav-roots .n-check{white-space:nowrap}

/* ---------- Utilisateurs ---------- */
.n-chip{display:inline-flex;align-items:center;gap:var(--space-1);height:26px;padding:0 var(--space-3);border-radius:var(--radius-pill);
  background:var(--surface-sunken);color:var(--ink);font:500 13px/1 var(--font-mono);white-space:nowrap}
.n-member-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}
.n-chip-action{padding-right:2px;margin:0}
.n-chip-action button{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:0;
  border-radius:var(--radius-pill);background:transparent;color:var(--ink-subtle);cursor:pointer}
.n-chip-action button:hover{background:var(--danger-bg);color:var(--danger-fg)}
.n-chip-action button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.n-chip-action .n-icon{width:14px;height:14px}
.n-inline-add{display:flex;gap:var(--space-2);align-items:center}
.n-inline-add select{height:var(--size-control-sm);padding:0 var(--space-2);border:1px solid var(--border-control);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink);font:400 13px/1 var(--font-sans)}
.n-users td{vertical-align:middle}
.n-users tr.is-disabled td{color:var(--ink-subtle)}
.n-choices-row{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6);border:0;padding:0;margin:0}
.n-hint-list{margin:var(--space-2) 0 var(--space-4);padding-left:var(--space-5);color:var(--ink-muted)}
.n-hint-list li+li{margin-top:var(--space-1)}

/* ---------- Mouvement : discret, aux durées du design system ---------- */
/* boutons : couleur qui glisse, léger enfoncement au clic */
.n-btn{transition:background-color var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),
  color var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}
.n-btn:active:not(:disabled){transform:translateY(1px) scale(.98)}
.n-btn-primary:hover{box-shadow:var(--shadow-xs)}
/* navigation : pilules qui s'allument en douceur */
.n-tree li a,.n-spaces a,.n-admin-nav li a,.n-tabs a,.n-menu-item,.n-langs a{
  transition:background-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}
.n-tree li a:active,.n-spaces a:active,.n-admin-nav li a:active{transform:scale(.985)}
.n-spaces a .n-icon,.n-admin-nav li a .n-icon,.n-tree-icon{transition:transform var(--duration-base) var(--ease-standard)}
.n-spaces a:hover .n-icon,.n-admin-nav li a:hover .n-icon{transform:translateY(-1px)}
.n-spaces a.is-active,.n-admin-nav a.is-active,.n-tree a.is-active{animation:n-pill-in var(--duration-base) var(--ease-out)}
@keyframes n-pill-in{from{background-color:transparent}}
/* liens du texte : soulignement qui apparaît */
.n-prose a:not(.n-xref-name):not(.n-term){text-decoration-color:transparent;transition:text-decoration-color var(--duration-fast) var(--ease-standard)}
.n-prose a:not(.n-xref-name):not(.n-term):hover{text-decoration-color:currentColor}
/* contenu : arrive en fondu, une fois par page */
.n-main{animation:n-fade var(--duration-base) var(--ease-out)}
@keyframes n-fade{from{opacity:0;transform:translateY(4px)}}
/* bandeaux et retours : glissent depuis le haut */
.n-banner{animation:n-rise var(--duration-base) var(--ease-out)}
@keyframes n-rise{from{opacity:0;transform:translateY(-4px)}}
/* palette : fondu + léger zoom ; fond qui s'assombrit */
.n-palette[open]{animation:n-pop var(--duration-base) var(--ease-out)}
.n-palette[open]::backdrop{animation:n-scrim var(--duration-base) var(--ease-out)}
@keyframes n-pop{from{opacity:0;transform:translateY(-6px) scale(.98)}}
@keyframes n-scrim{from{opacity:0}}
.n-palette-item{transition:background-color var(--duration-fast) var(--ease-standard)}
/* menus déroulants et confirmations */
.n-account[open] .n-menu,.n-confirm[open]>form{animation:n-rise var(--duration-fast) var(--ease-out)}
/* contenus remplacés par HTMX (recherche, aperçu) */
.htmx-added{animation:n-fade var(--duration-fast) var(--ease-out)}
/* pastilles d'infrastructure et cartes cliquables : légère montée au survol */
.n-xref,.n-chip,.n-icon-sample{transition:border-color var(--duration-fast) var(--ease-standard),background-color var(--duration-fast) var(--ease-standard)}
.n-result{transition:background-color var(--duration-fast) var(--ease-standard)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
}
.n-chip-person{font-family:var(--font-sans)}

/* ---------- Arborescence : la flèche déplie, le titre ouvre la page ---------- */
.n-tree.has-js li{display:flex;align-items:center;gap:2px}
.n-tree.has-js li>a,.n-tree.has-js li>.is-folder{flex:1;min-width:0}
.n-tree.has-js li.has-children>a::before,.n-tree.has-js li.has-children>.is-folder::before{content:none}
.n-tree.has-js .n-tree-toggle{display:inline-flex;flex:none;align-items:center;justify-content:center;width:24px;height:24px;padding:0;
  border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-subtle);cursor:pointer;
  transition:background-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}
.n-tree.has-js .n-tree-toggle:hover{background:var(--surface-sunken);color:var(--ink)}
.n-tree.has-js .n-tree-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.n-tree-toggle .n-icon{width:14px;height:14px;transition:transform var(--duration-base) var(--ease-standard)}
.n-tree-toggle[aria-expanded="true"] .n-icon{transform:rotate(90deg)}
.n-tree-toggle[aria-busy="true"]{opacity:.5}
.n-tree-spacer{display:none}
.n-tree.has-js .n-tree-spacer{display:inline-block;flex:none;width:24px}
.n-tree-label{overflow:hidden;text-overflow:ellipsis}
.n-tree li.is-new{animation:n-rise var(--duration-fast) var(--ease-out)}
@media (prefers-reduced-motion:reduce){.n-tree-toggle .n-icon,.n-tree li.is-new{transition:none!important;animation:none!important}}
