:root{color:#eff5f2;background:#111412;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(180deg,#25423b73,#11141233 36%),#111412}button,input{font:inherit}button,.download-link,.cancel-link{align-items:center;border:0;border-radius:8px;cursor:pointer;display:inline-flex;gap:.55rem;justify-content:center;min-height:42px;padding:.7rem 1rem;text-decoration:none;transition:transform .14s ease,background .14s ease,border-color .14s ease}button:hover,.download-link:hover,.cancel-link:hover{transform:translateY(-1px)}button:disabled,.disabled{cursor:not-allowed;opacity:.45;pointer-events:none}.app-shell{margin:0 auto;max-width:1220px;padding:32px 20px 48px}.hero-band{align-items:end;display:flex;gap:2rem;justify-content:space-between;min-height:220px;padding:24px 0 32px}.eyebrow{color:#91d6c0;font-size:.82rem;font-weight:700;letter-spacing:0;margin:0 0 .75rem;text-transform:uppercase}h1{font-size:clamp(2.4rem,7vw,5rem);line-height:.95;margin:0}.intro{color:#b7c5bf;font-size:1.05rem;line-height:1.6;margin:1.2rem 0 0;max-width:680px}.hero-status{align-items:center;background:#1c2320e0;border:1px solid rgba(145,214,192,.22);border-radius:8px;display:grid;gap:.25rem .8rem;grid-template-columns:auto 1fr;min-width:220px;padding:1rem}.hero-status svg{color:#e9bd62;grid-row:span 2}.hero-status span{color:#b7c5bf;font-size:.85rem}.hero-status strong{color:#eff5f2}.workspace{display:grid;gap:20px;grid-template-columns:360px minmax(0,1fr)}.side-panel,.main-panel{background:#161b19eb;border:1px solid rgba(255,255,255,.08);border-radius:8px}.side-panel{align-self:start;display:grid}.panel-section{display:grid;gap:1rem;padding:20px}.panel-section+.panel-section{border-top:1px solid rgba(255,255,255,.08)}.section-title,.jobs-header{align-items:center;display:flex;gap:.65rem;justify-content:space-between}.section-title{justify-content:flex-start}h2{font-size:1rem;margin:0}label{color:#b7c5bf;display:grid;gap:.5rem;font-size:.9rem}input[type=password]{background:#0d100f;border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#eff5f2;min-height:42px;outline:none;padding:.7rem .85rem;width:100%}input[type=password]:focus{border-color:#91d6c0}.key-state{background:#e9bd621f;border:1px solid rgba(233,189,98,.3);border-radius:8px;color:#f4d89b;padding:.7rem .85rem}.key-state.ok{background:#91d6c01f;border-color:#91d6c04d;color:#a7ead5}.key-form{display:grid;gap:1rem}.key-actions{display:grid;gap:.5rem;grid-template-columns:1fr auto}.key-delete-btn{background:#ef6c5c1a;border:1px solid rgba(239,108,92,.28);color:#ffb2a8;font-size:.88rem;min-height:38px}.key-delete-btn:hover{background:#ef6c5c2e}.provider-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:1rem}.provider-btn{background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#7a9e90;font-size:.88rem;min-height:36px;cursor:pointer;transition:background .15s,color .15s}.provider-btn.active{background:#91d6c026;border-color:#91d6c066;color:#a7ead5;font-weight:600}.provider-btn:not(.active):hover:not(:disabled){background:#ffffff17;color:#eff5f2}.provider-block{display:grid;gap:.6rem;padding:.75rem 0;border-top:1px solid rgba(255,255,255,.07)}.provider-label{color:#7a9e90;font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin:0}.model-selector{display:grid;gap:.35rem;margin-top:.4rem}.model-option{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.87rem;color:#c8ddd6}.model-option input[type=radio]{accent-color:#91d6c0}.drop-zone{align-items:center;background:#0d100f;border:1px dashed rgba(145,214,192,.45);border-radius:8px;color:#eff5f2;cursor:pointer;min-height:120px;padding:1rem;text-align:center}.drop-zone input{display:none}.ghost{background:transparent;color:#b7c5bf}.panel-section>button,.download-link{background:#e9bd62;color:#12100a;font-weight:800}.cancel-link{background:#ef6c5c24;border:1px solid rgba(239,108,92,.35);color:#ffb2a8;font-weight:800}.message{border-top:1px solid rgba(255,255,255,.08);color:#f4d89b;margin:0;padding:16px 20px 20px}.main-panel{min-width:0;padding:20px}.progress-strip{align-items:center;background:#0d100f;border:1px solid rgba(255,255,255,.08);border-radius:8px;display:grid;gap:1rem;grid-template-columns:minmax(190px,280px) 1fr;margin-bottom:20px;padding:16px}.progress-strip span{color:#b7c5bf;display:block;font-size:.85rem;margin-bottom:.25rem}.progress-strip p,.progress-strip small{color:#b7c5bf;display:block;line-height:1.45;margin:.45rem 0 0}.progress-strip small{color:#91d6c0}.progress-bar,.row-progress{background:#ffffff14;border-radius:999px;height:9px;overflow:hidden}.step-list{display:flex;flex-wrap:wrap;gap:6px;grid-column:1 / -1}.step-pill{border:1px solid rgba(255,255,255,.1);border-radius:999px;color:#87948f;font-size:.76rem;padding:.28rem .58rem}.step-pill.done{background:#91d6c01f;border-color:#91d6c040;color:#a7ead5}.step-pill.running{background:#e9bd6224;border-color:#e9bd624d;color:#f4d89b}.step-pill.failed{background:#ef6c5c1f;border-color:#ef6c5c4d;color:#ffb2a8}.progress-bar i,.row-progress i{background:linear-gradient(90deg,#91d6c0,#e9bd62);display:block;height:100%;transition:width .2s ease}.jobs-header{margin-bottom:14px}.ghost{border:1px solid rgba(255,255,255,.1)}.job-list{display:grid;gap:10px}.empty-state,.job-row{background:#171d1a;border:1px solid rgba(255,255,255,.08);border-radius:8px}.empty-state{color:#b7c5bf;padding:28px;text-align:center}.job-row{align-items:center;display:grid;gap:14px;grid-template-columns:auto minmax(0,1fr) auto auto;padding:14px}.job-status{align-items:center;background:#91d6c01a;border-radius:8px;color:#91d6c0;display:flex;height:42px;justify-content:center;width:42px}.job-row.failed .job-status{background:#ef6c5c1f;color:#ff8a7a}.job-info{min-width:0}.job-info h3{font-size:1rem;margin:0 0 .3rem;overflow-wrap:anywhere}.job-info p{color:#b7c5bf;font-size:.88rem;margin:0 0 .6rem}.job-info .error-text{color:#ffb2a8}.job-info .model-line{color:#91d6c0;font-size:.78rem}.job-info .quality-line{color:#a7ead5;font-size:.82rem;font-weight:800}.job-info .quality-line.warning{color:#f4d89b}.job-info .quality-line.failed{color:#ffb2a8}.job-info .epub-line,.job-info .sample-line{color:#a7ead5;font-size:.82rem;font-weight:800}.job-info .epub-line.warning{color:#f4d89b}.job-info .epub-line.failed{color:#ffb2a8}.job-info .quality-summary{color:#b7c5bf;font-size:.78rem}.job-info .warning-text{color:#f4d89b}.row-progress{height:6px}.spin{animation:spin 1s linear infinite}.hero-right{align-items:flex-end;display:flex;flex-direction:column;gap:.75rem}.logout-btn{background:#ffffff0f;border:1px solid rgba(255,255,255,.1);color:#b7c5bf;font-size:.85rem;min-height:36px;padding:.45rem .9rem}.logout-btn:hover{background:#ffffff1a;color:#eff5f2}.auth-shell{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:24px}.auth-card{background:#161b19f5;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:40px 36px 36px;width:100%;max-width:400px}.auth-header{margin-bottom:28px;text-align:center}.auth-icon{color:#91d6c0;margin-bottom:16px}.auth-title{font-size:1.6rem;line-height:1.1;margin:0 0 8px}.auth-subtitle{color:#b7c5bf;font-size:.9rem;margin:0}.auth-form{display:grid;gap:1rem}.auth-input{background:#0d100f;border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#eff5f2;font:inherit;min-height:42px;outline:none;padding:.7rem .85rem;width:100%}.auth-input:focus{border-color:#91d6c0}.auth-btn{background:#e9bd62;color:#12100a;font-weight:800;margin-top:4px;width:100%}.auth-error{background:#ef6c5c1f;border:1px solid rgba(239,108,92,.3);border-radius:8px;color:#ffb2a8;font-size:.88rem;margin:0;padding:.65rem .85rem}@media (max-width: 860px){.hero-band{align-items:stretch;display:grid;min-height:auto}.hero-right{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.workspace,.progress-strip,.job-row{grid-template-columns:1fr}.download-link,.cancel-link{width:100%}.auth-card{padding:28px 20px 24px}}.view-toggle{display:flex;gap:4px;padding:8px 16px 0;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:0}.view-toggle button{display:flex;align-items:center;gap:6px;padding:7px 16px;border-radius:8px 8px 0 0;border:none;background:transparent;color:#ffffff80;font-size:.85rem;cursor:pointer}.view-toggle button.active{background:#ffffff12;color:#eff5f2}.projects-view{display:flex;flex-direction:column;gap:10px;padding:16px}.new-project-form{background:#ffffff0a;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:10px}.new-project-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem}.new-project-form input{padding:8px 10px;border-radius:6px;border:1px solid rgba(255,255,255,.15);background:#ffffff12;color:inherit}.form-select-row{display:flex;flex-direction:column;gap:6px}.form-select-row span{font-size:13px;color:var(--text-muted)}.lang-select{width:100%;background:var(--bg-input, #1e1e1e);color:var(--text, #e0e0e0);border:1px solid var(--border, #333);border-radius:6px;padding:8px 30px 8px 10px;font-size:14px;cursor:pointer;outline:none;-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 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.lang-select:focus{border-color:var(--accent, #3d9e6b)}.toggle-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:6px 2px}.toggle-label{display:flex;flex-direction:column;gap:2px}.toggle-hint{font-size:.75rem;color:#fff6}.toggle-switch{position:relative;flex-shrink:0;width:42px;height:24px;border-radius:12px;background:#ffffff26;cursor:pointer;transition:background .2s;outline:none}.toggle-switch:focus-visible{box-shadow:0 0 0 2px #6cc89899}.toggle-switch:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff9;transition:transform .2s,background .2s}.toggle-switch.on{background:#3d9e6b}.toggle-switch.on:after{transform:translate(18px);background:#fff}.project-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:10px;overflow:hidden}.project-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.project-header:hover{background:#ffffff0a}.project-meta{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px;font-size:.9rem}.project-author{color:#ffffff8c}.chapter-count{color:#fff6;font-size:.8rem}.project-actions{display:flex;align-items:center;gap:8px}.project-body{padding:0 16px 16px;border-top:1px solid rgba(255,255,255,.07)}.toc-preview{margin-top:14px}.toc-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#fff6;margin:0 0 8px}.toc-empty{font-size:.85rem;color:#ffffff4d;margin:0}.toc-item{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:.88rem;border-bottom:1px solid rgba(255,255,255,.05)}.ch-status{display:flex}.ch-status.done{color:#4caf84}.ch-status.failed{color:#e05a5a}.ch-status.processing,.ch-status.pending{color:#ffffff59}.ch-title{flex:1}.ch-order{display:flex;gap:2px}.ch-order button{padding:2px 4px;background:transparent;border:none;color:#fff6;cursor:pointer;border-radius:4px}.ch-order button:hover:not(:disabled){color:#eff5f2;background:#ffffff14}.ch-order button:disabled{opacity:.2;cursor:default}.ch-order .ch-prioritize{color:#ffc83c80}.ch-order .ch-prioritize:hover{color:#ffc83c;background:#ffc83c1f}.ch-order .ch-retry{color:#5aa0e080}.ch-order .ch-retry:hover{color:#5aa0e0;background:#5aa0e01f}.ch-warning-icon{display:inline-flex;align-items:center;color:#e0b45a;opacity:.8;cursor:default;margin-left:4px;flex-shrink:0}.ch-order .ch-delete{color:#e05a5a66}.ch-order .ch-delete:hover{color:#e05a5a;background:#e05a5a1f}.toc-item-active{background:#ffffff08;border-radius:6px;padding:5px 6px;margin:0 -6px}.toc-item-sub{padding-left:20px;border-left:2px solid rgba(255,255,255,.1);margin-left:8px}.ch-title-wrap{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.ch-title{cursor:pointer}.ch-title:hover{text-decoration:underline dotted rgba(255,255,255,.4)}.ch-job-detail{font-size:.75rem;color:#fff6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;gap:3px}.ch-progress-bar{display:block;height:2px;background:#ffffff1a;border-radius:2px;overflow:hidden}.ch-progress-bar i{display:block;height:100%;background:linear-gradient(90deg,#4caf84,#a3d977);border-radius:2px;transition:width .5s ease}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin 1.2s linear infinite}.ch-edit-form{display:flex;flex:1;gap:4px;align-items:center}.ch-edit-form input{flex:1;padding:3px 7px;border-radius:5px;border:1px solid rgba(255,255,255,.25);background:#ffffff1a;color:inherit;font:inherit;font-size:.88rem}.ch-edit-form button{padding:3px 8px;border:none;border-radius:5px;background:#ffffff1a;color:inherit;cursor:pointer;font-size:.85rem}.ch-edit-form button:hover{background:#ffffff2e}.add-chapter-form{margin-top:20px;display:flex;flex-direction:column;gap:10px}.add-chapter-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem}.add-chapter-form input,.add-chapter-form textarea{padding:8px 10px;border-radius:6px;border:1px solid rgba(255,255,255,.15);background:#ffffff12;color:inherit;resize:vertical;font:inherit;font-size:.88rem}
