/* «Библиотека» — слой-полка книг (14.10.2026, слова Лираз: «создай мне отдельное приложение книги»).
   Цвет — только из опор index.html (--bg0, --ink, --ink-dim, --line, --glass2, --gold*, --on-gold).
   Без :has(), color-mix(), dvh и сокращения inset: Chromium 99 на старых андроидах отбросит правило целиком.
   Направление — логическими свойствами и разворотом стрелки под [dir=rtl]. Кнопки в одну строку (без переноса). */
#hlLibrary{position:fixed;top:0;right:0;bottom:0;left:0;z-index:95;display:none;flex-direction:column;background:var(--bg0);color:var(--ink)}
#hlLibrary.on{display:flex}
#hlLibrary *{box-sizing:border-box}
#hlLibrary [hidden]{display:none!important}
#hlLibrary svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.lib-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px}
.lib-back{flex:0 0 auto;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:50%;background:none;color:var(--ink);cursor:pointer}
.lib-back svg{width:22px;height:22px}
[dir="rtl"] .lib-back svg{transform:scaleX(-1)}
.lib-title{flex:1 1 auto;min-width:0;margin:0;font-family:var(--disp);font-size:calc(21px * var(--fs,1));font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-net{flex:0 0 auto;padding:3px 10px;border:1px solid var(--line);border-radius:999px;font-size:calc(12px * var(--fs,1));color:var(--ink-dim);white-space:nowrap}
.lib-tools{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;padding:4px 12px 10px}
.lib-search{flex:1 1 220px;min-width:0;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:var(--glass2);color:var(--ink);font:inherit;font-size:calc(15px * var(--fs,1))}
.lib-search:focus-visible,.lib-btn:focus-visible,.lib-f:focus-visible,.lib-back:focus-visible,.lib-cover:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.lib-filter{flex:0 0 auto;display:flex;gap:6px}
.lib-f{min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:none;color:var(--ink-dim);font:inherit;font-size:calc(14px * var(--fs,1));font-weight:600;white-space:nowrap;cursor:pointer}
.lib-f.on{background:var(--gold-fill);border-color:var(--gold);color:var(--on-gold)}
.lib-notes{flex:0 0 auto;padding:0 12px}
.lib-note{margin:0 0 6px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--glass2);font-size:calc(13px * var(--fs,1));line-height:1.4;color:var(--ink-dim)}
.lib-note-warn{border-color:var(--gold);color:var(--ink)}
.lib-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:4px 12px calc(24px + env(safe-area-inset-bottom,0px))}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;max-width:1100px;margin:0 auto}
.lib-card{display:grid;grid-template-columns:76px minmax(0,1fr);grid-template-rows:auto auto;gap:10px 12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--glass2)}
.lib-cover{grid-row:1/3;align-self:start;display:grid;place-items:center;width:76px;height:104px;padding:0;overflow:hidden;border:0;border-radius:4px 10px 10px 4px;background:var(--gold-fill);color:var(--on-gold);cursor:pointer}
[dir="rtl"] .lib-cover{border-radius:10px 4px 4px 10px}
.lib-cover[disabled]{opacity:.55;cursor:default}
.lib-cover img{display:block;width:100%;height:100%;object-fit:cover}
.lib-letter{font-family:var(--disp);font-size:calc(34px * var(--fs,1));font-weight:700;line-height:1}
.lib-info{min-width:0;display:flex;flex-direction:column;gap:3px}
.lib-name{margin:0;font-family:var(--disp);font-size:calc(16px * var(--fs,1));font-weight:600;line-height:1.25;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.lib-author,.lib-meta,.lib-where{margin:0;font-size:calc(12.5px * var(--fs,1));line-height:1.35;color:var(--ink-dim);overflow-wrap:anywhere}
.lib-langs{display:inline-flex;gap:4px;vertical-align:middle}
.lib-lang{padding:0 6px;border:1px solid var(--line);border-radius:6px;font-size:calc(11px * var(--fs,1));font-weight:700;letter-spacing:.04em;line-height:1.6;color:var(--ink)}
.lib-lang.is-machine{border-style:dashed}
.lib-badge{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;margin-top:2px;color:var(--gold-text);font-size:calc(12px * var(--fs,1));font-weight:700;white-space:nowrap}
.lib-badge svg{width:16px;height:16px;flex:0 0 auto}
.lib-badge.is-part{color:var(--ink-dim)}
.lib-acts{grid-column:2;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.lib-btn{min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:none;color:var(--ink);font:inherit;font-size:calc(14px * var(--fs,1));font-weight:600;white-space:nowrap;cursor:pointer}
.lib-main{background:var(--gold-fill);border-color:var(--gold);color:var(--on-gold)}
.lib-prog,.lib-lock{font-size:calc(12.5px * var(--fs,1));color:var(--ink-dim);white-space:nowrap}
.lib-empty{max-width:520px;margin:32px auto;text-align:center;color:var(--ink-dim);font-size:calc(15px * var(--fs,1))}
.lib-usage{max-width:1100px;margin:16px auto 0;text-align:center;font-size:calc(12px * var(--fs,1));color:var(--ink-faint)}
@media (max-width:420px){.lib-grid{grid-template-columns:minmax(0,1fr)}}
