:root{--navy: #2B2D7E;--teal: #4BBFB0;--teal-dark: #2E9E8F;--teal-light: #E0F7F4;--cream: #FAFAF8;--cream-dark: #ECEAE4;--white: #FFFFFF;--gold: #F5C842;--gold-light: #FEF9E7;--rose: #FF6B8A;--rose-light: #FFF2F5;--peach: #FF8C6B;--peach-light: #FFF3EE;--lilac: #A78BFA;--lilac-light: #F3F0FF;--sky: #60B8F0;--sky-light: #EEF7FF;--mint: #52D48A;--mint-light: #EDFAF4;--text-primary: #2B2D7E;--text-secondary: #6B7280;--text-muted: #A8B0BB;--border: rgba(43, 45, 126, .08);--shadow-sm: 0 2px 8px rgba(43, 45, 126, .06);--shadow-md: 0 4px 16px rgba(43, 45, 126, .1);--shadow-lg: 0 8px 32px rgba(43, 45, 126, .14);--rainbow: linear-gradient(90deg, #FF6B8A, #F5C842, #4BBFB0, #A78BFA);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-pill: 50px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Nunito,sans-serif;font-weight:400;color:var(--text-primary);background:var(--cream);line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:Fredoka One,cursive;font-weight:400;color:var(--text-primary)}a{color:var(--teal-dark);text-decoration:none}a:hover{text-decoration:underline}button{font-family:Nunito,sans-serif}.app-shell{max-width:480px;margin:0 auto;min-height:100vh;background:var(--cream);position:relative}@media(min-width:481px){body{background:#e8e6e0}.app-shell{box-shadow:var(--shadow-lg);border-left:1px solid var(--cream-dark);border-right:1px solid var(--cream-dark)}}@keyframes mcl-spin{to{transform:rotate(360deg)}}.auth-root{display:flex;align-items:center;justify-content:center;min-height:100vh;background-color:var(--cream);padding:1rem}.auth-card{background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:420px;width:100%;padding:1.5rem 2rem}.auth-logo-img{display:block;width:210px;height:auto;margin:-.5rem auto .75rem}.auth-title{font-family:Fredoka One,cursive;font-size:1.25rem;font-weight:400;color:var(--text-primary);text-align:center;margin:0 0 .75rem}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-field{display:flex;flex-direction:column;gap:.25rem}.auth-label{font-size:.8125rem;font-weight:700;color:var(--text-primary)}.auth-input{width:100%;padding:.75rem 1rem;border:1.5px solid var(--cream-dark);border-radius:var(--radius-pill);font-size:.9375rem;font-family:Nunito,sans-serif;color:var(--text-primary);background:var(--white);outline:none;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}select.auth-input{appearance:auto;cursor:pointer}.auth-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #4bbfb026}.auth-input.error{border-color:var(--rose)}.auth-input.error:focus{box-shadow:0 0 0 3px #ff6b8a26}.auth-error{font-size:.8125rem;color:var(--rose);margin-top:.125rem}.auth-error-banner{background:var(--rose-light);border:1.5px solid rgba(255,107,138,.3);border-radius:var(--radius-sm);color:#c0163e;font-size:.875rem;padding:.75rem 1rem;margin-bottom:.5rem}.auth-success{background:var(--teal-light);border:1.5px solid rgba(75,191,176,.3);border-radius:var(--radius-sm);color:var(--teal-dark);font-size:.875rem;padding:.75rem 1rem;margin-bottom:.5rem}.auth-btn{width:100%;padding:.75rem 1.25rem;background:var(--navy);color:var(--white);border:none;border-radius:var(--radius-pill);font-family:Fredoka One,cursive;font-size:1rem;font-weight:400;cursor:pointer;transition:background .15s,opacity .15s,transform .1s}.auth-btn:hover:not(:disabled){background:#1e1f5c;transform:translateY(-1px)}.auth-btn:active:not(:disabled){transform:translateY(0)}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.auth-social-btn{display:flex;align-items:center;justify-content:center;gap:.625rem;width:100%;padding:.75rem 1rem;background:var(--white);color:var(--text-primary);border:2px solid var(--navy);border-radius:var(--radius-pill);font-family:Nunito,sans-serif;font-size:.9375rem;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}.auth-social-btn:hover:not(:disabled){background:var(--cream);border-color:var(--teal)}.auth-social-btn:disabled{opacity:.6;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:.75rem;color:var(--text-muted);font-size:.8125rem;font-weight:600;margin:.75rem 0}.auth-divider hr{flex:1;border:none;border-top:1.5px dashed var(--cream-dark);margin:0}.auth-footer{text-align:center;font-size:.875rem;color:var(--text-secondary);margin-top:1.25rem}.auth-footer a{color:var(--teal-dark);font-weight:700;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.auth-optional-title{font-family:Fredoka One,cursive;font-size:.875rem;font-weight:400;color:var(--text-secondary);margin-bottom:.75rem}.auth-link-banner{background:var(--sky-light);border:1.5px solid rgba(96,184,240,.3);border-radius:var(--radius-sm);color:#0e5fa0;font-size:.875rem;padding:.75rem 1rem;margin-bottom:1rem}.auth-link-banner strong{display:block;margin-bottom:.25rem}.auth-cancel-btn{background:none;border:none;cursor:pointer;color:var(--text-secondary);font-family:Nunito,sans-serif;font-size:.875rem;font-weight:700}.auth-cancel-btn:hover{color:var(--text-primary)}.auth-forgot-link{font-size:.875rem;color:var(--teal-dark);font-weight:700}.auth-forgot-link:hover{text-decoration:underline}.autocomplete{position:relative}.autocomplete-input{width:100%;padding:.625rem .875rem;border:1.5px solid var(--cream-dark);border-radius:var(--radius-pill);font-size:.875rem;font-family:Nunito,sans-serif;color:var(--text-primary);background:var(--white);box-sizing:border-box;outline:none;transition:border-color .15s,box-shadow .15s}.autocomplete-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #4bbfb026}.autocomplete-selected{display:flex;align-items:center;gap:.5rem;padding:.5rem .875rem;border:1.5px solid var(--teal);border-radius:var(--radius-pill);background:var(--teal-light);min-height:40px}.autocomplete-selected-text{flex:1;min-width:0}.autocomplete-selected-label{display:block;font-size:.875rem;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-selected-sublabel{display:block;font-size:.75rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-clear{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:#2b2d7e14;border-radius:50%;font-size:1rem;color:var(--text-secondary);cursor:pointer;line-height:1;padding:0}.autocomplete-clear:hover{background:#2b2d7e26;color:var(--text-primary)}.autocomplete-dropdown{position:absolute;left:0;right:0;top:calc(100% + 4px);max-height:220px;overflow-y:auto;background:var(--white);border:1.5px solid var(--cream-dark);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);list-style:none;margin:0;padding:.25rem;z-index:30}.autocomplete-option{padding:.5rem .75rem;border-radius:8px;cursor:pointer}.autocomplete-option--active{background:var(--cream)}.autocomplete-option-label{display:block;font-size:.875rem;font-weight:600;color:var(--text-primary)}.autocomplete-option-sublabel{display:block;font-size:.75rem;color:var(--text-secondary)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;height:56px;background:var(--white);border-bottom:2px solid var(--cream-dark);position:sticky;top:0;z-index:10}.app-header-brand{display:flex;align-items:center;gap:.5rem;text-decoration:none}.app-header-logo-img{width:32px;height:32px;border-radius:50%}.app-header-logo{font-family:Fredoka One,cursive;font-size:1.125rem;font-weight:400;color:var(--text-primary);text-decoration:none;letter-spacing:-.5px}.app-header-logo:hover{color:var(--teal-dark)}.app-header-actions{display:flex;align-items:center;gap:.5rem}.app-page{max-width:100%;padding:1.5rem 1.25rem}.page-title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.page-title-row h1{font-family:Fredoka One,cursive;font-size:1.5rem;font-weight:400;color:var(--text-primary);margin:0}.lib-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.lib-item{display:flex;align-items:center;justify-content:space-between;background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);padding:.75rem 1rem;gap:.75rem;box-shadow:var(--shadow-sm)}.lib-item-name{flex:1;font-family:Fredoka One,cursive;font-size:.9375rem;font-weight:400;color:var(--text-primary);background:none;border:none;padding:0;cursor:pointer;text-align:left;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-item-name:hover{color:var(--teal-dark)}.lib-item-name-deleted{color:var(--text-muted);cursor:default}.lib-item-name-deleted:hover{color:var(--text-muted)}.lib-item-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.lib-empty{text-align:center;padding:3rem 1rem;color:var(--text-secondary);font-size:.9375rem}.lib-empty p{margin:0}.lib-trash-section{margin-top:2rem}.lib-trash-header{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;padding:.5rem 0;font-family:Nunito,sans-serif;font-size:.875rem;font-weight:700;color:var(--text-secondary);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.5rem}.lib-trash-header:hover{color:var(--text-primary)}.days-badge{display:inline-flex;align-items:center;padding:.125rem .625rem;background:var(--peach-light);border:1.5px solid rgba(255,140,107,.3);border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;color:#c94a14;white-space:nowrap}.dropdown{position:relative}.dropdown-menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--white);border:1.5px solid var(--cream-dark);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);list-style:none;margin:0;padding:.25rem;min-width:140px;z-index:20}.dropdown-item{display:block;width:100%;padding:.5rem .75rem;background:none;border:none;border-radius:8px;font-family:Nunito,sans-serif;font-size:.875rem;font-weight:600;color:var(--text-primary);cursor:pointer;text-align:left}.dropdown-item:hover{background:var(--cream)}.dropdown-item-danger{color:var(--rose)}.dropdown-item-danger:hover{background:var(--rose-light)}.modal-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.modal-card{background:var(--white);border-radius:24px;box-shadow:var(--shadow-lg);width:100%;max-width:400px;padding:1.75rem}.modal-title{font-family:Fredoka One,cursive;font-size:1.25rem;font-weight:400;color:var(--text-primary);margin:0 0 1.25rem}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.25rem}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1.25rem;background:var(--navy);color:var(--white);border:none;border-radius:var(--radius-pill);font-family:Fredoka One,cursive;font-size:.9375rem;font-weight:400;cursor:pointer;transition:background .15s,opacity .15s,transform .1s;white-space:nowrap}.btn:hover:not(:disabled){background:#1e1f5c;transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-teal{background:var(--teal)}.btn-teal:hover:not(:disabled){background:var(--teal-dark)}.btn-gold{background:var(--gold);color:var(--navy)}.btn-gold:hover:not(:disabled){background:#e0b63a}.btn-ghost{background:transparent;color:var(--text-primary);border:2px solid var(--navy);font-family:Nunito,sans-serif;font-weight:700}.btn-ghost:hover:not(:disabled){background:var(--cream);border-color:var(--teal);color:var(--teal-dark)}.btn-danger{background:var(--rose)}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}.offline-banner{position:fixed;top:0;left:0;right:0;z-index:100;padding:.5rem 1rem;background:var(--cream-dark);color:var(--navy);font-family:Nunito,sans-serif;font-size:.8125rem;font-weight:700;text-align:center}.back-link{display:inline-flex;align-items:center;font-size:.875rem;font-weight:700;color:var(--text-secondary);text-decoration:none;margin-bottom:1rem}.back-link:hover{color:var(--teal-dark)}.scan-modal{background:var(--white);border-radius:24px;box-shadow:var(--shadow-lg);width:100%;max-width:440px;max-height:90vh;overflow-y:auto;padding:1.5rem}.scanner-container{display:flex;flex-direction:column;align-items:center;gap:1rem}.scanner-close-btn{align-self:flex-end}#scanner-region{width:100%;border-radius:var(--radius-sm);overflow:hidden}.scan-hint{margin:0;font-size:.875rem;color:var(--text-secondary);text-align:center}.scan-status{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem 1rem;text-align:center}.scan-status p{margin:0;font-size:.9375rem;color:var(--text-primary)}.scan-spinner{width:32px;height:32px;border:3px solid var(--cream-dark);border-top-color:var(--teal);border-radius:50%;animation:mcl-spin .7s linear infinite}.scan-success p{color:var(--teal-dark);font-family:Fredoka One,cursive;font-weight:400;font-size:1.125rem}.scan-error-text{color:var(--rose)!important}.scan-results{display:flex;flex-direction:column;gap:1rem}.book-result-list{display:flex;flex-direction:column;gap:.5rem;max-height:360px;overflow-y:auto}.book-result-card{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:var(--cream);border:2px solid var(--cream-dark);border-radius:var(--radius-md);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s;width:100%;font:inherit}.book-result-card:hover{border-color:var(--teal);box-shadow:var(--shadow-sm)}.book-result-card.selected{border-color:var(--navy);background:var(--sky-light)}.book-cover-thumb{width:56px;height:80px;object-fit:cover;border-radius:6px;flex-shrink:0;background:var(--cream-dark)}.book-cover-placeholder{display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:700;color:var(--text-muted);text-transform:uppercase}.book-result-info{display:flex;flex-direction:column;gap:.125rem;min-width:0}.book-result-title{font-family:Fredoka One,cursive;font-size:.9375rem;font-weight:400;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-result-authors{font-size:.8125rem;font-weight:600;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-result-isbn{font-size:.75rem;color:var(--text-muted)}.manual-add-form{display:flex;flex-direction:column;gap:.875rem}.form-field{display:flex;flex-direction:column;gap:.25rem}.form-label{font-size:.8125rem;font-weight:700;color:var(--text-primary)}.form-label-optional{font-weight:400;color:var(--text-muted)}.form-input{padding:.6875rem 1rem;border:1.5px solid var(--cream-dark);border-radius:var(--radius-pill);font-family:Nunito,sans-serif;font-size:.875rem;color:var(--text-primary);background:var(--white);outline:none;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}.form-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #4bbfb026}.form-input::placeholder{color:var(--text-muted)}.form-error{font-size:.75rem;color:var(--rose)}.cover-upload-area{display:flex;align-items:center;gap:1rem}.cover-preview{width:64px;height:90px;object-fit:cover;border-radius:var(--radius-sm);border:2px solid var(--border);flex-shrink:0}.cover-placeholder{width:64px;height:90px;border-radius:var(--radius-sm);border:2px dashed var(--cream-dark);display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;flex-shrink:0;background:var(--cream)}.cover-upload-controls{display:flex;flex-direction:column;gap:.375rem}.cover-upload-hint{font-size:.75rem;color:var(--text-secondary)}.cover-upload-input{display:none}.cover-resolving{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--text-secondary)}.cover-resolve-spinner{width:16px;height:16px;border:2px solid var(--cream-dark);border-top-color:var(--teal);border-radius:50%;animation:mcl-spin .7s linear infinite}.cover-resolve-result{font-size:.75rem;color:var(--teal-dark)}.cover-resolve-fail{font-size:.75rem;color:var(--peach)}.keywords-list{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.375rem}.keyword-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;background:var(--lilac-light);border:1.5px solid rgba(167,139,250,.3);border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;color:#5b21b6}.keyword-remove{background:none;border:none;padding:0;font-size:.875rem;color:var(--lilac);cursor:pointer;line-height:1}.keyword-remove:hover{color:#5b21b6}.add-book-tabs{display:flex;border-bottom:1.5px dashed var(--cream-dark);margin-bottom:1.25rem}.add-book-tab{flex:1;padding:.625rem 0;background:none;border:none;border-bottom:3px solid transparent;font-family:Nunito,sans-serif;font-size:.9375rem;font-weight:700;color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s}.add-book-tab:hover{color:var(--text-primary)}.add-book-tab.active{color:var(--navy);border-bottom-color:var(--navy)}.search-sub-tabs{display:flex;gap:.25rem;background:var(--cream);border-radius:var(--radius-pill);padding:.25rem;margin-bottom:1rem}.search-sub-tab{flex:1;padding:.375rem .5rem;background:none;border:none;border-radius:var(--radius-pill);font-family:Nunito,sans-serif;font-size:.8125rem;font-weight:700;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.search-sub-tab:hover{color:var(--text-primary)}.search-sub-tab.active{background:var(--white);color:var(--text-primary);box-shadow:var(--shadow-sm)}.search-input-row{margin-bottom:.75rem}.search-input{width:100%;padding:.6875rem 1rem;border:1.5px solid var(--cream-dark);border-radius:var(--radius-pill);font-family:Nunito,sans-serif;font-size:.875rem;color:var(--text-primary);background:var(--white);outline:none;transition:border-color .15s,box-shadow .15s;box-sizing:border-box;box-shadow:var(--shadow-sm)}.search-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #4bbfb026}.search-input::placeholder{color:var(--text-muted)}.grade-filter-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.grade-filter-label{font-size:.8125rem;font-weight:700;color:var(--text-secondary);white-space:nowrap}.grade-filter-select{padding:.375rem .625rem;border:1.5px solid var(--cream-dark);border-radius:var(--radius-pill);font-family:Nunito,sans-serif;font-size:.8125rem;color:var(--text-primary);background:var(--white);cursor:pointer}.search-results-list{display:flex;flex-direction:column;gap:.5rem;max-height:340px;overflow-y:auto}.search-results-list .book-result-card{cursor:default}.search-result-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}.book-price{display:inline-flex;align-items:center;padding:.125rem .625rem;background:var(--teal-light);border:1.5px solid rgba(75,191,176,.3);border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;color:var(--teal-dark);white-space:nowrap}.added-badge{display:inline-flex;align-items:center;padding:.25rem .75rem;background:var(--teal-light);border:1.5px solid rgba(75,191,176,.3);border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;color:var(--teal-dark);white-space:nowrap}.search-empty{text-align:center;padding:2rem 1rem;color:var(--text-secondary);font-size:.875rem}.search-loading{display:flex;justify-content:center;padding:2rem 0}.btn-add{padding:.25rem .75rem;font-size:.75rem;font-weight:700;border-radius:var(--radius-pill)}.book-result-library{font-size:.75rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-greeting{font-family:Fredoka One,cursive;font-size:1.625rem;font-weight:400;color:var(--text-primary);margin:0 0 1.5rem}.home-stats{display:flex;gap:.75rem;margin-bottom:1.5rem}.home-stat-card{flex:1;border-radius:var(--radius-md);padding:1rem;border:2px solid var(--border);box-shadow:var(--shadow-sm)}.home-stat-card--blue{background:var(--sky-light);border-color:#60b8f040}.home-stat-card--green{background:var(--teal-light);border-color:#4bbfb040}.home-stat-value{font-family:Fredoka One,cursive;font-size:1.75rem;font-weight:400;margin:0}.home-stat-card--blue .home-stat-value{color:var(--sky)}.home-stat-card--green .home-stat-value{color:var(--teal-dark)}.home-stat-label{font-size:.8125rem;font-weight:600;color:var(--text-secondary);margin:.125rem 0 0}.home-actions{display:flex;gap:.75rem;margin-bottom:2rem}.home-actions .btn,.home-actions .btn-ghost{flex:1}.home-section-header{display:flex;align-items:center;padding:.5rem 0;font-family:Fredoka One,cursive;font-size:1rem;font-weight:400;color:var(--text-primary);margin-bottom:.5rem}.home-recent-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);cursor:pointer;margin-bottom:.5rem;transition:border-color .15s,box-shadow .15s;box-shadow:var(--shadow-sm)}.home-recent-item:hover{border-color:var(--teal);box-shadow:var(--shadow-md)}.home-recent-thumb{width:30px;height:38px;border-radius:6px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:Fredoka One,cursive;font-size:.75rem;color:var(--white);background:var(--teal)}.home-recent-info{min-width:0;flex:1}.home-recent-title{font-family:Fredoka One,cursive;font-size:.9375rem;font-weight:400;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-recent-author{font-size:.8125rem;font-weight:600;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.buy-modal-content{display:flex;flex-direction:column;gap:1.25rem}.buy-modal-book{display:flex;align-items:center;gap:.75rem;padding-bottom:1rem;border-bottom:1.5px dashed var(--cream-dark)}.buy-modal-book-info{display:flex;flex-direction:column;gap:.125rem;min-width:0}.buy-modal-book-title{font-family:Fredoka One,cursive;font-size:.9375rem;font-weight:400;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buy-modal-book-authors{font-size:.8125rem;font-weight:600;color:var(--text-secondary)}.merchant-group{display:flex;flex-direction:column;gap:.5rem}.merchant-group-title{font-family:Nunito,sans-serif;font-size:.75rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.merchant-list{display:flex;flex-direction:column;gap:.375rem}.merchant-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.75rem 1rem;background:var(--white);border:2px solid var(--cream-dark);border-radius:var(--radius-pill);font-family:Nunito,sans-serif;font-size:.875rem;font-weight:700;color:var(--text-primary);cursor:pointer;transition:background .15s,border-color .15s;text-decoration:none}.merchant-btn:hover{background:var(--cream);border-color:var(--teal);color:var(--teal-dark)}.buy-loading{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:2rem 0}.buy-empty{text-align:center;padding:1.5rem 0;color:var(--text-secondary);font-size:.875rem}.book-detail-header{display:flex;gap:1.25rem;margin-bottom:1.5rem}.book-detail-cover{width:100px;height:140px;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0;background:var(--cream-dark)}.book-detail-cover-placeholder{width:100px;height:140px;border-radius:var(--radius-sm);background:var(--teal);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-family:Fredoka One,cursive;font-size:2rem;color:var(--white);flex-shrink:0}.book-detail-meta{display:flex;flex-direction:column;gap:.375rem;min-width:0}.book-detail-title{font-family:Fredoka One,cursive;font-size:1.25rem;font-weight:400;color:var(--text-primary);margin:0;line-height:1.3}.book-detail-authors{font-size:.9375rem;font-weight:600;color:var(--text-secondary)}.book-detail-secondary{font-size:.8125rem;color:var(--text-muted)}.book-detail-description{font-size:.875rem;color:var(--text-secondary);line-height:1.6;margin-bottom:1.5rem}.book-detail-section{margin-bottom:1.5rem}.book-detail-section-title{font-family:Nunito,sans-serif;font-size:.8125rem;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.5rem}.book-detail-keywords{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.5rem}.book-detail-notes{width:100%;min-height:80px;padding:.75rem 1rem;border:1.5px solid var(--cream-dark);border-radius:var(--radius-sm);font-size:.875rem;font-family:Nunito,sans-serif;color:var(--text-primary);background:var(--white);resize:vertical;outline:none;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}.book-detail-notes:focus{border-color:var(--teal);box-shadow:0 0 0 3px #4bbfb026}.book-detail-notes::placeholder{color:var(--text-muted)}.book-detail-actions{display:flex;gap:.75rem;padding-top:1rem;border-top:1.5px dashed var(--cream-dark)}.save-status{font-size:.75rem;font-weight:700;color:var(--teal-dark);margin-left:.5rem}.profile-section{background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);padding:1.25rem 1rem;margin-bottom:1rem;box-shadow:var(--shadow-sm)}.profile-section-title{font-family:Nunito,sans-serif;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 .75rem}.profile-field{display:flex;align-items:baseline;gap:.5rem;padding:.375rem 0}.profile-field-label{font-size:.8125rem;font-weight:700;color:var(--text-secondary);min-width:100px;flex-shrink:0}.profile-field-value{font-size:.9375rem;color:var(--text-primary);word-break:break-word}.profile-provider{display:inline-flex;align-items:center;padding:.125rem .625rem;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;color:var(--text-primary);margin-right:.25rem}.profile-badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:var(--radius-pill);font-size:.75rem;font-weight:700;text-transform:capitalize}.profile-badge-free{background:var(--cream);border:1.5px solid var(--cream-dark);color:var(--text-secondary)}.profile-badge-premium{background:var(--navy);color:var(--white)}.profile-form-group{margin-bottom:.75rem}.profile-form-group label{display:block;font-size:.8125rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.profile-form-group input,.profile-form-group select{width:100%;padding:.625rem .875rem;border:1.5px solid var(--cream-dark);border-radius:var(--radius-pill);font-size:.875rem;font-family:Nunito,sans-serif;color:var(--text-primary);background:var(--white);box-sizing:border-box}.profile-form-group input:focus,.profile-form-group select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px #4bbfb026}.profile-actions{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.profile-delete-link{font-size:.8125rem;font-weight:700;color:var(--rose);text-decoration:none;text-align:center}.profile-delete-link:hover{text-decoration:underline}.profile-message{font-size:.8125rem;padding:.5rem .75rem;border-radius:var(--radius-sm);margin-bottom:.75rem}.profile-message-success{background:var(--teal-light);color:var(--teal-dark);border:1.5px solid rgba(75,191,176,.3)}.profile-message-error{background:var(--rose-light);color:#c0163e;border:1.5px solid rgba(255,107,138,.3)}.delete-account-page{max-width:480px;margin:0 auto;padding:1rem}.delete-account-back{display:inline-flex;align-items:center;gap:.25rem;font-size:.875rem;font-weight:700;color:var(--text-secondary);text-decoration:none;margin-bottom:1rem}.delete-account-back:hover{color:var(--teal-dark)}.delete-account-warning{background:var(--rose-light);border:1.5px solid rgba(255,107,138,.3);border-radius:var(--radius-sm);padding:1rem;margin-bottom:1.25rem}.delete-account-warning h2{font-family:Fredoka One,cursive;font-size:1rem;font-weight:400;color:#c0163e;margin:0 0 .5rem}.delete-account-warning p{font-size:.875rem;color:#c0163e;margin:0 0 .5rem;line-height:1.5}.delete-account-warning p:last-child{margin-bottom:0}.delete-account-options{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.25rem}.delete-account-option{display:flex;align-items:flex-start;gap:.625rem;padding:.875rem 1rem;background:var(--white);border:2px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:border-color .15s}.delete-account-option:has(input:checked){border-color:var(--rose);background:var(--rose-light)}.delete-account-option input[type=radio]{margin-top:.2rem;flex-shrink:0;accent-color:var(--rose)}.delete-account-option strong{display:block;font-size:.875rem;color:var(--text-primary);margin-bottom:.125rem}.delete-account-option span{display:block;font-size:.8125rem;color:var(--text-secondary);line-height:1.4}.delete-account-confirm{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:1.25rem;font-size:.875rem;color:var(--text-primary);line-height:1.4}.delete-account-confirm input[type=checkbox]{margin-top:.2rem;flex-shrink:0;accent-color:var(--rose)}.btn-danger{display:block;width:100%;padding:.75rem 1rem;background:var(--rose);color:var(--white);font-family:Fredoka One,cursive;font-size:.9375rem;font-weight:400;border:none;border-radius:var(--radius-pill);cursor:pointer;transition:background .15s}.btn-danger:hover:not(:disabled){background:#e0456a}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.delete-account-error{background:var(--rose-light);color:#c0163e;border:1.5px solid rgba(255,107,138,.3);font-size:.8125rem;padding:.5rem .75rem;border-radius:var(--radius-sm);margin-bottom:.75rem}.restore-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.restore-modal{background:var(--white);border-radius:24px;padding:1.75rem;max-width:400px;width:100%;text-align:center;box-shadow:var(--shadow-lg)}.restore-modal h2{font-family:Fredoka One,cursive;font-size:1.25rem;font-weight:400;color:var(--text-primary);margin:0 0 .5rem}.restore-modal p{font-size:.875rem;color:var(--text-secondary);margin:0 0 1.25rem;line-height:1.5}.restore-actions{display:flex;flex-direction:column;gap:.5rem}.restore-actions .btn{width:100%}.btn-ghost-danger{display:block;width:100%;padding:.625rem 1rem;background:transparent;color:var(--text-secondary);font-family:Nunito,sans-serif;font-size:.875rem;font-weight:700;border:2px solid var(--cream-dark);border-radius:var(--radius-pill);cursor:pointer}.btn-ghost-danger:hover{background:var(--cream);color:var(--text-primary)}
