:root{--text:#6b6876;--text-dim:#928fa0;--text-h:#14121c;--bg:#f6f5fa;--surface:#fff;--surface-2:#eeecf5;--border:#e5e3ee;--border-strong:#d8d5e6;--brand-1:#7c5cff;--brand-2:#ff5ca8;--accent:#7c5cff;--accent-ink:#fff;--accent-soft:#7c5cff1a;--accent-border:#7c5cff59;--danger:#e5484d;--danger-soft:#e5484d1f;--success:#1cad6e;--radius-sm:10px;--radius-md:16px;--radius-lg:22px;--radius-pill:999px;--shadow-sm:0 1px 2px #140f280d, 0 1px 1px #140f280a;--shadow-md:0 8px 24px -8px #1e143c2e;--shadow-lg:0 20px 48px -12px #1e143c47;--shadow-brand:0 10px 28px -8px #7c5cff8c;--header-h:60px;--bottom-nav-h:66px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--sans:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--display:"Lexend", var(--sans);font:15px/1.55 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#a6a3b6;--text-dim:#726f84;--text-h:#f4f2fb;--bg:#0e0c16;--surface:#17141f;--surface-2:#1e1a2b;--border:#2b2739;--border-strong:#383349;--brand-1:#9b7dff;--brand-2:#ff7ab8;--accent:#9b7dff;--accent-soft:#9b7dff24;--accent-border:#9b7dff66;--danger:#ff6b70;--danger-soft:#ff6b7024;--success:#35d992;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 24px -8px #0000008c;--shadow-lg:0 24px 56px -16px #000000a6;--shadow-brand:0 10px 28px -6px #9b7dff73}}*,:before,:after{box-sizing:border-box}body{margin:0}h1,h2,h3{color:var(--text-h);font-family:var(--display);letter-spacing:-.01em;font-weight:700}h1{margin:0 0 4px;font-size:1.6rem}h2{margin:0 0 8px;font-size:1.1rem}p{margin:0 0 8px}a{color:var(--accent);text-decoration:none}.page-subtitle{color:var(--text-dim);max-width:60ch;margin:0 0 20px;font-size:.92rem}input,select,textarea,button{font:inherit;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--surface);color:var(--text-h);padding:11px 14px;font-size:.95rem;transition:border-color .15s,box-shadow .15s,background-color .15s,transform .1s}input,select,textarea{width:100%}textarea{resize:vertical;min-height:80px}input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}input::placeholder,textarea::placeholder{color:var(--text-dim)}button{cursor:pointer;background:var(--surface-2);color:var(--text-h);white-space:nowrap;border:1.5px solid #0000;font-weight:600}button:hover{background:var(--border)}button:active{transform:translateY(1px)scale(.99)}button:disabled{opacity:.5;cursor:not-allowed;transform:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary,button[type=submit]{background:linear-gradient(135deg, var(--brand-1), var(--brand-2));color:#fff;box-shadow:var(--shadow-brand);border-color:#0000}.btn-primary:hover,button[type=submit]:hover{filter:brightness(1.06)}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-ghost{border-color:var(--border);background:0 0}.btn-icon{border-radius:var(--radius-pill);justify-content:center;align-items:center;padding:9px;display:inline-flex}fieldset{border:1.5px solid var(--border);border-radius:var(--radius-md);margin:0;padding:14px}legend{color:var(--text-h);padding:0 6px;font-size:.85rem;font-weight:600}label{font-weight:500}.app-shell{background:var(--bg);flex-direction:column;min-height:100dvh;display:flex}.app-header{z-index:40;height:calc(var(--header-h) + var(--safe-t));padding:calc(8px + var(--safe-t)) 20px 8px;background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.4);border-bottom:1px solid var(--border);align-items:center;gap:12px;display:flex;position:sticky;top:0}.app-brand{font-family:var(--display);color:var(--text-h);align-items:center;gap:8px;font-size:1.15rem;font-weight:700;display:flex}.app-brand-mark{background:linear-gradient(135deg, var(--brand-1), var(--brand-2));color:#fff;width:32px;height:32px;box-shadow:var(--shadow-brand);border-radius:10px;justify-content:center;align-items:center;display:flex}.app-nav{align-items:center;gap:4px;margin-left:12px;display:none}.app-nav-link{border-radius:var(--radius-pill);color:var(--text-dim);align-items:center;gap:6px;padding:8px 14px;font-size:.9rem;font-weight:600;display:flex}.app-nav-link:hover{background:var(--surface-2);color:var(--text-h)}.app-nav-link.active{background:var(--accent-soft);color:var(--accent)}.app-header-spacer{margin-left:auto}.app-nav-user{color:var(--text-dim);font-size:.85em;display:none}@media (width>=760px){.app-nav{display:flex}.app-nav-user{margin-right:8px;display:inline}}.app-bottom-nav{z-index:40;padding:8px 8px calc(8px + var(--safe-b));background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.4);border-top:1px solid var(--border);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}@media (width>=760px){.app-bottom-nav{display:none}}.app-bottom-nav-link{border-radius:var(--radius-md);color:var(--text-dim);flex-direction:column;align-items:center;gap:3px;padding:6px 18px 4px;font-size:.7rem;font-weight:600;display:flex}.app-bottom-nav-link.active{color:var(--accent)}.app-bottom-nav-link svg{transition:transform .15s}.app-bottom-nav-link.active svg{transform:translateY(-1px)scale(1.05)}.page{width:100%;max-width:1080px;padding:20px 20px calc(28px + var(--bottom-nav-h) + var(--safe-b));flex:1;margin:0 auto}@media (width>=760px){.page{padding:28px 28px 40px}}.toolbar,.button-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.toolbar{margin-bottom:20px}.search-bar{flex:220px;align-items:center;display:flex;position:relative}.search-bar svg{color:var(--text-dim);pointer-events:none;position:absolute;left:12px}.search-bar input{padding-left:38px}@media (width<=480px){.toolbar>*,.button-row>*{flex:auto}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:20px;padding:16px}.lookup-result{border-top:1px dashed var(--border);gap:14px;margin-top:12px;padding-top:12px;display:flex}.lookup-result-cover{object-fit:cover;border-radius:var(--radius-sm);width:74px;height:110px;box-shadow:var(--shadow-sm)}.book-form{max-width:640px}.book-form-fields{flex-direction:column;gap:14px;display:flex}.book-form-fields label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em;margin-bottom:5px;font-size:.82em;font-weight:600;display:block}.book-form-fields>label>input,.book-form-fields>label>select,.book-form-fields>label>textarea{margin-top:2px}.book-form-submit{width:100%;margin-top:4px;padding:13px;font-size:1rem}.book-grid{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:16px;display:grid}.book-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-direction:column;padding:12px;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex}.book-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-3px)}.book-card-cover{aspect-ratio:2/3;border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--accent-soft), var(--surface-2));width:100%;color:var(--text-dim);justify-content:center;align-items:center;margin-bottom:10px;display:flex;overflow:hidden}.book-card-cover img{object-fit:cover;width:100%;height:100%}.book-card-title{color:var(--text-h);margin-bottom:2px;font-size:.94rem;font-weight:700;line-height:1.3}.book-card-authors{color:var(--text-dim);margin-bottom:6px;font-size:.82rem}.book-card-meta{flex-wrap:wrap;gap:6px;margin-top:auto;margin-bottom:10px;display:flex}.pill{border-radius:var(--radius-pill);background:var(--surface-2);color:var(--text-dim);align-items:center;gap:4px;padding:3px 9px;font-size:.72rem;font-weight:600;display:inline-flex}.book-card .button-row{gap:6px}.book-card .button-row button{flex:1;padding:8px 10px;font-size:.82rem}.empty-state{text-align:center;color:var(--text-dim);padding:56px 16px}.empty-state svg{color:var(--border-strong);margin-bottom:12px}.fab{right:20px;bottom:calc(20px + var(--bottom-nav-h) + var(--safe-b));z-index:45;border-radius:var(--radius-pill);background:linear-gradient(135deg, var(--brand-1), var(--brand-2));color:#fff;box-shadow:var(--shadow-brand);align-items:center;gap:8px;padding:15px 20px;font-weight:700;display:flex;position:fixed}@media (width>=760px){.fab{bottom:28px}}.scan-page{z-index:1000;background:#050308;flex-direction:column;display:flex;position:fixed;inset:0}.scan-page-header{z-index:1;padding:calc(12px + var(--safe-t)) 16px 12px;color:#fff;background:linear-gradient(#0009,#0000);align-items:center;gap:16px;display:flex;position:relative}.scan-page-header button,.scan-page-header a{color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff1f;border:1px solid #fff3}.scan-page-done{color:#fff;border-radius:var(--radius-pill);background:#ffffff1f;border:1px solid #fff3;align-items:center;gap:6px;padding:9px 14px;font-weight:600;text-decoration:none;display:inline-flex}.scan-page-count{color:#fff;border-radius:var(--radius-pill);background:#ffffff1f;margin-left:auto;padding:6px 12px;font-size:.85em;font-weight:600}.scan-page-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.scan-page-reticle{aspect-ratio:5/3;z-index:1;pointer-events:none;width:min(78vw,340px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.scan-page-reticle:before{content:"";border-radius:var(--radius-lg);border:2px solid #ffffff8c;position:absolute;inset:0;box-shadow:0 0 0 999px #00000059}.scan-page-reticle-line{background:linear-gradient(90deg, transparent, var(--brand-2), var(--brand-1), transparent);height:2px;animation:2.1s ease-in-out infinite scan-sweep;position:absolute;top:50%;left:6%;right:6%;box-shadow:0 0 12px 1px #ff5ca8b3}@keyframes scan-sweep{0%,to{top:12%}50%{top:88%}}.scan-page-hint{bottom:calc(24px + var(--safe-b));z-index:1;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-pill);white-space:nowrap;background:#0000008c;padding:9px 18px;font-size:.88em;font-weight:500;position:absolute;left:50%;transform:translate(-50%)}.scan-page-error{z-index:1;color:#fff;background:var(--danger);margin:0;padding:14px 16px;font-weight:500;position:relative}.scan-card{z-index:1;background:var(--surface);padding:22px 18px calc(22px + var(--safe-b));border-radius:24px 24px 0 0;margin-top:auto;animation:.22s ease-out scan-card-in;position:relative;box-shadow:0 -12px 40px #0006}@keyframes scan-card-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.scan-card-book{gap:14px;margin-bottom:14px;display:flex}.scan-card-book img{object-fit:cover;border-radius:var(--radius-sm);width:72px;height:108px;box-shadow:var(--shadow-sm);flex-shrink:0}.scan-card-success{text-align:center;color:var(--success);flex-direction:column;align-items:center;gap:8px;font-weight:700;display:flex}.scan-card-loading{color:var(--text-h);align-items:center;gap:12px;font-weight:500;display:flex}.spinner{border:2.5px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:20px;height:20px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-shell{background:radial-gradient(circle at 20% 15%, var(--accent-soft), transparent 55%), var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:32px 28px}.auth-card form{flex-direction:column;align-items:stretch}.loc-tree-list{margin:0;padding:0;list-style:none}.loc-node{border-radius:var(--radius-sm)}.loc-node-row{border-radius:var(--radius-sm);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 4px;display:flex}.loc-node-row:hover{background:var(--surface-2)}.modal-overlay{z-index:200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a081480;justify-content:center;align-items:flex-end;padding:0;animation:.15s ease-out modal-fade-in;display:flex;position:fixed;inset:0}@media (width>=640px){.modal-overlay{align-items:center;padding:20px}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal-sheet{background:var(--surface);border:1px solid var(--border);width:100%;max-width:440px;max-height:min(78vh,640px);padding:18px 18px calc(18px + var(--safe-b));box-shadow:var(--shadow-lg);border-radius:22px 22px 0 0;flex-direction:column;animation:.2s ease-out scan-card-in;display:flex}@media (width>=640px){.modal-sheet{border-radius:var(--radius-lg);padding:22px}}.modal-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:2px;display:flex}.modal-header h2{margin:0;font-size:1.05rem}.move-dialog-list{flex-direction:column;gap:2px;margin:4px -6px 0;padding:2px 6px 4px;display:flex;overflow-y:auto}.move-dialog-item{text-align:left;border-radius:var(--radius-sm);background:0 0;border:1.5px solid #0000;align-items:center;gap:8px;width:100%;padding:10px 12px;font-weight:500;display:flex}.move-dialog-item:hover:not(:disabled){background:var(--surface-2)}.move-dialog-item.current{background:var(--accent-soft);color:var(--accent);font-weight:600}.move-dialog-item:disabled{opacity:.35;cursor:not-allowed}.move-dialog-name{color:inherit;flex:1}.move-dialog-type{color:var(--text-dim);font-size:.78rem;font-weight:500}.move-dialog-check{color:var(--accent);flex-shrink:0}.loc-node-name{color:var(--text-h);font-weight:600}.loc-node-type{color:var(--text-dim);font-size:.8em}
