/* Shared accessible primitives. Domain styles own layout, never new palettes. */
:where(body, button, input, select, textarea) { font-family: var(--font); }
:where(button, input, select, textarea) { font-size: inherit; }
:focus-visible {
    outline: 2px solid var(--focus-ring) !important;
    outline-offset: 3px !important;
    scroll-margin-block: 80px;
}
:where(button, [role="button"], input, select, textarea) { touch-action: manipulation; }
:where(input, select, textarea) { accent-color: var(--brand-solid); }
:where(input, textarea)::placeholder { color: var(--text-3); opacity: 1; }
:where(svg.ui-icon, svg.lucide, .bi svg, [data-forged-svg="functional"]) {
    flex-shrink: 0;
    stroke-width: var(--icon-stroke);
    stroke-linecap: round;
    stroke-linejoin: round;
    vertical-align: middle;
    filter: none;
}
:where(.katomu-katy-badge, .katomu-katy-value) { color: var(--katy); }
:where([aria-invalid="true"]) { border: 2px dashed var(--danger); }
/* Qualitative meter colour follows its value; components retain text labels.
   --metric-value is a presentation value in 0..100, never simulation authority. */
.katomu-metric {
    --metric-score: clamp(0, var(--metric-value, 50), 100);
    --metric-color: color-mix(in srgb,
        color-mix(in srgb, var(--metric-negative), var(--metric-middle) clamp(0%, calc(var(--metric-score) * 2%), 100%)),
        var(--metric-positive) clamp(0%, calc((var(--metric-score) - 50) * 2%), 100%));
}
.katomu-metric[data-metric-direction="lower"] {
    --metric-score: clamp(0, calc(100 - var(--metric-value, 50)), 100);
}
.katomu-metric[data-metric-scale="arousal"] {
    --metric-color: color-mix(in srgb, var(--metric-arousal-low),
        var(--metric-arousal-high) calc(var(--metric-score) * 1%));
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}
/* Small forged controls must read like the shared icon family, not dark metal ornaments. */
.katomu-control-art {
    --forged-svg-rim: var(--brand);
    --forged-svg-body: var(--surface);
    --forged-svg-facet: var(--brand);
    --forged-svg-facet-opacity: 1;
    --forged-svg-rivet: var(--text);
    --forged-svg-pit-edge: var(--text);
    --forged-svg-scar-opacity: 0;
}
