:root{--bg:#000;--bg-raised:#0c0c0c;--bg-surface:#111;--card:#4a6fa5;--card-dark:#3a5a8a;--card-light:#7aa2d4;--btn:#5e1414;--btn-hover:#7a1c1c;--text:#f0ece4;--text-muted:#a89f92;--text-faint:#6b6359;--border:#ffffff14;--border-hover:#ffffff29;--font-serif:"Playfair Display", Georgia, "Times New Roman", serif;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.0625rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.5rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--sp-10:2.5rem;--sp-12:3rem;--sp-16:4rem;--sp-20:5rem;--r-sm:4px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-2xl:24px;--r-full:9999px;--shadow-sm:0 1px 3px #00000080;--shadow-md:0 4px 16px #0009;--shadow-lg:0 8px 32px #000000b3;--ease:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:var(--text-base);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100vh;line-height:1.6;display:flex}#root{flex-direction:column;flex:1;display:flex}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);color:var(--text);line-height:1.2}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}p{color:var(--text-muted)}a{color:var(--card-light);text-decoration:none}a:hover{color:var(--text)}.container{max-width:1120px;padding:0 var(--sp-6);margin:0 auto}button,.btn{justify-content:center;align-items:center;gap:var(--sp-2);font-family:var(--font-sans);font-size:var(--text-sm);border-radius:var(--r-md);cursor:pointer;transition:background var(--ease), color var(--ease), border-color var(--ease), transform var(--ease);white-space:nowrap;padding:var(--sp-3) var(--sp-5);border:none;font-weight:500;text-decoration:none;display:inline-flex}button:active,.btn:active{transform:scale(.97)}button:disabled,.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:var(--btn);color:var(--text);border:1px solid var(--btn)}.btn-primary:hover:not(:disabled){background:var(--btn-hover);border-color:var(--btn-hover)}.btn-ghost{border:1px solid var(--border-hover);color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){border-color:var(--card);color:var(--text);background:#4a6fa514}.btn-secondary{border:1px solid var(--card);color:var(--card-light);background:#4a6fa526}.btn-secondary:hover:not(:disabled){background:#4a6fa540}.btn-sm{padding:var(--sp-2) var(--sp-4);font-size:var(--text-xs)}.btn-lg{padding:var(--sp-4) var(--sp-8);font-size:var(--text-base)}.btn-full{width:100%}input,textarea,select{width:100%;padding:var(--sp-3) var(--sp-4);background:var(--bg-raised);border:1px solid var(--border-hover);border-radius:var(--r-md);color:var(--text);font-family:var(--font-sans);font-size:var(--text-sm);transition:border-color var(--ease), box-shadow var(--ease);outline:none}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,textarea:focus,select:focus{border-color:var(--card);box-shadow:0 0 0 3px #4a6fa526}textarea{resize:vertical;min-height:80px}select{cursor:pointer}label{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--sp-2);display:block}.form-group{margin-bottom:var(--sp-5)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:var(--sp-6)}.card-subtle{border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-4);background:#ffffff05}.msg-error{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);color:#e07070;font-size:var(--text-sm);margin-bottom:var(--sp-4);background:#8b2e2e26;border:1px solid #8b2e2e66}.msg-success{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);color:#68d391;font-size:var(--text-sm);margin-bottom:var(--sp-4);background:#38a1691f;border:1px solid #38a16959}.spinner{border:2px solid #fff3;border-top-color:var(--text);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.badge-blue{border:1px solid var(--card);border-radius:var(--r-full);font-size:var(--text-xs);color:var(--card-light);background:#4a6fa526;align-items:center;padding:2px 8px;display:inline-flex}.badge-red{border:1px solid var(--btn);border-radius:var(--r-full);font-size:var(--text-xs);color:#e07070;background:#8b2e2e26;align-items:center;padding:2px 8px;display:inline-flex}.book-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-raised)}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:var(--r-full)}::-webkit-scrollbar-thumb:hover{background:#fff3}::selection{color:var(--text);background:#4a6fa559}.site-header{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);background:#000000e0;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:var(--sp-6);height:62px;display:flex}.header-brand{align-items:center;gap:var(--sp-2);flex-shrink:0;text-decoration:none;display:flex}.brand-icon{font-size:var(--text-xl);color:var(--btn);line-height:1}.brand-name{font-family:var(--font-serif);font-size:var(--text-md);color:var(--text);letter-spacing:.01em;font-weight:600}.header-nav{align-items:center;gap:var(--sp-1);flex:1;justify-content:center;display:flex}.nav-link{padding:var(--sp-2) var(--sp-3);font-size:var(--text-sm);color:var(--text-muted);border-radius:var(--r-md);transition:color var(--ease), background var(--ease);letter-spacing:.02em;font-weight:500;text-decoration:none;position:relative}.nav-link:hover,.nav-link--active{color:var(--text);background:var(--blue-glow)}.nav-dot{background-color:var(--btn);border-radius:50%;width:4px;height:4px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.header-user{align-items:center;gap:var(--sp-3);flex-shrink:0;display:flex}.user-greeting{font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap}.notif-bell-wrap{position:relative}.notif-bell-btn{border-radius:var(--r-md);cursor:pointer;width:36px;height:36px;transition:background var(--ease), border-color var(--ease);color:var(--text-muted);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-size:18px;line-height:1;display:inline-flex;position:relative}.notif-bell-btn:hover{background:var(--blue-glow);border-color:var(--border);color:var(--text)}.notif-bell-btn.has-unread{color:var(--btn)}.notif-badge{border-radius:var(--r-full);color:#fff;text-align:center;pointer-events:none;background:#c45;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:700;line-height:16px;position:absolute;top:1px;right:1px}.notif-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);z-index:200;flex-direction:column;width:340px;max-height:420px;display:flex;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 8px 32px #0000007a}.notif-panel-head{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.notif-empty{padding:var(--sp-5) var(--sp-4);font-size:var(--text-sm);color:var(--text-muted);text-align:center}.notif-list{flex:1;overflow-y:auto}.notif-item{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);font-size:var(--text-sm);transition:background var(--ease);display:flex}.notif-item:last-child{border-bottom:none}.notif-item.is-unread{background:#4a6fa514}.notif-icon{flex-shrink:0;margin-top:2px;font-size:16px}.notif-body p{color:var(--text);margin:0;line-height:1.4}.notif-time{font-size:var(--text-xs);color:var(--text-faint);margin-top:4px;display:block}@media (width<=680px){.header-inner{height:auto;padding:var(--sp-3) 0;gap:var(--sp-3);flex-wrap:wrap}.header-nav{justify-content:center;gap:var(--sp-1);border-top:1px solid var(--border);width:100%;padding-top:var(--sp-3);flex-wrap:wrap;order:3}.user-greeting{display:none}.notif-panel{width:calc(100vw - var(--sp-8));left:50%;right:auto;transform:translate(-50%)}}.footer{border-top:1px solid var(--border);padding:var(--sp-6) 0;margin-top:auto}.footer-inner{justify-content:space-between;align-items:center;gap:var(--sp-4);flex-wrap:wrap;display:flex}.footer-brand{font-family:var(--font-serif);font-size:var(--text-base);color:var(--text-muted);letter-spacing:.04em}.footer-copy{font-size:var(--text-xs);color:var(--text-faint)}.auth-page{min-height:100vh;display:flex}.auth-panel{border-right:1px solid var(--border);background:linear-gradient(160deg,#0a1628 0%,#050d18 60%,#0d0505 100%);flex-direction:column;flex-shrink:0;width:44%;display:flex;position:relative;overflow:hidden}.auth-panel:before,.auth-panel:after{content:"";filter:blur(70px);pointer-events:none;z-index:0;opacity:.55;border-radius:999px;position:absolute}.auth-panel:before{background:radial-gradient(circle,#3a73b88c 0%,#3a73b800 70%);width:340px;height:340px;animation:9s ease-in-out infinite panelFloatA;top:-90px;left:-80px}.auth-panel:after{opacity:.28;background:radial-gradient(circle,#60161a38 0%,#60161a00 72%);width:420px;height:420px;animation:11s ease-in-out infinite panelFloatB;bottom:-210px;right:-180px}.auth-panel-inner{padding:var(--sp-16) var(--sp-10);z-index:1;flex-direction:column;height:100%;display:flex;position:relative}.auth-panel-brand{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-5);display:flex}.panel-icon{font-size:var(--text-2xl);color:var(--btn)}.panel-wordmark{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--text);font-weight:600}.auth-panel-kicker{color:var(--card-light);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.14em;margin:0 0 var(--sp-8) 0;opacity:.95;font-weight:600}.auth-quote{margin:0 0 var(--sp-6) 0;padding:var(--sp-6);border-radius:var(--r-lg);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:linear-gradient(#091424a3 0%,#060d1873 100%);border:1px solid #83a4ce40;box-shadow:0 16px 45px #00000059,inset 0 1px #ffffff08}.auth-quote p{font-family:var(--font-serif);color:var(--text);margin-bottom:var(--sp-4);opacity:.97;font-size:clamp(1.15rem,1.9vw,1.45rem);font-style:italic;line-height:1.65}.auth-quote cite{gap:var(--sp-1);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;flex-direction:column;font-style:normal;display:flex}.auth-quote cite span{text-transform:none;letter-spacing:.01em;color:var(--text-faint);font-size:var(--text-xs)}.auth-quote-stack{gap:var(--sp-3);margin-bottom:auto;display:grid}.quote-chip{border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);transition:transform var(--ease), border-color var(--ease), background var(--ease);background:linear-gradient(#0b1526a6 0%,#060d1859 100%);border:1px solid #7a90ad3d}.quote-chip:hover{background:linear-gradient(#0d1a2ecc 0%,#08111f8f 100%);border-color:#99b8e073;transform:translate(3px)}.quote-chip p{margin:0 0 var(--sp-2) 0;font-family:var(--font-serif);font-size:var(--text-sm);color:#ecf2ffeb;line-height:1.55}.quote-chip small{color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;font-size:.7rem}.auth-panel-lines{opacity:.18;pointer-events:none;flex-direction:column;gap:20px;height:220px;padding:20px;display:flex;position:absolute;bottom:0;left:0;right:0}.panel-line{background:linear-gradient(90deg, transparent, var(--card-light), transparent);height:1px;animation:3.2s ease-in-out infinite shimmer;animation-delay:calc(var(--i) * .4s)}@keyframes shimmer{0%,to{opacity:.4}50%{opacity:1}}@keyframes panelFloatA{0%,to{transform:translate(0)scale(1)}50%{transform:translate(18px,14px)scale(1.06)}}@keyframes panelFloatB{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-20px,-16px)scale(1.08)}}.auth-form-panel{padding:var(--sp-8);flex:1;justify-content:center;align-items:center;display:flex}.auth-form-inner{width:100%;max-width:400px}.auth-form-header{margin-bottom:var(--sp-8)}.auth-form-header h1{font-size:var(--text-2xl);margin-bottom:var(--sp-2)}.auth-form-header p{color:var(--text-muted);margin:0}.auth-mode-switch{gap:var(--sp-2);padding:var(--sp-1);border:1px solid var(--border);border-radius:var(--r-full);background:var(--bg-raised);margin-bottom:var(--sp-6);display:inline-flex}.auth-mode-btn{border-radius:var(--r-full);padding:var(--sp-2) var(--sp-4);color:var(--text-muted);background:0 0;border:1px solid #0000}.auth-mode-btn:hover{background:#ffffff0a}.auth-mode-btn--active{background:var(--btn);color:var(--text);border-color:var(--btn)}.auth-switch{text-align:center;margin-top:var(--sp-6);color:var(--text-muted);font-size:var(--text-sm);margin-bottom:0}.link-btn{color:var(--card-light);font-size:var(--text-sm);cursor:pointer;text-underline-offset:3px;transition:color var(--ease);background:0 0;border:none;padding:0;font-weight:500;text-decoration:underline}.link-btn:hover{color:var(--text)}.auth-note{margin-top:var(--sp-8);padding-top:var(--sp-5);border-top:1px solid var(--border);text-align:center}.auth-note span{font-size:var(--text-xs);color:var(--text-faint);letter-spacing:.02em}@media (width<=768px){.auth-panel{display:none}.auth-form-panel{padding:var(--sp-8) var(--sp-5);padding-top:var(--sp-16);align-items:flex-start}.auth-mode-switch{width:100%}.auth-mode-btn{flex:1}}.dashboard{padding-bottom:var(--sp-20)}.dash-hero{padding:var(--sp-16) 0 var(--sp-10);border-bottom:1px solid var(--border);background:radial-gradient(at 70%,#4a6fa514 0%,#0000 70%)}.dash-hero .container{justify-content:space-between;align-items:center;gap:var(--sp-8);display:flex}.dash-hero-inner{max-width:560px}.dash-greeting{font-size:var(--text-sm);color:var(--card-light);letter-spacing:.06em;text-transform:uppercase;margin-bottom:var(--sp-4);font-weight:500}.dash-headline{font-family:var(--font-serif);font-size:var(--text-4xl);color:var(--text);margin-bottom:var(--sp-5);letter-spacing:-.02em;font-weight:600;line-height:1.1}.dash-headline em{color:var(--btn-hover);font-style:italic}.dash-sub{font-size:var(--text-md);color:var(--text-muted);margin-bottom:var(--sp-8);max-width:440px;line-height:1.6}.dash-cta{display:inline-flex}.dash-hero-deco{flex-shrink:0}.deco-shelf{border-bottom:3px solid var(--border);align-items:flex-end;gap:8px;height:140px;padding-bottom:12px;display:flex}.deco-book{width:26px;height:var(--h,100px);background-color:var(--c,var(--card));opacity:.7;animation:3s ease-in-out infinite bookBob;animation-delay:calc(var(--i) * .35s);border-radius:3px 3px 0 0;transition:transform .3s;box-shadow:inset -4px 0 #00000040}@keyframes bookBob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.dash-features{padding:var(--sp-12) 0;border-bottom:1px solid var(--border)}.features-row{gap:var(--sp-4);grid-template-columns:repeat(3,1fr);display:grid}.feature-card{padding:var(--sp-8) var(--sp-6);border:1px solid var(--border);border-radius:var(--r-xl);background:var(--bg-surface);cursor:pointer;transition:border-color var(--ease), background var(--ease), transform var(--ease), box-shadow var(--ease)}.feature-card:hover{border-color:var(--card);box-shadow:var(--shadow-lg);background:linear-gradient(135deg,#4a6fa51f,#4a6fa50d);transform:translateY(-4px)}.feature-card:hover .feature-cta{color:var(--text)}.feature-num{font-size:var(--text-xs);color:var(--btn);letter-spacing:.1em;text-transform:uppercase;margin-bottom:var(--sp-4);font-weight:600;display:block}.feature-title{font-family:var(--font-serif);font-size:var(--text-lg);color:var(--text);margin-bottom:var(--sp-3)}.feature-desc{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--sp-5);line-height:1.65}.feature-cta{font-size:var(--text-sm);color:var(--card-light);transition:color var(--ease);font-weight:500}.dash-how{padding:var(--sp-12) 0}.how-inner{max-width:800px}.how-inner h2{font-size:var(--text-2xl);margin-bottom:var(--sp-8);font-family:var(--font-serif)}.how-steps{gap:var(--sp-4);grid-template-columns:repeat(4,1fr);display:grid}.how-step{border-left:2px solid var(--border);padding-left:var(--sp-4)}.how-step-num{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--btn);opacity:.6;margin-bottom:var(--sp-3);font-weight:600;line-height:1}.how-step-text{font-size:var(--text-sm);color:var(--text-muted);margin:0;line-height:1.6}@media (width<=960px){.dash-headline{font-size:var(--text-3xl)}.dash-hero-deco{display:none}.features-row{grid-template-columns:1fr;max-width:500px}.how-steps{grid-template-columns:repeat(2,1fr)}}@media (width<=600px){.dash-hero{padding:var(--sp-10) 0 var(--sp-8)}.dash-headline{font-size:var(--text-2xl)}.dash-sub{font-size:var(--text-base)}.how-steps{grid-template-columns:1fr}}.book-card{gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--bg-surface);transition:border-color var(--ease), transform var(--ease), box-shadow var(--ease);display:flex}.book-card:hover{border-color:var(--card);box-shadow:var(--shadow-md);transform:translateY(-3px)}.book-cover{border-radius:var(--r-sm);background:var(--bg-raised);flex-shrink:0;width:58px;height:86px;overflow:hidden;box-shadow:2px 2px 6px #0006}.book-cover img{object-fit:cover;width:100%;height:100%}.book-link{color:inherit;text-decoration:none}.book-cover-link{display:inline-flex}.book-cover-placeholder{background:linear-gradient(135deg, var(--bg-raised), #1a2a3a);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.book-cover-initials{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--card);opacity:.7;font-weight:600}.book-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.book-title{font-family:var(--font-serif);font-weight:600;font-size:var(--text-sm);color:var(--text);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.book-author{color:var(--text-muted);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.book-year{color:var(--text-faint);font-size:var(--text-xs)}.book-actions{padding-top:var(--sp-2);gap:var(--sp-2);flex-wrap:wrap;margin-top:auto;display:flex}.book-remove-btn{color:var(--btn-hover)!important;border-color:var(--btn-hover)!important}.book-remove-btn:hover{background:var(--btn)!important;color:var(--text)!important}.reco-page{padding-bottom:var(--sp-16)}.reco-page .page-header{padding:var(--sp-10) 0 var(--sp-8);border-bottom:1px solid var(--border);margin-bottom:var(--sp-8)}.reco-page .page-header h1{font-size:var(--text-3xl);font-family:var(--font-serif);margin-bottom:var(--sp-2)}.reco-page .page-header p{color:var(--text-muted)}.step-indicator{margin-bottom:var(--sp-10);align-items:center;gap:0;max-width:460px;display:flex}.step-item{align-items:center;gap:var(--sp-2);flex-direction:column;flex:1;display:flex}.step-dot{border:2px solid var(--border);background:var(--bg-surface);width:32px;height:32px;font-size:var(--text-xs);color:var(--text-faint);transition:all var(--ease);border-radius:50%;justify-content:center;align-items:center;font-weight:600;display:flex}.step-item.active .step-dot{border-color:var(--btn);background:var(--btn);color:var(--text)}.step-item.done .step-dot{border-color:var(--card);background:var(--card);color:var(--text)}.step-label{font-size:var(--text-xs);color:var(--text-faint);white-space:nowrap}.step-item.active .step-label{color:var(--text-muted)}.step-line{background:var(--border);flex:1;height:2px;margin-bottom:22px}.step-line.done{background:var(--card)}.search-section{margin-bottom:var(--sp-8)}.search-section h2{font-family:var(--font-serif);font-size:var(--text-xl);margin-bottom:var(--sp-4)}.search-bar{gap:var(--sp-3);margin-bottom:var(--sp-4);display:flex}.search-bar input{flex:1;max-width:520px}.selected-chips{gap:var(--sp-2);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.chip{border:1px solid var(--card);border-radius:var(--r-full);font-size:var(--text-xs);color:var(--text);background:#4a6fa526;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.chip-remove{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:14px;line-height:1;display:flex}.chip-remove:hover{color:var(--btn-hover);background:0 0}.counter-bar{margin-bottom:var(--sp-6);justify-content:space-between;align-items:center;display:flex}.counter-text{font-size:var(--text-sm);color:var(--text-muted)}.counter-text strong{color:var(--text)}.search-results{margin-bottom:var(--sp-8)}.search-results h3{font-size:var(--text-base);color:var(--text-muted);margin-bottom:var(--sp-4);font-weight:400}.results-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.reco-results{margin-top:var(--sp-8)}.reco-results h2{font-family:var(--font-serif);font-size:var(--text-2xl);margin-bottom:var(--sp-2)}.reco-results .reco-subtitle{color:var(--text-muted);margin-bottom:var(--sp-6)}.reco-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.summary-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1100;padding:var(--sp-4);background:#000000b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.summary-modal{background:var(--bg-raised);border:1px solid var(--border-hover);border-radius:var(--r-2xl);width:100%;max-width:680px;padding:var(--sp-6);box-shadow:var(--shadow-lg)}.summary-modal-header{justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4);align-items:flex-start;display:flex}.summary-modal-header h3{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--text);margin-bottom:2px}.summary-modal-header p{color:var(--text-muted);font-size:var(--text-sm)}.summary-text{font-size:var(--text-base);color:var(--text);line-height:1.75}.summary-loading{align-items:center;gap:var(--sp-2);color:var(--text-muted);font-size:var(--text-sm);display:inline-flex}@media (width<=600px){.step-indicator{max-width:100%}.search-bar{flex-direction:column}.results-grid,.reco-grid{grid-template-columns:1fr}}.reading-list-page{padding-bottom:var(--sp-16)}.reading-list-page .page-header{padding:var(--sp-10) 0 var(--sp-8);border-bottom:1px solid var(--border);margin-bottom:var(--sp-8)}.reading-list-page .page-header h1{font-size:var(--text-3xl);font-family:var(--font-serif);margin-bottom:var(--sp-2)}.reading-list-page .page-header p{color:var(--text-muted)}.stats-row{gap:var(--sp-4);margin-bottom:var(--sp-8);flex-wrap:wrap;display:flex}.stat-card{min-width:110px;padding:var(--sp-5) var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-xl);text-align:center;flex:1}.stat-number{font-family:var(--font-serif);font-size:var(--text-3xl);color:var(--btn-hover);margin-bottom:var(--sp-1);font-weight:700;line-height:1}.stat-label{font-size:var(--text-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}.filter-bar{gap:var(--sp-2);margin-bottom:var(--sp-6);flex-wrap:wrap;display:flex}.filter-btn{padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-full);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:all var(--ease);background:0 0}.filter-btn:hover{border-color:var(--card);color:var(--text);background:#4a6fa51a}.filter-btn.active{background:var(--card);border-color:var(--card);color:var(--text)}.list-items{gap:var(--sp-2);flex-direction:column;display:flex}.list-item{align-items:center;gap:var(--sp-4);padding:var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);transition:border-color var(--ease);display:flex}.list-item:hover{border-color:var(--border-hover)}.list-item-cover{border-radius:var(--r-sm);background:var(--bg-raised);flex-shrink:0;width:44px;height:64px;overflow:hidden}.list-item-cover img{object-fit:cover;width:100%;height:100%}.list-item-cover .no-cover{width:100%;height:100%;font-family:var(--font-serif);font-size:var(--text-lg);color:var(--card);opacity:.6;background:linear-gradient(135deg, var(--bg-raised), #1a2a3a);justify-content:center;align-items:center;display:flex}.list-item-info{flex:1;min-width:0}.list-item-main-link{align-items:center;gap:var(--sp-4);min-width:0;color:inherit;flex:1;text-decoration:none;display:flex}.list-item-title{font-family:var(--font-serif);color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;font-weight:600;overflow:hidden}.list-item-author{font-size:var(--text-xs);color:var(--text-muted)}.list-item-actions{align-items:center;gap:var(--sp-3);flex-shrink:0;display:flex}.status-select{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-full);font-size:var(--text-xs);cursor:pointer;white-space:nowrap;transition:border-color var(--ease), color var(--ease);padding:5px 10px;font-weight:500}.status-select:focus{outline:none}.status-select--want{color:var(--text-muted);border-color:var(--border)}.status-select--reading{color:var(--card-light);border-color:var(--card)}.status-select--read{color:#4caf50;border-color:#4caf50}.status-select--want:focus{border-color:var(--border-hover)}.status-select--reading:focus{border-color:var(--card)}.status-select--read:focus{border-color:#4caf50}.remove-btn{color:var(--text-faint);cursor:pointer;font-size:var(--text-lg);transition:color var(--ease);background:0 0;border:none;padding:0 4px;line-height:1}.remove-btn:hover{color:var(--btn-hover);background:0 0}.empty-state{text-align:center;padding:var(--sp-16) 0;color:var(--text-muted)}.empty-state .empty-icon{font-family:var(--font-serif);color:var(--card);opacity:.3;margin-bottom:var(--sp-4);font-size:4rem}.empty-state h3{font-family:var(--font-serif);margin-bottom:var(--sp-2)}@media (width<=600px){.stats-row{gap:var(--sp-2)}.list-item{flex-wrap:wrap}.list-item-actions{justify-content:flex-end;width:100%}}.public-lists-page{padding-bottom:var(--sp-16)}.public-lists-page .page-header{padding:var(--sp-10) 0 var(--sp-8);border-bottom:1px solid var(--border);margin-bottom:var(--sp-8);justify-content:space-between;align-items:flex-end;gap:var(--sp-4);flex-wrap:wrap;display:flex}.public-lists-page .page-header-text h1{font-size:var(--text-3xl);font-family:var(--font-serif);margin-bottom:var(--sp-2)}.public-lists-page .page-header-text p{color:var(--text-muted)}.lists-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.lists-section{margin-bottom:var(--sp-10)}.section-head{margin-bottom:var(--sp-4)}.section-head h2{font-size:var(--text-2xl);font-family:var(--font-serif);margin:0 0 4px}.section-head p{color:var(--text-muted);font-size:var(--text-sm);margin:0}.list-card{padding:var(--sp-5);border:1px solid var(--border);border-radius:var(--r-xl);background:var(--bg-surface);transition:border-color var(--ease), transform var(--ease), box-shadow var(--ease);cursor:pointer}.list-card:hover{border-color:var(--card);box-shadow:var(--shadow-md);transform:translateY(-3px)}.list-card--highlight{border-color:var(--card-light);box-shadow:0 0 0 2px #789cce66}.list-card-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.list-card-title{font-family:var(--font-serif);font-size:var(--text-lg);color:var(--text);line-height:1.3}.list-card-count{border:1px solid var(--card);border-radius:var(--r-full);font-size:var(--text-xs);color:var(--card-light);white-space:nowrap;background:#4a6fa526;flex-shrink:0;padding:3px 10px}.list-card-desc{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--sp-4);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.6;display:-webkit-box;overflow:hidden}.list-card-books{margin-bottom:var(--sp-4);flex-direction:column;gap:4px;max-height:190px;padding-right:4px;display:flex;overflow:auto}.list-card-book{font-size:var(--text-xs);color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.list-card-book strong{color:var(--text-muted);font-weight:500}.book-inline-link{color:inherit;text-decoration:none}.book-inline-link:hover strong{color:var(--text);text-decoration:underline}.list-card-book--selectable{cursor:pointer;white-space:normal;grid-template-columns:16px 1fr;align-items:start;gap:8px;display:grid}.list-card-book--selectable input{accent-color:var(--card);width:14px;height:14px;margin-top:2px}.list-card-book--selectable.is-added{opacity:.55}.list-card-book--selectable span{line-height:1.45;display:block}.list-card-meta{align-items:stretch;gap:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);flex-direction:column;display:flex}.list-card-owner{font-size:var(--text-xs);color:var(--text-faint)}.list-card-actions{gap:var(--sp-2);width:100%;display:grid}.list-card-actions .btn{text-align:center;width:100%;min-width:0}.list-card-actions--triple{grid-template-columns:repeat(3,minmax(0,1fr))}.list-card-actions--double{grid-template-columns:repeat(2,minmax(0,1fr))}.list-card-actions .btn:disabled{opacity:.65}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;padding:var(--sp-4);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-raised);border:1px solid var(--border-hover);border-radius:var(--r-2xl);padding:var(--sp-8);width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal h2{font-family:var(--font-serif);font-size:var(--text-2xl);margin-bottom:var(--sp-6)}.modal .form-group{margin-bottom:var(--sp-6)}.modal textarea{min-height:110px}.modal-inline-note{color:var(--text-muted);font-size:var(--text-sm)}.modal-book-picker{gap:var(--sp-2);max-height:240px;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-md);background:#ffffff05;flex-direction:column;display:flex;overflow-y:auto}.modal-book-option{align-items:start;gap:var(--sp-3);border-radius:var(--r-sm);cursor:pointer;grid-template-columns:18px 1fr;margin:0;padding:8px;display:grid}.modal-book-option:hover{background:#4a6fa514}.modal-book-checkbox{width:14px;height:14px;accent-color:var(--card);margin-top:2px}.modal-book-meta{flex-direction:column;gap:2px;min-width:0;display:flex}.modal-book-meta .book-inline-link{max-width:100%;display:inline-block}.modal-book-meta .book-inline-link strong{color:var(--text);font-weight:600;line-height:1.35}.modal-book-author{color:var(--text-muted);font-size:var(--text-xs);line-height:1.35}.modal-visibility-row{align-items:center;gap:var(--sp-2);cursor:pointer;margin:0;display:flex}.modal-actions{gap:var(--sp-3);margin-top:var(--sp-6);justify-content:flex-end;display:flex}@media (width<=600px){.lists-grid{grid-template-columns:1fr}.public-lists-page .page-header{flex-direction:column;align-items:flex-start}.list-card-actions--triple,.list-card-actions--double{grid-template-columns:1fr}}.accounts-admin-page{padding:var(--sp-10) 0 var(--sp-14)}.admin-header{margin-bottom:var(--sp-8)}.admin-header h1{margin:0 0 var(--sp-2) 0}.admin-header p{color:var(--text-muted);margin:0}.admin-key-card{border:1px solid var(--border);background:var(--bg-raised);border-radius:var(--r-lg);padding:var(--sp-5);margin-bottom:var(--sp-6)}.admin-key-card label{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--sp-2);display:block}.admin-key-row{gap:var(--sp-3);display:flex}.admin-key-row input{flex:1}.admin-key-help{margin:var(--sp-3) 0 0;color:var(--text-faint);font-size:var(--text-xs)}.admin-table-wrap{border:1px solid var(--border);background:var(--bg-raised);border-radius:var(--r-lg);overflow:hidden}.admin-table{border-collapse:collapse;width:100%}.admin-table thead{background:#ffffff05}.admin-table th,.admin-table td{text-align:left;padding:var(--sp-4);border-bottom:1px solid var(--border)}.admin-table td:last-child,.admin-table th:last-child{width:190px}.admin-table tbody tr:hover{background:#ffffff05}.empty-row{color:var(--text-muted)}.confirm-actions{gap:var(--sp-2);display:flex}@media (width<=900px){.admin-key-row{flex-direction:column}.admin-table-wrap{overflow-x:auto}.admin-table{min-width:680px}}.book-explorer-page{padding-bottom:var(--sp-16)}.book-explorer-page .page-header{padding:var(--sp-10) 0 var(--sp-8);border-bottom:1px solid var(--border);margin-bottom:var(--sp-8)}.explorer-layout{gap:var(--sp-6);grid-template-columns:340px minmax(0,1fr);align-items:start;display:grid}.explorer-search,.explorer-detail{min-height:620px}.explorer-hint{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-faint)}.explorer-results{margin-top:var(--sp-5);gap:var(--sp-2);flex-direction:column;max-height:540px;display:flex;overflow:auto}.search-result{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-lg);width:100%;padding:var(--sp-4);flex-direction:column;align-items:flex-start;display:flex}.search-result.is-active,.search-result:hover{border-color:var(--card);background:#4a6fa514}.search-result-title{color:var(--text);font-weight:600}.search-result-meta{color:var(--text-muted);font-size:var(--text-xs)}.explorer-placeholder,.explorer-empty{min-height:120px;color:var(--text-muted);text-align:center;justify-content:center;align-items:center;display:flex}.detail-hero{gap:var(--sp-5);margin-bottom:var(--sp-6);grid-template-columns:180px minmax(0,1fr);display:grid}.detail-cover,.detail-cover img,.detail-cover-placeholder{border-radius:var(--r-lg);width:180px;height:250px}.detail-cover img{object-fit:cover;border:1px solid var(--border)}.detail-cover-placeholder{border:1px solid var(--border);font-family:var(--font-serif);background:linear-gradient(160deg,#1a2740,#0d1018);justify-content:center;align-items:center;font-size:3rem;display:flex}.detail-author{margin-top:var(--sp-2)}.detail-meta-row{gap:var(--sp-2);margin:var(--sp-3) 0;flex-wrap:wrap;display:flex}.detail-description{color:var(--text-muted)}.detail-genres{gap:var(--sp-2);margin-top:var(--sp-4);flex-wrap:wrap;display:flex}.detail-actions{align-items:end;gap:var(--sp-4);margin-bottom:var(--sp-6);display:flex}.status-picker{min-width:220px}.reviews-head{justify-content:space-between;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-4);display:flex}.review-form{gap:var(--sp-3);margin-bottom:var(--sp-5);flex-direction:column;display:flex}.review-list,.review-editor{gap:var(--sp-3);flex-direction:column;display:flex}.review-editor-actions,.review-owner-actions{gap:var(--sp-2);margin-top:var(--sp-3);display:flex}.review-like-btn{align-items:center;gap:var(--sp-1);margin-top:var(--sp-3);padding:4px var(--sp-2);border:1px solid var(--border);border-radius:var(--r-full);color:var(--text-faint);font-size:var(--text-sm);cursor:pointer;transition:color var(--ease), border-color var(--ease), background var(--ease);background:0 0;display:inline-flex}.review-like-btn:hover{border-color:var(--btn);color:var(--text)}.review-like-btn.is-liked{color:#c45;background:#cc445514;border-color:#c45}.review-meta{justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-2);color:var(--text-faint);font-size:var(--text-xs);display:flex}@media (width<=920px){.explorer-layout{grid-template-columns:1fr}.explorer-search,.explorer-detail{min-height:0}}@media (width<=700px){.detail-hero{grid-template-columns:1fr}.detail-actions{flex-direction:column;align-items:stretch}}.social-page{padding-bottom:var(--sp-16)}.social-page .page-header{padding:var(--sp-10) 0 var(--sp-8);border-bottom:1px solid var(--border);margin-bottom:var(--sp-8)}.social-loading,.social-empty{min-height:140px;color:var(--text-muted);text-align:center;justify-content:center;align-items:center;display:flex}.social-layout{gap:var(--sp-6);grid-template-columns:320px minmax(0,1fr);align-items:start;display:grid}.social-section-head{margin-bottom:var(--sp-4)}.social-section-head p{font-size:var(--text-sm);margin-top:4px}.social-user-list,.social-feed-list{gap:var(--sp-3);flex-direction:column;display:flex}.social-users input{margin-bottom:var(--sp-4)}.social-user-card{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.social-user-card p{font-size:var(--text-xs)}.social-user-link{color:var(--text);font-weight:700}.social-user-stats{gap:var(--sp-2);margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-faint);flex-wrap:wrap;display:flex}.feed-head{justify-content:space-between;gap:var(--sp-3);font-size:var(--text-xs);color:var(--text-faint);margin-bottom:var(--sp-2);display:flex}.feed-summary{color:var(--text);margin-bottom:var(--sp-3)}.feed-inline-link{color:var(--text);text-underline-offset:2px;font-weight:600;text-decoration:underline}.feed-inline-link:hover{color:var(--card-light)}.feed-book-row{align-items:center;gap:var(--sp-2);color:var(--text-muted);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.feed-book-link{text-decoration:none}.feed-review{color:var(--text-muted);font-style:italic}@media (width<=900px){.social-layout{grid-template-columns:1fr}}.user-profile-page{padding-bottom:var(--sp-16)}.user-profile-loading{min-height:180px;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.profile-hero{margin-top:var(--sp-10);justify-content:space-between;align-items:flex-start;gap:var(--sp-5);display:flex}.profile-back{margin-bottom:var(--sp-3);font-size:var(--text-sm);display:inline-block}.profile-stats{gap:var(--sp-2);margin-top:var(--sp-4);flex-wrap:wrap;display:flex}.profile-stat-badge{padding:4px var(--sp-3);border-radius:var(--r-full);font-size:var(--text-xs);color:var(--btn);cursor:pointer;transition:background var(--ease), border-color var(--ease);background:#4a6fa51f;border:1px solid #0000;align-items:center;font-weight:600;display:inline-flex}.profile-stat-badge:hover,.profile-stat-badge.is-active{border-color:var(--btn);background:#4a6fa53d}.profile-user-list-section{margin-top:var(--sp-6)}.profile-tab-head{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.profile-user-list{gap:var(--sp-3);margin-top:var(--sp-4);flex-direction:column;display:flex}.profile-user-card{justify-content:space-between;align-items:center;gap:var(--sp-4);display:flex}.profile-layout{margin-top:var(--sp-6);gap:var(--sp-6);grid-template-columns:1fr 1fr;display:grid}.profile-section-head{margin-bottom:var(--sp-4)}.profile-section-head p{font-size:var(--text-sm);margin-top:4px}.profile-list-grid,.profile-activity-list{gap:var(--sp-3);flex-direction:column;display:flex}.profile-list-card span,.profile-activity-head{font-size:var(--text-xs);color:var(--text-faint)}.profile-list-link{color:var(--text);text-decoration:none}.profile-list-link:hover strong{text-decoration:underline}@media (width<=900px){.profile-hero,.profile-layout{flex-direction:column;grid-template-columns:1fr}}.app-wrapper{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.app-content{flex:1;width:100%}
