/* 인물 리깅 — 관절 각도(--a-*)와 자세 진행도(--pose 0→100)는 JS가 주입.
   SVG <g>는 (숫자식)*1deg calc를 드롭하므로, 각도는 deg 단위 변수로 직접 받는다. */
.figure {
  --pose: 0;
  --a-torso: 26deg; --a-head: 34deg;
  --a-armBU: -64deg; --a-armBF: 10deg; --a-armFU: -72deg; --a-armFF: 8deg;
  --a-thighB: -78deg; --a-shinB: 88deg; --a-thighF: -82deg; --a-shinF: 86deg;
  --a-rise: 46px;
  /* muted(갇힘) → paper(또렷) : pose가 오를수록 선이 선명해짐 */
  --fig: color-mix(in srgb, var(--paper) clamp(0%, calc(var(--pose) * 2.6%), 100%), var(--muted));
}

.figure .lim {
  fill: none; stroke: var(--fig);
  stroke-width: 9; stroke-linecap: round; stroke-linejoin: round;
}
.figure .dot { fill: var(--fig); }

/* 질주: 달리는 동안은 제자리에서 바운스하고, 마지막 절정(92→100)에 오른쪽으로 달려나감 */
.figure {
  transform: translateX(clamp(0px, calc((var(--pose) - 92) * 8.5vw), 66vw));
  will-change: transform;
}
.figure.is-running .rig { animation: runbob 0.30s ease-in-out infinite; }
@keyframes runbob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }

.j { transform-box: view-box; }
.riser { transform-box: view-box; transform-origin: 180px 330px; transform: translateY(var(--a-rise)); }
.torso  { transform-origin: 180px 330px; transform: rotate(var(--a-torso)); }
.head   { transform-origin: 180px 235px; transform: rotate(var(--a-head)); }
.armBU  { transform-origin: 180px 250px; transform: rotate(var(--a-armBU)); }
.armBF  { transform-origin: 180px 330px; transform: rotate(var(--a-armBF)); }
.armFU  { transform-origin: 180px 250px; transform: rotate(var(--a-armFU)); }
.armFF  { transform-origin: 180px 330px; transform: rotate(var(--a-armFF)); }
.thighB { transform-origin: 180px 330px; transform: rotate(var(--a-thighB)); }
.shinB  { transform-origin: 180px 430px; transform: rotate(var(--a-shinB)); }
.thighF { transform-origin: 180px 330px; transform: rotate(var(--a-thighF)); }
.shinF  { transform-origin: 180px 430px; transform: rotate(var(--a-shinF)); }

/* 책상/의자/모니터 — 일어서며 사라짐 */
.furniture { stroke: var(--muted); stroke-width: 6; fill: none; stroke-linecap: round;
  opacity: clamp(0, calc((46 - var(--pose)) / 46), 1); }
.ground { stroke: rgba(244, 239, 230, 0.16); stroke-width: 2; }

/* 오렌지 발자국 궤적 — 질주(>78)에서만 점화 */
.trail line { stroke: var(--orange); stroke-width: 6; stroke-linecap: round;
  opacity: clamp(0, calc((var(--pose) - 80) / 20), 1); }
.trail line:nth-child(2) { opacity: clamp(0, calc((var(--pose) - 86) / 14), 0.7); }
.trail line:nth-child(3) { opacity: clamp(0, calc((var(--pose) - 92) / 8), 0.45); }

@media (prefers-reduced-motion: reduce) {
  .term-cursor { animation: none; }
  .figure { transform: none; }            /* 질주 정지 자세로 제자리 유지 */
  .figure.is-running .rig { animation: none; }
}
