*{box-sizing:border-box}:root{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;--bg-start: #e9f3ff;--bg-mid: #d4e6fa;--bg-end: #c2dbf7;--text-primary: #10253d;--text-secondary: #274a73;--card-bg: rgba(255, 255, 255, .9);--card-border: rgba(26, 70, 118, .16);--card-shadow: rgba(7, 37, 76, .1);--btn-bg: #2f67ab;--btn-border: #21538c;--btn-text: #ffffff;--btn-danger-bg: #ab3d3d;--btn-danger-border: #8f2929;--panel-bg: #f1f6fc;--panel-border: #d2e0ef;color:var(--text-primary);background:linear-gradient(150deg,var(--bg-start),var(--bg-mid) 55%,var(--bg-end))}.theme-daylight{--bg-start: #eef5ff;--bg-mid: #dbe9f9;--bg-end: #cdddf0;--text-primary: #10253d;--text-secondary: #2b4d73}.theme-sepia{--bg-start: #f3ece1;--bg-mid: #eadfce;--bg-end: #ddd0bc;--text-primary: #3c2e1f;--text-secondary: #5a4630;--card-bg: rgba(255, 251, 243, .92);--card-border: rgba(122, 93, 63, .2);--btn-bg: #856748;--btn-border: #6e5338;--panel-bg: #f2e9db;--panel-border: #d8c5ad}.theme-sage{--bg-start: #edf4ef;--bg-mid: #dde9df;--bg-end: #ccdccc;--text-primary: #1c3328;--text-secondary: #345344;--card-bg: rgba(247, 252, 248, .92);--card-border: rgba(58, 100, 76, .18);--btn-bg: #3f7b5f;--btn-border: #33644e;--panel-bg: #ecf4ef;--panel-border: #c9ddd0}.theme-charcoal{--bg-start: #1d2127;--bg-mid: #212933;--bg-end: #1a2029;--text-primary: #d8e1eb;--text-secondary: #b8c4d2;--card-bg: rgba(36, 44, 56, .92);--card-border: rgba(143, 163, 186, .25);--card-shadow: rgba(0, 0, 0, .35);--btn-bg: #4b6d93;--btn-border: #3a5573;--btn-danger-bg: #a04f4f;--btn-danger-border: #864040;--panel-bg: #2b3340;--panel-border: #455263}body{margin:0;min-height:100vh}#root{min-height:100vh}.app-shell{min-height:100vh;color:var(--text-primary);background:linear-gradient(150deg,var(--bg-start),var(--bg-mid) 55%,var(--bg-end))}.app{max-width:1200px;margin:0 auto;padding:22px 18px 34px}.header h1{margin:0 0 6px;font-size:30px}.header p{margin:0}.shelf-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.shelf-actions{display:flex;gap:8px}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;padding:14px;box-shadow:0 10px 24px var(--card-shadow)}.shelf-card{min-height:420px}.shelf-meta{font-weight:600;color:var(--text-secondary)}.shelf-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.shelf-select-tools{display:flex;gap:8px;flex-wrap:wrap}.folder-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.folder-bar button.is-active{background:#1f558f}.folder-create{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.folder-create input{border:1px solid #9ab5d5;border-radius:7px;padding:7px 9px;min-width:220px}button,input[type=file],input[type=text],input[type=range],select{font:inherit}button{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--btn-text);border-radius:8px;padding:8px 12px;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.danger{background:var(--btn-danger-bg);border-color:var(--btn-danger-border)}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.book-card{border:1px solid #d0dff0;border-radius:10px;background:#f8fbff;padding:10px;display:flex;flex-direction:column;gap:10px}.book-select{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#26486f}.book-cover{width:100%;min-height:120px;border:1px solid #90afd2;border-radius:10px;background:linear-gradient(160deg,#d8e8fb,#b7d1f1);color:#17395e;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px}.book-cover-name{font-weight:700;text-align:center}.book-cover-sub{font-size:12px;opacity:.8}.book-info h3{margin:0;font-size:16px}.book-info p{margin:4px 0 0}.book-actions{display:flex;gap:8px}.book-actions button{flex:1}.pagination{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:14px}.reader-shell{height:100vh;display:grid;grid-template-columns:auto 1fr;gap:10px;padding:10px;overflow:hidden}.reader-main{min-width:0;min-height:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.reader-header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.reader-title-wrap{display:flex;align-items:center;gap:8px}.reader-title-wrap h2{margin:0;font-size:20px}.title-subtle{font-size:12px;color:#5a7495}.reader-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.zoom-slider{width:140px}.icon-btn{min-width:34px;height:34px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1}.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}.mode-switch{display:inline-flex;border:1px solid #9db9da;border-radius:8px;overflow:hidden}.mode-switch button{border-radius:0;border:0;border-right:1px solid #8eadd2;background:#e5f0fb;color:#1c416b;min-width:34px;font-size:15px}.mode-switch button:last-child{border-right:0}.mode-switch .is-active{background:#2f67ab;color:#fff}.jump-label{display:inline-flex;align-items:center;gap:6px}.jump-input,.search-input{border:1px solid #9ab5d5;border-radius:7px;padding:7px 9px;background:#fff}.jump-input{width:92px}.search-input{width:min(360px,90vw)}.outline-item{display:block;width:100%;text-align:left;margin-bottom:6px;background:#e8f2fd;color:#163b67;border-color:#acc7e7}.viewer-card{padding:10px;flex:1;min-height:0;display:flex;flex-direction:column}.viewer-wrap{width:100%;overflow:auto;min-height:0;height:100%;border:1px solid var(--panel-border);border-radius:10px;background:var(--panel-bg);padding:10px}.viewer-wrap-single{min-height:0}.double-spread{display:flex;justify-content:center;gap:2px;align-items:start;min-width:max-content;padding:6px 0}.double-leaf{display:flex;width:auto}.double-leaf.left{justify-content:flex-end;padding-right:0}.double-leaf.right{justify-content:flex-start;padding-left:0}.viewer-page-double{margin:0!important;box-shadow:0 6px 20px #0003;border-radius:0}.double-leaf.left .viewer-page-double{box-shadow:8px 6px 20px #0003}.double-leaf.right .viewer-page-double{box-shadow:-8px 6px 20px #0003}.double-spread:before{display:none}.viewer-page-placeholder{border:1px dashed #bfd2ea;border-radius:8px;min-height:360px;background:#fff9;box-shadow:none}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0815254d;display:flex;align-items:center;justify-content:center;z-index:20}.floating-panel{width:min(520px,calc(100vw - 24px));background:#fff;border:1px solid #c3d8ef;border-radius:12px;box-shadow:0 18px 38px #061d3a33;padding:14px}.floating-panel h3{margin:0 0 10px}.floating-list{max-height:min(60vh,520px);overflow:auto}.next-book-fab{position:fixed;right:14px;top:50%;transform:translateY(-50%);z-index:18;border-radius:999px;padding:10px 14px;box-shadow:0 10px 24px #081b3040}.viewer-page{display:block;margin:8px auto;box-shadow:0 8px 24px #0000003d}.continuous-item{margin-bottom:12px}.thumb-panel{width:240px;border:1px solid #cadcf1;border-radius:12px;background:#fafdfff2;padding:10px;display:flex;flex-direction:column;max-height:calc(100vh - 20px)}.thumb-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.thumb-head h3{margin:0;font-size:16px}.thumb-list{overflow:auto}.thumb-item{width:100%;margin-bottom:8px;background:#e6f0fb;color:#173b61;border-color:#a9c5e8;display:flex;flex-direction:column;align-items:center;gap:5px}.thumb-item.active{outline:2px solid #245899}.thumb-canvas{width:100%;max-width:180px;height:auto;display:block;background:#fff}.thumb-more{margin-top:8px}.thumb-collapsed{width:48px;display:flex;align-items:flex-start}.thumb-collapsed button{writing-mode:vertical-rl;text-orientation:mixed;height:120px}.meta{color:var(--text-secondary);font-size:14px}.warn{color:#a02d2d;font-size:14px}@media (max-width: 980px){.reader-shell{grid-template-columns:1fr;height:auto;min-height:100vh;overflow:visible;padding:10px}.thumb-panel,.thumb-collapsed{width:100%}.thumb-collapsed button{writing-mode:initial;height:auto}.reader-side-lists{grid-template-columns:1fr}.shelf-header,.shelf-tools{flex-direction:column;align-items:stretch}.double-spread{min-width:0;flex-direction:column;align-items:center}.double-spread:before{display:none}}
