{"id":21071,"date":"2026-08-11T18:16:03","date_gmt":"2026-08-11T18:16:03","guid":{"rendered":"https:\/\/www.365scores.com\/news\/?p=21071"},"modified":"2026-08-11T23:15:23","modified_gmt":"2026-08-11T23:15:23","slug":"transfers-2026-summer-window","status":"publish","type":"post","link":"https:\/\/www.365scores.com\/news\/transfers-2026-summer-window","title":{"rendered":"Best 15 Transfers of the 2026 Summer Window: Ranked and Explained"},"content":{"rendered":"\n<style>\n  @font-face {\n    font-family: '365 Sans';\n    src: url('\/wp-content\/uploads\/fonts\/365-Sans-Regular.otf') format('opentype');\n    font-weight: 400;\n    font-style: normal;\n    font-display: swap;\n  }\n\n  @font-face {\n    font-family: '365 Sans';\n    src: url('\/wp-content\/uploads\/fonts\/365-Sans-Bold.otf') format('opentype');\n    font-weight: 700;\n    font-style: normal;\n    font-display: swap;\n  }\n\n  #scores-article-template {\n    --primary: #3B82F6;\n    --primary-hover: #2563EB;\n    --page-bg: #ffffff;\n    --surface-bg: #ffffff;\n    --card-bg: #ffffff;\n    --border: #F3F4F6;\n    --text: #111827;\n    --muted: #4B5563;\n    --soft: #F3F4F6;\n    --soft-hover: #E5E7EB;\n    --shadow: rgba(15, 23, 42, 0.12);\n    --overlay: rgba(0, 0, 0, 0.52);\n    \n    font-family: '365 Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;\n    background: var(--page-bg) !important;\n    color: var(--text) !important;\n    min-height: 100vh !important;\n    scroll-behavior: smooth;\n    position: relative;\n    z-index: 1;\n    line-height: 1.5;\n  }\n\n  #scores-article-template.scores-dark {\n    --page-bg: #020617;\n    --surface-bg: #0F172A;\n    --card-bg: #111827;\n    --border: #1F2937;\n    --text: #F9FAFB;\n    --muted: #D1D5DB;\n    --soft: #1F2937;\n    --soft-hover: #374151;\n    --shadow: rgba(0, 0, 0, 0.42);\n    --overlay: rgba(0, 0, 0, 0.75);\n  }\n\n  #scores-article-template * {\n    box-sizing: border-box !important;\n  }\n\n  #scores-article-template .scores-header {\n    position: fixed !important;\n    top: 0 !important;\n    left: 0 !important;\n    right: 0 !important;\n    z-index: 99999 !important;\n    background: var(--surface-bg);\n    border-bottom: 1px solid var(--border);\n    box-shadow: 0 2px 10px var(--shadow);\n  }\n\n  button.scores-next-button {\n    width: 145px;\n    background-color: #3b82f6;\n    color: white;\n    border-radius: 15px;\n    margin-top: 30px;\n    min-height: 40px;\n  }\n\n  .scores-header-inner {\n    max-width: 1280px;\n    margin: 0 auto;\n    padding: 14px 16px;\n    display: flex;\n    align-items: center;\n    gap: 16px;\n  }\n\n\n  .scores-nav {\n    display: flex;\n    gap: 8px;\n    overflow-x: auto;\n    flex: 1;\n    scrollbar-width: none;\n  }\n\n  .scores-nav::-webkit-scrollbar { display: none; }\n\n  .scores-nav-button {\n    min-width: 40px;\n    height: 40px;\n    padding: 0 13px;\n    border-radius: 999px;\n    background: var(--soft);\n    color: var(--muted);\n    font-weight: 600;\n    border: none;\n    cursor: pointer;\n    white-space: nowrap;\n    transition: none;\n  }\n\n  .scores-nav-button.is-active {\n    background: var(--primary);\n    color: #fff !important;\n  }\n\n  .scores-hero {\n    min-height: 72vh;\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 112px 16px 52px;\n    text-align: left;\n    color: #fff !important;\n    background-color: #020617;\n    overflow: hidden;\n  }\n\n  .scores-hero::after {\n    content: '';\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    background: linear-gradient(180deg, rgba(2, 6, 23, 0.50) 0%, rgba(2, 6, 23, 0.28) 46%, rgba(2, 6, 23, 0.58) 100%);\n  }\n\n  .scores-hero-bg {\n    position: absolute;\n    inset: 0;\n    background-size: cover;\n    background-position: center 28%;\n    z-index: 0;\n    opacity: 1;\n    transform: scale(1.02);\n    overflow: hidden;\n  }\n\n  .scores-hero-bg-img {\n    display: block;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center 28%;\n  }\n\n  .scores-hero-content {\n    position: relative;\n    z-index: 2;\n    width: 100%;\n    max-width: 1180px;\n    display: grid;\n    grid-template-columns: minmax(0, 1.12fr) minmax(320px, 0.88fr);\n    gap: 34px;\n    align-items: center;\n  }\n\n  .scores-hero-text {\n    min-width: 0;\n  }\n\n  .scores-hero-kicker {\n    display: inline-flex;\n    align-items: center;\n    width: max-content;\n    max-width: 100%;\n    margin-bottom: 14px;\n    padding: 7px 12px;\n    border-radius: 999px;\n    background: rgba(59, 130, 246, 0.24);\n    border: 1px solid rgba(147, 197, 253, 0.5);\n    color: #DBEAFE !important;\n    font-size: 12px;\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .scores-hero-title {\n    font-size: clamp(34px, 6.8vw, 68px) !important;\n    font-weight: 800;\n    margin: 0 0 14px;\n    color: #fff !important;\n    line-height: 1.05 !important;\n    text-wrap: balance;\n  }\n\n  .scores-hero-subtitle {\n    margin: 0 0 18px;\n    font-size: clamp(18px, 2.3vw, 24px);\n    font-weight: 700!important;\n    color: #fff !important;\n    text-shadow: 0 0 20px rgba(59, 130, 246, 0.85), 0 2px 10px rgba(0, 0, 0, 0.5);\n  }\n\n  .scores-hero-copy p {\n    max-width: 720px;\n    margin: 0;\n    color: #E5E7EB !important;\n    font-size: clamp(16px, 1.9vw, 19px);\n    line-height: 1.65;\n  }\n\n  .scores-hero-actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px;\n    margin-top: 24px;\n  }\n\n  .scores-start-button,\n  .scores-hero-secondary-button {\n    min-height: 46px;\n    padding: 12px 24px;\n    border-radius: 999px;\n    border: 1px solid transparent;\n    font-weight: 800;\n    cursor: pointer;\n    line-height: 1;\n  }\n\n  .scores-start-button {\n    background: var(--primary);\n    color: #fff !important;\n    box-shadow: 0 12px 24px rgba(37, 99, 235, 0.32);\n  }\n\n  .scores-hero-secondary-button {\n    background: rgba(255, 255, 255, 0.12);\n    color: #fff !important;\n    border-color: rgba(255, 255, 255, 0.26);\n  }\n\n  .scores-hero-preview {\n    width: 100%;\n    padding: 18px;\n    border-radius: 24px;\n    background: rgba(15, 23, 42, 0.72);\n    border: 1px solid rgba(255, 255, 255, 0.18);\n    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.34);\n    backdrop-filter: blur(12px);\n  }\n\n  .scores-hero-preview-head {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n    margin-bottom: 14px;\n    color: #DBEAFE !important;\n  }\n\n  .scores-hero-preview-head span {\n    font-size: 13px;\n    font-weight: 800;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .scores-hero-preview-head strong {\n    color: #fff !important;\n    font-size: 13px;\n    font-weight: 800;\n    white-space: nowrap;\n  }\n\n  .scores-hero-preview-list {\n    display: grid;\n    gap: 10px;\n  }\n\n  .scores-hero-preview-item {\n    width: 100%;\n    display: grid;\n    grid-template-columns: 58px minmax(0, 1fr);\n    gap: 12px;\n    align-items: center;\n    padding: 10px;\n    border: 1px solid rgba(255, 255, 255, 0.14);\n    border-radius: 16px;\n    background: rgba(2, 6, 23, 0.56);\n    color: #fff !important;\n    text-align: left;\n    cursor: pointer;\n  }\n\n  .scores-hero-preview-item:hover {\n    background: rgba(59, 130, 246, 0.22);\n  }\n\n  .scores-hero-preview-thumb,\n  .scores-hero-preview-rank-chip {\n    width: 58px;\n    height: 48px;\n    border-radius: 12px;\n    overflow: hidden;\n    background: rgba(59, 130, 246, 0.26);\n  }\n\n  .scores-hero-preview-thumb img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center 22%;\n    display: block;\n  }\n\n  .scores-hero-preview-rank-chip {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #fff !important;\n    font-weight: 800;\n    font-size: 18px;\n  }\n\n  .scores-hero-preview-text {\n    min-width: 0;\n    display: grid;\n    gap: 3px;\n  }\n\n  .scores-hero-preview-rankline {\n    color: #93C5FD !important;\n    font-size: 12px;\n    font-weight: 800;\n    line-height: 1.1;\n  }\n\n  .scores-hero-preview-name {\n    color: #fff !important;\n    font-size: 15px;\n    font-weight: 800;\n    line-height: 1.2;\n    overflow: hidden;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n  }\n\n  @media (max-width: 760px) {\n    .scores-hero {\n      min-height: auto;\n      padding: 96px 14px 34px;\n    }\n\n    .scores-hero::after {\n      background: linear-gradient(180deg, rgba(2, 6, 23, 0.92) 0%, rgba(2, 6, 23, 0.84) 54%, rgba(2, 6, 23, 0.96) 100%);\n    }\n\n    .scores-hero-bg {\n      opacity: 0.36;\n      background-position: center top;\n    }\n\n    .scores-hero-content {\n      grid-template-columns: 1fr;\n      gap: 22px;\n    }\n\n    .scores-hero-title {\n      font-size: clamp(30px, 9vw, 46px) !important;\n    }\n\n    .scores-hero-subtitle {\n      font-size: 18px;\n      margin-bottom: 14px;\n    }\n\n    .scores-hero-actions {\n      gap: 10px;\n      margin-top: 20px;\n    }\n\n    .scores-start-button,\n    .scores-hero-secondary-button {\n      flex: 1 1 150px;\n      padding-left: 16px;\n      padding-right: 16px;\n    }\n\n    .scores-hero-preview {\n      padding: 14px;\n      border-radius: 20px;\n    }\n\n    .scores-hero-preview-item {\n      grid-template-columns: 52px minmax(0, 1fr);\n      padding: 9px;\n    }\n\n    .scores-hero-preview-thumb,\n    .scores-hero-preview-rank-chip {\n      width: 52px;\n      height: 44px;\n    }\n\n    .scores-hero-preview-name {\n      font-size: 14px;\n    }\n\n    .scores-hero-preview-item:nth-child(n+4) {\n      display: none;\n    }\n  }\n\n  .scores-section-shell {\n    min-height: 100vh;\n    scroll-margin-top: 80px;\n  }\n\n  .scores-card {\n    max-width: 800px;\n    margin: 90px auto;\n    background: var(--card-bg);\n    border-radius: 24px;\n    border: 1px solid var(--border);\n    box-shadow: 0 10px 30px var(--shadow);\n    overflow: hidden;\n  }\n\n  .scores-card-header { padding: 30px 30px 12px; border-bottom: 0; }\n  .scores-card-header h2 { margin: 0; font-size: 28px; font-weight: 800; }\n  .scores-card-body { padding: 10px 30px 30px; color: var(--muted); font-size: 18px; line-height: 1.7; }\n  .scores-card-body > p:first-child { margin-top: 0; }\n\n  .scores-image-wrap {\n    width: 100%;\n    height: 250px;\n    background: #eee;\n    margin: 20px 0;\n    border-radius: 12px;\n    overflow: hidden;\n  }\n\n  .scores-image-wrap img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: var(--image-position, center 22%);\n  }\n\n  .scores-stats-grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 15px;\n    margin-top: 25px;\n    align-items: stretch;\n  }\n\n  .scores-stats-grid.is-empty {\n    display: none;\n  }\n\n  .scores-stats-count-1 {\n    grid-template-columns: minmax(0, 260px);\n    justify-content: center;\n  }\n\n  .scores-stats-count-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n\n  .scores-stats-count-3 .scores-stat:last-child {\n    grid-column: 1 \/ -1;\n    justify-self: center;\n    width: min(100%, 260px);\n  }\n\n  .scores-stat {\n    min-width: 0;\n    padding: 18px 12px;\n    background: var(--soft);\n    border-radius: 16px;\n    text-align: center;\n    border: 1px solid var(--border);\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .scores-stat-icon {\n    width: 32px;\n    height: 32px;\n    margin: 0 auto 10px;\n    color: var(--primary);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex: 0 0 auto;\n  }\n\n  .scores-stat-icon img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n  }\n\n  .scores-stat.no-icon .scores-stat-value {\n    margin-top: 0;\n  }\n\n  .scores-stat-value { font-size: 24px; font-weight: 800; color: var(--text); line-height: 1.15; margin-bottom: 4px; overflow-wrap: anywhere; }\n  .scores-stat-label { font-size: 11px; color: var(--muted); text-transform: uppercase; font-weight: 700; letter-spacing: 0.05em; line-height: 1.3; }\n\n  @media (max-width: 599px) {\n    .scores-card {\n      margin: 56px 12px;\n      border-radius: 20px;\n    }\n\n    .scores-card-header {\n      padding: 22px 18px 14px;\n    }\n\n    .scores-card-header h2 {\n      font-size: 24px;\n      line-height: 1.2;\n    }\n\n    .scores-card-body {\n      padding: 8px 18px 24px;\n      font-size: 16px;\n      line-height: 1.65;\n    }\n\n    .scores-image-wrap {\n      height: 230px;\n      margin: 18px 0;\n    }\n\n    .scores-stats-grid {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 10px;\n      margin-top: 22px;\n    }\n\n    .scores-stats-count-1 {\n      grid-template-columns: minmax(0, 1fr);\n    }\n\n    .scores-stats-count-3 .scores-stat:last-child {\n      grid-column: 1 \/ -1;\n      justify-self: center;\n      width: min(100%, 260px);\n    }\n\n    .scores-stat {\n      min-height: 118px;\n      padding: 14px 10px;\n    }\n\n    .scores-stat-icon {\n      width: 28px;\n      height: 28px;\n      margin-bottom: 8px;\n    }\n\n    .scores-stat-value {\n      font-size: 20px;\n      line-height: 1.15;\n    }\n\n    .scores-stat-label {\n      font-size: 10px;\n      line-height: 1.3;\n    }\n\n    button.scores-next-button {\n      width: 100%;\n      margin-top: 24px;\n    }\n  }\n\n  @media (min-width: 600px) {\n    .scores-stats-grid {\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n    }\n\n    .scores-stats-count-1 {\n      grid-template-columns: minmax(0, 260px);\n      justify-content: center;\n    }\n\n    .scores-stats-count-2 {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      max-width: 520px;\n      margin-left: auto;\n      margin-right: auto;\n    }\n\n    .scores-stats-count-3 {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      max-width: 690px;\n      margin-left: auto;\n      margin-right: auto;\n    }\n\n    .scores-stats-count-3 .scores-stat:last-child {\n      grid-column: auto;\n      justify-self: stretch;\n      width: auto;\n    }\n\n    .scores-stats-count-4 {\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n      max-width: none;\n    }\n\n    .scores-image-wrap {\n      height: 400px;\n    }\n  }\n\n  .scores-icon-button {\n    background: var(--soft);\n    border: none;\n    width: 40px;\n    height: 40px;\n    border-radius: 20px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: var(--text);\n  }\n\n  .scores-toc-drawer {\n    position: fixed;\n    top: 0; right: 0; bottom: 0;\n    width: 300px;\n    background: var(--surface-bg);\n    z-index: 100000;\n    transform: translateX(100%);\n    transition: transform 0.3s ease;\n    padding: 20px;\n    box-shadow: -5px 0 15px var(--shadow);\n    overflow-y: auto;\n  }\n  .scores-toc-drawer.is-open { transform: translateX(0); }\n  \n  .scores-toc-overlay {\n    position: fixed;\n    inset: 0;\n    background: rgba(0,0,0,0.5);\n    z-index: 99999;\n    display: none;\n  }\n  .scores-toc-overlay.is-open { display: block; }\n\n\n  .scores-hero-first-item {\n    width: 100%;\n    padding: 18px;\n    border-radius: 24px;\n    background: rgba(15, 23, 42, 0.78);\n    border: 1px solid rgba(255, 255, 255, 0.18);\n    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.34);\n    backdrop-filter: blur(12px);\n    color: #fff !important;\n  }\n\n  .scores-hero-first-kicker {\n    display: inline-flex;\n    margin-bottom: 10px;\n    padding: 6px 10px;\n    border-radius: 999px;\n    background: rgba(59, 130, 246, 0.26);\n    color: #DBEAFE !important;\n    font-size: 12px;\n    font-weight: 800;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .scores-hero-first-title {\n    margin: 0 0 12px;\n    color: #fff !important;\n    font-size: clamp(22px, 3vw, 32px);\n    font-weight: 800;\n    line-height: 1.12;\n  }\n\n  .scores-hero-first-image {\n    width: 100%;\n    height: 230px;\n    margin: 12px 0 14px;\n    border-radius: 18px;\n    overflow: hidden;\n    background: rgba(255,255,255,0.1);\n  }\n\n  .scores-hero-first-image img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: var(--image-position, center 22%);\n    display: block;\n  }\n\n  .scores-hero-first-copy {\n    display: grid;\n    gap: 10px;\n  }\n\n  .scores-hero-first-copy p {\n    margin: 0;\n    color: #E5E7EB !important;\n    font-size: 15px;\n    line-height: 1.55;\n  }\n\n  .scores-hero-first-copy p:nth-child(2) {\n    color: #CBD5E1 !important;\n  }\n\n  .scores-hero-first-actions {\n    margin-top: 16px;\n    display: flex;\n    gap: 10px;\n    flex-wrap: wrap;\n  }\n\n  .scores-hero-first-actions .scores-next-button {\n    margin-top: 0;\n  }\n\n  @media (max-width: 760px) {\n    .scores-hero-first-item {\n      padding: 14px;\n      border-radius: 20px;\n    }\n\n    .scores-hero-first-image {\n      height: 190px;\n      border-radius: 16px;\n    }\n\n    .scores-hero-first-title {\n      font-size: 23px;\n    }\n\n    .scores-hero-first-copy p {\n      font-size: 14px;\n      line-height: 1.5;\n    }\n  }\n\n\n  \/* Traditional first-item landing variant *\/\n  .scores-hero {\n    min-height: auto;\n    align-items: flex-start;\n    justify-content: center;\n    padding: 104px 16px 56px;\n    text-align: center;\n  }\n\n  .scores-hero::after {\n    background: linear-gradient(180deg, rgba(2, 6, 23, 0.38) 0%, rgba(2, 6, 23, 0.30) 45%, rgba(2, 6, 23, 0.48) 100%);\n  }\n\n  .scores-hero-bg {\n    opacity: 1;\n    background-position: center top;\n  }\n\n  .scores-hero-bg-img {\n    opacity: 1;\n  }\n\n  .scores-hero-content {\n    max-width: 860px;\n    display: flex;\n    flex-direction: column;\n    gap: 20px;\n    align-items: stretch;\n  }\n\n  .scores-hero-text {\n    text-align: center;\n  }\n\n  .scores-hero-kicker {\n    margin-left: auto;\n    margin-right: auto;\n    margin-bottom: 12px;\n  }\n\n  .scores-hero-title {\n    max-width: 820px;\n    margin: 0 auto 12px;\n    font-size: clamp(30px, 5.2vw, 54px) !important;\n    line-height: 1.08 !important;\n  }\n\n  .scores-hero-copy p {\n    max-width: 760px;\n    margin: 0 auto;\n    font-size: clamp(15px, 1.7vw, 18px);\n    line-height: 1.55;\n  }\n\n  .scores-hero-actions {\n    justify-content: center;\n    margin-top: 2px;\n  }\n\n  .scores-hero-first-item {\n    width: 100%;\n    padding: 0;\n    border-radius: 24px;\n    background: var(--card-bg);\n    border: 1px solid var(--border);\n    box-shadow: 0 18px 42px rgba(0, 0, 0, 0.28);\n    backdrop-filter: none;\n    color: var(--text) !important;\n    overflow: hidden;\n    text-align: left;\n  }\n\n  .scores-hero-first-kicker {\n    margin: 28px 30px 8px;\n    background: rgba(59, 130, 246, 0.12);\n    color: var(--primary) !important;\n  }\n\n  .scores-hero-first-title {\n    margin: 0 30px 10px;\n    color: var(--text) !important;\n    font-size: clamp(23px, 3.2vw, 32px);\n    line-height: 1.16;\n  }\n\n  .scores-hero-first-copy {\n    display: block;\n    padding: 0 30px;\n  }\n\n  .scores-hero-first-copy p {\n    margin: 0 0 16px;\n    color: var(--muted) !important;\n    font-size: 17px;\n    line-height: 1.65;\n  }\n\n  .scores-hero-first-copy p:nth-child(2) {\n    color: var(--muted) !important;\n  }\n\n  .scores-hero-first-image {\n    width: auto;\n    height: 360px;\n    margin: 16px 30px 18px;\n    border-radius: 16px;\n    background: #E5E7EB;\n  }\n\n  .scores-hero-first-actions {\n    margin: 18px 30px 30px;\n  }\n\n  @media (max-width: 760px) {\n    .scores-hero {\n      padding: 88px 12px 34px;\n    }\n\n    .scores-hero-content {\n      gap: 16px;\n    }\n\n    .scores-hero-title {\n      font-size: clamp(28px, 8.4vw, 40px) !important;\n    }\n\n    .scores-hero-copy p {\n      font-size: 15px;\n      line-height: 1.5;\n    }\n\n    .scores-hero-first-item {\n      border-radius: 20px;\n    }\n\n    .scores-hero-first-kicker {\n      margin: 20px 18px 8px;\n    }\n\n    .scores-hero-first-title {\n      margin: 0 18px 10px;\n      font-size: 22px;\n      line-height: 1.18;\n    }\n\n    .scores-hero-first-copy {\n      padding: 0 18px;\n    }\n\n    .scores-hero-first-copy p {\n      font-size: 15px;\n      line-height: 1.55;\n      margin-bottom: 14px;\n    }\n\n    .scores-hero-first-image {\n      height: 210px;\n      margin: 14px 18px 16px;\n      border-radius: 14px;\n    }\n\n    .scores-hero-actions {\n      display: grid;\n      grid-template-columns: 1fr;\n      width: 100%;\n    }\n\n    .scores-start-button,\n    .scores-hero-secondary-button {\n      width: 100%;\n    }\n  }\n\n\n  \/* Align the featured landing item title with the regular article-card layout *\/\n  .scores-hero-first-title {\n    display: block !important;\n    margin: 0 0 10px !important;\n    padding: 0 30px !important;\n    width: 100% !important;\n    box-sizing: border-box !important;\n  }\n\n  .scores-hero-first-copy {\n    padding-left: 30px !important;\n    padding-right: 30px !important;\n  }\n\n  @media (max-width: 599px) {\n    .scores-hero-first-kicker {\n      margin: 22px 18px 8px !important;\n    }\n\n    .scores-hero-first-title {\n      padding-left: 18px !important;\n      padding-right: 18px !important;\n      margin-bottom: 10px !important;\n      font-size: 24px !important;\n      line-height: 1.2 !important;\n    }\n\n    .scores-hero-first-copy {\n      padding-left: 18px !important;\n      padding-right: 18px !important;\n    }\n  }\n\n\n\/* 365Scores brand blue for metric values *\/\n.scores-stat-value,\n.scores-stat-card .scores-stat-value {\n  color: #179BFF !important;\n}\n\n\/* Prevent long metric values from looking compressed *\/\n.scores-stat-value,\n.scores-stat-card .scores-stat-value {\n  white-space: normal !important;\n  overflow-wrap: normal !important;\n  word-break: normal !important;\n  hyphens: none !important;\n  line-height: 1.12 !important;\n  max-width: 100%;\n}\n\n.scores-stat-label,\n.scores-stat-card .scores-stat-label {\n  white-space: normal !important;\n  overflow-wrap: normal !important;\n  word-break: normal !important;\n  hyphens: none !important;\n}\n\n.scores-stat-value {\n  font-size: clamp(17px, 4.4vw, 25px) !important;\n}\n\n@media (min-width: 700px) {\n  .scores-stat-value {\n    font-size: clamp(18px, 2vw, 26px) !important;\n  }\n}\n\n<\/style>\n\n<div id=\"scores-article-template\">\n  <header class=\"scores-header\">\n    <div class=\"scores-header-inner\">\n      <nav class=\"scores-nav\" id=\"js-nav\"><\/nav>\n      <div class=\"scores-header-actions\">\n        <button type=\"button\" class=\"scores-icon-button\" id=\"js-toc-open\">\u2630<\/button>\n      <\/div>\n    <\/div>\n  <\/header>\n\n  <section class=\"scores-hero\">\n    <div class=\"scores-hero-bg\" id=\"js-hero-bg\"><img class=\"scores-hero-bg-img\" id=\"js-hero-img\" alt=\"\"><\/div>\n    <div class=\"scores-hero-content\">\n      <div class=\"scores-hero-text\">\n        <h1 class=\"scores-hero-title\" id=\"js-hero-title\"><\/h1>\n        <div class=\"scores-hero-copy\" id=\"js-hero-copy\"><\/div>\n      <\/div>\n      <article class=\"scores-hero-first-item\" aria-label=\"First article item\" id=\"js-hero-first-item\"><\/article>\n      <div class=\"scores-hero-actions\">\n        <button type=\"button\" class=\"scores-start-button\" id=\"js-start\">Continue Reading<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <main id=\"js-sections\"><\/main>\n\n  <div class=\"scores-toc-overlay\" id=\"js-toc-overlay\"><\/div>\n  <aside class=\"scores-toc-drawer\" id=\"js-toc-drawer\">\n    <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;\">\n      <h3 style=\"margin:0;\">Contents<\/h3>\n      <button id=\"js-toc-close\" style=\"border:none; background:none; font-size:24px; cursor:pointer;\">&times;<\/button>\n    <\/div>\n    <div id=\"js-toc-list\"><\/div>\n  <\/aside>\n<\/div>\n\n<script>\nlet scoresProgrammaticScroll = false;\nlet scoresScrollSettleTimer = null;\nlet scoresProgrammaticFallbackTimer = null;\n\nfunction setActiveNavButton(id) {\n  const activeId = String(id);\n  const nav = document.getElementById('js-nav');\n  if (!nav) return;\n\n  nav.querySelectorAll('.scores-nav-button').forEach(button => {\n    button.classList.toggle('is-active', button.dataset.articleId === activeId || button.textContent.trim() === activeId);\n  });\n}\n\nfunction finishProgrammaticScroll() {\n  scoresProgrammaticScroll = false;\n  if (scoresScrollSettleTimer) window.clearTimeout(scoresScrollSettleTimer);\n  if (scoresProgrammaticFallbackTimer) window.clearTimeout(scoresProgrammaticFallbackTimer);\n  scoresScrollSettleTimer = null;\n  scoresProgrammaticFallbackTimer = null;\n}\n\nwindow.addEventListener('scroll', function() {\n  if (!scoresProgrammaticScroll) return;\n  if (scoresScrollSettleTimer) window.clearTimeout(scoresScrollSettleTimer);\n  scoresScrollSettleTimer = window.setTimeout(finishProgrammaticScroll, 180);\n}, { passive: true });\n\nfunction scrollToSection(id) {\n  scoresProgrammaticScroll = true;\n  setActiveNavButton(id);\n\n  if (scoresProgrammaticFallbackTimer) window.clearTimeout(scoresProgrammaticFallbackTimer);\n  scoresProgrammaticFallbackTimer = window.setTimeout(finishProgrammaticScroll, 2200);\n\n  const el = document.getElementById(`article-item-${id}`);\n  if (el) {\n    const offset = 80;\n    const bodyRect = document.body.getBoundingClientRect().top;\n    const elementRect = el.getBoundingClientRect().top;\n    const elementPosition = elementRect - bodyRect;\n    const offsetPosition = elementPosition - offset;\n    window.scrollTo({ top: offsetPosition, behavior: 'smooth' });\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const data = {\n    \"logo\": \"365Scores\",\n    \"hero\": {\n        \"title\": \"The 15 Best Transfers of the 2026 Summer Window: All Ranked and Rated\",\n        \"subtitle\": \"\",\n        \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/hero_image_besttransfers\",\n        \"copy\": \"With the new season days away, here is our ranking of the 15 best pieces of business from the 2026 summer transfer window, counting down the deals that combined the right player, the right price and the right moment.<\/p><p style=\\\\\\\"margin-top:1.6em\\\\\\\">A World Cup summer was supposed to slow the market down. Instead it stretched it either side of the tournament and handed the clubs with a plan a clear run at the ones without.<\/p><p style=\\\\\\\"margin-top:1.6em\\\\\\\"><strong>Honourable mentions:<\/strong> Bruno Guimar\u00e3es finally got his move, Arsenal landing the Newcastle captain on 8 August for a reported \u00a375m paid in three instalments, though at 28 and with nearly 200 Newcastle appearances behind him he is a win-now signing rather than a bargain. Morgan Rogers went the other way on value, becoming the most expensive British player in history at \u00a3117m to Chelsea, an extraordinary return on the \u00a315m Aston Villa paid Middlesbrough in February 2024 but an enormous outlay for a club with no European football. And Anan Khalaili is close to a \u00a321m move to Crystal Palace, a month after Inter Milan's \u20ac23m deal collapsed when the Italian Olympic Committee declined to grant him medical clearance. It is not signed yet, which is the only reason he is not in the list proper.\"\n    },\n    \"items\": [\n        {\n            \"id\": 15,\n            \"name\": \"Andy Robertson to Tottenham\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/robertson\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Eight major trophies, two Premier League titles, a Champions League and 378 appearances across nine years, and Tottenham did not have to outbid a single rival. Roberto De Zerbi had tried to sign Robertson in January, only for the move to collapse when Liverpool could not recall Kostas Tsimikas from Roma. Six months later he arrived for nothing.\",\n            \"textBottom\": \"The age curve is coming and nobody is pretending otherwise, particularly for a player whose game was built on overlapping runs; he started only 11 league games last season after the arrival of Milos Kerkez. But his 69 Liverpool assists and 56 in the Premier League overall are the most by any left-back in the competition's history, and Spurs only confirmed their top-flight survival on the final day. Alongside Marcos Senesi and Martin D\u00fabravka, he is part of a free-transfer strategy adding leadership at zero cost while the club spends heavily elsewhere.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Free\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Liverpool\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"32\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"378\",\n                    \"label\": \"Liverpool appearances\"\n                }\n            ]\n        },\n        {\n            \"id\": 14,\n            \"name\": \"Antonio Silva to Bournemouth\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/antoniosilva\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Bournemouth lost Marcos Senesi for nothing and replaced him with a 22-year-old who already has 20 caps for Portugal. That is the sort of turnaround most selling clubs never manage, and it came in a window where Premier League centre-backs were routinely costing \u00a350m or more.\",\n            \"textBottom\": \"The Cherries have now sold Dean Huijsen, Milos Kerkez, Illia Zabarnyi and Senesi across two summers, and the criticism has always been that the money never comes back the other way. Silva changes that. He is quick across the ground, comfortable stepping into midfield with the ball and arrives with four seasons of European football behind him at an age where most defenders are still out on loan. \u00c1lvaro Rodr\u00edguez followed him in from Elche for around \u00a321m, giving Bournemouth genuine reinvestment for the first time in two years.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a325m\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Benfica\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"22\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"20\",\n                    \"label\": \"Portugal caps\"\n                }\n            ]\n        },\n        {\n            \"id\": 13,\n            \"name\": \"Sandro Tonali to Tottenham\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/sandrotonali\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Newcastle rejected an opening \u00a375m bid. Tottenham came back with a package worth up to \u00a3100m: \u00a392.5m up front plus \u00a37.5m in bonuses tied to European qualification. It broke the Spurs transfer record for the second time in a single summer, weeks after Mateus Fernandes arrived from West Ham for \u00a385m.\",\n            \"textBottom\": \"The maths is remarkable from Newcastle's side. They paid Milan a reported \u00a355m for Tonali in 2023, a record for an Italian player at the time, and have now close to doubled that on a midfielder who wanted out once a return to Serie A was priced beyond reach. Whether it counts as value for Spurs depends entirely on where they finish. Tonali is a genuinely elite controller, the sort who lifts the level of everyone within ten yards of him, but a fee this size at a club that survived on the final day leaves no margin for error.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a392.5m\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Newcastle United\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a3100m\",\n                    \"label\": \"Potential total\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a355m\",\n                    \"label\": \"Cost Newcastle in 2023\"\n                }\n            ]\n        },\n        {\n            \"id\": 12,\n            \"name\": \"Johan Manzambi to Aston Villa\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/manzambi\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Newcastle could not get it over the line. Aston Villa could, breaking their club transfer record to sign the Europa League's Young Player of the Season from the team they beat in the final. Manzambi scored in Freiburg's semi-final to set up that meeting in Istanbul, then went to the World Cup with Switzerland and came back with his price climbing by the week.\",\n            \"textBottom\": \"He is 20 years old, already has 16 caps, and is being asked to help replace both Youri Tielemans and Morgan Rogers while Amadou Onana recovers from a long-term injury picked up at the tournament. That is a punishing brief for a first Premier League season. But Villa banked \u00a3152m for Tielemans and Rogers combined, reinvested a third of it here and added Jo\u00e3o Gomes from Wolves for \u00a338m to share the load. The logic holds even if the transition is uneven.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a350.97m\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Freiburg\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"20\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"16\",\n                    \"label\": \"Switzerland caps\"\n                }\n            ]\n        },\n        {\n            \"id\": 11,\n            \"name\": \"Maxence Lacroix to Chelsea\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/lacroix\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Chelsea have spent five years buying 21-year-olds. Lacroix is 26, played the full 90 minutes as Crystal Palace beat Rayo Vallecano to win the Conference League in May for their first European trophy, and arrives having been the standout in a back three that also delivered an FA Cup and a Community Shield.\",\n            \"textBottom\": \"The Danny Welbeck and Jordan Henderson signings, the first players over 30 of the BlueCo era, suggest a genuine shift in policy, and Lacroix fits the same logic: proven, physical, and old enough to speak up. He was sent off at Old Trafford last season, so he is not flawless, but a squad with one of the youngest average ages in the division needed exactly this. Palace, who had made it to August without spending a penny, replaced him with Oscar Mingueza on a free.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a352m\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Crystal Palace\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"26\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"3\",\n                    \"label\": \"Trophies at Palace\"\n                }\n            ]\n        },\n        {\n            \"id\": 10,\n            \"name\": \"Ibrahima Konat\u00e9 to Real Madrid\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/konate\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Madrid wanted William Saliba. Saliba signed a five-year extension at Arsenal, so they pivoted to the France centre-back whose Liverpool contract was running down and signed him for nothing on a deal until 2030. It is the same playbook that delivered Trent Alexander-Arnold, Antonio R\u00fcdiger and David Alaba.\",\n            \"textBottom\": \"There was internal debate at the Bernab\u00e9u over whether Konat\u00e9 was the right fit, and his injury record explains some of that hesitation. But he is 27, quick enough to defend the high line Madrid have struggled to protect for two seasons, and he cost nothing at a moment when comparable defenders were going for \u00a350m upwards. For Liverpool, who also released Mohamed Salah and let Andy Robertson leave in the same window, it is the departure that stings most.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Free\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Liverpool\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"27\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"2030\",\n                    \"label\": \"Contract until\"\n                }\n            ]\n        },\n        {\n            \"id\": 9,\n            \"name\": \"Robert Lewandowski to Chicago Fire\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/lewandowski\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Gregg Berhalter says Chicago first looked at this in January 2025. Eighteen months of persistence later, with Saudi and European clubs circling, the Fire signed a 37-year-old with 589 career club goals on a free the week his Barcelona contract expired.\",\n            \"textBottom\": \"MLS has seen this film before and it does not always end well, but the circumstances here are unusually favourable. Lewandowski scored 14 times in 31 La Liga games last season while no longer a guaranteed starter, and managed 120 goals in 193 appearances across four years in Catalonia. He has also converted 48 of 56 club penalties in his career, at a club that had taken more spot-kicks than anyone in MLS and converted only three of six. Chicago were third in the Eastern Conference at the World Cup break and already have the Golden Boot leader in Hugo Cuypers. This is a finisher added to a functioning team, not a rescue mission.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Free\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Barcelona\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"37\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"589\",\n                    \"label\": \"Career club goals\"\n                }\n            ]\n        },\n        {\n            \"id\": 8,\n            \"name\": \"Marc Cucurella to Real Madrid\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/cucurella\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"The first signing of the Mourinho era, and a genuinely revealing one. Cucurella is the first player over 25 to arrive at Real Madrid for a fee above \u00a32m since Eden Hazard in 2019. After years of buying potential, Madrid have bought someone ready now.\",\n            \"textBottom\": \"Chelsea, facing a season without European football and needing to balance the books, were willing sellers at \u00a351.8m. Madrid filled a problem position in the opening week of the window rather than scrambling through late August, and the pattern held: Bernardo Silva, Konat\u00e9 and Denzel Dumfries all followed within a month. Cucurella brings three years of high-volume Premier League football and a reputation for being considerably nastier than he looks. Mourinho, of all managers, will enjoy that.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a351.8m\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Chelsea\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"27\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"First\",\n                    \"label\": \"Madrid signing of summer\"\n                }\n            ]\n        },\n        {\n            \"id\": 7,\n            \"name\": \"Marcos Senesi to Tottenham\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/senesi\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Senesi ran his Bournemouth contract to expiry and walked into a rebuilt Tottenham side without a penny changing hands. From the player's side it was ruthlessly well managed. From Tottenham's, it was simply free, at a moment when they were paying eight figures for defenders elsewhere.\",\n            \"textBottom\": \"The clearest measure of the deal is what happened next: Bournemouth had to spend \u00a325m on Antonio Silva to replace him. Senesi gives Spurs a left-sided centre-back with four seasons of Premier League football behind him, comfortable defending in space and progressive enough on the ball to suit a side that wants to build from the back. Set against the \u00a352m spent on Jan Paul van Hecke, he makes an expensive defensive rebuild considerably more affordable than it looks.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Free\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Bournemouth\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"29\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"4\",\n                    \"label\": \"Premier League seasons\"\n                }\n            ]\n        },\n        {\n            \"id\": 6,\n            \"name\": \"John Stones to Inter Milan\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/stones\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Twenty major honours, six Premier League titles, a Champions League and 94 England caps, and Inter got him for nothing on a reported \u20ac4m a season. Gazzetta reported the Serie A champions first approached his representatives back in March, months before Chelsea, Arsenal, Juventus and Napoli started circling.\",\n            \"textBottom\": \"The timing was the masterstroke. Inter had been pursuing Cristian Romero but stalled on the combined cost of fee and wages; Stones, as a free agent, removed half that problem overnight. The fitness record is the obvious caveat, with just 439 Premier League minutes in his final City season, and a two-year deal prices that in sensibly. But he reunites with Manuel Akanji, Serie A asks fewer weekly physical questions than the Premier League, and he arrives having played five of England's eight World Cup matches on the way to third place.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Free\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Manchester City\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"32\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"295\",\n                    \"label\": \"Man City appearances\"\n                }\n            ]\n        },\n        {\n            \"id\": 5,\n            \"name\": \"James Trafford to Leeds United\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/trafford\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"For the second time in two years, James Trafford is the most expensive British goalkeeper in history. Leeds broke their club record to sign a 23-year-old who made just 17 appearances last season, having lost his league place after City signed Gianluigi Donnarumma in September.\",\n            \"textBottom\": \"The context makes it look far shrewder. Trafford started every domestic cup tie as City completed the FA Cup and Carabao Cup double, including the final against Chelsea, and went to the World Cup with England. He is also the only goalkeeper to keep six clean sheets at a European Under-21 Championship, saving a stoppage-time penalty in the 2023 final. Leeds had no settled number one last season, with Lucas Perri and Karl Darlow both playing at least 15 league games, and the five-year deal reflects what they are actually buying: not a goalkeeper for this season, but one for the next decade.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a340m\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Manchester City\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"23\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"5 years\",\n                    \"label\": \"Contract length\"\n                }\n            ]\n        },\n        {\n            \"id\": 4,\n            \"name\": \"Youri Tielemans to Manchester United\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/tielemans\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"United simply triggered the \u00a335m release clause. In a window where central midfielders were the most expensive commodity in the game, that is close to a loophole, and it landed a player who captained Belgium at the World Cup and scored twice in the 3-2 win over Senegal in the last 16.\",\n            \"textBottom\": \"Tielemans joined Villa on a free from Leicester in 2023 and left with 134 appearances, ten goals, both the Players' Player and Supporters' Player awards for 2024\/25, and a Europa League winner's medal after volleying his side on their way past Freiburg in the final. He had already scored the winner in an FA Cup final. Alongside Andrey Santos, signed from Chelsea earlier in the window, he gives United a midfield that needs no settling-in period at a price that looks increasingly absurd next to the rest of this list.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a335m\",\n                    \"label\": \"Release clause\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Aston Villa\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"29\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"134\",\n                    \"label\": \"Villa appearances\"\n                }\n            ]\n        },\n        {\n            \"id\": 3,\n            \"name\": \"Elliot Anderson to Manchester City\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Expensive\/anderson\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"A hundred and sixteen million pounds is not value in any conventional sense. It beat the \u00a3115m Real Madrid committed for Jude Bellingham in 2023, and for about three weeks it made Anderson the most expensive British player in history, until Morgan Rogers went to Chelsea for \u00a3117m. But City identified him early, with Hugo Viana reportedly earmarking him a year in advance, and moved before Manchester United could.\",\n            \"textBottom\": \"The uncomfortable footnote belongs to Newcastle, who sold Anderson to Forest for \u00a335m in June 2024 while scrambling to avoid a PSR breach, and were in such a weak position that they could not even secure a buy-back clause. Forest banked the entire difference. City, meanwhile, got a 23-year-old who started all 38 league games last season, scored four, assisted four and ranked in the division's top five for both tackles and passes. Decisiveness at this end of the market is its own kind of efficiency, but the margin for error is nil.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a3116m\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Nottingham Forest\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"23\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u00a335m\",\n                    \"label\": \"Cost Forest in 2024\"\n                }\n            ]\n        },\n        {\n            \"id\": 2,\n            \"name\": \"Denzel Dumfries to Real Madrid\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/dumfries\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Buried in a contract renewal Dumfries signed in November 2024 was a release clause that dropped to \u20ac20m in the summer of 2026, down from \u20ac25m the previous window. Madrid noticed, triggered it, and signed a Netherlands international with 207 Inter appearances, 27 goals and 28 assists for roughly \u00a317m.\",\n            \"textBottom\": \"Half of Europe was sounded out on him and nobody moved. Madrid did, and had a four-year deal to 2030 agreed while everyone else deliberated, delaying the announcement to July so the cost landed in the following financial year. With Dani Carvajal's contract expired, Trent Alexander-Arnold had been the only senior right-back at the club; Dumfries arrives as the more defensively secure option for the biggest nights. Inter still booked a capital gain of around \u20ac18.4m, which tells you how little of their original outlay was left on the books. On value per pound, nobody in Europe did better.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"\u20ac20m\",\n                    \"label\": \"Release clause\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Inter Milan\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"30\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"207\",\n                    \"label\": \"Inter appearances\"\n                }\n            ]\n        },\n        {\n            \"id\": 1,\n            \"name\": \"Bernardo Silva to Real Madrid\",\n            \"img\": \"https:\/\/imagescache.365scores.com\/image\/upload\/c_limit,q_auto:eco\/Magazines\/ENG-magazine\/Transfers\/Best\/bernardosilva\",\n            \"imagePosition\": \"center 22%\",\n            \"textTop\": \"Fabrizio Romano reported that Madrid's pursuit began 36 hours before it was closed. Barcelona had been working on Bernardo Silva for months and Atl\u00e9tico were interested too; Mourinho phoned his compatriot, and a nine-year Manchester City career ended in white rather than blaugrana. Total cost: nothing.\",\n            \"textBottom\": \"The numbers behind the free transfer are startling. Silva made 460 appearances after arriving from Monaco in 2017, won six Premier League titles and a Champions League, and captained the side in his final season following Kyle Walker's departure. He can play across the front line or in central midfield, he is 31 rather than 34, and the two-year deal to 2028 carries no resale risk whatsoever. Madrid have spent a decade perfecting this trick, from Alaba to R\u00fcdiger to Alexander-Arnold. In the summer they needed it most, with a squad rebuild to fund and two trophyless seasons behind them, this was the cleanest execution of it yet.\",\n            \"stats\": [\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Free\",\n                    \"label\": \"Transfer fee\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"Manchester City\",\n                    \"label\": \"Moving from\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"31\",\n                    \"label\": \"Age\"\n                },\n                {\n                    \"icon\": \"\",\n                    \"value\": \"460\",\n                    \"label\": \"Man City appearances\"\n                }\n            ]\n        }\n    ]\n}; const nav = document.getElementById('js-nav');\n  const sections = document.getElementById('js-sections');\n  const tocList = document.getElementById('js-toc-list');\n\n  \/\/ Init Hero\n  document.getElementById('js-hero-title').textContent = data.hero.title;\n  const heroBg = document.getElementById('js-hero-bg');\n  const heroImg = document.getElementById('js-hero-img');\n  if (heroBg) heroBg.style.backgroundImage = data.hero.img ? `url(\"${data.hero.img}\")` : 'none';\n  if (heroImg) {\n    if (data.hero.img) {\n      heroImg.src = data.hero.img;\n      heroImg.style.display = 'block';\n    } else {\n      heroImg.removeAttribute('src');\n      heroImg.style.display = 'none';\n    }\n  }\n  document.getElementById('js-hero-copy').innerHTML = data.hero.copy ? `<p>${data.hero.copy}<\/p>` : '';\n\n  const heroSection = document.querySelector('.scores-hero');\n  const firstItem = data.items && data.items.length ? data.items[0] : null;\n  if (heroSection && firstItem) heroSection.id = `article-item-${firstItem.id}`;\n\n  const heroFirstItem = document.getElementById('js-hero-first-item');\n  if (heroFirstItem) {\n    if (firstItem) {\n      const secondItem = data.items[1] || null;\n      const visibleStats = (firstItem.stats || []).filter(s => s && (\n        String(s.icon || '').trim() ||\n        String(s.value || '').trim() ||\n        String(s.label || '').trim()\n      ));\n\n      const statsHtml = visibleStats.map(s => {\n        const hasIcon = Boolean(String(s.icon || '').trim());\n        const iconHtml = hasIcon ? `<div class=\"scores-stat-icon\"><img decoding=\"async\" src=\"${s.icon}\" alt=\"${s.label || ''}\"><\/div>` : '';\n        return `\n          <div class=\"scores-stat ${hasIcon ? 'has-icon' : 'no-icon'}\">\n            ${iconHtml}\n            <div class=\"scores-stat-value\">${s.value || ''}<\/div>\n            <div class=\"scores-stat-label\">${s.label || ''}<\/div>\n          <\/div>\n        `;\n      }).join('');\n\n      heroFirstItem.innerHTML = `\n        <div class=\"scores-hero-first-kicker\">${firstItem.id}.<\/div>\n        <h2 class=\"scores-hero-first-title\">${firstItem.name || ''}<\/h2>\n        <div class=\"scores-hero-first-copy\">\n          ${firstItem.textTop ? `<p>${firstItem.textTop}<\/p>` : ''}\n        <\/div>\n        ${firstItem.img ? `<div class=\"scores-hero-first-image\" style=\"--image-position:${firstItem.imagePosition || 'center 22%'}\"><img decoding=\"async\" src=\"${firstItem.img}\" loading=\"eager\" alt=\"${firstItem.name || ''}\"><\/div>` : ''}\n        <div class=\"scores-hero-first-copy\">\n          ${firstItem.textBottom ? `<p>${firstItem.textBottom}<\/p>` : ''}\n        <\/div>\n        ${visibleStats.length ? `<div class=\"scores-stats-grid scores-stats-count-${visibleStats.length}\">${statsHtml}<\/div>` : ''}\n      `;\n    } else {\n      heroFirstItem.style.display = 'none';\n    }\n  }\n\n\n  \/\/ Build article items\n  data.items.forEach((d, index) => {\n    const nextDriver = data.items[index + 1];\n    const nextId = nextDriver ? nextDriver.id : null;\n\n    \/\/ Nav button\n    const btn = document.createElement('button');\n    btn.className = 'scores-nav-button';\n    btn.textContent = d.id;\n    btn.dataset.articleId = String(d.id);\n    btn.onclick = () => scrollToSection(d.id);\n    nav.appendChild(btn);\n\n    \/\/ ToC entry\n    const tocBtn = document.createElement('button');\n    tocBtn.style = 'display:block; width:100%; text-align:left; padding:12px; margin-bottom:8px; border:none; background:var(--soft); cursor:pointer; border-radius:12px; font-weight:700; color:var(--text);';\n    tocBtn.textContent = `${d.id}. ${d.name}`;\n    tocBtn.onclick = () => { scrollToSection(d.id); toggleToC(false); };\n    tocList.appendChild(tocBtn);\n\n    if (index === 0) return;\n\n    \/\/ Stats HTML\n    const visibleStats = (d.stats || []).filter(s => s && (\n      String(s.icon || '').trim() ||\n      String(s.value || '').trim() ||\n      String(s.label || '').trim()\n    ));\n\n    const statsHtml = visibleStats.map(s => {\n      const hasIcon = Boolean(String(s.icon || '').trim());\n      const iconHtml = hasIcon ? `<div class=\"scores-stat-icon\"><img decoding=\"async\" src=\"${s.icon}\" alt=\"${s.label || ''}\"><\/div>` : '';\n\n      return `\n        <div class=\"scores-stat ${hasIcon ? 'has-icon' : 'no-icon'}\">\n          ${iconHtml}\n          <div class=\"scores-stat-value\">${s.value || ''}<\/div>\n          <div class=\"scores-stat-label\">${s.label || ''}<\/div>\n        <\/div>\n      `;\n    }).join('');\n\n    \/\/ Card\n    const sect = document.createElement('section');\n    sect.className = 'scores-section-shell';\n    sect.id = `article-item-${d.id}`;\n    sect.innerHTML = `\n      <div class=\"scores-card\">\n        <div class=\"scores-card-header\"><h2>${d.id}. ${d.name}<\/h2><\/div>\n        <div class=\"scores-card-body\">\n          <p>${d.textTop}<\/p>\n          ${d.img ? `<div class=\"scores-image-wrap\" style=\"--image-position:${d.imagePosition || 'center 22%'}\"><img decoding=\"async\" src=\"${d.img}\" loading=\"lazy\" alt=\"${d.name}\"><\/div>` : ''}\n          <p>${d.textBottom}<\/p>\n          ${visibleStats.length ? `<div class=\"scores-stats-grid scores-stats-count-${visibleStats.length}\">${statsHtml}<\/div>` : ''}\n          ${nextId ? `<button type=\"button\" class=\"scores-next-button\" onclick=\"scrollToSection(${nextId})\">Next \u203a<\/button>` : ''}\n        <\/div>\n      <\/div>\n    `;\n    sections.appendChild(sect);\n  });\n\n  \/\/ ToC controls\n  function toggleToC(open) {\n    document.getElementById('js-toc-drawer').classList.toggle('is-open', open);\n    document.getElementById('js-toc-overlay').classList.toggle('is-open', open);\n  }\n  document.getElementById('js-toc-open').onclick = () => toggleToC(true);\n  document.getElementById('js-toc-close').onclick = () => toggleToC(false);\n  document.getElementById('js-toc-overlay').onclick = () => toggleToC(false);\n  document.getElementById('js-start').onclick = () => { if (data.items.length > 1) scrollToSection(data.items[1].id); else if (data.items.length) scrollToSection(data.items[0].id); };\n\n  \/\/ Active nav highlight for manual scrolling only. Clicks set the active state immediately.\n  const observer = new IntersectionObserver((entries) => {\n    if (scoresProgrammaticScroll) return;\n\n    entries.forEach(entry => {\n      if (entry.isIntersecting) {\n        const id = entry.target.id.replace('article-item-', '');\n        setActiveNavButton(id);\n      }\n    });\n  }, { rootMargin: '-20% 0px -70% 0px' });\n\n  const observedHero = document.querySelector('.scores-hero[id^=\"article-item-\"]');\n  if (observedHero) observer.observe(observedHero);\n  document.querySelectorAll('.scores-section-shell').forEach(s => observer.observe(s));\n});\n<\/script>\n\n\n\n<p><em>By Nicky Helfgott &#8211; <\/em><a href=\"https:\/\/x.com\/NickyHelfgott1\"><em>NickyHelfgott1 on X (Twitter<\/em>)<\/a><\/p>\n\n\n\n<p>Keep up with all the <a href=\"https:\/\/www.365scores.com\/news\">latest football news<\/a> and<a href=\"https:\/\/www.365scores.com\/en-us\/football\/league\/premier-league-7\/news\"> Premier League news<\/a> on 365Scores!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2630 Continue Reading Contents &times; By Nicky Helfgott &#8211; NickyHelfgott1 on X (Twitter) Keep up with all the latest football news and Premier League news on 365Scores!<\/p>\n","protected":false},"author":29,"featured_media":21074,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2509,2338,9],"tags":[821,5564,3476,3726,15,5391,59,5565,108,5563,180,3172],"content-tags":[],"class_list":["post-21071","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-champions-league","category-premier-league","category-soccer","tag-bernardo-silva","tag-best-transfers-2026","tag-denzel-dumfries","tag-elliot-anderson","tag-manchester-city","tag-ranking","tag-real-madrid","tag-sandro-tonali","tag-soccer","tag-summer-transfer-window-2026","tag-tottenham-hotspur","tag-transfer-news","article_type-discover","entity_type-athlete","entity_type-competition","entity_type-competitor","inspiration-365s-articles"],"_links":{"self":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts\/21071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/comments?post=21071"}],"version-history":[{"count":5,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts\/21071\/revisions"}],"predecessor-version":[{"id":21077,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts\/21071\/revisions\/21077"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/media\/21074"}],"wp:attachment":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/media?parent=21071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/categories?post=21071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/tags?post=21071"},{"taxonomy":"content-tags","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/content-tags?post=21071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}