/* Bibliothèque de ressources (/outils) + cartes réutilisées sur l'accueil. Chargé seulement par ces deux pages, après light.css.
   Teintes de catégorie : lb-t-{indigo|violet|warm|sun|ok} → --la (texte/trait, AA sur blanc), --lb (clair), --lc (accent), --lt (fond). */
.lb-t-indigo{--la:#4f46e5;--lb:#c7d2fe;--lc:#ff7a4d;--lt:#eef0ff}
.lb-t-violet{--la:#7c3aed;--lb:#ddd6fe;--lc:#ffb703;--lt:#f5f0ff}
.lb-t-warm{--la:#c2410c;--lb:#ffd3c2;--lc:#4f46e5;--lt:#fff1e8}
.lb-t-sun{--la:#b45309;--lb:#ffe08a;--lc:#7c3aed;--lt:#fff7e0}
.lb-t-ok{--la:#0a7a53;--lb:#bfeedd;--lc:#ff7a4d;--lt:#e9f8f1}
.o-light [hidden]{display:none!important}

/* Illustrations SVG (components/library/art) */
.lb-art{display:block;width:100%;height:100%}
.lb-bg{fill:var(--lt)}
.lb-soft{fill:var(--lb);opacity:.75}
.lb-soft2{fill:var(--lc);opacity:.18}
.lb-dots circle{fill:var(--la);opacity:.28}
.lb-card{fill:#fff;stroke:rgba(29,27,58,.12);stroke-width:1.5}
.lb-line{fill:var(--la);opacity:.85}
.lb-line2{fill:var(--lb)}
.lb-main{fill:var(--la)}
.lb-dark{filter:brightness(.8)}
.lb-op{opacity:.9}
.lb-on{fill:#fff}
.lb-on-s{stroke:#fff;stroke-width:4;stroke-linecap:round;fill:none}
.lb-mono{font:600 18px "IBM Plex Mono",ui-monospace,monospace;fill:#fff}
.lb-mono-s{font-size:11px}
.lb-ink{fill:#1d1b3a}
.lb-spark{fill:none;stroke:var(--lc);stroke-width:5;stroke-linecap:round}
.lb-warm{fill:var(--lc)}
.lb-sun{fill:#ffb703}
.lb-ok{fill:#0f9d6b}
.lb-wire{fill:none;stroke:var(--la);stroke-width:4;stroke-dasharray:2 9;stroke-linecap:round;opacity:.65}
.lb-wire-main{stroke-dasharray:none;opacity:1;stroke-width:5}
.lb-gear{fill:none;stroke:var(--la);stroke-width:4;stroke-linecap:round}
.lb-brace{font:700 34px "IBM Plex Mono",ui-monospace,monospace;fill:var(--la)}
.lb-bar{fill:var(--lb)}
.lb-tintbox{fill:var(--lt)}
.lb-lightbox{fill:var(--lb);opacity:.6}
.lb-cursor{fill:#1d1b3a;stroke:#fff;stroke-width:2.5;stroke-linejoin:round}
.lb-film rect{fill:#fff;opacity:.4}
.lb-wave rect{fill:var(--lc)}
.lb-ribbon{fill:none;stroke:var(--lc);stroke-width:7;stroke-linejoin:round}
.lb-key{fill:none;stroke:var(--la);stroke-width:6;stroke-linecap:round}
.lb-key>circle:first-child{fill:var(--lb)}
.lb-hole{fill:#fff;stroke:none}
.lb-tilt-l{transform:rotate(-7deg);transform-origin:160px 104px;transform-box:view-box}

/* Cartes */
.lb-grid{list-style:none;margin:0;padding:0;display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(min(100%,292px),1fr))}
.lb-item{position:relative;display:flex;flex-direction:column;background:var(--jw-card,#fff);border:1px solid var(--jw-line,#e8e2d6);border-radius:22px;overflow:hidden;
  box-shadow:0 1px 2px rgba(29,27,58,.05),0 10px 26px -18px rgba(29,27,58,.25);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.lb-item:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--la) 35%,var(--jw-line,#e8e2d6));box-shadow:0 2px 4px rgba(29,27,58,.05),0 22px 40px -22px color-mix(in srgb,var(--la) 55%,transparent)}
.lb-item:focus-within{outline:3px solid #3730a3;outline-offset:3px}
@media (prefers-reduced-motion:reduce){.lb-item{transition:none}.lb-item:hover{transform:none}}
.lb-thumb{position:relative;aspect-ratio:16/9;overflow:hidden;border-bottom:1px solid var(--jw-line,#e8e2d6)}
.lb-cat{position:absolute;left:12px;top:12px;padding:6px 11px;border-radius:99px;background:rgba(255,255,255,.94);color:var(--la);font:700 12.5px/1 var(--fd);
  box-shadow:0 4px 12px -6px rgba(29,27,58,.35)}
.lb-body{display:flex;flex-direction:column;flex:1;padding:16px 20px 20px}
.lb-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px}
.lb-type{font:600 11.5px/1 var(--fm);letter-spacing:.06em;text-transform:uppercase;color:var(--jw-muted,#5b5876)}
.lb-level{font:700 12px/1 var(--fd);padding:5px 9px;border-radius:99px}
.lb-level-debutant{background:#e9f8f1;color:#0a7a53}
.lb-level-intermediaire{background:#fff3d6;color:#8a4b00}
.lb-level-avance{background:#f5f0ff;color:#6d28d9}
.lb-title{margin:0 0 6px;font:800 19px/1.28 var(--fd);letter-spacing:-.015em}
.o-light .lb-title a{color:var(--jw-ink,#1d1b3a);text-decoration:none}
.lb-title a::after{content:"";position:absolute;inset:0;z-index:1}
.lb-title a:focus-visible{outline:none}
.lb-desc{margin:0 0 14px;color:#3f3c5c;font-size:15px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.lb-go{margin-top:auto;font:700 14.5px var(--fd);color:var(--la)}

/* Hero de la bibliothèque : trois illustrations en éventail */
.lb-hero-art{position:relative;width:100%;max-width:460px;min-height:300px;margin:0 auto}
.lb-hero-card{position:absolute;width:64%;padding:8px 8px 12px;background:#fff;border-radius:20px;box-shadow:0 26px 50px -26px rgba(49,46,129,.45),0 0 0 1px rgba(29,27,58,.06)}
.lb-hero-card .lb-art{border-radius:14px;aspect-ratio:16/10}
.lb-hero-card span{display:block;margin:10px 6px 0;font:800 14.5px var(--fd);color:var(--la)}
.lb-hero-card-0{left:0;top:4%;transform:rotate(-6deg)}
.lb-hero-card-1{right:0;top:0;transform:rotate(5deg)}
.lb-hero-card-2{left:16%;bottom:0;transform:rotate(-1.5deg);z-index:2}
@media (min-width:920px){.lb-hero-art{min-height:380px}}

/* Outils : recherche + filtres */
.lb-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px 24px;margin:0 0 16px}
.lb-head .k-h2{margin:0}
.lb-tools{flex:1 1 280px;max-width:400px}
.lb-search{position:relative;display:block}
.lb-search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--jw-muted,#5b5876)}
.lb-search input{width:100%;min-height:50px;padding:0 16px 0 42px;border-radius:14px;border:1.5px solid #d8cfbf;background:#fff;color:var(--jw-ink,#1d1b3a);font:500 16px var(--fb)}
.lb-search input::placeholder{color:#77738f}
.lb-search input:focus{border-color:var(--jw-indigo,#4f46e5);outline:3px solid color-mix(in srgb,var(--jw-indigo,#4f46e5) 25%,transparent);outline-offset:0}
.lb-filters{display:flex;gap:8px;margin:0 -16px 6px;padding:2px 16px 10px;overflow-x:auto;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
@media (min-width:760px){.lb-filters{flex-wrap:wrap;margin:0 0 8px;padding:2px 0 8px;overflow:visible}}
.lb-chip{flex:none;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:99px;border:1.5px solid #d8cfbf;background:#fff;color:var(--jw-ink,#1d1b3a);
  font:700 14.5px var(--fd);cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.lb-chip span{display:inline-grid;place-items:center;min-width:24px;height:22px;padding:0 6px;border-radius:99px;background:var(--lt,#eef0ff);color:var(--la,#4f46e5);font:700 12px var(--fd)}
.lb-chip:hover{border-color:var(--la,#4f46e5)}
.lb-chip[aria-pressed="true"]{background:var(--la,#1d1b3a);border-color:var(--la,#1d1b3a);color:#fff}
.lb-chip[aria-pressed="true"] span{background:rgba(255,255,255,.22);color:#fff}
.lb-chip:not([class*="lb-t-"])[aria-pressed="true"]{background:#1d1b3a;border-color:#1d1b3a}
.lb-status{min-height:1.2em;margin:0 0 14px;font-size:14px;color:var(--jw-muted,#5b5876)}
.lb-empty{margin:24px 0 0;padding:20px;border-radius:16px;background:#fff;border:1px dashed #d8cfbf;color:#3f3c5c}
.lb-reset{border:0;background:none;padding:0;color:var(--jw-indigo,#4f46e5);font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;min-height:44px}

/* Thèmes (bas de /outils, et accueil) */
.lb-theme-grid{list-style:none;margin:0;padding:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr))}
.lb-theme a{position:relative;display:flex;flex-direction:column;gap:6px;height:100%;padding:20px 20px 18px;border-radius:18px;background:#fff;border:1px solid var(--jw-line,#e8e2d6);
  text-decoration:none;box-shadow:0 1px 2px rgba(29,27,58,.04);overflow:hidden;transition:border-color .15s,transform .15s}
.lb-theme a::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,var(--la),var(--lc))}
.lb-theme a:hover{border-color:var(--la);transform:translateY(-2px)}
@media (prefers-reduced-motion:reduce){.lb-theme a{transition:none}.lb-theme a:hover{transform:none}}
.lb-theme b{font:800 17.5px/1.3 var(--fd);color:var(--jw-ink,#1d1b3a)}
.lb-theme span{font-size:14.5px;line-height:1.5;color:#3f3c5c}
.lb-theme small{margin-top:auto;padding-top:6px;font:700 14px var(--fd);color:var(--la)}
body.o-light .lb-themes{background:linear-gradient(180deg,var(--jw-paper-2,#f8f1e5),var(--jw-paper,#fffaf3))}
