/* Target Size and Spacing. Scoped under .target-lab so the module can be embedded.
   Verdicts carry a word and a glyph; lightness and one accent carry the rest. */
.target-lab { display: grid; gap: 1.5rem; }
.target-lab h3 { margin: 0 0 0.5rem; font-size: 1.05rem; }
.tl-scenarios { border: 1px solid var(--border, #d1d9e0); border-radius: 8px; padding: 0.75rem 1rem; display: grid; gap: 0.4rem; margin: 0; }
.tl-scenarios legend { font-weight: 700; padding: 0 0.3rem; }
.tl-radio, .tl-check { display: flex; gap: 0.5rem; align-items: start; }
.tl-radio input, .tl-check input { margin-top: 0.3rem; accent-color: var(--cta, #0c5a8a); }
.tl-lead { margin: 0; max-width: 70ch; }
.tl-options { display: grid; gap: 0.4rem; }
.tl-stage-wrap { overflow-x: auto; padding: 1rem 0; box-sizing: border-box; }
.tl-stage { position: relative; transform-origin: top left; box-sizing: content-box; border: 1px solid var(--muted, #4b5563); border-radius: 6px; background: var(--bg, #fff); box-shadow: inset 0 0 0 1px var(--border, #d1d9e0); }
.tl-overlay { position: absolute; inset: 0; pointer-events: none; overflow: visible; }
.tl-target { position: absolute; margin: 0; padding: 0; box-sizing: border-box; display: flex; align-items: center; justify-content: center; font: 600 11px/1 system-ui, sans-serif; color: var(--ink, #1f2937); background: var(--bg-soft, #e8f2f7); border: 1px solid var(--muted, #4b5563); border-radius: 3px; cursor: grab; touch-action: none; user-select: none; overflow: hidden; }
.tl-target:active { cursor: grabbing; }
.tl-kind-primary { background: var(--heading, #0b3d5c); color: #fff; border-color: var(--heading, #0b3d5c); font-size: 12px; }
.tl-kind-link { background: none; border: none; border-bottom: 1px dotted currentColor; border-radius: 0; color: var(--link, #0c5a8a); text-decoration: none; font-weight: 500; justify-content: start; cursor: pointer; }
.tl-kind-fixed { background: repeating-linear-gradient(45deg, var(--bg, #fff) 0 3px, var(--border, #d1d9e0) 3px 6px); border-style: dashed; cursor: not-allowed; }
.tl-v-fail { border-color: var(--danger, #b3261e); border-width: 2px; }
.tl-selected-target { outline: 3px solid var(--heading, #0b3d5c); outline-offset: 3px; box-shadow: 0 0 0 1px #fff; }
.tl-target:focus-visible { outline: 3px solid var(--heading, #0b3d5c); outline-offset: 3px; box-shadow: 0 0 0 1px #fff, 0 0 0 5px #fff; }
.tl-circle { fill: none; stroke: var(--muted, #4b5563); stroke-width: 1; stroke-dasharray: 3 2; }
.tl-circle-fail { stroke: var(--danger, #b3261e); stroke-width: 1.5; stroke-dasharray: none; fill: color-mix(in srgb, var(--danger, #b3261e) 12%, transparent); }
.tl-conflict { stroke: var(--danger, #b3261e); stroke-width: 1.5; stroke-dasharray: 4 3; }
.tl-help, .tl-note { margin: 0; color: var(--muted, #4b5563); max-width: 70ch; font-size: 0.95rem; }
.tl-controls { display: flex; flex-wrap: wrap; gap: 0.75rem 1.25rem; align-items: end; }
.tl-field { display: grid; gap: 0.25rem; }
.tl-field label { font-weight: 600; font-size: 0.95rem; }
.tl-inline { display: flex; gap: 0.5rem; align-items: center; }
.tl-field input[type="range"] { width: min(100%, 14rem); accent-color: var(--cta, #0c5a8a); }
.tl-field input[type="number"], .tl-field select { font: inherit; padding: 0.35rem 0.5rem; border: 1px solid var(--input-border, #9aa7b8); border-radius: 6px; background: var(--input-bg, #fff); color: var(--ink, #1f2937); width: 6.5rem; }
.tl-field select { width: auto; }
.tl-field output { font-variant-numeric: tabular-nums; min-width: 4rem; }
.tl-selected { display: grid; gap: 0.6rem; border: 1px solid var(--border, #d1d9e0); border-radius: 8px; padding: 0.75rem 1rem; background: var(--bg, #fff); }
.tl-sel-name { font-weight: 400; }
.tl-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.tl-actions button { font: inherit; font-size: 0.95rem; font-weight: 600; padding: 0.45rem 0.8rem; border: 1px solid var(--input-border, #9aa7b8); border-radius: 999px; background: var(--input-bg, #fff); color: var(--ink, #1f2937); cursor: pointer; }
.tl-actions button:hover { border-color: var(--heading, #0b3d5c); }
.tl-block { display: grid; gap: 0.6rem; }
.tl-summary { margin: 0; font-weight: 700; }
.tl-action { margin: 0; max-width: 75ch; }
.tl-table-wrap { overflow-x: auto; }
.target-lab table { border-collapse: collapse; width: 100%; font-size: 0.93rem; }
.target-lab caption { text-align: left; font-weight: 600; margin-bottom: 0.4rem; }
.target-lab th, .target-lab td { text-align: left; padding: 0.4rem 0.55rem; border-bottom: 1px solid var(--border, #d1d9e0); vertical-align: top; }
.target-lab tr.tl-row-selected th, .target-lab tr.tl-row-selected td { background: var(--bg-soft, #e8f2f7); }
.tl-badge { display: inline-block; padding: 0.1rem 0.45rem; border-radius: 4px; border: 1px solid var(--muted, #4b5563); font-weight: 700; white-space: nowrap; }
.tl-badge-pass, .tl-badge-pass-spacing { background: var(--bg-soft, #e8f2f7); }
.tl-badge-fail { border-color: var(--danger, #b3261e); color: var(--danger, #b3261e); }
.tl-badge-exempt { border-style: dotted; color: var(--muted, #4b5563); }
.tl-report { margin: 0; padding: 0.75rem 1rem; border-radius: 8px; background: var(--code-bg, #0b1b2a); color: var(--code-ink, #e6edf3); font-size: 0.85rem; white-space: pre-wrap; }
.tl-fixes { display: grid; gap: 0.6rem; }
@media (max-width: 40rem) {
  .tl-controls { display: grid; }
}
