:root{--bg:#e7dcc2;--panel:#f6efdc;--ink:#34291c;--muted:#857a64;--line:#d6c6a6;--accent:#6f4326;--accent2:#a9743f;--chip:#e6d7b8;--gold:#b58a3c;--shadow:0 6px 18px rgba(48,30,12,.2);--read:#6b7c3f;--reading:#b9824f;--danger:#9a2f28;--parchment:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.6' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)'/%3E%3C/svg%3E")}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:EB Garamond,Iowan Old Style,Georgia,serif;font-size:16px;color:var(--ink);background:var(--parchment),radial-gradient(135% 120% at 50% -10%,#f1e8d1,#e7dcc2 52%,#d6c6a3);background-attachment:fixed;background-size:240px 240px,cover;background-blend-mode:soft-light,normal}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:14px}a{color:var(--accent)}h1,h2,h3,header.app h1,.toolbar .title,.modal .mh h3,.sharehead h1,.authcard h1,aside h2{font-family:Cinzel,Iowan Old Style,Georgia,serif}header.app{display:flex;align-items:center;gap:16px;padding:14px 20px;color:#f3e4bd;box-shadow:var(--shadow);position:sticky;top:0;z-index:30;background:var(--parchment),linear-gradient(180deg,#6f4326,#4f3017);background-size:240px 240px,cover;background-blend-mode:soft-light,normal;border-bottom:2px solid var(--gold)}header.app h1{font-size:21px;margin:0;letter-spacing:1.5px;color:#f3e4bd;text-shadow:0 1px 2px rgba(0,0,0,.45)}header.app .sub{font-size:12px;opacity:.8;margin-left:-8px}header.app .spacer{flex:1}header.app button,header.app a.btnlink{background:#ffffff24;color:#fdf6ec;border:1px solid rgba(255,255,255,.25);padding:8px 12px;border-radius:8px;font-size:13px;text-decoration:none}header.app button:hover{background:#ffffff3d}header.app .who{font-size:14px;font-weight:700;opacity:.95;background:none;border:none;color:inherit;cursor:pointer;padding:0;font-family:inherit;letter-spacing:.2px}header.app .who:hover{text-decoration:underline}header.app .who-edit{font-size:14px;font-weight:700;padding:5px 9px;border-radius:7px;border:1px solid rgba(255,255,255,.45);background:#ffffff29;color:#fff;width:170px;font-family:inherit}header.app .who-edit::placeholder{color:#fff9}.layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 56px)}aside{background:var(--panel);border-right:1px solid var(--line);padding:16px 12px}aside h2{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:18px 6px 8px}.shelf{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;font-size:14px;-webkit-user-select:none;user-select:none}.shelf:hover{background:var(--chip)}.shelf.active{background:var(--accent2);color:#fff}.shelf .count{margin-left:auto;font-size:12px;opacity:.7}.shelf .share{margin-left:6px;opacity:.6;font-size:12px}.shelf .share:hover{opacity:1}.shelf.active .share{opacity:.92}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.switch{position:relative;display:inline-block;width:38px;height:20px;flex:none}.switch input{opacity:0;width:0;height:0;position:absolute}.switch .slider{position:absolute;top:0;right:0;bottom:0;left:0;background:#cbbb9a;border-radius:999px;transition:.2s;cursor:pointer;box-shadow:inset 0 1px 2px #0003}.switch .slider:before{content:"";position:absolute;height:14px;width:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 2px #0000004d}.switch input:checked+.slider{background:var(--read)}.switch input:checked+.slider:before{transform:translate(18px)}.tagrow{display:flex;flex-wrap:wrap;gap:6px;padding:4px 6px}.tag{font-size:12px;padding:4px 9px;border-radius:999px;background:var(--chip);border:1px solid var(--line);color:var(--ink)}.tag.sel{background:var(--accent);color:#fff;border-color:var(--accent)}.miniadd{display:flex;gap:6px;padding:6px}.miniadd input{flex:1;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:#fff}.miniadd button{padding:6px 10px;border:1px solid var(--line);background:var(--chip);border-radius:7px}main{padding:18px 22px}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}.toolbar .title{font-size:22px;font-weight:600}.toolbar .spacer{flex:1}.toolbar input.search{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;width:220px}.toolbar select{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff}.dirtoggle{min-width:38px;text-align:center;font-size:16px;line-height:1;padding:8px 9px;font-weight:700}.btn{padding:8px 13px;border:1px solid var(--line);background:var(--panel);border-radius:9px;font-size:13px}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn:hover{filter:brightness(.97)}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn.danger{color:var(--danger)}.wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:26px 22px;perspective:1500px}.card{position:relative;background:var(--panel);border:none;border-radius:2px 6px 6px 2px;overflow:hidden;cursor:grab;box-shadow:0 2px 2px #28180a2e,0 14px 22px -10px #28180a80,inset 0 0 0 1px #3c281414;transform-style:preserve-3d;transform-origin:left center;transition:transform .16s ease,box-shadow .16s ease}.card:hover{transform:translateY(-5px) rotateY(-8deg);box-shadow:0 3px 3px #28180a33,22px 24px 34px -14px #28180a8c,inset 0 0 0 1px #3c281414}.card.ro{cursor:pointer}.card.dragover{outline:2px dashed var(--accent2);outline-offset:2px}.cover{aspect-ratio:2/3;background:linear-gradient(135deg,#d8cdbb,#b9a589);display:flex;align-items:center;justify-content:center;position:relative}.cover img{width:100%;height:100%;object-fit:cover;display:block}.cover .ph{padding:10px 12px 10px 16px;text-align:center;font-size:12px;color:#5b4a36}.cover:before{content:"";position:absolute;top:0;bottom:0;left:0;width:11px;z-index:3;pointer-events:none;background:linear-gradient(90deg,#00000061 0,#0000001f 45%,#ffffff24 85%,#fff0)}.cover:after{content:"";position:absolute;top:3px;bottom:3px;right:0;width:4px;z-index:3;pointer-events:none;background:repeating-linear-gradient(90deg,#f2ead5 0,#f2ead5 1px,#cdbf9f 1px,#cdbf9f 2px);box-shadow:-1px 0 2px #0000002e}.status-dot{position:absolute;top:8px;right:8px;width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #0000001a}.lang-badge{position:absolute;bottom:6px;left:6px;font-size:10px;background:#2b2622c7;color:#fff;padding:1px 6px;border-radius:999px}.loan-ribbon{position:absolute;top:12px;left:-30px;width:120px;transform:rotate(-45deg);text-align:center;font-size:9px;font-weight:700;letter-spacing:.06em;color:#fff;padding:3px 0;z-index:3;pointer-events:none;box-shadow:0 1px 3px #00000059}.loan-ribbon.borrowed{background:#2e6f8e}.loan-ribbon.lent{background:#c2562a}.card .meta{padding:8px 9px}.card .bt{font-size:13px;line-height:1.25;font-weight:600;max-height:34px;overflow:hidden}.card .ba{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card .btags{display:flex;flex-wrap:wrap;gap:3px;margin-top:5px}.card .btags span{font-size:10px;padding:1px 6px;border-radius:999px;background:var(--chip)}.empty{text-align:center;color:var(--muted);padding:60px 20px}.empty h3{font-size:18px;color:var(--ink)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#281e1473;display:flex;align-items:center;justify-content:center;z-index:40;padding:20px}.modal{background:var(--panel);border-radius:14px;max-width:680px;width:100%;max-height:88vh;overflow:auto;box-shadow:0 20px 60px #0000004d}.modal .mh{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);z-index:2}.modal .mh h3{margin:0;font-size:18px}.modal .mh .x{margin-left:auto;background:none;border:none;font-size:22px;color:var(--muted)}.modal .body{padding:20px}.tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.tabs button{padding:8px 12px;border:1px solid var(--line);background:var(--panel);border-radius:8px;font-size:13px}.tabs button.on{background:var(--accent);color:#fff;border-color:var(--accent)}.field{margin-bottom:12px}.field label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:5px}.field input,.field textarea,.field select{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff}.field textarea{min-height:80px;resize:vertical}.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.results{display:flex;flex-direction:column;gap:8px;margin-top:12px}.rrow{display:flex;gap:10px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:9px;background:#fff}.rrow img,.rrow .noc{width:38px;height:56px;object-fit:cover;border-radius:4px;background:var(--chip);flex:none}.rrow .ri{flex:1;min-width:0}.rrow .ri .t{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rrow .ri .a,.note{font-size:12px;color:var(--muted)}.danger{color:var(--danger)}.detail-grid{display:grid;grid-template-columns:160px 1fr;gap:20px}.detail-grid .dcover{aspect-ratio:2/3;border-radius:10px;overflow:hidden;background:var(--chip);box-shadow:var(--shadow)}.detail-grid .dcover img{width:100%;height:100%;object-fit:cover}.cover-actions{display:flex;flex-direction:column;gap:6px;margin-top:10px}.cover-actions .btn{width:100%;padding:6px 8px;font-size:12px;text-align:center;display:inline-block}.cover-actions input[type=text]{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-size:12px;background:#fff}.alt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:4px}.alt-grid img{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:4px;cursor:pointer;border:2px solid transparent}.alt-grid img:hover{border-color:var(--accent2)}.alt-grid img.sel{border-color:var(--accent)}.chips-edit{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chips-edit .tag .rm{margin-left:5px;cursor:pointer;opacity:.6}.shelf-checks{display:flex;flex-wrap:wrap;gap:8px}.shelf-checks label{display:flex;gap:6px;align-items:center;font-size:13px;background:#fff;border:1px solid var(--line);padding:5px 10px;border-radius:8px}.tray-wrap{margin-top:18px;border-top:1px dashed var(--line);padding-top:14px}#trayList{display:flex;flex-direction:column;gap:6px;max-height:190px;overflow:auto;margin-bottom:12px}.trow{display:flex;gap:8px;align-items:center;font-size:13px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 9px}.trow .tt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trow .rm{cursor:pointer;color:var(--muted)}.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}@keyframes sp{to{transform:rotate(360deg)}}.btn.primary .spin{border-color:#ffffff73;border-top-color:#fff;margin-right:5px}.viewtoggle{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}.viewtoggle button{border:none;background:var(--panel);padding:8px 12px;font-size:15px;color:var(--muted);line-height:1}.viewtoggle button.on{background:var(--accent);color:#fff}.card.sel{outline:3px solid var(--accent);outline-offset:-1px}.selcheck{position:absolute;top:8px;left:8px;width:20px;height:20px;border-radius:50%;background:#ffffffe0;border:2px solid var(--accent);color:var(--accent);font-size:12px;display:flex;align-items:center;justify-content:center;font-weight:700;z-index:2}.selcheck.on{background:var(--accent);color:#fff}.selbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff5e8;border:1px solid var(--accent2);border-radius:10px;padding:8px 12px;margin-bottom:14px;font-size:13px}.selbar select{padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:#fff}.selbar .seltag-group{display:inline-flex;align-items:center;gap:6px}.selbar .seltag-group input{padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;width:130px}.selbar .btn{padding:6px 10px;font-size:13px}.shelf.droptarget{outline:2px dashed var(--accent);background:var(--chip)}.shelfview{margin-top:4px;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.spines{display:flex;flex-wrap:wrap;align-items:flex-end;column-gap:3px;row-gap:30px;padding:22px 18px 30px;min-height:300px;border-radius:8px;position:relative;background:var(--grain),repeating-linear-gradient(90deg,rgba(0,0,0,.05) 0 2px,transparent 2px 9px),linear-gradient(180deg,#5a3b22,#412c1a);background-size:160px 160px,auto,auto;background-blend-mode:soft-light,multiply,normal;box-shadow:inset 0 16px 28px -12px #000000b3,inset 0 0 60px #00000040}.shelf-board{height:24px;border-radius:0 0 7px 7px;background:var(--grain),linear-gradient(180deg,#6e4628,#43291782,#2c1a0f);background-size:160px 160px,auto;background-blend-mode:soft-light,normal;box-shadow:0 14px 22px #1e120880,inset 0 2px #ffffff1a,inset 0 -3px 6px #00000080}.spine{height:252px;border-radius:3px 5px 5px 3px;cursor:pointer;position:relative;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:18px 5px;color:#efdcab;background:var(--grain),repeating-linear-gradient(180deg,transparent 0 44px,rgba(0,0,0,.26) 44px 45px,rgba(255,255,255,.1) 46px 47px,transparent 47px 88px),linear-gradient(90deg,var(--spine-dd) 0%,var(--spine-d) 7%,var(--spine) 22%,var(--spine-l) 50%,var(--spine) 78%,var(--spine-d) 93%,var(--spine-dd) 100%);background-size:120px 120px,auto,auto;background-blend-mode:soft-light,overlay,normal;box-shadow:inset 1px 0 #ffffff29,inset -2px 0 5px #00000052,inset 0 16px 12px -13px #ffffff4d,inset 0 -18px 14px -13px #00000073,2px 3px 7px #00000059;transition:transform .1s,box-shadow .1s}.spine:before{content:"";position:absolute;left:4px;right:4px;top:36px;bottom:36px;pointer-events:none;border-top:1.5px solid rgba(239,220,171,.5);border-bottom:1.5px solid rgba(239,220,171,.5)}.spine:hover{transform:translateY(-8px);box-shadow:inset 1px 0 #ffffff2e,inset -2px 0 5px #0000004d,3px 9px 16px #00000073}.spine{z-index:1}.shelf-plank{position:absolute;left:8px;right:8px;height:16px;border-radius:2px;z-index:0;background:var(--grain),linear-gradient(180deg,#6e4628,#432917db 48%,#2c1a0f);background-size:120px 120px,auto;background-blend-mode:soft-light,normal;box-shadow:0 9px 13px #140c0573,inset 0 2px #ffffff1a,inset 0 -3px 5px #00000080}.spine.sel{outline:3px solid var(--accent);outline-offset:2px}.spine.dragover{outline:2px dashed var(--gold);outline-offset:3px}.spine-title{writing-mode:vertical-rl;text-orientation:mixed;font-size:13px;font-weight:600;line-height:1.18;max-height:172px;white-space:normal;overflow:hidden;text-align:center;letter-spacing:.02em;text-shadow:0 1px 1px rgba(0,0,0,.5)}.spine-author{writing-mode:vertical-rl;text-orientation:mixed;font-size:13px;font-weight:500;opacity:.95;white-space:normal;max-height:72px;overflow:hidden;text-align:center;text-shadow:0 1px 1px rgba(0,0,0,.5)}.spine .selcheck{top:6px;left:50%;transform:translate(-50%)}.spine-loan{position:absolute;top:0;left:0;right:0;height:15px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;border-radius:3px 4px 0 0;z-index:3;box-shadow:0 1px 2px #0006}.spine-loan.borrowed{background:#2e6f8e}.spine-loan.lent{background:#c2562a}.spine-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:10px;padding-left:2px}.spine-legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}.modal.book-wide{max-width:920px}.body.book{display:grid;grid-template-columns:1.15fr .85fr;padding:0;align-items:stretch}.body.book .page{padding:22px}.body.book .page.left{border-right:1px solid var(--line);background:linear-gradient(90deg,#fffdf8,#f6f0e4)}.body.book .page.right{display:flex;flex-direction:column;background:linear-gradient(270deg,#fffdf8,#f6f0e4);box-shadow:inset 9px 0 16px -11px #3c281466}.page-title{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:8px}.reading-notes{flex:1;min-height:420px;width:100%;border:1px solid var(--line);border-radius:8px;background:#fffef9;padding:12px;resize:none;line-height:1.7;font-size:14px}@media (max-width:680px){.body.book{grid-template-columns:1fr}.body.book .page.left{border-right:none;border-bottom:1px solid var(--line)}.reading-notes{min-height:200px}}.modal.add-wide{max-width:900px}.body.add-body{padding:0;display:grid;grid-template-columns:1fr 250px;align-items:stretch}.add-main{padding:20px;min-width:0}.add-tray{border-left:1px dashed var(--line);background:linear-gradient(270deg,#fbf6e6,#f3ecd6);padding:18px 16px;display:flex;flex-direction:column;border-radius:0 14px 14px 0}.add-tray .tray-head{margin-bottom:8px}.add-tray #trayList{flex:1;overflow:auto;margin:0 0 12px;max-height:none}@media (max-width:680px){.body.add-body{grid-template-columns:1fr}.add-tray{border-left:none;border-top:1px dashed var(--line);border-radius:0 0 14px 14px}}#scanWrap{background:#1c1814;border-radius:10px;overflow:hidden;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;position:relative}#scanVid{width:100%;height:100%;object-fit:cover}#scanWrap .reticle{position:absolute;width:62%;height:32%;border:2px solid rgba(255,255,255,.8);border-radius:8px;box-shadow:0 0 0 2000px #0000002e}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;z-index:60;opacity:0;transition:opacity .25s;pointer-events:none}.toast.show{opacity:1}.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.authcard{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:34px;max-width:380px;width:100%;text-align:center}.authcard h1{margin:0 0 6px;font-size:26px;color:var(--accent)}.authcard p{color:var(--muted);font-size:14px;margin-top:0}.authcard input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:9px;margin:12px 0;background:#fff}.authcard .btn.primary{width:100%}.banner{background:#fff5e8;border:1px solid var(--accent2);color:#6b4a2a;padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:14px}.sharehead{padding:26px 22px;text-align:center;border-bottom:1px solid var(--line);background:var(--panel)}.sharehead h1{margin:0 0 4px;font-size:26px}.sharehead .by{color:var(--muted);font-size:14px}.sharefilters{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:14px}aside{background:var(--parchment),linear-gradient(180deg,#f2ead4,#e9dec3);background-size:240px 240px,cover;background-blend-mode:soft-light,normal;box-shadow:inset -12px 0 18px -16px #3c281073}aside h2{color:#7a5a2e;letter-spacing:.14em}.card{background:var(--parchment),var(--panel);background-size:200px 200px,cover;background-blend-mode:soft-light,normal;border-color:#d8c8a6}.modal{background:var(--parchment),var(--panel);background-size:240px 240px,cover;background-blend-mode:soft-light,normal;border:1px solid var(--gold)}.modal .mh{background:transparent;border-bottom:1px solid var(--line)}.body.book .page.left{background:linear-gradient(90deg,#f7f0db,#efe5c9)}.body.book .page.right{background:linear-gradient(270deg,#f7f0db,#efe5c9)}.reading-notes{background:#fbf6e6}.btn.primary{background:linear-gradient(180deg,#7c4d2a,#5d3819);border-color:#4a2d15;color:#f3e4bd}.tag.sel{background:var(--accent);border-color:var(--accent);color:#f3e4bd}.sharehead{background:var(--parchment),linear-gradient(180deg,#f2ead4,#e7dcc0);background-size:240px 240px,cover;background-blend-mode:soft-light,normal;border-bottom:2px solid var(--gold)}.authcard{background:var(--parchment),var(--panel);background-size:200px 200px,cover;background-blend-mode:soft-light,normal;border:1px solid var(--gold)}.authcard h1{font-size:30px;letter-spacing:1px}.modal.book-wide{background:var(--parchment),linear-gradient(180deg,#5c3d23,#3a2614);background-size:200px 200px,cover;background-blend-mode:soft-light,normal;border:1px solid #221409;box-shadow:0 30px 70px #140c0599}.modal.book-wide .mh{background:linear-gradient(180deg,#5e3e24,#48301c);border-bottom:1px solid rgba(201,162,76,.45)}.modal.book-wide .mh h3{color:#eccf93;letter-spacing:.5px}.modal.book-wide .mh .x{color:#e9d9ac}.body.book{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:18px;padding:24px 26px 30px;align-items:stretch;background:transparent}.body.book:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1.5px solid rgba(201,162,76,.5);border-radius:5px;pointer-events:none;z-index:4}.body.book:after{content:"";position:absolute;top:11px;right:11px;bottom:11px;left:11px;border:.6px solid rgba(201,162,76,.3);border-radius:4px;pointer-events:none;z-index:4}.body.book .page{position:relative;padding:24px}.body.book .page.left{border-radius:5px 2px 2px 5px;background:linear-gradient(90deg,#3a261000 58%,#3a26102e),var(--parchment),linear-gradient(90deg,#f8f1dc,#f3ecd4 60%,#e1d3b2);background-size:auto,200px 200px,cover;background-blend-mode:normal,soft-light,normal;box-shadow:inset -16px 0 24px -14px #301e0c99,inset 0 16px 14px -15px #fffaeb80,inset 0 -18px 16px -15px #3a26104d,0 2px 6px #140c044d,0 4px 0 -1px #e6d8ba,0 6px 0 -1px #d4c4a0,0 8px 0 -1px #c3b48c}.body.book .page.right{border-radius:2px 5px 5px 2px;background:linear-gradient(90deg,#3a26102e,#3a261000 42%),var(--parchment),linear-gradient(90deg,#e1d3b2,#f3ecd4 40%,#f8f1dc);background-size:auto,200px 200px,cover;background-blend-mode:normal,soft-light,normal;box-shadow:inset 16px 0 24px -14px #301e0c99,inset 0 16px 14px -15px #fffaeb80,inset 0 -18px 16px -15px #3a26104d,0 2px 6px #140c044d,0 4px 0 -1px #e6d8ba,0 6px 0 -1px #d4c4a0,0 8px 0 -1px #c3b48c}.reading-notes{background:#fbf6e6;border-color:#e2d4b2}@media (max-width:680px){.body.book{grid-template-columns:1fr;gap:0;padding:14px}.body.book:before,.body.book:after{display:none}.body.book .page.left{box-shadow:none;border-radius:5px 5px 0 0;border-bottom:1px solid var(--line)}.body.book .page.right{box-shadow:none;border-radius:0 0 5px 5px}}.stat-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:18px}.stat-card{background:var(--chip);border-radius:10px;padding:12px 14px}.sc-num{font-size:26px;font-weight:700;color:var(--accent)}.sc-label{font-size:12px;color:var(--muted);margin-top:2px}.stat-h{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:16px 0 8px;font-family:Cinzel,serif}.stat-bars{display:flex;flex-direction:column;gap:7px}.stat-bar{display:grid;grid-template-columns:120px 1fr 32px;align-items:center;gap:10px;font-size:13px}.sb-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-track{height:14px;background:var(--chip);border-radius:7px;overflow:hidden}.sb-fill{display:block;height:100%;border-radius:7px;min-width:2px}.sb-num{text-align:right;color:var(--muted)}.hamburger{display:none;background:#ffffff24;border:1px solid rgba(255,255,255,.25);color:#fdf6ec;font-size:16px;border-radius:8px;padding:6px 11px;line-height:1}.hmenu{position:relative}.hmenu>summary{list-style:none;cursor:pointer;background:#ffffff24;border:1px solid rgba(255,255,255,.25);color:#fdf6ec;padding:8px 12px;border-radius:8px;font-size:15px;line-height:1}.hmenu>summary::-webkit-details-marker{display:none}.hmenu-pop{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);display:flex;flex-direction:column;min-width:152px;padding:6px;z-index:50}header.app .hmenu-pop button{background:none;border:1px solid transparent;text-align:left;padding:8px 10px;border-radius:7px;color:var(--ink);font-size:14px;width:100%}header.app .hmenu-pop button:hover{background:var(--chip)}:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}.card:focus-visible,.spine:focus-visible{outline:3px solid var(--accent2);outline-offset:3px}.drawer-backdrop{display:none}@media (max-width:820px){.hamburger{display:inline-block}header.app .sub{display:none}.layout{grid-template-columns:1fr}aside{position:fixed;top:56px;left:0;bottom:0;width:264px;max-width:84vw;transform:translate(-100%);transition:transform .22s ease;z-index:45;overflow-y:auto;box-shadow:0 12px 32px #28180a73}aside.open{transform:none}.drawer-backdrop{display:block;position:fixed;top:56px;right:0;bottom:0;left:0;background:#1e12086b;z-index:44}.wall{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:18px 14px}.stat-bar{grid-template-columns:96px 1fr 28px}.toolbar input.search{width:150px}.modal{max-width:96vw}}@media (max-width:460px){header.app{gap:8px;padding:12px 14px}header.app h1{font-size:18px}.stat-cards{grid-template-columns:1fr}}header.app .brand-mark{color:#f3e4bd;flex:none}.brand-mark-lg{color:var(--accent);display:block;margin:0 auto 4px}.hmenu-group{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:8px 10px 2px}.hmenu-sep{height:1px;background:var(--line);margin:6px 4px}header.app .hmenu-theme{display:flex;align-items:center;justify-content:space-between;gap:12px}header.app .hmenu-theme.on{color:var(--accent);font-weight:700}[data-theme=tower]{--bg:#17120d;--panel:#241c14;--ink:#ecdfc4;--muted:#a49372;--line:#3b2f22;--accent:#c79a3e;--accent2:#dcab48;--chip:#2e251b;--gold:#d8b257;--shadow:0 10px 26px rgba(0,0,0,.55);--read:#7c9148;--reading:#c98f3f;--danger:#d2756b}[data-theme=tower] body{background:url(/tower-wall.svg),radial-gradient(130% 90% at 50% -8%,#deb4561f,#deb45600 55%),linear-gradient(180deg,#241a12,#0f0a05);background-size:200px 112px,cover,cover;background-repeat:repeat,no-repeat,no-repeat;background-blend-mode:normal,screen,normal;background-attachment:fixed,fixed,fixed}[data-theme=tower] body:before{content:"";position:fixed;right:0;bottom:0;z-index:-1;pointer-events:none;width:min(46vw,420px);height:min(62vh,460px);background:url(/tower-scene.svg) no-repeat right bottom;background-size:contain;opacity:.62;-webkit-mask-image:radial-gradient(135% 135% at 100% 100%,#000 42%,transparent 76%);mask-image:radial-gradient(135% 135% at 100% 100%,#000 42%,transparent 76%)}[data-theme=tower] header.app{background:var(--parchment),linear-gradient(180deg,#3a2614,#1d130b);background-size:200px 200px,cover;background-blend-mode:soft-light,normal;border-bottom:2px solid var(--gold)}[data-theme=tower] aside{background:var(--parchment),linear-gradient(180deg,#241c14,#1b140d);background-size:240px 240px,cover;background-blend-mode:soft-light,normal;box-shadow:inset -12px 0 18px -16px #0009}[data-theme=tower] aside h2{color:var(--gold)}[data-theme=tower] .card{background:var(--parchment),var(--panel);border-color:#3b2f22;box-shadow:0 2px 2px #00000073,0 14px 22px -10px #0009,inset 0 0 0 1px #ffffff0a}[data-theme=tower] .modal{background:var(--parchment),var(--panel);border:1px solid var(--gold)}[data-theme=tower] .modal .mh{background:transparent;border-bottom:1px solid var(--line)}[data-theme=tower] .btn{background:#2c2218;border-color:#3f3122;color:var(--ink)}[data-theme=tower] .btn.primary{background:linear-gradient(180deg,#caa14a,#9c7426);border-color:#7c5c1c;color:#241a0a}[data-theme=tower] .tag{background:var(--chip);border-color:var(--line);color:var(--ink)}[data-theme=tower] .tag.sel{background:var(--accent);border-color:var(--accent);color:#241a0a}[data-theme=tower] input:not([type=checkbox]),[data-theme=tower] select,[data-theme=tower] textarea{background:#2a2118!important;color:var(--ink)!important;border-color:var(--line)!important}[data-theme=tower] .toast{background:#2a2118;color:#f3e4bd;border:1px solid var(--line)}[data-theme=tower] .sharehead{background:var(--parchment),linear-gradient(180deg,#241c14,#1b140d);background-size:240px 240px,cover;background-blend-mode:soft-light,normal;border-bottom:2px solid var(--gold)}[data-theme=tower] .authcard{background:var(--parchment),var(--panel);border:1px solid var(--gold)}[data-theme=tower] .hmenu-pop{background:var(--panel);border-color:var(--line)}[data-theme=tower] header.app .hmenu-pop button{color:var(--ink)}[data-theme=tower] header.app .hmenu-pop button:hover{background:#2f261c}[data-theme=tower] .stat-card{background:#2a2118}[data-theme=tower] .sb-track{background:#3a2e20}[data-theme=tower] .add-tray{background:linear-gradient(270deg,#241c14,#1b140d)}[data-theme=tower] .banner{background:#2e2415;border-color:var(--gold);color:#e7d4a0}[data-theme=tower] .body.book input:not([type=checkbox]),[data-theme=tower] .body.book select,[data-theme=tower] .body.book textarea{background:#fff!important;color:#33291c!important;border-color:#d8c8a6!important}[data-theme=desk]{--bg:#3f2e1c;--panel:#f7f0dd;--ink:#33291c;--muted:#7a6f59;--line:#d8c8a6;--accent:#2f5d3a;--accent2:#b08d4f;--chip:#e7dcc2;--gold:#b08d4f;--shadow:0 8px 20px rgba(30,18,8,.3);--read:#3b6d2e;--reading:#b9824f;--danger:#9a2f28}[data-theme=desk] body{background:var(--parchment),radial-gradient(130% 120% at 50% -10%,#5a4127,#3f2e1c 55%,#281b10);background-size:240px 240px,cover;background-blend-mode:soft-light,normal}[data-theme=desk] header.app{background:var(--parchment),linear-gradient(180deg,#2f5d3a,#1f3f27);background-size:200px 200px,cover;background-blend-mode:soft-light,normal;border-bottom:2px solid var(--gold)}[data-theme=desk] .btn.primary{background:linear-gradient(180deg,#356b42,#244c2e);border-color:#1c3b24;color:#eef3e9}[data-theme=desk] .tag.sel{background:var(--accent);border-color:var(--accent);color:#eef3e9}[data-theme=desk] aside h2{color:#2f5d3a}[data-theme=desk] .sharehead{background:var(--parchment),linear-gradient(180deg,#3a6a46,#244c2e);background-size:240px 240px,cover;background-blend-mode:soft-light,normal;border-bottom:2px solid var(--gold)}[data-theme=desk] .sharehead h1,[data-theme=desk] .sharehead .by{color:#f0ead6}[data-theme=desk] .toolbar .title,[data-theme=desk] .empty h3{color:#f4eddb}[data-theme=desk] .empty{color:#dccdb0}[data-theme=desk] header.app .who{color:#f3e4bd}[data-theme=starship]{--bg:#0d1419;--panel:#152029;--ink:#d8e8f0;--muted:#8298a4;--line:#283a45;--accent:#1fb6c9;--accent2:#e0457e;--chip:#16242d;--gold:#37d2e6;--shadow:0 10px 26px rgba(0,0,0,.6);--read:#39c08a;--reading:#e0a23b;--danger:#ef5b6b}[data-theme=starship] body{background:repeating-linear-gradient(0deg,rgba(55,210,230,.05) 0 1px,transparent 1px 40px),repeating-linear-gradient(90deg,rgba(55,210,230,.05) 0 1px,transparent 1px 40px),radial-gradient(120% 90% at 50% -10%,#15323b,#0d1419 55%,#060a0d);background-size:auto,auto,cover}[data-theme=starship] header.app{background:linear-gradient(180deg,#1b2b34,#0f1a20);border-bottom:2px solid var(--gold);box-shadow:0 2px 16px #37d2e633}[data-theme=starship] header.app h1{color:#dff4f8;text-shadow:0 0 8px rgba(55,210,230,.5)}[data-theme=starship] header.app .brand-mark{color:#37d2e6}[data-theme=starship] header.app .who{color:#cfe9f0}[data-theme=starship] aside{background:linear-gradient(180deg,#152029,#0f1820);box-shadow:inset -12px 0 18px -16px #0009}[data-theme=starship] aside h2{color:var(--gold);text-shadow:0 0 6px rgba(55,210,230,.4)}[data-theme=starship] .toolbar .title{color:#dff4f8;text-shadow:0 0 6px rgba(55,210,230,.35)}[data-theme=starship] .empty h3{color:#cfe6ee}[data-theme=starship] .empty{color:#8aa3b0}[data-theme=starship] .card{background:var(--panel);border-color:#283a45;box-shadow:0 2px 2px #0006,0 14px 22px -10px #0009,inset 0 0 0 1px #37d2e614}[data-theme=starship] .card:hover{box-shadow:0 3px 3px #0006,0 0 18px #37d2e640,inset 0 0 0 1px #37d2e638}[data-theme=starship] .modal{background:var(--panel);border:1px solid var(--gold)}[data-theme=starship] .modal .mh{background:transparent;border-bottom:1px solid var(--line)}[data-theme=starship] .btn{background:#182630;border-color:#2c4350;color:var(--ink)}[data-theme=starship] .btn.primary{background:linear-gradient(180deg,#22c2d6,#138596);border-color:#0c5c68;color:#04181c}[data-theme=starship] .tag{background:var(--chip);border-color:var(--line);color:var(--ink)}[data-theme=starship] .tag.sel{background:var(--accent);border-color:var(--accent);color:#04181c}[data-theme=starship] input:not([type=checkbox]),[data-theme=starship] select,[data-theme=starship] textarea{background:#0f1a20!important;color:var(--ink)!important;border-color:var(--line)!important}[data-theme=starship] .body.book input:not([type=checkbox]),[data-theme=starship] .body.book select,[data-theme=starship] .body.book textarea{background:#fff!important;color:#33291c!important;border-color:#d8c8a6!important}[data-theme=starship] .toast{background:#152029;color:#dff4f8;border:1px solid var(--gold)}[data-theme=starship] .sharehead{background:linear-gradient(180deg,#1b2b34,#0f1a20);border-bottom:2px solid var(--gold)}[data-theme=starship] .sharehead h1{color:#dff4f8;text-shadow:0 0 8px rgba(55,210,230,.5)}[data-theme=starship] .sharehead .by{color:#a9c6d2}[data-theme=starship] .authcard{background:var(--panel);border:1px solid var(--gold)}[data-theme=starship] .authcard h1{color:#dff4f8}[data-theme=starship] .hmenu-pop{background:var(--panel);border-color:var(--line)}[data-theme=starship] header.app .hmenu-pop button{color:var(--ink)}[data-theme=starship] header.app .hmenu-pop button:hover{background:#1d2e38}[data-theme=starship] .stat-card{background:#0f1a20}[data-theme=starship] .sb-track{background:#22343f}[data-theme=starship] .add-tray{background:linear-gradient(270deg,#152029,#0f1820)}[data-theme=starship] .banner{background:#11242c;border-color:var(--gold);color:#bfe9f0}.share-logo{color:var(--accent2);display:block;margin:0 auto 6px}.share-logo.foot{margin:0}.sharefoot{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted);padding:28px 20px;font-size:13px}
