:root{--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--t-fast:.12s cubic-bezier(.2, 0, 0, 1);--t-base:.22s cubic-bezier(.2, 0, 0, 1);--t-slow:.38s cubic-bezier(.2, 0, 0, 1);--accent-1:#d97706;--accent-1-hover:#b45309;--accent-2:#1a4731;--accent-2-hover:#143527;--color-success:#15803d;--color-danger:#b91c1c;--color-warning:#b45309;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 2px 6px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 8px 16px #00000014, 0 2px 4px #0000000a;--shadow-lg:0 18px 36px #0000001f, 0 4px 8px #0000000f}[data-theme=light]{--bg-page:#faf6ee;--bg-elevated:#fff;--bg-sunken:#f3ede0;--bg-overlay:#0000005c;--bg-input:#fff;--bg-chip:#efe8d8;--bg-hover:#1a47310f;--border:#e3d9c2;--border-strong:#cfc09c;--border-input:#d6cab0;--border-focus:var(--accent-2);--text-primary:#1f2a24;--text-secondary:#4f5a51;--text-muted:#7d877e;--text-on-accent:#fff;--text-link:var(--accent-2);--shadow-card:var(--shadow-sm);--shadow-card-hover:var(--shadow-md);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg-page:#14110d;--bg-elevated:#1d1a14;--bg-sunken:#0f0d0a;--bg-overlay:#0009;--bg-input:#211e17;--bg-chip:#2a261d;--bg-hover:#d977061a;--border:#2e2a23;--border-strong:#4a4538;--border-input:#3a352c;--border-focus:var(--accent-1);--text-primary:#f5efe1;--text-secondary:#c8bfaa;--text-muted:#8a8270;--text-on-accent:#1a1410;--text-link:var(--accent-1);--shadow-card:0 1px 2px #0006;--shadow-card-hover:0 12px 24px #00000080, 0 2px 6px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--accent-1:#f59e0b;--accent-1-hover:#fbbf24;--accent-2:#2d6a4f;--accent-2-hover:#40916c;--color-success:#4ade80;--color-danger:#f87171;--color-warning:#fbbf24}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-sans);background:var(--bg-page);color:var(--text-primary);transition:background var(--t-base), color var(--t-base);font-size:.95rem;line-height:1.55}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:4px}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-primary);line-height:1.2}h1{font-size:1.85rem;font-weight:700}h2{font-size:1.5rem;font-weight:600}h3{font-size:1.05rem;font-weight:600}small,.hint{color:var(--text-muted);font-size:.78rem}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-main{width:100%;max-width:1320px;padding:var(--space-8) var(--space-5) var(--space-16);flex:1;margin:0 auto}@media (width<=640px){.app-main{padding:var(--space-5) var(--space-4) var(--space-16)}}.app-header{background:color-mix(in srgb, var(--bg-elevated) 92%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:50;position:sticky;top:0}.header-inner{max-width:1320px;padding:var(--space-4) var(--space-5);align-items:center;gap:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.header-brand{align-items:center;gap:var(--space-3);display:flex}.header-logo{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--accent-2), var(--accent-1));color:#fff;width:38px;height:38px;box-shadow:var(--shadow-sm);flex-shrink:0;place-items:center;font-size:1.1rem;display:grid}.header-titles{flex-direction:column;display:flex}.header-eyebrow{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:600}.header-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.25rem;font-weight:700}.header-spacer{flex:1}.header-actions{align-items:center;gap:var(--space-2);display:flex}.theme-toggle{border-radius:var(--radius-full);background:var(--bg-chip);border:1px solid var(--border);width:38px;height:38px;transition:background var(--t-fast), border-color var(--t-fast), transform var(--t-fast);place-items:center;display:grid}.theme-toggle:hover{background:var(--bg-hover);border-color:var(--border-strong)}.theme-toggle:active{transform:scale(.95)}.theme-toggle svg{width:18px;height:18px;color:var(--text-secondary)}.quick-add{position:relative}.quick-add-menu{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:200px;padding:var(--space-1);z-index:60;animation:pop-in .16s var(--t-fast);position:absolute;top:calc(100% + 6px);right:0}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.quick-add-menu a{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.88rem;font-weight:500;display:flex}.quick-add-menu a:hover{background:var(--bg-hover);text-decoration:none}.tab-nav{scrollbar-width:none;padding:0 var(--space-5);border-top:1px solid var(--border);align-items:center;gap:2px;display:flex;position:relative;overflow-x:auto}.tab-nav::-webkit-scrollbar{display:none}.tab-btn{padding:var(--space-3) var(--space-4);color:var(--text-secondary);white-space:nowrap;transition:color var(--t-fast);background:0 0;border:none;font-size:.85rem;font-weight:500;position:relative}.tab-btn:hover{color:var(--text-primary)}.tab-btn.is-active{color:var(--accent-2);font-weight:600}[data-theme=dark] .tab-btn.is-active{color:var(--accent-1)}.tab-btn.is-active:after{content:"";left:var(--space-3);right:var(--space-3);height:2px;animation:slide-in-tab .2s var(--t-fast);background:currentColor;border-radius:2px 2px 0 0;position:absolute;bottom:0}@keyframes slide-in-tab{0%{opacity:0;transform:scaleX(.4)}to{opacity:1;transform:scaleX(1)}}.bottom-nav{background:color-mix(in srgb, var(--bg-elevated) 95%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--border);padding:var(--space-2) var(--space-2) calc(var(--space-2) + env(safe-area-inset-bottom,0px));z-index:50;display:none;position:fixed;bottom:0;left:0;right:0}.bottom-nav-list{justify-content:space-around;align-items:center;display:flex}.bottom-nav-link{padding:var(--space-2) var(--space-1);border-radius:var(--radius-md);color:var(--text-muted);transition:color var(--t-fast), background var(--t-fast);flex-direction:column;flex:1;align-items:center;gap:2px;font-size:.65rem;font-weight:500;display:flex}.bottom-nav-link:hover{text-decoration:none}.bottom-nav-link.is-active{color:var(--accent-1)}.bottom-nav-link svg{width:22px;height:22px}@media (width<=768px){.bottom-nav{display:block}.tab-nav{display:none}.app-main{padding-bottom:96px}}.btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);white-space:nowrap;transition:background var(--t-fast), border-color var(--t-fast), transform var(--t-fast), opacity var(--t-fast);border:1px solid #0000;font-size:.88rem;font-weight:500;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5}.btn:not(:disabled):active{transform:scale(.97)}.primary-action{background:var(--accent-2);color:#fff;border-color:var(--accent-2);box-shadow:var(--shadow-xs)}.primary-action:hover:not(:disabled){background:var(--accent-2-hover);border-color:var(--accent-2-hover)}[data-theme=dark] .primary-action{background:var(--accent-1);color:var(--text-on-accent);border-color:var(--accent-1)}[data-theme=dark] .primary-action:hover:not(:disabled){background:var(--accent-1-hover);border-color:var(--accent-1-hover)}.secondary-action{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border-strong)}.secondary-action:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent-2)}[data-theme=dark] .secondary-action:hover:not(:disabled){border-color:var(--accent-1)}.ghost-action{color:var(--text-secondary);background:0 0;border-color:#0000}.ghost-action:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.danger-action{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.danger-action:hover:not(:disabled){filter:brightness(1.1)}.btn-lg{padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);font-size:.95rem}.btn-icon{padding:var(--space-2);justify-content:center;width:36px;height:36px}input,select,textarea{background:var(--bg-input);width:100%;color:var(--text-primary);border:1px solid var(--border-input);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);transition:border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);font-family:inherit;font-size:.9rem}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus,select:focus,textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--border-focus) 18%, transparent);outline:none}input[type=color]{cursor:pointer;width:44px;height:36px;padding:2px}textarea{resize:vertical;min-height:60px}label{gap:var(--space-1);color:var(--text-secondary);flex-direction:column;font-size:.82rem;font-weight:500;display:flex}fieldset{border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);gap:var(--space-4);background:var(--bg-elevated);margin-bottom:var(--space-4);flex-direction:column;display:flex}legend{padding:0 var(--space-2);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem;font-weight:600}.field-row{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}@media (width<=540px){.field-row{grid-template-columns:1fr}}.form-actions{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.view{animation:fade-up var(--t-slow) ease-out}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.view-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.view-header h2{font-size:1.85rem;font-weight:700}.view-header .lead{color:var(--text-secondary);max-width:540px;margin-top:2px}.view-library-layout{gap:var(--space-6);grid-template-columns:1fr 280px;align-items:start;display:grid}@media (width<=1100px){.view-library-layout{grid-template-columns:1fr}}.now-reading{margin-bottom:var(--space-6);background:linear-gradient(135deg, color-mix(in srgb, var(--accent-2) 18%, var(--bg-elevated)), var(--bg-elevated));border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5)}[data-theme=dark] .now-reading{background:linear-gradient(135deg, color-mix(in srgb, var(--accent-1) 12%, var(--bg-elevated)), var(--bg-elevated))}.now-reading-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.now-reading-header h3{font-size:1rem}.now-reading-list{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.now-reading-card{gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);background:var(--bg-elevated);border:1px solid var(--border);cursor:pointer;transition:transform var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast);grid-template-columns:56px 1fr;display:grid}.now-reading-card:hover{box-shadow:var(--shadow-card-hover);border-color:var(--accent-2);transform:translateY(-2px)}.now-reading-card .cover{background:var(--bg-sunken);border-radius:4px;width:56px;height:80px;overflow:hidden}.now-reading-card .cover img{object-fit:cover;width:100%;height:100%}.now-reading-card .info{flex-direction:column;min-width:0;display:flex}.now-reading-card .info h4{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;color:var(--text-primary);font-size:.95rem;font-weight:600;overflow:hidden}.now-reading-card .info p{color:var(--text-muted);font-size:.75rem}.now-reading-card .mini-progress{background:var(--bg-chip);border-radius:2px;height:4px;margin-top:auto;overflow:hidden}.now-reading-card .mini-progress span{background:var(--accent-1);border-radius:2px;height:100%;display:block}.filter-bar{gap:var(--space-3);margin-bottom:var(--space-5);flex-direction:column;display:flex}.filter-row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.search-wrap{flex:280px;min-width:240px;position:relative}.search-wrap svg{left:var(--space-3);width:16px;height:16px;color:var(--text-muted);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.search-wrap input{padding-left:calc(var(--space-3) + 22px)}.view-toggle{background:var(--bg-chip);border:1px solid var(--border);border-radius:var(--radius-md);padding:2px;display:inline-flex}.view-toggle button{border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--t-fast);background:0 0;border:none;place-items:center;padding:6px 10px;display:grid}.view-toggle button.is-active{background:var(--bg-elevated);color:var(--text-primary);box-shadow:var(--shadow-xs)}.view-toggle svg{width:16px;height:16px}.chip-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip{background:var(--bg-chip);color:var(--text-secondary);border-radius:var(--radius-full);transition:all var(--t-fast);cursor:pointer;border:1px solid #0000;padding:5px 12px;font-size:.78rem;font-weight:500}.chip:hover{background:var(--bg-hover)}.chip.is-active{background:var(--accent-2);color:#fff}[data-theme=dark] .chip.is-active{background:var(--accent-1);color:var(--text-on-accent)}.chip-count{opacity:.7;margin-left:4px;font-weight:400}.library-list{gap:var(--space-3);grid-template-columns:1fr;display:grid}@media (width>=900px){.library-list{grid-template-columns:1fr 1fr}}@media (width>=1280px){.library-list{grid-template-columns:1fr 1fr 1fr}}.library-list.is-list{grid-template-columns:1fr!important}.library-item{gap:var(--space-4);padding:var(--space-4);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);transition:transform var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast);cursor:pointer;animation:card-in .32s var(--t-fast) backwards;grid-template-columns:88px 1fr;display:grid;position:relative;overflow:hidden}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.library-item:first-child{animation-delay:0s}.library-item:nth-child(2){animation-delay:30ms}.library-item:nth-child(3){animation-delay:60ms}.library-item:nth-child(4){animation-delay:90ms}.library-item:nth-child(5){animation-delay:.12s}.library-item:nth-child(6){animation-delay:.15s}.library-item:hover{box-shadow:var(--shadow-card-hover);border-color:var(--border-strong);transform:translateY(-2px)}.library-item.is-manual:before{content:"";background:linear-gradient(to bottom, var(--accent-1), var(--accent-2));width:3px;position:absolute;top:0;bottom:0;left:0}.library-cover{border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--bg-sunken), var(--bg-chip));width:88px;height:124px;color:var(--text-muted);box-shadow:var(--shadow-sm);place-items:center;font-size:.7rem;display:grid;position:relative;overflow:hidden}.library-cover img{object-fit:cover;width:100%;height:100%}.library-body{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.library-row{align-items:flex-start;gap:var(--space-2);flex-wrap:wrap;display:flex}.library-row h3{font-family:var(--font-display);flex:auto;min-width:0;font-size:1.05rem;font-weight:600}.library-isbn{color:var(--text-muted);font-family:ui-monospace,monospace;font-size:.72rem}.library-meta{color:var(--text-secondary);font-size:.82rem}.library-cats{flex-wrap:wrap;gap:4px;margin-top:2px;display:flex}.library-facts{margin-top:var(--space-1);flex-wrap:wrap;gap:6px;display:flex}.library-facts span{border-radius:var(--radius-full);background:var(--bg-chip);color:var(--text-secondary);padding:2px 8px;font-size:.72rem}.library-notes{color:var(--text-muted);margin-top:var(--space-1);font-size:.78rem;font-style:italic}.library-actions{gap:var(--space-2);margin-top:var(--space-3);display:flex}.source-tag{border-radius:var(--radius-full);background:var(--bg-chip);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;align-self:flex-start;padding:2px 8px;font-size:.65rem;font-weight:600}.status-badge{border-radius:var(--radius-full);align-self:flex-start;padding:2px 9px;font-size:.7rem;font-weight:600}.card-progress{margin-top:var(--space-2)}.card-progress-bar{background:var(--bg-chip);border-radius:2px;height:4px;overflow:hidden}.card-progress-bar span{background:var(--accent-1);height:100%;transition:width var(--t-base);border-radius:2px;display:block}.card-progress p{color:var(--text-muted);margin-top:3px;font-size:.7rem}.library-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(160px,1fr));display:grid}.grid-card{gap:var(--space-2);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3);cursor:pointer;transition:transform var(--t-fast), box-shadow var(--t-fast);animation:card-in .32s var(--t-fast) backwards;flex-direction:column;display:flex}.grid-card:nth-child(odd){animation-delay:30ms}.grid-card:nth-child(2n){animation-delay:60ms}.grid-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-3px)}.grid-card .cover-wrap{aspect-ratio:2/3;border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--bg-sunken), var(--bg-chip));color:var(--text-muted);box-shadow:var(--shadow-sm);place-items:center;display:grid;position:relative;overflow:hidden}.grid-card .cover-wrap img{object-fit:cover;width:100%;height:100%}.grid-card h4{font-family:var(--font-display);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.92rem;font-weight:600;display:-webkit-box;overflow:hidden}.grid-card p{color:var(--text-muted);font-size:.75rem}.category-picker{flex-wrap:wrap;gap:6px;display:flex}.category-chip{border-radius:var(--radius-full);cursor:pointer;background:color-mix(in srgb, var(--cat-color,#1a4731) 12%, transparent);color:var(--cat-color,#1a4731);border:1px solid color-mix(in srgb, var(--cat-color,#1a4731) 35%, transparent);transition:all var(--t-fast);padding:4px 12px;font-size:.75rem;font-weight:500}[data-theme=dark] .category-chip{background:color-mix(in srgb, var(--cat-color,#1a4731) 18%, transparent);color:color-mix(in srgb, var(--cat-color,#1a4731) 60%, white)}.category-chip:hover{transform:translateY(-1px)}.category-chip.is-on{background:var(--cat-color,#1a4731);color:#fff;border-color:var(--cat-color,#1a4731)}.category-chip.is-static{cursor:default}.stars{color:var(--accent-1);gap:2px;font-size:.95rem;display:inline-flex}.stars-input{gap:4px;display:inline-flex}.stars-input button{color:var(--bg-chip);transition:color var(--t-fast), transform var(--t-fast);background:0 0;border:none;padding:2px;font-size:1.4rem;line-height:1}.stars-input button.on{color:var(--accent-1)}.stars-input button:hover{transform:scale(1.15)}.subjects{margin-top:var(--space-1);flex-wrap:wrap;gap:4px;display:flex}.subjects span{border-radius:var(--radius-sm);background:var(--bg-chip);color:var(--text-secondary);border:1px solid var(--border);padding:2px 8px;font-size:.7rem}.library-summary{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);gap:var(--space-4);flex-direction:column;display:flex;position:sticky;top:116px}.library-summary h3{font-size:1rem;font-family:var(--font-display)}.library-summary h4{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;font-weight:600}.summary-big-stat{align-items:baseline;gap:6px;display:flex}.summary-big-stat strong{font-family:var(--font-display);font-size:2.4rem;font-weight:700;line-height:1}.summary-big-stat span{color:var(--text-muted);font-size:.8rem}.summary-bars{flex-direction:column;gap:8px;display:flex}.summary-bar{gap:var(--space-2);grid-template-columns:1fr auto;align-items:center;font-size:.8rem;display:grid}.summary-bar-track{background:var(--bg-chip);border-radius:3px;grid-column:1/-1;height:6px;margin-top:2px;overflow:hidden}.summary-bar-track span{height:100%;transition:width var(--t-slow);border-radius:3px;display:block}.summary-bar dt{color:var(--text-secondary);align-items:center;gap:6px;display:flex}.summary-bar dd{color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:600}.dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.empty-state{text-align:center;padding:var(--space-10) var(--space-5);color:var(--text-muted);background:var(--bg-elevated);border:1px dashed var(--border-strong);border-radius:var(--radius-lg)}.empty-state-illustration{margin-bottom:var(--space-4);opacity:.6;font-size:3rem;animation:3s ease-in-out infinite float;display:inline-block}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.empty-state h3{margin-bottom:var(--space-2);color:var(--text-primary);font-size:1.2rem}.empty-state p{max-width:380px;margin:0 auto var(--space-4)}.isbn-hero{background:linear-gradient(135deg, color-mix(in srgb, var(--accent-2) 12%, var(--bg-elevated)), var(--bg-elevated));border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-8);margin-bottom:var(--space-6);gap:var(--space-6);grid-template-columns:1fr auto;align-items:center;display:grid}[data-theme=dark] .isbn-hero{background:linear-gradient(135deg, color-mix(in srgb, var(--accent-1) 8%, var(--bg-elevated)), var(--bg-elevated))}.isbn-hero-illust{opacity:.85;font-size:3.5rem}@media (width<=700px){.isbn-hero{padding:var(--space-6);grid-template-columns:1fr}.isbn-hero-illust{display:none}}.isbn-hero h2{margin-bottom:var(--space-2);font-size:1.7rem}.isbn-hero .lead{color:var(--text-secondary);margin-bottom:var(--space-5);max-width:520px}.isbn-form-row{gap:var(--space-2);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:var(--space-1);box-shadow:var(--shadow-sm);transition:border-color var(--t-fast), box-shadow var(--t-fast);grid-template-columns:1fr auto auto;display:grid}.isbn-form-row:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--border-focus) 20%, transparent)}.isbn-form-row input{padding:var(--space-3) var(--space-4);background:0 0;border:none;font-family:ui-monospace,monospace;font-size:1.05rem}.isbn-form-row input:focus{box-shadow:none}@media (width<=540px){.isbn-form-row{grid-template-columns:1fr}}.isbn-tips{margin-top:var(--space-5);gap:var(--space-3);flex-wrap:wrap;display:flex}.isbn-tip{align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:.8rem;display:flex}.isbn-tip code{background:var(--bg-chip);border-radius:var(--radius-sm);color:var(--text-secondary);padding:2px 8px;font-size:.8rem}.isbn-preview{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);gap:var(--space-4);animation:fade-up var(--t-base);flex-direction:column;display:flex}.preview-book{gap:var(--space-5);grid-template-columns:120px 1fr;display:grid}.preview-cover{border-radius:var(--radius-sm);background:var(--bg-sunken);width:120px;height:170px;box-shadow:var(--shadow-md);overflow:hidden}.preview-cover img{object-fit:cover;width:100%;height:100%}.preview-info{flex-direction:column;gap:4px;display:flex}.preview-info h3{font-family:var(--font-display);font-size:1.4rem;line-height:1.2}.preview-info p{color:var(--text-secondary);font-size:.88rem}.preview-info .subtitle{color:var(--text-muted);font-style:italic}.preview-source{color:var(--text-muted);margin-top:auto;font-size:.75rem}@media (width<=540px){.preview-book{grid-template-columns:1fr}.preview-cover{aspect-ratio:2/3;width:100%;max-width:200px;height:auto;margin:0 auto}}.barcode-video{border-radius:var(--radius-md);max-width:320px;margin-top:var(--space-3);box-shadow:var(--shadow-md);display:none}.barcode-video.is-active{display:block}.recent-additions h3{color:var(--text-muted);margin-bottom:var(--space-3);font-size:.9rem}.recent-additions-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(120px,1fr));display:grid}.recent-mini{cursor:pointer;transition:transform var(--t-fast)}.recent-mini:hover{transform:translateY(-3px)}.recent-mini .cover-wrap{aspect-ratio:2/3;border-radius:var(--radius-sm);background:var(--bg-sunken);box-shadow:var(--shadow-sm);overflow:hidden}.recent-mini .cover-wrap img{object-fit:cover;width:100%;height:100%}.recent-mini p{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin-top:6px;font-size:.75rem;overflow:hidden}.manual-layout{gap:var(--space-6);grid-template-columns:1fr 320px;align-items:start;display:grid}@media (width<=1024px){.manual-layout{grid-template-columns:1fr}}.manual-form{flex-direction:column;gap:0;display:flex}.live-preview{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);position:sticky;top:116px}.live-preview h4{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-3);font-size:.78rem;font-weight:600}.live-preview-card{gap:var(--space-3);padding:var(--space-3);background:var(--bg-page);border:1px solid var(--border);border-radius:var(--radius-md);grid-template-columns:70px 1fr;display:grid}.live-preview-cover{background:linear-gradient(135deg, var(--accent-2), var(--accent-1));color:#fff;border-radius:4px;place-items:center;width:70px;height:100px;font-size:1.5rem;display:grid;overflow:hidden}.live-preview-cover img{object-fit:cover;width:100%;height:100%}.live-preview-info h5{font-family:var(--font-display);font-size:.95rem;font-weight:600;line-height:1.2}.live-preview-info p{color:var(--text-muted);margin-top:2px;font-size:.78rem}.book-detail{max-width:920px;margin:0 auto}.back-link{color:var(--text-secondary);margin-bottom:var(--space-4);transition:color var(--t-fast);background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:.85rem;font-weight:500;display:inline-flex}.back-link:hover{color:var(--text-primary);text-decoration:none}.detail-hero{gap:var(--space-6);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-4);grid-template-columns:200px 1fr;display:grid;position:relative;overflow:hidden}.detail-hero:before{content:"";background:radial-gradient(at top right, color-mix(in srgb, var(--hero-tint,var(--accent-2)) 22%, transparent), transparent 65%);pointer-events:none;transition:background var(--t-slow);position:absolute;inset:0}[data-theme=dark] .detail-hero:before{background:radial-gradient(at top right, color-mix(in srgb, var(--hero-tint,var(--accent-1)) 18%, transparent), transparent 65%)}@media (width<=700px){.detail-hero{padding:var(--space-5);grid-template-columns:1fr}}.detail-cover{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--bg-sunken), var(--bg-chip));width:200px;height:290px;color:var(--text-muted);box-shadow:var(--shadow-lg);z-index:1;place-items:center;font-size:3rem;display:grid;position:relative;overflow:hidden}@media (width<=700px){.detail-cover{width:160px;height:230px;margin:0 auto}}.detail-cover img{object-fit:cover;width:100%;height:100%}.detail-info{gap:var(--space-2);z-index:1;flex-direction:column;min-width:0;display:flex;position:relative}.detail-row{align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.detail-row h2{font-family:var(--font-display);flex:200px;font-size:1.9rem;font-weight:700;line-height:1.15}.subtitle{color:var(--text-secondary);font-style:italic}.detail-authors{color:var(--text-primary);font-size:1rem;font-weight:500}.detail-meta{color:var(--text-secondary);font-size:.88rem}.detail-pages{color:var(--text-muted);font-size:.85rem}.detail-facts{margin-top:var(--space-2);flex-wrap:wrap;gap:6px;display:flex}.detail-facts span{border-radius:var(--radius-full);background:var(--bg-chip);color:var(--text-secondary);padding:4px 10px;font-size:.75rem}.detail-desc{color:var(--text-secondary);margin-top:var(--space-3);max-height:130px;font-size:.9rem;line-height:1.6;overflow-y:auto}.detail-notes{color:var(--text-muted);font-size:.88rem;font-style:italic}.detail-section{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-3)}.detail-section h3{margin-bottom:var(--space-3);font-size:1.05rem;font-family:var(--font-display)}.progress{margin-bottom:var(--space-3)}.progress-bar{background:var(--bg-chip);border-radius:5px;height:10px;overflow:hidden}.progress-bar span{background:linear-gradient(90deg, var(--accent-2), var(--accent-1));height:100%;transition:width var(--t-slow);border-radius:5px;display:block}.progress p{color:var(--text-secondary);font-variant-numeric:tabular-nums;margin-top:6px;font-size:.85rem}.detail-quick{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.detail-quick-form{gap:var(--space-2);align-items:center;display:flex}.detail-quick-form input{width:120px}.progress-slider{margin-top:var(--space-3);align-items:center;gap:var(--space-3);display:flex}.progress-slider input[type=range]{background:var(--bg-chip);appearance:none;border:none;border-radius:3px;flex:1;height:6px;padding:0}.progress-slider input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent-1);cursor:pointer;border:3px solid var(--bg-elevated);width:18px;height:18px;box-shadow:var(--shadow-sm);border-radius:50%}.progress-slider input[type=range]::-moz-range-thumb{background:var(--accent-1);cursor:pointer;border:3px solid var(--bg-elevated);width:18px;height:18px;box-shadow:var(--shadow-sm);border-radius:50%}.progress-slider .pages-display{font-variant-numeric:tabular-nums;color:var(--text-secondary);white-space:nowrap;font-size:.9rem}.timeline{padding-left:var(--space-5);list-style:none;position:relative}.timeline:before{content:"";background:var(--border);width:2px;position:absolute;top:6px;bottom:6px;left:8px}.timeline li{padding:var(--space-2) 0;padding-left:var(--space-3);font-size:.85rem;position:relative}.timeline li:before{content:"";background:var(--accent-1);border:2px solid var(--bg-elevated);border-radius:50%;width:10px;height:10px;position:absolute;top:12px;left:-16px}.timeline-row{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.timeline-status{color:var(--text-primary);font-weight:600}.timeline-page{color:var(--text-secondary);font-variant-numeric:tabular-nums}.timeline-date{color:var(--text-muted);margin-left:auto;font-size:.75rem}.timeline-notes{color:var(--text-muted);width:100%;font-size:.8rem;font-style:italic}.danger-zone{border-color:color-mix(in srgb, var(--color-danger) 50%, var(--border))!important}.admin-form{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-5);gap:var(--space-3);flex-direction:column;display:flex}.admin-form h3{font-size:1rem}.admin-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.admin-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);gap:var(--space-3);transition:transform var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast);flex-direction:column;display:flex;position:relative}.admin-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}.admin-card-header{align-items:center;gap:var(--space-2);display:flex}.admin-card-color{border-radius:6px;flex-shrink:0;width:24px;height:24px;box-shadow:inset 0 0 0 1px #00000014}.admin-card-title{font-family:var(--font-display);flex:1;font-size:1rem;font-weight:600}.admin-card-count{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.78rem}.admin-card-bar{background:var(--bg-chip);border-radius:2px;height:4px;overflow:hidden}.admin-card-bar span{height:100%;transition:width var(--t-slow);border-radius:2px;display:block}.admin-card-desc{color:var(--text-muted);font-size:.82rem}.admin-card-actions{gap:var(--space-2);margin-top:auto;display:flex}.color-presets{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.color-swatch{width:26px;height:26px;transition:transform var(--t-fast), border-color var(--t-fast);border:2px solid #0000;border-radius:50%}.color-swatch:hover{transform:scale(1.15)}.color-swatch.is-active{border-color:var(--text-primary);transform:scale(1.15)}.color-dot{border-radius:50%;flex-shrink:0;width:16px;height:16px}.settings-layout{gap:var(--space-5);max-width:720px;display:grid}.settings-profile{align-items:center;gap:var(--space-4);padding:var(--space-5);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex}.profile-avatar{background:linear-gradient(135deg, var(--accent-2), var(--accent-1));color:#fff;width:64px;height:64px;font-family:var(--font-display);box-shadow:var(--shadow-md);border-radius:50%;flex-shrink:0;place-items:center;font-size:1.5rem;font-weight:700;display:grid}.profile-info h3{margin-bottom:2px}.profile-info p{color:var(--text-muted);font-size:.85rem}.settings-form{display:contents}.stat-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.stat-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);transition:transform var(--t-fast), box-shadow var(--t-fast);flex-direction:column;gap:4px;display:flex}.stat-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}.stat-card-icon{opacity:.85;font-size:1.5rem}.stat-card-value{font-family:var(--font-display);font-size:2rem;font-weight:700;line-height:1}.stat-card-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem}.theme-selector{gap:var(--space-2);display:flex}.theme-option{padding:var(--space-3);border-radius:var(--radius-md);border:2px solid var(--border);background:var(--bg-elevated);cursor:pointer;transition:all var(--t-fast);flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.theme-option:hover{border-color:var(--border-strong)}.theme-option.is-active{border-color:var(--accent-2);background:color-mix(in srgb, var(--accent-2) 8%, var(--bg-elevated))}[data-theme=dark] .theme-option.is-active{border-color:var(--accent-1)}.theme-option-preview{border-radius:var(--radius-sm);border:1px solid var(--border);width:48px;height:32px}.theme-option-preview.light{background:linear-gradient(135deg,#faf6ee 50%,#1a4731 50%)}.theme-option-preview.dark{background:linear-gradient(135deg,#14110d 50%,#f59e0b 50%)}.theme-option-preview.auto{background:linear-gradient(135deg,#faf6ee 50%,#14110d 50%)}.theme-option-label{font-size:.82rem;font-weight:500}.toast{bottom:var(--space-5);right:var(--space-5);align-items:center;gap:var(--space-3);background:var(--bg-elevated);color:var(--text-primary);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:9999;max-width:380px;animation:toast-in .28s var(--t-fast);font-size:.88rem;font-weight:500;display:flex;position:fixed}.toast-icon{color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:.75rem;font-weight:700;display:grid}.toast.success .toast-icon{background:var(--color-success)}.toast.error .toast-icon{background:var(--color-danger)}.toast.info .toast-icon{background:var(--accent-2)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translate(0)}}@media (width<=540px){.toast{left:var(--space-4);right:var(--space-4);max-width:none;bottom:96px}}.modal-overlay{background:var(--bg-overlay);z-index:9998;animation:fade-in .2s var(--t-fast);padding:var(--space-4);place-items:center;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-elevated);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-lg);padding:var(--space-6);width:100%;max-width:420px;animation:modal-in .22s var(--t-fast)}@keyframes modal-in{0%{opacity:0;transform:scale(.95)translateY(-8px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal h3{margin-bottom:var(--space-3);font-size:1.2rem}.modal p{color:var(--text-secondary);margin-bottom:var(--space-5)}.modal-actions{gap:var(--space-2);justify-content:flex-end;display:flex}.skeleton{background:linear-gradient(90deg, var(--bg-chip) 25%, var(--bg-hover) 37%, var(--bg-chip) 63%);border-radius:var(--radius-sm);background-size:400% 100%;animation:1.4s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:100%}to{background-position:0%}}.skeleton-card{gap:var(--space-4);padding:var(--space-4);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);grid-template-columns:88px 1fr;display:grid}.skeleton-cover{width:88px;height:124px}.skeleton-lines{flex-direction:column;gap:8px;display:flex}.skeleton-line{border-radius:4px;height:14px}.skeleton-line.short{width:50%}.skeleton-line.medium{width:75%}.skeleton-line.long{width:95%}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.spacer{flex:1}.muted{color:var(--text-muted)}.text-center{text-align:center}[hidden]{display:none!important}.isbn-block{margin-top:var(--space-2);flex-direction:column;gap:4px;display:flex}.isbn-row{align-items:center;gap:var(--space-2);display:inline-flex}.isbn-row code{color:var(--text-secondary);font-family:ui-monospace,Cascadia Code,monospace;font-size:.78rem}.isbn-tag{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-chip);padding:1px 6px;font-size:.6rem;font-weight:700}.reading-history-section{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-card)}.reading-history-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.window-toggle{gap:4px;display:inline-flex}.reading-history-summary{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.reading-history-summary>div{padding:var(--space-3) var(--space-4);background:var(--bg-sunken);border-radius:var(--radius-md);border:1px solid var(--border);flex-direction:column;align-items:flex-start;display:flex}.kpi-value{font-family:var(--font-display);color:var(--text-primary);font-size:1.5rem;font-weight:700;line-height:1}.kpi-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-top:4px;font-size:.72rem}.reading-history-chart-wrap{width:100%;overflow-x:auto}.reading-history-chart{width:100%;min-width:480px;height:auto;display:block}.reading-history-chart .grid-line{stroke:var(--border);stroke-dasharray:2 4}.reading-history-chart .axis-label{fill:var(--text-muted);font-size:10px;font-family:var(--font-sans)}.reading-history-chart .bar{fill:var(--bg-chip);transition:fill var(--t-fast)}.reading-history-chart .bar.has-value{fill:var(--accent-2)}.reading-history-chart .bar.has-value:hover{fill:var(--accent-1);cursor:pointer}.reading-history-chart .bar-value{fill:var(--text-secondary);font-size:9px;font-weight:600;font-family:var(--font-sans)}[data-theme=dark] .reading-history-chart .bar.has-value{fill:var(--accent-1)}[data-theme=dark] .reading-history-chart .bar.has-value:hover{fill:var(--accent-1-hover)}@media (width<=600px){.reading-history-summary{grid-template-columns:1fr}}.goal-banner{background:linear-gradient(135deg, color-mix(in oklab, var(--accent-2) 12%, var(--bg-elevated)), color-mix(in oklab, var(--accent-1) 8%, var(--bg-elevated)));border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--shadow-card)}.goal-banner-info{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.goal-banner-icon{font-size:1.5rem;line-height:1}.goal-banner-text{flex-direction:column;gap:2px;display:flex}.goal-banner-title{color:var(--text-secondary);font-size:.92rem;font-family:var(--font-sans);margin:0}.goal-banner-title strong{color:var(--text-primary);font-family:var(--font-display);font-size:1.05rem}.goal-banner-sub{color:var(--text-muted);margin:0;font-size:.78rem}.goal-banner-bar{background:var(--bg-sunken);border-radius:var(--radius-full);height:8px;overflow:hidden}.goal-banner-bar>span{background:linear-gradient(90deg, var(--accent-2), var(--accent-1));height:100%;transition:width var(--t-base);display:block}.goal-progress{background:var(--bg-sunken);border-radius:var(--radius-md);padding:var(--space-3);border:1px solid var(--border)}.goal-progress-info{color:var(--text-secondary);font-size:.92rem}.goal-progress-num{color:var(--text-primary);font-family:var(--font-display);font-size:1.1rem}.goal-progress-pct{color:var(--text-muted);margin-left:var(--space-2);font-size:.85rem}.goal-progress-bar{margin-top:var(--space-2);background:var(--bg-elevated);border-radius:var(--radius-full);height:8px;overflow:hidden}.goal-progress-bar>span{background:linear-gradient(90deg, var(--accent-2), var(--accent-1));height:100%;transition:width var(--t-base);display:block}.goal-celebration{margin-top:var(--space-2);color:var(--color-success);font-weight:600}.loan-active{justify-content:space-between;align-items:flex-start;gap:var(--space-3);background:color-mix(in oklab, var(--accent-1) 8%, var(--bg-elevated));border:1px solid color-mix(in oklab, var(--accent-1) 30%, var(--border));border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);flex-wrap:wrap;display:flex}.loan-active-info p{margin:0 0 4px}.loan-active-info p:last-child{margin-bottom:0}.loan-overdue{color:var(--color-danger);font-weight:600}.loan-today{color:var(--color-warning);font-weight:600}.loan-soon{color:var(--color-warning)}.loan-form{gap:var(--space-3);flex-direction:column;display:flex}.loan-form .field-row{gap:var(--space-2)}.book-timeline{gap:var(--space-3);flex-direction:column;display:flex}.timeline-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.timeline-filters{flex-wrap:wrap;gap:6px;display:flex}.timeline-add-form{background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);gap:var(--space-3);flex-direction:column;display:flex}.timeline-events{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex;position:relative}.timeline-events:before{content:"";background:var(--border);width:2px;position:absolute;top:16px;bottom:16px;left:17px}.timeline-event{gap:var(--space-3);padding:var(--space-3) 0;grid-template-columns:36px 1fr auto;align-items:flex-start;display:grid;position:relative}.timeline-event:not(:last-child){border-bottom:1px dashed var(--border)}.timeline-event-icon{border-radius:var(--radius-full);z-index:1;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;display:flex;box-shadow:0 2px 4px #0000001a}.timeline-event-body{min-width:0}.timeline-event-row{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.timeline-event-label{color:var(--text-primary);font-size:.92rem;font-weight:600}.timeline-event-detail{color:var(--text-secondary);font-size:.85rem}.timeline-event-date{color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:.75rem}.timeline-event-note{padding:var(--space-2) var(--space-3);background:var(--bg-sunken);border-left:2px solid var(--border);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text-secondary);white-space:pre-wrap;margin:6px 0 0;font-size:.85rem;font-style:italic}.timeline-event-delete{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-full);opacity:0;width:28px;height:28px;transition:opacity var(--t-fast), background var(--t-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.2rem;line-height:1;display:flex}.timeline-event:hover .timeline-event-delete{opacity:1}.timeline-event-delete:hover{background:var(--bg-hover);color:var(--color-danger)}@media (width<=600px){.timeline-event-date{order:99;width:100%;margin-left:0}}.badge{border-radius:var(--radius-full);background:var(--bg-sunken);color:var(--text-secondary);border:1px solid var(--border);white-space:nowrap;vertical-align:middle;transition:background var(--t-fast), border-color var(--t-fast);align-items:center;gap:4px;padding:2px 8px;font-size:.72rem;font-weight:600;line-height:1.4;display:inline-flex}.badge-md{padding:3px 10px;font-size:.78rem}.badge-icon{font-size:.85em;line-height:1}.badge-label{display:inline-block}.badge-info{background:color-mix(in oklab, #0f766e 15%, var(--bg-sunken));color:#0f766e;border-color:color-mix(in oklab, #0f766e 30%, var(--border))}.badge-success{background:color-mix(in oklab, #15803d 15%, var(--bg-sunken));color:#15803d;border-color:color-mix(in oklab, #15803d 30%, var(--border))}.badge-warn{background:color-mix(in oklab, #d97706 18%, var(--bg-sunken));color:#b45309;border-color:color-mix(in oklab, #d97706 35%, var(--border))}.badge-danger{background:color-mix(in oklab, var(--color-danger) 15%, var(--bg-sunken));color:var(--color-danger);border-color:color-mix(in oklab, var(--color-danger) 30%, var(--border))}.badge-wishlist{background:color-mix(in oklab, #db2777 15%, var(--bg-sunken));color:#be185d;border-color:color-mix(in oklab, #db2777 30%, var(--border))}.badge-new{color:#92400e;background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#fbbf24}.badge-fire{color:#b91c1c;background:linear-gradient(135deg,#fee2e2,#fecaca);border-color:#ef4444;animation:2.4s ease-in-out infinite pulse-fire}@keyframes pulse-fire{0%,to{box-shadow:0 0 #ef444400}50%{box-shadow:0 0 0 4px #ef44442e}}.badge-purple{background:color-mix(in oklab, #7c3aed 15%, var(--bg-sunken));color:#6d28d9;border-color:color-mix(in oklab, #7c3aed 30%, var(--border))}.badge-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.time-status{border-radius:var(--radius-full);background:var(--bg-sunken);color:var(--text-secondary);align-items:center;gap:6px;padding:4px 12px;font-size:.82rem;font-weight:500;display:inline-flex}.time-status.tone-info{background:color-mix(in oklab, #0f766e 12%, var(--bg-sunken));color:#115e59}.time-status.tone-success{background:color-mix(in oklab, #15803d 12%, var(--bg-sunken));color:#166534}.time-status.tone-warn{background:color-mix(in oklab, #d97706 14%, var(--bg-sunken));color:#92400e}.time-status.tone-danger{background:color-mix(in oklab, var(--color-danger) 12%, var(--bg-sunken));color:var(--color-danger)}.time-status.tone-wishlist{background:color-mix(in oklab, #db2777 12%, var(--bg-sunken));color:#9d174d}.time-status.tone-new{color:#92400e;background:linear-gradient(90deg,#fef3c7,#fde68a)}.achievements{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);margin-top:var(--space-4)}.achievements-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.achievements-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.achievement{gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);background:var(--bg-sunken);border:1px solid var(--border);transition:transform var(--t-fast), box-shadow var(--t-fast);align-items:flex-start;display:flex}.achievement:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.achievement.is-locked{opacity:.7;filter:grayscale(.4)}.achievement-icon{background:var(--bg-elevated);border-radius:var(--radius-full);width:44px;height:44px;box-shadow:var(--shadow-sm);flex-shrink:0;justify-content:center;align-items:center;font-size:1.8rem;line-height:1;display:flex}.achievement-info .achievement-icon{background:color-mix(in oklab, #0f766e 15%, var(--bg-elevated))}.achievement-success .achievement-icon{background:color-mix(in oklab, #15803d 15%, var(--bg-elevated))}.achievement-warn .achievement-icon{background:color-mix(in oklab, #d97706 18%, var(--bg-elevated))}.achievement-purple .achievement-icon{background:color-mix(in oklab, #7c3aed 15%, var(--bg-elevated))}.achievement-wishlist .achievement-icon{background:color-mix(in oklab, #db2777 15%, var(--bg-elevated))}.achievement-body{flex:1;min-width:0}.achievement-body strong{color:var(--text-primary);font-size:.9rem;display:block}.achievement-body p{color:var(--text-secondary);margin:2px 0 0;font-size:.78rem}.achievement-bar{background:var(--bg-chip);border-radius:var(--radius-full);height:4px;margin-top:8px;overflow:hidden}.achievement-bar span{background:linear-gradient(90deg, var(--accent-2), var(--accent-1));height:100%;transition:width .32s cubic-bezier(.2,0,0,1);display:block}.grid-card-corner{position:absolute;top:6px;right:6px;padding:2px 6px!important;font-size:.95rem!important}.detail-time-row{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.list-card-badges{top:var(--space-2);right:var(--space-2);pointer-events:none;z-index:2;flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:absolute}.list-card-badges .badge{pointer-events:auto}.list-card-time{color:var(--text-muted);align-items:center;gap:4px;margin-top:4px;font-size:.72rem;display:flex}.list-card-time.tone-info{color:#115e59}.list-card-time.tone-success{color:#166534}.list-card-time.tone-warn{color:#92400e}.list-card-time.tone-danger{color:var(--color-danger)}.list-card-time.tone-wishlist{color:#9d174d}.list-card-time.tone-new{color:#92400e;font-weight:600}.overdue-banner{align-items:center;gap:var(--space-3);background:color-mix(in oklab, var(--color-danger) 10%, var(--bg-elevated));border:1px solid color-mix(in oklab, var(--color-danger) 35%, var(--border));border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);animation:.28s cubic-bezier(.2,0,0,1) slideInDown;display:flex}.overdue-icon{font-size:1.6rem;line-height:1}.overdue-text{flex:1;min-width:0}.overdue-text strong{color:var(--color-danger);font-size:.95rem;display:block}.overdue-text p{color:var(--text-secondary);margin:4px 0 0;font-size:.82rem}.overdue-text a{color:var(--text-primary);font-weight:600}.overdue-text em{color:var(--text-secondary);font-style:normal;font-weight:500}@keyframes slideInDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.goal-banner{position:relative}.goal-banner-close{border-radius:var(--radius-full);cursor:pointer;width:28px;height:28px;color:var(--text-muted);transition:background var(--t-fast), color var(--t-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.2rem;line-height:1;display:flex;position:absolute;top:8px;right:10px}.goal-banner-close:hover{background:var(--bg-hover);color:var(--text-primary)}.wishlist-toggle{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:color-mix(in oklab, #db2777 6%, var(--bg-sunken));border:1px solid color-mix(in oklab, #db2777 25%, var(--border));border-radius:var(--radius-md);cursor:pointer;transition:background var(--t-fast), border-color var(--t-fast);display:flex}.wishlist-toggle:hover{background:color-mix(in oklab, #db2777 10%, var(--bg-sunken));border-color:color-mix(in oklab, #db2777 40%, var(--border))}.wishlist-toggle input[type=checkbox]{accent-color:#db2777;cursor:pointer;flex-shrink:0;width:20px;height:20px;margin-top:2px}.wishlist-toggle .hint{margin-top:2px;font-size:.78rem}.timeline-event{animation:.24s cubic-bezier(.2,0,0,1) both fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.wishlist-banner{background:color-mix(in oklab, #db2777 12%, var(--bg-elevated));border:1px solid color-mix(in oklab, #db2777 35%, var(--border));border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);flex-direction:column;align-items:flex-start;display:flex}.wishlist-banner p{color:var(--text-secondary);margin:0;font-size:.92rem;line-height:1.5}.wishlist-banner strong{color:var(--text-primary)}.lent-fact{font-weight:600;background:color-mix(in oklab, var(--accent-1) 18%, var(--bg-chip))!important;color:var(--text-primary)!important}.top-lists-grid{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}@media (width<=720px){.top-lists-grid{grid-template-columns:1fr}}.top-list{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-card)}.top-list-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.top-list-header h3{font-size:.95rem;font-family:var(--font-display);margin:0}.top-list-items{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.top-list-row{gap:var(--space-2);grid-template-columns:22px minmax(0,1.1fr) minmax(60px,2fr) auto;align-items:center;display:grid}.top-list-rank{font-family:var(--font-display);color:var(--text-muted);text-align:right;font-size:.85rem;font-weight:700}.top-list-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.top-list-bar{background:var(--bg-sunken);border-radius:var(--radius-full);height:6px;display:block;overflow:hidden}.top-list-bar>span{height:100%;transition:width var(--t-base);display:block}.top-list-value{color:var(--text-secondary);font-variant-numeric:tabular-nums;text-align:right;min-width:18px;font-size:.78rem;font-weight:600}.now-reading-card,.grid-card{position:relative}.book-card-link{color:inherit;text-decoration:none}.book-card-link:after{content:"";border-radius:inherit;position:absolute;inset:0}.book-card-link:focus-visible:after{outline:2px solid var(--accent-1);outline-offset:-3px}.library-actions{position:relative}.confirm-dialog{color:var(--text-primary);margin:auto;position:fixed;inset:0}.confirm-dialog::backdrop{background:#0000008c}.skip-link{z-index:1000;background:var(--bg-card);color:var(--text-primary);padding:.75rem 1rem;position:fixed;inset:1rem auto auto 1rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.auth-view{width:min(100% - 2rem,28rem);margin:clamp(2rem,12vh,7rem) auto}.auth-form{gap:1rem;display:grid}.auth-form label{gap:.35rem;display:grid}.auth-form .btn{justify-self:start}
