/* Стили экранов макета (D-*.dc.html), каждый под классом своей страницы */
/* ── экран book ── */
.p-book .crumbs{display:flex;align-items:center;gap:6px;padding-top:16px;font:400 13px/18px var(--f-ui);color:var(--muted)}
.p-book .crumbs a{display:inline-block;padding:3px 0;color:var(--ink-2)}
.p-book .crumbs a:hover{color:var(--ink);text-decoration:underline}
.p-book .menu .btn{flex:none}
/* ── экран D-start ── */
/* первый вход: заголовок, одна строка, проба, большое поле «Добавить книгу», три шага */
.p-start .st5{padding-top:32px}
.p-start .hi{margin-top:6px;font:400 16px/24px var(--f-ui);color:var(--ink-2)}
.p-start .trial{display:flex;align-items:center;gap:14px;margin-top:24px;padding:10px 10px 10px 12px;border-radius:var(--r-panel);background:var(--panel)}
.p-start .trial p{min-width:0;font:400 16px/24px var(--f-ui);color:var(--muted)}
.p-start .trial .st{vertical-align:top}
.p-start .trial p>b{font-weight:600;color:var(--ink)}
.p-start .trial .st{color:var(--ink-2)}
.p-start .trial .st b{font:500 16px/24px var(--f-mono);color:var(--ink)}
.p-start .trial .btn{flex:none}
.p-start .drop{display:flex;flex-direction:column;align-items:center;margin-top:16px;padding:44px 32px 40px;border-radius:var(--r-panel);border:1.5px dashed var(--line-2);background:var(--panel);text-align:center}
.p-start .drop-i{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--sel);color:var(--ink-2)}
.p-start .drop-i .ico{width:28px;height:28px;stroke-width:1.6}
.p-start .drop-t{margin-top:18px;font:600 20px/26px var(--f-ui)}
.p-start .drop-x{max-width:680px;margin-top:8px;font:400 16px/24px var(--f-ui);color:var(--ink-2)}
.p-start .drop .btn-main{margin-top:24px}
.p-start .drop-q{margin-top:16px;padding:2px 0;font-size:13px;line-height:18px}
.p-start .steps{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 14px;margin-top:20px;font:500 14px/20px var(--f-ui);color:var(--ink-2)}
.p-start .steps li{display:inline-flex;align-items:center;gap:10px}
.p-start .steps li+li::before{content:"→";margin-right:4px;color:var(--muted);font-weight:400}
.p-start .sn{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--line-2);font:500 12px/16px var(--f-mono);color:var(--ink-2)}
@media (max-width:640px){
.p-start .st5{padding-top:24px}
.p-start .trial{flex-wrap:wrap}
.p-start .trial p{flex:1 1 220px}
.p-start .drop{padding:32px 16px 28px}
.p-start .steps{flex-direction:column;align-items:flex-start;margin-left:8px}
.p-start .steps li+li::before{content:none}
}
/* ── экран D-landing ── */
body{margin:0}
.nv{--f-disp:"Unbounded","Unbounded Fallback",system-ui,sans-serif;--f-ui:"Onest","Onest Fallback",system-ui,-apple-system,"Segoe UI",sans-serif;--f-book:"Literata","Literata Fallback",Georgia,"PT Serif",serif;--f-mono:"JetBrains Mono","JetBrains Mono Fallback",ui-monospace,Menlo,Consolas,monospace;
--r-panel:12px;--r-card:10px;--r-ctl:8px;--r-pill:999px;--md-plate:#171A21;--md-disc:#0F1116;--md-ink:#EEF0F4;
--c-put:#2BB3A8;--c-krov:#D6447A;--c-gard:#9B83F0;--c-ras:#4DA3E8;--c-solo:#8E97A6;
font:400 14px/20px var(--f-ui);color:var(--ink);background:var(--ground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-numeric:tabular-nums lining-nums}
.nv,.nv *,.nv *::before,.nv *::after{box-sizing:border-box}
.nv :focus-visible{outline:2px solid var(--sig-ring);outline-offset:2px}
.p-land .sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;padding:0}
.p-land .mono{font-family:var(--f-mono);font-weight:500}
.p-land .grow{flex:1}
.p-land .ico{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.p-land .ico .f{fill:currentColor;stroke:none}
.p-land .h-page{font:600 30px/36px var(--f-disp);letter-spacing:-.015em}
.p-land .h-sec{font:600 20px/26px var(--f-ui);letter-spacing:-.005em}
.p-land .cap{font:600 12px/16px var(--f-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.p-land .q{color:var(--ink-2);font-weight:500;text-decoration:underline;text-decoration-color:var(--line-2);text-decoration-thickness:1px;text-underline-offset:4px}
.p-land .q:hover{color:var(--ink);text-decoration-color:currentColor}
/* кнопки: главная · сигнальная · вторичная · тихая; высоты 36 и 44 */
.p-land .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border-radius:var(--r-ctl);font:600 14px/20px var(--f-ui);white-space:nowrap;cursor:pointer}
.p-land .btn-l{height:44px;padding:0 18px;font-size:16px;line-height:24px}
.p-land .btn-main{background:var(--btn);color:var(--on-btn);box-shadow:inset 0 0 0 1px var(--btn-edge)}
.p-land .btn-main:hover{background:var(--btn-h)}
.p-land .btn-sig{background:var(--sig);color:var(--on-sig);box-shadow:inset 0 0 0 1px var(--sig-edge)}
.p-land .btn-sec{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2)}
.p-land .btn-sec:hover{box-shadow:inset 0 0 0 1px var(--ctl)}
.p-land .btn-q{color:var(--ink-2);padding:0 10px}
.p-land .btn-q:hover{color:var(--ink);background:var(--sel)}
.p-land .ib{width:36px;padding:0}
.p-land .ib .ico{width:18px;height:18px}
/* чипы-фильтры: рамка, выбранный — заливка сигналом */
.p-land .chips{display:flex;gap:6px;flex-wrap:wrap}
.p-land .chip{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--line-2);font:500 14px/20px var(--f-ui);color:var(--ink-2);white-space:nowrap;cursor:pointer}
.p-land .chip b{font:500 13px/18px var(--f-mono);color:var(--muted)}
.p-land .chip:hover{box-shadow:inset 0 0 0 1px var(--ctl)}
.p-land .chip[aria-pressed="true"]{background:var(--sig);color:var(--on-sig);box-shadow:inset 0 0 0 1px var(--sig-edge)}
.p-land .chip[aria-pressed="true"] b{color:var(--on-sig)}
.p-land .tag{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-pill);background:var(--sel);font:500 13px/18px var(--f-ui);color:var(--ink-2);white-space:nowrap}
.p-land .tcur{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:var(--r-pill);background:var(--sig);color:var(--on-sig);box-shadow:inset 0 0 0 1px var(--sig-edge);font:500 14px/20px var(--f-mono)}
/* огоньки: форма + цвет, без свечения */
.p-land .lamp{position:relative;display:inline-block;width:10px;height:10px;border-radius:50%;flex:none;overflow:hidden}
.p-land .lamp.ok{background:var(--ok)}
.p-land .lamp.run{box-shadow:inset 0 0 0 1.5px var(--lamp)}
.p-land .lamp.run::after{content:"";position:absolute;left:0;top:0;bottom:0;width:50%;background:var(--lamp)}
.p-land .lamp.acc{box-shadow:inset 0 0 0 1.5px var(--ctl)}
.p-land .lamp.bad{width:9px;height:9px;margin:0 .5px;border-radius:1.5px;background:var(--err);transform:rotate(45deg)}
.p-land .lamp.wait{box-shadow:inset 0 0 0 1.5px var(--lamp)}
.p-land .lamp.wait::after{content:"";position:absolute;left:3px;top:3px;width:4px;height:4px;border-radius:50%;background:var(--lamp)}
.p-land .st{display:inline-flex;align-items:center;gap:8px}
/* табло: утопленная панель, моноширинные цифры */
.p-land .tablo{display:flex;align-items:stretch;border-radius:var(--r-ctl);background:var(--sunk);box-shadow:var(--sunk-sh)}
.p-land .tablo>div{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:6px 16px;border-left:1px solid var(--line)}
.p-land .tablo>div:first-child{border-left:0}
.p-land .tablo .tl{font:500 12px/16px var(--f-ui);color:var(--muted);white-space:nowrap}
.p-land .tablo .tv{display:flex;align-items:center;gap:10px;font:500 16px/24px var(--f-mono);color:var(--ink);white-space:nowrap}
.p-land .tablo .tv small{font:400 13px/18px var(--f-ui);color:var(--muted)}
/* шкалы прогресса */
.p-land .segm{display:flex;gap:2px}
.p-land .segm i{flex:1;height:6px;border-radius:2px;background:var(--line)}
.p-land .segm i.on{background:var(--sig-g);box-shadow:inset 0 0 0 1px var(--sig-edge)}
.p-land .dbar{display:flex;height:6px;border-radius:var(--r-pill);background:var(--line);overflow:hidden}
.p-land .dbar i{display:block;height:100%}
.p-land .dbar .d-e{background:var(--err)}
.p-land .dbar .d-f{background:var(--ctl)}
/* медальон — образ книги */
.p-land .md{position:relative;display:block;width:var(--s);height:var(--s);flex:none}
.p-land .md-back{position:absolute;inset:0;border-radius:var(--r-card);background:var(--md-back)}
.p-land .md-back.b1{transform:translate(calc(var(--s) * .032),calc(var(--s) * -.032))}
.p-land .md-back.b2{transform:translate(calc(var(--s) * .064),calc(var(--s) * -.064));opacity:.55}
.p-land .md-plate{position:absolute;inset:0;border-radius:var(--r-card);background:var(--md-plate);display:grid;place-items:center;overflow:hidden}
.p-land .md-sm .md-plate,.p-land .md-sm .md-back{border-radius:var(--r-ctl)}
.p-land .md-plate svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.p-land .md-num{position:relative;font:700 var(--n)/1 var(--f-disp);letter-spacing:-.02em;color:var(--md-ink);transform:translateY(-.02em)}
.p-land .md-put{--mc:var(--c-put)}
.p-land .md-krov{--mc:var(--c-krov)}
.p-land .md-gard{--mc:var(--c-gard)}
.p-land .md-ras{--mc:var(--c-ras)}
.p-land .md-solo{--mc:var(--c-solo)}
.p-land .md-bars{fill:none;stroke:var(--mc);stroke-linecap:round}
.p-land .md-ring{fill:var(--md-disc);stroke:var(--mc);stroke-opacity:.5}
.p-land .md-wait{fill:none;stroke:var(--mc);stroke-opacity:.45;stroke-dasharray:1.2 3.2;stroke-linecap:round}
.p-land .md-plate svg.md-gly{position:relative;inset:auto;fill:none;stroke:var(--md-ink);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.p-land .cdot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--mc);flex:none}
/* шкала записи и метки мест */
.p-land .scl{display:block;width:100%;height:auto}
.p-land .scl path{fill:none;stroke-linecap:round}
.p-land .scl .wv-on{stroke:var(--wave-on)}
.p-land .scl .wv-off{stroke:var(--wave)}
.p-land .mk-err{fill:var(--err)}
.p-land .mk-fp{fill:var(--ctl)}
.p-land .mk-wait{fill:none;stroke:var(--ctl);stroke-width:1.3}
.p-land .mk-cur-o{fill:none;stroke:var(--sig-ring);stroke-width:1.6}
.p-land .mk-cur-i{fill:var(--sig-g);stroke:var(--sig-edge);stroke-width:1}
.p-land .ph{fill:var(--sig-ring)}
.p-land .axis{position:relative;height:16px;font:400 12px/16px var(--f-mono);color:var(--muted)}
.p-land .axis span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.p-land .axis span.first{transform:none}
/* значки решений: пустой круг, крест, черта */
.p-land .vi{display:block;width:20px;height:20px;flex:none}
.p-land .vi-err circle{fill:var(--err)}
.p-land .vi-err path{fill:none;stroke:var(--on-err);stroke-width:2.2;stroke-linecap:round}
.p-land .vi-fp circle{fill:var(--ctl)}
.p-land .vi-fp path{fill:none;stroke:var(--panel);stroke-width:2.4;stroke-linecap:round}
.p-land .vi-wait circle{fill:none;stroke:var(--ctl);stroke-width:1.6}
.p-land kbd{display:inline-block;min-width:20px;padding:0 5px;border-radius:4px;box-shadow:inset 0 0 0 1px var(--line-2);font:500 12px/16px var(--f-mono);color:var(--ink-2);text-align:center}
.p-land .wrap{max-width:1440px;margin:0 auto;padding:0 64px}
.p-land .hd{border-bottom:1px solid var(--line)}
.p-land .hd-in{max-width:1440px;margin:0 auto;padding:0 64px;height:56px;display:flex;align-items:center;gap:28px}
.p-land .brand{display:inline-flex;align-items:center;gap:10px;font:600 16px/20px var(--f-disp);letter-spacing:-.01em;color:var(--ink);white-space:nowrap;border-radius:var(--r-ctl)}
.p-land .brand img{width:28px;height:28px;display:block}
.p-land .nav{display:flex;gap:2px;align-self:stretch}
.p-land .nav a{position:relative;display:inline-flex;align-items:center;padding:0 12px;font:500 14px/20px var(--f-ui);color:var(--ink-2)}
.p-land .nav a:hover{color:var(--ink)}
.p-land .nav a[aria-current="page"]{color:var(--ink);font-weight:600}
.p-land .nav a[aria-current="page"]::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;border-radius:2px;background:var(--sig-ring)}
.p-land .acct{margin-left:auto;display:flex;align-items:center;gap:16px}
.p-land .bal{display:inline-flex;align-items:center;gap:8px;font:500 14px/20px var(--f-ui);color:var(--ink);white-space:nowrap}
.p-land .bal .ico{color:var(--muted)}
.p-land .acct .q{display:inline-block;padding:2px 0;font-size:14px}
.p-land .ava{width:32px;height:32px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--line-2);display:grid;place-items:center;font:600 12px/16px var(--f-ui);color:var(--ink);flex:none}
.p-land .ft{border-top:1px solid var(--line);margin-top:40px}
.p-land .ft-in{max-width:1440px;margin:0 auto;padding:18px 64px 22px;display:flex;align-items:center;gap:8px 24px;flex-wrap:wrap;font:400 13px/18px var(--f-ui);color:var(--muted)}
.p-land .ft-in nav{margin-left:auto;display:flex;gap:6px 20px;flex-wrap:wrap}
.p-land .ft-in nav a{display:inline-block;padding:3px 0;color:var(--ink-2)}
.p-land .ft-in nav a:hover{color:var(--ink);text-decoration:underline}
@media (max-width:900px){
.p-land .wrap,.p-land .hd-in,.p-land .ft-in{padding-left:16px;padding-right:16px}
.p-land .hd-in{height:auto;flex-wrap:wrap;gap:6px 16px;padding-top:10px;padding-bottom:4px}
.p-land .nav{order:3;width:100%;min-height:40px}
.p-land .nav a{padding:10px}
.p-land .acct{gap:12px}
.p-land .ft-in nav{margin-left:0}
}
@media (max-width:520px){
.p-land .acct .q{display:none}
}
.p-land .hd-g .acts{margin-left:auto;display:flex;align-items:center;gap:6px}
.p-land .hd-g .acts .q{display:inline-block;padding:2px 0;margin-right:10px;font-size:14px}
/* первый экран */
.p-land .hero{display:grid;grid-template-columns:minmax(0,1fr) 520px;gap:64px;align-items:start;padding-top:44px}
.p-land .eyebrow{color:var(--sig-t)}
.p-land .hero h1{margin-top:14px;max-width:640px}
.p-land .lead{margin-top:16px;max-width:600px;font:400 16px/24px var(--f-ui);color:var(--ink-2)}
.p-land .one{margin-top:14px;font:500 14px/20px var(--f-ui);color:var(--ink)}
.p-land .one kbd{margin:0 2px}
.p-land .facts{display:inline-flex;margin-top:24px}
.p-land .facts>div{padding:10px 18px}
/* четыре плитки (с «0 ₽ — пилот») не влезали в колонку 568 px одной строкой подписей */
.p-land .facts .tl{white-space:normal;max-width:15ch}
.p-land .hero-go{display:none}
/* вошедшему — своя главная */
.p-land .hero.me{grid-template-columns:minmax(0,1fr)}
.p-land .me-next{display:flex;align-items:center;gap:16px 24px;flex-wrap:wrap;max-width:880px;margin-top:20px;padding:16px 20px;border-radius:var(--r-panel);background:var(--panel)}
.p-land .me-next p{flex:1;min-width:240px;font:400 16px/24px var(--f-ui);color:var(--ink-2)}
.p-land .me-next .k{color:var(--muted)}
.p-land .me-next b{color:var(--ink);font-weight:600}
.p-land .me-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.p-land .me .alert{margin-top:16px;max-width:880px}
.p-land .facts .tv{font:600 20px/26px var(--f-disp);letter-spacing:-.01em}
.p-land .facts .tl{margin-top:2px}
.p-land .more-l{margin-top:16px;max-width:600px;font:400 14px/20px var(--f-ui);color:var(--muted)}
/* форма пробы */
.p-land .try{padding:24px;border-radius:var(--r-panel);background:var(--panel)}
/* светлая тема: проба на главной — с тенью (макет); класса .light у страницы нет */
[data-theme=light] .p-land .try{box-shadow:var(--shadow)}
@media (prefers-color-scheme: light){:root:not([data-theme=dark]) .p-land .try{box-shadow:var(--shadow)}}
.p-land .try-s{margin-top:4px;font:400 13px/18px var(--f-ui);color:var(--muted)}
.p-land .slots{display:flex;flex-direction:column;gap:10px;margin-top:18px}
.p-land .slot{position:relative;display:flex;align-items:center;gap:14px;min-height:72px;padding:12px 16px;border-radius:var(--r-ctl);border:1px dashed var(--ctl);cursor:pointer}
.p-land .slot:hover{border-color:var(--ink-2)}
.p-land .slot-n{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;flex:none;box-shadow:inset 0 0 0 1.5px var(--ctl);font:500 13px/18px var(--f-mono);color:var(--ink-2)}
.p-land .slot-t{display:flex;flex-direction:column;min-width:0}
.p-land .slot-t b{font:600 16px/24px var(--f-ui);color:var(--ink)}
.p-land .slot-t span{font:400 13px/18px var(--f-mono);color:var(--muted)}
.p-land .slot-a{margin-left:auto;font:500 13px/18px var(--f-ui);color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:4px;white-space:nowrap}
.p-land .slot input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}
.p-land .try .btn-l{width:100%;margin-top:16px}
.p-land .consent{margin-top:12px;font:400 12px/16px var(--f-ui);color:var(--muted)}
.p-land .consent a{color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
/* секции */
.p-land .sec{margin-top:48px}
.p-land .sec-h{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.p-land .sec-h p{font:400 14px/20px var(--f-ui);color:var(--muted)}
/* как это работает */
.p-land .chain{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px;border-top:1px solid var(--line)}
.p-land .chain li{padding:18px 28px 0 0}
.p-land .chain li+li{padding-left:28px;border-left:1px solid var(--line)}
.p-land .chain h3{margin-top:10px;font:600 16px/24px var(--f-ui)}
.p-land .chain p{margin-top:6px;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
/* показ сверки — static/nv-show.css (единственный владелец) */
/* одна честная цифра (аудит главной 2026-10-05; блок «Обложка не нужна» снят) */
.p-land .proof{display:flex;align-items:center;gap:24px;margin-top:48px;padding:20px 24px;border-radius:var(--r-panel);background:var(--panel)}
.p-land .proof .pf-n{flex:none;font:700 44px/48px var(--f-disp);letter-spacing:-.02em;color:var(--sig-t)}
.p-land .proof .pf-t{font:600 16px/24px var(--f-ui);color:var(--ink)}
.p-land .proof .pf-s{margin-top:4px;max-width:760px;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
/* вопросы */
.p-land .faq{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px;border-top:1px solid var(--line)}
.p-land .faq details{padding:18px 28px 0 0}
.p-land .faq details+details{padding-left:28px;border-left:1px solid var(--line)}
.p-land .faq summary{display:flex;align-items:center;justify-content:space-between;gap:12px;list-style:none;cursor:pointer;font:600 16px/24px var(--f-ui);color:var(--ink)}
.p-land .faq summary::-webkit-details-marker{display:none}
.p-land .faq details summary::after,.p-land .faq details[open] summary::after{content:none}
.p-land .faq summary .ico{color:var(--muted)}
.p-land .faq p{margin-top:8px;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
.nv .ft{margin-top:36px}
@media (max-width:1100px){
.p-land .hero{grid-template-columns:1fr;gap:32px}
.p-land .hero-go{display:inline-flex;margin-top:20px}
.p-land .show-b{flex-direction:column}
}
@media (max-width:720px){
.p-land .hero{padding-top:24px}
.p-land .facts{display:grid;grid-template-columns:1fr 1fr}
.p-land .facts .tl{white-space:normal}
.p-land .facts .tl{max-width:none}
.p-land .facts>div:nth-child(3){border-left:0}
.p-land .facts>div:nth-child(n+3){border-top:1px solid var(--line)}
.p-land .hero-go{display:flex;width:100%}
.p-land .proof{flex-direction:column;align-items:flex-start;gap:8px;padding:16px}
.p-land .proof .pf-n{font-size:36px;line-height:40px}
.p-land .chain,.p-land .faq{grid-template-columns:1fr}
.p-land .chain li,.p-land .chain li+li,.p-land .faq details,.p-land .faq details+details{padding:16px 0 0;border-left:0}
.p-land .slot{flex-wrap:wrap}
.p-land .slot-a{margin-left:42px}
.p-land .hd-g .acts .q{display:none}
/* шапка гостя в одну строку: проба уже под заголовком (.hero-go), второй янтарной кнопке в шапке места нет */
.p-land .hd-g .acts .btn-main{display:none}
}
/* ── экран D-review ── */
.p-rev .rv{width:100%;height:800px;overflow:hidden}
.p-rev .rv .hd-in{padding:0 20px}
.p-rev .rv-in{padding:0 20px}
/* шапка отчёта: крошки и заголовок, справа «Список чтецу» с пояснением */
.p-rev .rh{display:flex;align-items:flex-start;gap:32px;padding-top:10px}
.p-rev .crumbs{display:flex;align-items:center;gap:6px;font:400 13px/18px var(--f-ui);color:var(--muted)}
.p-rev .crumbs a{display:inline-block;padding:3px 0;color:var(--ink-2)}
.p-rev .crumbs a:hover{color:var(--ink);text-decoration:underline}
.p-rev .rh h1{margin-top:2px}
.p-rev .exp{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px;width:560px;flex:none}
.p-rev .exp-n{font:400 12px/16px var(--f-ui);color:var(--muted);text-align:right}
/* прогресс: табло «Без решения» + полоса, рядом «К первой неразмеченной» */
.p-rev .rp{display:flex;align-items:center;gap:12px;margin-top:10px}
.p-rev .prog{flex:1;display:flex;align-items:center;gap:14px;height:36px;padding:0 14px}
.p-rev .prog .tl{font:500 13px/18px var(--f-ui);color:var(--ink-2)}
.p-rev .prog .tv{font:500 16px/24px var(--f-mono);color:var(--ink);white-space:nowrap}
.p-rev .prog .tv small{font:400 13px/18px var(--f-ui);color:var(--muted);margin:0 3px}
.p-rev .prog .dbar{flex:1}
.p-rev .first kbd{margin-left:2px}
/* фильтры */
.p-rev .rf{display:flex;align-items:center;gap:10px;margin-top:8px}
/* шкала */
.p-rev .scale{margin-top:8px;padding:8px 12px 4px;border-radius:var(--r-panel);background:var(--panel)}
.p-rev .scale .axis{margin-top:2px}
/* рабочее место: список слева, карточка места справа */
.p-rev .work{display:grid;grid-template-columns:393px minmax(0,1fr);gap:16px;margin-top:10px;align-items:start}
.p-rev .lp{display:flex;flex-direction:column;height:480px;border-radius:var(--r-panel);background:var(--panel);overflow:hidden}
.p-rev .lp-h{height:40px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line);font:600 13px/18px var(--f-ui);color:var(--ink)}
.p-rev .lp-h .cnt{font-weight:400;color:var(--muted)}
.p-rev .lp-win{height:396px;flex:none;overflow:hidden}
.p-rev .lp-ol{transform:translateY(-88px);padding:0 6px}
.p-rev .pr{display:flex;align-items:center;gap:8px;height:44px;padding-right:8px;border-radius:var(--r-ctl)}
.p-rev .pr.is-cur{background:var(--sel)}
.p-rev .pl{flex:1;min-width:0;height:44px;display:flex;align-items:center;gap:10px;padding:0 6px 0 8px;border-radius:var(--r-ctl);text-align:left;cursor:pointer}
.p-rev .pl:hover{background:var(--sel)}
.p-rev .tc{width:44px;flex:none;font:500 13px/18px var(--f-mono);color:var(--muted)}
.p-rev .pl[aria-current="true"] .tc{display:inline-flex;justify-content:center;width:auto;min-width:44px;padding:1px 7px;border-radius:var(--r-pill);background:var(--sig);color:var(--on-sig);box-shadow:inset 0 0 0 1px var(--sig-edge)}
.p-rev .w{display:flex;flex-direction:column;min-width:0}
.p-rev .wx{font:500 14px/20px var(--f-ui);color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p-rev .wx b{font-weight:600;color:var(--ink)}
.p-rev .wx em{font-style:normal;font-weight:600;color:var(--err)}
.p-rev .wx i{font-style:normal;color:var(--muted);margin:0 5px}
.p-rev .w small{display:flex;align-items:center;gap:4px;font:400 12px/16px var(--f-ui);color:var(--muted);white-space:nowrap}
.p-rev .flag{display:inline-flex;align-items:center;gap:3px;color:var(--flag);font-weight:500}
.p-rev .flag .ico{width:12px;height:12px;stroke-width:2}
.p-rev .pr.is-fp .wx,.p-rev .pr.is-fp .wx b,.p-rev .pr.is-fp .wx em{color:var(--muted)}
.p-rev .pr.is-fp .wx b{text-decoration:line-through;text-decoration-color:var(--ctl)}
.p-rev .acts{display:flex;gap:4px;flex:none}
.p-rev .rb{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 0 0 1px var(--ctl);color:var(--ink-2);cursor:pointer}
.p-rev .rb .ico{width:14px;height:14px;stroke-width:2}
.p-rev .rb:hover{color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink-2)}
.p-rev .rb-err[aria-pressed="true"]{background:var(--err);color:var(--on-err);box-shadow:none}
.p-rev .rb-fp[aria-pressed="true"]{background:var(--ctl);color:var(--panel);box-shadow:none}
.p-rev .lp-f{height:36px;flex:none;margin-top:auto;display:flex;align-items:center;gap:16px;padding:0 16px;border-top:1px solid var(--line);font:400 12px/16px var(--f-ui);color:var(--muted)}
.p-rev .lp-f span{display:inline-flex;align-items:center;gap:6px}
.p-rev .lg{width:16px;height:16px;border-radius:50%;display:inline-grid;place-items:center;flex:none}
.p-rev .lg-w{box-shadow:inset 0 0 0 1px var(--ctl)}
.p-rev .lg-e{background:var(--err);color:var(--on-err)}
.p-rev .lg-f{background:var(--ctl);color:var(--panel)}
.p-rev .lg .ico{width:10px;height:10px;stroke-width:2.4}
/* карточка места */
.p-rev .fc{height:480px;border-radius:var(--r-panel);background:var(--panel);padding:16px 24px 12px;overflow:hidden}
.p-rev .fh{height:28px;display:flex;align-items:center;gap:8px}
.p-rev .pos{font:400 14px/20px var(--f-mono);color:var(--muted);white-space:nowrap}
.p-rev .pos b{font-weight:500;color:var(--ink)}
.p-rev .rw{width:783px;margin:12px 0 0;font:400 20px/38px var(--f-book);color:var(--ink-2);font-kerning:normal}
.p-rev .rw-l{display:block;height:38px;text-align:justify;text-align-last:justify;white-space:nowrap}
.p-rev .rw-strip{display:block;height:38px}
.p-rev .rw-place{margin:0 -24px;padding:0 24px;background:var(--band);color:var(--ink)}
.p-rev .voice{border-radius:4px;background:var(--sig-soft);box-shadow:0 0 0 3px var(--sig-soft)}
.p-rev .hit{position:relative;color:var(--ink);text-decoration:underline wavy var(--err);text-decoration-thickness:1.5px;text-underline-offset:7px;text-decoration-skip-ink:none}
.p-rev .anno{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);padding:3px 10px;border-radius:var(--r-ctl);background:var(--err-soft);color:var(--err);font:600 16px/24px var(--f-ui);letter-spacing:0;white-space:nowrap}
.p-rev .anno .a-k{font-weight:500;color:var(--anno-k);margin-right:5px}
.p-rev .deck{margin-top:12px}
.p-rev .dp{display:flex;align-items:center;gap:6px}
.p-rev .dp .btn-sec{min-width:56px}
.p-rev .play .i-pause,.p-rev .play .t-pause{display:none}
.p-rev .play[aria-pressed="true"] .i-play,.p-rev .play[aria-pressed="true"] .t-play{display:none}
.p-rev .play[aria-pressed="true"] .i-pause{display:block}
.p-rev .play[aria-pressed="true"] .t-pause{display:inline}
.p-rev .play{min-width:132px}
.p-rev .rate{font-family:var(--f-mono);font-weight:500}
.p-rev .vds{display:grid;grid-template-columns:1fr 1fr 150px;gap:8px;margin-top:8px}
.p-rev .vd{height:44px;display:flex;align-items:center;justify-content:center;gap:10px;padding:0 14px;border-radius:var(--r-ctl);font:600 16px/24px var(--f-ui);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2);cursor:pointer}
.p-rev .vd .vi{width:20px;height:20px}
.p-rev .vd-err{box-shadow:inset 0 0 0 1.5px var(--err)}
.p-rev .vd-err[aria-pressed="true"]{background:var(--err);color:var(--on-err);box-shadow:none}
.p-rev .vd-err[aria-pressed="true"] .vi circle{fill:var(--on-err)}
.p-rev .vd-err[aria-pressed="true"] .vi path{stroke:var(--err)}
.p-rev .vd-fp[aria-pressed="true"]{background:var(--ink-2);color:var(--panel);box-shadow:none}
.p-rev .vd-skip{box-shadow:none;border:1px dashed var(--line-2);color:var(--ink-2);font-weight:500}
.p-rev .vd-skip .ico{width:16px;height:16px}
.p-rev .vd[aria-pressed="true"] kbd{background:transparent;box-shadow:inset 0 0 0 1px currentColor;color:inherit}
.p-rev .add{margin-top:10px}
.p-rev .add summary{display:inline-flex;align-items:center;gap:6px;padding:3px 0;list-style:none;cursor:pointer;font:500 13px/18px var(--f-ui);color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:4px}
.p-rev .add summary::-webkit-details-marker{display:none}
.p-rev .add-f{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 10px;margin-top:10px}
.p-rev .fld span{display:block;margin-bottom:4px;font:500 12px/16px var(--f-ui);color:var(--muted)}
.p-rev .fld input,.p-rev .fld select{width:100%;height:36px;padding:0 10px;border-radius:var(--r-ctl);border:1px solid var(--ctl);background:transparent;color:var(--ink);font:400 14px/20px var(--f-ui)}
.p-rev .fld-w{grid-column:span 2}
.p-rev .add-a{grid-column:span 2;display:flex;align-items:flex-end;gap:6px}
.p-rev .keys{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font:400 12px/16px var(--f-ui);color:var(--muted)}
.p-rev .keys .k{white-space:nowrap}
.p-rev .keys kbd{margin:0 1px}
.p-book .pager{display:flex;justify-content:flex-end;margin-top:12px}
.p-book .alert{margin-top:16px}

/* ── «Мои материалы», подборка, первый вход: дополнения к макету ── */
.nv form.inline{display:inline}
.p-lib .only-kind{margin-top:10px;font-size:14px;color:var(--ink-2)}
.p-lib .more5,.p-start .more5{margin-top:36px}
.p-lib .more5>summary,.p-start .more5>summary{display:inline-block;cursor:pointer;list-style:none;font-size:14px}
.p-lib .more5>summary::-webkit-details-marker,.p-start .more5>summary::-webkit-details-marker{display:none}
.p-lib .new-series,.p-start .new-series{display:flex;gap:8px;max-width:520px;margin-top:14px}
.p-lib .new-series input,.p-start .new-series input{flex:1;min-width:0;height:36px;padding:0 12px;border-radius:var(--r-ctl);border:1px solid var(--ctl);background:transparent;color:var(--ink)}
.p-lib .ops5,.p-start .ops5{margin-top:20px}
.p-lib .ops5 .tbl,.p-start .ops5 .tbl{margin-top:8px;background:var(--panel);border-radius:var(--r-card)}
.p-lib .pager,.p-ser .pager{display:flex;justify-content:space-between;align-items:center;margin-top:12px}
.p-start .drop.over{border-color:var(--sig-ring);background:var(--sig-soft)}
.p-start .drop-note{min-height:18px;font:400 13px/18px var(--f-ui);color:var(--ink-2)}
.p-start .drop .upload-progress{max-width:560px;text-align:left}

/* ── главная: дополнения к макету ── */
.p-land .faq details{padding-bottom:18px}
.p-land .faq details:nth-child(3n+1){padding-left:0;border-left:0}
@media (min-width:641px){.p-land .faq details:nth-child(n+4){border-top:1px solid var(--line)}}
.p-land .try .slot{text-align:left;background:none}
.p-land .try .slot.filled{border-style:solid;border-color:var(--ok)}
.p-land .try .slot.over{border-color:var(--sig-ring);background:var(--sig-soft)}
.p-land .try .picked{display:block;margin-top:2px;font:500 12px/16px var(--f-ui);color:var(--ok);min-height:16px;overflow-wrap:anywhere}
.p-land .try .captcha{display:flex;align-items:center;gap:8px;margin-top:14px;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
.p-land .try .captcha input{width:5rem;height:36px;padding:0 10px;border-radius:var(--r-ctl);border:1px solid var(--ctl);background:transparent;color:var(--ink);font-size:16px;text-align:center}
.p-land .try .alert{margin-top:12px}
.nv:not([data-theme=dark]) .p-land .try{box-shadow:var(--shadow)}
@media (prefers-color-scheme: dark){.nv:not([data-theme=light]) .p-land .try{box-shadow:none}}

.p-lib .live-note,.p-ser .live-note{display:block;margin-top:2px;font:500 12px/16px var(--f-ui);color:var(--muted)}
.p-lib .live-note--waiting,.p-ser .live-note--waiting{color:var(--sig-t)}

.p-land .hero{text-align:left;flex-direction:initial;align-items:start}
.p-land .hero::before{display:none}
.p-land .hero .lead,.p-land .hero .more-l{text-wrap:pretty}

/* главная на узком экране: табло фактов переносит подписи, а не вылезает */
@media (max-width:640px){.p-land .facts{display:grid;width:100%}.p-land .facts .tv{white-space:normal;font-size:18px;line-height:24px}}
/* телефон: меню «⋯» — нижней панелью во всю ширину; плитки уже меню, и оно уходило за край */
@media (max-width:520px){
.nv details.mw[open]>.menu{position:fixed;left:12px;right:12px;bottom:12px;top:auto;width:auto;max-height:75vh;overflow:auto;z-index:40}
}

/* ── приёмка: дефекты, найденные тестами (2026-10-04) ── */
.p-lib .more5>summary,.p-start .more5>summary{display:inline-flex;align-items:center;min-height:32px}
/* «не ошибка» на дорожке — 3:1 и выше (серый --ctl давал 2.86:1) */
.p-book .mini .d-f,.p-book .mini .b-fp,.nv .dbar .d-f{background:var(--muted)}
@media (max-width:640px){
.p-book .tablo .tv .segm{width:auto;flex:1 1 60px;min-width:40px}
.p-book .ch-a .btn{white-space:normal;height:auto;min-height:36px;padding:6px 8px;line-height:18px;text-align:center}
.p-land .hero>div,.p-land .try{min-width:0}
.p-land .slot-a{white-space:normal}
}
@media (max-width:520px){.p-land .try{padding:16px}}

/* шапка книги при увеличении 200 %: действия переносятся, а не уходят за экран */
.p-book .bh-r1>*{min-width:0}
.p-book .bh-act{flex-wrap:wrap;min-width:0;justify-content:flex-end}
.p-book .bh-act .btn{max-width:100%}
.p-book .bh .tablo{flex-wrap:wrap;max-width:100%}
.p-book .tablo>div{min-width:0}
/* телефон: кнопки плиток глав — 44 px (правило переноса выше задавало 36) */
@media (max-width:520px){.p-book .ch-a .btn{min-height:44px}}
/* телефон: вкладки загрузки, «Новая подборка и история баланса», номер книги
   в меню строки, ссылка назад — цели 44 px (ревью 2026-10-05) */
@media (max-width:520px){
.nv .tabs .tab{min-height:44px}
.nv .more5>summary{display:inline-flex;align-items:center;min-height:44px}
.nv .position-form input{height:44px}
.nv .back5 a{display:inline-flex;align-items:center;min-height:44px}
}
/* приёмка 2026-10-05 (верстальщик, тестировщик) */
/* первый вход: шаги — строкой, как в макете D-start, без «таблеток» прежних стилей */
.p-start .steps li{padding:0;border-radius:0;background:none;font:500 14px/20px var(--f-ui);color:var(--ink-2)}
/* заголовки секций — шрифт интерфейса, как .h-sec макета (правило .nv h2 его перебивало) */
/* подборка: «Скачать» в форме — той же ширины, что кнопки строк */
.p-ser .r5-a form.inline .btn{min-width:136px}
/* первый вход: строка о минутах при нулевом балансе */
.p-start .zero-bal{margin:0 0 12px;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
/* книга, узкий телефон: подпись кнопки плитки не вылезает за рамку */
/* слово целиком: кнопки ряда переносятся на свою строку, а не рвут «Продол/жить» */
@media (max-width:360px){.p-book .ch-a{flex-wrap:wrap}.p-book .ch-a .btn{padding:6px;font-size:13px;white-space:normal}.p-book .ch-a>.btn{flex:1 0 auto;max-width:100%}}
/* телефон: цели нажатия ≥ 44 px — шапка гостя, пример-капча, вопросы, выбор в меню,
   поля файлов, крошки, подвал, кнопки плеера */
@media (max-width:520px){
.hd-g .acts .btn{min-height:44px}
.p-land .captcha input{min-height:44px}
.p-land .faq summary{min-height:44px}
.nv .menu select,.nv .mi-row select{height:44px}
.nv main input[type=file]{min-height:44px}
.nv .crumbs a{display:inline-flex;align-items:center;min-height:44px}
.nv .ft a{display:inline-flex;align-items:center;min-height:44px}
.nv main a.q.ch-why,.nv main a.q.parts-hist{display:inline-flex;align-items:center;min-height:44px}
.p-rev .deck-play .btn{min-width:44px}
}
/* главная: поля загрузки — текст 14/20 макета, а не прежние стили подписей */
.p-land label.slot{font:400 14px/20px var(--f-ui);color:var(--ink)}
/* новая книга: другие типы — тихой ссылкой «Не книга?» (макет) */
.nv .kind-more{margin:0 0 14px}
.nv .kind-more>summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;list-style:none}
.nv .kind-more>summary::-webkit-details-marker{display:none}
.nv .kind-more[open]>summary{margin-bottom:6px}
/* круг 3 приёмки: пустая строка выбранного файла не растит поле пробы; на узком
   экране «Скачать» в подборке — по содержимому, как остальные кнопки строки;
   заголовок страницы на 320–360 не рвётся посреди слова */
.p-land .try .picked:empty{display:none}
@media (max-width:520px){.p-ser .r5-a form.inline .btn{min-width:0}}
@media (max-width:360px){.nv .h-page{font-size:24px;line-height:30px}}
/* круг 3: остальные цели нажатия на телефоне — баланс и пункты шапки, кнопки
   плеера, одиночные ссылки, поля поиска и названия подборки */
@media (max-width:520px){
.acct .bal{min-height:44px;align-items:center}
.nav a{min-height:44px;display:inline-flex;align-items:center}
.p-rev .deck-play .btn{min-height:44px}
.nv .drop-q{display:inline-flex;align-items:center;min-height:44px}
.nv .search input,.nv .new-series input{min-height:44px}
}
/* архив вне подборки — тихой строкой-раскрывашкой, как строка архива подборки */
.p-lib .arch5-loose>summary{display:flex;align-items:center;gap:8px;min-height:44px;list-style:none;font:400 13px/18px var(--f-ui);color:var(--muted);cursor:pointer}
.p-lib .arch5-loose>summary::-webkit-details-marker{display:none}
.p-lib .arch5-loose[open]>summary .q{display:none}
/* главная: две отметки согласия над кнопкой пробы (оферта и ПДн — отдельно) */
.p-land .try .consents{display:grid;gap:4px;margin:4px 0 12px}
.p-land .try .consents .check{margin:0;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
.p-land .try .consents .check a{color:var(--sig-t);text-decoration:underline}
@media (max-width:520px){.p-land .try .consents .check{min-height:44px;align-items:center}}
/* книга: блок загрузки свёрнут под заголовком-раскрывашкой (макет D-book) */
.p-book .upload-box{padding-top:2.5rem}
.p-book .upload-sum{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;list-style:none}
.p-book .upload-sum::-webkit-details-marker{display:none}
.p-book .upload-sum::after{content:"";width:10px;height:10px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translateY(-3px);transition:transform var(--m-micro) var(--e-out)}
.p-book .upload-sum{margin-bottom:.8rem}
/* раскрытие блока (вид panel): едет только пара форм, вкладки и подсказки
   над ними лишь проявляются — ничто вне форм не сдвигается */
.p-book .upload-box[data-motion]>:not(summary):not(.upload-panes){transform:none;animation-name:nv-fade-in}
.p-book .upload-box[open]>.upload-sum::after{transform:rotate(-135deg) translateY(-3px)}
@media (prefers-reduced-motion:reduce){.p-book .upload-sum::after{transition:none}}
.p-land .try .upload-note{line-height:1.45}
/* блок загрузки внизу страницы свёрнутым не показывается (он дублировал
   плитку «+ Добавить главы»): его раскрывают плитка, кнопка шапки и #upload
   общей рамкой (вид panel); раскрытый — с заголовком, чтобы свернуть */
.p-book .upload-box:not([open]){display:none}

/* ── макет 3 (2026-10-07, docs/audit/2026-10-07-book-stacks/maket-3.html): страница
   книги и «Мои материалы» — лента, две стопки на постоянных местах, окно
   «Показать все» под стопками, карточка главы или книги под отрезком.
   Карточка — вид popover общей рамки, окно — вид panel (surfaces.js); движение —
   только токенами --m-*/--e-*, только transform/opacity ── */
.p-book #main,.p-lib #main{position:relative}
.p-book,.p-lib{--seg-done:color-mix(in srgb,var(--ok) 32%,var(--panel));--err-bar:color-mix(in srgb,var(--err) 72%,var(--panel));--stripe:var(--line-2);--edge:var(--sig-g)}
.p-book .panel,.p-lib .panel{border-radius:var(--r-panel);background:var(--panel);box-shadow:0 0 0 1px var(--line)}
/* шапка книги: медальон 72, название, мета; справа действия */
.p-book .bh{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;margin-top:10px}
.p-book .bh-tt{min-width:0}
.p-book .bh .h-page{font:700 26px/32px var(--f-disp);letter-spacing:-.01em;text-wrap:balance}
.p-book .bh-meta{display:block;margin-top:4px;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
.p-book .bh-meta .mg{white-space:nowrap}
@media (max-width:520px){.p-book .bh-meta{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center}.p-book .bh-meta .ms{display:none}.p-book .bh-meta .mg~.mg{grid-column:2}}
@media (max-width:360px){.p-book .bh-meta .mg{white-space:normal}}
.p-book .bh-act{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;min-width:0}
.p-book .bh-act .btn{max-width:100%}
.p-book .bh-act .sub{font:400 13px/19px var(--f-mono);color:var(--muted)}
.p-book .bh-act .btn-main .sub{color:inherit}
.p-book .bh-act .btn-nx{font-weight:500}
.p-book .menu .btn{flex:none}
/* чтец книги (2026-10-08): чип под мета-строкой шапки и окошко выбора — вид
   popover общей рамки; на компьютере окошко растёт от чипа, на телефоне —
   во всю ширину шапки сразу под чипом. Движение — токенами, transform/opacity */
.p-book .bh{position:relative}
.p-book .rd{position:relative;margin-top:6px;width:fit-content;max-width:100%}
.p-book .rd>summary{list-style:none}
.p-book .rd>summary::-webkit-details-marker{display:none}
.p-book .rd-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:32px;padding:0 10px 0 8px;border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--line-2);background:var(--panel);font:400 13px/19px var(--f-ui);color:var(--ink-2);cursor:pointer;white-space:nowrap}
.p-book .rd-chip .ico{width:16px;height:16px;flex:none;color:var(--muted)}
.p-book .rd-chip .rd-n{min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:var(--ink)}
.p-book .rd-chip.rd-none .rd-go{color:var(--sig-t);font-weight:500}
.p-book .rd-chip:hover{box-shadow:inset 0 0 0 1px var(--ctl)}
.p-book .rd-chip:hover .rd-ed{color:var(--ink-2)}
.p-book .rd[open]>.rd-chip{background:var(--sel);color:var(--ink)}
.p-book .rd-pop{position:absolute;left:0;top:calc(100% + 8px);z-index:30;display:grid;gap:12px;width:360px;padding:14px 14px 12px;border-radius:var(--r-panel);background:var(--raised);box-shadow:var(--shadow),0 0 0 1px var(--line-2);transform-origin:top left}
.p-book .rd-pop[data-motion=pre],.p-book .rd-pop[data-motion=out]{opacity:0;transform:translateY(-4px) scale(.98)}
.p-book .rd-pop[data-motion=in]{transition:opacity var(--m-fast) var(--e-out),transform var(--m-fast) var(--e-out)}
.p-book .rd-pop[data-motion=out]{transition:opacity var(--m-micro) var(--e-in),transform var(--m-micro) var(--e-in)}
.p-book .rd-h{display:flex;align-items:center;gap:8px}
.p-book .rd-t{flex:1;margin:0;font:600 15px/22px var(--f-disp);color:var(--ink)}
.p-book .rd-x{display:inline-grid;place-items:center;width:32px;height:32px;margin:-6px -6px -6px 0;padding:0;border:0;border-radius:var(--r-ctl);background:none;color:var(--muted);cursor:pointer}
.p-book .rd-x:hover{background:var(--sel);color:var(--ink)}
.p-book .rd-note{margin:-4px 0 0;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
.p-book .rd-form{display:grid;gap:6px;margin:0}
.p-book .rd-form label{font:500 13px/19px var(--f-ui);color:var(--ink)}
.p-book .rd-row{display:flex;gap:8px;min-width:0}
.p-book .rd-row input{flex:1 1 auto;min-width:0;height:40px;margin:0;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-ctl);background:var(--panel);font:400 14px/20px var(--f-ui);color:var(--ink)}
.p-book .rd-row .btn{flex:none;height:40px}
.p-book .rd-pick{display:grid;gap:6px;margin:0}
.p-book .rd-l{margin:0;font:400 12px/16px var(--f-ui);color:var(--muted)}
.p-book .rd-chips{display:flex;flex-wrap:wrap;gap:6px}
.p-book .rd-c{max-width:100%;height:32px;padding:0 12px;border:0;border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--line-2);background:var(--panel);font:500 13px/19px var(--f-ui);color:var(--ink);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.p-book .rd-c:hover{background:var(--sel)}
.p-book .rd-c[aria-pressed=true]{background:var(--sig-soft);box-shadow:inset 0 0 0 1px var(--sig-g);color:var(--ink)}
.p-book .rd-more{font:400 12px/16px var(--f-ui);color:var(--muted)}
.p-book .rd-off{margin:0;padding-top:10px;border-top:1px solid var(--line)}
.p-book .rd-off button{padding:2px 0;border:0;background:none;font:500 13px/19px var(--f-ui);cursor:pointer}
@media (max-width:520px){
.p-book .rd{position:static}
.p-book .rd-chip{min-height:44px}
.p-book .rd-pop{left:0;right:0;top:auto;width:auto;margin-top:8px}
.p-book .rd-row input,.p-book .rd-row .btn,.p-book .rd-x{height:44px}
.p-book .rd-x{width:44px}
.p-book .rd-c{height:44px}
}
/* лента всей книги */
:is(.p-book,.p-lib) .lane-book{display:grid;gap:10px;margin-top:16px;padding:12px 16px}
:is(.p-book,.p-lib) .lane-book>*,:is(.p-book,.p-lib) .cols>*{min-width:0}
:is(.p-book,.p-lib) .book-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px}
.nv .lane-t,.nv .cols-t{font:600 13px/19px var(--f-disp)}
:is(.p-book,.p-lib) .kv{display:inline-flex;align-items:baseline;gap:5px;font:400 13px/19px var(--f-ui);color:var(--ink-2);white-space:nowrap}
:is(.p-book,.p-lib) .kv b{font:600 15px/20px var(--f-mono);color:var(--ink)}
:is(.p-book,.p-lib) .kv .of{font:400 13px/19px var(--f-mono);color:var(--muted)}
:is(.p-book,.p-lib) .kv.err b{color:var(--err)}
:is(.p-book,.p-lib) .book-review-status{display:flex;align-items:flex-start;gap:12px;min-width:0;margin-top:12px;padding:12px 14px;border-radius:var(--r-panel);background:var(--sel);box-shadow:inset 3px 0 0 var(--ctl);font:400 14px/20px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .book-review-status.is-blocked{background:var(--err-soft);box-shadow:inset 3px 0 0 var(--err)}
:is(.p-book,.p-lib) .book-review-status.is-ready{background:var(--ok-soft);box-shadow:inset 3px 0 0 var(--ok)}
:is(.p-book,.p-lib) .book-review-mark{flex:none;width:12px;height:12px;margin-top:4px;border-radius:3px;background:var(--ctl)}
:is(.p-book,.p-lib) .is-blocked .book-review-mark{background:var(--err)}
:is(.p-book,.p-lib) .is-ready .book-review-mark{background:var(--ok)}
:is(.p-book,.p-lib) .book-review-copy{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}
:is(.p-book,.p-lib) .book-review-copy strong{font-weight:600;color:var(--ink)}
:is(.p-book,.p-lib) .book-review-copy span{overflow-wrap:anywhere}
:is(.p-book,.p-lib) .book-review-status .book-live{flex:none}
:is(.p-book,.p-lib) .findn,:is(.p-book,.p-lib) .findt{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .findn input{width:84px;height:36px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-ctl);background:var(--panel);font-family:var(--f-mono);color:var(--ink)}
:is(.p-book,.p-lib) .findt input{width:260px;height:36px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-ctl);background:var(--panel);color:var(--ink)}
:is(.p-book,.p-lib) .strip{display:flex;gap:2px;height:40px}
:is(.p-book,.p-lib) .sg{position:relative;flex:1 1 0;min-width:3px;height:100%;padding:0;border-radius:3px;background:var(--seg-done);overflow:hidden;cursor:pointer}
:is(.p-book,.p-lib) .sg i{position:absolute;left:0;right:0;bottom:0;background:var(--err-bar)}
:is(.p-book,.p-lib) .sg.s-todo{background:var(--sig-soft);box-shadow:inset 0 3px 0 var(--edge)}
:is(.p-book,.p-lib) .sg.s-run{background:repeating-linear-gradient(135deg,var(--sunk) 0 4px,var(--stripe) 4px 7px)}
:is(.p-book,.p-lib) .sg.s-hold{background:repeating-linear-gradient(135deg,var(--sunk) 0 4px,var(--panel) 4px 7px);box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .sg.s-bad{background:var(--err-soft);box-shadow:inset 0 3px 0 var(--err)}
:is(.p-book,.p-lib) .sg.s-off{background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .sg.s-gone{background:var(--sunk);box-shadow:inset 0 0 0 1px var(--line)}
:is(.p-book,.p-lib) .sg.nextc{outline:2px dashed var(--ink-2);outline-offset:1px;z-index:1}
:is(.p-book,.p-lib) .sg.picked,:is(.p-book,.p-lib) .bs.picked{outline:2px solid var(--ink);outline-offset:1px;z-index:2}
:is(.p-book,.p-lib) .sg:focus-visible,:is(.p-book,.p-lib) .bs:focus-visible{outline:2px solid var(--sig-ring);outline-offset:1px;z-index:3}
.nv .lane-axis{height:14px;margin-top:-4px;font:400 12px/14px var(--f-mono)}
.nv .lane-axis span{transform:none}
:is(.p-book,.p-lib) .book-f{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 20px;min-height:22px}
/* строка подробностей держит место двух строк с первого кадра: наведение,
   выбор и поиск меняют её текст, а стопки под лентой не прыгают (E6) */
:is(.p-book,.p-lib) .readout{flex:1 1 18rem;min-width:0;height:38px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .legend{display:flex;flex-wrap:wrap;gap:4px 14px;font:400 12px/17px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .lg{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
:is(.p-book,.p-lib) .sw{display:inline-block;flex:none;width:12px;height:12px;border-radius:3px}
:is(.p-book,.p-lib) .sw-ok{background:var(--seg-done)}
:is(.p-book,.p-lib) .sw-todo{background:var(--sig-soft);box-shadow:inset 0 3px 0 var(--edge)}
:is(.p-book,.p-lib) .sw-run{background:repeating-linear-gradient(135deg,var(--sunk) 0 3px,var(--stripe) 3px 5px);box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .sw-hold{background:repeating-linear-gradient(135deg,var(--sunk) 0 3px,var(--panel) 3px 5px);box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .sw-bad{background:var(--err-soft);box-shadow:inset 0 3px 0 var(--err)}
:is(.p-book,.p-lib) .sw-off{box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .sw-gone,:is(.p-book,.p-lib) .sw-arch{background:var(--sunk);box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .sw-soon{background:var(--seg-done);box-shadow:inset 0 -3px 0 var(--edge)}
:is(.p-book,.p-lib) .sw-err{background:var(--err-bar)}
:is(.p-book,.p-lib) .sw-next{outline:2px dashed var(--ink-2);outline-offset:-2px}
/* две стопки на постоянных местах */
:is(.p-book,.p-lib) .stacks{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px;margin-top:14px;align-items:stretch}
:is(.p-book,.p-lib) .stack{display:flex;flex-direction:column;gap:12px;min-width:0;padding:14px 16px 16px}
:is(.p-book,.p-lib) .stk-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;min-height:36px}
.nv .stk-t,.nv .dr-t{font:600 15px/20px var(--f-disp)}
:is(.p-book,.p-lib) .cnt{padding:0 8px;border-radius:var(--r-pill);background:var(--sel);font:600 12px/22px var(--f-mono);color:var(--ink-2)}
:is(.p-book,.p-lib) .raw .cnt{background:var(--sig-soft);color:var(--sig-t)}
:is(.p-book,.p-lib) .done .cnt{background:var(--ok-soft);color:var(--ok-t)}
:is(.p-book,.p-lib) .stk-sub{font:400 13px/19px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .tog{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:var(--r-ctl);background:var(--panel);box-shadow:inset 0 0 0 1px var(--line-2);font:500 13px/19px var(--f-ui);color:var(--ink);white-space:nowrap;cursor:pointer}
:is(.p-book,.p-lib) .tog:hover{background:var(--sel)}
:is(.p-book,.p-lib) .tog[aria-expanded=true]{background:var(--ink);color:var(--panel);box-shadow:inset 0 0 0 1px var(--ink)}
:is(.p-book,.p-lib) .tog .ico{transition:transform var(--m-base) var(--e-out)}
:is(.p-book,.p-lib) .tog[aria-expanded=true] .ico{transform:rotate(180deg)}
:is(.p-book,.p-lib) .pw{position:relative}
:is(.p-book,.p-lib) .pw::before,:is(.p-book,.p-lib) .pw::after{content:"";position:absolute;inset:0;display:none;border-radius:var(--r-card);background:var(--panel);box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .pw[data-edges="1"]{margin-bottom:6px}
:is(.p-book,.p-lib) .pw[data-edges="2"]{margin-bottom:12px}
:is(.p-book,.p-lib) .pw[data-edges="1"]::after,:is(.p-book,.p-lib) .pw[data-edges="2"]::after{display:block;transform:translateY(6px) scaleX(.97)}
:is(.p-book,.p-lib) .pw[data-edges="2"]::before{display:block;transform:translateY(12px) scaleX(.94);background:var(--sel)}
:is(.p-book,.p-lib) .pile{position:relative;z-index:1;display:block;padding:14px;border-radius:var(--r-card);background:var(--panel);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink)}
:is(.p-book,.p-lib) a.pile:hover{box-shadow:inset 0 0 0 1px var(--edge)}
:is(.p-book,.p-lib) .topc{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px 16px}
:is(.p-book,.p-lib) .topc .bn{grid-row:span 2;min-width:52px;font:700 38px/1 var(--f-disp)}
:is(.p-book,.p-lib) .topc .l1{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
:is(.p-book,.p-lib) .topc .l2,:is(.p-book,.p-lib) .topm .l2{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:10px;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .topc .go,:is(.p-book,.p-lib) .topm .go{grid-column:3;grid-row:1/span 2;font-weight:600;color:var(--sig-t);white-space:nowrap}
:is(.p-book,.p-lib) .topm{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px 14px}
:is(.p-book,.p-lib) .topm>.md{grid-row:span 2}
:is(.p-book,.p-lib) .topm .tt{min-width:0;font:600 16px/22px var(--f-disp);overflow-wrap:anywhere}
:is(.p-book,.p-lib) .dur{font:400 12px/17px var(--f-mono);color:var(--muted);white-space:nowrap}
:is(.p-book,.p-lib) .errn{display:inline-flex;align-items:baseline;gap:6px;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .errn b{font:700 18px/1 var(--f-disp);color:var(--err)}
:is(.p-book,.p-lib) .errn b.zero{color:var(--ok-t)}
:is(.p-book,.p-lib) .prog{display:block;flex:none;width:120px;height:4px;border-radius:2px;background:var(--line);overflow:hidden}
:is(.p-book,.p-lib) .prog i{display:block;height:100%;background:var(--ok)}
:is(.p-book,.p-lib) .nxl{display:grid;gap:4px}
:is(.p-book,.p-lib) .lbl{margin-bottom:2px;font:400 12px/17px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .nx,:is(.p-book,.p-lib) .mx{display:grid;align-items:center;gap:10px;width:100%;min-height:38px;padding:0 10px;border-radius:var(--r-ctl);background:var(--sel);color:var(--ink);text-align:left;cursor:pointer}
:is(.p-book,.p-lib) .nx{grid-template-columns:36px 76px minmax(0,1fr) auto}
:is(.p-book,.p-lib) .mx{grid-template-columns:12px minmax(0,1fr) auto auto}
:is(.p-book,.p-lib) .nx:hover,:is(.p-book,.p-lib) .mx:hover{box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .nx-n{font:600 15px/20px var(--f-disp)}
:is(.p-book,.p-lib) .nx-more .nx-n{color:var(--muted)}
:is(.p-book,.p-lib) .nx-s,:is(.p-book,.p-lib) .mx-s{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .mx-s.w{color:var(--sig-t)}
:is(.p-book,.p-lib) .mx-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
:is(.p-book,.p-lib) .mx-more .mx-t{font-weight:400;color:var(--muted)}
:is(.p-book,.p-lib) .nx-go{color:var(--muted)}
:is(.p-book,.p-lib) .proc-note{display:flex;align-items:flex-start;gap:8px;font:400 13px/19px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .proc-note .sw{margin-top:3px}
:is(.p-book,.p-lib) .stack .attn,:is(.p-book,.p-lib) .soonbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:8px 10px 8px 12px;border-radius:var(--r-ctl);font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .stack .attn{background:var(--err-soft);box-shadow:inset 3px 0 0 var(--err)}
:is(.p-book,.p-lib) .soonbar{background:var(--sig-soft);box-shadow:inset 3px 0 0 var(--edge)}
:is(.p-book,.p-lib) .stack .attn b,:is(.p-book,.p-lib) .soonbar b{color:var(--ink)}
:is(.p-book,.p-lib) .stack .attn>span,:is(.p-book,.p-lib) .soonbar>span{flex:1 1 200px;min-width:0}
:is(.p-book,.p-lib) .stack .attn .btn,:is(.p-book,.p-lib) .soonbar .btn{margin-left:auto;height:32px;padding:0 12px;font-size:13px}
:is(.p-book,.p-lib) .attn-more{font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .dsum{display:flex;align-items:center;gap:12px}
:is(.p-book,.p-lib) .dsum .big{font:700 32px/1 var(--f-disp);color:var(--err)}
:is(.p-book,.p-lib) .dsum .t1{display:block;font-weight:600}
:is(.p-book,.p-lib) .dsum .t2{display:block;font:400 13px/19px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .facts{display:grid;gap:8px}
:is(.p-book,.p-lib) .fact{display:grid;grid-template-columns:140px minmax(0,1fr);align-items:center;gap:6px 10px;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .fk{color:var(--muted)}
:is(.p-book,.p-lib) .facts .chips{gap:6px;align-items:center}
:is(.p-book,.p-lib) .facts .chip,:is(.p-book,.p-lib) .quiet .chip{height:32px;padding:0 10px;font:500 13px/19px var(--f-ui);color:var(--ink);max-width:100%}
:is(.p-book,.p-lib) .facts .chip{overflow:hidden;text-overflow:ellipsis}
:is(.p-book,.p-lib) .facts .chip b{font:600 12px/17px var(--f-mono);color:var(--err)}
:is(.p-book,.p-lib) .facts .chip b.zero{color:var(--ok-t)}
/* места без решения у сверенной главы — тихо, не цветом ошибки (правило 07.10.2026) */
:is(.p-book,.p-lib) a.chip{text-decoration:none}
:is(.p-book,.p-lib) .facts .chip.open b{color:var(--sig-t)}
/* маркер «есть места без решения»: янтарная точка — на ленте, плитке, клетке и в легенде */
:is(.p-book,.p-lib) .om{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--sig-g);flex:none}
:is(.p-book,.p-lib) .t-s.t-open{display:inline-flex;align-items:center;gap:6px;color:var(--sig-t);font-weight:600}
:is(.p-book,.p-lib) .tile.has-open{box-shadow:inset 3px 0 0 var(--sig-g),inset 0 0 0 1px var(--line)}
:is(.p-book,.p-lib) .sg.op::after{content:"";position:absolute;top:3px;left:50%;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:var(--sig-g);box-shadow:0 0 0 2px var(--panel)}
:is(.p-book,.p-lib) .t-cell{position:relative}
:is(.p-book,.p-lib) .t-cell .om{position:absolute;left:6px;top:6px}
:is(.p-book,.p-lib) .chip.more{color:var(--muted)}
:is(.p-book,.p-lib) .chip.picked{outline:2px solid var(--ink);outline-offset:1px}
:is(.p-book,.p-lib) .quiet{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font:400 13px/19px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .quiet .chip{margin-left:auto}
:is(.p-book,.p-lib) .calm{flex:1;display:grid;place-content:center;justify-items:center;gap:10px;padding:18px 12px;border:1px dashed var(--line-2);border-radius:var(--r-card);text-align:center;font:400 13px/19px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .calm strong{font:600 14px/20px var(--f-ui);color:var(--ink)}
/* окно «Показать все» под стопками — одно за раз */
:is(.p-book,.p-lib) .drawer{display:grid;gap:12px;margin-top:14px;padding:14px 16px 16px;scroll-margin-top:12px}
.nv .drawer{box-shadow:0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .drawer:not([data-state]){display:none}
:is(.p-book,.p-lib) .dr-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.nv .radio{display:flex;align-items:center;gap:14px;margin:0 0 0 auto;padding:0;border:0;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .radio legend{float:left;padding:0;color:var(--muted)}
:is(.p-book,.p-lib) .radio label{display:inline-flex;align-items:center;gap:6px;min-height:36px;cursor:pointer}
:is(.p-book,.p-lib) .radio input{width:16px;height:16px;margin:0;accent-color:var(--sig-g)}
:is(.p-book,.p-lib) .x{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:var(--r-ctl);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink-2);cursor:pointer;list-style:none}
:is(.p-book,.p-lib) .x::-webkit-details-marker{display:none}
:is(.p-book,.p-lib) .x:hover{background:var(--sel);color:var(--ink)}
:is(.p-book,.p-lib) .dr-note{font:400 12px/17px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .v-n,:is(.p-book,.p-lib) .drawer:not([data-view=compact]) .v-c{display:none}
:is(.p-book,.p-lib) .grp{display:grid;gap:8px}
:is(.p-book,.p-lib) .grp-l{font:400 12px/17px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .drawer .grid,:is(.p-book,.p-lib) .hist .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:8px}
:is(.p-book,.p-lib) .drawer[data-view=compact] .grid{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:5px}
:is(.p-book,.p-lib) .tile{position:relative;min-width:0;border-radius:var(--r-card);background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}
:is(.p-book,.p-lib) .t-main{display:grid;gap:6px;width:100%;padding:10px 12px 11px;border-radius:var(--r-card);color:var(--ink);text-align:left}
:is(.p-book,.p-lib) .t-main:hover{background:var(--sel)}
:is(.p-book,.p-lib) .t-top{display:flex;align-items:baseline;justify-content:space-between;gap:6px;padding-right:26px}
:is(.p-book,.p-lib) .t-n{font:700 19px/1 var(--f-disp)}
:is(.p-book,.p-lib) .t-e{display:flex;align-items:baseline;gap:6px;font:400 12px/17px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .t-e b{font:700 19px/1 var(--f-disp);color:var(--err)}
:is(.p-book,.p-lib) .t-e b.zero{color:var(--ok-t)}
:is(.p-book,.p-lib) .t-s{display:flex;align-items:center;gap:8px;overflow:hidden;white-space:nowrap;font:400 12px/17px var(--f-ui);color:var(--sig-t)}
:is(.p-book,.p-lib) .t-s .prog{flex:1 1 auto;width:auto;min-width:24px}
:is(.p-book,.p-lib) .tile.st-todo{box-shadow:inset 0 0 0 1px var(--edge)}
:is(.p-book,.p-lib) .tile.st-bad{box-shadow:inset 0 0 0 1px var(--err)}
:is(.p-book,.p-lib) .tile.st-run{background:repeating-linear-gradient(135deg,var(--panel) 0 6px,var(--sel) 6px 10px)}
:is(.p-book,.p-lib) .tile.st-hold{background:repeating-linear-gradient(135deg,var(--panel) 0 6px,var(--sel) 6px 10px);box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .tile.st-run .t-n,:is(.p-book,.p-lib) .tile.st-run .t-e,:is(.p-book,.p-lib) .tile.st-gone .t-n,:is(.p-book,.p-lib) .tile.st-gone .t-e{color:var(--muted)}
:is(.p-book,.p-lib) .t-more{position:absolute;right:3px;top:3px;display:grid;place-items:center;width:32px;height:32px;border-radius:6px;color:var(--muted)}
:is(.p-book,.p-lib) .t-more:hover{background:var(--sunk);color:var(--ink)}
:is(.p-book,.p-lib) .t-cell{display:none}
:is(.p-book,.p-lib) .drawer[data-view=compact] .tile .t-main,:is(.p-book,.p-lib) .drawer[data-view=compact] .tile .t-more{display:none}
:is(.p-book,.p-lib) .drawer[data-view=compact] .t-cell{display:grid;align-content:center;justify-items:center;gap:4px;width:100%;height:50px;border-radius:var(--r-ctl);color:var(--ink)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .tile{border-radius:var(--r-ctl)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .tile.st-todo{background:var(--sig-soft)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .tile.has-open{box-shadow:inset 0 0 0 2px var(--sig-g);background:color-mix(in srgb,var(--sig-soft) 55%,var(--panel))}
:is(.p-book,.p-lib) .t-cell .cn{font:600 15px/1 var(--f-disp)}
:is(.p-book,.p-lib) .t-cell .ce{font:600 12px/1 var(--f-mono);color:var(--err)}
:is(.p-book,.p-lib) .t-cell .ce.zero{color:var(--ok-t)}
:is(.p-book,.p-lib) .tile.st-run .t-cell .ce,:is(.p-book,.p-lib) .tile.st-run .t-cell .cn{color:var(--muted)}
:is(.p-book,.p-lib) .tile.picked,:is(.p-book,.p-lib) .mt.picked{outline:2px solid var(--ink);outline-offset:1px}
:is(.p-book,.p-lib) .hist{margin-top:16px;padding:14px 16px 16px;display:grid;gap:12px}
:is(.p-book,.p-lib) .parts-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 18px}
:is(.p-book,.p-lib) .parts-hist{margin-left:auto;font-size:13px}
/* карточка главы или книги: всплывает под отрезком, стрелкой на него */
:is(.p-book,.p-lib) .cc,:is(.p-book,.p-lib) .bcard{position:absolute;z-index:30;display:grid;gap:10px;width:330px;max-width:calc(100% - 16px);padding:14px 14px 12px;border-radius:var(--r-panel);background:var(--raised);box-shadow:var(--shadow),0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .cc:not([data-state]),:is(.p-book,.p-lib) .bcard:not([data-state]){display:none}
:is(.p-book,.p-lib) .cc::before,:is(.p-book,.p-lib) .bcard::before{content:"";position:absolute;top:-7px;left:var(--ax,50%);width:12px;height:12px;background:var(--raised);border-left:1px solid var(--line-2);border-top:1px solid var(--line-2);transform:translateX(-50%) rotate(45deg)}
:is(.p-book,.p-lib) .cc.up::before,:is(.p-book,.p-lib) .bcard.up::before{top:auto;bottom:-7px;transform:translateX(-50%) rotate(225deg)}
:is(.p-book,.p-lib) .cc[data-motion=pre],:is(.p-book,.p-lib) .cc[data-motion=out],:is(.p-book,.p-lib) .bcard[data-motion=pre],:is(.p-book,.p-lib) .bcard[data-motion=out]{opacity:0;transform:translateY(-4px) scale(.98)}
:is(.p-book,.p-lib) .cc[data-motion=in],:is(.p-book,.p-lib) .bcard[data-motion=in]{transition:opacity var(--m-fast) var(--e-out),transform var(--m-fast) var(--e-out)}
:is(.p-book,.p-lib) .cc[data-motion=out],:is(.p-book,.p-lib) .bcard[data-motion=out]{transition:opacity var(--m-micro) var(--e-in),transform var(--m-micro) var(--e-in)}
:is(.p-book,.p-lib) .c-h{display:flex;align-items:center;gap:8px;min-width:0}
.nv .c-t{font:700 20px/24px var(--f-disp)}
:is(.p-book,.p-lib) .bcard .c5-t{min-width:0;font:600 17px/22px var(--f-disp)}
:is(.p-book,.p-lib) .bcard .c5-link{color:var(--ink)}
:is(.p-book,.p-lib) .bcard .c5-link:hover{text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:4px}
:is(.p-book,.p-lib) .c-nav{margin-left:auto;display:flex;gap:4px;flex:none}
:is(.p-book,.p-lib) .c-nav button{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--r-ctl);box-shadow:inset 0 0 0 1px var(--line-2);color:var(--ink-2)}
:is(.p-book,.p-lib) .c-nav button:hover:not(:disabled){background:var(--sel);color:var(--ink)}
:is(.p-book,.p-lib) .c-nav button:disabled{opacity:.4;cursor:default}
:is(.p-book,.p-lib) .c-b{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
:is(.p-book,.p-lib) .c-b .errn b{font-size:22px}
:is(.p-book,.p-lib) .c-p{display:flex;align-items:center;gap:10px;font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .c-p .prog{flex:1;width:auto}
:is(.p-book,.p-lib) .c-p b{font-family:var(--f-mono);color:var(--ink)}
:is(.p-book,.p-lib) .cc .ch-t{margin-top:-6px;font:400 13px/19px var(--f-ui);color:var(--ink-2);overflow-wrap:anywhere}
:is(.p-book,.p-lib) .cc .st-pill{font:500 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .cc .ch-note,:is(.p-book,.p-lib) .cc .ch-rd,:is(.p-book,.p-lib) .cc .ch-x,:is(.p-book,.p-lib) .cc .eta-note,:is(.p-book,.p-lib) .cc .c-wait,:is(.p-book,.p-lib) .c-sub,:is(.p-book,.p-lib) .c5-s,:is(.p-book,.p-lib) .c-facts,:is(.p-book,.p-lib) .c-bad,:is(.p-book,.p-lib) .c-warn{font:400 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .cc .ch-note b.u{font-weight:600}
:is(.p-book,.p-lib) .cc .ch-live .progress{height:3px;border-radius:2px;background:var(--line);overflow:hidden}
:is(.p-book,.p-lib) .cc .ch-live .progress i{display:block;width:33%;height:100%;background:var(--lamp)}
:is(.p-book,.p-lib) .cc .ch-a .btn,:is(.p-book,.p-lib) .bcard .c5-a .btn,:is(.p-book,.p-lib) .bcard .c5-a form{width:100%}
:is(.p-book,.p-lib) .c-sub{margin-top:-4px;color:var(--muted)}
:is(.p-book,.p-lib) .st-tag{display:inline-block;padding:2px 8px;border-radius:var(--r-pill);font:600 12px/17px var(--f-ui);white-space:nowrap}
:is(.p-book,.p-lib) .st-tag.done{background:var(--ok-soft);color:var(--ok-t)}
:is(.p-book,.p-lib) .st-tag.raw{background:var(--sig-soft);color:var(--sig-t)}
:is(.p-book,.p-lib) .st-tag.bad{background:var(--err-soft);color:var(--err)}
:is(.p-book,.p-lib) .st-tag.proc{background:var(--sel);color:var(--ink-2)}
:is(.p-book,.p-lib) .c-facts{display:flex;flex-wrap:wrap;gap:4px 14px}
:is(.p-book,.p-lib) .c-facts b{font-family:var(--f-mono);color:var(--ink)}
:is(.p-book,.p-lib) .c-facts .e b{color:var(--err)}
:is(.p-book,.p-lib) .c-bad,:is(.p-book,.p-lib) .c-warn{padding:6px 10px;border-radius:var(--r-ctl);background:var(--err-soft)}
:is(.p-book,.p-lib) .c-warn{background:var(--sig-soft)}
:is(.p-book,.p-lib) .c-warn.c-arch{background:var(--sel)}
:is(.p-book,.p-lib) .c5-s .s5{display:inline-flex;align-items:center;gap:8px}
:is(.p-book,.p-lib) .c5-s .s5 b{font:500 13px/19px var(--f-mono);color:var(--ink)}
:is(.p-book,.p-lib) .c5-s .s5.soon{color:var(--sig-t);font-weight:600}
:is(.p-book,.p-lib) .c5-s .s5.soon .ico{width:14px;height:14px}
:is(.p-book,.p-lib) .c5-s .review-reason{display:block;overflow-wrap:anywhere;color:var(--ink-2)}
:is(.p-book,.p-lib) .c5-s .s5.muted{color:var(--muted)}
:is(.p-book,.p-lib) .c-more{display:flex;flex-wrap:wrap;align-items:center;gap:2px 4px;margin:0 -6px}
:is(.p-book,.p-lib) .c-more>a,:is(.p-book,.p-lib) .c-more>form>button,:is(.p-book,.p-lib) .c-more>details>summary{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 8px;border-radius:6px;font:500 13px/19px var(--f-ui);color:var(--ink-2);cursor:pointer;list-style:none}
:is(.p-book,.p-lib) .c-more>details>summary::-webkit-details-marker{display:none}
:is(.p-book,.p-lib) .c-more>a:hover,:is(.p-book,.p-lib) .c-more>form>button:hover,:is(.p-book,.p-lib) .c-more>details>summary:hover{background:var(--sel);color:var(--ink)}
:is(.p-book,.p-lib) .c-more>form{display:contents}
:is(.p-book,.p-lib) .c-more .ico{width:14px;height:14px}
:is(.p-book,.p-lib) .c-more .mi-del{margin-left:auto;color:var(--err)}
:is(.p-book,.p-lib) .c-more>details{display:contents}
:is(.p-book,.p-lib) .c-more .round-form,:is(.p-book,.p-lib) .c-more .pos-form{position:static;display:flex;flex-direction:column;gap:8px;flex-basis:100%;min-width:0;margin:6px;padding:10px;border:0;border-radius:var(--r-ctl);background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}
:is(.p-book,.p-lib) .c-more .round-form label,:is(.p-book,.p-lib) .c-more .pos-form label{display:flex;flex-direction:column;gap:4px;font:500 13px/19px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .c-more .round-form input[type=file]{font-size:12px;max-width:100%}
:is(.p-book,.p-lib) .c-more .pos-form .mi-row input{width:6rem;height:36px;padding:0 10px;border-radius:var(--r-ctl);border:1px solid var(--line-2);background:var(--panel);color:var(--ink)}
:is(.p-book,.p-lib) .c-more .pos-form[data-motion]{transition:opacity var(--m-fast) var(--e-out),transform var(--m-fast) var(--e-out)}
:is(.p-book,.p-lib) .c-more .pos-form[data-motion=pre],:is(.p-book,.p-lib) .c-more .pos-form[data-motion=out]{opacity:0;transform:translateY(-4px)}
/* «Мои материалы»: шапка, ленты подборок */
.p-lib .lb{padding-top:16px}
:is(.p-book,.p-lib) .lhead{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}
:is(.p-book,.p-lib) .lhead .ttl{margin-right:auto;min-width:0}
:is(.p-book,.p-lib) .lmeta{margin-top:4px;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .lhead .acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
:is(.p-book,.p-lib) .lhead .acts .btn{max-width:100%}
:is(.p-book,.p-lib) .lhead .btn-nx{font-weight:500}
:is(.p-book,.p-lib) .cols{display:grid;gap:8px;margin-top:16px;padding:12px 16px}
:is(.p-book,.p-lib) .cols-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:2px}
:is(.p-book,.p-lib) .cols-h .hint{font:400 13px/19px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .lanes{display:grid;gap:6px}
:is(.p-book,.p-lib) .lane{display:grid;grid-template-columns:212px minmax(0,1fr);align-items:center;gap:4px 12px}
:is(.p-book,.p-lib) .ln-l{display:flex;align-items:center;gap:8px;min-width:0;min-height:36px;padding:0 8px;border-radius:var(--r-ctl);color:var(--ink);text-align:left;cursor:pointer}
:is(.p-book,.p-lib) .ln-l:hover{background:var(--sel)}
:is(.p-book,.p-lib) .ln-l b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
:is(.p-book,.p-lib) .ln-l .n{font:400 12px/17px var(--f-mono);color:var(--muted);white-space:nowrap}
:is(.p-book,.p-lib) .ln-l[aria-expanded=true]{background:var(--ink);color:var(--panel)}
:is(.p-book,.p-lib) .ln-l[aria-expanded=true] .n{color:inherit}
:is(.p-book,.p-lib) .cdot.none{background:transparent;box-shadow:inset 0 0 0 1.5px var(--ctl)}
:is(.p-book,.p-lib) .lempty{font:400 13px/19px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .lstrip{display:flex;align-items:flex-end;gap:3px;min-width:0;height:34px}
:is(.p-book,.p-lib) .bs{position:relative;flex:1 1 0;min-width:32px;height:34px;padding:0;border-radius:5px;background:var(--seg-done);overflow:hidden;font:600 12px/34px var(--f-mono);color:var(--ink-2);text-align:center;white-space:nowrap;cursor:pointer}
/* отрезок книги: ширина по числу глав в пределах 72–340 px, а не на всю ленту;
   длинная подборка ужимает отрезки (не меньше min-width), а не раздвигает
   страницу вбок — иначе шапка уезжает при переходе (замер движения E3/E4) */
.p-lib .bs{flex:0 1 auto;width:clamp(72px, calc(var(--n, 1) * 9px), 340px)}
:is(.p-book,.p-lib) .bs .fill{position:absolute;left:0;top:0;bottom:0;background:var(--seg-done)}
:is(.p-book,.p-lib) .bs>span{position:relative}
:is(.p-book,.p-lib) .bs.s-wait{background:var(--sig-soft);box-shadow:inset 0 3px 0 var(--edge)}
:is(.p-book,.p-lib) .bs.bad{box-shadow:inset 0 3px 0 var(--err)}
:is(.p-book,.p-lib) .bs.s-run{background:repeating-linear-gradient(135deg,var(--sunk) 0 4px,var(--stripe) 4px 7px);box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .bs.s-empty{background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}
:is(.p-book,.p-lib) .bs.s-soon{box-shadow:inset 0 -4px 0 var(--edge)}
:is(.p-book,.p-lib) .bs.s-arch{height:20px;background:var(--sunk);box-shadow:inset 0 1px 0 var(--line-2);font-size:12px;line-height:20px;color:var(--muted)}
:is(.p-book,.p-lib) .bs .bt-t{display:none;margin-left:6px;font:500 12px/1 var(--f-ui)}
:is(.p-book,.p-lib) .bs.wide .bt-t{display:inline}
:is(.p-book,.p-lib) .bs.s-arch .bt-t{font-size:12px}
:is(.p-book,.p-lib) .lstrip .bs.hit{outline:2px solid var(--edge);outline-offset:1px}
:is(.p-book,.p-lib) .cols.searching .bs:not(.hit){opacity:.28}
:is(.p-book,.p-lib) .lstrip::-webkit-scrollbar{display:none}
/* плитки книг в окне: «Обычный» — образ и строки, «Компактный» — строка таблицы */
:is(.p-book,.p-lib) .mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:12px}
:is(.p-book,.p-lib) .mt{position:relative;min-width:0;border-radius:var(--r-card);background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}
:is(.p-book,.p-lib) .mt-main{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:6px 18px;width:100%;padding:18px 20px;border-radius:var(--r-card);color:var(--ink);text-align:left}
:is(.p-book,.p-lib) a.mt-main:hover{background:var(--sel)}
:is(.p-book,.p-lib) .mt-img{grid-row:span 3;align-self:start}
:is(.p-book,.p-lib) .mt-num,:is(.p-book,.p-lib) .mt-e,:is(.p-book,.p-lib) .mt-k,:is(.p-book,.p-lib) .mt-hd{display:none}
:is(.p-book,.p-lib) .mt-t{min-width:0;padding-right:28px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 18px/24px var(--f-ui)}
:is(.p-book,.p-lib) .mt-sub{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 14px/20px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .mt-s{display:flex;align-items:center;gap:10px;min-width:0;overflow:hidden;white-space:nowrap;font:400 14px/20px var(--f-ui);color:var(--ink-2)}
:is(.p-book,.p-lib) .mt-s.w{color:var(--sig-t)}
:is(.p-book,.p-lib) .mt-s .prog{width:120px}
:is(.p-book,.p-lib) .mt-s .tx{min-width:0;overflow:hidden;text-overflow:ellipsis}
:is(.p-book,.p-lib) .mt-bad{grid-column:2;font:400 12px/17px var(--f-ui);color:var(--err)}
:is(.p-book,.p-lib) .mt.st-wait{box-shadow:inset 0 0 0 1px var(--edge)}
:is(.p-book,.p-lib) .mt .t-more{right:4px;top:4px}
:is(.p-book,.p-lib) .mt-add{display:flex;align-items:center;justify-content:center;gap:8px;min-height:72px;border:1px dashed var(--line-2);border-radius:var(--r-card);font-weight:500;color:var(--ink-2)}
:is(.p-book,.p-lib) .mt-add:hover{background:var(--sel);color:var(--ink)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mgrid{max-width:860px;grid-template-columns:minmax(0,1fr);gap:0;border-radius:var(--r-card);box-shadow:inset 0 0 0 1px var(--line);overflow:hidden}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt{border-radius:0;box-shadow:inset 0 1px 0 var(--line)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt:first-child{box-shadow:none}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-hd{display:block;background:var(--sel)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-main{grid-template-columns:36px minmax(0,1fr) minmax(0,200px) 64px 88px;gap:10px;min-height:40px;padding:0 44px 0 12px;border-radius:0}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-hd .mt-main{min-height:32px;font:400 12px/17px var(--f-ui);color:var(--muted)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-hd :is(.mt-t,.mt-s,.mt-e,.mt-k){font:inherit;color:inherit}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-img,:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-sub,:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-bad,:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-s .prog{display:none}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-num,:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-e,:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-k{display:block}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-t{padding-right:0;font-weight:500}
:is(.p-book,.p-lib) .drawer[data-view=compact] :is(.mt-t,.mt-s){font-size:13px;line-height:18px}
:is(.p-book,.p-lib) .mt-num{font:600 13px/19px var(--f-mono);color:var(--muted)}
:is(.p-book,.p-lib) .mt-e{font:600 13px/19px var(--f-mono);color:var(--err);text-align:right}
:is(.p-book,.p-lib) .mt-e.none{font-weight:400;color:var(--muted)}
:is(.p-book,.p-lib) .mt-k{font:400 12px/17px var(--f-mono);color:var(--muted);text-align:right;white-space:nowrap}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-add{min-height:40px;border:0;border-radius:0;box-shadow:inset 0 1px 0 var(--line)}
.p-lib .pager{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:4px}
.p-lib .back5{margin-top:12px;font-size:14px}
:is(.p-book,.p-lib) .series-menu{flex:none}
:is(.p-book,.p-lib) .series-menu .menu{z-index:31}
:is(.p-book,.p-lib) .series-menu .mi-form input{flex:1;min-width:0;height:36px;padding:0 10px;border-radius:var(--r-ctl);border:1px solid var(--line-2);background:var(--panel);color:var(--ink)}
:is(.p-book,.p-lib) .lhead .lib-menu .menu{width:240px}
/* Кнопки шапки книги уходят под название, как только рядом с ними мета-строка
   перестаёт помещаться в одну строку (уже 1280 px) */
@media (max-width:1279px){
.p-book .bh{grid-template-columns:auto minmax(0,1fr)}
.p-book .bh-act{grid-column:1/-1;justify-content:flex-start}
}
@media (max-width:760px){
:is(.p-book,.p-lib) .lane{grid-template-columns:minmax(0,1fr)}
:is(.p-book,.p-lib) .findn,:is(.p-book,.p-lib) .findt{margin-left:0;width:100%}
:is(.p-book,.p-lib) .findn input,:is(.p-book,.p-lib) .findt input{flex:1;width:auto;min-width:0}
:is(.p-book,.p-lib) .lstrip{height:auto;padding:3px 2px;overflow-x:auto;scrollbar-width:none}
:is(.p-book,.p-lib) .bs{flex-shrink:0;min-width:40px}
.p-lib .bs{width:clamp(64px, calc(var(--n, 1) * 6px), 200px)}
:is(.p-book,.p-lib) .stacks{grid-template-columns:minmax(0,1fr)}
.nv .radio{margin-left:0;order:3;flex-basis:100%}
:is(.p-book,.p-lib) .fact{grid-template-columns:minmax(0,1fr)}
:is(.p-book,.p-lib) .topc .bn{min-width:40px;font-size:30px}
:is(.p-book,.p-lib) .topm{grid-template-columns:auto minmax(0,1fr)}
:is(.p-book,.p-lib) .topm .go{grid-row:auto;grid-column:2}
:is(.p-book,.p-lib) .tog{height:40px}
:is(.p-book,.p-lib) .c-nav button{width:40px;height:40px}
:is(.p-book,.p-lib) .drawer .grid,:is(.p-book,.p-lib) .hist .grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}
:is(.p-book,.p-lib) .drawer[data-view=compact] .grid{grid-template-columns:repeat(auto-fill,minmax(48px,1fr))}
:is(.p-book,.p-lib) .mgrid{grid-template-columns:minmax(0,1fr)}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-main{grid-template-columns:28px minmax(0,1fr) 44px;gap:8px}
:is(.p-book,.p-lib) .mt-main{grid-template-columns:64px minmax(0,1fr);padding:14px 16px;gap:4px 14px}
:is(.p-book,.p-lib) .mt-img .md{--s:64px !important}
:is(.p-book,.p-lib) .mt-t{font-size:16px;line-height:22px}
:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-s,:is(.p-book,.p-lib) .drawer[data-view=compact] .mt-k{display:none}
:is(.p-book,.p-lib) .legend .opt{display:none}
:is(.p-book,.p-lib) .lhead .acts{width:100%}
:is(.p-book,.p-lib) .lhead .acts .btn-main{flex:1 1 100%;order:-1}
.p-book .bh{grid-template-columns:56px minmax(0,1fr);gap:12px}
.p-book .bh .md{--s:56px !important;--n:18px !important}
.p-book .bh .h-page{font-size:21px;line-height:26px}
.p-book .bh-act .btn-l.btn-main{flex:1 1 100%;order:-1;height:44px}
.p-book .bh-dl{flex:1 1 auto}
.p-book .bh-dl .btn{width:100%}
.p-book .addb{display:none}
}
@media (max-width:520px){
:is(.p-book,.p-lib) .book-review-status{gap:10px;padding:11px 12px;font-size:13px;line-height:19px}
:is(.p-book,.p-lib) .book-review-mark{margin-top:3px}
:is(.p-book,.p-lib) .c-more>a,:is(.p-book,.p-lib) .c-more>form>button,:is(.p-book,.p-lib) .c-more>details>summary,:is(.p-book,.p-lib) .nx,:is(.p-book,.p-lib) .mx,:is(.p-book,.p-lib) .facts .chip,:is(.p-book,.p-lib) .quiet .chip,:is(.p-book,.p-lib) .stack .attn .btn,:is(.p-book,.p-lib) .soonbar .btn{min-height:44px}
:is(.p-book,.p-lib) .c-nav button,:is(.p-book,.p-lib) .x{width:44px;height:44px}
:is(.p-book,.p-lib) .t-more{width:40px;height:40px}
:is(.p-book,.p-lib) .findn input,:is(.p-book,.p-lib) .findt input{height:44px}
:is(.p-book,.p-lib) .radio label{min-height:44px}
}
@media (prefers-reduced-motion:reduce){.tog .ico{transition:none}}

.p-book .bh-meta .cdot{margin-right:8px;vertical-align:baseline}
.p-book .errn b.todo{color:var(--sig-t)}
@media (max-width:520px){.p-book .nx{grid-template-columns:32px minmax(0,1fr) auto}.p-book .nx .dur{display:none}}
@media (max-width:520px){.p-book .nx-more>span:nth-child(2){display:none}}
:is(.p-book,.p-lib) :is(.nx,.mx,.pile,.mt-main,.t-main,.mt-add):hover{text-decoration:none}
:is(.p-book,.p-lib) :is(.stack,.stacks,.drawer,.lane-book,.cols,.tile,.mt)[hidden]{display:none!important}
:is(.p-book,.p-lib) :is(.lhead .acts,.bh-act) .btn-main{white-space:normal;height:auto;min-height:44px;padding-top:6px;padding-bottom:6px;text-align:center}
:is(.p-book,.p-lib) :is(.cc,.bcard){left:max(8px,min(var(--x,8px),calc(100% - min(330px,100% - 16px) - 8px)))}

/* факты стопки «Сверено»: чипы одной ширины — номер слева, значение справа, ряды встают колонками */
.p-book .facts .chips .chip{width:9.5rem;justify-content:space-between}
.p-book .facts .chips .chip.more{width:auto}
:is(.p-book,.p-lib) .facts .when{font:400 13px/18px var(--f-ui);color:var(--muted);white-space:nowrap}

/* отрезок книги на ленте подборки — «корешок»: медальон книги с её волной,
   название, число глав; полоска снизу — доля прослушанных глав; состояние —
   точкой в углу, а не заливкой всего отрезка (решение 07.10.2026) */
.p-lib .lstrip{height:auto;align-items:stretch;gap:6px}
.p-lib .bs,.p-lib .bs.s-wait,.p-lib .bs.bad,.p-lib .bs.s-run,.p-lib .bs.s-soon,.p-lib .bs.s-ok{display:flex;align-items:center;gap:8px;width:clamp(132px, calc(var(--n, 1) * 9px), 340px);height:46px;padding:0 12px 0 8px;border-radius:var(--r-card);background:var(--panel);box-shadow:inset 0 0 0 1px var(--line),inset 3px 0 0 var(--mc);font:500 13px/18px var(--f-ui);color:var(--ink);text-align:left}
.p-lib .bs:hover{background:var(--sel)}
.p-lib .bs .md{flex:none}
.p-lib .bs-t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.p-lib .bs-c{flex:none;font:400 12px/16px var(--f-mono);color:var(--muted)}
.p-lib .bs-bar{position:absolute;left:46px;right:12px;bottom:6px;height:3px;border-radius:2px;background:linear-gradient(90deg,var(--ok) var(--p,0%),var(--sunk) var(--p,0%))}
.p-lib .bs-dot{display:none;position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%}
.p-lib .bs.s-wait .bs-dot{display:block;background:var(--sig-g)}
.p-lib .bs.bad .bs-dot{display:block;background:var(--err)}
.p-lib .bs.s-run .bs-dot{display:block;background:var(--ctl)}
.p-lib .bs.s-soon .bs-dot{display:block;background:transparent;box-shadow:inset 0 0 0 2px var(--sig-g)}
.p-lib .bs.s-empty{width:132px;height:46px;background:transparent;box-shadow:inset 0 0 0 1px var(--line-2);border-radius:var(--r-card);font:500 13px/18px var(--f-ui);color:var(--muted);display:flex;align-items:center;gap:8px;padding:0 12px 0 8px;text-align:left}
.p-lib .bs.s-arch{width:132px;height:46px;opacity:.55;background:var(--panel);box-shadow:inset 0 0 0 1px var(--line);border-radius:var(--r-card);font:500 13px/18px var(--f-ui);display:flex;align-items:center;gap:8px;padding:0 12px 0 8px;text-align:left;line-height:18px}
.p-lib .lbar{display:inline-block;width:18px;height:3px;border-radius:2px;background:linear-gradient(90deg,var(--ok) 60%,var(--sunk) 60%)}
.p-lib .ldot{display:inline-block;width:8px;height:8px;border-radius:50%}
.p-lib .ldot.d-wait{background:var(--sig-g)}
.p-lib .ldot.d-bad{background:var(--err)}
.p-lib .ldot.d-run{background:var(--ctl)}
.p-lib .ldot.d-soon{box-shadow:inset 0 0 0 2px var(--sig-g)}

/* «Операции по балансу»: отбор по категории без скрипта — переключатель и :has */
.opsf{display:flex;flex-wrap:wrap;gap:6px 8px;margin:0 0 10px;padding:0;border:0}
.opsf input{position:absolute;opacity:0;pointer-events:none}
.opsf label{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--line-2);font:500 13px/18px var(--f-ui);color:var(--ink);cursor:pointer}
.opsf label b{font:600 12px/16px var(--f-mono);color:var(--muted)}
.opsf .opsum{font:400 12px/16px var(--f-mono);color:var(--muted)}
.opsf input:checked+label{background:var(--ink);color:var(--panel);box-shadow:none}
.opsf input:checked+label :is(b,.opsum){color:inherit;opacity:.8}
.opsf input:focus-visible+label{outline:2px solid var(--focus,var(--edge));outline-offset:2px}
.ops5:has(#opsk-topup:checked) tr:not([data-k=topup]),.ops5:has(#opsk-charge:checked) tr:not([data-k=charge]),.ops5:has(#opsk-refund:checked) tr:not([data-k=refund]){display:none}

/* лента книги — дорожка звукового редактора: в отрезке волна записи главы,
   красный столбик (доля ошибок чтеца) со скруглённым верхом, объём и подсветка */
.p-book .strip{height:52px;gap:3px}
.p-book .sg{border-radius:4px;background:linear-gradient(180deg,color-mix(in srgb,var(--seg-done) 70%,var(--panel)),var(--seg-done));box-shadow:inset 0 1px 0 color-mix(in srgb,var(--panel) 60%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--ok) 18%,transparent);transition:transform var(--m-fast) var(--e-out)}
.p-book .sg:hover{transform:translateY(-2px)}
.p-book .sg .sgw{position:absolute;inset:6px 1px;width:calc(100% - 2px);height:calc(100% - 12px);pointer-events:none}
.p-book .sg .sgw path{fill:var(--ok);fill-opacity:.3;stroke:none}
.p-book .sg.s-todo .sgw path{fill:var(--sig-g)}
.p-book .sg>i{border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--err),color-mix(in srgb,var(--err) 75%,#000));opacity:.82}
@media (prefers-reduced-motion: reduce){.p-book .sg:hover{transform:none}}
