/* Owner rule, 2026-09-14: regular button labels; never semibold or bold.
   Important is intentional: legacy component font shorthands must not win.
   Text labels inherit; icon fonts and story-card headings keep their own weight. */
:is(button,[role="button"],input[type="button"],input[type="submit"],input[type="reset"],summary,
    a.primary,a.button,a.btn,a.w-button,a.plans-cta,a.adventure-ending__cta,
    .story-card-action a,[data-st-button]){font-weight:400!important}
:is(button,[role="button"],summary,[data-st-button])
    :is(span,strong,b,label):not([aria-hidden="true"]):not([class*="fa-"]){font-weight:inherit!important}

/* Owner rule: 8px between a button label and its icon, all breakpoints/states. */
:is(button,[role="button"],a.primary,a.button,a.btn,a.w-button,a.plans-cta,
    a.adventure-ending__cta,.story-card-action a,[data-st-button])
    :is(svg,img){flex-shrink:0}
:is(button,[role="button"],a.primary,a.button,a.btn,a.w-button,a.plans-cta,
    a.adventure-ending__cta,.story-card-action a,[data-st-button]):has(svg,img,i,[class*="icon"],[class*="fa-"]){column-gap:8px!important}

/* Owner: modal focus retains keyboard behavior without rings or focus shadows.
   Scope includes native HTML dialogs and the app's modal hosts. */
:is(dialog,[role="dialog"],[aria-modal="true"],[data-st-dialog-native]):is(:focus,:focus-visible),
:is(dialog,[role="dialog"],[aria-modal="true"],[data-st-dialog-native]) :is(:focus,:focus-visible) {
  outline: none !important;
  box-shadow: none !important;
}
:is(dialog,[role="dialog"],[aria-modal="true"]):is(:focus,:focus-visible) {
  border-color: transparent !important;
}
