/* Refresh for VIPStreams /dl pages (loaded after dl.css). */
.dl-page { --dlr-accent: #c8f53c; }
.dl-page, .dl-page .dl-file-name, .dl-page .dl-game-desc, .dl-page .dl-card-title, .dl-page .dl-files-note {
  font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

/* Title header with a soft backdrop from the cover art */
.dl-page .dl-game-head { position: relative; overflow: hidden; padding: 22px; border-radius: 16px; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.07); }
.dl-page .dl-head-bg {
  position: absolute; top: -20%; right: -10%; bottom: -20%; left: -10%; z-index: 0;
  background-size: cover; background-position: center; filter: blur(40px) saturate(1.2); opacity: 0.28;
}
.dl-page .dl-game-head > *:not(.dl-head-bg) { position: relative; z-index: 1; }
.dl-page .dl-cover { border-radius: 12px; box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5); }
.dl-page .dl-game-title { letter-spacing: 0.01em; }
.dl-page .dl-game-desc { font-size: 0.95rem; line-height: 1.6; color: rgba(255, 255, 255, 0.78); }

/* File rows: readable names that wrap between words, quality-coloured badges */
.dl-page .dl-files-note { margin: 22px 0 12px; font-size: 0.85rem; color: rgba(255, 255, 255, 0.6); }
.dl-page .dl-file-row { border-radius: 12px; transition: border-color 0.15s ease, background-color 0.15s ease; }
.dl-page .dl-file-row:hover { border-color: rgba(200, 245, 60, 0.45); background: rgba(255, 255, 255, 0.04); }
.dl-page .dl-file-name {
  font-size: 0.95rem; font-weight: 650; line-height: 1.4;
  word-break: normal; overflow-wrap: anywhere; letter-spacing: 0;
}
.dl-page .dl-file-sub { font-size: 0.8rem; color: rgba(255, 255, 255, 0.55); }
.dl-page .dl-file-icon { min-width: 54px; font-weight: 800; font-size: 0.78rem; letter-spacing: 0.04em; border-radius: 10px; }
.dl-page .dl-file-icon.dl-q-uhd { color: #111; background: linear-gradient(135deg, #fbbf24, #f59e0b); }
.dl-page .dl-file-icon.dl-q-fhd { color: #111; background: var(--dlr-accent); }
.dl-page .dl-file-icon.dl-q-sd { color: #fff; background: rgba(255, 255, 255, 0.16); }
.dl-page .dl-btn-row { border-radius: 10px; }

/* Catalogue cards: no empty band under short titles */
.dl-page .dl-card { min-height: 0 !important; height: auto !important; border-radius: 12px; transition: transform 0.15s ease, border-color 0.15s ease; }
.dl-page .dl-card:hover { transform: translateY(-3px); border-color: rgba(200, 245, 60, 0.45); }
.dl-page .dl-card-title { font-size: 0.9rem; font-weight: 650; line-height: 1.35; letter-spacing: 0; }
.dl-page .dl-grid { align-items: start; }

@media (max-width: 640px) {
  .dl-page .dl-game-head { padding: 16px; }
  .dl-page .dl-file-row { flex-wrap: wrap; }
  .dl-page .dl-btn-row { width: 100%; margin-top: 10px; text-align: center; }
}

/* Grouped game files: parts, online fix, extras, torrent */
.dl-page .dl-group-title { margin: 26px 0 10px; font-size: 1.15rem; font-weight: 800; color: #fff; letter-spacing: 0; }
.dl-page .dl-group-title span { margin-left: 8px; font-size: 0.78rem; font-weight: 700; color: rgba(255, 255, 255, 0.55); text-transform: uppercase; letter-spacing: 0.08em; }
.dl-page .dl-steps {
  margin: 0 0 16px; padding: 14px 18px 14px 38px; border-radius: 12px; line-height: 1.6; font-size: 0.92rem;
  color: rgba(255, 255, 255, 0.82); background: rgba(200, 245, 60, 0.06); border: 1px solid rgba(200, 245, 60, 0.18);
}
.dl-page .dl-steps li { margin: 2px 0; }
.dl-page .dl-steps b, .dl-page .dl-group-note b { color: #fff; }
.dl-page .dl-group { margin-top: 30px; }
.dl-page .dl-group-note { margin: 0 0 12px; font-size: 0.88rem; line-height: 1.55; color: rgba(255, 255, 255, 0.7); }
.dl-page .dl-group--fix { padding: 4px 16px 10px; border-radius: 14px; background: rgba(59, 130, 246, 0.07); border: 1px solid rgba(59, 130, 246, 0.3); }
.dl-page .dl-group--fix .dl-group-title { color: #93c5fd; }
.dl-page .dl-group--torrent { padding: 4px 16px 10px; border-radius: 14px; background: rgba(200, 245, 60, 0.05); border: 1px solid rgba(200, 245, 60, 0.22); }
.dl-page .dl-group:first-of-type { margin-top: 18px; }

/* ---------- Cleaner download layout (v4) ---------- */
.dl-page .dl-game-head { padding: 18px; }
.dl-page .dl-cover { width: 120px !important; height: auto !important; }
.dl-page .dl-game-title { font-size: clamp(1.4rem, 3vw, 2.1rem) !important; line-height: 1.1; }

/* Steps as a compact numbered grid */
.dl-page .dl-steps {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); grid-gap: 10px;
  padding: 0; list-style: none; counter-reset: dlstep; background: none; border: 0;
}
.dl-page .dl-steps li {
  position: relative; margin: 0; padding: 12px 12px 12px 46px; border-radius: 12px; counter-increment: dlstep;
  font-size: 0.86rem; line-height: 1.45; background: rgba(255, 255, 255, 0.035); border: 1px solid rgba(255, 255, 255, 0.08);
}
.dl-page .dl-steps li::before {
  content: counter(dlstep); position: absolute; left: 12px; top: 12px; width: 24px; height: 24px; border-radius: 50%;
  display: grid; place-items: center; font-weight: 800; font-size: 0.8rem; color: #111; background: var(--dlr-accent);
}

.dl-page .dl-group-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; }
.dl-page .dl-group-head .dl-group-title { margin-right: 16px; }
.dl-page .dl-parts-tools { display: flex; flex-wrap: wrap; align-items: center; margin: 18px 0 8px; }
.dl-page .dl-parts-progress { margin-right: 12px; font-size: 0.82rem; font-weight: 700; color: rgba(255, 255, 255, 0.7); }
.dl-page .dl-tool {
  margin: 0 0 0 8px; padding: 8px 14px; border-radius: 999px; cursor: pointer; font-weight: 700; font-size: 0.8rem;
  color: #111; background: var(--dlr-accent); border: 0;
}
.dl-page .dl-tool--quiet { color: rgba(255, 255, 255, 0.8); background: rgba(255, 255, 255, 0.08); }

/* Parts grid: short "Part 01" cards instead of long rows */
.dl-page .dl-parts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); grid-gap: 10px; }
.dl-page .dl-part { position: relative; }
.dl-page .dl-part-main {
  display: flex; align-items: center; min-height: 58px; padding: 10px 40px 10px 12px; border-radius: 12px;
  color: #fff; text-decoration: none; background: rgba(255, 255, 255, 0.045); border: 1px solid rgba(255, 255, 255, 0.09);
  transition: border-color 0.15s ease, background-color 0.15s ease;
}
.dl-page .dl-part-main:hover, .dl-page .dl-part-main:focus-visible { border-color: var(--dlr-accent); background: rgba(200, 245, 60, 0.08); outline: none; }
.dl-page .dl-part-check {
  position: absolute; z-index: 2; left: 12px; top: 50%; margin-top: -11px; width: 22px; height: 22px; padding: 0;
  border-radius: 6px; border: 2px solid rgba(255, 255, 255, 0.3); background: transparent; cursor: pointer;
}
.dl-page .dl-part-check:hover { border-color: var(--dlr-accent); }
.dl-page .dl-part-check:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.dl-page .dl-part-main { padding-left: 46px !important; }
.dl-page .dl-part.is-done .dl-part-check { border-color: var(--dlr-accent); background: var(--dlr-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23111' d='M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center/16px no-repeat; }
.dl-page .dl-part.is-done .dl-part-main { background: rgba(200, 245, 60, 0.05); }
.dl-page .dl-part-text { flex: 1 1 auto; min-width: 0; }
.dl-page .dl-part-name { display: block; font-weight: 800; font-size: 0.98rem; }
.dl-page .dl-part-sub { display: block; font-size: 0.74rem; color: rgba(255, 255, 255, 0.5); }
.dl-page .dl-part-go svg { display: block; width: 20px; height: 20px; fill: var(--dlr-accent); }
.dl-page .dl-part-info {
  position: absolute; top: 8px; right: 8px; width: 18px; height: 18px; border-radius: 50%; display: none;
  font: 700 11px/18px Inter, sans-serif; text-align: center; color: rgba(255, 255, 255, 0.6); background: rgba(255, 255, 255, 0.08); text-decoration: none;
}
.dl-page .dl-part-go { position: absolute; right: 12px; top: 50%; margin-top: -10px; }

/* Torrent / fix / single files keep rows but tighter */
.dl-page .dl-group--torrent .dl-file-row, .dl-page .dl-group--fix .dl-file-row { margin-bottom: 8px; }
.dl-page .dl-group--torrent .dl-group-note, .dl-page .dl-group--fix .dl-group-note { font-size: 0.84rem; }

@media (max-width: 640px) {
  .dl-page .dl-cover { width: 96px !important; }
  .dl-page .dl-steps { grid-template-columns: 1fr; }
  .dl-page .dl-parts-grid { grid-template-columns: 1fr 1fr; }
  .dl-page .dl-tool { margin: 8px 8px 0 0; }
}

/* Header: type label, no-cover layout, long descriptions */
.dl-game-head:not(.has-art){grid-template-columns:1fr}
.dl-head-text{min-width:0;position:relative}
.dl-type-pill{display:inline-block;margin-bottom:8px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background:rgba(163,230,53,.14);color:#bef264;border:1px solid rgba(163,230,53,.35)}
.dl-game-title{overflow-wrap:anywhere}
.dl-game-desc.is-clamped{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.dl-game-desc.is-clamped.is-open{display:block;-webkit-line-clamp:unset}
.dl-more{margin-top:6px;background:none;border:0;padding:0;color:#bef264;font-weight:600;cursor:pointer}

/* Files every host has removed */
.dl-part.is-dead,.dl-file-row.is-dead{opacity:.55}
.dl-part.is-dead .dl-part-main,.dl-file-row.is-dead .dl-btn-row{cursor:not-allowed;pointer-events:none}
.dl-file-row.is-dead .dl-btn-row{background:#3f3f46;color:#d4d4d8}
.dl-part.is-dead [data-dl-size],.dl-file-row.is-dead [data-dl-size]{color:#fca5a5}

/* Download button feedback while the server reaches the file host (public/dl-parts.js) */
.dl-page a.is-starting, .dl-page a.is-started, .dl-page a.is-failed { pointer-events: none; }
.dl-page a.dl-btn.is-starting, .dl-page .dl-part-main.is-starting .dl-part-go {
  position: relative;
}
.dl-page a.dl-btn.is-starting::before, .dl-page .dl-part-main.is-starting .dl-part-go::after {
  content: ""; display: inline-block; width: 14px; height: 14px; margin-right: 8px; vertical-align: -2px;
  border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent; animation: dl-spin 0.7s linear infinite;
}
.dl-page .dl-part-main.is-starting .dl-part-go svg { display: none; }
.dl-page .dl-part-main.is-starting .dl-part-go::after { margin: 0; }
.dl-page .dl-part-main.is-starting { border-color: var(--dlr-accent); background: rgba(200, 245, 60, 0.08); }
.dl-page .dl-part-main.is-starting .dl-part-sub, .dl-page .dl-part-main.is-started .dl-part-sub { color: var(--dlr-accent); font-weight: 700; }
.dl-page a.dl-btn.is-started { background: #22c55e; color: #052e12; }
.dl-page a.dl-btn.is-failed { background: #f43f5e; color: #fff; }
.dl-page .dl-part-main.is-failed { border-color: #f43f5e; }
.dl-page .dl-part-main.is-failed .dl-part-sub { color: #fda4af; font-weight: 700; }
@keyframes dl-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .dl-page a.dl-btn.is-starting::before, .dl-page .dl-part-main.is-starting .dl-part-go::after { animation-duration: 2s; } }

/* Online-fix archive password */
.dl-pass{padding:2px 8px;border-radius:6px;background:rgba(96,165,250,.16);color:#bfdbfe;font-weight:700;user-select:all}
.dl-pass-note{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px}
