.dash-page{min-height:100vh;padding:5.5rem 1rem 4rem;position:relative;overflow:hidden}.dash-bg-mesh{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}.dash-orb{position:absolute;border-radius:50%;filter:blur(100px);opacity:.5}.dash-orb-1{width:500px;height:500px;top:-15%;right:-10%;background:radial-gradient(circle,color-mix(in srgb,var(--color-accent) 10%,transparent),transparent 70%);animation:float-orb 15s ease-in-out infinite}.dash-orb-2{width:400px;height:400px;bottom:10%;left:-8%;background:radial-gradient(circle,color-mix(in srgb,var(--color-accent-secondary) 8%,transparent),transparent 70%);animation:float-orb 18s ease-in-out infinite reverse}.dash-orb-3{width:300px;height:300px;top:40%;right:20%;background:radial-gradient(circle,color-mix(in srgb,var(--color-accent) 5%,transparent),transparent 70%);animation:float-orb 12s ease-in-out infinite 3s}@keyframes dash-fade-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes float-orb{0%,to{transform:translate(0) scale(1)}33%{transform:translate(10px,-10px) scale(1.1)}66%{transform:translate(-5px,5px) scale(.95)}}.dash-app .glass-card{animation:dash-fade-in .4s cubic-bezier(.4,0,.2,1) both}.user-page{min-height:100vh;padding:5.5rem 1rem 4rem;position:relative;overflow:hidden}.user-page-bg{position:absolute;inset:0;pointer-events:none;z-index:0}.user-orb{position:absolute;border-radius:50%;filter:blur(100px);opacity:.4}.user-orb-1{width:400px;height:400px;top:-10%;right:-5%;background:radial-gradient(circle,color-mix(in srgb,var(--color-accent) 12%,transparent),transparent 70%);animation:float-orb 15s ease-in-out infinite}.user-orb-2{width:350px;height:350px;bottom:10%;left:-8%;background:radial-gradient(circle,color-mix(in srgb,var(--color-accent-secondary) 8%,transparent),transparent 70%);animation:float-orb 18s ease-in-out infinite reverse}.library-hero{position:relative;padding:2.5rem;border-radius:var(--radius-card-lg);background:linear-gradient(135deg,color-mix(in srgb,var(--color-accent) 10%,var(--color-bg-card)),var(--color-bg-card));border:1px solid color-mix(in srgb,var(--color-accent) 20%,transparent);overflow:hidden}.library-hero:after{content:"";position:absolute;top:-40%;right:-10%;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--color-accent) 16%,transparent),transparent 70%);pointer-events:none}.hero-kicker{display:inline-block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--color-accent);margin-bottom:.75rem}.hero-title{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;letter-spacing:-.02em;color:var(--color-text-primary);margin:0 0 .6rem;font-family:var(--font-serif)}.hero-subtitle{font-size:1rem;line-height:1.65;color:var(--color-text-secondary);max-width:560px;margin:0 0 1.25rem}.hero-stats{display:flex;gap:1.5rem;flex-wrap:wrap}.hero-stats span{font-size:.85rem;color:var(--color-text-muted)}.hero-stats strong{color:var(--color-accent);font-family:var(--font-mono)}.hero-login-hint{font-size:.85rem;color:var(--color-text-muted);margin:.5rem 0 0}.hero-login-hint a{color:var(--color-accent);font-weight:600;text-decoration:underline;text-underline-offset:3px}.lib-tabs{display:flex;gap:.5rem;padding:.35rem;border-radius:14px;background:var(--color-bg-card);border:1px solid var(--color-bg-card-border);width:fit-content;max-width:100%;flex-wrap:wrap}.lib-tab{padding:.55rem 1.1rem;border:none;background:none;border-radius:10px;font-size:.85rem;font-weight:600;color:var(--color-text-secondary);cursor:pointer;transition:all .25s;font-family:var(--font-sans)}.lib-tab:hover{color:var(--color-text-primary);background:var(--color-bg-card-hover)}.lib-tab.active{background:linear-gradient(135deg,var(--color-accent),var(--color-accent-secondary));color:var(--color-btn-text);box-shadow:0 4px 14px color-mix(in srgb,var(--color-accent) 30%,transparent)}.search-panel,.explore-panel,.saved-panel{display:flex;flex-direction:column;gap:1.25rem}.search-box{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.1rem;border-radius:14px;background:var(--color-bg-card);border:1px solid var(--color-bg-card-border);transition:border-color .3s,box-shadow .3s}.search-box:focus-within{border-color:var(--color-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-accent) 15%,transparent)}.search-box.large{padding:1rem 1.25rem;border-radius:16px;background:color-mix(in srgb,var(--color-bg-card) 90%,transparent)}.search-box svg{color:var(--color-text-muted);flex-shrink:0}.search-input{flex:1;min-width:0;border:none;background:none;outline:none;font-size:.95rem;color:var(--color-text-primary);font-family:var(--font-sans)}.search-input::placeholder{color:var(--color-text-muted)}.search-spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--color-bg-card-border);border-top-color:var(--color-accent);animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.search-error{color:#ef4444;font-size:.85rem;padding:.75rem 1rem;border-radius:12px;background:#ef444414;border:1px solid rgba(239,68,68,.25)}.results-count{font-size:.85rem;color:var(--color-text-muted);font-family:var(--font-mono)}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.25rem}.book-card{display:flex;flex-direction:column;padding:0;overflow:hidden;border:1px solid var(--color-bg-card-border);border-radius:14px;background:var(--color-bg-card);cursor:pointer;text-align:left;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .35s;font-family:var(--font-sans)}.book-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--color-accent) 50%,transparent);box-shadow:var(--shadow-glow)}.book-cover{position:relative;aspect-ratio:2 / 3;overflow:hidden;background:var(--color-bg-secondary)}.book-cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.2,.8,.2,1)}.book-card:hover .book-cover img{transform:scale(1.06)}.book-cover-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:2.4rem;background:linear-gradient(135deg,color-mix(in srgb,var(--color-accent) 12%,var(--color-bg-secondary)),var(--color-bg-secondary))}.book-cover-fallback.large{font-size:4rem}.book-cover-shine{position:absolute;inset:0;background:linear-gradient(135deg,transparent 45%,color-mix(in srgb,white 7%,transparent) 50%,transparent 60%);background-size:200% 200%;animation:gradient-shift 10s ease infinite;pointer-events:none}.book-info{padding:.9rem 1rem;display:flex;flex-direction:column;gap:.25rem}.book-title{font-size:.9rem;font-weight:700;color:var(--color-text-primary);line-height:1.35;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-subtitle{font-size:.75rem;color:var(--color-text-muted);margin:0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.book-authors{font-size:.78rem;color:var(--color-text-secondary);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-meta{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.2rem}.meta-chip{font-size:.68rem;font-family:var(--font-mono);color:var(--color-text-muted);padding:.15rem .5rem;border-radius:100px;background:var(--color-bg-card-border)}.meta-chip.rating{color:#f59e0b;background:#f59e0b1f}.book-skeleton{aspect-ratio:2 / 3;border-radius:14px;background:linear-gradient(90deg,var(--color-bg-card) 25%,var(--color-bg-card-hover) 50%,var(--color-bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.panel-head{margin-bottom:.25rem}.panel-title{font-size:1.3rem;font-weight:800;color:var(--color-text-primary);margin:0 0 .3rem;font-family:var(--font-serif)}.panel-desc{font-size:.88rem;color:var(--color-text-muted);margin:0}.empty-panel{text-align:center;padding:3rem 1.5rem;border-radius:14px;background:var(--color-bg-card);border:1px dashed var(--color-bg-card-border)}.empty-emoji{display:block;font-size:2.4rem;margin-bottom:.75rem}.empty-panel p{font-size:.95rem;color:var(--color-text-secondary);margin:.2rem 0}.empty-hint{font-size:.82rem;color:var(--color-text-muted)}.book-modal-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:#0000008c;backdrop-filter:blur(8px);animation:fade-in .25s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.book-modal{position:relative;width:min(760px,100%);max-height:min(620px,90vh);overflow-y:auto;padding:2rem;border-radius:var(--radius-card-lg);background:var(--color-bg-primary);border:1px solid var(--color-glass-border);box-shadow:0 30px 80px #0006;animation:modal-in .3s cubic-bezier(.2,.8,.2,1)}@keyframes modal-in{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-close{position:absolute;top:.9rem;right:.9rem;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--color-bg-card);border:1px solid var(--color-bg-card-border);color:var(--color-text-secondary);cursor:pointer;transition:all .25s}.modal-close:hover{color:var(--color-accent);border-color:var(--color-accent);transform:rotate(90deg)}.modal-grid{display:grid;grid-template-columns:220px 1fr;gap:2rem;align-items:start}.modal-cover{aspect-ratio:2 / 3;border-radius:12px;overflow:hidden;background:var(--color-bg-secondary);box-shadow:var(--shadow-card)}.modal-cover img{width:100%;height:100%;object-fit:cover}.modal-kicker{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--color-accent)}.modal-title{font-size:1.5rem;font-weight:800;color:var(--color-text-primary);margin:.4rem 0 .2rem;line-height:1.2;font-family:var(--font-serif)}.modal-subtitle{font-size:.95rem;color:var(--color-text-secondary);margin:0 0 .4rem}.modal-authors{font-size:.88rem;color:var(--color-text-muted);margin:0 0 1rem}.modal-description{font-size:.92rem;line-height:1.7;color:var(--color-text-secondary);margin:0 0 1.1rem}.modal-skeleton{height:90px;border-radius:10px;background:linear-gradient(90deg,var(--color-bg-card) 25%,var(--color-bg-card-hover) 50%,var(--color-bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;margin-bottom:1rem}.modal-subjects{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}.subject-chip{font-size:.72rem;color:var(--color-text-secondary);padding:.25rem .65rem;border-radius:100px;background:var(--color-bg-card);border:1px solid var(--color-bg-card-border)}.modal-stats{display:flex;flex-wrap:wrap;gap:1rem;font-size:.82rem;color:var(--color-text-muted);padding-top:1rem;border-top:1px solid var(--color-bg-card-border);margin-bottom:1rem}.modal-links{display:flex;gap:1rem;flex-wrap:wrap}.modal-link{font-size:.88rem;font-weight:600;color:var(--color-accent);text-decoration:none}.modal-link:hover{text-decoration:underline}.modal-link.external{color:var(--color-text-secondary)}.shelves-panel{display:flex;flex-direction:column;gap:1.25rem}.shelf-badge{position:absolute;top:.55rem;left:.55rem;z-index:2;display:inline-flex;align-items:center;gap:.3rem;padding:.28rem .6rem;border-radius:100px;color:#fff;font-size:.66rem;font-weight:700;font-family:var(--font-sans);box-shadow:0 3px 10px #00000059;pointer-events:none;max-width:calc(100% - 1.1rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shelf-subtabs{display:flex;gap:.5rem;flex-wrap:wrap;padding:.35rem;border-radius:14px;background:var(--color-bg-card);border:1px solid var(--color-bg-card-border);width:fit-content;max-width:100%}.shelf-subtab{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1rem;border:none;background:none;border-radius:10px;font-size:.85rem;font-weight:600;color:var(--color-text-secondary);cursor:pointer;transition:all .25s;font-family:var(--font-sans)}.shelf-subtab:hover{color:var(--color-text-primary);background:var(--color-bg-card-hover)}.shelf-subtab.active{background:var(--color-bg-card-hover);color:var(--color-text-primary);box-shadow:inset 0 0 0 1px var(--color-bg-card-border)}.shelf-subtab-icon{font-size:1rem}.shelf-subtab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 .35rem;border-radius:100px;background:var(--color-bg-card-border);color:var(--color-text-muted);font-size:.72rem;font-weight:700;font-family:var(--font-mono);transition:all .25s}.shelf-picker{margin:0 0 1.1rem;padding-top:1rem;border-top:1px solid var(--color-bg-card-border)}.shelf-picker-label{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin-bottom:.6rem}.shelf-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.shelf-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .95rem;border-radius:100px;border:1px solid var(--color-bg-card-border);background:var(--color-bg-card);color:var(--color-text-secondary);font-size:.8rem;font-weight:600;cursor:pointer;font-family:var(--font-sans);transition:all .25s}.shelf-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-text-primary);transform:translateY(-1px)}.shelf-btn.active{color:#fff;box-shadow:0 4px 14px #0003}.shelf-btn:disabled{opacity:.55;cursor:not-allowed}.shelf-btn-remove{color:#ef4444;border-color:#ef444459;background:#ef44440f}.shelf-btn-remove:hover:not(:disabled){border-color:#ef4444;color:#ef4444;background:#ef44441a}.add-collection-btn{padding:.55rem 1.1rem;border-radius:100px;border:none;background:linear-gradient(135deg,var(--color-accent),var(--color-accent-secondary));color:var(--color-btn-text);font-size:.85rem;font-weight:600;cursor:pointer;font-family:var(--font-sans);transition:transform .25s,box-shadow .25s}.add-collection-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-glow)}.collection-form{display:flex;gap:.6rem}.collection-form input{flex:1;min-width:0;padding:.7rem 1rem;border-radius:12px;border:1px solid var(--color-bg-card-border);background:var(--color-bg-card);color:var(--color-text-primary);font-size:.9rem;outline:none;font-family:var(--font-sans);transition:border-color .25s}.collection-form input:focus{border-color:var(--color-accent)}.primary-btn{padding:.7rem 1.4rem;border-radius:12px;border:none;background:linear-gradient(135deg,var(--color-accent),var(--color-accent-secondary));color:var(--color-btn-text);font-weight:600;cursor:pointer;font-family:var(--font-sans);transition:transform .25s}.primary-btn:hover{transform:translateY(-1px)}.collections-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.collection-card{padding:1.25rem;transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s,border-color .3s}.collection-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--color-accent) 40%,transparent);box-shadow:var(--shadow-glow)}.collection-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}.collection-icon{font-size:1.6rem}.collection-remove{background:none;border:none;color:var(--color-text-muted);font-size:1rem;cursor:pointer;transition:color .2s}.collection-remove:hover{color:#ef4444}.collection-name{font-size:1.05rem;font-weight:700;color:var(--color-text-primary);margin:0 0 .25rem}.collection-desc{font-size:.82rem;color:var(--color-text-muted);margin:0 0 .5rem}.collection-count{font-size:.78rem;font-family:var(--font-mono);color:var(--color-text-muted)}@media(max-width:640px){.modal-grid{grid-template-columns:1fr}.modal-cover{max-width:200px}.library-hero{padding:1.5rem}}@media(max-width:640px){.dash-orb,.user-orb{opacity:.3}}
