*{box-sizing:border-box;margin:0;padding:0}body{padding:40px;background-color:#296a2d;font-family:Franklin Gothic Medium,Arial Narrow,Arial,sans-serif}h2{color:#f3f3f3;text-align:center;margin-bottom:30px;font-size:48px}.skip-link{position:absolute;left:-9999px;top:0;background:#fff;padding:.5rem .75rem;border:2px solid #000;border-radius:.5rem;z-index:1000}.skip-link:focus,.skip-link:focus-visible{left:1rem;top:1rem}:focus-visible{outline:3px solid currentColor;outline-offset:3px}.site-footer{margin-top:24px;padding:16px;background:#296a2d;color:#fff;border-top:1px solid rgba(255,255,255,.25)}.site-footer .footer-links{display:flex;gap:12px;justify-content:center;align-items:center;flex-wrap:wrap}.site-footer a{color:#fff;text-decoration:underline}.site-footer a:hover,.site-footer a:focus-visible{text-decoration-thickness:2px}.site-footer .sep{color:#fff;opacity:.7}a.book-card,a.book-card:link,a.book-card:visited,a.book-card:hover,a.book-card:focus{color:var(--ink-dark);text-decoration:none}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.title{color:#f3f3f3;text-align:center;margin-bottom:30px;font-size:48px;font-family:cursive}.book-grid{display:flex;flex-wrap:wrap;gap:20px;justify-content:center;padding:20px}.book-card{width:180px;border:1px solid #ccc;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;background-color:#fff;transition:transform .2s}.book-card:hover{transform:scale(1.03)}.book-cover{width:100%;height:250px;object-fit:cover}.book-info{padding:12px;text-align:center}.book-info h3{font-size:1rem;margin:0 0 6px}.book-info p{font-size:.9rem;color:#666;margin:0}.filter-trigger{padding:8px 12px;border-radius:12px;border:1px solid #ddd;background:#fff;color:#000;font-weight:600;cursor:pointer}.filter-trigger:focus-visible{outline:3px solid currentColor;outline-offset:3px}.filter-trigger--green{background:#296a2d;color:#fff;border:1px solid rgba(255,255,255,.35)}.filter-group{border:1px solid #eee;border-radius:10px;padding:8px 10px;margin-bottom:12px}.filter-group legend{font-weight:600;padding:0 4px}.filter-option{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.book-card:focus-visible,.pagination button:focus-visible,.filter-trigger:focus-visible,input:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.btn{min-height:44px;padding:8px 14px;border-radius:12px;font-weight:600;cursor:pointer;transition:background .15s ease,box-shadow .15s ease}.btn--green{background:var(--app-green);color:#fff;border:2px solid #fff}.btn--green.onLight{border-color:var(--ink-dark)}.btn--green.onDark{border-color:#fff}.btn--green:hover{background:#144a19}.btn--green:focus-visible{outline:3px solid #fff;outline-offset:2px}.btn:disabled{opacity:.6;cursor:not-allowed}.book-card .book-info h3,.book-card .book-info p{color:var(--ink-dark)}.book-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding-bottom:6px}.book-detail{display:flex;flex-wrap:wrap;padding:40px;gap:40px;background-color:#f7f7f7}.book-detail-cover img{width:250px;height:auto;border-radius:12px;box-shadow:0 4px 12px #0003}.book-detail-info{flex:1;min-width:300px}.book-detail-info h2{margin-top:0;color:#000}.book-detail-info p{margin:10px 0;line-height:1.5}.review-section{margin-top:40px;background-color:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000001a}.review{border-bottom:1px solid #eee;padding:15px 0}.review:last-child{border-bottom:none}.review p{margin:0;font-style:italic;color:#333}.interaction-section{margin-top:30px;padding:20px;background-color:#fafafa;border:1px solid #ddd;border-radius:10px}.interaction-section textarea{width:100%;padding:10px;border-radius:8px;border:1px solid #ccc;resize:vertical;margin-bottom:10px;font-size:14px}button{margin-top:10px;margin-right:10px;padding:8px 14px;border:none;border-radius:8px;background-color:#07c;color:#fff;cursor:pointer;font-weight:700}button:hover{background-color:#005fa3}.rating-block{text-align:center}.star-rating{display:flex;flex-direction:row-reverse;justify-content:center;font-size:24px;margin-top:8px}.star-rating input{position:absolute;opacity:0;width:1px;height:1px;margin:0;padding:0}.star-rating label{color:#ccc;cursor:pointer}.star-rating input:checked~label,.star-rating label:hover,.star-rating label:hover~label{color:#ffc107}.save-hint{display:block;margin-top:6px;opacity:.75}.save-hint.error{color:#c00;opacity:1}.login-container{max-width:400px;margin:100px auto;padding:30px;border-radius:12px;box-shadow:0 0 20px #0000001a;background-color:#fff}.login-form{display:flex;flex-direction:column;gap:15px}input{padding:10px;font-size:1rem}button{padding:10px;background-color:#296a2d;color:#fff;border:none;font-weight:700;cursor:pointer}.error{color:red;font-size:.9rem}.signup-container{max-width:450px;margin:100px auto;padding:30px;border-radius:12px;box-shadow:0 0 20px #0000001a;background-color:#fff;font-family:sans-serif}.signup-container h2{text-align:center;margin-bottom:25px;color:#296a2d}.signup-form{display:flex;flex-direction:column;gap:15px}.signup-form input{padding:10px;font-size:1rem;border:1px solid #ccc;border-radius:6px}.signup-form button{padding:10px;background-color:#296a2d;color:#fff;border:none;border-radius:6px;font-weight:700;font-size:1rem;cursor:pointer;transition:background-color .2s ease}.signup-form button:hover{background-color:#296a2d}.error{color:red;font-size:.9rem;margin:-10px 0 0}.success{color:green;font-size:.9rem;margin:-10px 0 0}.navbar{background-color:#333;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.navbar-logo{font-size:1.5rem;font-weight:700;margin:0}.navbar-links{display:flex;gap:1.5rem}.navbar-links a{color:#fff;text-decoration:none;font-weight:500;transition:color .2s ease}.navbar-links a:hover{color:#fc0}.nav-link{color:#fff;margin:0 1rem;text-decoration:none;font-weight:700;font-size:1.1rem}.nav-link:hover{text-decoration:underline}.library-book{display:flex;gap:1.5rem;padding:1rem;margin-bottom:1.5rem;border:white;border-radius:8px;background-color:#fff;align-items:flex-start;position:relative}.book-cover-column{flex-shrink:0}.library-book-cover{width:60px;height:auto;object-fit:cover;border:1px solid #444;border-radius:4px}.book-info-column{flex:1;display:flex;flex-direction:column;gap:.5rem}.book-row{display:grid;grid-template-columns:repeat(6,1fr);gap:1rem}.book-labels{font-weight:700;font-size:.9rem;color:#333}.write-review-btn{background-color:#07c;color:#fff;border:none;padding:5px 10px;border-radius:5px;cursor:pointer}.write-review-btn:hover{background-color:#005fa3}progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:10px;overflow:hidden}progress::-webkit-progress-bar{background-color:#eee}progress::-webkit-progress-value{background-color:#07c}.delete-button{position:absolute;bottom:10px;right:10px;cursor:pointer;font-size:18px;color:#a00;transition:transform .2s ease}.delete-button:hover{transform:scale(1.2)}.upload-form{max-width:1000px;margin:2rem auto;padding:2rem;background-color:#fdfdfd;border:1px solid #ccc;border-radius:12px;font-family:sans-serif}.upload-form h2{text-align:center;margin-bottom:2rem;font-size:1.8rem;color:#333}.upload-grid{display:grid;grid-template-columns:300px 1fr;grid-template-areas:"cover form" "description description";gap:2rem}.cover-upload{grid-area:cover;display:flex;flex-direction:column;align-items:center}.cover-upload input{margin-top:1rem}.upload-fields{grid-area:form;display:grid;grid-template-columns:1fr 1fr;gap:1rem}.upload-fields input,.upload-fields select{padding:.5rem;font-size:1rem;border-radius:6px;border:1px solid #bbb;background-color:#fff}.description-area{grid-area:description}.description-area textarea{width:100%;height:150px;padding:.75rem;font-size:1rem;border-radius:6px;border:1px solid #bbb;resize:vertical}.upload-form button{margin-top:2rem;padding:.75rem 1.5rem;font-size:1rem;border-radius:6px;background-color:#296a2d;color:#fff;border:none;cursor:pointer;transition:background-color .2s ease-in-out}.upload-form button:hover{background-color:#296a2d}.genre-select{font-size:1rem}
