:root{--paper: #f5f1e8;--panel: #fffdf8;--panel-strong: #fff8ea;--text: #191a1c;--muted: #70695f;--line: #ddd4c4;--ink: #1e252d;--red: #a9222c;--gold: #c89a3d;--green: #286b5b;--blue: #315c78;font-family:Microsoft YaHei,PingFang SC,Segoe UI,Arial,sans-serif;color:var(--text);background:var(--paper)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:linear-gradient(90deg,rgba(30,37,45,.035) 0 1px,transparent 1px 100%),linear-gradient(180deg,#faf7ef,#ece5d8);background-size:32px 32px,auto}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}:where(a,button,input,select,textarea):focus-visible{outline:3px solid var(--gold);outline-offset:2px}.site-shell{min-height:100vh;padding-left:236px}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 clamp(16px,3vw,34px);color:#fff;background:#1e252dfa;box-shadow:0 12px 28px #1412102e}.brand,.admin-link,.text-button,.primary-button,.language-switch,.book-cta,.top-actions,.reader-actions{display:inline-flex;align-items:center;gap:8px}.brand{min-width:0;font-weight:800;letter-spacing:0}.brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-actions{gap:10px}.admin-link{min-height:36px;padding:0 12px;color:#ffe0a0;border:1px solid rgba(255,255,255,.16);background:#ffffff12;font-size:14px}.language-switch{min-height:36px;border:1px solid rgba(255,255,255,.2);padding:0 12px;background:#ffffff14;color:inherit;font-weight:800}.language-switch.compact{min-width:72px;justify-content:center}.side-nav{position:fixed;inset:0 auto 0 0;z-index:25;width:236px;padding:28px 20px;color:#fff;background:linear-gradient(180deg,#12161af7,#1c242af7);box-shadow:14px 0 34px #0000003d}.side-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;color:#f7cc6b}.side-list{display:grid;gap:6px}.side-list button{width:100%;min-height:42px;border:1px solid transparent;padding:0 12px;background:transparent;color:#ffffffdb;text-align:left}.side-list button:hover,.side-list button.active{border-color:#ffffff2e;background:#ffffff1a;color:#fff}.color-note{margin-top:30px;padding:16px 14px;border-left:3px solid var(--gold);background:#0000005c;color:#ffffffdb;font-size:13px;line-height:1.65}main{padding-bottom:0}.catalog-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,420px);gap:30px;align-items:end;min-height:270px;padding:44px clamp(22px,5vw,72px) 30px;background:linear-gradient(115deg,#1e252df0,#21434bd1 52%,#a0232eb8);color:#fff}.hero-copy h1{max-width:860px;margin:10px 0 14px;font-size:clamp(30px,4.4vw,56px);line-height:1.06;letter-spacing:0}.hero-copy p:last-child{max-width:680px;margin:0;color:#ffffffc7;font-size:16px;line-height:1.75}.eyebrow{margin:0;color:#f5cf78;font-size:13px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.hero-summary{border:1px solid rgba(255,255,255,.2);padding:20px;background:#ffffff1f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.hero-summary>strong{display:block;margin-bottom:14px;color:#fff7df}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.summary-grid span{display:grid;gap:6px;min-width:0;padding:12px 8px;background:#ffffff1a;color:#ffffffbd;font-size:12px}.summary-grid b{color:#fff;font-size:20px;line-height:1.1;overflow-wrap:anywhere}.catalog-controls{position:sticky;top:64px;z-index:12;display:grid;grid-template-columns:minmax(260px,420px);gap:16px;align-items:center;padding:18px clamp(22px,5vw,72px);border-bottom:1px solid rgba(80,68,52,.1);background:#f5f1e8e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.search-box{display:flex;align-items:center;gap:10px;min-height:46px;padding:0 14px;border:1px solid var(--line);background:#fff;color:var(--muted)}.search-box input{width:100%;border:0;outline:0;color:var(--text);background:transparent}.search-box:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px #c89a3d29}.segmented{display:none;flex-wrap:wrap;justify-content:flex-end;gap:8px}.segmented button{min-height:36px;padding:0 14px;border:1px solid var(--line);background:var(--panel);color:var(--muted)}.segmented button.active{border-color:var(--red);background:var(--red);color:#fff}.notice-bar{margin:18px clamp(22px,5vw,72px) 0;padding:12px 18px;background:#171717;color:#fff;text-align:center;font-size:13px}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:24px;padding:30px clamp(22px,5vw,72px) 42px;align-items:stretch}.book-card{position:relative;display:grid;grid-template-rows:236px 1fr auto;gap:16px;min-height:100%;padding:16px;border:1px solid rgba(64,51,36,.12);border-radius:8px;background:#fffdf8eb;box-shadow:0 16px 38px #372c1e1f;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.book-card:hover{transform:translateY(-4px);border-color:#a9222c47;box-shadow:0 22px 50px #372c1e2e}.cover-stage{position:relative;display:flex;align-items:center;justify-content:center;height:236px;padding:10px 14px 14px 10px;overflow:hidden;background:#efe8da6b}.cover-frame{position:relative;max-width:100%;max-height:100%;display:inline-flex;align-items:center;justify-content:center}.cover-canvas,.cover-fallback{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;border:1px solid rgba(0,0,0,.08);background:#fff;box-shadow:9px 9px #d4c8b5}.cover-fallback{display:grid;place-items:center;aspect-ratio:var(--page-ratio, .7067);height:100%;padding:20px;color:#fff;text-align:center;background:linear-gradient(135deg,var(--ink),var(--green))}.page-edge{position:absolute;top:10px;right:-12px;bottom:10px;width:12px;background:repeating-linear-gradient(180deg,#efe7d7 0,#efe7d7 4px,#c9bea8 4px,#c9bea8 6px)}.book-meta{display:grid;grid-template-rows:minmax(58px,auto) 24px 24px;gap:6px}.book-meta h2{margin:0;font-size:18px;line-height:1.3;letter-spacing:0;overflow-wrap:anywhere;word-break:break-word}.book-meta p,.book-meta small,.admin-row span,.reader-title span{margin:0;color:var(--muted);font-size:13px}.book-cta{justify-content:space-between;min-height:38px;border-top:1px solid rgba(80,68,52,.12);padding-top:12px;color:var(--red);font-weight:800}.bottom-count{min-height:48px;display:grid;place-items:center;background:var(--ink);color:#fff;font-weight:800}.state,.empty,.reader-state{display:grid;place-items:center;gap:12px;padding:56px 24px;color:var(--muted)}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.reader{position:relative;height:100vh;height:100dvh;min-height:100vh;min-height:100dvh;display:grid;grid-template-rows:1fr;background:#505050;color:#fff;overflow:hidden}.reader-topbar{position:absolute;top:0;right:0;left:0;z-index:22;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;min-height:52px;padding:8px 12px;border-bottom:0;background:linear-gradient(180deg,#23232375,#23232300);box-shadow:none;pointer-events:none}.reader-title{display:grid;justify-items:center;gap:2px;min-width:0;opacity:.82;pointer-events:auto}.reader-title strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.15;text-transform:uppercase}.reader-title span{color:#ffffff6b;font-size:11px}.reader-topbar .text-button,.reader-topbar .language-switch{pointer-events:auto}.reader .text-button{min-height:32px;border:0;border-radius:2px;padding:0 10px;background:#1e1e1e8f;color:#ffffffe0;box-shadow:inset 0 1px #ffffff14,0 1px 4px #00000029}.reader .text-button:hover{background:#232323c2;color:#fff}.reader .language-switch{min-height:32px;min-width:58px;border:0;border-radius:2px;padding:0 9px;background:#1e1e1e8f;color:#ffffffe0;box-shadow:inset 0 1px #ffffff14,0 1px 4px #00000029}.reader .language-switch:hover{background:#232323c2;color:#fff}.text-button{min-height:38px;border:1px solid rgba(255,255,255,.16);padding:0 13px;background:#ffffff1a;color:inherit;box-shadow:inset 0 1px #ffffff14}.text-button:hover{background:#ffffff29}.reader-stage{position:relative;display:grid;place-items:center;width:100%;height:100vh;height:100dvh;min-height:0;padding:56px 22px 74px;overflow:hidden;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;background:linear-gradient(180deg,rgba(255,255,255,.02),transparent 120px),#505050}.reader-loading-book{position:relative;isolation:isolate;display:grid;place-items:center;align-content:center;gap:10px;overflow:hidden;color:#ffffffc7;background:#737373;box-shadow:0 18px 34px #00000047}.reader-loading-book:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;content:"";background:linear-gradient(105deg,transparent 34%,rgba(255,255,255,.13) 48%,transparent 62%);transform:translate(-100%);animation:reader-loading-sweep 1.4s ease-in-out infinite}.reader-loading-book span{font-size:13px}.reader-loading-cover{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;background:#fff}.reader-loading-indicator{position:relative;z-index:1;display:inline-flex;align-items:center;gap:8px;max-width:calc(100% - 24px);padding:9px 12px;color:#fff;background:#141414c7;box-shadow:0 8px 24px #0000003d}.reader-loading-footer{min-height:54px}.reader-error-state{min-height:100vh;min-height:100dvh;align-content:center;background:#505050;color:#fff}.reader-error-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}@keyframes reader-loading-sweep{to{transform:translate(100%)}}.reader.is-flipping .flipbook-zoom-layer{transition:transform .56s cubic-bezier(.2,.78,.18,1)}.flipbook-zoom-layer{position:relative;transform-origin:center center;transition:transform .56s cubic-bezier(.2,.78,.18,1);will-change:transform}.flipbook-zoom-layer.zoomed{cursor:grab}.flipbook-zoom-layer.panning{cursor:grabbing;transition:none}.static-document-layer{position:relative;display:grid;grid-template-columns:repeat(var(--static-page-count),var(--static-page-width));width:calc(var(--static-page-width) * var(--static-page-count));height:var(--static-page-height);transform-origin:center center;transition:transform .56s cubic-bezier(.2,.78,.18,1);will-change:transform}.static-document-layer.zoomed{cursor:grab}.static-document-layer.panning{cursor:grabbing;transition:none}.static-page{position:relative;width:var(--static-page-width);height:var(--static-page-height);overflow:hidden;background:#fff;color:#111;contain:layout paint style}.static-document-layer.single-page,.static-document-layer.single-page .static-page{box-shadow:none}.static-document-layer.double-page{box-shadow:0 18px 30px #0000003d,0 2px 1px #00000024}.static-document-layer.double-page:before{content:"";position:absolute;top:0;bottom:0;left:calc(50% - 18px);z-index:4;width:36px;pointer-events:none;background:linear-gradient(90deg,#0000,#00000024 45%,#ffffff29 52%,#0000);filter:blur(4px);opacity:.58}.static-document-layer.double-page .static-page{box-shadow:0 0 0 1px #0000000f inset}.flipbook{position:relative;box-shadow:0 22px 34px #00000047,0 3px 1px #0000002e;transform-style:preserve-3d}.flipbook-loading{display:grid;place-items:center;color:#ffffffdb;background:#ffffff14;box-shadow:0 22px 34px #00000038,0 0 0 1px #ffffff14 inset}.reader-cover-mode .flipbook{box-shadow:0 26px 38px #00000052,0 2px 1px #0000002e}.reader-cover-mode .flipbook-zoom-layer{transition:transform .64s cubic-bezier(.2,.78,.18,1)}.flipbook .stf__wrapper,.flipbook .stf__block{overflow:visible!important}.flipbook .stf__block{perspective:2600px!important;transform-style:preserve-3d}.flipbook:before{content:"";position:absolute;inset:-2% calc(50% - 22px);z-index:150;pointer-events:none;background:linear-gradient(90deg,#0000,#00000017 34%,#0000004d 47%,#ffffff2e 51%,#00000024 57%,#0000);filter:blur(5px);opacity:.62}.reader-cover-mode .flipbook:before{opacity:0}.flip-page{position:relative;overflow:hidden;background:#fff;color:#111;box-shadow:0 1px #ffffff80 inset,0 0 0 1px #00000014 inset;transform-style:preserve-3d;backface-visibility:hidden;contain:layout paint style;will-change:transform,clip-path}.flip-page:before,.flip-page:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none}.flip-page:before{background:linear-gradient(90deg,rgba(0,0,0,.05),transparent 7%,transparent 93%,rgba(0,0,0,.05)),linear-gradient(180deg,rgba(255,255,255,.12),transparent 14%,transparent 86%,rgba(0,0,0,.04))}.flip-page:after{opacity:0}.left-page:after{opacity:1;background:linear-gradient(90deg,transparent 80%,rgba(0,0,0,.08) 92%,rgba(0,0,0,.16))}.right-page:after{opacity:1;background:linear-gradient(90deg,rgba(0,0,0,.15),rgba(0,0,0,.07) 8%,transparent 24%)}.blank-page{background:linear-gradient(90deg,rgba(0,0,0,.08),transparent 10%,transparent 90%,rgba(0,0,0,.06)),#faf9f5}.blank-page:before{background:linear-gradient(90deg,rgba(0,0,0,.08),transparent 12%,transparent 88%,rgba(0,0,0,.06)),linear-gradient(180deg,rgba(255,255,255,.18),transparent 20%,transparent 80%,rgba(0,0,0,.05))}.blank-page:after{opacity:.7}.stf__item{box-shadow:0 12px 22px #0000002e;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform,clip-path}.stf__item.--left{box-shadow:-10px 16px 24px #0000002e,inset -10px 0 16px #00000014}.stf__item.--right{box-shadow:10px 16px 24px #0000002e,inset 10px 0 16px #00000014}.stf__item.--hard{box-shadow:0 18px 32px #0000003d,0 0 0 1px #00000014}.stf__item.--hard.flip-page:before{opacity:1;background:linear-gradient(90deg,rgba(0,0,0,.3) 0,rgba(0,0,0,.18) 2.8%,rgba(255,255,255,.2) 4.6%,rgba(0,0,0,.22) 7.2%,rgba(0,0,0,.08) 10%,transparent 21%,transparent 88%,rgba(0,0,0,.1) 100%),linear-gradient(180deg,rgba(255,255,255,.18),transparent 15%,transparent 84%,rgba(0,0,0,.08))}.stf__item.--hard.--right.flip-page:before{background:linear-gradient(90deg,rgba(0,0,0,.28) 0,rgba(0,0,0,.2) 2.5%,rgba(255,255,255,.2) 4.4%,rgba(0,0,0,.2) 7%,rgba(0,0,0,.08) 10%,transparent 23%),linear-gradient(180deg,rgba(255,255,255,.16),transparent 15%,transparent 84%,rgba(0,0,0,.07))}.stf__item.--hard.--left.flip-page:before{background:linear-gradient(90deg,transparent 77%,rgba(0,0,0,.08) 90%,rgba(0,0,0,.2) 94%,rgba(255,255,255,.22) 96%,rgba(0,0,0,.24) 100%),linear-gradient(180deg,rgba(255,255,255,.16),transparent 15%,transparent 84%,rgba(0,0,0,.07))}.stf__item:not(.--simple).flip-page:before{background:linear-gradient(90deg,transparent 0%,transparent 25%,rgba(0,0,0,.06) 36%,rgba(0,0,0,.26) 47%,rgba(0,0,0,.1) 52%,rgba(255,255,255,.28) 58%,rgba(0,0,0,.06) 64%,transparent 78%),linear-gradient(180deg,rgba(255,255,255,.16),transparent 18%,transparent 82%,rgba(0,0,0,.06));filter:none;opacity:.72}.stf__item.--hard:not(.--simple).flip-page:before{background:linear-gradient(90deg,rgba(0,0,0,.28) 0,rgba(0,0,0,.22) 3%,rgba(255,255,255,.22) 5.8%,rgba(0,0,0,.24) 9%,rgba(0,0,0,.12) 14%,rgba(0,0,0,.02) 28%,transparent 54%,rgba(255,255,255,.14) 73%,rgba(0,0,0,.12) 100%),linear-gradient(180deg,rgba(255,255,255,.14),transparent 16%,transparent 82%,rgba(0,0,0,.08));filter:none;opacity:.78}.stf__item.--hard:not(.--simple).flip-page:after{opacity:1;background:linear-gradient(90deg,rgba(255,255,255,.15),transparent 16%,transparent 58%,rgba(0,0,0,.1) 76%,rgba(0,0,0,.2))}.stf__innerShadow{background:linear-gradient(90deg,#0000,#00000014 16%,#00000057 42%,#0000001f 56%,#ffffff2e 72%,#0000)!important;filter:none!important;opacity:.76!important}.stf__outerShadow{background:linear-gradient(90deg,#0000003d,#0000001a 34%,#0000)!important;filter:none!important;opacity:.58!important}.stf__hardShadow,.stf__hardInnerShadow{filter:none!important;opacity:.54!important}.pdf-page-stack{position:absolute;top:0;right:0;bottom:0;left:0;display:block;overflow:hidden;background:#fff}.pdf-page-stack.page-deferred{contain:strict}.pdf-page-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;background:#fff;opacity:0;transition:opacity .16s ease}.pdf-page-stack.preview-ready .preview-layer,.pdf-page-stack.ready .full-layer{opacity:1}.pdf-page-stack.ready .preview-layer{opacity:0}.page-number{position:absolute;right:12px;bottom:10px;z-index:4;color:#0000006b;font-size:12px}.left-page .page-number{right:auto;left:12px}.right-page .page-number{right:12px;left:auto}.turn-control{position:absolute;top:50%;z-index:12;width:34px;height:78px;display:grid;place-items:center;border:0;border-radius:2px;background:#ffffff14;color:#ffffffad;transform:translateY(-50%);box-shadow:none;transition:color .14s ease,background .14s ease,transform .14s ease}.turn-control:hover{color:#fff;background:#ffffff29;transform:translateY(-50%) scale(1.02)}.turn-control.left{left:0}.turn-control.right{right:0}.zoom-navigator{position:fixed;top:70px;right:clamp(14px,2.4vw,34px);z-index:24;width:clamp(172px,17vw,250px);border:1px solid rgba(255,255,255,.48);padding:5px;background:#f7f7f7f0;box-shadow:0 10px 22px #00000047,inset 0 1px #ffffffe0;color:inherit;cursor:crosshair}.zoom-map-spread{position:relative;display:grid;grid-template-columns:repeat(var(--navigator-pages),minmax(0,1fr));aspect-ratio:var(--spread-ratio);overflow:hidden;border:1px solid rgba(0,0,0,.14);background:#e5ded2}.zoom-map-page{display:grid;min-width:0;overflow:hidden;border-right:1px solid rgba(0,0,0,.18);background:#fff}.zoom-map-page:last-of-type{border-right:0}.zoom-map-canvas{width:100%;height:100%;object-fit:contain;background:#fff}.zoom-map-window{position:absolute;z-index:2;border:2px solid #16a132;background:#16a1320a;box-shadow:0 0 0 1px #ffffffbf,0 0 8px #16a1322e;pointer-events:none}.reader-footer{position:absolute;right:0;bottom:0;left:0;z-index:19;display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:center;min-height:54px;padding:7px 24px 10px 20px;color:#ffffffe6;border-top:1px solid rgba(255,255,255,.08);background:#4a4a4afa;box-shadow:inset 0 1px #ffffff0f,0 -8px 18px #00000014;-webkit-backdrop-filter:none;backdrop-filter:none}.reader-tool-group{display:flex;align-items:center;gap:3px;min-height:32px;padding:0 4px;border-radius:2px;background:#0000002e;box-shadow:inset 0 1px #ffffff0f,inset 0 -1px #0000002e}.reader-page-control{grid-template-columns:auto minmax(160px,1fr);min-width:0;display:grid;align-items:center;gap:12px;padding:0;color:#ffffffd1;font-size:12px}.reader-page-control span{min-width:58px;text-align:center;font-variant-numeric:tabular-nums}.reader-toolbar-button{position:relative;width:44px;height:44px;display:inline-grid;place-items:center;border:0;border-radius:2px;background:transparent;color:#ffffffd1;box-shadow:none;transition:color .14s ease,opacity .14s ease,transform .14s ease,background .14s ease,box-shadow .14s ease}.reader-toolbar-button:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border-radius:999px;background:#ffffff1f;opacity:0;transform:scale(.68);transition:opacity .18s ease,transform .18s ease;pointer-events:none}.reader-toolbar-button:hover:not(:disabled){color:#fff;background:#ffffff17;transform:translateY(-1px)}.reader-toolbar-button:active:not(:disabled){transform:translateY(1px) scale(.92);background:#0000002e;box-shadow:inset 0 2px 7px #00000042}.reader-toolbar-button:active:not(:disabled):after{opacity:1;transform:scale(1.18)}.reader-toolbar-button:disabled{cursor:not-allowed;opacity:.28}.reader-toolbar-button.active{color:#fff;opacity:1;background:#ffffff1f;box-shadow:inset 0 1px #ffffff14,inset 0 -1px #0000003d}.reader-toolbar-button svg{position:relative;z-index:1;stroke-width:2.2}.reader-footer input{width:100%;height:40px;accent-color:#f3f3f3}.reader-progress-range{min-height:40px;cursor:pointer}.reader-progress-range::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:#ffffffad}.reader-progress-range::-webkit-slider-thumb{width:16px;height:16px;margin-top:-6px;border-radius:50%;background:#f4f4f4;box-shadow:0 1px 5px #00000059}.reader-thumbnails{position:absolute;right:0;bottom:54px;left:0;z-index:18;display:flex;gap:10px;overflow-x:auto;padding:10px 18px;background:#3a3a3af5;box-shadow:0 -10px 20px #00000029}.reader-thumbnails button{flex:0 0 68px;display:grid;gap:5px;place-items:center;border:1px solid rgba(255,255,255,.12);padding:5px;background:#ffffff0f;color:#ffffffd1;font-size:11px}.reader-thumbnails button.active{border-color:#ffffffe6;background:#ffffff1f;color:#fff;box-shadow:0 0 0 2px #ffffff24}.reader-thumbnail-canvas{width:54px;height:72px;object-fit:contain;background:#fff}.admin-shell{min-height:100vh;padding:34px clamp(18px,4vw,56px);background:linear-gradient(180deg,#ffffff8c,#f5f1e8eb),var(--paper)}.login-panel,.upload-panel,.admin-list-panel,.modal{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 18px 42px #33281c1f}.login-panel{max-width:440px;margin:8vh auto 0;display:grid;gap:16px;padding:30px}.login-top,.admin-header,.admin-actions,.row-actions,.panel-title,.panel-title>div{display:flex;align-items:center;gap:10px}.login-top{justify-content:space-between}.login-panel h1,.admin-header h1{margin:0;letter-spacing:0}.login-panel p{margin:0;color:var(--muted);line-height:1.65}label{display:grid;gap:8px;color:#39342f;font-size:14px;font-weight:800}input,select,textarea{width:100%;min-height:42px;border:1px solid var(--line);padding:9px 11px;background:#fff;color:var(--text);outline-color:var(--gold)}textarea{min-height:92px;resize:vertical}.primary-button{justify-content:center;min-height:44px;border:0;padding:0 18px;background:var(--red);color:#fff;font-weight:900}.secondary-button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);padding:0 14px;background:#fff;color:var(--ink);font-weight:900}.field-hint{color:var(--muted);font-size:12px;font-weight:600}.form-error,.form-success{padding:10px 12px;font-size:14px}.form-error{background:#fde8e8;color:#9f1d1d}.form-success{background:#e8f6ef;color:#1d6b4d}.admin-header{justify-content:space-between;margin-bottom:24px}.admin-actions{flex-wrap:wrap;justify-content:flex-end}.admin-actions .language-switch,.login-top .language-switch{border-color:var(--line);background:#fff;color:var(--ink)}.admin-layout{display:grid;grid-template-columns:minmax(300px,390px) minmax(0,1fr);gap:22px;align-items:start}.admin-side-panels{display:grid;gap:22px}.upload-panel,.admin-list-panel{display:grid;gap:16px;padding:22px}.panel-title{justify-content:space-between}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:end}.check-label{min-height:42px;grid-template-columns:18px 1fr;align-items:center;align-content:center;gap:10px;border:1px solid var(--line);padding:0 12px;background:#fff}.check-label input{min-height:auto}.file-drop{place-items:center;min-height:112px;border:1px dashed #b7a98f;background:#fbf8f0;color:var(--muted);text-align:center;cursor:pointer;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,color .16s ease,transform .16s ease}.file-drop:hover,.file-drop.drag-active{border-color:var(--red);background:#fff7ea;color:var(--ink)}.file-drop.drag-active{box-shadow:0 0 0 3px #a9222c1f,inset 0 0 0 1px #a9222c14;transform:translateY(-1px)}.file-drop.has-file{border-style:solid;background:#fff;color:var(--ink)}.file-drop span{max-width:100%;overflow-wrap:anywhere}.file-drop small{max-width:28ch;color:var(--muted);font-size:12px;font-weight:600;line-height:1.45}.file-drop input{display:none}.upload-progress{display:grid;gap:7px}.upload-progress-track{height:7px;overflow:hidden;background:#e7dfd0}.upload-progress-track span{display:block;height:100%;background:var(--red);transition:width .18s ease}.upload-progress small{color:var(--muted);font-size:12px;line-height:1.4}.compact-form{display:grid;gap:12px}.category-list{display:grid;gap:8px}.category-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-height:42px;border:1px solid var(--line);padding:6px 6px 6px 12px;background:#fff}.category-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:800}.category-actions{display:flex;align-items:center;gap:6px}.admin-table{display:grid;gap:14px}.admin-category-group{display:grid;gap:8px;border:1px solid rgba(80,68,52,.12);border-radius:8px;padding:12px;background:linear-gradient(180deg,#fff8eab3,#fffdf8f2)}.admin-category-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:34px;padding:0 2px 8px;border-bottom:1px solid rgba(80,68,52,.1)}.admin-category-head strong{min-width:0;overflow:hidden;color:var(--ink);font-size:15px;text-overflow:ellipsis;white-space:nowrap}.admin-category-head span{flex:none;color:var(--muted);font-size:12px;font-weight:700}.admin-category-items{display:grid;gap:8px}.admin-row{display:grid;grid-template-columns:112px minmax(0,1fr) auto;gap:16px;align-items:center;min-height:124px;padding:14px 16px;border:1px solid var(--line);border-radius:6px;background:#fff}.admin-thumb{width:112px;height:92px;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(80,68,52,.08);border-radius:6px;background:#f2f1ee}.admin-thumb .cover-canvas,.admin-thumb .cover-fallback{width:auto;height:auto;max-width:100%;max-height:100%;border:0;box-shadow:none;object-fit:contain}.admin-thumb .cover-fallback{width:100%;height:100%;padding:8px;font-size:11px}.admin-row-info{display:grid;gap:8px;min-width:0}.admin-row strong{overflow-wrap:anywhere;white-space:normal}.icon-button{width:38px;height:38px;display:inline-grid;place-items:center;border:1px solid var(--line);background:#fff;color:var(--ink)}.icon-button.ghost{border-color:transparent;background:transparent;color:inherit}.icon-button.danger{color:#a31b24}.icon-button:disabled{cursor:not-allowed;opacity:.38}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:20px;background:#0000007a}.modal{position:relative;width:min(540px,100%);max-height:92vh;overflow:auto;padding:8px}.close{position:absolute;top:12px;right:12px;z-index:2}.mobile-only{display:none}.admin-identity{display:grid;gap:1px;text-align:right;font-weight:800}.admin-identity small{color:var(--muted);font-size:10px;text-transform:uppercase}.user-management-panel{gap:18px}.user-create-form{padding-bottom:16px;border-bottom:1px solid var(--line)}.user-list,.audit-log-list{display:grid;gap:9px}.user-row{display:grid;gap:9px;padding:12px;border:1px solid var(--line);background:#ffffff94}.user-row-head,.user-controls,.user-password-row,.audit-log-head{display:flex;align-items:center;gap:8px}.user-row-head{justify-content:space-between}.user-row-head span,.user-row small,.audit-log-list small{color:var(--muted);font-size:11px}.user-controls select,.user-password-row input{min-width:0}.compact-action{flex:0 0 auto;min-height:36px;padding:0 8px;font-size:11px}.audit-log-head{padding-top:4px}.audit-log-list>div{display:grid;grid-template-columns:minmax(70px,auto) minmax(0,1fr);gap:3px 8px;padding:8px 0;border-bottom:1px solid rgba(80,68,52,.1);font-size:12px}.audit-log-list small{grid-column:1 / -1}@media(max-width:520px){.user-controls,.user-password-row{align-items:stretch;flex-direction:column}}@media(max-width:1080px){.catalog-controls{grid-template-columns:1fr}.segmented{justify-content:flex-start}}@media(max-width:840px){.site-shell{padding-left:0}.mobile-only,.side-nav{display:none}.topbar{padding:0 12px}.brand{max-width:48vw}.admin-link span{display:none}.catalog-hero,.admin-layout{grid-template-columns:1fr}.catalog-hero{min-height:auto;padding:32px 22px 24px}.summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-controls{position:static;gap:12px;padding:14px 22px}.segmented{display:flex;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}.segmented button{flex:0 0 auto}.book-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}.reader-topbar{grid-template-columns:auto 1fr auto;gap:8px;min-height:46px;padding:7px 8px}.reader-title{order:0;justify-items:center}.reader-title span{display:none}.reader-actions{justify-content:flex-end;gap:6px}.reader-stage{padding:50px 12px 92px}.turn-control{top:50%;bottom:auto;width:30px;height:62px;transform:translateY(-50%)}.zoom-navigator{top:54px;right:12px;width:min(46vw,190px);padding:5px}.reader-footer{grid-template-columns:1fr;gap:6px;min-height:78px;padding:7px 12px 10px}.reader-page-control{grid-template-columns:auto minmax(0,1fr);min-width:0}.reader-tool-group{justify-content:center;gap:4px}.reader-thumbnails{bottom:78px}.admin-header{grid-template-columns:1fr;display:grid}.admin-row{grid-template-columns:92px minmax(0,1fr);gap:12px}.admin-thumb{width:92px;height:76px}.admin-row .row-actions{grid-column:1 / -1;justify-content:flex-end}.admin-category-head{align-items:flex-start;flex-direction:column;gap:4px}.admin-actions{justify-content:flex-start}}@media(max-width:520px){.top-actions{gap:6px}.language-switch.compact{min-width:58px;padding:0 8px}.language-switch.compact svg{display:none}.hero-copy h1{font-size:28px}.hero-copy p:last-child{font-size:14px;line-height:1.55}.hero-summary{padding:12px}.hero-summary>strong{margin-bottom:9px}.summary-grid{gap:5px}.summary-grid span{gap:4px;padding:9px 6px;font-size:10px}.summary-grid b{font-size:15px}.catalog-controls,.book-grid{padding-right:16px;padding-left:16px}.book-grid,.form-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.spin,.reader-loading-book:before{animation:none}.flipbook-zoom-layer,.static-document-layer,.pdf-page-canvas,.upload-progress-track span{transition:none}}
