/* Books: studio layout (screen) + the printed page styles. Page colours, sizes and fonts come from CSS variables
   that ui/book-render.js sets on the preview host from the book's design. */

/* ---------------------------------------------------------------- studio layout */
body.bk-wide{max-width:1760px}
.bk-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}
.bk-card{display:flex;flex-direction:column;border-radius:14px;overflow:hidden;background:var(--glass);border:1px solid var(--glass-border);box-shadow:var(--shadow);text-decoration:none;color:inherit}
.bk-card:hover{box-shadow:var(--shadow-lg)}
.bk-card .cv{height:120px;display:flex;align-items:center;justify-content:center;padding:.8rem;text-align:center;font-weight:800;line-height:1.25;font-size:1.02rem}
.bk-card .in{padding:.75rem .9rem;display:flex;flex-direction:column;gap:.3rem;flex:1}
.bk-card .acts{display:flex;gap:.35rem;margin-top:auto;padding-top:.4rem;flex-wrap:wrap}
.bk-studio{display:grid;grid-template-columns:290px minmax(0,1fr) 340px;gap:.9rem;align-items:start}
.bk-side,.bk-design{position:sticky;top:calc(var(--bar-h,64px) + .5rem);max-height:calc(100vh - var(--bar-h,64px) - 1rem);overflow:auto;padding-right:2px}
.bk-main{min-width:0}
.bk-panel{background:var(--glass);border:1px solid var(--glass-border);border-radius:14px;padding:.8rem .85rem;margin-bottom:.7rem;box-shadow:var(--shadow)}
.bk-panel h4{margin:0 0 .5rem;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2)}
.bk-bar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:.6rem}
.bk-bar .grow{flex:1}
.bk-chlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.bk-ch{display:flex;align-items:center;gap:.35rem;padding:.4rem .5rem;border-radius:10px;border:1.5px solid transparent;cursor:pointer;background:rgba(255,255,255,.6)}
.bk-ch:hover{background:#fff}
.bk-ch.on{border-color:var(--accent);background:#fff}
.bk-ch .n{width:1.5rem;height:1.5rem;border-radius:7px;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:.75rem;display:flex;align-items:center;justify-content:center;flex:none}
.bk-ch .t{flex:1;min-width:0;font-weight:600;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-ch .c{font-size:.72rem;color:var(--text-3);flex:none}
.bk-ch button{border:0;background:transparent;cursor:pointer;color:var(--text-3);padding:.15rem .3rem;border-radius:6px;font-size:.78rem}
.bk-ch button:hover{background:var(--accent-soft);color:var(--accent)}
.bk-tabs{display:flex;gap:.3rem;margin-bottom:.6rem}
.bk-tabs button{border:1.5px solid var(--hair);background:rgba(255,255,255,.7);padding:.4rem .85rem;border-radius:10px;font:inherit;font-weight:700;cursor:pointer;font-size:.86rem}
.bk-tabs button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.bk-preview{background:#cbd5e1;border-radius:12px;padding:1rem;overflow:auto;max-height:calc(100vh - 150px);min-height:300px}
.bk-preview.spreads .bk-pages{display:grid;grid-template-columns:repeat(2,max-content);justify-content:center;gap:0 4px}
.bk-status{font-size:.78rem;color:var(--text-2)}
.bk-prog{height:6px;border-radius:99px;background:rgba(15,23,42,.1);overflow:hidden;margin:.4rem 0}
.bk-prog i{display:block;height:100%;width:0;background:var(--accent);transition:width .15s}

/* question rows in the editor */
.bk-items{display:flex;flex-direction:column;gap:.45rem}
.bk-item{background:rgba(255,255,255,.85);border:1px solid var(--hair);border-radius:12px;padding:.6rem .7rem;display:grid;grid-template-columns:auto 1fr;gap:.55rem}
.bk-item.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.bk-item .no{font-weight:800;color:var(--accent);min-width:1.6rem}
.bk-item .q{font-weight:600;white-space:pre-line;overflow-wrap:anywhere}
.bk-item .o{display:grid;grid-template-columns:1fr 1fr;gap:.1rem .8rem;font-size:.82rem;color:var(--text-2);margin-top:.25rem}
.bk-item .o .ok{color:var(--ok);font-weight:700}
.bk-item .row{margin-top:.4rem;gap:.3rem}
.bk-item.block{background:rgba(238,242,255,.8);border-style:dashed}
.bk-item.gone{opacity:.65;border-color:var(--bad)}
.bk-ex-tag{font-size:.7rem;font-weight:700;border-radius:99px;padding:.1rem .5rem}
.bk-ex-tag.ai{background:#ede9fe;color:#6d28d9}.bk-ex-tag.man{background:var(--ok-soft);color:var(--ok)}.bk-ex-tag.note{background:var(--accent-soft);color:var(--accent)}.bk-ex-tag.none{background:rgba(15,23,42,.06);color:var(--text-3)}.bk-ex-tag.off{background:var(--bad-soft);color:var(--bad)}
.bk-pick{max-height:50vh;overflow:auto;border:1px solid var(--hair);border-radius:10px;background:#fff}
.bk-pick label{display:flex;gap:.5rem;align-items:flex-start;padding:.45rem .6rem;border-bottom:1px solid var(--hair);cursor:pointer;font-size:.86rem}
.bk-pick label input{width:auto;margin-top:.2rem}
.bk-topicrow{display:grid;grid-template-columns:auto 1fr 80px;gap:.5rem;align-items:center;padding:.3rem .5rem;border-bottom:1px solid var(--hair);font-size:.88rem}
.bk-topicrow input[type=number]{width:100%}
.bk-chips{display:flex;flex-wrap:wrap;gap:.35rem}
.bk-chip{border:1.5px solid var(--hair);background:#fff;border-radius:99px;padding:.25rem .7rem;font-size:.8rem;cursor:pointer;font-weight:600}
.bk-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.bk-modal-wide .modal{max-width:880px}
.bk-tok{font-size:.72rem;color:var(--text-3)}
.bk-presets{display:grid;gap:.4rem}
.bk-preset{border:1.5px solid var(--hair);border-radius:10px;padding:.45rem .6rem;background:#fff;cursor:pointer;text-align:left;font:inherit}
.bk-preset:hover{border-color:var(--accent)}
.bk-preset b{display:block;font-size:.86rem}.bk-preset span{font-size:.74rem;color:var(--text-2)}
.bk-colorrow{display:flex;gap:.4rem;align-items:center}
.bk-colorrow input[type=color]{width:42px;height:34px;padding:2px;border-radius:8px;flex:none}
.bk-colorrow input[type=text]{flex:1}
@media(max-width:1280px){.bk-studio{grid-template-columns:260px minmax(0,1fr)}.bk-design{grid-column:1 / -1;position:static;max-height:none}}
@media(max-width:900px){.bk-studio{grid-template-columns:1fr}.bk-side{position:static;max-height:none}.bk-preview{max-height:none}}

/* ---------------------------------------------------------------- printed pages */
.bk-root{--bk-f-body:'SolaimanLipi','Noto Sans Bengali',sans-serif}
.bk-pages{display:flex;flex-direction:column;align-items:center;gap:10px}
.bk-page{position:relative;box-sizing:border-box;flex:none;width:var(--bk-w);height:var(--bk-h);background:var(--bk-bg);color:var(--bk-text);overflow:hidden;
  box-shadow:0 2px 10px rgba(15,23,42,.25);font-family:var(--bk-f-body);font-size:var(--bk-fs);line-height:var(--bk-lh);contain:layout paint style;
  -webkit-print-color-adjust:exact;print-color-adjust:exact;text-align:var(--bk-just)}
.bk-page *{box-sizing:border-box}
.bk-border{position:absolute;border:1px solid var(--bk-bd);pointer-events:none}
.bk-border.bd-thick{border-width:2.2px}.bk-border.bd-double{border:4px double var(--bk-bd)}.bk-border.bd-dashed{border-style:dashed}
.bk-wm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transform:rotate(-32deg);font-weight:800;white-space:nowrap;pointer-events:none;font-family:var(--bk-f-head)}
.bk-hdr,.bk-ftr{position:absolute;left:var(--ml);right:var(--mr);display:none;font-family:var(--bk-f-hdr);font-size:var(--bk-hfs);color:var(--bk-hf);line-height:1.2}
.bk-hdr{top:0;height:var(--mt);padding-bottom:2.2mm;align-items:flex-end}
.bk-ftr{bottom:0;height:var(--mb);padding-top:2.2mm;align-items:flex-start}
.bk-hdr.on,.bk-ftr.on{display:grid;grid-template-columns:1fr auto 1fr;gap:4mm}
.bk-hdr.rule>*{border-bottom:0}.bk-hdr.rule{border-bottom:.3mm solid var(--bk-hf)}
.bk-ftr.rule{border-top:.3mm solid var(--bk-hf)}
.bk-hdr .l,.bk-ftr .l{text-align:left}.bk-hdr .c,.bk-ftr .c{text-align:center}.bk-hdr .r,.bk-ftr .r{text-align:right}
.bk-hdr span,.bk-ftr span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-body{position:absolute;left:var(--ml);right:var(--mr);top:var(--mt);bottom:var(--mb);display:flex;flex-direction:column}
.bk-top{flex:none}
.bk-cols{flex:1;min-height:0;display:flex;gap:var(--bk-cgap)}
.bk-col{flex:1 1 0;min-width:0;overflow:hidden}
.bk-page[data-cols="2"] .bk-col+.bk-col{border-left:var(--bk-crule);padding-left:var(--bk-cgap);margin-left:calc(var(--bk-cgap) * -.5)}
.bk-blank .bk-hdr,.bk-blank .bk-ftr{display:none}

/* chapter openers */
.bk-chap{margin:0 0 5mm;font-family:var(--bk-f-head)}
.bk-chap.ta-center{text-align:center}
.bk-chap-no{font-size:.9em;font-weight:700;letter-spacing:.03em;color:var(--ch-ac,var(--bk-ac))}
.bk-chap-title{margin:0;font-size:var(--bk-h1);line-height:1.2;font-weight:800;color:var(--bk-head)}
.bk-chap-sub{font-size:1.05em;color:var(--bk-muted);margin-top:1mm}
.bk-chap-meta{font-size:.85em;color:var(--bk-muted);margin-top:1.5mm}
.bk-chap.cs-banner{background:var(--ch-ac,var(--bk-ac));color:#fff;padding:7mm 8mm;border-radius:2mm}
.bk-chap.cs-banner .bk-chap-no,.bk-chap.cs-banner .bk-chap-title,.bk-chap.cs-banner .bk-chap-sub,.bk-chap.cs-banner .bk-chap-meta{color:#fff}
.bk-chap.cs-banner .bk-chap-no{opacity:.85}
.bk-chap.cs-boxed{border:.6mm solid var(--ch-ac,var(--bk-ac));padding:6mm 7mm;border-radius:2mm}
.bk-chap.cs-minimal{border-bottom:.7mm solid var(--ch-ac,var(--bk-ac));padding-bottom:3mm}
.bk-chap.cs-numbered{position:relative;padding-left:0;border-bottom:.3mm solid var(--bk-qbd);padding-bottom:3mm}
.bk-chap.cs-numbered .bk-chap-no{font-size:calc(var(--bk-h1) * 2.2);line-height:1;font-weight:800;opacity:.9}
.bk-chap.cs-numbered .bk-chap-no{margin-bottom:1mm}
.bk-chap.cs-inline{border-left:1.6mm solid var(--ch-ac,var(--bk-ac));padding:1.5mm 0 1.5mm 4mm;margin:2mm 0 4mm;background:rgba(0,0,0,.025)}
.bk-chap.cs-inline .bk-chap-title{font-size:calc(var(--bk-h1) * .62)}
.bk-fullopener .bk-top{flex:1;display:flex;align-items:center;justify-content:center}
.bk-fullopener .bk-chap{text-align:center;width:100%;border:0;background:none;color:var(--bk-head)}
.bk-fullopener .bk-chap.cs-banner{background:var(--ch-ac,var(--bk-ac));color:#fff;padding:18mm 8mm}
.bk-fullopener .bk-chap-title{font-size:calc(var(--bk-h1) * 1.5)}
.bk-fullopener .bk-cols{display:none}

/* text blocks */
.bk-p{margin:0 0 2.5mm;white-space:pre-line;overflow-wrap:anywhere}
.bk-intro{color:var(--bk-muted);font-style:italic}
.bk-h2{font-family:var(--bk-f-head);font-weight:800;font-size:var(--bk-h2);color:var(--bk-head);margin:3mm 0 2.5mm;padding-bottom:1mm;border-bottom:.3mm solid var(--bk-qbd);break-after:avoid}
.bk-h2.bk-endh{color:var(--bk-ac);border-bottom-color:var(--bk-ac)}
.bk-keep{break-inside:avoid}

/* questions */
.bk-q{margin:0 0 var(--bk-qsp);break-inside:avoid;overflow-wrap:anywhere}
.bk-qh{display:flex;gap:1.6mm;align-items:baseline;font-family:var(--bk-f-q)}
.bk-qn{flex:none;min-width:5mm;font-weight:800;color:var(--bk-ac)}
.bk-qt{flex:1;font-weight:var(--bk-qw);white-space:pre-line;font-size:var(--bk-fs)}
.bk-qm{flex:none;font-weight:700;color:var(--bk-muted);font-size:.9em}
.bk-tags{display:flex;flex-wrap:wrap;gap:1mm 1.6mm;margin:.9mm 0 0 6.6mm}
.bk-tag{font-size:.72em;font-family:var(--bk-f-hdr)}
.bk-tags.tg-pill .bk-tag{padding:.2mm 1.8mm;border-radius:9mm;background:var(--bk-ac2);color:#fff;font-weight:700}
.bk-tags.tg-pill .bk-tag.df-easy{background:#16a34a}.bk-tags.tg-pill .bk-tag.df-medium{background:#d97706}.bk-tags.tg-pill .bk-tag.df-hard{background:#dc2626}
.bk-tags.tg-text .bk-tag{color:var(--bk-muted)}.bk-tags.tg-text .bk-tag+.bk-tag::before{content:'· '}
.bk-opts{margin:1mm 0 0 var(--bk-oind);font-family:var(--bk-f-opt);font-size:var(--bk-ofs)}
.bk-opts.o-grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--bk-ogap) 5mm}
.bk-opts.o-row{display:flex;flex-wrap:wrap;gap:var(--bk-ogap) 7mm}
.bk-opts.o-list{display:flex;flex-direction:column;gap:var(--bk-ogap)}
.bk-o{display:flex;gap:1.5mm;overflow-wrap:anywhere}
.bk-ol{flex:none;color:var(--bk-muted);font-weight:600}
.bk-o.is-ans{font-weight:700;background:var(--bk-okbg);color:var(--bk-ok);border-radius:1mm;padding:0 1.2mm}
.bk-o.is-ans .bk-ol{color:var(--bk-ok)}
.bk-ans{margin:1.2mm 0 0 var(--bk-oind);font-weight:700;color:var(--bk-ok);font-size:var(--bk-ofs)}
.bk-ex{margin:1.8mm 0 0 var(--bk-oind);font-family:var(--bk-f-ex);font-size:var(--bk-efs);color:var(--bk-excl);line-height:1.4}
.bk-exl{font-weight:800;color:var(--bk-exbd)}
.bk-ext{white-space:pre-line;overflow-wrap:anywhere}
.bk-ex.ex-box{background:var(--bk-exbg);border-radius:1.4mm;padding:1.6mm 2.4mm}
.bk-ex.ex-leftbar{border-left:1.1mm solid var(--bk-exbd);padding:.6mm 0 .6mm 2.4mm;background:linear-gradient(90deg,var(--bk-exbg),transparent)}
.bk-ex.ex-dashed{border:.3mm dashed var(--bk-exbd);border-radius:1.4mm;padding:1.6mm 2.4mm}
.bk-ex.ex-plain{padding:0}
.bk-ex.ex-ribbon{background:var(--bk-exbg);border-radius:0 1.4mm 1.4mm 0;padding:1.6mm 2.4mm 1.6mm 2.4mm;position:relative}
.bk-ex.ex-ribbon .bk-exl{display:inline-block;background:var(--bk-exbd);color:#fff;padding:0 2mm;border-radius:1mm;margin-bottom:.8mm;font-size:.9em}
.bk-exrow{display:flex;gap:1.6mm;margin:0 0 2mm;font-size:var(--bk-efs);font-family:var(--bk-f-ex);break-inside:avoid}
/* question frames */
.bk-q.qs-card{background:var(--bk-qbg);border:.3mm solid var(--bk-qbd);border-radius:2mm;padding:2.4mm 3mm}
.bk-q.qs-boxed{border:.35mm solid var(--bk-text);padding:2.2mm 3mm}
.bk-q.qs-leftbar{border-left:1.1mm solid var(--bk-ac);padding:.4mm 0 .4mm 3mm}
.bk-q.qs-pill .bk-qn{background:var(--bk-ac);color:#fff;border-radius:9mm;padding:0 2mm;min-width:0;font-size:.9em}
/* answer key */
.bk-keygrid{display:grid;gap:1.2mm 3mm;margin:0 0 3mm;font-size:var(--bk-ofs)}
.bk-keyc{white-space:nowrap}.bk-keyc b{color:var(--bk-ac)}
/* front matter */
.bk-sp-title{font-family:var(--bk-f-head);font-size:var(--bk-h1);color:var(--bk-head);margin:0 0 6mm;padding-bottom:2mm;border-bottom:.7mm solid var(--bk-ac)}
.bk-sp-text{white-space:pre-line}
.bk-copyright .bk-sp-text{font-size:.85em;color:var(--bk-muted)}
.bk-copyright .bk-top,.bk-dedication .bk-top{margin-top:55%}
.bk-dedication .bk-sp-text{text-align:center;font-style:italic;font-size:1.25em}
.bk-titlepage .bk-top{flex:1;display:flex;align-items:center;justify-content:center}
.bk-tp{text-align:center;font-family:var(--bk-f-head)}
.bk-tp-title{font-size:calc(var(--bk-h1) * 1.5);margin:6mm 0 3mm;color:var(--bk-head);line-height:1.2}
.bk-tp-bar{width:30mm;height:1.2mm;background:var(--bk-ac);margin:0 auto 5mm}
.bk-tp-sub{font-size:1.2em;color:var(--bk-muted)}
.bk-tp-au{font-size:1.2em;font-weight:700;margin-top:12mm}
.bk-tp-pub{margin-top:5mm;color:var(--bk-muted)}
.bk-tocpage .bk-top{padding-bottom:1mm}
.bk-toc-row{display:flex;align-items:baseline;gap:1.5mm;font-size:var(--bk-toc);margin:0 0 2.2mm}
.bk-toc-t{flex:none;max-width:82%}.bk-toc-n{color:var(--bk-ac)}.bk-toc-c{font-style:normal;color:var(--bk-muted);font-size:.85em}
.bk-toc-fill{flex:1;min-width:4mm}
.bk-toc-row.dots .bk-toc-fill{border-bottom:.35mm dotted var(--bk-muted);transform:translateY(-1mm)}
.bk-toc-p{flex:none;font-weight:700}
/* covers */
.bk-k-cover,.bk-k-back{font-family:var(--bk-f-cv)}
.bk-cv{position:absolute;inset:0;background:var(--cv-bg);color:var(--cv-fg);overflow:hidden}
.cv-img{position:absolute;inset:0;background-size:cover;background-position:center}
.cv-img.cvi-top{bottom:42%}.cv-dim.cvi-top{bottom:42%}.cv-img.cvi-center{inset:22% 14% 30% 14%;border:1.2mm solid var(--cv-ac)}.cv-dim.cvi-center{inset:22% 14% 30% 14%}
.cv-dim{position:absolute;inset:0}
.cv-in{position:relative;height:100%;padding:18mm 16mm;display:flex;flex-direction:column;gap:6mm}
.ca-left .cv-in{text-align:left;align-items:flex-start}.ca-center .cv-in{text-align:center;align-items:center}.ca-right .cv-in{text-align:right;align-items:flex-end}
.cv-main{display:flex;flex-direction:column;gap:3mm}.ca-left .cv-main{align-items:flex-start}.ca-center .cv-main{align-items:center}.ca-right .cv-main{align-items:flex-end}
.cva-top .cv-main{margin-bottom:auto}.cva-middle .cv-main{margin:auto 0}.cva-bottom .cv-main{margin-top:auto}
.cv-logo{object-fit:contain;max-width:70mm}
.cv-tag{font-size:11pt;letter-spacing:.06em;color:var(--cv-ac);font-weight:700}
.cv-title{margin:0;font-size:calc(var(--bk-h1) * 1.62);line-height:1.15;font-weight:800}
.cv-bar{width:34mm;height:1.6mm;background:var(--cv-ac)}
.cv-sub{font-size:calc(var(--bk-h2) * 1.25);opacity:.92}
.cv-author{font-size:calc(var(--bk-h2) * 1.1);font-weight:700;margin-top:6mm;color:var(--cv-ac)}
.cv-foot{margin-top:auto;display:flex;flex-direction:column;gap:1.5mm;align-items:inherit;font-size:11pt}
.cva-bottom .cv-foot{margin-top:6mm}
.cv-ed{font-weight:700;color:var(--cv-ac)}.cv-pub{opacity:.9}
.cv-backtext{white-space:pre-line;font-size:12pt;max-width:140mm;line-height:1.6}
.cv-back .cv-in{justify-content:center;align-items:center;text-align:center}
.cv-minimal{background:var(--bk-bg);color:var(--cv-bg)}.cv-minimal .cv-bar{background:var(--cv-bg)}.cv-minimal .cv-tag,.cv-minimal .cv-ed,.cv-minimal .cv-author{color:var(--cv-bg)}
.cv-frame::after{content:'';position:absolute;inset:9mm;border:.8mm double var(--cv-ac);pointer-events:none}
.cv-band{background:var(--bk-bg);color:var(--cv-bg)}.cv-band .cv-main{background:var(--cv-bg);color:var(--cv-fg);margin-left:-16mm;margin-right:-16mm;padding:14mm 16mm;width:calc(100% + 32mm)}
.cv-band .cv-author{color:var(--cv-bg)}.cv-band .cv-tag,.cv-band .cv-ed{color:var(--cv-bg)}
.cv-split{background:var(--bk-bg);color:var(--cv-bg)}.cv-split::before{content:'';position:absolute;left:0;right:0;top:0;height:62%;background:var(--cv-bg)}
.cv-split .cv-main{color:var(--cv-fg)}.cv-split .cv-tag{color:var(--cv-ac)}.cv-split .cv-author{color:var(--cv-bg)}
.cv-split .cv-in{z-index:1}
.cv-back.cv-minimal,.cv-back.cv-band,.cv-back.cv-split{background:var(--cv-bg);color:var(--cv-fg)}.cv-back.cv-split::before{display:none}

/* ---------------------------------------------------------------- printing: only the book pages */
.bk-print-root{display:none}
@media print{
  body.bk-printing{padding:0!important;margin:0!important;max-width:none!important;background:#fff!important}
  body.bk-printing > *:not(.bk-print-root){display:none!important}
  body.bk-printing .bk-print-root{display:block!important}
  body.bk-printing .bk-print-root .bk-pages{display:block;gap:0}
  body.bk-printing .bk-page{box-shadow:none;margin:0;break-after:page;page-break-after:always;contain:none}
  body.bk-printing .bk-page:last-child{break-after:auto;page-break-after:auto}
}
