: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}.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}@keyframes spin{to{transform:rotate(360deg)}}.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}}
