:root{--bg: #f6f6f8;--surface: #ffffff;--border: #e8e8ee;--border-strong: #d8d8e2;--text: #17171f;--text-muted: #6f6f7d;--accent: #714afa;--accent-hover: #5f3bd8;--accent-soft: #f2edff;--danger: #e5484d;--danger-soft: #fdeaea;--success: #18a058;--success-soft: #e6f7ef;--radius: 10px;--mono: "SFMono-Regular", "JetBrains Mono", Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);background:var(--bg);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--text-muted)}.layout{display:flex;height:100%}.sidebar{width:220px;flex:0 0 220px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px 12px}.brand{display:flex;align-items:center;gap:10px;padding:0 8px 20px}.logo{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--accent);color:#fff;font-weight:700;font-size:15px}.brand-name{font-weight:650;font-size:15px;letter-spacing:-.01em}.nav{display:flex;flex-direction:column;gap:4px;flex:1}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--text-muted);text-decoration:none;font-weight:500;transition:background .12s,color .12s}.nav-item:hover{background:var(--bg);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent)}.sidebar-footer{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--border);padding-top:14px}.user-chip{display:flex;align-items:center;gap:10px;padding:0 8px}.avatar{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}.user-name{font-weight:550}.content{flex:1;overflow-y:auto;padding:28px 32px}.page{max-width:980px}.page-head{margin-bottom:20px}.page-head h1{margin:0 0 4px;font-size:22px;font-weight:650;letter-spacing:-.01em}.page-head p{margin:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px}.card-title{margin:0 0 16px;font-size:15px;font-weight:600}.sub-title{margin:18px 0 10px;font-size:13px;font-weight:600;color:var(--text-muted)}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:12.5px;font-weight:550;color:var(--text-muted)}.input{height:38px;padding:0 12px;border:1px solid var(--border-strong);border-radius:8px;font-size:14px;color:var(--text);background:#fff;outline:none;transition:border-color .12s,box-shadow .12s}textarea.input{height:auto;padding:8px 12px;resize:vertical;font-family:var(--mono);font-size:12.5px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.toggles{display:flex;gap:20px;margin:16px 0}.switch-row{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch-row input{display:none}.switch{width:40px;height:22px;flex:0 0 40px;background:var(--border-strong);border-radius:11px;position:relative;transition:background .15s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}.switch-row input:checked+.switch{background:var(--accent)}.switch-row input:checked+.switch:after{transform:translate(18px)}.upload-row{display:flex;gap:14px;align-items:stretch}.dropzone{flex:1;min-height:96px;border:1.5px dashed var(--border-strong);border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;transition:border-color .12s,background .12s;text-align:center;padding:12px}.dropzone:hover,.dropzone.has-file{border-color:var(--accent);background:var(--accent-soft)}.keystore-box{flex:0 0 220px;display:flex;flex-direction:column;gap:6px;justify-content:center;font-size:12.5px}.apk-meta{display:flex;align-items:center;gap:10px;margin-top:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 16px;border:none;border-radius:8px;font-size:14px;font-weight:550;cursor:pointer;text-decoration:none;transition:background .12s,opacity .12s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-hover)}.btn.secondary{background:var(--accent-soft);color:var(--accent)}.btn.secondary:hover:not(:disabled){background:#e6dcff}.btn.ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border-strong)}.btn.ghost:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.btn.danger{color:var(--danger)}.btn.sm{height:28px;padding:0 10px;font-size:12px}.btn.block{width:100%}.actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.schedule-row{display:flex;align-items:center;gap:10px}.schedule-row .input{width:90px}.banner{margin-top:14px;padding:10px 14px;border-radius:8px;font-size:13px}.banner.ok{background:var(--success-soft);color:var(--success)}.banner.err{background:var(--danger-soft);color:var(--danger)}.error{background:var(--danger-soft);color:var(--danger);padding:8px 12px;border-radius:8px;font-size:13px}.error-inline{margin-top:4px;font-size:12px;color:var(--danger);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;font-weight:600;color:var(--text-muted);padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:12px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:2px 9px;border-radius:5px;font-size:12px;font-weight:600}.badge.queued{background:#f0f0f4;color:var(--text-muted)}.badge.running{background:var(--accent-soft);color:var(--accent)}.badge.success{background:var(--success-soft);color:var(--success)}.badge.failed{background:var(--danger-soft);color:var(--danger)}.badge.ok{background:var(--success-soft);color:var(--success)}.progress{position:relative;height:8px;background:var(--border);border-radius:4px;overflow:hidden}.bar{height:100%;background:var(--accent);transition:width .3s}.pct{display:block;margin-top:4px;font-size:11px;color:var(--text-muted)}.link-cell{display:flex;align-items:center;gap:8px}.link-preview{color:var(--text-muted)}.empty{padding:40px;text-align:center;color:var(--text-muted)}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 50% -10%,var(--accent-soft),transparent),var(--bg);padding:20px}.login-card{width:360px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:32px;display:flex;flex-direction:column;gap:12px}.brand-lg{justify-content:center;padding-bottom:4px}.logo-lg{width:34px;height:34px;border-radius:10px;font-size:17px}.login-sub{text-align:center;color:var(--text-muted);margin:0 0 8px}.login-card .btn{margin-top:8px}@media (max-width: 720px){.grid{grid-template-columns:1fr}.upload-row{flex-direction:column}.keystore-box{flex:0 0 auto}.sidebar{width:64px;flex:0 0 64px;padding:16px 8px}.brand-name,.nav-item span,.user-name,.btn.ghost:not(.sm){display:none}.nav-item{justify-content:center;padding:12px}}
