/* The three books pages (page-books.php; Website/Design/projects/services, HANDOFF_DEVELOPER_books.md, 2026-10-30), from the
   prototype proto/_books_template.html, scoped to .ctb; built by tools/build_books_css.py, edit the source and rebuild.
   <main> also has .ct (base.css); the prototype's tokens are aliased to the site's. */
.ctb{--navy:var(--ct-navy);--ink:var(--ct-ink);--text:var(--ct-text);--line:var(--ct-line);--line-track:var(--ct-track);--grey:var(--ct-grey);--muted:var(--ct-muted);--serif:var(--ct-serif);--sans:var(--ct-sans);--rb:var(--ct-rb);--rc:var(--ct-rc);--px:var(--ct-px)}
.ctb .wrap{max-width:1264px;margin:0 auto;padding:0 var(--px)}
.ctb .sec{padding:44px 0}
.ctb .sec.grey{background:var(--grey)}
.ctb .sec h2{margin:0 0 14px;font:400 30px/1.15 var(--serif);color:var(--navy);text-wrap:balance}
.ctb .sec .sub{margin:0 0 22px;font:400 16px/1.55 var(--sans);max-width:36em}
.ctb .navy{background:var(--navy);color:#fff}
.ctb .vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* the button (as the type page and «Точный тип») */
.ctb .btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:52px;padding:0 22px;border:1px solid #173f73;border-radius:var(--rb);
  background:linear-gradient(#2D5A9E,#194C8E 62%);color:#fff;font:500 16px/1.2 var(--sans);text-decoration:none;cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 6px 14px -8px rgba(0,0,0,.45)}
.ctb .btn svg{width:18px;height:18px}
.ctb .btn::after{content:"";position:absolute;left:0;top:0;width:22px;height:2px;pointer-events:none;border-radius:2px;background:linear-gradient(90deg,rgba(255,255,255,0),#fff);box-shadow:0 0 6px 1px rgba(255,255,255,.75);
  offset-path:inset(0 round var(--rb));offset-rotate:auto;offset-anchor:100% 50%;animation:ct-run 4.5s linear infinite}
.ctb .btn.w{background:linear-gradient(#fff,#EEF0F3);color:var(--navy);border-color:#fff;box-shadow:inset 0 -2px 0 rgba(40,66,87,.12),0 8px 18px -10px rgba(0,0,0,.6)}
.ctb .btn.w::after{background:linear-gradient(90deg,rgba(25,76,142,0),#194C8E);box-shadow:0 0 6px 1px rgba(25,76,142,.55)}
.ctb .btn.q{background:#fff;color:var(--navy);border-color:var(--navy);box-shadow:none}
.ctb .btn.q::after{display:none}
.ctb .btn.idle::after{animation-play-state:paused;opacity:0}
.ctb .price{font:400 30px/1 var(--serif);color:var(--navy);font-variant-numeric:lining-nums;white-space:nowrap}
.ctb .price small{font:400 14px/1 var(--sans);color:var(--muted);margin-left:2px}
.ctb .navy .price,.ctb .navy .price small{color:#fff}
.ctb .buy{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px}
.ctb .qlink{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:inherit;font:400 15px/1.3 var(--sans);text-decoration:underline;text-underline-offset:4px}
.ctb .qlink svg{width:16px;height:16px;flex:none}

/* ---------- 1. the first screen: the book as a thing ----------
   With a type: whose book, the H1, one line, the facts, the price and the button; beside it the real cover standing in
   front of a real spread (paper: 8/12 px). «Другой тип» opens the sixteen signs in place of the book. Without a type the
   signs ARE the first screen, the book appears after a pick. */
.ctb .bh{position:relative;overflow:hidden;padding:20px 0 30px}
.ctb .bh .halo2{position:absolute;right:-210px;top:-180px;width:480px;height:480px;color:#fff;opacity:.06;pointer-events:none}
.ctb .bh .wrap{position:relative;display:grid;grid-template-areas:"you" "h1" "sub" "vis" "facts" "buy" "oth"}
.ctb .you{grid-area:you;display:flex;align-items:center;gap:10px;margin:0 0 12px;font:400 15px/1.2 var(--sans);color:rgba(255,255,255,.8)}
.ctb .you svg{width:34px;height:34px;flex:none;color:#fff}
.ctb .you b{font:400 19px/1 var(--serif);color:#fff}
.ctb .bh h1{grid-area:h1;margin:0;font:400 35px/1.06 var(--serif);text-wrap:balance}
.ctb .bh .sub{grid-area:sub;margin:12px 0 0;font:400 17px/1.45 var(--sans);color:rgba(255,255,255,.86);max-width:30em}
.ctb .facts3{grid-area:facts;margin:16px 0 18px;padding:0;list-style:none;display:grid;gap:7px}
.ctb .facts3 li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:12px;align-items:center;font:400 16px/1.35 var(--sans)}
.ctb .facts3 svg{width:24px;height:24px;color:rgba(255,255,255,.8)}
.ctb .bh .buy{grid-area:buy}
.ctb .oth{grid-area:oth;justify-self:start;margin-top:10px}
.ctb .oth button{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font:400 15px/1.3 var(--sans);color:#fff;text-decoration:underline;text-underline-offset:4px}
.ctb .oth button svg{width:16px;height:16px;transition:transform .2s}
.ctb .oth button[aria-expanded="true"] svg{transform:rotate(180deg)}
.ctb .oth button:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:4px}
/* the book: the spread at the back, the cover in front of its lower left corner */
.ctb .vis{grid-area:vis;margin-top:16px}
.ctb .bk{--ar:80;position:relative;margin:0;aspect-ratio:100/var(--ar)}
.ctb .bk .sp{position:absolute;right:0;top:0;width:84%;display:block;border-radius:8px}
.ctb .bk .sp img{display:block;width:100%;height:auto;aspect-ratio:4/3;border-radius:8px;background:#fff;box-shadow:0 26px 40px -26px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.1)}
.ctb .bk .cv{position:absolute;left:0;bottom:0;width:33%;height:auto;aspect-ratio:2/3;border-radius:8px;box-shadow:0 22px 34px -14px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.14)}
/* the caption sits under the spread, right of the cover (the spread fills 63 of the box's --ar units of height: 80 on phones, 74 on the desktop) */
.ctb .bk figcaption{position:absolute;left:37%;right:0;top:calc(100% * 63 / var(--ar) + 8px);font:400 12.5px/1.35 var(--sans);color:rgba(255,255,255,.66)}
.ctb .bk .sp:focus-visible{outline:2px solid #fff;outline-offset:3px}
/* the sixteen signs (the all-types page's grid): rows are the quadras */
.ctb .pick{grid-area:vis;margin-top:20px}
.ctb .pick[hidden]{display:none}
.ctb .pkh{margin:0 0 4px;font:400 22px/1.2 var(--serif)}
.ctb .pkl{margin:0 0 10px;font:400 14.5px/1.4 var(--sans);color:rgba(255,255,255,.72)}
.ctb .g16{margin:0;padding:0}
.ctb .g16 .row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;padding:6px 0}
@media (max-width:389px){.ctb .g16{margin-inline:-8px}.ctb .g16 button span{font-size:11px;letter-spacing:-.02em}}
.ctb .g16 .row+.row{border-top:1px solid rgba(255,255,255,.12)}
.ctb .g16 .qn{display:none}
.ctb .g16 button{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:5px;min-height:76px;padding:6px 2px;border-radius:12px;cursor:pointer;text-align:center;color:#fff}
.ctb .g16 button svg{width:40px;height:40px;border-radius:50%;opacity:.7;transition:opacity .2s,background .2s}
.ctb .g16 button span{font:400 11.5px/1.2 var(--sans);color:rgba(255,255,255,.78);text-wrap:balance;hyphens:auto;-webkit-hyphens:auto;max-width:100%}
.ctb .g16 button[aria-checked="true"] svg{opacity:1;background:#fff;color:var(--navy)}
.ctb .g16 button[aria-checked="true"] span{color:#fff}
.ctb .g16 button:focus-visible{outline:2px solid #fff;outline-offset:1px}
@media (hover:hover){.ctb .g16 button:hover svg{opacity:1;background:rgba(255,255,255,.12)}}
.ctb .pkst{min-height:20px;margin:6px 0 0;font:400 13.5px/1.4 var(--sans);color:rgba(255,255,255,.7)}
/* the no-type state: the grid in place of the book; the price holds for any type; on the desktop the sixteen covers
   sit under the words and the one under the pointer lights up (the all-types page's preview) */
.ctb .bh.nt .you,.ctb .bh.nt .buy,.ctb .bh.nt .oth,.ctb .bh.nt .vis{display:none}
.ctb .bh.nt .pick{display:block}
.ctb .npv{display:none}
.ctb .bh .wrap>.ntp{display:none}
.ctb .bh.nt .wrap>.ntp{grid-area:buy;display:flex;align-items:baseline;gap:10px;margin:0;font:400 15px/1.3 var(--sans);color:rgba(255,255,255,.8)}
.ctb .bh.pk .vis{display:none}

/* round 2 (Lex: «добавить немного именно дизайна»): the lens behind the book, the price in a seal */
.ctb .vis{position:relative}
.ctb .vlens{position:absolute;left:58%;top:46%;width:122%;aspect-ratio:1;translate:-50% -50%;color:#fff;opacity:.2;pointer-events:none}
.ctb .vlens svg{display:block;width:100%;height:100%;animation:ctb-lrot 240s linear infinite}
@keyframes ctb-lrot{to{transform:rotate(360deg)}}
.ctb .vis.first .bk .sp{animation:ctb-spin .75s .15s cubic-bezier(.2,.7,.2,1) both}
.ctb .vis.first .bk .cv{animation:ctb-cvin .6s cubic-bezier(.2,.7,.2,1) both}
.ctb .vis.swap .bk .cv{animation:ctb-xf .24s both}.ctb .vis.swap .bk .sp{animation:ctb-xf .34s .06s both}
@keyframes ctb-spin{from{transform:translateX(-14%);opacity:0}}
@keyframes ctb-cvin{from{transform:translateY(8px);opacity:0}}
@keyframes ctb-xf{from{opacity:0}}
/* a page that opens large: the lens with a handle in its corner */
.ctb .zm{position:absolute;right:8px;bottom:8px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:rgba(40,66,87,.84);color:#fff;pointer-events:none}
.ctb .zm svg{width:17px;height:17px}
.ctb .bk .sp,.ctb .spx a,.ctb .ans .pg,.ctb .port a{position:relative}
.ctb .bk .sp .zm{right:10px;bottom:10px}
/* the viewer */
.ctb .lb{width:min(1200px,100vw - 24px);max-width:none;max-height:calc(100dvh - 24px);padding:0;border:0;border-radius:12px;background:transparent;overflow:visible}
.ctb .lb::backdrop{background:rgba(20,30,45,.86)}
.ctb .lb figure{margin:0}
.ctb .lb img{display:block;width:100%;height:auto;max-height:calc(100dvh - 90px);object-fit:contain;border-radius:12px;background:#fff;touch-action:pinch-zoom}
.ctb .lb figcaption{margin-top:10px;font:400 14px/1.4 var(--sans);color:#fff;text-align:center}
.ctb .lb button{all:unset;box-sizing:border-box;position:absolute;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#fff;color:var(--navy);cursor:pointer;box-shadow:0 6px 16px -8px rgba(0,0,0,.6)}
.ctb .lb button svg{width:20px;height:20px}
.ctb .lb .lbx{top:-14px;right:-6px}
.ctb .lb .lbp,.ctb .lb .lbn{top:calc(50% - 40px)}.ctb .lb .lbp{left:-6px}.ctb .lb .lbn{right:-6px}
.ctb .lb.one1 .lbp,.ctb .lb.one1 .lbn{display:none}
.ctb .lb button:focus-visible{outline:2px solid #fff;outline-offset:3px}
.ctb .bh:not(.nt) .halo2{display:none}
.ctb .bk{z-index:1}
/* the price inside a knurled seal (the result sheet's seal; DESIGN.md: «the seal on offers») */
.ctb .seal{position:relative;display:grid;place-items:center;width:84px;height:84px;flex:none;color:var(--navy)}
.ctb .seal svg{position:absolute;inset:0;width:100%;height:100%}
.ctb .seal .price{position:relative;font-size:27px;text-align:center;line-height:.95}
.ctb .seal .price small{display:block;margin:3px 0 0;font-size:11px;letter-spacing:.04em}
@media (max-width:599px){.ctb .seal{width:72px;height:72px}.ctb .seal .price{font-size:24px}}
.ctb .navy .seal{color:#fff}

/* ---------- 2. specimens: real spreads with a line of what the chapter answers ---------- */
/* the book's ruler: every chapter as long as it is in pages; the specimens' chapters in navy */
.ctb .ruler{margin:4px 0 20px}
/* the book's fore-edge as a thumb index: every chapter a tab as long as its pages; the specimens' tabs stand up and
   carry their page; on the desktop a thin leader runs from each raised tab to its spread */
.ctb .ruler .bar{display:flex;align-items:flex-end;gap:2px;height:44px}
.ctb .ruler .bar i{position:relative;flex:var(--w) 1 0;min-width:2px;height:12px;border-radius:2px;background:var(--line-track,#DEDEDE)}
.ctb .ruler .bar i.pr{background:rgba(40,66,87,.35)}
.ctb .ruler .bar i.on{height:22px;border-radius:4px 4px 2px 2px;background:var(--navy)}
.ctb .ruler .bar i.on::before{content:attr(data-p);position:absolute;left:50%;bottom:28px;translate:-50% 0;font:400 13px/1 var(--serif);font-style:normal;color:var(--navy);white-space:nowrap;font-variant-numeric:lining-nums}
.ctb .ruler .bar i.on:not([data-p])::before{content:none}
.ctb .ruler .bar i.lr::before{left:auto;right:0;translate:none}
.ctb .lead{display:none}
.ctb .ruler .sc{display:flex;justify-content:space-between;margin-top:6px;font:400 12px/1 var(--sans);color:var(--muted);font-variant-numeric:lining-nums}
.ctb .ruler .lg{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:8px;font:400 12.5px/1.3 var(--sans);color:var(--muted)}
.ctb .ruler .lg span{display:inline-flex;align-items:center;gap:6px}
.ctb .ruler .lg span::before{content:"";width:12px;height:8px;border-radius:2px;background:var(--navy)}
.ctb .ruler .lg span.pr::before{background:rgba(40,66,87,.35)}
/* the loupe: a short run of chapters drawn again full width, its tabs over their spreads */
.ctb .ruler .zoom{display:flex;gap:4px;align-items:flex-end;height:44px;margin:46px 0 0}
.ctb .ruler .zoom i{position:relative;flex:var(--w) 1 0;height:22px;border-radius:4px 4px 2px 2px;background:var(--navy)}
.ctb .ruler .zoom i::before{content:attr(data-p);position:absolute;left:50%;bottom:28px;translate:-50% 0;font:400 13px/1 var(--serif);font-style:normal;color:var(--navy);white-space:nowrap}
.ctb .lead .lp{stroke-dasharray:3 4}
.ctb .mini{display:flex;align-items:flex-end;gap:1px;height:7px;margin:10px 0 0}
.ctb .mini i{flex:var(--w) 1 0;height:3px;border-radius:1px;background:var(--line-track,#DEDEDE)}
.ctb .mini i.on{height:7px;background:var(--navy)}
.ctb .smp{margin:-6px 0 22px;padding:10px 14px;border-left:2px solid var(--navy);font:400 15px/1.45 var(--sans);color:var(--text);max-width:40em}
.ctb .r6 .bar{height:40px}
.ctb .r6 .bar i{height:16px;border-radius:4px 4px 2px 2px;background:rgba(40,66,87,.35)}
.ctb .r6 .bar i.on{height:16px;background:var(--navy)}
.ctb .r6 .bar i::before{content:attr(data-p);position:absolute;left:50%;bottom:22px;translate:-50% 0;font:400 14px/1 var(--serif);color:var(--navy)}
.ctb .r6{margin:0 0 22px}
.ctb .spx{margin:0;padding:0;list-style:none;display:grid;gap:26px}
.ctb .spx a{display:block;border-radius:8px;color:inherit;text-decoration:none}
.ctb .spx img{display:block;width:100%;height:auto;aspect-ratio:4/3;border-radius:var(--rp,8px);background:#fff;box-shadow:0 16px 28px -20px rgba(20,30,45,.55),0 0 0 1px rgba(40,66,87,.12);transition:transform .2s,box-shadow .2s}
.ctb .spx p{margin:12px 0 0}
.ctb .spx .pp{display:block;font:400 13px/1.3 var(--sans);color:var(--muted);font-variant-numeric:lining-nums}
.ctb .spx b{display:block;margin-top:3px;font:400 20px/1.2 var(--serif);color:var(--navy)}
.ctb .spx .ln{display:block;margin-top:5px;font:400 16px/1.5 var(--sans)}
.ctb .spx a:focus-visible{outline:2px solid var(--navy);outline-offset:3px}
@media (hover:hover){.ctb .spx a:hover img{transform:translateY(-3px);box-shadow:0 24px 34px -22px rgba(20,30,45,.6),0 0 0 1px rgba(40,66,87,.16)}}
/* the full chapter list, folded */
.ctb .toc{margin:26px 0 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ctb .toc summary{display:flex;align-items:center;gap:10px;min-height:54px;cursor:pointer;list-style:none;font:500 16px/1.3 var(--sans);color:var(--navy)}
.ctb .toc summary::-webkit-details-marker{display:none}
.ctb .toc summary small{font:400 14px/1 var(--sans);color:var(--muted)}
.ctb .toc summary svg{width:20px;height:20px;margin-left:auto;transition:transform .2s}
.ctb .toc[open] summary svg{transform:rotate(180deg)}
.ctb .toc summary:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:6px}
.ctb .toc ol{margin:0;padding:0 0 14px;list-style:none;columns:1}
.ctb .toc li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:6px 0;break-inside:avoid;font:400 16px/1.4 var(--sans);border-bottom:1px dotted var(--line)}
.ctb .toc li span:last-child{color:var(--muted);font-variant-numeric:lining-nums tabular-nums}
.ctb .toc li.on span:first-child{color:var(--navy);font-weight:500}
.ctb .toc li.pt{border-bottom:0;padding-top:14px;font:400 17px/1.3 var(--serif);color:var(--navy)}

/* ---------- B 2. «Вы и кто?»: the two lenses, the line between them names the relation, the chapter opens ---------- */
/* phone order: the two lenses, the sixteen, the answer, the price (the desktop puts the sixteen on the right) */
.ctb .pair .lay{display:flex;flex-direction:column}
.ctb .pair .lft{display:contents}
.ctb .pair .rgt{order:1}.ctb .pair .duo{order:2;margin-top:26px;scroll-margin-top:16px}.ctb .pair .ans{order:3}.ctb .pair .more{order:4}
.ctb .duo{display:grid;grid-template-columns:84px minmax(0,1fr) 84px;align-items:center;gap:0;margin:6px 0 4px}
.ctb .duo .me,.ctb .duo .th{display:grid;justify-items:center;gap:6px;text-align:center}
/* each person sits in an eyepiece (the ticked rim of the brand's lens) */
.ctb .duo .ep{position:relative;display:grid;place-items:center;width:84px;height:84px}
.ctb .duo .ep>svg{position:absolute;inset:0;width:100%;height:100%;color:var(--navy);opacity:.55}
.ctb .duo .disk{display:grid;place-items:center;width:64px;height:64px;border-radius:50%}
.ctb .duo .disk svg{width:64px;height:64px}
.ctb .duo .me .disk{background:var(--navy);color:#fff}
.ctb .duo .th .disk{border:1px solid var(--navy);color:var(--navy)}
.ctb .duo .th .disk.q{border-style:dashed;font:300 30px/1 var(--sans)}
.ctb .duo .nm{font:400 16px/1.15 var(--serif);color:var(--navy)}
.ctb .duo .nm small{display:block;margin:0 0 3px;font:400 11.5px/1.2 var(--sans);letter-spacing:.03em;color:var(--muted)}
.ctb .duo .disk.q{font:300 30px/1 var(--sans)}.ctb .duo .disk.q.mine{background:var(--navy);color:#fff}
.ctb .duo .ln b{overflow-wrap:anywhere;hyphens:auto;-webkit-hyphens:auto}
.ctb .duo .ln{position:relative;align-self:start;height:84px;display:grid;place-items:center}
.ctb .duo .ln::before{content:"";position:absolute;left:-4px;right:-4px;top:50%;border-top:1px solid var(--navy);transform-origin:left;animation:ctb-lnd .55s cubic-bezier(.3,.7,.2,1) both}
.ctb .duo .ln b{animation:ctb-lnf .35s .35s both}
@keyframes ctb-lnd{from{transform:scaleX(0)}}
@keyframes ctb-lnf{from{opacity:0;transform:translateY(4px)}}
.ctb .duo .ln b{position:relative;padding:4px 8px;background:#fff;font:400 15.5px/1.15 var(--serif);color:var(--navy);text-align:center;text-wrap:balance;max-width:100%}
.ctb .duo .ln b.e{color:var(--muted);font:400 13px/1.3 var(--sans)}
.ctb .duo .chg{all:unset;box-sizing:border-box;display:inline-block;min-height:44px;padding:12px 0;cursor:pointer;font:400 14px/1.2 var(--sans);color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.ctb .duo .chg:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:4px}
/* their type: the same sixteen signs, drawn light (navy outline on white) so the two pickers never look alike */
.ctb .g16.lt .row+.row{border-top-color:var(--line)}
.ctb .g16.lt button{color:var(--navy)}
.ctb .g16.lt button svg{opacity:1;color:var(--navy)}
.ctb .g16.lt button span{color:var(--text)}
.ctb .g16.lt button[aria-checked="true"] svg{background:var(--navy);color:#fff}
.ctb .g16.lt button[aria-checked="true"] span{color:var(--navy);font-weight:500}
.ctb .g16 button small{display:block;margin-top:1px;font:500 11px/1.1 var(--sans);letter-spacing:.04em;color:var(--muted)}
.ctb .g16.lt button:focus-visible{outline-color:var(--navy)}
@media (hover:hover){.ctb .g16.lt button:hover svg{background:rgba(40,66,87,.08)}.ctb .g16.lt button[aria-checked="true"]:hover svg{background:var(--navy)}}
.ctb .thl{margin:22px 0 4px;font:500 12px/1.3 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ctb .unk{margin:6px 0 0}
.ctb .unk button{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font:400 15px/1.3 var(--sans);color:var(--ink);text-decoration:underline;text-underline-offset:4px}
.ctb .unk button svg{width:16px;height:16px;transition:transform .2s}
.ctb .unk button[aria-expanded="true"] svg{transform:rotate(180deg)}
.ctb .unk ul{margin:4px 0 0;padding:0;list-style:none;display:grid;gap:8px}
.ctb .unk ul[hidden]{display:none}
.ctb .unk li a{display:grid;grid-template-columns:minmax(0,1fr) 18px;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:12px;color:var(--navy);text-decoration:none;font:400 15px/1.35 var(--sans)}
.ctb .unk li a b{display:block;font:400 18px/1.2 var(--serif)}
.ctb .unk li a svg{width:18px;height:18px}
/* the answer: the relation, the chapter's own first lines, the chapter's first page as paper */
.ctb .ans{margin-top:24px;padding-top:22px;border-top:1px solid var(--line)}
.ctb .ans[hidden]{display:none}
.ctb .ans .ah{display:grid;grid-template-columns:minmax(0,1fr) 112px;grid-template-areas:"h p" "w p" "q q";grid-template-rows:auto 1fr auto;gap:0 16px;align-items:start}
.ctb .ans .at{display:contents}
.ctb .ans .cht{grid-area:h;margin:0;font:400 22px/1.2 var(--serif);color:var(--navy);text-wrap:balance;overflow-wrap:anywhere}
.ctb .ans .where{grid-area:w}
.ctb .ans blockquote{grid-area:q}
.ctb .ans .pg{grid-area:p}
.ctb .ans .where{margin:8px 0 0;font:400 14.5px/1.45 var(--sans);color:var(--muted);font-variant-numeric:lining-nums}
.ctb .ans .pg{position:relative;display:block;border-radius:8px;isolation:isolate}
/* the chapter goes on: a second sheet behind the first page */
.ctb .ans .pg::before{content:"";position:absolute;inset:7px -7px -7px 7px;z-index:-1;border-radius:var(--rp,8px);background:#fff;box-shadow:0 0 0 1px rgba(40,66,87,.14),0 10px 18px -14px rgba(20,30,45,.5)}
.ctb .ans .pg img{display:block;width:100%;height:auto;aspect-ratio:2/3;border-radius:var(--rp,8px);background:#fff;box-shadow:0 14px 24px -16px rgba(20,30,45,.55),0 0 0 1px rgba(40,66,87,.14)}
.ctb .ans .pg:focus-visible{outline:2px solid var(--navy);outline-offset:3px}
.ctb .ans blockquote{margin:18px 0 0;padding:0 0 0 16px;border-left:2px solid var(--navy);font:400 17px/1.55 var(--serif);font-style:italic;color:var(--text)}
.ctb .ans blockquote p{margin:0}
.ctb .ans .bq{display:block;margin:0 0 6px;font:500 12px/1.3 var(--sans);font-style:normal;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ctb .more{margin-top:24px;padding:18px;border-radius:var(--rc);background:var(--grey)}
.ctb .more p{margin:0 0 14px;font:400 19px/1.3 var(--serif);color:var(--navy);text-wrap:balance}
.ctb .more .pk1{margin:0}

/* ---------- C 2. what you will hear: three lines, each with its own small drawing from the book's world ---------- */
.ctb .hear{margin:0;padding:0;list-style:none;display:grid;gap:22px}
.ctb .hear li{display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px;align-items:start}
.ctb .hear .fig{position:relative;width:96px;height:96px;display:grid;place-items:center}
.ctb .hear .fig>svg.rim{position:absolute;inset:0;width:100%;height:100%;color:var(--navy);opacity:.4}
.ctb .hear .fig svg.d{position:relative;width:62px;height:62px}
/* each drawing plays once when it comes into view, then rests (reduced motion: the last frame) */
.ctb .hear.arm .dt{opacity:0}
.ctb .hear.arm .br{transform:scaleY(.15)}
.ctb .hear.arm .ld{stroke-dashoffset:24}
.ctb .hear.arm .ir{opacity:0}
.ctb .hear .br{transform-box:fill-box;transform-origin:50% 50%}
.ctb .hear.run .dt{animation:ctb-dtin .45s cubic-bezier(.3,1.4,.5,1) both;animation-delay:calc(var(--k) * 110ms + 200ms)}
.ctb .hear.run .br{animation:ctb-brin .7s cubic-bezier(.3,.8,.3,1) both;animation-delay:calc(var(--k) * 60ms + 300ms)}
.ctb .hear.run .ld{stroke-dasharray:24;animation:ctb-ldin .6s ease-out both;animation-delay:calc(var(--k) * 140ms + 300ms)}
.ctb .hear.run .ir{animation:ctb-irin .4s 1.1s cubic-bezier(.3,1.5,.5,1) both}
.ctb .hear.arm.run .dt,.ctb .hear.arm.run .br,.ctb .hear.arm.run .ld,.ctb .hear.arm.run .ir{opacity:1}
@keyframes ctb-dtin{from{opacity:0;transform:translateY(-9px)}to{opacity:1;transform:none}}
@keyframes ctb-brin{from{transform:scaleY(.15)}to{transform:none}}
@keyframes ctb-ldin{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}
@keyframes ctb-irin{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
.ctb .hear .ir{transform-box:fill-box;transform-origin:50% 50%}
.ctb .hear b{display:block;font:400 21px/1.2 var(--serif);color:var(--navy)}
.ctb .hear span{display:block;margin-top:5px;font:400 16px/1.5 var(--sans)}
.ctb .hear small{display:block;margin-top:6px;font:400 13px/1.3 var(--sans);color:var(--muted);font-variant-numeric:lining-nums}
/* C 3. how the book is built: its parts top to bottom, each with a mark of what is inside; a portrait spread beside */
/* the book's ruler again, standing: each part is as tall as its pages, its tab on the left; the portraits in navy */
.ctb .map{margin:0;padding:0;list-style:none;position:relative}
.ctb .map li{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr);gap:14px;align-items:start;padding:8px 0;border-top:1px solid var(--line)}
.ctb .map li:first-child{border-top:0}
.ctb .map li>span:last-child{padding-top:3px}
.ctb .map .mk{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--navy);color:var(--navy);font:400 17px/1 var(--serif);font-variant-numeric:lining-nums}
.ctb .map li.big .mk{background:var(--navy);color:#fff}
.ctb .map b{display:block;font:400 18px/1.2 var(--serif);color:var(--navy)}
.ctb .map small{display:block;margin-top:2px;font:400 13px/1.3 var(--sans);color:var(--muted);font-variant-numeric:lining-nums}
.ctb .map .s16{display:grid;grid-template-columns:repeat(8,22px);gap:3px;margin-top:6px;color:var(--navy)}
.ctb .map .s16 svg{width:22px;height:22px}
.ctb .port{margin:26px 0 0}
.ctb .port img{display:block;width:100%;height:auto;aspect-ratio:4/3;border-radius:var(--rp,8px);background:#fff;box-shadow:0 16px 28px -20px rgba(20,30,45,.55),0 0 0 1px rgba(40,66,87,.12)}
.ctb .port figcaption{margin-top:10px;font:400 16px/1.5 var(--sans)}
/* C 4. the bridge to «Точный тип»: one line, not a second sale */
.ctb .brg{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 14px;align-items:center;margin-top:40px;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ctb .brg svg.l{width:44px;height:44px;color:var(--navy)}
.ctb .brg p{margin:0;font:400 19px/1.3 var(--serif);color:var(--navy)}
.ctb .brg .qlink{grid-column:2;justify-self:start;color:var(--ink);font-size:16px;min-height:44px}

/* ---------- the second offer (Lex, 2026-10-30: after «Что внутри» the purchase once more): the book of your type as a
   framed sheet (DESIGN.md offers), the bundle as the quiet card under it ---------- */
.ctb .offer{display:grid;gap:16px}
.ctb .one{position:relative;display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px 18px;align-items:start;padding:20px;border:1px solid var(--navy);border-radius:var(--rc);background:#fff}
.ctb .one::before{content:"";position:absolute;inset:7px;border:1px solid var(--line);border-radius:calc(var(--rc) - 6px);pointer-events:none}
.ctb .one .ocv{position:relative;display:block;width:100%;height:auto;aspect-ratio:2/3;border-radius:var(--rp,8px);box-shadow:0 14px 22px -14px rgba(20,30,45,.55),0 0 0 1px rgba(40,66,87,.14)}
.ctb .one h2{position:relative;margin:0;font:400 22px/1.2 var(--serif);color:var(--navy);text-wrap:balance}
.ctb .one .of{position:relative;margin:8px 0 0;font:400 15px/1.45 var(--sans);color:var(--muted)}
.ctb .one .buy{position:relative;grid-column:1/-1;margin-top:2px}
.ctb .one .pk1{grid-column:1/-1;position:relative;margin:0}
.ctb .one:has(.pk1){grid-template-columns:minmax(0,1fr)}
@media (max-width:899px){
 .ctb .one{margin-inline:calc(-1*var(--px));padding:26px var(--px) 28px;border:0;border-radius:0;background:var(--navy);color:#fff}
 .ctb .one::before{display:none}
 .ctb .one h2{color:#fff}.ctb .one .of{color:rgba(255,255,255,.76)}.ctb .one .seal,.ctb .one .price{color:#fff}
 .ctb .one .ocv{box-shadow:0 14px 22px -12px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.14)}
 .ctb .one .btn.ob{background:linear-gradient(#fff,#EEF0F3);color:var(--navy);border-color:#fff;box-shadow:inset 0 -2px 0 rgba(40,66,87,.12),0 8px 18px -10px rgba(0,0,0,.6)}
 .ctb .one .btn.ob::after{background:linear-gradient(90deg,rgba(25,76,142,0),#194C8E);box-shadow:0 0 6px 1px rgba(25,76,142,.55)}
 .ctb .one :focus-visible{outline-color:#fff}}

/* ---------- the bundle: a quiet card, the sixteen covers in a cascade ---------- */
.ctb .bund{display:grid;gap:18px;padding:20px;border:1px solid var(--line);border-radius:var(--rc);background:#fff}
/* the sixteen real covers, two rows of eight */
/* by quadra: Alpha | Beta over Gamma | Delta, each four with its name under them */
.ctb .casc{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) 8px repeat(4,minmax(0,1fr));gap:5px 5px;align-items:end}
.ctb .casc img:nth-of-type(8n+5){grid-column-start:6}
.ctb .casc .cq{grid-column:span 4;margin:0 0 6px;font:400 13px/1.2 var(--serif);font-style:italic;color:var(--muted);text-align:center;border-top:1px solid var(--line);padding-top:4px}
.ctb .casc .cq.r{grid-column:6/span 4}
.ctb .casc img{display:block;width:100%;height:auto;aspect-ratio:2/3;border-radius:3px;box-shadow:0 6px 10px -8px rgba(20,30,45,.6),0 0 0 1px rgba(40,66,87,.12)}
.ctb .bund h3{margin:0;font:400 24px/1.2 var(--serif);color:var(--navy)}
.ctb .bund p{margin:6px 0 0;font:400 16px/1.5 var(--sans)}
.ctb .bund .buy{margin-top:14px}
.ctb .bpr{margin:0;white-space:nowrap}.ctb .bpr .price{font-size:30px}.ctb .bpr s{margin-left:6px;font:400 15px/1 var(--sans);color:var(--muted)}

/* ---------- delivery and refund in one line, then the questions ---------- */
.ctb .dl{display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;margin:4px 0 12px;font:400 14.5px/1.4 var(--sans);color:var(--muted)}
.ctb .dl>span{display:inline-flex;align-items:flex-start;gap:8px}
.ctb .dl svg{width:18px;height:18px;flex:none;margin-top:1px;color:var(--navy)}
.ctb .faq{margin:0}
.ctb .fq{border-bottom:1px solid var(--line)}
.ctb .fq h3{margin:0}
.ctb .fq button{all:unset;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) 22px;gap:12px;align-items:center;width:100%;min-height:54px;padding:12px 0;cursor:pointer;font:500 16px/1.4 var(--sans);color:var(--navy)}
.ctb .fq button svg{width:20px;height:20px;transition:transform .2s}
.ctb .fq button[aria-expanded="true"] svg{transform:rotate(180deg)}
.ctb .fq button:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:6px}
.ctb .fa{padding:0 0 16px;font:400 16px/1.6 var(--sans)}
.ctb .fa p{margin:0}
.ctb .fa[hidden]{display:none}

/* ---------- the final screen ---------- */
.ctb .fin{position:relative;overflow:hidden;padding:52px 0 56px;text-align:center}
.ctb .fin .deco{position:absolute;left:50%;top:50%;width:560px;height:560px;translate:-50% -50%;color:#fff;opacity:.07;pointer-events:none}
.ctb .fin .wrap{position:relative}
.ctb .fin h2{margin:0 auto 24px;max-width:15em;font:400 30px/1.18 var(--serif);color:#fff;text-wrap:balance}
.ctb .fin .qlink{color:#fff;margin-top:14px}
.ctb .fin .alt{display:block;margin:4px 0 0}

/* the phone's slim sticky bar (as «Точный тип») */
.ctb .sbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;align-items:center;gap:10px;height:calc(46px + env(safe-area-inset-bottom));padding:0 max(12px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(16px,env(safe-area-inset-left));
  background:rgba(255,255,255,.97);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .25s}
.ctb .sbar.on{transform:none}
.ctb .sbar>span{flex:1;min-width:0;font:400 14px/1.2 var(--sans);color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ctb .sbar .bp{flex:none;font:400 17px/1 var(--serif);color:var(--navy)}
.ctb .sbar a{position:relative;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:7px;background:var(--ink);color:#fff;font:500 14px/1 var(--sans);text-decoration:none}
.ctb .sbar a::before{content:"";position:absolute;inset:-8px -6px}
.ctb .sbar a svg{width:15px;height:15px}
.ctb .sbar a:focus-visible{outline:2px solid var(--navy);outline-offset:3px}

/* ===== TABLET (600-899): the site's 640 column ===== */
@media (min-width:600px) and (max-width:899px){.ctb .wrap{max-width:calc(640px + 2*var(--px))}
 .ctb .bh h1{font-size:44px}
 .ctb .g16 .row{grid-template-columns:repeat(4,minmax(0,1fr))}
 .ctb .spx{grid-template-columns:1fr 1fr;gap:26px 20px}
 .ctb .sbar{padding-inline:max(16px,calc((100vw - 640px)/2))}}

/* ===== DESKTOP (≥900) ===== */
@media (min-width:900px){
 .ctb .sec{padding:104px 0}
 .ctb .sec h2{font-size:44px;margin-bottom:18px}
 .ctb .sec .sub{font-size:17px;margin-bottom:36px}
 .ctb .btn{width:auto;min-width:240px}
 .ctb .buy{grid-template-columns:auto auto;justify-content:start;gap:24px}
 .ctb .sbar{display:none}
 /* the first screen: the words left, the book right (the cover in front), the signs in the book's place */
 .ctb .bh{padding:64px 0 80px}
 .ctb .bh .halo2{right:auto;left:-200px;top:-320px;width:780px;height:780px}
 .ctb .bh .wrap{grid-template-columns:minmax(0,1fr) 560px;column-gap:72px;align-items:center;
   grid-template-areas:"you vis" "h1 vis" "sub vis" "facts vis" "buy vis" "oth vis";grid-template-rows:auto auto auto auto auto 1fr}
 .ctb .bh h1{font-size:60px;line-height:1.03}
 .ctb .bh .sub{font-size:20px;margin-top:18px}
 .ctb .facts3{margin:28px 0 30px}
 .ctb .vis,.ctb .pick{margin-top:0;align-self:center}
 .ctb .bk .sp img,.ctb .bk .cv{border-radius:12px}.ctb .bk .sp{border-radius:12px}
 .ctb .bk{--ar:74}.ctb .bk figcaption{font-size:13px}
 .ctb .pick{padding:26px 28px 20px;border:1px solid rgba(255,255,255,.22);border-radius:var(--rc);background:rgba(255,255,255,.03)}
 .ctb .g16 .row{grid-template-columns:72px repeat(4,minmax(0,1fr));align-items:center}
 .ctb .g16 .qn{display:block;font:400 15px/1.1 var(--serif);color:rgba(255,255,255,.66)}
 .ctb .g16 button{min-height:84px}
 .ctb .g16 button svg{width:44px;height:44px}
 .ctb .bh.nt .wrap{grid-template-areas:"h1 vis" "sub vis" "you vis" "facts vis" "buy vis" "oth vis";grid-template-rows:auto auto 1fr}
 .ctb .bh.nt h1{align-self:end}
 .ctb .bh.nt .wrap{grid-template-areas:"h1 vis" "sub vis" "npv vis" "facts vis" "buy vis";grid-template-rows:auto auto auto auto 1fr}
 .ctb .bh.nt .npv{grid-area:npv;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px 7px;max-width:470px;margin-top:30px}
 .ctb .npv img{display:block;width:100%;height:auto;aspect-ratio:2/3;border-radius:3px;opacity:.85;box-shadow:0 0 0 1px rgba(255,255,255,.12);transition:opacity .2s,transform .2s}
 .ctb .npv.hv img{opacity:.25}.ctb .npv img.on{opacity:1;transform:translateY(-4px)}
 .ctb .bh.nt .facts3{margin-top:24px}
 /* specimens: three (A) / four (B) spreads in a row or two by two, captions under */
 .ctb .ruler{margin-bottom:70px}
 .ctb #ctb-in .wrap{position:relative}
 .ctb .lead{display:block;position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;overflow:visible}
 .ctb .lead path{fill:none;stroke:var(--navy);stroke-width:1;stroke-opacity:.5}
 .ctb .lead circle{fill:var(--navy)}
 /* the spreads stand in one row under the ruler, so no leader crosses another spread */
 .ctb .spx{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;align-items:start}
 .ctb .spx.s4{grid-template-columns:1fr 1fr;gap:44px 40px}
 .ctb .spx .ln{font-size:16px}
 .ctb .toc{margin-top:44px}
 .ctb .toc ol{columns:2;column-gap:56px}
 /* B: the pair — the lenses and the answer left (sticky), the sixteen right */
 .ctb .pair .lay{display:grid;grid-template-columns:minmax(0,1fr) 520px;column-gap:72px;align-items:start}
 .ctb .pair .lft{display:block}
 .ctb .duo{grid-template-columns:112px minmax(0,1fr) 112px}
 .ctb .duo .ep{width:112px;height:112px}.ctb .duo .disk,.ctb .duo .disk svg{width:84px;height:84px}
 .ctb .duo .ln{height:112px}
 .ctb .duo .ln b{font-size:20px;padding:4px 12px}
 .ctb .duo .nm{font-size:19px}
 .ctb .pair .rgt{padding:24px 26px 18px;border:1px solid var(--line);border-radius:var(--rc)}
 .ctb .pair .thl{margin-top:0}
 .ctb .g16.lt .row{grid-template-columns:72px repeat(4,minmax(0,1fr))}
 .ctb .g16.lt .qn{color:var(--muted)}
 .ctb .ans .ah{grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"h p" "w p" "q p";grid-template-rows:auto auto 1fr;gap:0 32px}
 .ctb .pair .duo{margin-top:0}
 .ctb .ans .cht{font-size:28px}
 .ctb .ans blockquote{font-size:19px}
 .ctb .more{padding:22px 26px}
 .ctb .more p{font-size:22px}
 /* C */
 .ctb .hear{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}
 .ctb .hear li{grid-template-columns:1fr;gap:18px}
 .ctb .hear .fig{width:136px;height:136px}.ctb .hear .fig svg.d{width:88px;height:88px}
 .ctb .hear b{font-size:24px}
 .ctb .seal{width:96px;height:96px}.ctb .seal .price{font-size:31px}
 .ctb .mapw{display:grid;grid-template-columns:minmax(0,440px) minmax(0,1fr);column-gap:72px;align-items:start}
 .ctb .port{margin:0;position:sticky;top:100px}
 .ctb .brg{grid-template-columns:56px auto auto;justify-content:start;gap:24px;margin-top:56px;padding:26px 0}
 .ctb .brg .qlink{grid-column:auto}
 .ctb .brg svg.l{width:56px;height:56px}
 .ctb .brg p{font-size:24px}
 /* the offer: the cover left, the title and the price right, in one framed sheet */
 .ctb .one{grid-template-columns:150px minmax(0,1fr) auto;column-gap:40px;align-items:center;padding:34px 40px}
 .ctb .one::before{inset:8px}
 .ctb .one h2{font-size:32px}
 .ctb .one .of{font-size:16px}
 .ctb .one .buy{grid-column:3;margin:0}
 .ctb .one:has(.pk1){grid-template-columns:minmax(0,1fr) auto}.ctb .one .pk1{grid-column:2}
 .ctb .offer{gap:24px}
 /* the bundle: the cascade left, the words and the price right */
 .ctb .bund{grid-template-columns:420px minmax(0,1fr);gap:48px;align-items:center;padding:30px 36px}
 .ctb .casc{gap:8px 7px}
 .ctb .bund h3{font-size:30px}
 /* FAQ: all open, two columns, the questions out of the tab order */
 .ctb .faq{display:grid;grid-template-columns:1fr 1fr;column-gap:56px}
 .ctb .fq button{pointer-events:none;cursor:default;grid-template-columns:minmax(0,1fr)}
 .ctb .fq button svg{display:none}
 .ctb .fa,.ctb .fa[hidden]{display:block}.ctb .fa{font-size:17px}
 .ctb .fin{padding:120px 0 128px}
 .ctb .fin h2{font-size:48px;margin-bottom:36px}
}
@media (min-width:1100px){.ctb .spx.s4{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}.ctb .spx.s4 b{font-size:19px}.ctb .spx.s4 .ln{font-size:15px}}
@media (min-width:900px) and (max-width:1199px){
 .ctb .bh .wrap{grid-template-columns:minmax(0,1fr) 440px;column-gap:44px}
 .ctb .bh h1{font-size:48px}
 .ctb .pair .lay{grid-template-columns:minmax(0,1fr) 440px;column-gap:40px}
 .ctb .bund{grid-template-columns:340px minmax(0,1fr);gap:32px}
 .ctb .mapw{grid-template-columns:minmax(0,380px) minmax(0,1fr);column-gap:40px}
}
/* round 3 (critics): hover, touch, narrow phones, the tablet, the 900-1199 band, the desktop paper radius */
.ctb button,.ctb a{touch-action:manipulation}
.ctb .btn{transition:filter .15s,transform .15s}
@media (hover:hover){.ctb .btn:hover{filter:brightness(1.07);transform:translateY(-1px)}
 .ctb .qlink:hover,.ctb .oth button:hover,.ctb .unk button:hover,.ctb .duo .chg:hover{text-decoration-thickness:2px}
 .ctb .toc summary:hover,.ctb .fq button:hover{color:var(--ink)}
 .ctb .unk li a:hover{border-color:var(--navy)}}
@media (min-width:360px) and (max-width:399px){.ctb .btn{white-space:nowrap;padding:0 16px}}
@media (min-width:600px) and (max-width:899px){
 .ctb .vis{max-width:520px;margin-inline:auto}
 .ctb .btn{width:auto;min-width:260px}
 .ctb .buy{grid-template-columns:auto auto;justify-content:start}
 .ctb .ans .ah{grid-template-columns:minmax(0,1fr) 180px}}
@media (min-width:900px){.ctb{--rp:12px}
 .ctb .facts3 li,.ctb .spx .ln,.ctb .hear span,.ctb .bund p,.ctb .toc li{font-size:17px}
 .ctb .mini{display:none}
 .ctb .toc summary{pointer-events:none;cursor:default}.ctb .toc summary svg{display:none}}
@media (min-width:900px) and (max-width:1199px){
 .ctb .g16.lt .row{grid-template-columns:56px repeat(4,minmax(0,1fr));column-gap:4px}
 .ctb .g16.lt button span{font-size:11px}}

/* focus: one rule for the page, white on navy */
.ctb :focus-visible{outline:2px solid var(--navy);outline-offset:3px}
.ctb .navy :focus-visible{outline-color:#fff}
@media (prefers-reduced-motion:reduce){.ctb *,.ctb *::before,.ctb *::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media (prefers-reduced-motion:reduce){.ctb .duo .ln::before,.ctb .duo .ln b,.ctb .vlens svg{animation:none}.ctb .btn::after{display:none}.ctb .sbar,.ctb .oth button svg,.ctb .unk button svg,.ctb .toc summary svg,.ctb .fq button svg,.ctb .spx img{transition:none}}

/* --- Developer additions (not in the prototype's CSS) --- */
.ctb [hidden]{display:none!important}
/* base.css: .ct p+p adds a top margin; the prototype spaces its own paragraphs */
.ctb p+p{margin-top:0}
/* the screen-reader text sits inside its box (a link's «opens in a new window» stretched the button's scroll width) */
.ctb .vh{left:0;top:0}
/* the phone bar: a long type name («Guardián de la Llama», «Огнехранитель») takes a second line at 320-360 px instead
   of an ellipsis */
.ctb .sbar>span{white-space:normal;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
/* the visitor's type is known before the first paint (the head script sets data-ctb-t on <html>): the sixteen signs and
   the no-type lines never show while the book is filled in */
html[data-ctb-t] .ctb .bh.nt .pick,html[data-ctb-t] .ctb .bh.nt .npv,html[data-ctb-t] .ctb .bh.nt .ntp{display:none!important}
