/* 共通の操作寸法。各アプリの tokens.css をそのまま利用する。 */
:root { --control-size: 44px; --field-size: 48px; --control-radius: 8px; --card-radius: 12px; }
:root :is(button, input:not([type=checkbox]):not([type=radio]), select, textarea, summary) {
  min-height: var(--control-size) !important; min-width: var(--control-size) !important;
  font-family: var(--font-sans); font-variant-numeric: tabular-nums;
}
button, input, select, textarea { max-width: 100%; }
:root :is(.primary,.secondary) { --control-size: var(--field-size); min-height: var(--field-size); border-radius: var(--control-radius); }
:root :is(input:not([type=checkbox]):not([type=radio]),select) { min-height: var(--field-size) !important; }
:root :is(.btn,.chip,.info-btn,[role=button]) { min-width: var(--control-size) !important; min-height: var(--control-size) !important; }
:root a[href] { min-width: var(--control-size); min-height: var(--control-size); display: inline-flex; align-items: center; }
button, summary, a { touch-action: manipulation; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
button:disabled { cursor: default; }
input, select, textarea { border-radius: var(--control-radius); }
input[type=checkbox], input[type=radio] { accent-color: var(--text); flex-shrink: 0; }
label:has(>input[type=checkbox]), label:has(>input[type=radio]) { min-width: var(--control-size); min-height: var(--control-size); }
pre, code { font-family: var(--font-sans); white-space: pre-wrap; overflow-wrap: anywhere; }
@media (hover:hover) { button:not(:disabled):hover { filter: brightness(.96); } }
@media (prefers-reduced-motion:reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0s !important; transition-duration: 0s !important; } }
