/* labs.css — espace « Packs&Labs » (octobre 2026) : hub, sommaire d'un pack, chapitres à blocs.
   Même langage visuel que portail-v3.css : cartes blanches très contrastées sur fond ardoise, couleur du pack dans --k. Encadrés : bleu, vert, ambre, rouge. */

.lb-staff { display:flex; gap:12px; align-items:flex-start; padding:11px 18px; border-radius:14px; background:#FFFBEB; border:2px dashed #D97706; color:#78350F; font:600 14px/1.5 Inter, sans-serif }
.lb-staff i { font-size:22px; color:#B45309; flex-shrink:0 }
.lb-staff.in { margin:0 32px 6px }
.lb-staff a { color:#78350F; font-weight:800; margin-left:6px }
.lb-vide-page { display:flex; align-items:center; gap:10px; margin:6px 0; padding:18px 22px; border-radius:16px; background:#FFFFFF; border:2px dashed #94A3B8; color:#334155; font:700 15px Inter, sans-serif }
.lb-vide-page i { font-size:24px; color:#64748B }

/* fil d'Ariane : les titres de chapitre sont longs, il passe à la ligne sur téléphone */
.v3-crumb { flex-wrap:wrap; row-gap:2px }
.v3-crumb b { min-width:0; overflow-wrap:anywhere }

/* ===== Hub ===== */
.lb-packs { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(380px, 100%), 1fr)); gap:18px }
.lb-pack { --k:#0F766E; display:flex; flex-direction:column; border-radius:18px; background:#FFFFFF; border:2px solid #1E293B; overflow:hidden; box-shadow:0 14px 28px -22px rgba(15,23,42,.8) }
.lb-pack-top { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:16px 18px; background:linear-gradient(120deg, color-mix(in srgb, var(--k) 70%, #000000), var(--k)); color:#FFFFFF }
.lb-pack-top .ic { display:grid; place-items:center; width:48px; height:48px; border-radius:14px; background:rgba(255,255,255,.2); border:2px solid rgba(255,255,255,.5); font-size:26px }
.lb-pack-top .lv { padding:3px 12px; border-radius:99px; background:#FFFFFF; color:#0F172A; font:800 12px Inter, sans-serif }
.lb-pack-bd { display:flex; flex-direction:column; gap:12px; padding:16px 18px 18px; flex:1 }
.lb-pack-bd h2 { margin:0; font:900 21px/1.2 Inter, sans-serif }
.lb-pack-bd h2 a { color:#0F172A; text-decoration:none }
.lb-pack-bd h2 a:hover { color:var(--k); text-decoration:underline }
.lb-pack-bd p { margin:0; font:500 14.5px/1.55 Inter, sans-serif; color:#334155; text-align:justify; hyphens:auto }
.lb-pack-bd .v3-btn { align-self:flex-start; margin-top:auto }
.lb-meta { display:flex; flex-wrap:wrap; gap:6px 14px; margin:0; padding:0; list-style:none; font:700 13px Inter, sans-serif; color:#334155 }
.lb-meta li { display:inline-flex; align-items:center; gap:5px }
.lb-meta i { color:var(--k); font-size:16px }

/* ===== Sommaire d'un pack ===== */
.lb-seances { --k:#0F766E; display:grid; gap:18px }
.lb-seance { border-radius:18px; background:#FFFFFF; border:2px solid #1E293B; overflow:hidden; box-shadow:0 14px 28px -22px rgba(15,23,42,.8) }
.lb-seance > header { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 16px; padding:13px 20px; background:var(--k); color:#FFFFFF }
.lb-seance > header h2 { margin:0; font:900 19px Inter, sans-serif }
.lb-seance > header span { font:700 14px Inter, sans-serif; background:rgba(0,0,0,.25); border-radius:99px; padding:2px 12px }
.lb-row { display:grid; grid-template-columns:42px minmax(0, 1fr) auto; gap:6px 14px; align-items:start; padding:13px 20px; border-top:2px solid #E2E8F0 }
.lb-seance > header + .lb-row { border-top:0 }
.lb-row .n { display:grid; place-items:center; width:36px; height:36px; border-radius:50%; background:color-mix(in srgb, var(--k) 14%, #FFFFFF); border:2px solid var(--k); color:#0F172A; font:900 15px Inter, sans-serif }
.lb-row .tx { display:flex; flex-direction:column; gap:2px; min-width:0 }
.lb-row .tx a, .lb-row .tx b { font:800 16px/1.3 Inter, sans-serif; color:#0F172A; text-decoration:none }
.lb-row .tx a:hover { color:var(--k); text-decoration:underline }
.lb-row .tx small { font:500 13.5px/1.5 Inter, sans-serif; color:#475569 }
.lb-row .mt { display:flex; gap:8px; align-items:center; flex-wrap:wrap; justify-content:flex-end; font:700 12.5px Inter, sans-serif; color:#334155 }
.lb-row .mt > span { padding:2px 10px; border-radius:8px; background:#F1F5F9; border:1.5px solid #94A3B8; white-space:nowrap }
.lb-row .mt .st.ok { background:#DCFCE7; border-color:#15803D; color:#14532D }
.lb-row .mt .st.att { background:#F1F5F9; border-color:#94A3B8; color:#475569 }
.lb-row .mt .st.bro { background:#FEF3C7; border-color:#B45309; color:#78350F }
.lb-row.off .tx a, .lb-row.off .tx b { color:#475569 }
.lb-cp { display:flex; gap:10px; align-items:center; padding:11px 20px; background:#F1F5F9; border-top:2px solid #CBD5E1; font:600 14px/1.5 Inter, sans-serif; color:#0F172A }
.lb-cp i { color:#15803D; font-size:22px; flex-shrink:0 }

/* ===== Chapitre ===== */
.lb-chapitre { --k:#0F766E; display:flex; flex-direction:column; gap:20px; padding:0 0 26px; border-radius:20px; background:#FFFFFF; border:2px solid #CBD5E1; overflow:hidden; box-shadow:0 2px 4px rgba(10,18,40,.12), 0 12px 28px -12px rgba(10,18,40,.45) }
.lb-hero { padding:24px 32px 22px; background:linear-gradient(120deg, color-mix(in srgb, var(--k) 70%, #000000), var(--k)); color:#FFFFFF }
.lb-hero .kick { display:inline-block; padding:2px 12px; border-radius:99px; background:rgba(0,0,0,.28); font:800 12.5px Inter, sans-serif; letter-spacing:.05em; text-transform:uppercase }
.lb-hero h1 { margin:8px 0 0; font:900 clamp(26px, 4vw, 34px)/1.15 Inter, sans-serif; letter-spacing:-.4px }
.lb-hero p { margin:8px 0 0; max-width:780px; font:500 15px/1.55 Inter, sans-serif; opacity:.96 }
.lb-body { display:flex; flex-direction:column; gap:18px; padding:4px 32px; color:#0F172A; font:400 16.5px/1.7 Inter, sans-serif }
.lb-body > * { max-width:860px; margin:0; min-width:0 }
.lb-body > .lb-schema { max-width:none }
.lb-h2 { padding-bottom:6px; border-bottom:3px solid var(--k); font:900 25px/1.25 Inter, sans-serif; margin-top:10px !important }
.lb-h3 { font:800 20px/1.3 Inter, sans-serif; color:#0F172A; margin-top:6px !important }
.lb-texte p { margin:0 0 .8em; text-align:justify; hyphens:auto }
.lb-texte p:last-child { margin-bottom:0 }
.lb-texte ul, .lb-texte ol { margin:0 0 .8em; padding-left:1.5em; display:grid; gap:.35em }
.lb-texte li { text-align:justify; hyphens:auto }
.lb-texte code, .lb-cmd-l code { padding:1px 6px; border-radius:6px; background:#F1F5F9; border:1.5px solid #CBD5E1; font:600 .88em "JetBrains Mono", ui-monospace, Consolas, monospace; color:#0F172A; overflow-wrap:anywhere }
.lb-texte kbd { padding:1px 8px; border-radius:6px; background:#FFFFFF; border:2px solid #94A3B8; border-bottom-width:4px; font:700 .85em Inter, sans-serif; color:#0F172A; white-space:nowrap }
.lb-texte a { color:#1D4ED8; font-weight:600 }

/* encadrés : bleu (info), vert (à retenir), ambre (attention), rouge (danger) */
.lb-enc { --c:#1D4ED8; --f:#DBEAFE; --t:#1E3A8A; padding:12px 18px 14px; border-radius:0 12px 12px 0; background:var(--f); border:2px solid var(--c); border-left-width:9px }
.lb-enc.ok { --c:#15803D; --f:#DCFCE7; --t:#14532D }
.lb-enc.warn { --c:#B45309; --f:#FEF3C7; --t:#78350F }
.lb-enc.danger { --c:#B91C1C; --f:#FEE2E2; --t:#7F1D1D }
.lb-enc-t { display:flex; align-items:center; gap:9px; margin-bottom:4px; font:900 16px Inter, sans-serif; color:var(--t) }
.lb-enc-t i { font-size:24px; color:var(--c) }
.lb-enc .lb-texte { font-size:15.5px; line-height:1.6 }

/* commandes */
.lb-cmd { border-radius:12px; background:#0F172A; border:2px solid #1E293B; overflow:hidden }
.lb-cmd-h { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:7px 12px; background:#1E293B; color:#CBD5E1; font:700 13px Inter, sans-serif }
.lb-cmd-h > span { display:inline-flex; align-items:center; gap:7px }
.lb-copy { display:inline-flex; align-items:center; gap:6px; padding:4px 12px; border-radius:8px; background:#334155; border:1.5px solid #64748B; color:#FFFFFF; font:700 12.5px Inter, sans-serif; cursor:pointer }
.lb-copy:hover { background:#475569 }
.lb-cmd pre { margin:0; padding:14px 16px; overflow-x:auto; color:#E2E8F0; font:500 14px/1.6 "JetBrains Mono", ui-monospace, Consolas, monospace; text-align:left }
.lb-cmd-l { margin:0; padding:9px 16px 11px; background:#F1F5F9; border-top:2px solid #1E293B; font:500 14px/1.5 Inter, sans-serif; color:#334155 }

/* captures */
.lb-fig { display:flex; flex-direction:column; gap:8px }
.lb-fig img { display:block; max-width:100%; height:auto; border-radius:10px; border:2px solid #CBD5E1; box-shadow:5px 5px 0 #E2E8F0 }
.lb-fig.t-petite img { max-width:40% } .lb-fig.t-moyenne img { max-width:60% } .lb-fig.t-grande img { max-width:80% }
.lb-fig img[data-zoom] { cursor:zoom-in }
.lb-zoom { position:fixed; inset:0; z-index:9999; display:grid; place-items:center; padding:24px; background:rgba(15,23,42,.88); cursor:zoom-out }
.lb-zoom img { max-width:100%; max-height:100%; border-radius:10px; border:3px solid #FFFFFF; box-shadow:0 10px 40px rgba(0,0,0,.5); background:#FFFFFF }
.lb-zoom button { position:absolute; top:14px; right:14px; display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:10px; border:2px solid #0F172A; background:#FFFFFF; color:#0F172A; font:800 14px Inter, sans-serif; cursor:pointer }
.lb-fig figcaption { font:600 14px/1.5 Inter, sans-serif; color:#475569 }
.lb-secours { padding:16px; border:2px dashed #94A3B8; border-radius:12px; background:#F8FAFC }
.lb-vide { display:flex; align-items:center; justify-content:center; gap:10px; min-height:140px; border:2px dashed #94A3B8; border-radius:12px; background:#F8FAFC; color:#475569; font:700 15px Inter, sans-serif }
.lb-vide i { font-size:26px }
.lb-etat { align-self:flex-start; display:inline-flex; align-items:center; gap:7px; padding:3px 12px; border-radius:99px; background:#FEF3C7; border:1.5px solid #B45309; color:#78350F; font:800 12.5px Inter, sans-serif }

/* point de contrôle */
.lb-ctl { padding:14px 18px 16px; border-radius:14px; background:#F0FDFA; border:2px solid #0F766E }
.lb-ctl-t { display:flex; align-items:center; gap:9px; margin-bottom:8px; font:900 16px Inter, sans-serif; color:#134E4A }
.lb-ctl-t i { font-size:24px; color:#0F766E }
.lb-ctl ul { margin:0; padding:0; list-style:none; display:grid; gap:8px }
.lb-ctl label { display:flex; gap:11px; align-items:flex-start; cursor:pointer; font:500 15.5px/1.55 Inter, sans-serif }
.lb-ctl input { width:22px; height:22px; margin-top:2px; accent-color:#0F766E; flex-shrink:0 }

/* chapitre précédent / suivant */
.lb-pn { display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; padding:0 32px }
.lb-pn a { display:flex; align-items:center; gap:12px; max-width:48%; padding:12px 18px; border-radius:14px; background:#F1F5F9; border:2px solid #94A3B8; color:#0F172A; text-decoration:none; font:800 15px/1.3 Inter, sans-serif }
.lb-pn a:hover { border-color:var(--k); background:color-mix(in srgb, var(--k) 8%, #FFFFFF) }
.lb-pn a small { display:block; font:700 12px Inter, sans-serif; color:#475569; text-transform:uppercase; letter-spacing:.04em }
.lb-pn a i { font-size:24px; color:var(--k) }
.lb-pn a.next { margin-left:auto; text-align:right }
.lb-staff a:focus-visible, .lb-pn a:focus-visible, .lb-copy:focus-visible, .lbmr button:focus-visible, .lb-row a:focus-visible, .lb-pack a:focus-visible, .lb-ctl input:focus-visible { outline:3px solid #22D3EE; outline-offset:2px }

/* ===== Schéma animé : modes réseau de VirtualBox ===== */
.lbmr { display:flex; flex-direction:column; gap:16px; padding:18px; border-radius:16px; background:#FFFFFF; border:2px solid #1E293B; font:400 15px/1.55 Inter, sans-serif; color:#0F172A }
.lbmr-modes { display:flex; flex-wrap:wrap; gap:8px }
.lbmr-modes button { display:inline-flex; align-items:center; gap:8px; min-height:42px; padding:8px 14px; border-radius:11px; border:2px solid #94A3B8; background:#F1F5F9; color:#0F172A; font:800 14px Inter, sans-serif; cursor:pointer }
.lbmr-modes button:hover { border-color:#0F766E }
.lbmr-modes button[aria-pressed="true"] { background:#0F766E; border-color:#134E4A; color:#FFFFFF }
.lbmr-modes .here { padding:0 8px; border-radius:99px; background:#FBBF24; color:#111827; font:900 10.5px Inter, sans-serif; letter-spacing:.04em; text-transform:uppercase }
.lbmr-grid { display:grid; grid-template-columns:minmax(0, 1.5fr) minmax(0, 1fr); gap:16px; align-items:start }
.lbmr-svgw { overflow-x:auto; border-radius:12px }
.lbmr-sch { display:block; width:100%; height:auto; background:#F1F5F9; border:2px solid #94A3B8; border-radius:12px }
.lbmr-sch text { font-family:Inter, sans-serif; fill:#0F172A }
.lbmr-sch .s-host { fill:none; stroke:#0F172A; stroke-width:2.5 }
.lbmr-sch .s-box { fill:#FFFFFF; stroke:#94A3B8; stroke-width:2.5 }
.lbmr-sch .s-vm { fill:#FFFFFF; stroke:#0F766E; stroke-width:3 }
.lbmr-sch .s-net { fill:#CCFBF1; stroke:#0F766E; stroke-width:3 }
.lbmr-sch .s-ln { fill:none; stroke:#0F766E; stroke-width:5; stroke-linecap:round; stroke-linejoin:round }
.lbmr-sch .s-fl { fill:none; stroke:#FFFFFF; stroke-width:3; stroke-dasharray:7 14; stroke-linecap:round; stroke-linejoin:round; animation:lbmr-dash 1.1s linear infinite }
.lbmr-sch .s-grey { fill:none; stroke:#94A3B8; stroke-width:3.5; stroke-linecap:round; stroke-linejoin:round }
.lbmr-sch .s-bl { fill:none; stroke:#B91C1C; stroke-width:3.5; stroke-dasharray:4 6; stroke-linecap:round }
.lbmr-sch .s-x { fill:#B91C1C; font-weight:800; font-size:24px; text-anchor:middle }
.lbmr-sch .s-mu { fill:#475569; font-size:12px }
.lbmr-sch g[data-g] { display:none }
.lbmr[data-mode="nat"] g[data-g~="nat"], .lbmr[data-mode="natnet"] g[data-g~="natnet"], .lbmr[data-mode="bridge"] g[data-g~="bridge"],
.lbmr[data-mode="internal"] g[data-g~="internal"], .lbmr[data-mode="host"] g[data-g~="host"] { display:block }
@keyframes lbmr-dash { to { stroke-dashoffset:-42 } }
.lbmr-leg { display:flex; flex-wrap:wrap; gap:6px 18px; margin-top:8px; font:600 13px Inter, sans-serif; color:#475569 }
.lbmr-leg span { display:inline-flex; align-items:center; gap:8px }
.lbmr-leg i { display:inline-block; width:30px; border-top:5px solid #0F766E; border-radius:3px }
.lbmr-leg i.b { border-top:4px dashed #B91C1C }
.lbmr-info { padding:16px 18px; border-radius:14px; background:#F1F5F9; border:2px solid #94A3B8; min-width:0 }
.lbmr-info h3 { margin:0 0 10px; font:900 19px Inter, sans-serif }
.lbmr-info dl { margin:0; display:grid; gap:10px }
.lbmr-info dt { font:800 11.5px Inter, sans-serif; letter-spacing:.06em; text-transform:uppercase; color:#0F766E }
.lbmr-info dd { margin:0; font:500 14.5px/1.5 Inter, sans-serif }
.lbmr-h { margin:6px 0 0; font:800 17px Inter, sans-serif }
.lbmr-tw { overflow-x:auto; border:2px solid #94A3B8; border-radius:12px }
.lbmr table { width:100%; min-width:560px; border-collapse:collapse; font:500 14px/1.4 Inter, sans-serif }
.lbmr th, .lbmr td { padding:9px 12px; text-align:left; border-bottom:1.5px solid #CBD5E1 }
.lbmr thead th { background:#F1F5F9; font:800 12.5px Inter, sans-serif }
.lbmr tbody tr:last-child th, .lbmr tbody tr:last-child td { border-bottom:0 }
.lbmr tbody tr.sel { background:#CCFBF1 }
.lbmr tbody tr.sel th { box-shadow:inset 6px 0 0 #0F766E }
.lbmr .y { color:#15803D; font-weight:800 }
.lbmr .n { color:#B91C1C; font-weight:800 }
.lbmr .f { color:#B45309; font-weight:800 }
.lbmr-sym { display:flex; flex-wrap:wrap; gap:6px 18px; margin:-6px 0 0; font:600 13px Inter, sans-serif }
.lbmr-term { border-radius:12px; border:2px solid #1E293B; background:#0F172A; color:#E2E8F0; overflow:hidden }
.lbmr-term .bar { padding:7px 14px; background:#1E293B; color:#94A3B8; font:600 12.5px "JetBrains Mono", ui-monospace, Consolas, monospace }
.lbmr-term .out { min-height:120px; padding:12px 14px; font:500 13.5px/1.6 "JetBrains Mono", ui-monospace, Consolas, monospace; white-space:pre-wrap; overflow-wrap:anywhere; text-align:left }
.lbmr-term .ok { color:#4ADE80; font-weight:700 }
.lbmr-term .ko { color:#FCA5A5; font-weight:700 }
.lbmr-term .dim { color:#94A3B8 }
.lbmr-tests { display:flex; flex-wrap:wrap; gap:8px }
.lbmr-tests button { min-height:42px; padding:8px 14px; border-radius:11px; border:2px solid #94A3B8; background:#FFFFFF; color:#0F172A; font:800 14px Inter, sans-serif; cursor:pointer }
.lbmr-tests button:hover { border-color:#0F766E; background:#F0FDFA }

/* ===== Schéma de secours : fenêtre « Configuration › Réseau » ===== */
.lbw { max-width:640px; margin:0 auto; border-radius:8px; border:2px solid #64748B; background:#FFFFFF; color:#1E293B; overflow:hidden; box-shadow:6px 6px 0 #CBD5E1; font:500 14px/1.4 Inter, sans-serif }
.lbw-bar { padding:6px 12px; background:#1E293B; color:#FFFFFF; font:600 13px Inter, sans-serif }
.lbw-body { display:grid; grid-template-columns:150px minmax(0, 1fr); min-height:220px }
.lbw-side { padding:8px 0; background:#EEF2F1; border-right:1.5px solid #B6C4C1 }
.lbw-side div { padding:6px 14px; color:#334155 }
.lbw-side .on { padding-left:10px; border-left:4px solid #0F766E; background:#CCFBF1; color:#134E4A; font-weight:800 }
.lbw-main { position:relative; display:grid; gap:10px; align-content:start; padding:14px }
.lbw-tabs { display:flex; gap:4px; font-size:13px }
.lbw-tabs span { padding:3px 10px; border:1.5px solid #94A3B8; border-bottom:0; border-radius:5px 5px 0 0; background:#F8FAFC }
.lbw-tabs .on { background:#FFFFFF; font-weight:800 }
.lbw-f { display:grid; grid-template-columns:150px minmax(0, 1fr); gap:8px; align-items:center }
.lbw-f .sel { padding:4px 8px; border:1.5px solid #64748B; border-radius:4px; background:#FFFFFF; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.lbw .pin { position:absolute; display:grid; place-items:center; width:26px; height:26px; border-radius:50%; background:#B45309; color:#FFFFFF; font:800 13px Inter, sans-serif; border:2px solid #FFFFFF; box-shadow:0 0 0 2px #B45309 }

/* ===== Mobile ===== */
@media (max-width:820px) {
  .lbmr-grid { grid-template-columns:minmax(0, 1fr) }
  .lb-row { grid-template-columns:38px minmax(0, 1fr) }
  .lb-row .mt { grid-column:2; justify-content:flex-start }
  .lbw-body { grid-template-columns:96px minmax(0, 1fr) }
  .lbw-f { grid-template-columns:minmax(0, 1fr) }
  .lbw .pin { display:none }
}
@media (max-width:640px) {
  .lb-hero { padding:20px 18px }
  .lb-body { padding:4px 16px; font-size:16px }
  .lb-pn { padding:0 16px }
  .lb-pn a { max-width:100% }
  .lb-staff.in { margin:0 16px 6px }
  .lbmr { padding:12px }
  .lbmr-sch { min-width:500px }
}
@media (prefers-reduced-motion:reduce) { .lbmr-sch .s-fl { animation:none } }
@media print {
  .lb-staff, .lb-pn, .lb-copy, .lbmr-tests { display:none !important }
  .lb-chapitre { border:0; box-shadow:none }
  .lb-hero { background:#FFFFFF !important; color:#0F172A !important; border-bottom:3px solid #0F766E }
}

/* ---- mise en forme du texte : souligné, couleurs de police, surlignages, alignements (noms fixes écrits par l'éditeur) ---- */
.lb-texte u, .lb-cap u, .lb-cmd-l u, .lb-ctl u { text-decoration:underline; text-decoration-thickness:2px; text-underline-offset:3px }
.lb-c-rouge { color:#B91C1C } .lb-c-orange { color:#C2410C } .lb-c-vert { color:#15803D } .lb-c-bleu { color:#1D4ED8 } .lb-c-violet { color:#7E22CE } .lb-c-gris { color:#475569 }
[class^="lb-c-fond-"] { color:#0F172A; padding:0 .22em; border-radius:4px; -webkit-box-decoration-break:clone; box-decoration-break:clone }
.lb-c-fond-jaune { background:#FEF08A } .lb-c-fond-vert { background:#BBF7D0 } .lb-c-fond-bleu { background:#BFDBFE } .lb-c-fond-rose { background:#FBCFE8 } .lb-c-fond-orange { background:#FED7AA }
.lb-texte .lb-al-gauche { text-align:left; hyphens:manual }
.lb-texte .lb-al-centre { text-align:center; hyphens:manual }
.lb-texte .lb-al-droite { text-align:right; hyphens:manual }
.lb-texte .lb-al-justifie { text-align:justify; hyphens:auto }
.lb-texte ul.lb-al-centre, .lb-texte ol.lb-al-centre, .lb-texte ul.lb-al-droite, .lb-texte ol.lb-al-droite { list-style-position:inside; padding-left:0 }
.lb-texte .lb-al-gauche li, .lb-texte .lb-al-centre li, .lb-texte .lb-al-droite li { text-align:inherit; hyphens:manual }
@media print { [class^="lb-c-fond-"] { -webkit-print-color-adjust:exact; print-color-adjust:exact } }

/* ===== Schémas du pack : « le lab terminé » et « hôte / invités » (SVG .lbs) ===== */
.lbs { margin:0 }
.lbs-svgw { overflow-x:auto; border-radius:14px }
.lbs-sch { display:block; width:100%; height:auto; background:#F1F5F9; border:2px solid #94A3B8; border-radius:14px }
.lbs-sch text { font-family:Inter, sans-serif; fill:#0F172A; font-size:12px }
.lbs-sch .s-mu { fill:#475569; font-size:12px; font-weight:500 }
.lbs-sch .s-host { fill:#F8FAFC; stroke:#0F172A; stroke-width:2.5 }
.lbs-sch .s-box { fill:#FFFFFF; stroke:#94A3B8; stroke-width:2.5 }
.lbs-sch .s-term { fill:#0F172A; stroke:#1E293B }
.lbs-sch .s-bar { fill:#334155 }
.lbs-sch .s-wh { fill:#FFFFFF }
.lbs-sch .s-mono { fill:#E2E8F0; font-family:"JetBrains Mono", ui-monospace, Consolas, monospace; font-size:10.5px; font-weight:500 }
.lbs-sch .s-mono.s-mu { fill:#94A3B8 }
.lbs-sch .s-vbox { fill:#CCFBF1; stroke:#0F766E; stroke-width:3 }
.lbs-sch .s-vm { fill:#FFFFFF; stroke:#0F766E; stroke-width:3 }
.lbs-sch .s-later { stroke:#94A3B8; stroke-dasharray:8 6; fill:#F8FAFC }
.lbs-sch .s-desk { fill:#BFDBFE; stroke:#1D4ED8; stroke-width:2 }
.lbs-sch .s-win { fill:#FFFFFF; stroke:#64748B; stroke-width:2 }
.lbs-sch .s-task { fill:#475569 }
.lbs-sch .s-lay { stroke-width:3 }
.lbs-sch .s-lay.hw { fill:#E2E8F0; stroke:#475569 }
.lbs-sch .s-lay.os { fill:#DBEAFE; stroke:#1D4ED8 }
.lbs-sch .s-lay.vb { fill:#CCFBF1; stroke:#0F766E }
.lbs-sch .s-ln { fill:none; stroke:#0F766E; stroke-width:5; stroke-linecap:round; stroke-linejoin:round }
.lbs-sch .s-fl { fill:none; stroke:#FFFFFF; stroke-width:3; stroke-dasharray:7 14; stroke-linecap:round; animation:lbs-dash 1.1s linear infinite }
.lbs-sch .s-tag { fill:#134E4A; font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase }
.lbs-sch .s-br { fill:none; stroke:#0F172A; stroke-width:3; stroke-linecap:round; stroke-linejoin:round }
.lbs-sch .s-pn { fill:#FFFFFF; font-size:14px; font-weight:900 }
.lbs-sch .s-pn.s-sm { font-size:11px }
.lbs-sch circle.p1 { fill:#6D28D9 }
.lbs-sch circle.p2 { fill:#1D4ED8 }
.lbs-sch circle.p3 { fill:#0F766E }
.lbs-sch circle.p4 { fill:#B91C1C }
.lbs-sch circle.p5 { fill:#15803D }
@keyframes lbs-dash { to { stroke-dashoffset:-42 } }
@media (max-width:700px) { .lbs-sch { min-width:520px } }

/* ===== Schéma interactif « mémoire du PC » (.lbpc) ===== */
.lbpc { display:flex; flex-direction:column; gap:14px; padding:18px; border-radius:16px; background:#FFFFFF; border:2px solid #1E293B; font:400 15px/1.55 Inter, sans-serif; color:#0F172A }
.lbpc-ctl { display:flex; flex-wrap:wrap; gap:14px 28px }
.lbpc-g { display:flex; flex-wrap:wrap; align-items:center; gap:8px }
.lbpc-l { flex-basis:100%; font:800 12px Inter, sans-serif; letter-spacing:.06em; text-transform:uppercase; color:#0F766E }
.lbpc-g button { min-width:52px; min-height:42px; padding:8px 14px; border-radius:11px; border:2px solid #94A3B8; background:#FFFFFF; color:#0F172A; font:800 15px Inter, sans-serif; cursor:pointer }
.lbpc-g button:hover { border-color:#0F766E }
.lbpc-g button[aria-pressed="true"] { background:#0F766E; border-color:#134E4A; color:#FFFFFF }
.lbpc-g button:focus-visible { outline:3px solid #F59E0B; outline-offset:2px }
.lbpc-bar { display:flex; height:46px; border-radius:12px; overflow:hidden; border:2.5px solid #0F172A; background:#E2E8F0 }
.lbpc-bar.over { border-color:#B91C1C }
.lbpc-bar span { display:block; height:100%; transition:width .45s ease }
.lbpc-bar .w, .lbpc-leg i.w { background:#1D4ED8 }
.lbpc-bar .v, .lbpc-leg i.v { background:#0F766E }
.lbpc-bar .f, .lbpc-leg i.f { background:#E2E8F0; background-image:repeating-linear-gradient(45deg, rgba(15,23,42,.12) 0 6px, transparent 6px 12px) }
.lbpc-leg { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px 22px; font:600 14px Inter, sans-serif }
.lbpc-leg li { display:inline-flex; align-items:center; gap:8px }
.lbpc-leg i { display:inline-block; width:18px; height:18px; border-radius:5px; border:2px solid #0F172A }
.lbpc-verdict { margin:0; padding:12px 16px; border-radius:12px; border:2px solid; font-weight:700 }
.lbpc[data-etat="ok"] .lbpc-verdict { background:#DCFCE7; border-color:#15803D; color:#14532D }
.lbpc[data-etat="juste"] .lbpc-verdict { background:#FEF3C7; border-color:#B45309; color:#78350F }
.lbpc[data-etat="ko"] .lbpc-verdict { background:#FEE2E2; border-color:#B91C1C; color:#7F1D1D }
.lbpc-note { margin:0; font-size:13px; color:#475569 }
@media (prefers-reduced-motion:reduce) { .lbs-sch .s-fl, .lbmr-sch .s-fl { animation:none } .lbpc-bar span { transition:none } }

/* Schémas du chapitre 6 (disque) et 7 (installation) */
.lbs-sch .s-track { fill:#FFFFFF; stroke:#94A3B8; stroke-width:2.5; stroke-dasharray:7 5 }
.lbs-sch .s-grow { fill:#0F766E; transform-box:fill-box; transform-origin:left center; transform:scaleX(.35); animation:lbs-grow 6s ease-in-out infinite }
.lbs-sch .s-fix { fill:#B45309 }
.lbs-sch .s-net { fill:#DBEAFE; stroke:#1D4ED8; stroke-width:3 }
.lbs-sch .s-note { fill:#FFFFFF; stroke:#94A3B8; stroke-width:2 }
.lbs-sch .s-leg { fill:#0F172A }
.lbs-sch .s-leg text { font-weight:600 }
@keyframes lbs-grow { 0% { transform:scaleX(.1) } 75% { transform:scaleX(.62) } 100% { transform:scaleX(.1) } }
@media (prefers-reduced-motion:reduce) { .lbs-sch .s-grow { animation:none } }

/* Schéma du chapitre 12 : clés SSH */
.lbs-sch .s-key { stroke-width:2.5 }
.lbs-sch .s-key.priv { fill:#FEF3C7; stroke:#B45309 }
.lbs-sch .s-key.pub { fill:#DBEAFE; stroke:#1D4ED8 }
.lbs-sch .s-ok { fill:#DCFCE7; stroke:#15803D; stroke-width:2.5 }

/* Pack ouvert, publication progressive */
.lb-info { display:flex; gap:12px; align-items:flex-start; margin:0 0 14px; padding:12px 18px; border-radius:14px; background:#EFF6FF; border:2px solid #1D4ED8; color:#1E3A8A; font:600 14.5px/1.5 Inter, sans-serif }
.lb-info i { font-size:22px; color:#1D4ED8; flex-shrink:0 }
.lb-bientot { display:flex; gap:8px; align-items:center; margin:8px 0 10px; font:600 13.5px/1.4 Inter, sans-serif; color:#475569 }
.lb-bientot i { color:#0F766E; font-size:18px }
@media print { .lb-info { display:none !important } }

/* Numéro du pack dans la série (1, 2, 3…) */
.lb-pack-top { gap:14px }
.lb-pack-top .num { display:flex; flex-direction:column; align-items:center; justify-content:center; min-width:64px; padding:4px 10px 2px; border-radius:14px; background:#FFFFFF; color:#0F172A; line-height:1 }
.lb-pack-top .num small { font:800 10.5px Inter, sans-serif; letter-spacing:.14em; text-transform:uppercase; color:var(--k) }
.lb-pack-top .num b { font:900 44px/1 Inter, sans-serif; color:var(--k); filter:brightness(.78) }
.lb-pack-top .lv { margin-left:auto }
.lb-numpill { display:inline-block; margin:0 0 6px; padding:2px 12px; border-radius:99px; background:#FFFFFF; color:#0F172A; font:800 12.5px Inter, sans-serif; letter-spacing:.06em; text-transform:uppercase }

/* Schémas du pack 2 : zones RED / GREEN d'IPFire */
.lbs-sch .s-rz { fill:#FEE2E2; stroke:#B91C1C; stroke-width:2.5 }
.lbs-sch .s-gz { fill:#DCFCE7; stroke:#15803D; stroke-width:2.5 }
.lbs-sch .s-ln.red { stroke:#B91C1C }
.lbs-sch .s-ln.green { stroke:#15803D }
.lbs-sch .s-tag.red { fill:#991B1B }
.lbs-sch .s-tag.green { fill:#166534 }
.lbs-sch .s-pill-t { fill:#0F172A; font-size:12px; font-weight:800 }
.lbs-sch .s-grey { fill:none; stroke:#94A3B8; stroke-width:3.5; stroke-linecap:round; stroke-linejoin:round }

/* annonce « packs Proxmox » */
.lb-soon{position:relative;display:flex;align-items:center;gap:16px;margin:22px 0 6px;padding:22px 20px 16px;border-radius:18px;background:#1E293B;border:2px solid #F59E0B;color:#fff;box-shadow:0 14px 28px -20px rgba(15,23,42,.9)}
.lb-soon .stk{position:absolute;top:-13px;left:18px;transform:rotate(-2deg);padding:4px 13px;border-radius:8px;background:#F59E0B;color:#1C1917;font:900 11.5px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 4px 10px -4px rgba(0,0,0,.6)}
.lb-soon .ic{display:grid;place-items:center;flex:0 0 52px;width:52px;height:52px;border-radius:14px;background:#F59E0B;color:#1C1917;font-size:30px}
.lb-soon .tx{display:flex;flex-direction:column;gap:3px;font:500 14px/1.5 Inter,sans-serif;color:#E2E8F0}
.lb-soon .tx b{font:900 18px Inter,sans-serif;color:#fff}
@media (max-width:760px){.lb-soon{flex-direction:column;align-items:flex-start}}

/* Page Packs&Labs : même cadre noir-ardoise et cyan que la carte de l'accueil */
.v3-head.lb-hub-head { background:linear-gradient(135deg, #0B1220, #1E293B); border:3px solid #22D3EE }
.lb-hub-head .ic { background:#22D3EE; color:#0B1220 }
.lb-hub-head .rt { background:rgba(34,211,238,.16); border:2px solid #22D3EE }
.lb-hub-head .rt b { color:#22D3EE }

/* Bloc Capture à plusieurs images (2 à 4) : l'une sous l'autre, ou côte à côte */
.lb-figs { display:flex; flex-direction:column; gap:16px }
.lb-figs.cote { flex-direction:row; flex-wrap:wrap; align-items:flex-start }
.lb-figs.cote .lb-fig { flex:1 1 240px; min-width:0 }
.lb-figs.cote .lb-fig img { max-width:100% }

/* autocollant « Pack publié » : tous les chapitres du pack sont en ligne */
.lb-stk-pub { align-self:flex-end; display:inline-flex; align-items:center; gap:6px; margin:-30px 0 -6px; transform:rotate(2deg); padding:4px 13px; border-radius:8px; background:#15803D; color:#FFFFFF; border:2px solid #FFFFFF; font:900 11.5px Inter,sans-serif; letter-spacing:.08em; text-transform:uppercase; box-shadow:0 4px 10px -4px rgba(0,0,0,.6); position:relative; z-index:1 }
.lb-stk-pub i { font-size:15px }
.lb-stk-pub.part { background:#F59E0B; color:#1C1917; border-color:#1C1917 }
