#loading_overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999}#loading_overlay img{width:80vw;max-width:192px;height:auto;max-height:80vh;object-fit:contain;border:none}#loading_label{color:#6c24ea;font-weight:700;font-family:Poppins,sans-serif;text-align:center;animation:1.5s ease-in-out infinite pulse;pointer-events:none;white-space:nowrap;margin-top:8px;font-size:14px}#loading_bar_bg{width:60%;max-width:400px;height:12px;background:rgba(255,255,255,.15);border-radius:6px;overflow:hidden;margin-top:12px}#loading_bar{width:0%;height:100%;background:#6d5ef6;transition:width .2s}#loading_overlay.hidden,.loading_overlay.hidden{display:none!important}.cover video{inset:0;object-fit:cover;pointer-events:none;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none;transition:opacity 180ms}.cover.has-video video{opacity:1}:root{--ink:#1f2a44;--ink-2:rgba(31, 42, 68, 0.72);--ink-3:rgba(31, 42, 68, 0.55);--accent:#7a72f2;--accent-2:#9b95ff;--accent-blue:#4f7cff;--surface:rgba(255, 255, 255, 0.94);--surface-2:rgba(255, 255, 255, 0.78);--surface-3:rgba(255, 255, 255, 0.62);--border:rgba(215, 211, 255, 0.95);--border-soft:rgba(112, 110, 180, 0.18);--shadow-card:0 26px 70px rgba(20, 35, 90, 0.16);--shadow-tile:0 14px 30px rgba(20, 35, 90, 0.1);--shadow-float:0 10px 24px rgba(2, 6, 23, 0.1);--r-xl:24px;--r-lg:18px;--r-md:14px;--r-pill:999px;--topbar-h:56px;--topbar-pad:18px;--logo-h:26px}@media (pointer:fine) and (min-width:901px){:root{--topbar-pad:22px;--logo-h:28px}}*{box-sizing:border-box}body,html{height:100%;width:100%;margin:0;font-family:Arial,sans-serif;color:var(--ink)}body{background:radial-gradient(circle at 20% 10%,rgba(184,179,255,.22),transparent 45%),radial-gradient(circle at 80% 30%,rgba(122,114,242,.16),transparent 55%),#0b0b10;overflow-x:hidden}.library-shell{min-height:100%;display:grid;place-items:center;padding:18px;padding-top:calc(env(safe-area-inset-top,0px) + 18px);padding-bottom:calc(env(safe-area-inset-bottom,0px) + 18px)}.library-card{width:min(1040px,100%);background:var(--surface);border:1px solid var(--border-soft);border-radius:calc(var(--r-xl) + 6px);box-shadow:var(--shadow-card);overflow:hidden}.topbar{height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;padding:0 var(--topbar-pad);border-bottom:1px solid rgba(112,110,180,.14);background:rgba(255,255,255,.72);backdrop-filter:blur(10px)}.brand{display:flex;align-items:center;gap:10px}.brand-logo{height:var(--logo-h);width:auto;display:block;object-fit:contain;user-select:none;-webkit-user-drag:none}.topbar-actions{display:flex;align-items:center;gap:10px}.pill{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--r-pill);border:1px solid var(--border);background:rgba(255,255,255,.78);color:var(--ink-2);font-size:13px;line-height:1;user-select:none}.btn-icon{width:34px;height:34px;border-radius:var(--r-pill);border:1px solid var(--border);background:rgba(255,255,255,.92);cursor:pointer;display:grid;place-items:center;user-select:none;transition:transform 120ms,box-shadow 160ms,border-color 160ms}.btn-icon:active{transform:scale(.98)}.content{padding:16px}@media (min-width:720px){.content{padding:18px}}.toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:12px}.search{flex:1 1 240px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2)}.search input{border:0;outline:0;background:0 0;width:100%;font-size:14px;color:var(--ink);user-select:text}.select-wrap{flex:0 0 auto;display:flex;align-items:center;gap:10px;position:relative;user-select:none}.select-label{font-size:12px;color:var(--ink-2);white-space:nowrap}.select{height:40px;min-width:120px;max-width:160px;padding:0 36px 0 12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);color:var(--ink);font-size:14px;font-weight:800;line-height:1;cursor:pointer;outline:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 10px 22px rgba(20,35,90,.08)}.select-wrap::after{content:"▾";position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--ink-3);font-size:12px}@media (hover:hover) and (pointer:fine){.cover.has-video{cursor:pointer}.btn-icon:hover{border-color:rgba(155,149,255,.55);box-shadow:0 10px 22px rgba(20,35,90,.12)}.select:hover{box-shadow:0 14px 30px rgba(20,35,90,.12)}}.select:focus{border-color:rgba(122,114,242,.55);box-shadow:0 0 0 4px rgba(122,114,242,.14),0 14px 30px rgba(20,35,90,.12)}@media (max-width:520px){.select-wrap{width:100%}.select{width:100%;min-width:0;max-width:none}}.meta{flex:0 0 auto;font-size:13px;color:var(--ink-2);user-select:none}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}@media (min-width:720px){.grid{gap:16px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}}@media (min-width:901px){.grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}}.book-tile{position:relative;background:rgba(255,255,255,.98);border:1px solid var(--border-soft);border-radius:var(--r-lg);box-shadow:var(--shadow-tile);overflow:hidden;display:flex;flex-direction:column;min-height:220px;cursor:pointer;transition:transform 120ms,box-shadow 160ms,border-color 160ms}@media (hover:hover) and (pointer:fine){.book-tile:hover{transform:translateY(-2px);box-shadow:0 20px 40px rgba(20,35,90,.14);border-color:rgba(155,149,255,.42)}}.cover{position:relative;overflow:hidden;aspect-ratio:auto;background:radial-gradient(220px 140px at 20% 15%,rgba(122,114,242,.35),transparent 55%),radial-gradient(220px 140px at 80% 35%,rgba(155,149,255,.22),transparent 58%),linear-gradient(135deg,#f6f8ff,#faf8ff);border-bottom:1px solid rgba(112,110,180,.14)}@media (min-width:901px){.cover{max-height:400px;min-height:360px}}@media (max-width:901px){.cover{min-height:300px;max-height:360px}}.cover img{width:100%;height:100%;object-fit:cover;display:block}.cover.is-playing video{opacity:1}.title-badge{position:absolute;left:10px;right:10px;bottom:10px;padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.86);border:1px solid rgba(215,211,255,.9);backdrop-filter:blur(8px);font-weight:800;font-size:13.5px;color:var(--ink);text-align:center;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.tile-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}@media (min-width:901px){.tile-body{padding:8px 12px 10px}.chips{flex-wrap:nowrap;gap:6px}}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--r-pill);border:1px solid var(--border);background:rgba(255,255,255,.78);color:var(--ink-2);font-size:12px;line-height:1;max-width:100%;user-select:none}@media (min-width:901px){.chip{white-space:nowrap;padding:5px 7px;font-size:11.5px;max-width:48%;overflow:hidden;text-overflow:ellipsis}}.chip strong{color:var(--ink);font-weight:800}.state{border:1px dashed rgba(112,110,180,.3);background:rgba(255,255,255,.55);border-radius:var(--r-lg);padding:16px;color:var(--ink-2);font-size:14px;text-align:center}.spinner{width:16px;height:16px;border-radius:var(--r-pill);border:2px solid rgba(122,114,242,.25);border-top-color:rgba(122,114,242,.95);animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.book-tile.is-hidden{display:none!important}.book-id{margin-top:6px;padding:6px 10px;border-radius:12px;border:1px dashed rgba(112,110,180,.35);background:rgba(255,255,255,.7);color:rgba(31,42,68,.78);font-size:11.5px;line-height:1.2;user-select:text;-webkit-user-select:text;cursor:text;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-animated-badge{position:absolute;right:6px;top:6px;z-index:6;height:26px;padding:0 10px;border-radius:22px;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;letter-spacing:.6px;color:rgba(255,255,255,.98);background:linear-gradient(180deg,#ff7aa8 0,#ff5f8f 55%,#ff4d7e 100%);border:1px solid rgba(255,255,255,.55);box-shadow:0 12px 24px rgba(0,0,0,.14),0 0 0 3px rgba(255,255,255,.12) inset;animation:520ms ease-out both badgePop,1.6s ease-in-out 650ms infinite badgePulse}@media (max-width:520px){.book-animated-badge{height:24px;font-size:11px;padding:0 9px;border-radius:18px}}@keyframes badgePop{55%{transform:translateY(0) scale(1.05);opacity:1}0%{transform:translateY(-6px) scale(.92);opacity:0}60%{transform:translateY(0) scale(1.06);opacity:1}100%{transform:translateY(0) scale(1);opacity:1}}@keyframes badgePulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.06)}}