.book-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform var(--transition-base),box-shadow var(--transition-base);height:100%;display:flex;flex-direction:column;-webkit-backface-visibility:hidden;backface-visibility:hidden}.book-card:hover{will-change:transform,box-shadow}.book-card:hover{will-change:transform,box-shadow;transform:translateY(-4px) scale(1.01);box-shadow:var(--shadow-lg)}.book-card:not(:hover){will-change:auto}.book-card-image{width:100%;aspect-ratio:3 / 4;overflow:hidden;background-color:var(--color-border-light);position:relative}@supports not (aspect-ratio: 3 / 4){.book-card-image{padding-top:133.33%;position:relative}.book-card-image img{position:absolute;top:0;left:0}}.book-card-image img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.book-card-image.loading{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.book-card-image img{min-height:100%}.book-card-image-error{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:var(--color-border-light);color:var(--color-text-muted);font-size:var(--font-size-3xl)}.book-card-image-error:before{content:"📚"}.book-card-content{padding:var(--spacing-6);flex:1;display:flex;flex-direction:column}.book-card-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-3);color:var(--color-text-primary);line-height:var(--line-height-snug);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:calc(var(--font-size-2xl) * var(--line-height-snug) * 2)}.book-card-description{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-4);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;flex:1;max-height:calc(var(--font-size-base) * var(--line-height-relaxed) * 3)}.book-card-details{border-top:1px solid var(--color-border);padding-top:var(--spacing-4);margin-top:auto}.book-card-details dl{margin:0}.book-card-isbn,.book-card-date,.book-card-sale{font-size:var(--font-size-sm);margin-bottom:var(--spacing-2);color:var(--color-text-secondary);line-height:var(--line-height-normal);display:flex;gap:var(--spacing-1)}.book-card-isbn dt,.book-card-date dt{font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.book-card-isbn dd,.book-card-date dd{margin:0}.book-card-sale{color:var(--color-accent);font-weight:var(--font-weight-medium);margin-top:var(--spacing-2);padding-top:var(--spacing-2);border-top:1px solid var(--color-border-light);display:block}.book-card-sale span{display:block}.book-card-sale:empty{display:none}@media (prefers-reduced-motion: reduce){.book-card:hover{transform:none!important}.book-card-image.loading{animation:none!important;opacity:.85}}.home-page{min-height:100vh;background-color:var(--color-background)}.home-header{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-light) 100%);color:var(--color-surface);padding:var(--spacing-16) var(--spacing-6);text-align:center;box-shadow:var(--shadow-md);animation:fadeIn .6s ease-out}.home-header h1{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);margin-bottom:var(--spacing-3);animation:fadeInUp .8s ease-out}.home-header p{font-size:var(--font-size-xl);font-weight:var(--font-weight-normal);letter-spacing:var(--letter-spacing-wide);opacity:.95;animation:fadeInUp 1s ease-out}.books-grid{min-height:400px}.home-content{max-width:1280px;margin:0 auto;padding:var(--spacing-12) var(--spacing-6)}.books-section h2{font-size:var(--font-size-3xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-tight);margin-bottom:var(--spacing-8);color:var(--color-text-primary);text-align:center}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-8);margin-bottom:var(--spacing-8);animation:fadeIn .6s ease-out}.loading-state,.error-state,.empty-state{text-align:center;padding:var(--spacing-16) var(--spacing-6);animation:fadeIn .4s ease-out}.loading-state{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-4)}.loading-state p{font-size:var(--font-size-lg);color:var(--color-text-secondary);font-weight:var(--font-weight-medium);margin:0}.loading-spinner{display:inline-block;width:48px;height:48px;border:4px solid var(--color-border-light);border-top:4px solid var(--color-accent);border-radius:var(--radius-full);animation:spin .8s linear infinite;will-change:transform}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state{background-color:var(--color-surface);border-radius:var(--radius-lg);padding:var(--spacing-12);box-shadow:var(--shadow-sm);max-width:600px;margin:0 auto}.empty-state p{font-size:var(--font-size-lg);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin:0}.error-state{background-color:var(--color-error-light);border:1px solid var(--color-error-border);border-radius:var(--radius-lg);padding:var(--spacing-8);max-width:600px;margin:0 auto}.error-state p{color:var(--color-error);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);line-height:var(--line-height-relaxed);margin:0}@media (max-width: 767px){.home-header{padding:var(--spacing-12) var(--spacing-4)}.home-header h1{font-size:var(--font-size-3xl)}.home-header p{font-size:var(--font-size-lg)}.home-content{padding:var(--spacing-8) var(--spacing-4)}.books-section h2{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-6)}.books-grid{grid-template-columns:1fr;gap:var(--spacing-6)}.loading-state,.error-state,.empty-state{padding:var(--spacing-12) var(--spacing-4)}}@media (min-width: 768px) and (max-width: 1023px){.home-header{padding:var(--spacing-16) var(--spacing-6)}.home-header h1{font-size:var(--font-size-4xl)}.home-header p{font-size:var(--font-size-xl)}.home-content{padding:var(--spacing-10) var(--spacing-6)}.books-section h2{font-size:var(--font-size-3xl);margin-bottom:var(--spacing-8)}.books-grid{grid-template-columns:repeat(2,1fr);gap:var(--spacing-6)}}@media (min-width: 1024px) and (max-width: 1024px){.books-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.books-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}@media (prefers-reduced-motion: reduce){.home-header,.home-header h1,.home-header p,.books-grid,.loading-state,.error-state,.empty-state{animation:none!important}.loading-spinner{animation:none!important;border-top-color:var(--color-accent);opacity:.7}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-accent) 100%);padding:var(--spacing-8)}.login-container{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--spacing-12);width:100%;max-width:440px;animation:fadeInUp .4s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:var(--spacing-8)}.login-header h1{font-size:var(--font-size-3xl);color:var(--color-text-primary);font-weight:var(--font-weight-bold);margin-bottom:var(--spacing-2);letter-spacing:var(--letter-spacing-tight)}.login-header p{color:var(--color-text-secondary);font-size:var(--font-size-base);line-height:var(--line-height-relaxed)}.login-form{display:flex;flex-direction:column;gap:var(--spacing-6)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-2)}.form-group label{font-weight:var(--font-weight-medium);color:var(--color-text-primary);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wide)}.form-group input{padding:var(--spacing-3) var(--spacing-4);border:2px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-text-primary);background-color:var(--color-surface);transition:all var(--transition-base);min-height:44px}.form-group input::placeholder{color:var(--color-text-muted)}.form-group input:hover{border-color:var(--color-accent)}.form-group input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #5b7c991a}.form-group input:disabled{background-color:var(--color-background);cursor:not-allowed;opacity:.6}.error-message{background-color:#dc35451a;color:var(--color-error);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-md);border-left:4px solid var(--color-error);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.login-button{background:var(--color-accent);color:var(--color-surface);border:none;padding:var(--spacing-4) var(--spacing-6);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-base);box-shadow:var(--shadow-sm);min-height:44px;letter-spacing:var(--letter-spacing-wide)}.login-button:hover:not(:disabled){background:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.login-button:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-sm)}.login-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.login-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.back-link{text-align:center;margin-top:var(--spacing-6)}.back-link a{color:var(--color-accent);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:color var(--transition-fast);display:inline-flex;align-items:center;gap:var(--spacing-1)}.back-link a:hover{color:var(--color-primary);text-decoration:none}.back-link a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}@media (max-width: 768px){.login-page{padding:var(--spacing-4)}.login-container{padding:var(--spacing-8)}.login-header h1{font-size:var(--font-size-2xl)}}@media (prefers-reduced-motion: reduce){.login-container,.error-message{animation:none!important}.login-button:hover:not(:disabled),.login-button:active:not(:disabled){transform:none!important}}.admin-dashboard{min-height:100vh;background-color:var(--color-background)}.admin-header{background:var(--color-surface);box-shadow:var(--shadow-sm);padding:var(--spacing-6) var(--spacing-8);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border-light)}.admin-header h1{font-size:var(--font-size-2xl);color:var(--color-text-primary);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.admin-nav{display:flex;gap:var(--spacing-3);align-items:center}.nav-link{padding:var(--spacing-3) var(--spacing-5);background-color:var(--color-accent);color:var(--color-surface);text-decoration:none;border-radius:var(--radius-md);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);transition:all var(--transition-base);box-shadow:var(--shadow-sm);min-height:44px;display:inline-flex;align-items:center}.nav-link:hover{background-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px);text-decoration:none}.nav-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.logout-button{padding:var(--spacing-3) var(--spacing-5);background-color:var(--color-error);color:var(--color-surface);border:none;border-radius:var(--radius-md);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-base);box-shadow:var(--shadow-sm);min-height:44px}.logout-button:hover{background-color:var(--color-error-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.logout-button:focus-visible{outline:2px solid var(--color-error);outline-offset:2px}.logout-button:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.dashboard-content{max-width:1200px;margin:0 auto;padding:var(--spacing-8)}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-6);margin-bottom:var(--spacing-8)}.metric-card{background:var(--color-surface);padding:var(--spacing-8);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--color-border-light);transition:all var(--transition-base)}.metric-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.metric-card h3{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.1em;font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-3)}.metric-value{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);color:var(--color-accent);line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-tight)}.recent-books{background:var(--color-surface);padding:var(--spacing-8);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--color-border-light);margin-bottom:var(--spacing-8)}.recent-books h2{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-6);color:var(--color-text-primary);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.recent-books-list{display:flex;flex-direction:column;gap:var(--spacing-4);list-style:none;margin:0;padding:0}.recent-book-item{padding:var(--spacing-5);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;justify-content:space-between;align-items:center;transition:all var(--transition-base);background-color:var(--color-surface)}.recent-book-item:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm);transform:translate(4px)}.recent-book-info h4{font-size:var(--font-size-base);color:var(--color-text-primary);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-1)}.recent-book-info p{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.page-views{background:var(--color-surface);padding:var(--spacing-8);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--color-border-light)}.page-views h2{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-6);color:var(--color-text-primary);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.page-views-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--spacing-4)}.page-view-stat{text-align:center;padding:var(--spacing-6);background-color:var(--color-background);border-radius:var(--radius-md);border:1px solid var(--color-border-light);transition:all var(--transition-base)}.page-view-stat:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.page-view-stat .label{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:var(--font-weight-medium);margin-bottom:var(--spacing-2);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide)}.page-view-stat .value{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-accent);line-height:var(--line-height-tight)}.loading-state,.error-state{text-align:center;padding:var(--spacing-12) var(--spacing-8);font-size:var(--font-size-lg);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.error-state{color:var(--color-error)}@media (max-width: 768px){.admin-header{flex-direction:column;gap:var(--spacing-4);padding:var(--spacing-4)}.admin-header h1{font-size:var(--font-size-xl)}.dashboard-content{padding:var(--spacing-4)}.metrics-grid{grid-template-columns:1fr}.metric-card{padding:var(--spacing-6)}.metric-value{font-size:var(--font-size-3xl)}.recent-books,.page-views{padding:var(--spacing-6)}.page-views-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.nav-link:hover,.logout-button:hover,.logout-button:active,.metric-card:hover,.recent-book-item:hover{transform:none!important}}.book-manager{min-height:100vh;background-color:var(--color-background)}.manager-header{background:var(--color-surface);box-shadow:var(--shadow-sm);padding:var(--spacing-6) var(--spacing-8);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border-light)}.manager-header h1{font-size:var(--font-size-2xl);color:var(--color-text-primary);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.header-actions{display:flex;gap:var(--spacing-3);align-items:center}.back-link-btn{padding:var(--spacing-3) var(--spacing-5);background-color:var(--color-text-secondary);color:var(--color-surface);text-decoration:none;border-radius:var(--radius-md);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);transition:all var(--transition-base);box-shadow:var(--shadow-sm);min-height:44px;display:inline-flex;align-items:center}.back-link-btn:hover{background-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px);text-decoration:none}.back-link-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.manager-content{max-width:1200px;margin:0 auto;padding:var(--spacing-8)}.add-book-section{background:var(--color-surface);padding:var(--spacing-8);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--color-border-light);margin-bottom:var(--spacing-8)}.add-book-section h2{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-6);color:var(--color-text-primary);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.book-form{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-6)}.form-group-full{grid-column:1 / -1}.form-group label{display:block;font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:var(--spacing-2);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wide)}.form-group input,.form-group textarea{width:100%;padding:var(--spacing-3) var(--spacing-4);border:2px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:inherit;color:var(--color-text-primary);background-color:var(--color-surface);transition:all var(--transition-base);min-height:44px}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--color-text-muted)}.form-group input:hover,.form-group textarea:hover{border-color:var(--color-accent)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #5b7c991a}.form-group textarea{resize:vertical;min-height:120px;line-height:var(--line-height-relaxed)}.form-group input[type=file]{padding:var(--spacing-2) var(--spacing-3);cursor:pointer}.form-group input[type=file]::-webkit-file-upload-button{padding:var(--spacing-2) var(--spacing-4);background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);transition:all var(--transition-fast)}.form-group input[type=file]::-webkit-file-upload-button:hover{background-color:var(--color-accent);color:var(--color-surface);border-color:var(--color-accent)}.form-help{display:block;color:var(--color-text-muted);font-size:var(--font-size-xs);margin-top:var(--spacing-1);line-height:var(--line-height-normal)}.form-error{color:var(--color-error);font-size:var(--font-size-sm);margin-top:var(--spacing-1);display:flex;align-items:center;gap:var(--spacing-1)}.form-actions{grid-column:1 / -1;display:flex;gap:var(--spacing-3);justify-content:flex-end;margin-top:var(--spacing-4)}.btn{padding:var(--spacing-3) var(--spacing-6);border:none;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-base);box-shadow:var(--shadow-sm);min-height:44px;letter-spacing:var(--letter-spacing-wide)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background-color:var(--color-accent);color:var(--color-surface)}.btn-primary:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-sm)}.btn-secondary{background-color:var(--color-text-secondary);color:var(--color-surface)}.btn-secondary:hover:not(:disabled){background-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-secondary:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-sm)}.btn-secondary:focus-visible{outline:2px solid var(--color-text-secondary);outline-offset:2px}.books-list-section{background:var(--color-surface);padding:var(--spacing-8);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--color-border-light)}.books-list-section h2{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-6);color:var(--color-text-primary);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.books-table{width:100%;border-collapse:collapse;border-spacing:0}.books-table th,.books-table td{padding:var(--spacing-4) var(--spacing-3);text-align:left;border-bottom:1px solid var(--color-border-light)}.books-table th{background-color:var(--color-background);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide)}.books-table tbody tr{transition:all var(--transition-fast)}.books-table tbody tr:hover{background-color:var(--color-background)}.books-table td{color:var(--color-text-primary);font-size:var(--font-size-sm)}.book-cover-thumb{width:50px;height:70px;object-fit:cover;border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.book-actions{display:flex;gap:var(--spacing-2)}.btn-edit{padding:var(--spacing-2) var(--spacing-4);background-color:var(--color-warning);color:var(--color-text-primary);border:none;border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base);min-height:36px}.btn-edit:hover{background-color:var(--color-warning-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn-edit:focus-visible{outline:2px solid var(--color-warning);outline-offset:2px}.btn-delete{padding:var(--spacing-2) var(--spacing-4);background-color:var(--color-error);color:var(--color-surface);border:none;border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base);min-height:36px}.btn-delete:hover{background-color:var(--color-error-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn-delete:focus-visible{outline:2px solid var(--color-error);outline-offset:2px}.message{padding:var(--spacing-4) var(--spacing-5);border-radius:var(--radius-md);margin-bottom:var(--spacing-6);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.message-success{background-color:#28a7451a;color:var(--color-success);border-left:4px solid var(--color-success)}.message-error{background-color:#dc35451a;color:var(--color-error);border-left:4px solid var(--color-error)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#1a233299;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-backdrop);animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--color-surface);padding:var(--spacing-8);border-radius:var(--radius-lg);max-width:480px;width:90%;box-shadow:var(--shadow-xl);animation:scaleIn .3s ease-out;z-index:var(--z-modal)}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-content h3{margin-bottom:var(--spacing-4);color:var(--color-text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.modal-content p{margin-bottom:var(--spacing-6);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.modal-actions{display:flex;gap:var(--spacing-3);justify-content:flex-end}@media (max-width: 768px){.manager-header{flex-direction:column;gap:var(--spacing-4);padding:var(--spacing-4)}.manager-header h1{font-size:var(--font-size-xl)}.manager-content{padding:var(--spacing-4)}.add-book-section,.books-list-section{padding:var(--spacing-6)}.book-form{grid-template-columns:1fr}.books-table{font-size:var(--font-size-xs)}.books-table th,.books-table td{padding:var(--spacing-2)}.book-cover-thumb{width:40px;height:56px}.book-actions{flex-direction:column;gap:var(--spacing-1)}.btn-edit,.btn-delete{width:100%}}@media (prefers-reduced-motion: reduce){.back-link-btn:hover,.btn-primary:hover:not(:disabled),.btn-primary:active:not(:disabled),.btn-secondary:hover:not(:disabled),.btn-secondary:active:not(:disabled),.btn-edit:hover,.btn-delete:hover{transform:none!important}.message,.modal-overlay,.modal-content{animation:none!important}}:root{--color-primary: #1a2332;--color-secondary: #c17c4a;--color-accent: #5b7c99;--color-background: #fafbfc;--color-surface: #ffffff;--color-text-primary: #1a2332;--color-text-secondary: #5f6c7b;--color-text-muted: #8b95a1;--color-border: #e1e4e8;--color-border-light: #f0f2f4;--color-success: #28a745;--color-success-hover: #218838;--color-error: #dc3545;--color-error-hover: #c82333;--color-error-light: #fef2f2;--color-error-border: #fecaca;--color-warning: #ffc107;--color-warning-hover: #e0a800;--color-info: #17a2b8;--color-primary-light: #2d3e50;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-snug: 1.3;--line-height-normal: 1.5;--line-height-relaxed: 1.6;--line-height-loose: 1.8;--letter-spacing-tight: -.025em;--letter-spacing-normal: 0;--letter-spacing-wide: .025em;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-8: 2rem;--spacing-10: 2.5rem;--spacing-12: 3rem;--spacing-16: 4rem;--spacing-20: 5rem;--spacing-24: 6rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--transition-fast: .15s ease-out;--transition-base: .25s ease-out;--transition-slow: .35s ease-out;--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-background);min-height:100vh}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text-primary);margin-bottom:var(--spacing-4)}h1{font-size:var(--font-size-4xl);letter-spacing:var(--letter-spacing-tight)}h2{font-size:var(--font-size-3xl);letter-spacing:var(--letter-spacing-tight)}h3{font-size:var(--font-size-2xl)}h4{font-size:var(--font-size-xl)}h5{font-size:var(--font-size-lg)}h6{font-size:var(--font-size-base)}p{margin-bottom:var(--spacing-4);line-height:var(--line-height-relaxed)}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}strong,b{font-weight:var(--font-weight-semibold)}small{font-size:var(--font-size-sm)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.text-accent{color:var(--color-accent)}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.mt-1{margin-top:var(--spacing-1)}.mt-2{margin-top:var(--spacing-2)}.mt-3{margin-top:var(--spacing-3)}.mt-4{margin-top:var(--spacing-4)}.mt-6{margin-top:var(--spacing-6)}.mt-8{margin-top:var(--spacing-8)}.mb-1{margin-bottom:var(--spacing-1)}.mb-2{margin-bottom:var(--spacing-2)}.mb-3{margin-bottom:var(--spacing-3)}.mb-4{margin-bottom:var(--spacing-4)}.mb-6{margin-bottom:var(--spacing-6)}.mb-8{margin-bottom:var(--spacing-8)}.ml-1{margin-left:var(--spacing-1)}.ml-2{margin-left:var(--spacing-2)}.ml-3{margin-left:var(--spacing-3)}.ml-4{margin-left:var(--spacing-4)}.mr-1{margin-right:var(--spacing-1)}.mr-2{margin-right:var(--spacing-2)}.mr-3{margin-right:var(--spacing-3)}.mr-4{margin-right:var(--spacing-4)}.mx-auto{margin-left:auto;margin-right:auto}.p-1{padding:var(--spacing-1)}.p-2{padding:var(--spacing-2)}.p-3{padding:var(--spacing-3)}.p-4{padding:var(--spacing-4)}.p-6{padding:var(--spacing-6)}.p-8{padding:var(--spacing-8)}.px-2{padding-left:var(--spacing-2);padding-right:var(--spacing-2)}.px-3{padding-left:var(--spacing-3);padding-right:var(--spacing-3)}.px-4{padding-left:var(--spacing-4);padding-right:var(--spacing-4)}.px-6{padding-left:var(--spacing-6);padding-right:var(--spacing-6)}.py-2{padding-top:var(--spacing-2);padding-bottom:var(--spacing-2)}.py-3{padding-top:var(--spacing-3);padding-bottom:var(--spacing-3)}.py-4{padding-top:var(--spacing-4);padding-bottom:var(--spacing-4)}.py-6{padding-top:var(--spacing-6);padding-bottom:var(--spacing-6)}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.gap-2{gap:var(--spacing-2)}.gap-3{gap:var(--spacing-3)}.gap-4{gap:var(--spacing-4)}.gap-6{gap:var(--spacing-6)}.w-full{width:100%}.max-w-sm{max-width:640px}.max-w-md{max-width:768px}.max-w-lg{max-width:1024px}.max-w-xl{max-width:1280px}.max-w-2xl{max-width:1536px}.rounded-sm{border-radius:var(--radius-sm)}.rounded{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-full{border-radius:var(--radius-full)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.transition{transition:all var(--transition-base)}.transition-fast{transition:all var(--transition-fast)}.transition-slow{transition:all var(--transition-slow)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-3) var(--spacing-6);border:2px solid transparent;border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);font-family:inherit;line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-wide);text-decoration:none;cursor:pointer;transition:all var(--transition-base);min-height:44px;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.btn-primary{background-color:var(--color-accent);color:var(--color-surface);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0) scale(.98);box-shadow:var(--shadow-sm)}.btn-primary:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn-secondary{background-color:transparent;color:var(--color-accent);border-color:var(--color-accent)}.btn-secondary:hover:not(:disabled){background-color:var(--color-accent);color:var(--color-surface);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn-secondary:active:not(:disabled){transform:translateY(0) scale(.98)}.btn-secondary:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn-ghost{background-color:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background-color:var(--color-background);color:var(--color-text-primary);transform:translateY(-1px)}.btn-ghost:active:not(:disabled){transform:translateY(0) scale(.98)}.btn-ghost:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn-danger{background-color:var(--color-error);color:var(--color-surface);box-shadow:var(--shadow-sm)}.btn-danger:hover:not(:disabled){background-color:var(--color-error-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-danger:active:not(:disabled){transform:translateY(0) scale(.98);box-shadow:var(--shadow-sm)}.btn-danger:focus-visible{outline:2px solid var(--color-error);outline-offset:2px}.btn-success{background-color:var(--color-success);color:var(--color-surface);box-shadow:var(--shadow-sm)}.btn-success:hover:not(:disabled){background-color:var(--color-success-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-success:active:not(:disabled){transform:translateY(0) scale(.98);box-shadow:var(--shadow-sm)}.btn-success:focus-visible{outline:2px solid var(--color-success);outline-offset:2px}.btn-warning{background-color:var(--color-warning);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}.btn-warning:hover:not(:disabled){background-color:var(--color-warning-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-warning:active:not(:disabled){transform:translateY(0) scale(.98);box-shadow:var(--shadow-sm)}.btn-warning:focus-visible{outline:2px solid var(--color-warning);outline-offset:2px}.btn-sm{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm);min-height:36px}.btn-lg{padding:var(--spacing-4) var(--spacing-8);font-size:var(--font-size-lg);min-height:52px}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none;transform:none}.btn-block{width:100%;display:flex}input[type=text],input[type=email],input[type=password],input[type=number],input[type=tel],input[type=url],input[type=search],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],select,textarea{width:100%;padding:var(--spacing-3) var(--spacing-4);border:2px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:inherit;line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-surface);transition:all var(--transition-base);min-height:44px}input::placeholder,textarea::placeholder{color:var(--color-text-muted);opacity:1}input[type=text]:hover:not(:disabled),input[type=email]:hover:not(:disabled),input[type=password]:hover:not(:disabled),input[type=number]:hover:not(:disabled),input[type=tel]:hover:not(:disabled),input[type=url]:hover:not(:disabled),input[type=search]:hover:not(:disabled),input[type=date]:hover:not(:disabled),input[type=datetime-local]:hover:not(:disabled),input[type=month]:hover:not(:disabled),input[type=week]:hover:not(:disabled),input[type=time]:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--color-accent)}input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,input[type=number]:focus,input[type=tel]:focus,input[type=url]:focus,input[type=search]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=month]:focus,input[type=week]:focus,input[type=time]:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #5b7c991a}input.error,select.error,textarea.error,input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--color-error)}input.error:focus,select.error:focus,textarea.error:focus,input[aria-invalid=true]:focus,select[aria-invalid=true]:focus,textarea[aria-invalid=true]:focus{box-shadow:0 0 0 3px #dc35451a}input.success,select.success,textarea.success{border-color:var(--color-success)}input.success:focus,select.success:focus,textarea.success:focus{box-shadow:0 0 0 3px #28a7451a}input:disabled,select:disabled,textarea:disabled{background-color:var(--color-background);color:var(--color-text-muted);cursor:not-allowed;opacity:.6}textarea{resize:vertical;min-height:120px;line-height:var(--line-height-relaxed)}select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%235f6c7b' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--spacing-3) center;padding-right:var(--spacing-8)}select::-moz-focus-inner{border:0;padding:0}select::-ms-expand{display:none}input[type=checkbox],input[type=radio]{width:auto;min-height:auto;cursor:pointer;margin-right:var(--spacing-2)}input[type=file]{padding:var(--spacing-2) var(--spacing-3);cursor:pointer}input[type=file]::-webkit-file-upload-button{padding:var(--spacing-2) var(--spacing-4);background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);transition:all var(--transition-fast);color:var(--color-text-primary)}input[type=file]::-webkit-file-upload-button:hover{background-color:var(--color-accent);color:var(--color-surface);border-color:var(--color-accent)}label{display:block;font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:var(--spacing-2);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wide)}.form-group{margin-bottom:var(--spacing-6)}.form-error,.error-message{color:var(--color-error);font-size:var(--font-size-sm);margin-top:var(--spacing-1);display:flex;align-items:center;gap:var(--spacing-1)}.form-help{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-top:var(--spacing-1)}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast);cursor:pointer}a:hover{color:var(--color-primary);text-decoration:underline}a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}a:active{color:var(--color-primary)}.link-primary{color:var(--color-accent)}.link-primary:hover{color:var(--color-primary)}.link-secondary{color:var(--color-text-secondary)}.link-secondary:hover{color:var(--color-text-primary)}.link-muted{color:var(--color-text-muted)}.link-muted:hover{color:var(--color-text-secondary)}.link-underline{text-decoration:underline}.link-underline:hover,.link-no-underline:hover{text-decoration:none}.interactive{cursor:pointer;transition:color var(--transition-fast)}.interactive:hover{color:var(--color-accent)}button,[role=button],[type=button],[type=submit],[type=reset],select,[tabindex]:not([tabindex="-1"]){cursor:pointer}button:disabled,[role=button][aria-disabled=true],[type=button]:disabled,[type=submit]:disabled,[type=reset]:disabled{cursor:not-allowed}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.book-card:hover{transform:none!important}.btn:hover:not(:disabled),.btn:active:not(:disabled){transform:none!important}.home-header,.home-header h1,.home-header p,.books-grid,.loading-state,.error-state,.empty-state{animation:none!important}}
