/* 집중훈련 계산기 — 모바일 먼저, PC 는 왼쪽(선수·결과) 고정 + 오른쪽(능력치 목록) 2단. 색은 사이트 변수(라이트/다크 자동) */
.ft {
  --ft-up: #16a34a; --ft-tint: rgba(40,167,69,.10); --ft-inset: rgba(100,116,139,.10);
  max-width: 1080px; margin: 0 auto; padding: 18px 16px 48px; color: var(--text-primary);
}
:root[data-theme="dark"] .ft { --ft-up: #4ade80; --ft-tint: rgba(52,206,87,.14); --ft-inset: rgba(148,163,184,.12); }
.ft *, .ft *::before, .ft *::after { box-sizing: border-box; }
.ft button, .ft select { font: inherit; color: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.ft-hd h1 { font-size: 1.45rem; font-weight: 800; margin: 0 0 14px; letter-spacing: -.3px; }
.ft-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 16px; padding: 16px; margin-bottom: 12px; box-shadow: var(--shadow-sm); }
.ft-h2 { font-size: 1rem; font-weight: 800; margin: 0 0 10px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.ft-h2 small { font-size: .76rem; font-weight: 600; color: var(--text-secondary); }
.ft-empty { text-align: center; color: var(--text-secondary); padding: 36px 12px; font-size: .92rem; border: 1px dashed var(--border-color); border-radius: 16px; }

/* 검색 */
.ft-pick { position: relative; padding: 12px; }
.ft-find { display: flex; align-items: center; height: 48px; border: 2px solid var(--primary-green); border-radius: 999px; background: var(--bg-secondary); padding: 0 16px; gap: 10px; }
.ft-find:focus-within { box-shadow: 0 0 0 4px var(--ft-tint); }
.ft-find svg { width: 20px; height: 20px; color: var(--primary-green); flex: none; }
.ft-find input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font: inherit; font-size: 1rem; color: var(--text-primary); }
.ft-res { list-style: none; margin: 8px 0 0; padding: 0; max-height: min(62vh, 520px); overflow-y: auto; overscroll-behavior: contain; }
.ft-res .more button { justify-content: center; font-weight: 800; font-size: .9rem; color: var(--primary-green); }
.ft-res .more i { font-style: normal; color: var(--text-secondary); margin-left: 4px; }
.ft-res li button { width: 100%; display: flex; align-items: center; gap: 10px; padding: 8px 6px; border: 0; background: none; border-radius: 10px; text-align: left; }
.ft-res li button:hover { background: var(--ft-inset); }
.ft-res .none { padding: 14px; color: var(--text-secondary); text-align: center; font-size: .9rem; }
.ft-sf { width: 40px; height: 40px; border-radius: 10px; background: var(--ft-inset); overflow: hidden; flex: none; position: relative; }
.ft-sf img, .ft-face img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.ft-sf, .ft-face { display: flex; align-items: center; justify-content: center; }
.ft-sf .ini, .ft-face .ini { font-weight: 800; color: var(--text-muted); font-size: .95rem; }
.ft-face .ini { font-size: 1.3rem; }
.ft-res .n { flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; font-size: .95rem; }
.ft-res .n b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ft-res .se, .ft-who .se img { width: 18px; height: 18px; object-fit: contain; flex: none; }
.ft-res .sc { font-style: normal; font-size: .72rem; font-weight: 800; color: var(--text-secondary); background: var(--ft-inset); border-radius: 6px; padding: 1px 6px; flex: none; }
.ft-res .m { font-size: .85rem; color: var(--text-secondary); white-space: nowrap; }
.ft-res .m b { color: var(--text-primary); }

/* 레이아웃 */
.ft-grid { display: grid; grid-template-columns: 1fr; gap: 0 16px; align-items: start; }
@media (min-width: 900px) {
  .ft-grid { grid-template-columns: 360px minmax(0, 1fr); }
  .ft-side { position: sticky; top: 84px; }
}

/* 선수 */
.ft-who { display: flex; align-items: center; gap: 12px; }
.ft-face { width: 64px; height: 64px; border-radius: 14px; background: var(--ft-inset); overflow: hidden; flex: none; position: relative; }
.ft-wn { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ft-wn .se { display: inline-flex; align-items: center; gap: 5px; font-size: .78rem; font-weight: 700; color: var(--text-secondary); }
.ft-wn b { font-size: 1.12rem; letter-spacing: -.3px; }
.ft-wn small { color: var(--text-secondary); font-size: .8rem; }
.ft-poss { display: flex; gap: 6px; flex-wrap: wrap; margin: 14px 0 12px; }
.ft-ps { height: 34px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--border-color); background: var(--bg-secondary); font-weight: 800; font-size: .86rem; color: var(--text-secondary); display: inline-flex; align-items: center; gap: 6px; }
.ft-ps i { font-style: normal; font-weight: 700; font-size: .78rem; opacity: .75; }
.ft-ps.on { background: var(--primary-green); border-color: var(--primary-green); color: #fff; }
.ft-ps.more { position: relative; padding: 0; }
.ft-ps.more select { appearance: none; -webkit-appearance: none; border: 0; background: none; height: 100%; padding: 0 14px; font-weight: 800; font-size: .86rem; color: inherit; }
.ft-ps.more.on select option { color: var(--text-primary); }
.ft-sels { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.ft-sel { display: flex; flex-direction: column; gap: 4px; font-size: .74rem; font-weight: 700; color: var(--text-secondary); }
.ft-sel select { height: 40px; border-radius: 10px; border: 1px solid var(--border-color); background: var(--bg-secondary); padding: 0 8px; font-weight: 800; font-size: .92rem; color: var(--text-primary); }

/* 결과 */
.ft-ovr { display: flex; align-items: center; justify-content: space-around; gap: 8px; padding: 4px 0 14px; }
.ft-ovr .o { text-align: center; position: relative; }
.ft-ovr .o small { display: block; font-size: .76rem; font-weight: 700; color: var(--text-secondary); margin-bottom: 2px; }
.ft-ovr .o b { font-size: 2.6rem; font-weight: 900; letter-spacing: -1.5px; line-height: 1; }
.ft-ovr .nx b { color: var(--ft-up); }
.ft-ovr .nx em { font-style: normal; position: absolute; top: -4px; right: -34px; font-size: .84rem; font-weight: 900; color: #fff; background: var(--ft-up); border-radius: 999px; padding: 2px 8px; }
.ft-ovr .ar { color: var(--text-muted); font-size: 1.4rem; }
.ft-prog { display: flex; align-items: center; gap: 10px; font-size: .8rem; color: var(--text-secondary); font-weight: 700; margin-bottom: 12px; }
.ft-prog .tr { flex: 1; height: 8px; border-radius: 99px; background: var(--ft-inset); overflow: hidden; }
.ft-prog .tr i { display: block; height: 100%; border-radius: 99px; background: var(--ft-up); }
.ft-prog b { color: var(--text-primary); }
.ft-slot { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border-radius: 10px; background: var(--ft-inset); font-size: .86rem; font-weight: 700; color: var(--text-secondary); margin-bottom: 10px; }
.ft-slot b { color: var(--text-primary); font-size: .98rem; }
.ft-acts { display: grid; grid-template-columns: 1fr auto; gap: 8px; }
.ft-acts button { height: 44px; border-radius: 12px; border: 1px solid var(--border-color); background: var(--bg-secondary); font-weight: 800; font-size: .92rem; padding: 0 16px; }
.ft-acts .go { background: var(--primary-green); border-color: var(--primary-green); color: #fff; }

/* 능력치 목록 */
.ft-rs { list-style: none; margin: 0; padding: 0; }
.ft-r { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 8px 12px; padding: 10px 0; border-top: 1px solid var(--border-color); }
.ft-r:first-child { border-top: 0; }
.ft-r .nm { display: flex; align-items: center; gap: 8px; min-width: 0; }
.ft-r .nm b { font-size: .95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ft-r .nm em { font-style: normal; font-size: .72rem; font-weight: 800; color: var(--text-secondary); background: var(--ft-inset); border-radius: 6px; padding: 2px 6px; flex: none; }
.ft-r.on .nm em { background: var(--ft-tint); color: var(--ft-up); }
.ft-r .vl { font-weight: 800; font-size: 1rem; min-width: 64px; text-align: right; white-space: nowrap; }
.ft-r .vl i { font-style: normal; color: var(--text-muted); margin: 0 4px; font-weight: 600; }
.ft-r .vl u { text-decoration: none; color: var(--ft-up); }
.ft-r .sg { display: inline-flex; border: 1px solid var(--border-color); border-radius: 10px; overflow: hidden; }
.ft-r .sg button { width: 38px; height: 36px; border: 0; border-left: 1px solid var(--border-color); background: var(--bg-secondary); font-weight: 800; font-size: .88rem; color: var(--text-secondary); }
.ft-r .sg button:first-child { border-left: 0; }
.ft-r .sg button.on { background: var(--primary-green); color: #fff; }
.ft-r .sg button.on[data-v="0"] { background: var(--ft-inset); color: var(--text-primary); }
.ft-r .sg button:disabled { opacity: .35; cursor: not-allowed; }
.ft-r.z .vl { color: var(--text-secondary); }
.ft-more { margin-top: 10px; border-top: 1px solid var(--border-color); padding-top: 10px; }
.ft-more summary { cursor: pointer; font-size: .86rem; font-weight: 700; color: var(--text-secondary); padding: 4px 0; list-style: none; }
.ft-more summary::-webkit-details-marker { display: none; }
.ft-more summary::after { content: " ▾"; }
.ft-more[open] summary::after { content: " ▴"; }

/* 인기 코치 */
.ft-cs { display: flex; gap: 8px; flex-wrap: wrap; }
.ft-cs span { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px 6px 6px; border-radius: 12px; background: var(--ft-inset); font-size: .84rem; font-weight: 700; }
.ft-cs img { width: 30px; height: 30px; object-fit: contain; display: block; }
.ft-link { display: inline-flex; margin-top: 12px; gap: 4px; font-size: .86rem; font-weight: 800; color: var(--primary-green); text-decoration: none; }

@media (max-width: 899px) {
  .ft-ovr .o b { font-size: 2.3rem; }
}
@media (max-width: 480px) {
  .ft { padding: 14px 12px 40px; }
  .ft-card { padding: 14px; }
  .ft-r { grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; padding: 9px 0; }
  .ft-r .nm { grid-column: 1; grid-row: 1; }
  .ft-r .vl { grid-column: 1; grid-row: 2; text-align: left; min-width: 0; font-size: .84rem; color: var(--text-secondary); }
  .ft-r .vl u { font-weight: 900; }
  .ft-r .sg { grid-column: 2; grid-row: 1 / span 2; align-self: center; }
  .ft-r .sg button { width: 36px; height: 38px; }
}

/* 목표 OVR 칩 */
.ft-goal { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.ft-goal .gl { font-size: .8rem; font-weight: 800; color: var(--text-secondary); margin-right: 2px; white-space: nowrap; }
.ft-g { flex: 1; height: 46px; border-radius: 12px; border: 1px solid var(--border-color); background: var(--bg-secondary); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; line-height: 1.1; padding: 0 4px; }
.ft-g b { font-size: 1rem; font-weight: 900; color: var(--ft-up); }
.ft-g i { font-style: normal; font-size: .72rem; font-weight: 700; color: var(--text-secondary); }
.ft-g.on { background: var(--ft-tint); border-color: var(--primary-green); }
.ft-g:disabled { opacity: .4; cursor: not-allowed; }
.ft-g:disabled b { color: var(--text-secondary); }
