/* K/BB 비율 계산기 전용 CSS (2026-10-22). 기록 식·볼넷 1개당 삼진 칩·K/BB 기울기판·비교 기록·읽기 줄 kbb-*. 공용 부품은 assets/v2.css
   넓이: 작업면 컨테이너 kbbw — 700 이상 [기록 식 | 기울기판](판 높이는 기록 식 높이에 맞춰 늘어남), 그 아래는 한 열(판은 5:4). 600 이상 [비교 기록 | 읽기 줄] */
.kbb-work{container:kbbw / inline-size}
.kbb-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:14px 18px 4px}
.kbb-ex{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.kbb-ex .v2-label{margin-right:2px}
.kbb-chip{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink);transition:background var(--ease)}
.kbb-chip:hover{background:var(--btn)}
.kbb-chip .i{width:13px;height:13px}
.kbb-hint{font-family:var(--sans);font-size:11.5px;line-height:1.45;color:var(--muted)}

.kbb-main{display:grid;grid-template-columns:minmax(0,1fr)}
/* 기록 식: [삼진] ÷ [볼넷] = K/BB */
.kbb-rec{display:flex;flex-direction:column;gap:12px;min-width:0;margin:0;padding:12px 18px 16px}
.kbb-eq{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(60px,auto);align-items:end;column-gap:8px}
.kbb-op{display:grid;place-items:center;height:var(--v2-ctl,42px);font-family:var(--sans);font-size:19px;font-weight:600;color:var(--muted)}
.kbb-res{display:flex;flex-direction:column;align-items:flex-end;min-width:0}
.kbb-res .v2-label{display:block;margin:0 0 5px;font-family:var(--mono)}
.kbb-big{display:block;height:var(--v2-ctl,42px);font-family:var(--sans);font-size:34px;font-weight:800;line-height:42px;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
.kbb-big.is-empty{color:var(--muted);opacity:.6}
.kbb-big.is-long{font-size:26px}.kbb-big.is-xlong{font-size:18px} /* 볼넷 1개에 삼진 수천 개 같은 값이 칸을 덮지 않게 */
/* 볼넷 1개당 삼진 칩: [BB] = 칸 10개(채운 폭 = 삼진 몫), 넘으면 +n */
.kbb-per{display:flex;flex-direction:column;gap:7px;padding:10px 12px;border-radius:var(--radius);background:color-mix(in srgb, var(--wash) 70%, var(--paper))}
.kbb-pertx{margin:0;font-family:var(--sans);font-size:13px;font-weight:650;line-height:1.45;color:var(--ink)}
.kbb-ks{display:flex;align-items:center;gap:3px;min-height:22px;transition:opacity .25s ease}
.kbb-ks.is-off{opacity:.35}
.kbb-bbc{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;border:1.5px solid var(--muted);border-radius:50%;box-sizing:border-box;font-family:var(--mono);font-size:8.5px;font-style:normal;font-weight:700;color:var(--muted)}
.kbb-arr::before{content:"=";padding:0 2px;font-family:var(--sans);font-size:14px;font-weight:600;color:var(--muted)}
.kbb-kc{position:relative;flex:1 1 0;min-width:10px;max-width:22px;height:20px;border:1.5px solid var(--ink);border-radius:4px;box-sizing:border-box;overflow:hidden;font-style:normal;opacity:.14;transition:opacity .25s ease}
.kbb-kc.is-on{opacity:1}
.kbb-kc b{position:absolute;top:0;bottom:0;left:0;width:0;background:var(--ink);transition:width .45s cubic-bezier(.2,.7,.2,1)}
.kbb-kc span{position:relative;display:grid;place-items:center;height:100%;font-family:var(--mono);font-size:10px;font-weight:700;color:var(--on-fill);opacity:0}
.kbb-kc.is-full span{opacity:1}
.kbb-more{margin-left:2px;font-family:var(--sans);font-size:12px;font-style:normal;font-weight:750;color:var(--ink);font-variant-numeric:tabular-nums}
.kbb-more:empty{display:none}
.kbb-opt{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px}
.kbb-opt>.kbb-hint{grid-column:1/-1;margin:0}
.kbb-rec>.v2-status:empty{display:none}
.kbb-say{margin:0;font-family:var(--sans);font-size:14px;line-height:1.6;color:var(--ink)}
.kbb-say:empty{display:none}
.kbb-say b{font-weight:750}
.kbb-warn{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
.kbb-rec .v2-formula{margin:0;white-space:pre-line;overflow-wrap:anywhere}

/* K/BB 기울기판 */
.kbb-plane{display:flex;flex-direction:column;min-width:0;margin:0;padding:12px 18px 14px;border-top:1px solid var(--soft)}
.kbb-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;margin-bottom:8px}
.kbb-mode button{font-size:12px}
.kbb-svgbox{position:relative;width:100%;aspect-ratio:5/4;min-height:240px;max-height:440px}
.kbb-svgbox svg{position:absolute;top:0;left:0;display:block}
.kbb-ax line{stroke:var(--muted);stroke-width:1}
.kbb-ax line.kbb-grid{stroke:var(--soft)}
.kbb-ax text{font-family:var(--mono);font-size:10.5px;fill:var(--muted)}
.kbb-ax text.kbb-axt{font-family:var(--sans);font-size:11px;font-weight:600}
.kbb-gr line,.kbb-gd line{stroke:var(--line);stroke-width:1}
.kbb-gr,.kbb-gd,.kbb-glab text,.kbb-avgr,.kbb-avgd,.kbb-pair,.kbb-med{transition:opacity .35s ease}
.kbb-glab text{font-family:var(--mono);font-size:10px;font-weight:700;fill:var(--muted);paint-order:stroke;stroke:var(--card);stroke-width:3px}
.kbb-gd,.kbb-glab .is-d,.kbb-avgd,.kbb-pair,.kbb-med{opacity:0}
svg.is-diff .kbb-gr,svg.is-diff .kbb-glab .is-r,svg.is-diff .kbb-avgr{opacity:0}
svg.is-diff .kbb-gd,svg.is-diff .kbb-glab .is-d,svg.is-diff .kbb-avgd,svg.is-diff .kbb-pair{opacity:1}
svg.is-diff .kbb-med{opacity:1}
.kbb-avgr,.kbb-avgd{stroke:var(--ink);stroke-width:1.2;stroke-dasharray:4 3}
.kbb-avgp path{stroke:var(--ink);stroke-width:2;stroke-linecap:round}
.kbb-avgp text{font-family:var(--sans);font-size:10.5px;font-weight:650;fill:var(--ink);paint-order:stroke;stroke:var(--card);stroke-width:3px}
.kbb-pair line{stroke:var(--ink);stroke-width:1.5;stroke-dasharray:3 3}
.kbb-pair circle{fill:none;stroke:var(--ink);stroke-width:1.5}
.kbb-dots circle{fill:var(--muted);fill-opacity:.45;stroke:var(--muted);stroke-width:1.2;transition:fill .3s ease,fill-opacity .3s ease}
.kbb-dots circle.is-hi{fill:var(--ink);fill-opacity:1;stroke:var(--ink)}
.kbb-dots circle.is-lo{fill:var(--card);fill-opacity:1}
.kbb-dots circle.is-eq{fill:var(--accent);fill-opacity:1;stroke:var(--accent)}
.kbb-mep,.kbb-cmpp,.kbb-mel{transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.kbb-mer,.kbb-cmpr{transition:transform .55s cubic-bezier(.2,.7,.2,1),opacity .35s ease}
.kbb-mer.is-faded,.kbb-cmpr.is-faded{opacity:0} /* 차이 선 보기에서 점이 있으면 비율 선은 감춘다 */
.kbb-mer line{stroke:var(--accent);stroke-width:2.2}
.kbb-cmpr line{stroke:var(--accent);stroke-width:1.4;stroke-dasharray:6 4;opacity:.6}
.kbb-med{stroke:var(--accent);stroke-width:1.4;stroke-opacity:.75}
.kbb-mep{fill:var(--accent);stroke:var(--card);stroke-width:2}
.kbb-mep.is-out{fill:var(--card);stroke:var(--accent)}
.kbb-cmpp{fill:var(--card);stroke:var(--accent);stroke-width:2}
.kbb-arw{stroke:var(--accent);stroke-width:1.6}
.kbb-arrowhead{fill:var(--accent)}
.kbb-mel{font-family:var(--sans);font-size:12px;font-weight:750;fill:var(--accent);font-variant-numeric:tabular-nums;paint-order:stroke;stroke:var(--card);stroke-width:3px}
.kbb-leg{display:flex;flex-wrap:wrap;gap:4px 14px;margin:8px 0 0;padding:0;list-style:none;font-family:var(--sans);font-size:11.5px;color:var(--muted)}
.kbb-leg li{display:inline-flex;align-items:center;gap:5px}
.kbb-leg li[hidden]{display:none}
.kbb-leg i{position:relative;flex:0 0 auto;width:9px;height:9px;border-radius:50%;box-sizing:border-box}
.kbb-leg [data-k="me"] i{width:16px;height:2px;border-radius:0;background:var(--accent)}
.kbb-leg [data-k="me"] i::after{content:"";position:absolute;top:-3px;right:-1px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.kbb-leg [data-k="cmp"] i{width:16px;height:0;border-radius:0;border-top:1.6px dashed var(--accent)}
.kbb-leg [data-k="hi"] i{background:var(--ink)}
.kbb-leg [data-k="lo"] i{border:1.2px solid var(--muted);background:var(--card)}
.kbb-leg [data-k="avg"] i{width:16px;height:0;border-radius:0;border-top:1.2px dashed var(--ink)}
.kbb-near{margin:6px 0 0;font-family:var(--sans);font-size:12.5px;line-height:1.55;color:var(--ink)}
.kbb-near:empty{display:none}

/* 비교 기록 · 읽기 줄 */
.kbb-lower{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;padding:14px 18px;border-top:1px solid var(--soft)}
.kbb-cmp{display:flex;flex-direction:column;gap:10px;margin:0;padding:12px 14px;border-radius:var(--radius)}
.kbb-cmph{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 10px;margin:0}
.kbb-cf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.kbb-chg{display:flex;flex-direction:column;gap:3px;margin:0}
.kbb-chgv{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;font-family:var(--sans);font-size:15px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums lining-nums}
.kbb-chgv b{font-size:22px;font-weight:800;color:var(--ink)}
.kbb-chgv i{font-style:normal;font-weight:600}
.kbb-chgv span{font-size:13.5px;font-weight:700;color:var(--ink)}
.kbb-rows li span{flex:0 1 auto;min-width:0}
.kbb-rows li b{white-space:normal;text-align:right}
:lang(ja) .kbb-rows li b{padding-right:4px} /* 전각 닫는 괄호가 칸 밖으로 나오지 않게 */
.kbb-rows li:first-child{border-top:0}
.kbb-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 18px 16px;border-top:1px solid var(--soft)}

/* 한 열이지만 넓을 때(560~699): 기록 식을 [식 | 칩] / [이닝·타자 | 판정] 두 칸으로(칸이 너무 넓어지지 않게) */
@container kbbw (min-width:560px) and (max-width:699px){
  .kbb-rec{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);grid-template-areas:"eq per" "opt say" "st st" "fm fm";gap:12px 18px;align-items:start}
  .kbb-eq{grid-area:eq}.kbb-per{grid-area:per;align-self:stretch;justify-content:center}.kbb-opt{grid-area:opt}.kbb-say{grid-area:say}.kbb-rec>.v2-status{grid-area:st}.kbb-rec>.v2-formula{grid-area:fm}
}
@container kbbw (min-width:600px){
  .kbb-lower{grid-template-columns:minmax(250px,300px) minmax(0,1fr);align-items:start}
}
/* 넓은 화면: [기록 식 | 기울기판], 판은 기록 식 높이만큼 늘어난다(SVG는 칸 크기로 다시 그림) */
@container kbbw (min-width:700px){
  .kbb-main{grid-template-columns:minmax(290px,330px) minmax(0,1fr)}
  .kbb-plane{padding-top:14px;border-top:0;border-left:1px solid var(--soft)}
  .kbb-svgbox{flex:1 1 auto;aspect-ratio:auto;min-height:280px;max-height:none}
}
@media (prefers-reduced-motion:reduce){.kbb-kc,.kbb-kc b,.kbb-ks,.kbb-mer,.kbb-cmpr,.kbb-mep,.kbb-cmpp,.kbb-mel,.kbb-dots circle,.kbb-gr,.kbb-gd,.kbb-glab text,.kbb-avgr,.kbb-avgd,.kbb-pair,.kbb-med{transition:none}}
