{"id":17573,"date":"2026-02-26T15:24:47","date_gmt":"2026-02-26T06:24:47","guid":{"rendered":"https:\/\/todai-soccer.com\/?page_id=17573"},"modified":"2026-02-26T15:24:50","modified_gmt":"2026-02-26T06:24:50","slug":"2026%e9%81%b8%e6%89%8b%e3%83%bb%e5%ad%a6%e7%94%9f%e3%82%b9%e3%82%bf%e3%83%83%e3%83%95","status":"publish","type":"page","link":"https:\/\/todai-soccer.com\/?page_id=17573","title":{"rendered":"2026\u9078\u624b\u30fb\u5b66\u751f\u30b9\u30bf\u30c3\u30d5"},"content":{"rendered":"\n<body>\n    <main>\n        <nav id=\"class-year-nav\" class=\"class-year-nav\"><\/nav>\n        <section id=\"member-list\" class=\"member-list\"><\/section>\n    <\/main>\n\n    <div id=\"modal\" class=\"modal-overlay\">\n        <div class=\"modal-content\">\n            <button class=\"modal-close-button\">&times;<\/button>\n            <div class=\"modal-header\">\n                <div class=\"modal-header-image\">\n                    <img decoding=\"async\" id=\"modal-img\" src=\"\" alt=\"\u90e8\u54e1\u306e\u5199\u771f\">\n                <\/div>\n                <div class=\"modal-header-info\">\n                    <h2 id=\"modal-name-jp\"><\/h2>\n                    <p id=\"modal-name-en\"><\/p>\n                    <div class=\"header-meta\">\n                        <span id=\"modal-grade\"><\/span>\n                        <span class=\"separator\">|<\/span>\n                        <span id=\"modal-class-year\"><\/span>\n                    <\/div>\n                    <p id=\"modal-season-theme\"><\/p>\n                <\/div>\n            <\/div>\n            <div id=\"modal-body\" class=\"modal-body\"><\/div>\n        <\/div>\n    <\/div>\n<\/body>\n\n<script>\n\/\/ \u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u516c\u958bURL\nconst SPREADSHEET_URL = 'https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vTX1IBoxHiM02GuYnrz23zZWbFknAxuRqvK_HYEirbudSL2zspLR8KvundxOhPLMuMm60ue_QB0DULH\/pub?output=csv';\n\ndocument.addEventListener('DOMContentLoaded', function() {\n    fetch(SPREADSHEET_URL)\n        .then(response => {\n            if (!response.ok) throw new Error('\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5fdc\u7b54\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002');\n            return response.text();\n        })\n        .then(csvText => {\n            const memberData = csvToMemberData(csvText);\n            initializePageWithGrouping(memberData);\n        })\n        .catch(error => {\n            console.error('\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f:', error);\n            const memberList = document.querySelector('#member-list');\n            memberList.innerHTML = `<p style=\"text-align: center; color: red;\">\u90e8\u54e1\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002URL\u3084\u516c\u958b\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>`;\n        });\n});\n\nfunction csvToMemberData(csvText) {\n    const memberData = {};\n    const lines = csvText.trim().replace(\/\\r\/g, '').split('\\n');\n    const headers = lines[0].split(',').map(h => h.trim());\n    const keyMap = { \n        '\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7': 'timestamp', \n        '\u540d\u5b57\uff08\u65e5\u672c\u8a9e\u8868\u8a18\uff09': 'lastNameJp', \n        '\u540d\u524d\uff08\u65e5\u672c\u8a9e\u8868\u8a18\uff09': 'firstNameJp', \n        '\u540d\u5b57\uff08\u30ed\u30fc\u30de\u5b57\u8868\u8a18\u3000\u4f8b\uff1aAshiki\uff09': 'lastNameEn', \n        '\u540d\u524d\uff08\u30ed\u30fc\u30de\u5b57\u8868\u8a18 \u4f8b\uff1aTaro\uff09': 'firstNameEn', \n        '\u5199\u771f\uff08\u9078\u624b\u540d\u9451\u306a\u3069\u3067\u4f7f\u3046\u3082\u306e\uff09': 'photo', \n        '\u5199\u771f\uff08\u30db\u30d0\u30fc\u6642\uff09': 'photoHover', \n        '\u30a2\u5f0f\u4f55\u671f\u751f\u3067\u3059\u304b': 'classYear', \n        '\u30dd\u30b8\u30b7\u30e7\u30f3': 'position', \n        '\u8eab\u9577\u306f\u4f55cm\u3067\u3059\u304b\uff08\u5358\u4f4d\u306a\u3057\u3000\u4f8b \u25cb170.5  \u00d7170.5cm\uff09': 'height', \n        '\u4f53\u91cd\u306f\u4f55kg\u3067\u3059\u304b\uff08\u5358\u4f4d\u306a\u3057\u3000\u4f8b \u25cb70.5   \u00d770.5kg\uff09': 'weight', \n        '\u5b66\u5e74\uff082026\u5e744\u6708\u6642\u70b9\uff09': 'grade', \n        '\u79d1\u985e\u3092\u6559\u3048\u3066\u304f\u3060\u3055\u3044': 'classTypeInitial',\n        '\u5165\u5b66\u6642\u306e\u79d1\u985e\u3092\u6559\u3048\u3066\u304f\u3060\u3055\u3044':'karui',\n        '\u5f8c\u671f\u8ab2\u7a0b\u306e\u5b66\u90e8\u30fb\u5b66\u79d1\uff08\u30fb\u30b3\u30fc\u30b9\u7b49\uff09\u3092\u6b63\u5f0f\u540d\u79f0\u3067\u6559\u3048\u3066\u304f\u3060\u3055\u3044': 'faculty', \n        '\u5f79\u8077\u3092\u6559\u3048\u3066\u304f\u3060\u3055\u3044': 'role', \n        '\u6771\u4eac\u5927\u5b66\u306b\u6240\u5c5e\u3057\u3066\u3044\u307e\u3059\u304b': 'isTodai', \n        '\u6587\u7cfbor\u7406\u7cfb': 'studyType', \n        '\u73fe\u5f79or\u6d6a\u4eba\uff1f': 'studentStatus', \n        '\u5f15\u9000\u6642\u671f\uff08\u300c\u9ad82\u306e3\u6708\u300d\u306e\u3088\u3046\u306b\u7b54\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u90e8\u6d3b\u306b\u5165\u3063\u3066\u3044\u306a\u304b\u3063\u305f\u3001\u3082\u3057\u304f\u306f\u30b5\u30c3\u30ab\u30fc\u90e8\u3067\u306a\u304b\u3063\u305f\u4eba\u306f\u7121\u56de\u7b54\u3067\u5927\u4e08\u592b\u3067\u3059\u3002\uff09': 'retirementDate', \n        '\u901a\u3063\u3066\u3044\u305f\u587e\uff08\u73fe\u5f79\u6642\u3001\u6d6a\u4eba\u6642\u3067\u5206\u3051\u3066\u3082OK\uff09': 'juku', \n        '\u9078\u629e\u79d1\u76ee\uff08\u6587\u7cfb\u306f\u793e\u4f1a\u3001\u7406\u7cfb\u306f\u7406\u79d1\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044\uff09': 'electiveSubjects', \n        '\u5f97\u610f\u79d1\u76ee': 'strongSubject', \n        '\u82e6\u624b\u79d1\u76ee': 'weakSubject', \n        '\u53d7\u9a13\u671f\u306e1\u65e5\u306e\u52c9\u5f37\u6642\u9593\uff08\u5b66\u6821\u542b\u3080\uff09': 'studyTime', \n        '\u304a\u3059\u3059\u3081\u306e\u53c2\u8003\u66f8': 'recommendedBook', \n        '\u53d7\u9a13\u52c9\u5f37\u3067\u610f\u8b58\u3057\u3066\u3044\u305f\u3053\u3068': 'studyFocus', \n        '2026\u30b7\u30fc\u30ba\u30f3\u306e\u30c6\u30fc\u30de': 'seasonTheme', \n        '\u751f\u5e74\u6708\u65e5': 'birthDate', \n        '\u51fa\u8eab\u5730\uff08\u90fd\u9053\u5e9c\u770c\u307e\u3067\u3064\u3051\u3066\u304f\u3060\u3055\u3044\u3000\u00d7\u6771\u4eac\u3000\u25cb\u6771\u4eac\u90fd\uff09': 'hometown', \n        '\u7d4c\u6b74\uff08\u4f8b\uff1a\u25cb\u25cb\u4e2d\u5b66\u2192\u25cb\u25cb\u9ad8\u6821\uff08\u25cb\u25cbFC\uff09\uff09': 'career', \n        '\u6240\u5c5e\u30e6\u30cb\u30c3\u30c8\u30fb\u30c1\u30fc\u30e0': 'unitTeam', \n        '\u90e8\u5185\u5f79\u8077\uff08\u3042\u308c\u3070\uff09\uff08\u4e3b\u5c06\u3001\u526f\u5c06\u3001\u4e3b\u52d9\u3001\u30e6\u30cb\u30c3\u30c8\u9577\u7b49\uff09': 'clubRole', \n        '\u611b\u79f0': 'nickname', \n        '\u5229\u304d\u8db3': 'dominantFoot', \n        '\u661f\u5ea7': 'zodiacSign', \n        '\u8840\u6db2\u578b': 'bloodType', \n        '\u5144\u5f1f\u69cb\u6210\uff08\u4f8b\uff1a\u59c91\u4eba\u3001\u5f1f2\u4eba\uff09': 'siblings', \n        '\u597d\u304d\u306a\u30b9\u30d1\u30a4\u30af\u306e\u30e1\u30fc\u30ab\u30fc': 'spikeMaker', \n        '\u597d\u304d\u306a\u30b5\u30c3\u30ab\u30fc\u30c1\u30fc\u30e0': 'faveTeam', \n        '\u597d\u304d\u306a\u30b5\u30c3\u30ab\u30fc\u9078\u624b': 'favePlayer', \n        '\u5f97\u610f\u306a\u30d7\u30ec\u30fc': 'strongPlay', \n        '\u30b5\u30c3\u30ab\u30fc\u3092\u59cb\u3081\u305f(\u898b\u59cb\u3081\u305f)\u5e74\u9f62\u3001\u304d\u3063\u304b\u3051\uff08\u7c21\u5358\u306b\uff09': 'startOfSoccer', \n        '\u81ea\u5206\u306b\u3068\u3063\u3066\u30b5\u30c3\u30ab\u30fc\u3068\u306f': 'whatIsSoccer', \n        '\u304a\u3059\u3059\u3081\u306e\u99d2\u5834\u306e\u6388\u696d': 'recommendedClass', \n        '\u5ea7\u53f3\u306e\u9298': 'motto', \n        '\u30a4\u30c1\u30aa\u30b7\u306e\u672c': 'faveBook', \n        '\u30a4\u30c1\u30aa\u30b7\u306e\u6620\u753b': 'faveMovie', \n        '\u30a4\u30c1\u30aa\u30b7\u306e\u30a2\u30cb\u30e1\u30fb\u30de\u30f3\u30ac': 'faveManga', \n        '\u3088\u304f\u805e\u304f\u97f3\u697d\u30fb\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8': 'faveMusic', \n        '\u597d\u304d\u306a\u82b8\u80fd\u4eba': 'faveCelebrity', \n        '\u597d\u304d\u306a\u98df\u3079\u7269': 'faveFood', \n        '\u82e6\u624b\u306a\u98df\u3079\u7269': 'dislikedFood', \n        '\u8da3\u5473': 'hobby', \n        '\u7279\u6280': 'specialSkill', \n        '\u4eca\u5b63\u306e\u76ee\u6a19\uff08\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\uff09': 'privateGoal', \n        '\u6708\u30aa\u30d5\u306e\u904e\u3054\u3057\u65b9': 'offDay', \n        '\u8a66\u5408\u524d\u306b\u5fc5\u305a\u3059\u308b\u3053\u3068': 'preGameRoutine', \n        '\u304a\u91d1\u306e\u4f7f\u3044\u9053': 'spendingHabits', \n        '\u6bcd\u6821\u306e\u81ea\u6162': 'schoolPride', \n        '\u5352\u90e8\u5f8c\u306b\u3057\u305f\u3044\u3053\u3068': 'afterClub', \n        '\u81ea\u5206\u306e\u6027\u683c\u3092\u4e00\u8a00\u3067': 'personality', \n        '\u597d\u304d\u306a\u30a2\u5f0f\u306e\u30c1\u30e3\u30f3\u30c8': 'faveChant', \n        '\u597d\u304d\u306a\u5834\u6240\u30fb\u3088\u304f\u884c\u304f\u5834\u6240': 'favePlace', \n        '\u5c06\u6765\u306e\u5922': 'futureDream', \n        '\u5fdc\u63f4\u3057\u3066\u304f\u308c\u308b\u65b9\u3078\u30e1\u30c3\u30bb\u30fc\u30b8': 'messageToSupporters', \n        '\u81ea\u7531\u8a18\u5165\u6b04': 'freeText' \n    };\n\n    for (let i = 1; i < lines.length; i++) {\n        const values = lines[i].split(',');\n        const member = {};\n        headers.forEach((header, index) => {\n            const key = keyMap[header];\n            if (key) member[key] = values[index] ? values[index].trim() : '';\n        });\n        if (!member.firstNameJp && !member.lastNameJp) continue;\n        const memberId = `m${i}`;\n        let displayPosition = (member.position === '') ? (member.role || member.position) : member.position;\n        let gakubu_gakka = (member.faculty === '') ? (member.classTypeInitial || member.faculty) : member.faculty;\n\n        memberData[memberId] = {\n            cardInfo: { \n                name: `${member.lastNameJp} ${member.firstNameJp}`, \n                grade: member.grade, \n                department: gakubu_gakka, \n                catchphrase: member.seasonTheme, \n                photo: member.photo || `https:\/\/todai-soccer.com\/wp-content\/uploads\/2025\/06\/2025no_image.jpg`,\n                photoHover: member.photoHover || member.photo || `https:\/\/todai-soccer.com\/wp-content\/uploads\/2025\/06\/2025no_image.jpg`\n            },\n            profile: { name_en: `${member.firstNameEn.toUpperCase()} ${member.lastNameEn.toUpperCase()}`, class_year: member.classYear, season_theme: member.seasonTheme, position: displayPosition, height: member.height, weight: member.weight, hometown: member.hometown, career: member.career, faculty: gakubu_gakka, role_unit: `${member.clubRole}\/${member.unitTeam}`, foot: member.dominantFoot, birthDate: member.birthDate },\n            study: member.studentStatus ? { category: member.classTypeInitial || member.karui, type: member.studyType, student_type: member.studentStatus, retirement_date: member.retirementDate, juku: member.juku, subjects: member.electiveSubjects, good_subject: member.strongSubject, bad_subject: member.weakSubject, study_time: member.studyTime, reference_book: member.recommendedBook, consciousness: member.studyFocus, } : null,\n            qa: { '\u611b\u79f0': member.nickname, '\u661f\u5ea7': member.zodiacSign, '\u8840\u6db2\u578b': member.bloodType, '\u5144\u5f1f\u69cb\u6210': member.siblings, '\u597d\u304d\u306a\u30b9\u30d1\u30a4\u30af\u306e\u30e1\u30fc\u30ab\u30fc': member.spikeMaker, '\u597d\u304d\u306a\u30b5\u30c3\u30ab\u30fc\u30c1\u30fc\u30e0': member.faveTeam, '\u597d\u304d\u306a\u30b5\u30c3\u30ab\u30fc\u9078\u624b': member.favePlayer, '\u5f97\u610f\u306a\u30d7\u30ec\u30fc': member.strongPlay, '\u30b5\u30c3\u30ab\u30fc\u3092\u59cb\u3081\u305f\u5e74\u9f62\u3001\u304d\u3063\u304b\u3051': member.startOfSoccer, '\u81ea\u5206\u306b\u3068\u3063\u3066\u30b5\u30c3\u30ab\u30fc\u3068\u306f': member.whatIsSoccer, '\u304a\u3059\u3059\u3081\u306e\u99d2\u5834\u306e\u6388\u696d': member.recommendedClass, '\u5ea7\u53f3\u306e\u9298': member.motto, '\u30a4\u30c1\u30aa\u30b7\u306e\u672c': member.faveBook, '\u30a4\u30c1\u30aa\u30b7\u306e\u6620\u753b': member.faveMovie, '\u30a4\u30c1\u30aa\u30b7\u306e\u30a2\u30cb\u30e1\u30fb\u30de\u30f3\u30ac': member.faveManga, '\u3088\u304f\u805e\u304f\u97f3\u697d\u30fb\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8': member.faveMusic, '\u597d\u304d\u306a\u82b8\u80fd\u4eba': member.faveCelebrity, '\u597d\u304d\u306a\u98df\u3079\u7269': member.faveFood, '\u82e6\u624b\u306a\u98df\u3079\u7269': member.dislikedFood, '\u8da3\u5473': member.hobby, '\u7279\u6280': member.specialSkill, '\u4eca\u5b63\u306e\u76ee\u6a19\uff08\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\uff09': member.privateGoal, '\u6708\u30aa\u30d5\u306e\u904e\u3054\u3057\u65b9': member.offDay, '\u8a66\u5408\u524d\u306b\u5fc5\u305a\u3059\u308b\u3053\u3068': member.preGameRoutine, '\u304a\u91d1\u306e\u4f7f\u3044\u9053': member.spendingHabits, '\u6bcd\u6821\u306e\u81ea\u6162': member.schoolPride, '\u5352\u90e8\u5f8c\u306b\u3057\u305f\u3044\u3053\u3068': member.afterClub, '\u81ea\u5206\u306e\u6027\u683c\u3092\u4e00\u8a00\u3067': member.personality, '\u597d\u304d\u306a\u30a2\u5f0f\u306e\u30c1\u30e3\u30f3\u30c8': member.faveChant, '\u597d\u304d\u306a\u5834\u6240\u30fb\u3088\u304f\u884c\u304f\u5834\u6240': member.favePlace, '\u5c06\u6765\u306e\u5922': member.futureDream, '\u5fdc\u63f4\u3057\u3066\u304f\u308c\u308b\u65b9\u3078\u30e1\u30c3\u30bb\u30fc\u30b8': member.messageToSupporters, '\u81ea\u7531\u8a18\u5165\u6b04': member.freeText, }\n        };\n    }\n    return memberData;\n}\n\nfunction initializePageWithGrouping(memberData) {\n    const groupedMembers = {};\n    for (const memberId in memberData) {\n        const member = memberData[memberId];\n        const classYear = member.profile.class_year || '\u671f\u4e0d\u660e';\n        if (!groupedMembers[classYear]) groupedMembers[classYear] = [];\n        groupedMembers[classYear].push({ id: memberId, ...member });\n    }\n    const navContainer = document.getElementById('class-year-nav');\n    const listContainer = document.getElementById('member-list');\n    navContainer.innerHTML = '';\n    listContainer.innerHTML = '';\n    const sortedKeys = Object.keys(groupedMembers).sort();\n    for (const classYear of sortedKeys) {\n        const anchor = document.createElement('a');\n        anchor.href = `#group-${classYear}`;\n        anchor.textContent = classYear;\n        navContainer.appendChild(anchor);\n    }\n    for (const classYear of sortedKeys) {\n        const groupWrapper = document.createElement('div');\n        groupWrapper.className = 'member-group';\n        const heading = document.createElement('h2');\n        heading.className = 'class-year-heading';\n        heading.id = `group-${classYear}`;\n        heading.textContent = classYear;\n        groupWrapper.appendChild(heading);\n        const grid = document.createElement('div');\n        grid.className = 'member-grid';\n        groupedMembers[classYear].forEach(member => {\n            const card = document.createElement('div');\n            card.className = 'member-card';\n            card.dataset.memberId = member.id;\n            card.innerHTML = `\n                <div class=\"card-image\">\n                    <img decoding=\"async\" class=\"img-default\" src=\"${member.cardInfo.photo}\" alt=\"${member.cardInfo.name}\u306e\u5199\u771f\" onerror=\"this.onerror=null;this.src='https:\/\/todai-soccer.com\/wp-content\/uploads\/2025\/06\/2025no_image.jpg';\">\n                    <img decoding=\"async\" class=\"img-hover\" src=\"${member.cardInfo.photoHover}\" alt=\"${member.cardInfo.name}\u306e\u5199\u771f(\u30db\u30d0\u30fc)\" onerror=\"this.style.display='none';\">\n                <\/div>\n                <div class=\"card-info\">\n                    <span class=\"grade\">${member.cardInfo.grade || ''} <\/span>\n                    <h3 class=\"name\">${member.cardInfo.name}<\/h3>\n                    <p class=\"catchphrase\">${member.cardInfo.catchphrase}<\/p>\n                <\/div>\n            `;\n            grid.appendChild(card);\n        });\n        groupWrapper.appendChild(grid);\n        listContainer.appendChild(groupWrapper);\n    }\n    setupModal(memberData);\n    \n    \/\/ \u2605\u8ffd\u52a0\uff1a\u30b9\u30de\u30db\u7528\u30b9\u30af\u30ed\u30fc\u30eb\u76e3\u8996\n    setupScrollTrigger();\n}\n\n\/**\n * \u2605\u8ffd\u52a0\uff1a\u30b9\u30de\u30db\u7528\u30b9\u30af\u30ed\u30fc\u30eb\u76e3\u8996\u95a2\u6570\n *\/\nfunction setupScrollTrigger() {\n    const isMobile = window.innerWidth <= 768;\n    if (!isMobile) return;\n\n    const observerOptions = {\n        root: null,\n        rootMargin: '-42% 0px -42% 0px', \/\/ \u5224\u5b9a\u3092\u753b\u9762\u4e2d\u592e\u306b\u9650\u5b9a\n        threshold: 0\n    };\n\n    const observer = new IntersectionObserver((entries) => {\n        entries.forEach(entry => {\n            if (entry.isIntersecting) {\n                entry.target.classList.add('is-active-scroll');\n            } else {\n                entry.target.classList.remove('is-active-scroll');\n            }\n        });\n    }, observerOptions);\n\n    document.querySelectorAll('.member-card').forEach(card => {\n        observer.observe(card);\n    });\n}\n\nfunction setupModal(memberData) {\n    const modal = document.getElementById('modal');\n    const modalBody = document.getElementById('modal-body');\n    const closeButton = modal.querySelector('.modal-close-button');\n    const memberCards = document.querySelectorAll('.member-card');\n    const modalImg = document.getElementById('modal-img');\n    const modalNameEn = document.getElementById('modal-name-en');\n    const modalNameJp = document.getElementById('modal-name-jp');\n    const modalGrade = document.getElementById('modal-grade');\n    const modalClassYear = document.getElementById('modal-class-year');\n    const modalSeasonTheme = document.getElementById('modal-season-theme');\n    memberCards.forEach(card => {\n        card.addEventListener('click', () => {\n            const memberId = card.dataset.memberId;\n            const data = memberData[memberId];\n            if (data) {\n                updateModal(data);\n                modal.classList.add('is-open');\n            }\n        });\n    });\n    const closeModal = () => modal.classList.remove('is-open');\n    closeButton.addEventListener('click', closeModal);\n    modal.addEventListener('click', (e) => { if (e.target === modal) closeModal(); });\n    function updateModal(data) {\n        modalImg.src = data.cardInfo.photo;\n        modalNameJp.textContent = data.cardInfo.name;\n        modalNameEn.textContent = data.profile.name_en;\n        modalGrade.textContent = data.cardInfo.grade;\n        modalClassYear.textContent = data.profile.class_year;\n        modalSeasonTheme.textContent = `\u4eca\u5b63\u306e\u30c6\u30fc\u30de\uff1a${data.profile.season_theme}`;\n        let qaHtml = '';\n        for (const [question, answer] of Object.entries(data.qa)) {\n            if (answer && String(answer).trim()) qaHtml += `<div class=\"q-and-a-block\"><p class=\"question\">Q. ${question}<\/p><p class=\"answer\">${String(answer).replace(\/\\n\/g, '<br>')}<\/p><\/div>`;\n        }\n        let studyNavHtml = '';\n        let studyContentHtml = '';\n        if (data.study) {\n            studyNavHtml = `<div class=\"tab-nav-item\" data-tab=\"study\">STUDY<\/div>`;\n            const studyLabels = { category: '\u5165\u5b66\u6b21\u79d1\u985e', student_type: '\u73fe\u5f79\/\u6d6a\u4eba', retirement_date: '\u90e8\u6d3b\u5f15\u9000\u6642\u671f', juku: '\u587e\u30fb\u4e88\u5099\u6821', subjects: '\u9078\u629e\u79d1\u76ee', good_subject: '\u5f97\u610f\u79d1\u76ee', bad_subject: '\u82e6\u624b\u79d1\u76ee', study_time: '1\u65e5\u306e\u52c9\u5f37\u6642\u9593', reference_book: '\u304a\u3059\u3059\u3081\u306e\u53c2\u8003\u66f8', consciousness: '\u53d7\u9a13\u52c9\u5f37\u3067\u610f\u8b58\u3057\u305f\u3053\u3068' };\n            let studyListHtml = '<ul>';\n            for (const key in studyLabels) {\n                const value = data.study[key];\n                if(value && String(value).trim()) studyListHtml += `<li><span class=\"item-label\">${studyLabels[key]}<\/span><span class=\"item-value\">${value}<\/span><\/li>`;\n            }\n            studyListHtml += '<\/ul>';\n            studyContentHtml = `<div id=\"tab-study\" class=\"tab-content\"><div class=\"content-block\">${studyListHtml}<\/div><\/div>`;\n        }\n        const profileLabels = { position: '\u30dd\u30b8\u30b7\u30e7\u30f3', height: '\u8eab\u9577 \/ \u4f53\u91cd', birthDate: '\u751f\u5e74\u6708\u65e5', hometown: '\u51fa\u8eab\u5730', career: '\u7d4c\u6b74', faculty: '\u5b66\u90e8\u30fb\u5b66\u79d1', role_unit: '\u5f79\u8077\/\u6240\u5c5e', foot: '\u5229\u304d\u8db3' };\n        let profileHtml = '<ul>';\n        for (const key in profileLabels) {\n            let value = data.profile[key];\n            if (key === 'height') {\n                const heightVal = data.profile.height ? String(data.profile.height).trim() : '';\n                const weightVal = data.profile.weight ? String(data.profile.weight).trim() : '';\n                if (!heightVal && !weightVal) continue; \n                value = `${heightVal ? heightVal + 'cm' : ''} \/ ${weightVal ? weightVal + 'kg' : ''}`;\n            }\n            if (value && String(value).trim()) profileHtml += `<li><span class=\"item-label\">${profileLabels[key]}<\/span><span class=\"item-value\">${value}<\/span><\/li>`;\n        }\n        profileHtml += '<\/ul>';\n        modalBody.innerHTML = `<div class=\"tab-nav\"><div class=\"tab-nav-item is-active\" data-tab=\"profile\">PROFILE<\/div>${studyNavHtml}<div class=\"tab-nav-item\" data-tab=\"qa\">Q&A<\/div><\/div><div id=\"tab-profile\" class=\"tab-content is-active\"><div class=\"content-block\">${profileHtml}<\/div><\/div>${studyContentHtml}<div id=\"tab-qa\" class=\"tab-content\"><div class=\"content-block\">${qaHtml}<\/div><\/div>`;\n        const tabNavItems = modal.querySelectorAll('.tab-nav-item');\n        const tabContents = modal.querySelectorAll('.tab-content');\n        tabNavItems.forEach(item => {\n            item.addEventListener('click', () => {\n                const targetTab = item.dataset.tab;\n                if(item.classList.contains('is-active')) return;\n                tabNavItems.forEach(nav => nav.classList.remove('is-active'));\n                item.classList.add('is-active');\n                tabContents.forEach(content => {\n                    content.classList.remove('is-active');\n                    if (content.id === `tab-${targetTab}`) content.classList.add('is-active');\n                });\n            });\n        });\n        if(tabNavItems.length > 0) {\n            tabNavItems[0].classList.add('is-active');\n            const initialContent = modal.querySelector(`#tab-${tabNavItems[0].dataset.tab}`);\n            if(initialContent) initialContent.classList.add('is-active');\n        }\n    }\n}\n<\/script>\n\n<style>\n:root { --primary-color: #187fc4; --background-color: #f0f2f5; --card-background: #ffffff; --text-color: #000000; --text-light-color: #ffffff; --shadow-color: rgba(0, 0, 0, 0.1); }\nhtml { scroll-behavior: smooth; }\nbody { font-family: 'Noto Sans JP', sans-serif; background-color: var(--background-color); color: var(--text-color); margin: 0; line-height: 1.8; }\nh1, h2, h3, h4, h5, h6 { font-family: 'Poppins', sans-serif; font-weight: 700; }\nimg { max-width: 100%; height: auto; vertical-align: middle; }\nh1 { display: none; }\n\n\/* --- \u671f\u3054\u3068\u306e\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30dc\u30bf\u30f3 --- *\/\n.class-year-nav { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; padding: 20px; position: sticky; top: 0; background-color: white; z-index: 100; border-bottom: 1px solid #ddd;}\n.class-year-nav a { display: inline-block; padding: 8px 20px; background-color: #fff; color: var(--primary-color); border: 2px solid var(--primary-color); border-radius: 20px; text-decoration: none; font-weight: bold; transition: all 0.3s ease; }\n.class-year-nav a:hover { background-color: var(--primary-color); color: #fff; }\n\n\/* --- \u30e1\u30f3\u30d0\u30fc\u4e00\u89a7\u306e\u30b3\u30f3\u30c6\u30ca --- *\/\n.member-list { padding: 0 40px; max-width: 1200px; margin: 0 auto; }\n.member-group { margin-bottom: 60px; }\n.class-year-heading { font-size: 2.5rem; color: var(--primary-color); padding-top: 15px; padding-bottom: 15px; border-bottom: 3px solid #ddd; margin-bottom: 30px; scroll-margin-top: 100px; }\n\n\/* --- \u30ab\u30fc\u30c9\u306e\u30b0\u30ea\u30c3\u30c9 --- *\/\n.member-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 30px; }\n\n\/* --- \u30e1\u30f3\u30d0\u30fc\u30ab\u30fc\u30c9 --- *\/\n.member-card { background-color: var(--card-background); border-radius: 15px; overflow: hidden; box-shadow: 0 10px 20px var(--shadow-color); transition: transform 0.3s ease, box-shadow 0.3s ease; cursor: pointer; }\n.member-card:hover { transform: translateY(-10px); box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15); }\n\n.card-image { width: 100%; height: 300px; overflow: hidden; position: relative; display: grid; grid-template-areas: \"stack\"; }\n.card-image img { grid-area: stack; width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease, opacity 0.4s ease; }\n.card-image .img-default { z-index: 1; opacity: 1; }\n.card-image .img-hover { z-index: 2; opacity: 0; }\n\n\/* \u30db\u30d0\u30fc\u6319\u52d5 *\/\n.member-card:hover .card-image .img-hover { opacity: 1; }\n.member-card:hover .card-image img { transform: scale(1.1); }\n\n\/* \u2605\u8ffd\u52a0\uff1a\u30b9\u30de\u30db\u30b9\u30af\u30ed\u30fc\u30eb\u6319\u52d5 *\/\n.member-card.is-active-scroll .img-hover { opacity: 1; }\n\n.card-info { padding: 20px; text-align: center; background-color:#fff;}\n.card-info .grade { display: block; color: #777; font-size: 0.8rem; margin-bottom: 10px; }\n.card-info .name { margin: 0 0 5px 0; font-size: 1.5rem; }\n.card-info .catchphrase { margin: 0; color: #777; font-size: 0.9rem; }\n\n\/* --- \u30e2\u30fc\u30c0\u30eb\u30a6\u30a3\u30f3\u30c9\u30a6 --- *\/\n.modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.85); display: flex; justify-content: center; align-items: center; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; z-index: 1000; padding: 20px 0; }\n.modal-overlay.is-open { opacity: 1; visibility: visible; }\n.modal-content { background-color: var(--card-background); width: 95%; max-width: 900px; height: 100%; max-height: 95vh; display: flex; flex-direction: column; border-radius: 15px; position: relative; transform: scale(0.9); transition: transform 0.3s ease; overflow: hidden; }\n.modal-overlay.is-open .modal-content { transform: scale(1); }\n.modal-close-button { position: absolute; top: 10px; right: 15px; background: none; border: none; font-size: 2.5rem; color: #aaa; cursor: pointer; line-height: 1; padding: 0; z-index: 10; }\n.modal-header { display: flex; align-items: center; justify-content: flex-start; padding: 30px 40px; gap: 40px; background-color: #f9f9f9; flex-shrink: 0; }\n.modal-header-image { width: 140px; height: 140px; border-radius: 50%; overflow: hidden; flex-shrink: 0; box-shadow: 0 0 15px rgba(0,0,0,0.2); border: 4px solid #fff; }\n.modal-header-image img { width: 100%; height: 100%; object-fit: cover; margin-right: 0; }\n.modal-header-info { line-height: 1.4; }\n#modal-name-jp { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-weight: 700; font-size: 2.5rem; color: var(--primary-color); line-height: 1.2; }\n#modal-name-en { margin: 0 0 4px 0; font-size: 1.2rem; color: #777; letter-spacing: 1px; font-weight: 700; }\n.header-meta { margin-top: 10px; color: #555; font-weight: bold; font-size: 1rem; }\n.header-meta .separator { margin: 0 8px; color: #ccc; }\n#modal-season-theme { font-size: 1.1rem; color: #333; font-weight: bold; margin: 12px 0 0 0; background-color: #e9e9e9; display: inline-block; padding: 4px 12px; border-radius: 15px; }\n\n\/* --- \u30e2\u30fc\u30c0\u30eb \u30bf\u30d6 --- *\/\n.modal-body { padding: 0 30px 30px 30px; overflow-y: auto; }\n.tab-nav { position: sticky; top: -1px; background-color: var(--card-background); z-index: 10; padding-top: 10px; display: flex; border-bottom: 2px solid #eee; margin-bottom: 20px; }\n.tab-nav-item { padding: 10px 20px; cursor: pointer; font-size: 1rem; font-weight: bold; color: #999; border-bottom: 4px solid transparent; transition: all 0.3s ease; }\n.tab-nav-item.is-active { color: var(--primary-color); border-bottom-color: var(--primary-color); }\n.tab-content { display: none; }\n.tab-content.is-active { display: block; animation: fadeIn 0.5s ease; }\n@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }\n.content-block ul { list-style: none; padding: 0; margin: 0; }\n.content-block li { display: flex; padding: 8px 0; border-bottom: 1px solid #f0f0f0; }\n.content-block li:last-child { border-bottom: none; }\n.item-label { font-weight: bold; width: 120px; flex-shrink: 0; }\n.item-value { flex-grow: 1; padding-left: 5px;}\n.q-and-a-block { margin-bottom: 20px; }\n.q-and-a-block .question { font-weight: bold; }\n.q-and-a-block .answer { padding-left: 1.5em; text-indent: -1.5em; }\n.q-and-a-block .answer::before { content: \"A. \"; font-weight: bold; }\n\n\/* --- \u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc --- *\/\n@media (max-width: 768px) {\n    .class-year-nav { padding-left: 10px; padding-right: 10px; }\n    .member-list { padding: 0 20px; }\n    .modal-header { flex-direction: column; text-align: center; gap: 15px; padding: 25px 20px; }\n    .modal-header-image { width: 120px; height: 120px; }\n    #modal-name-jp { font-size: 2.2rem; }\n    #modal-name-en { font-size: 1rem; }\n    .tab-nav { font-size: 0.9rem; }\n    .tab-nav-item { padding: 8px 10px; }\n    .modal-body { padding: 0 20px 20px 20px; }\n    .content-block li { flex-direction: column; }\n    .item-label { width: 100%; margin-bottom: 4px; }\n}\n<\/style>\n","protected":false},"excerpt":{"rendered":"<p>&times; |<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_locale":"ja","_original_post":"https:\/\/todai-soccer.com\/?page_id=17573","footnotes":""},"categories":[],"class_list":["post-17573","page","type-page","status-publish","hentry","ja"],"aioseo_notices":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/todai-soccer.com\/index.php?rest_route=\/wp\/v2\/pages\/17573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/todai-soccer.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/todai-soccer.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/todai-soccer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/todai-soccer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17573"}],"version-history":[{"count":15,"href":"https:\/\/todai-soccer.com\/index.php?rest_route=\/wp\/v2\/pages\/17573\/revisions"}],"predecessor-version":[{"id":17671,"href":"https:\/\/todai-soccer.com\/index.php?rest_route=\/wp\/v2\/pages\/17573\/revisions\/17671"}],"wp:attachment":[{"href":"https:\/\/todai-soccer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/todai-soccer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}