:root{--ink:#14212E;--muted:#5D6B7A;--line:#D9E1EA;--bg:#F3F6FA;--card:#fff;--brand:#1F4E79;--brand2:#2F6FA8;--accent:#C2410C;--ok:#1E7A4C;--bad:#B42318;--r:14px}
.f-students{--brand:#1E6B5A;--brand2:#2A8C76;--accent:#B45309}
.f-library{--brand:#7A2E2E;--brand2:#9C3D3D;--accent:#8A6D1E;--bg:#F7F3EE}
*{box-sizing:border-box}[hidden]{display:none!important}
html,body{margin:0}body{background:var(--bg);color:var(--ink);font:15px/1.5 Lexend,"Noto Sans Devanagari","Segoe UI",Arial,sans-serif;-webkit-user-select:none;user-select:none}
input,select,textarea{-webkit-user-select:text;user-select:text}
a{color:var(--brand2)}h1{font-size:26px;margin:0 0 6px;line-height:1.2}h2{font-size:18px;margin:0 0 10px}h3{font-size:15px;margin:14px 0 6px}
.wrap{max-width:1240px;margin:0 auto;padding:0 16px}main.wrap{padding-top:22px;padding-bottom:40px;min-height:70vh}
.top{background:var(--brand);color:#fff;position:sticky;top:0;z-index:20;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.bar{display:flex;align-items:center;gap:16px;min-height:62px;flex-wrap:wrap}.brand{display:flex;gap:10px;align-items:center;color:#fff;text-decoration:none;margin-right:auto}
.brand .mark{background:#fff;color:var(--brand);font-weight:700;border-radius:10px;padding:6px 8px;font-size:13px;letter-spacing:.5px}.brand b{display:block;font-size:16px}.brand small{display:block;opacity:.8;font-size:12px}
nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap}nav a{color:#fff;text-decoration:none;padding:7px 11px;border-radius:8px;font-weight:500}nav a:hover{background:rgba(255,255,255,.14)}nav a.ghost{border:1px solid rgba(255,255,255,.5)}nav .who{font-size:13px;opacity:.85;padding:0 6px}
.foot{color:var(--muted);font-size:12.5px;padding:18px 0 28px;border-top:1px solid var(--line)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:16px}.narrow{max-width:440px;margin:40px auto}
.login{display:flex;flex-direction:column;gap:12px}
label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;color:var(--muted)}label.chk{flex-direction:row;align-items:center;gap:7px;font-weight:500;color:var(--ink)}
input,select,textarea{font:inherit;color:var(--ink);padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;min-width:0}input[type=checkbox]{width:18px;height:18px;accent-color:var(--brand)}
.btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:600;padding:8px 15px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:var(--brand2)}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand2)}.btn.small{padding:5px 11px;font-size:13px}.btn.bad{color:var(--bad)}.btn.ghost{background:transparent}.btn:disabled{opacity:.55;cursor:wait}
.muted{color:var(--muted)}.small{font-size:13px}.bad{color:var(--bad)}.c{text-align:center}
.flash{padding:11px 14px;border-radius:10px;margin-bottom:16px;background:#E5F3EA;color:#1E6B43}.flash.bad{background:#FDECEA;color:var(--bad)}
.hero{display:flex;gap:20px;align-items:center;justify-content:space-between;background:linear-gradient(120deg,var(--brand),var(--brand2));color:#fff;border-radius:18px;padding:26px 28px;margin-bottom:18px}
.hero p{margin:0;opacity:.92;max-width:720px}.hero .btn.primary{background:#fff;color:var(--brand);border-color:#fff}
.search{display:flex;gap:8px;margin-bottom:18px}.search input{flex:1;padding:11px 14px;border-radius:11px}
.cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:22px}
.cat{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--ink);transition:.15s}
.cat:hover{border-color:var(--brand2);transform:translateY(-2px);box-shadow:0 6px 18px rgba(20,33,46,.08)}.cat b{font-size:14.5px;line-height:1.3}.cat small{color:var(--muted);display:flex;gap:5px;align-items:center}.cat.locked{opacity:.7}
.cico{width:46px;height:46px;border-radius:12px;background:color-mix(in srgb,var(--brand) 12%,#fff);color:var(--brand);display:grid;place-items:center;flex:none}.cico.sm{width:34px;height:34px;border-radius:9px}
.head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.head h1{margin:0}.sp{flex:1}
.series{margin-bottom:26px}.shead{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px;border-bottom:1px solid var(--line);padding-bottom:8px}.shead h2{margin:0}.shead h2 a{color:var(--ink);text-decoration:none}
.shelf{display:grid;grid-auto-flow:column;grid-auto-columns:170px;gap:14px;overflow-x:auto;padding-bottom:8px}.shelf.wrapgrid{grid-auto-flow:row;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));overflow:visible}
.bk{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.bk .cv{display:block;aspect-ratio:3/4;background:#EEF2F6;overflow:hidden}.bk .cv img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.bk .ph{width:100%;height:100%;display:grid;place-items:center;color:var(--brand);opacity:.5}
.bi{padding:10px;display:flex;flex-direction:column;gap:3px;flex:1}.bi b{font-size:13.5px;line-height:1.3}.bi small{font-size:12px}.bi .btn{margin-top:auto;align-self:flex-start}
.more{display:inline-block;margin-top:6px;font-weight:600}
.pill{display:inline-block;font-size:12px;font-weight:600;border-radius:20px;padding:2px 9px;background:#EEF2F6;color:var(--muted)}.pill.s-ready{background:#E5F3EA;color:#1E6B43}.pill.s-converting,.pill.s-queued,.pill.s-new{background:#FFF4DE;color:#8A5300}.pill.s-error{background:#FDECEA;color:var(--bad)}
.acc{font-size:11.5px;font-weight:600;border-radius:20px;padding:2px 9px;white-space:nowrap}
.acc.open,select.acc-open{background:#E5F3EA;color:#1E6B43}.acc.tch,select.acc-teacher{background:#E6EEF8;color:#1F4E79}.acc.usr,select.acc-user{background:#EFE9FB;color:#5B3FA8}.acc.adm,select.acc-admin{background:#FFF0E0;color:#9A3412}.acc.res,select.acc-restricted{background:#FDECEA;color:#B42318}
select.accsw{font-size:12.5px;font-weight:600;padding:4px 8px;border-radius:20px;border-color:transparent;cursor:pointer}select.acc-inherit{background:#F3F4F6;color:#4B5563}
.steps{display:flex;gap:6px;list-style:none;padding:0;margin:0 0 16px;counter-reset:s;flex-wrap:wrap}.steps li{counter-increment:s;padding:6px 12px 6px 8px;border-radius:20px;background:#E9EEF4;color:var(--muted);font-size:13px;font-weight:600}
.steps li::before{content:counter(s);display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#fff;margin-right:6px;font-size:12px}.steps li.on{background:var(--brand);color:#fff}.steps li.on::before{color:var(--brand)}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.cols2>.card{margin:0}
.form{display:flex;flex-direction:column;gap:12px}.form.inline{flex-direction:row;flex-wrap:wrap;align-items:flex-end}.form.inline h2{width:100%}
.slist{display:flex;flex-direction:column;gap:8px}.srow{display:flex;gap:10px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--ink)}.srow:hover{border-color:var(--brand2)}.srow b{margin-right:auto}
.tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0}.tools.end{justify-content:flex-end}.tools .chk{font-size:13px}
.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{font-size:12px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);text-align:left;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:7px 8px;border-bottom:1px solid #EDF1F5;vertical-align:middle}table.up input:not([type=checkbox]),table.up select{width:100%}table.up td:nth-child(2){min-width:220px}table.up td:nth-child(3){min-width:120px}table.up .fcell{min-width:220px}table.up .st{min-width:150px}
tr.done{background:#F2FAF5}tr.err{background:#FEF5F4}.pbar{height:7px;background:#E5EAF0;border-radius:6px;overflow:hidden;margin-bottom:3px}.pbar i{display:block;height:100%;width:0;background:var(--ok);transition:width .2s}
.subnav{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.subnav a{padding:7px 13px;border-radius:9px;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line);font-weight:500}.subnav a.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.stats{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.stats div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 16px;min-width:110px}.stats b{font-size:22px;display:block}.stats small{color:var(--muted)}.stats .btn{margin-left:auto}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.filters input{flex:1;min-width:180px}
.crow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid #EDF1F5}.crow input[name=name]{flex:1;min-width:220px}.crow .num{width:76px}
.links{padding-left:18px}.links li{margin:6px 0}code{background:#EEF2F6;padding:2px 6px;border-radius:6px;font-size:13px;-webkit-user-select:all;user-select:all;word-break:break-all}
.bigcover{width:180px;border-radius:10px;border:1px solid var(--line);display:block;margin-bottom:12px;pointer-events:none}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(30px);background:#14212E;color:#fff;padding:10px 16px;border-radius:10px;opacity:0;transition:.25s;z-index:99;pointer-events:none}#toast.show{opacity:1;transform:translateX(-50%)}#toast.bad{background:var(--bad)}
/* reader */
body.reading{background:#2B3138;overflow:hidden}body.reading .top,body.reading .foot{display:none}body.reading main.wrap{max-width:none;padding:0}
.reader{height:100vh;height:100dvh;display:flex;flex-direction:column;background:#2B3138}
.rbar{display:flex;gap:12px;align-items:center;padding:8px 12px;background:#1C2228;color:#fff;flex-wrap:wrap}.rt{flex:1;min-width:160px}.rt b{display:block;font-size:14.5px}.rt small{opacity:.7;font-size:12px}
.rctl{display:flex;gap:6px;align-items:center}.pgn{color:#fff;font-size:14px}.pgn input{width:62px;padding:4px 6px;text-align:center}
.stage{flex:1;display:flex;align-items:center;justify-content:center;padding:10px;overflow:hidden;position:relative}
#book{margin:0 auto}.pg{background:#fff}.stf__item.pg,.pg .im{width:100%;height:100%}.pg .im{background:#fff center/contain no-repeat;pointer-events:none}
.pg .pn{position:absolute;bottom:4px;right:8px;font-size:11px;color:#999;pointer-events:none}
.loading{position:absolute;inset:0;display:grid;place-items:center;color:#cfd6de}
.stage.veil #book{filter:blur(28px) brightness(.6)}.stage.veil::after{content:"Reading paused — click here to continue";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-weight:600}
.rstatus{color:#9aa5b1;font-size:12px;text-align:center;padding:4px}
.shield{position:fixed;inset:0;background:rgba(20,26,32,.96);color:#fff;display:grid;place-items:center;text-align:center;z-index:50;padding:20px}
@media print{body *{display:none!important}body::after{content:"Printing is not allowed. This book can only be read online.";display:block!important;font:20px sans-serif;padding:40px}}
@media(max-width:820px){.cols2{grid-template-columns:1fr}.hero{flex-direction:column;align-items:flex-start;padding:20px}.brand small{display:none}h1{font-size:22px}.shelf{grid-auto-columns:140px}.shelf.wrapgrid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}
/* PDF Book Manager */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
input.num{width:84px}.nowrap{white-space:nowrap}.filebtn{cursor:pointer}
table.pj input.nm{width:100%;min-width:200px}table.pj tr.sum td{background:#F3F6FA}table.pj tfoot td{border-bottom:0;padding-top:12px}
.pjcard{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--ink);margin:0}.pjcard:hover{border-color:var(--brand2)}.pjcard b{font-size:17px}
.srcbox{display:flex;align-items:flex-end;padding:8px 0}.sendbox{border-top:1px solid var(--line);margin-top:14px;padding-top:6px;display:flex;flex-direction:column;gap:10px}
.picklist{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow:auto}
.tipline{background:#FFF7E0;border:1px solid #F0D27A;border-radius:9px;padding:8px 12px;font-size:13.5px}
@media(max-width:820px){.grid2,.grid3{grid-template-columns:1fr}}
