*{box-sizing:border-box;margin:0;padding:0}body{color:#e1e4e8;background:#0f1117;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.login-container{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-form{background:#161b22;border:1px solid #30363d;border-radius:12px;flex-direction:column;gap:1rem;width:100%;max-width:360px;padding:2.5rem;display:flex}.login-form h1{text-align:center;color:#f0f3f6;font-size:1.4rem}.app{max-width:1000px;margin:0 auto;padding:1.5rem}header{border-bottom:1px solid #30363d;align-items:center;gap:1.5rem;margin-bottom:2rem;padding-bottom:1rem;display:flex}header h1{color:#f0f3f6;white-space:nowrap;font-size:1.3rem}header nav{gap:.5rem;display:flex}header nav button{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;padding:.5rem 1.2rem;font-size:.9rem;transition:all .15s}header nav button.active{color:#fff;background:#1f6feb;border-color:#1f6feb}header nav button:hover:not(.active){color:#e1e4e8;border-color:#8b949e}.btn-logout{color:#f85149;cursor:pointer;background:0 0;border:1px solid #da3633;border-radius:6px;margin-left:auto;padding:.5rem 1rem;font-size:.85rem;transition:all .15s}.btn-logout:hover{color:#fff;background:#da3633}input{color:#e1e4e8;background:#0d1117;border:1px solid #30363d;border-radius:6px;outline:none;padding:.6rem .8rem;font-size:.9rem;transition:border-color .15s}input:focus{border-color:#1f6feb}input::placeholder{color:#484f58}button{color:#fff;cursor:pointer;background:#238636;border:1px solid #238636;border-radius:6px;padding:.6rem 1.2rem;font-size:.9rem;transition:all .15s}button:hover{background:#2ea043}button:disabled{opacity:.5;cursor:not-allowed}.add-form,.filter-form{flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;display:flex}.add-form input,.filter-form input{flex:1;min-width:140px}table{border-collapse:collapse;width:100%;font-size:.9rem}th{text-align:left;color:#8b949e;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid #30363d;padding:.7rem .8rem;font-size:.8rem;font-weight:600}td{border-bottom:1px solid #21262d;padding:.7rem .8rem}tr:hover td{background:#161b22}.nowrap{white-space:nowrap}.model-cell{color:#8b949e;text-overflow:ellipsis;max-width:140px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.8rem;overflow:hidden}.text-cell{text-overflow:ellipsis;white-space:nowrap;max-width:400px;overflow:hidden}.btn-delete{color:#f85149;background:0 0;border:1px solid #da3633;padding:.3rem .7rem;font-size:.8rem}.btn-delete:hover{color:#fff;background:#da3633}.badge{border-radius:4px;padding:.2rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-tts{color:#58a6ff;background:#1f6feb22;border:1px solid #1f6feb44}.badge-sts{color:#a78bfa;background:#8b5cf622;border:1px solid #8b5cf644}.badge-ivc{color:#8b949e;background:#30363d44;border:1px solid #30363d}.badge-pvc{color:#e3b341;background:#d29c2222;border:1px solid #d29c2244}.badge-ready{color:#3fb950;background:#23863622;border:1px solid #23863644}.badge-progress{color:#58a6ff;background:#1f6feb22;border:1px solid #1f6feb44}.badge-failed{color:#f85149;background:#da363322;border:1px solid #da363344}.btn-download{color:#58a6ff;cursor:pointer;white-space:nowrap;background:#1f6feb33;border:1px solid #1f6feb55;border-radius:6px;padding:.25rem .6rem;font-size:.8rem}.btn-download:hover{background:#1f6feb55}.btn-download:disabled{opacity:.5;cursor:wait}.clone-form input[type=file]{color:#c9d1d9;font-size:.85rem}.clone-form input[type=file]::file-selector-button{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;margin-right:.5rem;padding:.4rem .8rem}.clone-form input[type=file]::file-selector-button:hover{background:#30363d}.clone-status{color:#58a6ff;margin:.5rem 0;font-size:.9rem}.error{color:#f85149;margin:.5rem 0;font-size:.9rem}.empty,.loading{color:#8b949e;text-align:center;padding:2rem 0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}
