:root{font-family:Inter,Segoe UI,Arial,sans-serif;background:#f4f6f8;color:#17202e}body{margin:0}main{max-width:1050px;margin:auto;padding:24px 18px}header{display:flex;justify-content:space-between;align-items:center;gap:10px}h1{font-size:24px}section,.job,.file{background:#fff;border:1px solid #d8dee8;border-radius:8px;padding:16px;margin:14px 0}label{display:block;font-weight:650;margin:12px 0 7px}input,select{width:100%;box-sizing:border-box;padding:12px;border:1px solid #b8c1ce;border-radius:6px;font-size:15px}button,a.button{display:inline-block;margin-top:12px;padding:10px 14px;border:0;border-radius:6px;background:#176b5b;color:#fff;font-weight:650;text-decoration:none;cursor:pointer}.secondary{background:#586577}.danger{background:#a52d27}.hint{color:#667386;font-size:13px}.notice{padding:10px;background:#eaf8f2;color:#14513f;border-radius:6px}.error{padding:10px;background:#fde2e1;color:#94211c;border-radius:6px}.stats{display:flex;flex-wrap:wrap;gap:8px}.stats span{background:#eef2f6;padding:8px;border-radius:6px}pre{overflow:auto;background:#101820;color:#e8edf3;padding:12px;border-radius:6px;white-space:pre-wrap}.head,.file{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.url{word-break:break-all;color:#4d5a6d}.badge{padding:5px 9px;border-radius:999px;font-size:13px;font-weight:700}.success{background:#dff5e8;color:#17613b}.failed{background:#fde2e1;color:#94211c}.running{background:#e0edff;color:#1d5595}.login{min-height:100vh;display:grid;place-items:center}.login main{width:min(100%,380px)}
.download-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:2px}.download-heading h2{margin:0;font-size:18px}.download-heading .hint{margin:5px 0 0}.download-label{padding:5px 8px;border:1px solid #cfe0db;border-radius:5px;color:#176b5b;background:#f1faf6;font-size:11px;font-weight:800;letter-spacing:.06em;white-space:nowrap}.download-section{padding:18px 20px}.download-section label{margin-top:14px}.download-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.download-input-row input{height:44px;padding:0 13px;background:#fbfcfd;transition:border-color .15s,box-shadow .15s}.download-input-row input:focus{outline:0;border-color:#176b5b;box-shadow:0 0 0 3px rgba(23,107,91,.13);background:#fff}.download-input-row button{height:44px;margin:0;padding:0 18px;white-space:nowrap}.download-section .hint:last-child{margin-bottom:0}
.progress{height:14px;margin:14px 0 7px;background:#e8edf2;border-radius:999px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(23,32,46,.12)}
.progress>div{height:100%;min-width:0;background:linear-gradient(90deg,#176b5b,#2aa876);border-radius:999px;transition:width .35s ease}
.progress>div.indeterminate{width:34%;background:linear-gradient(90deg,#176b5b,#55c28d,#176b5b);background-size:200% 100%;animation:progress-slide 1.2s ease-in-out infinite}
@keyframes progress-slide{0%{transform:translateX(-110%);background-position:0 0}100%{transform:translateX(310%);background-position:100% 0}}
.file{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;background:transparent;border:0;border-top:1px solid #e5eaf0;border-radius:0;padding:9px 0;margin:0}
.file-with-delete{grid-template-columns:minmax(0,1fr) auto auto}.file:first-child{border-top:0}.file strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{font-size:13px;color:#667386;white-space:nowrap}.file button{margin-top:0;padding:6px 10px;font-size:13px}
.job-row{display:grid;grid-template-columns:auto minmax(220px,1fr) minmax(150px,210px) auto minmax(110px,180px) minmax(80px,110px) auto;align-items:center;gap:12px;padding:9px 0;margin:0;border:0;border-top:1px solid #e5eaf0;border-radius:0;background:transparent}
.job-row:first-of-type{border-top:0}.job-row .job-url{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-row .job-progress{width:100%;margin:0;height:10px}.job-progress-text,.job-state,.job-size,.job-speed{font-size:13px;color:#667386;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-log{white-space:nowrap}.job-log summary{cursor:pointer;color:#176b5b;font-size:13px}.job-log pre{position:absolute;z-index:2;width:min(620px,80vw);margin:8px 0 0;white-space:pre-wrap}.job-row .badge{white-space:nowrap}
.task-count{display:flex;align-items:center;justify-content:space-between;gap:28px;min-width:150px;padding:10px 13px;border-radius:8px;background:#eef2f6;border-left:4px solid #9aa7b5}
.task-count span{font-size:13px;color:#667386}.task-count strong{font-size:22px;line-height:1;color:#17202e}
.running-count{background:#e8f2ff;border-left-color:#2878c8}.running-count strong{color:#1d5595}
.pending-count{background:#fff5d8;border-left-color:#d9a72b}.pending-count strong{color:#785600}
.queued-count{background:#f1f4f7;border-left-color:#8795a6}.queued-count strong{color:#344155}
.current-download{margin-top:14px;padding:15px 16px;background:#f8fafb;border:1px solid #cfd8e4;border-radius:8px}
.current-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.current-url{max-width:760px;margin-top:5px;color:#4d5a6d;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.current-percent{font-size:24px;line-height:1;font-weight:800;color:#176b5b;white-space:nowrap}
.current-progress{height:20px;margin:14px 0 8px}
.disk-card{margin-top:14px;padding:15px 16px;background:#f8fafb;border:1px solid #d8dee8;border-radius:8px}
.disk-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.disk-percent{font-size:13px;color:#176b5b;font-weight:700}
.disk-bar{height:14px;margin:12px 0 8px;background:#e4eaf0;border-radius:999px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(23,32,46,.12)}
.disk-bar>div{height:100%;background:linear-gradient(90deg,#2b8a68,#d9a72b);border-radius:999px;transition:width .35s ease}
.disk-meta{font-size:13px;color:#667386}
.disk-gate{margin-top:6px;font-size:13px;color:#667386}.disk-gate-paused{color:#9a5b00;font-weight:700}
@media(max-width:650px){header,.head,.file,.current-head{display:block}header div{margin-top:8px}.current-percent{display:block;margin-top:8px}.job-row{grid-template-columns:auto 1fr;gap:8px}.job-row .job-url{grid-column:2}.job-row .job-progress{grid-column:1 / -1}.job-row .job-progress-text,.job-row .job-state,.job-row .job-size,.job-row .job-speed,.job-row .job-log{grid-column:2}.download-section{padding:16px}.download-heading{display:block}.download-label{display:inline-block;margin-top:10px}.download-input-row{grid-template-columns:1fr}.download-input-row button{width:100%}}
