/* Chapter 05 — 실습 랩 B (블리딩 · 리밋/B텐션 · 트루잉 · 헤드셋 · 잡소리 탐정) */
.labb { --labb-oil: var(--gold); --labb-L: var(--teal); --labb-R: var(--violet); position: relative; }
.labb .widget-head h3 { margin: 0; }
.labb-head-r { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.labb-status { padding: 7px 14px; border-radius: 999px; font-weight: 800; font-size: .88rem; white-space: nowrap; background: var(--bg-2); color: var(--ink-2); transition: background .25s, color .25s; }
.labb-status[data-state="ok"] { background: var(--green-soft); color: var(--green); }
.labb-status[data-state="warn"] { background: var(--gold-soft); color: var(--gold); }
.labb-status[data-state="bad"] { background: var(--red-soft); color: var(--red); }
.labb-intro { color: var(--muted); font-size: .93rem; margin: 0 0 16px; max-width: 70ch; }
.labb-app { min-width: 0; }
.labb-svg { width: 100%; height: auto; display: block; overflow: hidden; }
.labb-grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 20px 28px; align-items: start; }
@media (max-width: 760px) { .labb-grid { grid-template-columns: minmax(0, 1fr); } }
.labb-stage { min-width: 0; position: relative; }
.labb-panel { display: grid; gap: 12px; min-width: 0; }
.labb-k { font-family: var(--mono); font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: var(--accent-ink); font-weight: 600; margin: 0 0 6px; }
.labb-k .muted { text-transform: none; letter-spacing: 0; font-family: var(--font); font-weight: 500; }
.labb-row, .labb-group { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.labb-group { margin: 0; }
.labb-glabel { width: 100%; font-size: .8rem; font-weight: 700; color: var(--muted); }
.labb-hint { font-size: .8rem; color: var(--muted); margin: 8px 0 0; line-height: 1.5; }
.labb-ctrls { display: flex; flex-wrap: wrap; gap: 14px 28px; margin-top: 10px; }
.labb .btn { justify-content: center; touch-action: manipulation; }
.labb .btn:disabled { opacity: .38; cursor: not-allowed; transform: none; }
.labb .btn-sm { min-height: 40px; }
.labb-foot { font-size: .8rem; color: var(--muted); margin: 14px 0 0; line-height: 1.6; }
.labb-foot strong { color: var(--ink-2); }

/* message / feedback */
.labb-msg { margin: 16px 0 0; padding: 12px 16px; border-radius: var(--radius-sm); background: var(--surface-2); border: 1px solid var(--line); border-left: 5px solid var(--line-2); color: var(--ink-2); font-size: .93rem; line-height: 1.6; min-height: 3.4em; transition: border-color .2s, background .2s; }
.labb-msg[data-state="info"] { border-left-color: var(--blue); }
.labb-msg[data-state="ok"] { border-left-color: var(--green); background: var(--green-soft); }
.labb-msg[data-state="warn"] { border-left-color: var(--gold); background: var(--gold-soft); }
.labb-msg[data-state="bad"] { border-left-color: var(--red); background: var(--red-soft); }
.labb-msg strong, .labb-msg b { color: var(--ink); }
.labb-alarm { animation: labbAlarm .7s ease-in-out 2; }
@keyframes labbAlarm { 50% { box-shadow: 0 0 0 4px var(--red), var(--shadow); } }

/* progress track */
.labb-track { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; padding: 0; margin: 0 0 16px; counter-reset: lt; }
.labb-track li { counter-increment: lt; font-size: .78rem; font-weight: 700; padding: 5px 11px 5px 6px; border-radius: 999px; background: var(--bg-2); color: var(--muted); display: inline-flex; align-items: center; gap: 6px; }
.labb-track li::before { content: counter(lt); width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; font-family: var(--mono); font-size: .7rem; background: var(--surface); color: var(--muted); }
.labb-track li.now { background: var(--accent-soft); color: var(--accent-ink); }
.labb-track li.now::before { background: var(--accent); color: #fff; }
.labb-track li.done { background: var(--green-soft); color: var(--green); }
.labb-track li.done::before { content: "✓"; background: var(--green); color: #fff; }

/* shared svg text */
.labb-svtxt { fill: var(--ink-2); font-family: var(--font); font-size: 15px; font-weight: 600; }
.labb-svtxt.sm { font-size: 13px; fill: var(--muted); }
.labb-svtxt.xs { font-size: 11.5px; fill: var(--muted); }
.labb-svtxt.strong { fill: var(--ink); font-weight: 800; }
.labb-body { fill: var(--surface-2); stroke: var(--ink-2); stroke-width: 2.5; }
.labb-chain { fill: none; stroke: var(--muted); stroke-width: 4; stroke-dasharray: 5 3; stroke-linecap: round; transition: d .3s; }
.labb-chain.bad { stroke: var(--red); }
.labb-pulley { fill: var(--surface); stroke: var(--ink); stroke-width: 3; }
.labb-pulley.big { stroke-width: 3.5; }

/* ---------- 1. Bleed ---------- */
.labb-rotor { fill: none; stroke: var(--line-2); stroke-width: 9; }
.labb-grip { fill: var(--ink-2); }
.labb-blade { fill: none; stroke: var(--ink); stroke-width: 9; stroke-linecap: round; }
#labb-bl-lever { transform-box: view-box; transform-origin: 236px 84px; }
#labb-bl-lever.labb-squeeze { animation: labbSqueeze .55s ease-in-out; }
#labb-bl-lever.labb-pull { animation: labbPull .9s ease-in-out; }
@keyframes labbSqueeze { 30%, 70% { transform: rotate(9deg); } }
@keyframes labbPull { 40%, 65% { transform: rotate(var(--labb-pull, 10deg)); } }
.labb-engrave { fill: var(--ink); font-family: var(--mono); font-size: 13px; font-weight: 600; letter-spacing: .04em; }
.labb-cup { fill: var(--surface); stroke: var(--ink-2); stroke-width: 2; }
.labb-oil-fill { fill: var(--labb-oil); opacity: .55; }
.labb-hose { fill: none; stroke: var(--ink-2); stroke-width: 15; stroke-linecap: round; }
.labb-hose-oil { fill: none; stroke: var(--labb-oil); stroke-width: 8; stroke-linecap: round; opacity: .55; }
.labb-shake { animation: labbShake .45s linear; }
@keyframes labbShake { 20% { transform: translate(2px, -1px); } 40% { transform: translate(-2px, 1px); } 60% { transform: translate(2px, 1px); } 80% { transform: translate(-1px, -1px); } }
.labb-pad { fill: var(--muted); }
.labb-block { fill: var(--accent); }
#labb-bl-slot text { fill: #fff; font-weight: 800; }
.labb-port { fill: var(--ink-2); stroke: var(--surface); stroke-width: 2; transition: fill .2s; }
.labb-port.open { fill: var(--accent); }
.labb-syr { fill: var(--surface); stroke: var(--ink-2); stroke-width: 2; }
.labb-plunger { fill: var(--ink); }
.labb-rod { fill: none; stroke: var(--ink-2); stroke-width: 4; stroke-linecap: round; }
.labb-bub { fill: var(--surface); stroke: var(--blue); stroke-width: 2; }
.labb-bub.stuck { stroke: var(--red); }
.labb-bub-ring { fill: none; stroke: var(--red); stroke-width: 1.5; stroke-dasharray: 3 3; opacity: .8; }
.labb-pop { transform-box: fill-box; transform-origin: center; animation: labbPop .9s ease-out forwards; }
@keyframes labbPop { to { transform: translateY(-26px) scale(1.4); opacity: 0; } }
.labb-meter { margin-top: 10px; }
.labb-meter-lab { display: flex; justify-content: space-between; align-items: baseline; font-size: .78rem; color: var(--muted); margin-bottom: 6px; }
.labb-meter-lab b { color: var(--ink); font-size: .9rem; }
.labb-meter-track { position: relative; height: 12px; border-radius: 999px; background: linear-gradient(90deg, var(--red), var(--gold), var(--green)); opacity: .9; }
.labb-meter-track i { position: absolute; top: -5px; width: 6px; height: 22px; margin-left: -3px; border-radius: 3px; background: var(--ink); box-shadow: 0 0 0 2px var(--surface); transition: left .35s cubic-bezier(.2,.8,.2,1); }
.labb-card { padding: 14px 16px; border-radius: var(--radius-sm); border: 1px solid var(--line); background: var(--surface-2); transition: border-color .2s, opacity .2s; }
.labb-card.is-on { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.labb-card.is-done { opacity: .75; }
.labb-card .labb-row + .labb-row { margin-top: 8px; }
.labb-sys { font-size: .92rem; margin: 0 0 10px; line-height: 1.5; }
.labb .btn.labb-bad { background: var(--red-soft); color: var(--red); border-color: var(--red); }
.labb .btn.labb-good { background: var(--green); color: #fff; border-color: var(--green); }
.labb-hold { user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
.labb-hold.is-holding { background: var(--accent-ink); border-color: var(--accent-ink); transform: scale(.97); }

/* ---------- 2. Limit / B-tension ---------- */
.labb-tabs { display: flex; gap: 4px; padding: 4px; background: var(--bg-2); border-radius: 999px; width: fit-content; max-width: 100%; margin-bottom: 14px; }
.labb-tabs [role="tab"] { border: 0; background: transparent; padding: 8px 16px; border-radius: 999px; font-weight: 700; font-size: .88rem; color: var(--muted); white-space: nowrap; }
.labb-tabs [role="tab"][aria-selected="true"] { background: var(--surface); color: var(--ink); box-shadow: var(--shadow-sm); }
.labb [role="tabpanel"][hidden] { display: none; }
.labb-spokes path { fill: none; stroke: var(--line-2); stroke-width: 2; }
.labb-frame { fill: var(--bg-2); stroke: var(--ink-2); stroke-width: 2.5; }
.labb-rail { stroke: var(--line-2); stroke-width: 2; stroke-dasharray: 2 4; }
.labb-cog { fill: var(--ink-2); transition: fill .2s; }
.labb-cog.sel { fill: var(--accent); }
.labb-stop { transition: transform .3s cubic-bezier(.2,.8,.2,1); }
.labb-stop-tri { fill: var(--blue); }
.labb-cage { transition: transform .35s cubic-bezier(.2,.8,.2,1); }
.labb-bigcog { fill: none; stroke: var(--ink-2); stroke-width: 8; stroke-dasharray: 4 3; }
.labb-bigcog-in { fill: var(--surface-2); stroke: var(--line-2); stroke-width: 2; }
.labb-dim { fill: none; stroke: var(--accent); stroke-width: 2.5; }
.labb-dimtxt { font-family: var(--mono); font-size: 15px; font-weight: 600; fill: var(--ink); }
.labb-dimtxt[data-state="ok"] { fill: var(--green); }
.labb-dimtxt[data-state="warn"] { fill: var(--gold); }
.labb-dimtxt[data-state="bad"] { fill: var(--red); }
#labb-lm-pul, #labb-lm-bscrew { transition: transform .3s ease; }
.labb-checks { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.labb-chk { font-size: .8rem; font-weight: 700; padding: 5px 12px; border-radius: 999px; background: var(--bg-2); color: var(--muted); }
.labb-chk[data-state="ok"] { background: var(--green-soft); color: var(--green); }
.labb-chk[data-state="warn"] { background: var(--gold-soft); color: var(--gold); }
.labb-chk[data-state="bad"] { background: var(--red-soft); color: var(--red); }

/* ---------- 3. Truing ---------- */
.labb-grid-true { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); }
@media (max-width: 760px) { .labb-grid-true { grid-template-columns: minmax(0, 1fr); } .labb-wheel-svg { max-width: 280px; margin: 0 auto; } }
.labb-tire { fill: none; stroke: var(--ink); stroke-width: 12; }
.labb-tire.thin { stroke-width: 9; }
.labb-rim { fill: none; stroke: var(--ink-2); stroke-width: 5; }
.labb-spk { cursor: pointer; }
.labb-spk-hit { stroke: transparent; stroke-width: 12; }
.labb-spk-line { stroke-width: 1.8; }
.labb-spk.l .labb-spk-line { stroke: var(--labb-L); }
.labb-spk.r .labb-spk-line { stroke: var(--labb-R); }
.labb-spk .labb-nip { fill: var(--line-2); }
.labb-spk.sel .labb-spk-line { stroke-width: 4; }
.labb-spk.sel .labb-nip { fill: var(--accent); }
.labb-spk:hover .labb-spk-line { stroke-width: 3.5; }
.labb-twist .labb-nip { animation: labbTwist .45s ease; transform-box: fill-box; transform-origin: center; }
@keyframes labbTwist { 50% { transform: scale(2.2); } }
.labb-gauge { fill: var(--ink); }
.labb-gauge-tip { stroke: var(--ink); stroke-width: 4; stroke-linecap: round; }
.labb-gauge-tip.hit { stroke: var(--red); }
.labb-inset { display: flex; align-items: center; gap: 12px; margin-top: 10px; padding: 8px 12px; border-radius: var(--radius-sm); background: var(--surface-2); border: 1px solid var(--line); font-size: .78rem; color: var(--muted); }
.labb-inset svg { width: 150px; flex: none; }
.labb-feeler { fill: var(--ink-2); transition: fill .15s; }
.labb-feeler.hit { fill: var(--red); }
.labb-rimsec { fill: var(--surface); stroke: var(--ink); stroke-width: 3; }
.labb-readouts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.labb-readouts > div { padding: 10px 12px; border-radius: var(--radius-sm); background: var(--surface-2); border: 1px solid var(--line); display: grid; gap: 2px; }
.labb-readouts .labb-k { margin: 0; font-size: .66rem; color: var(--muted); }
.labb-readouts b { font-size: 1.05rem; color: var(--ink); }
.labb-readouts b[data-state="ok"] { color: var(--green); }
.labb-readouts b[data-state="warn"] { color: var(--gold); }
.labb-readouts b[data-state="bad"] { color: var(--red); }
.labb-spokebtns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 12px; border-radius: var(--radius-sm); border: 1px dashed var(--line-2); }
@media (max-width: 420px) { .labb-spokebtns { grid-template-columns: minmax(0, 1fr); } }
.labb-sw { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }
.labb-sw.l { background: var(--labb-L); } .labb-sw.r { background: var(--labb-R); }
.labb-graph-wrap { margin-top: 18px; }
.labb-graph { border-radius: var(--radius-sm); background: var(--surface-2); border: 1px solid var(--line); cursor: pointer; }
.labb-graph:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.labb-band { fill: var(--green-soft); }
.labb-axis { stroke: var(--line-2); stroke-width: 1.5; }
.labb-selband { fill: var(--accent-soft); opacity: .8; }
.labb-curve { fill: none; stroke: var(--red); stroke-width: 3; stroke-linejoin: round; transition: stroke .3s; }
.labb-curve[data-state="ok"] { stroke: var(--green); }
.labb-tick { stroke-width: 3; stroke-linecap: round; }
.labb-tick.l { stroke: var(--labb-L); } .labb-tick.r { stroke: var(--labb-R); }
.labb-cursor { stroke: var(--ink); stroke-width: 2; stroke-dasharray: 4 3; }
.labb-tension { margin-top: 14px; }
.labb-tension .labb-k { color: var(--muted); }
#labb-tr-bars { display: grid; grid-template-columns: repeat(24, minmax(0, 1fr)); gap: 3px; height: 46px; padding: 0 2px; border-radius: 8px; background: linear-gradient(var(--line), var(--line)) center / 100% 1px no-repeat; }
#labb-tr-bars i { position: relative; display: block; height: 100%; }
#labb-tr-bars i b { position: absolute; left: 0; right: 0; border-radius: 2px; min-height: 2px; background: var(--labb-L); transition: height .25s, bottom .25s; }
#labb-tr-bars i.r b { background: var(--labb-R); }
#labb-tr-bars i.sel { background: var(--accent-soft); border-radius: 3px; }
#labb-tr-bars i.over b { background: var(--red); }

/* ---------- 4. Headset ---------- */
.labb-hs-stage { display: grid; grid-template-columns: minmax(0, 1fr) 128px; gap: 10px; align-items: end; }
@media (max-width: 460px) { .labb-hs-stage { grid-template-columns: minmax(0, 1fr) 96px; } }
.labb-tube { fill: none; stroke: var(--ink); stroke-width: 14; stroke-linecap: round; }
.labb-tube.thin { stroke-width: 9; }
.labb-ht { fill: var(--ink-2); }
.labb-ht + text { fill: var(--surface); }
.labb-steerer { fill: var(--line-2); }
.labb-cupx { fill: var(--muted); }
.labb-crown { fill: var(--ink); }
.labb-spacer { fill: var(--surface-2); stroke: var(--ink-2); stroke-width: 2; }
.labb-stem { fill: var(--surface); stroke: var(--ink); stroke-width: 3; }
.labb-bar { fill: var(--ink-2); }
.labb-bolt { fill: var(--gold); stroke: var(--ink); stroke-width: 1.5; transition: fill .2s, transform .2s; }
.labb-bolt.loose { fill: var(--surface); transform: translateX(-4px); }
.labb-bolt-line { stroke: var(--ink); stroke-width: 1.5; }
.labb-cap { fill: var(--ink); }
#labb-hs-capbolt { transition: transform .25s ease; }
.labb-gap { fill: var(--red); opacity: 0; }
.labb-gap.labb-gap-on { animation: labbBlink 1.3s ease; }
@keyframes labbBlink { 10%, 70% { opacity: .9; } }
#labb-hs-frame.labb-knock { animation: labbKnock .9s ease-in-out; }
@keyframes labbKnock { 15%, 55% { transform: translateX(var(--labb-knock, 3px)); } 35%, 75% { transform: translateX(calc(var(--labb-knock, 3px) * -1)); } }
.labb-wobble { animation: labbShake .5s linear 2; }
.labb-nope { animation: labbShake .4s linear; }
.labb-boom { fill: var(--red); font-family: var(--font); font-weight: 900; font-size: 26px; opacity: 0; }
.labb-boom.labb-boom-on { animation: labbBoom .9s ease-out; }
@keyframes labbBoom { 0% { opacity: 0; } 20% { opacity: 1; } 100% { opacity: 0; } }
.labb-topview { display: grid; gap: 4px; justify-items: center; text-align: center; font-size: .72rem; color: var(--muted); line-height: 1.3; padding: 8px; border-radius: var(--radius-sm); background: var(--surface-2); border: 1px solid var(--line); }
.labb-tv-wheel { fill: var(--ink); }
.labb-tv-bar { stroke: var(--ink-2); stroke-width: 7; stroke-linecap: round; }
#labb-hs-tvbar { transition: transform .3s ease; }
#labb-hs-steer, #labb-hs-tvbar { transform-box: view-box; transform-origin: 60px 60px; }
#labb-hs-steer.labb-turn-smooth { animation: labbTurn 1.5s ease-in-out; }
#labb-hs-steer.labb-turn-bind { animation: labbBind 1.5s steps(1, end); }
@keyframes labbTurn { 25% { transform: rotate(-35deg); } 75% { transform: rotate(35deg); } }
@keyframes labbBind { 0% { transform: rotate(0); } 12% { transform: rotate(-6deg); } 25% { transform: rotate(-10deg); } 40% { transform: rotate(-4deg); } 55% { transform: rotate(5deg); } 70% { transform: rotate(9deg); } 85% { transform: rotate(3deg); } }
#labb-hs-tq[data-state="ok"], #labb-hs-al[data-state="ok"] { color: var(--green); }
#labb-hs-tq[data-state="warn"], #labb-hs-al[data-state="warn"] { color: var(--gold); }
#labb-hs-tq[data-state="bad"] { color: var(--red); }
#labb-hs .labb-panel .labb-group { padding-bottom: 12px; border-bottom: 1px solid var(--line); }
#labb-hs .labb-panel .labb-group:last-child { border-bottom: 0; padding-bottom: 0; }

/* ---------- 5. Noise detective ---------- */
.labb-grid-noise { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
@media (max-width: 760px) { .labb-grid-noise { grid-template-columns: minmax(0, 1fr); } }
.labb-spokes-b { fill: none; stroke: var(--line-2); stroke-width: 1.5; }
.labb-frame-b { fill: none; stroke: var(--ink); stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; }
.labb-frame-b.thin { stroke-width: 6; }
.labb-ring { fill: none; stroke: var(--ink-2); stroke-width: 5; }
.labb-crank { stroke: var(--ink-2); stroke-width: 8; stroke-linecap: round; }
.labb-pedal { stroke: var(--ink); stroke-width: 7; stroke-linecap: round; }
.labb-shoe { fill: var(--surface-2); stroke: var(--ink-2); stroke-width: 2; }
.labb-chain-b { stroke: var(--muted); stroke-width: 3; stroke-dasharray: 4 3; }
.labb-wave path { fill: none; stroke: var(--accent); stroke-width: 3; stroke-linecap: round; opacity: 0; }
.labb-wave.labb-wave-on path { animation: labbWave 1.2s ease-out; }
.labb-wave.labb-wave-on path:nth-child(2) { animation-delay: .12s; }
.labb-wave.labb-wave-on path:nth-child(3) { animation-delay: .24s; }
@keyframes labbWave { 0% { opacity: 0; } 30% { opacity: 1; } 100% { opacity: 0; } }
.labb-spot { cursor: pointer; }
.labb-spot-ring { fill: var(--surface); fill-opacity: .6; stroke: var(--accent); stroke-width: 2; stroke-dasharray: 3 3; }
.labb-spot-dot { fill: var(--accent); }
.labb-spot-n { fill: #fff; font-family: var(--mono); font-size: 12px; font-weight: 600; pointer-events: none; }
.labb-spot:hover .labb-spot-ring, .labb-spot.sel .labb-spot-ring { stroke: var(--ink); stroke-dasharray: none; stroke-width: 3; }
.labb-spot.sel .labb-spot-dot { fill: var(--ink); }
.labb-spot.sel .labb-spot-n { fill: var(--bg); }
.labb-spot.out { opacity: .3; }
.labb-spot.win .labb-spot-dot { fill: var(--green); }
.labb-spot.win .labb-spot-ring { stroke: var(--green); stroke-dasharray: none; stroke-width: 4; }
.labb-score { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 8px; font-size: .85rem; color: var(--muted); }
.labb-score b { color: var(--ink); font-size: 1rem; }
.labb-tests { display: flex; flex-wrap: wrap; gap: 8px; }
.labb-test { text-align: left; }
.labb-test.fix { border-style: dashed; }
.labb .btn.labb-test.used { opacity: .5; text-decoration: line-through; }
.labb-accuse { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); display: grid; gap: 10px; justify-items: start; }
.labb-accuse .labb-k { margin: 0; }
.labb-num { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--accent); color: #fff; font-family: var(--mono); font-size: .68rem; }
.labb .chip.labb-out { text-decoration: line-through; opacity: .45; }
.labb .chip.labb-win { background: var(--green); border-color: var(--green); color: #fff; opacity: 1; }
.labb .chip:disabled { cursor: default; }
.labb-log { list-style: none; padding: 0; margin: 12px 0 0; display: grid; gap: 6px; font-size: .86rem; color: var(--ink-2); max-height: 260px; overflow: auto; }
.labb-log:empty { display: none; }
.labb-log li { padding: 8px 12px; border-radius: 8px; background: var(--surface-2); border: 1px solid var(--line); line-height: 1.5; }
.labb-log b { color: var(--ink); }
.labb-tag { display: inline-block; padding: 1px 8px; margin-right: 8px; border-radius: 6px; font-size: .72rem; font-weight: 800; background: var(--bg-2); color: var(--muted); }
.labb-tag.hit, .labb-tag.fixed { background: var(--green-soft); color: var(--green); }
.labb-tag.clue { background: var(--blue-soft); color: var(--blue); }
.labb-tag.wrong { background: var(--red-soft); color: var(--red); }

@media (max-width: 480px) {
  .labb-head-r { width: 100%; justify-content: space-between; }
  .labb .btn-sm { padding: 8px 12px; font-size: .82rem; }
  .labb-readouts { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .labb-readouts > div { padding: 8px; }
  .labb-readouts b { font-size: .92rem; }
  .labb-inset svg { width: 120px; }
}
@media (prefers-reduced-motion: reduce) {
  .labb-cage, .labb-stop, #labb-lm-pul, #labb-lm-bscrew, #labb-hs-tvbar, #labb-hs-capbolt, .labb-meter-track i { transition: none; }
}
.labb-leader { fill: none; stroke: var(--muted); stroke-width: 1.2; }
