/* 14강 공용 스타일: Gazebo 월드(벽, 기둥, 바닥), 시계, 키보드 키 */
.c14-floor { fill: color-mix(in srgb, var(--text) 7%, var(--surface)); stroke: none; }
.c14-wall { fill: none; stroke: var(--soft); stroke-width: 3; stroke-linejoin: round; }
.c14-pillar { fill: var(--surface-2); stroke: var(--soft); stroke-width: 1.4; }
.c14-world { transition: opacity 0.3s ease; }
.c14-world.dim { opacity: 0.35; }
.c14-world.hide { opacity: 0; }
.c14-key rect { fill: var(--surface-2); stroke: var(--line); stroke-width: 1.5; transition: fill 0.25s ease, stroke 0.25s ease; }
.c14-key text { fill: var(--text); font-family: var(--mono); font-weight: 700; transition: fill 0.25s ease; }
.c14-key.on rect { fill: var(--accent); stroke: var(--accent); }
.c14-key.on text { fill: var(--on-accent); }
.c14-key.bad rect { stroke: var(--value); }
.c14-bar { fill: var(--surface-2); }
.c14-fill { fill: var(--key); }
.c14-fill.bad { fill: var(--value); }
.c14-fill.on { fill: var(--accent); }
.c14-hand { stroke: var(--accent); stroke-width: 2.2; stroke-linecap: round; }
.c14-hand.k { stroke: var(--key); }
.c14-face { fill: var(--surface); stroke: var(--line); stroke-width: 1.5; }
.c14-face.k { stroke: var(--key); }
.c14-face.on { stroke: var(--accent); }
.c14-gl { fill: none; stroke: var(--accent); stroke-width: 2.4; stroke-linejoin: round; stroke-linecap: round; }
.c14-gl.k { stroke: var(--key); }
.c14-axis { stroke: var(--line); stroke-width: 1.2; }
.c14-sw rect { fill: var(--surface-2); stroke: var(--line); stroke-width: 1.4; transition: fill 0.3s ease, stroke 0.3s ease; }
.c14-sw circle { fill: var(--muted); transition: transform 0.3s ease, fill 0.3s ease; }
.c14-sw.on rect { fill: color-mix(in srgb, var(--key) 30%, var(--surface)); stroke: var(--key); }
.c14-sw.on circle { fill: var(--key); }
.viz text.r-cmd tspan.c14-on, .viz text.r-out tspan.c14-on { fill: var(--accent); font-weight: 700; }
