/* 연수생 현황 — 데이터 허브(직원)와 데이터 포털(공개) 공용 */
.fd-wrap .hint { font-size: .8rem; color: #55615A; }
.fd-wrap .num { font-variant-numeric: tabular-nums; }
.fd-chip { display: inline-flex; align-items: center; gap: .4rem; border: 1.5px solid #D7DDD6; border-radius: 999px; padding: .35rem .8rem; font-size: .85rem; font-weight: 600; background: #fff; color: #14201A; }
.fd-chip::before { content: ""; width: .6rem; height: .6rem; border-radius: 50%; background: var(--c); }
.fd-chip:hover { border-color: var(--c); }
.fd-chip[aria-pressed="true"] { background: var(--c); border-color: var(--c); color: #fff; }
.fd-chip[aria-pressed="true"]::before { background: #fff; }
.fd-kpi { background: #fff; border-radius: 10px; padding: .9rem 1rem; box-shadow: inset 0 0 0 1px #D7DDD6; }
.fd-kpi-label { font-size: .8rem; font-weight: 600; color: #0A4A27; }
.fd-kpi-value { font-size: clamp(1.3rem, 2.3vw, 1.75rem); font-weight: 800; line-height: 1.2; margin-top: .2rem; color: #14201A; white-space: nowrap; }
.fd-svg { width: 100%; height: auto; display: block; }
.fd-grid { stroke: #E4E9E3; stroke-width: 1; }
.fd-axis { font-size: 11px; fill: #55615A; }
.fd-val { font-size: 11px; font-weight: 700; fill: #14201A; }
.fd-leg { display: inline-flex; align-items: center; gap: .35rem; color: #55615A; }
.fd-leg i, .fd-prog i { display: inline-block; width: .7rem; height: .7rem; border-radius: 2px; }
.fd-prog { display: inline-flex; align-items: center; gap: .45rem; font-weight: 600; color: #0A4A27; text-align: left; }
.fd-prog:hover { text-decoration: underline; text-underline-offset: 3px; }
.fd-bar { display: grid; grid-template-columns: minmax(7rem, 15rem) 1fr 2.5rem; align-items: center; gap: .6rem; font-size: .85rem; }
.fd-bar-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fd-bar-track { height: .7rem; background: #EEF2EE; border-radius: 999px; overflow: hidden; }
.fd-bar-track span { display: block; height: 100%; border-radius: 999px; }
.fd-bar-n { text-align: right; font-weight: 700; }
@media (max-width: 30rem) { .fd-bar { grid-template-columns: 1fr 2.5rem; } .fd-bar-track { grid-column: 1 / -1; grid-row: 2; } }

/* 연수생 근무 기관 지도 */
.fm-svg { max-width: 1040px; margin: 0 auto; }
.fm-region { stroke: #fff; stroke-width: 1; transition: opacity .15s; }
.fm-region.has { cursor: pointer; }
.fm-region.has:hover { opacity: .85; }
.fm-region-on { fill: none; stroke: #C98A1B; stroke-width: 2.4; pointer-events: none; }
.fm-lake path { fill: #CFE3EC; stroke: #A9CBD9; stroke-width: .6; pointer-events: none; }
.fm-lead { stroke: #2B3A31; stroke-width: 1; opacity: .7; }
.fm-dot { fill: #fff; stroke: #14201A; stroke-width: 1.6; }
.fm-dot.on { fill: #C98A1B; }
.fm-call { cursor: pointer; outline: none; }
.fm-pill { fill: #fff; stroke: #D7DDD6; stroke-width: 1; }
.fm-call:hover .fm-pill, .fm-call:focus-visible .fm-pill { stroke: #0A4A27; stroke-width: 1.6; }
.fm-call.on .fm-pill { stroke: #C98A1B; stroke-width: 2.2; }
.fm-cross { stroke: #fff; stroke-width: 2.2; stroke-linecap: round; }
.fm-label { font-size: 13px; font-weight: 700; fill: #14201A; letter-spacing: .01em; }
.fm-bubble { cursor: pointer; outline: none; }
.fm-bubble circle { fill: #0A4A27; fill-opacity: .88; stroke: #fff; stroke-width: 1.5; }
.fm-bubble.on circle { fill: #C98A1B; }
.fm-bubble text { fill: #fff; font-size: 11px; font-weight: 700; pointer-events: none; }
.fm-panel { max-width: 46rem; margin: 1rem auto 0; }
.fm-chips { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1rem; }
.fm-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem; font-weight: 700; color: #0A4A27; margin-bottom: .6rem; }
.fm-list { display: grid; gap: .5rem; }
