:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-text-main:#1e293b;--color-text-sub:#64748b;--color-text-body:#334155;--color-bg:#f5f7fb;--color-bg-light:#f1f5f9;--color-white:#fff;--color-border:#e5e7eb;--color-gray-btn:#e2e8f0;--color-gray-btn-hover:#cbd5e1;--color-danger:#dc2626;--color-danger-bg:#fee2e2}*{box-sizing:border-box}body{background-color:var(--color-bg);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.navbar{background-color:var(--color-white);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;width:100%;height:72px;padding:0 40px;display:flex;box-shadow:0 4px 12px #0f172a0a}.header{color:var(--color-text-main);margin:0;font-size:28px;font-weight:800}.nav-menu{align-items:center;gap:12px;display:flex}.home,.list-header,.addBook{background-color:var(--color-bg-light);color:var(--color-text-body);cursor:pointer;border:none;border-radius:10px;padding:10px 16px;font-size:15px;font-weight:600;transition:all .2s}.home:hover,.list-header:hover,.addBook:hover{background-color:#dbeafe;transform:translateY(-1px)}.addBook{background-color:var(--color-primary);color:var(--color-white)}.addBook:hover{background-color:var(--color-primary-hover)}.home-container{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 72px);padding:24px;display:flex}.main-title{color:var(--color-text-main);margin:0;font-size:48px;font-weight:800;line-height:1.3}.sub-title{color:var(--color-text-sub);margin-top:20px;margin-bottom:40px;font-size:18px;line-height:1.6}.btn-list{background-color:var(--color-primary);color:var(--color-white);cursor:pointer;border:none;border-radius:12px;padding:14px 24px;font-size:16px;font-weight:700;transition:all .2s}.btn-list:hover{background-color:var(--color-primary-hover);transform:translateY(-2px)}.modal-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a59;justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:fixed;top:0;left:0}.form-box{background-color:var(--color-white);border-radius:24px;width:720px;padding:48px;box-shadow:0 10px 30px #0f172a14}.input-author{border:1px solid var(--color-border);border-radius:14px;outline:none;width:100%;height:56px;margin-bottom:24px;padding:16px;font-size:16px;transition:all .2s}.input-author:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #2563eb1f}.input-title::placeholder,.input-author::placeholder,.input-content::placeholder{color:#888;font-family:sans-serif;font-size:18px}.edit-container{background-color:var(--color-white);border-radius:24px;max-width:720px;margin:80px auto;padding:48px;box-shadow:0 10px 30px #0f172a14}.page-title{color:var(--color-text-main);text-align:center;margin-bottom:36px;font-size:36px;font-weight:800}.input-group{margin-bottom:24px}.input-title,.input-content{border:1px solid var(--color-border);border-radius:14px;outline:none;width:100%;padding:16px;font-family:sans-serif;font-size:16px;transition:all .2s}.input-title:focus,.input-content:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #2563eb1f}.input-title{height:56px}.input-content{resize:none;min-height:220px}.btn-submit,.btn-editcover,.btn-cancel{cursor:pointer;border:none;border-radius:12px;padding:14px 24px;font-size:16px;font-weight:700;transition:all .2s}.btn-editcover{background-color:var(--color-white);color:var(--color-primary);border:1px solid var(--color-primary)}.btn-editcover:hover{background-color:var(--color-bg-light)}.btn-submit{background-color:var(--color-primary);color:var(--color-white)}.btn-submit:hover{background-color:var(--color-primary-hover)}.btn-cancel{background-color:var(--color-gray-btn);color:var(--color-text-body)}.btn-cancel:hover{background-color:var(--color-gray-btn-hover)}.edit-cover-section{justify-content:center;margin-bottom:24px;display:flex}.edit-cover-section .book-cover-empty{justify-content:center;align-items:center;display:flex}.book-list-page{max-width:960px;margin:0 auto;padding:32px 20px}.book-list-header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.header-actions{align-items:center;gap:12px;display:flex}.book-list-header h1{color:var(--color-text-main);margin:0;font-size:28px;font-weight:700}.book-list{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.status-message{text-align:center;color:var(--color-text-sub);padding:40px;font-size:16px}.status-message--error{color:var(--color-danger)}.search-input{border:1px solid var(--color-border);background-color:var(--color-white);width:260px;height:44px;color:var(--color-text-main);border-radius:10px;outline:none;padding:0 14px;font-size:14px;transition:all .2s}.search-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #2563eb1f}.search-input::placeholder{color:#94a3b8}.book-card{border:1px solid var(--color-border);background:var(--color-white);border-radius:10px;align-items:flex-start;gap:20px;padding:20px;transition:box-shadow .2s;display:flex}.book-card:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.card-cover{object-fit:cover;border-radius:6px;flex-shrink:0;width:90px;height:120px}.card-cover--empty{background:var(--color-white);color:var(--color-text-sub);justify-content:center;align-items:center;font-size:13px;display:flex}.card-info{text-align:left;flex:1}.card-title{color:var(--color-text-main);margin:0 0 6px;font-size:18px;font-weight:600}.card-author{color:var(--color-text-sub);margin:0 0 8px;font-size:14px}.card-content{color:var(--color-text-sub);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:14px;line-height:1.6;display:-webkit-box;overflow:hidden}.card-buttons{flex-direction:column;flex-shrink:0;gap:8px;display:flex}.btn-primary{background:var(--color-primary);color:var(--color-white);cursor:pointer;border:none;border-radius:8px;padding:10px 20px;font-size:15px;font-weight:600;transition:opacity .2s}.btn-primary:hover{opacity:.85}.btn-edit{border:1px solid var(--color-border);background:var(--color-white);color:var(--color-text-main);cursor:pointer;border-radius:6px;padding:8px 16px;font-size:14px;transition:background .2s}.btn-edit:hover{background:var(--color-bg-light)}.btn-delete{background:var(--color-white);color:var(--color-danger);cursor:pointer;border:1px solid #fca5a5;border-radius:6px;padding:8px 16px;font-size:14px;transition:background .2s}.btn-delete:hover{background:var(--color-danger-bg)}.login-btn{background-color:var(--color-primary);color:var(--color-white);cursor:pointer;border:none;border-radius:10px;padding:10px 16px;font-size:15px;font-weight:600;transition:all .2s}.login-btn:hover{background-color:var(--color-primary-hover);transform:translateY(-1px)}.login-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;background:#0f172a59;justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:fixed;top:0;left:0}.login-modal{background-color:var(--color-white);text-align:center;border-radius:24px;width:480px;padding:48px;box-shadow:0 10px 30px #0f172a14}.login-modal h2{color:var(--color-text-main);margin-top:0;margin-bottom:32px;font-size:28px;font-weight:800}.login-form{flex-direction:column;display:flex}.input-login{border:1px solid var(--color-border);box-sizing:border-box;border-radius:14px;outline:none;width:100%;height:56px;margin-bottom:24px;padding:16px;font-family:sans-serif;font-size:16px;transition:all .2s}.input-login:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #2563eb1f}.input-login::placeholder{color:#888;font-family:sans-serif;font-size:18px}.login-button-group{justify-content:center;gap:16px;margin-top:12px;display:flex}.login-submit-btn,.login-cancel-btn{cursor:pointer;border:none;border-radius:12px;flex:1;padding:14px 24px;font-size:16px;font-weight:700;transition:all .2s}.login-submit-btn{background-color:var(--color-primary);color:var(--color-white)}.login-submit-btn:hover{background-color:var(--color-primary-hover)}.login-cancel-btn{background-color:var(--color-gray-btn);color:var(--color-text-body)}.login-cancel-btn:hover{background-color:var(--color-gray-btn-hover)}.signup-btn{width:100%;color:var(--color-text-sub);cursor:pointer;text-underline-offset:4px;background-color:#0000;border:none;margin-top:20px;font-size:14px;font-weight:600;text-decoration:underline;transition:all .2s}.signup-btn:hover{color:var(--color-primary)}.signup-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;background:#0f172a59;justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:fixed;top:0;left:0}.signup-modal{background-color:var(--color-white);text-align:center;border-radius:24px;width:480px;padding:48px;box-shadow:0 10px 30px #0f172a14}.signup-modal h2{color:var(--color-text-main);margin-top:0;margin-bottom:32px;font-size:28px;font-weight:800}.signup-form{flex-direction:column;display:flex}.signup-input-group{margin-bottom:24px}.signup-input-group label{color:var(--color-text-main);margin-bottom:8px;font-size:14px;font-weight:600;display:block}.signup-input{border:1px solid var(--color-border);box-sizing:border-box;border-radius:14px;outline:none;width:100%;height:56px;padding:16px;font-family:sans-serif;font-size:16px;transition:all .2s}.signup-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #2563eb1f}.signup-input::placeholder{color:#888;font-family:sans-serif;font-size:18px}.signup-button-group{justify-content:center;gap:16px;margin-top:12px;display:flex}.signup-btn-submit,.signup-btn-cancel{cursor:pointer;border:none;border-radius:12px;flex:1;padding:14px 24px;font-size:16px;font-weight:700;transition:all .2s}.signup-btn-submit{background-color:var(--color-primary);color:var(--color-white)}.signup-btn-submit:hover{background-color:var(--color-primary-hover)}.signup-btn-cancel{background-color:var(--color-gray-btn);color:var(--color-text-body)}.signup-btn-cancel:hover{background-color:var(--color-gray-btn-hover)}.detail-page{background-color:#fff;border-radius:24px;width:calc(100% - 120px);max-width:980px;margin:72px auto;padding:56px;box-shadow:0 10px 30px #0f172a14}.book-title{color:#1e293b;margin:0 0 24px;font-size:40px;font-weight:800}.book-author{color:#64748b;margin-top:-12px;margin-bottom:24px;font-size:16px;font-weight:600}.book-cover-empty{color:#64748b;background-color:#f8fafc;border-radius:16px;justify-content:center;align-items:center;width:250px;height:350px;margin:24px auto 48px;display:flex;box-shadow:0 10px 24px #0f172a29}.book-cover{object-fit:cover;border-radius:16px;width:250px;height:350px;box-shadow:0 10px 24px #0f172a29}.book-content{color:#475569;font-size:16px;line-height:1.8}.createdAt,.updatedAt{color:#64748b;margin:0;font-size:14px}.like-section{align-items:center;gap:10px;margin-top:80px;display:flex}.like-btn{cursor:pointer;border:none;border-radius:8px;padding:8px 14px}.comment-section{margin-top:30px}.comment-input-box{gap:8px;margin-bottom:15px;display:flex}.comment-input-box input{flex:1;padding:10px}.comment-input-box button{cursor:pointer;padding:10px 16px}.comment-list{padding:0;list-style:none}.comment-item{border-bottom:1px solid #ddd;justify-content:space-between;align-items:center;padding:10px;display:flex}.comment-delete-btn{color:#dc2626;cursor:pointer;background-color:#fee2e2;border:none;border-radius:6px;margin-left:20px;padding:6px 10px}.detail-back-btn{color:#334155;cursor:pointer;background-color:#e2e8f0;border:none;border-radius:10px;margin-top:36px;padding:12px 18px;font-size:15px;font-weight:700;transition:all .2s}.detail-back-btn:hover{background-color:#cbd5e1}.generate-cover-section{background:#fff;border-radius:24px;max-width:720px;margin:70px auto;padding:48px;box-shadow:0 10px 30px #0f172a14}.generate-cover-section h3{margin-bottom:28px;font-size:24px;font-weight:800}.generate-cover-section label{margin:18px 0 8px;font-weight:600;display:block}.input-apikey,.select-model,.select-quality,.select-style,.input-prompt{border:1px solid #cbd5e1;border-radius:10px;width:100%;padding:14px;font-size:15px}.input-prompt{resize:vertical;min-height:120px}.button-group{justify-content:center;gap:12px;margin-top:32px;display:flex}.generator-btn{color:#fff;cursor:pointer;background-color:#2563eb;border:none;border-radius:10px;padding:12px 20px;font-size:15px;font-weight:700}.secondary-btn{background-color:#64748b}.generated-images-section{margin-top:36px}.image-list{flex-wrap:wrap;gap:16px;display:flex}.generated-cover-img{cursor:pointer;box-sizing:border-box;border-radius:12px;width:calc(33.3333% - 10.6667px);height:auto}
