/* StabMovies v271 — global public-interface centering.
   This layer changes alignment only. It never assigns artwork dimensions,
   crop modes, transforms, or positioning. */

/* The site-wide default follows the authored direction: interface copy is
   centered; prose receives an explicit readable left-aligned exception. */
body{
  text-align:center;
}

/* Titles and named interface elements can sit inside database components
   whose legacy stylesheet sets text-align:left on the whole component. */
body:not(#sm-centering-never) :is(h1,h2,h3,h4,h5,h6),
body:not(#sm-centering-never) :is(
  .title,.eyebrow,.kicker,.meta,.tag,.badge,.status,.count,.hint,
  [class$="-title"],[class*="-title "],
  [class$="-head"],[class*="-head "],
  [class$="-label"],[class*="-label "],
  [class$="-name"],[class*="-name "],
  [class$="-status"],[class*="-status "],
  [class$="-count"],[class*="-count "],
  [class$="-meta"],[class*="-meta "],
  [class$="-hint"],[class*="-hint "],
  figcaption,caption,legend,label
){
  text-align:center!important;
  min-width:0;
  overflow-wrap:anywhere;
}

/* Every actual control has centered copy, including mobile menu buttons and
   database controls that previously inherited left alignment. */
:where(
  button,[role="button"],summary,.btn,a.btn,
  a[class$="-btn"],a[class*="-btn "],
  input:not([type="checkbox"]):not([type="radio"]),select,option
){
  text-align:center!important;
  text-align-last:center;
}

/* Legacy database styles sometimes left-align every descendant with a star
   selector. A control and all of its visible label fragments remain centered. */
body:not(#sm-centering-never) :is(
  button,[role="button"],summary,.btn,a.btn,
  a[class$="-btn"],a[class*="-btn "]
),
body:not(#sm-centering-never) :is(
  button,[role="button"],summary,.btn,a.btn,
  a[class$="-btn"],a[class*="-btn "]
) *{
  text-align:center!important;
  text-align-last:center;
}

/* Some older modules use one-off row class names. :has() catches their direct
   control rows without changing the row's display mode or button widths. */
:where(div,section,header,footer,nav,form):has(> :is(button,[role="button"],.btn,a[class$="-btn"])){
  justify-content:center!important;
  justify-items:center;
  text-align:center!important;
}

/* Center common flex/grid control groups without changing their component
   widths or the dimensions of anything displayed inside them. */
:where(
  nav,.jump,.btnrow,.linkrow,.social,.form,
  [class$="-nav"],[class*="-nav "],
  [class$="-tabs"],[class*="-tabs "],
  [class$="-btns"],[class*="-btns "],
  [class$="-buttons"],[class*="-buttons "],
  [class$="-actions"],[class*="-actions "],
  [class$="-controls"],[class*="-controls "],
  [class$="-tools"],[class*="-tools "],
  [class$="-filters"],[class*="-filters "],
  [class$="-links"],[class*="-links "],
  [class$="-head"],[class*="-head "]
){
  justify-content:center!important;
  justify-items:center;
  align-items:center;
  text-align:center!important;
}

/* Cards, database sections, and dialogs keep their shells centered even when
   a legacy component applies an inline or component-wide left alignment. */
:where(
  .module,.card,.shelf,.mount,
  [class$="-detail"],[class*="-detail "],
  [class$="-section"],[class*="-section "],
  [class$="-dialog"],[class*="-dialog "],
  [class$="-modal"],[class*="-modal "]
){
  margin-left:auto;
  margin-right:auto;
}

/* Authored prose remains readable. These exceptions are deliberately more
   specific than the centered body default and cover long-form structures. */
body:not(#sm-centering-never) :is(
  p:not([class$="-hint"]):not([class*="-hint "]),.p,blockquote,li,dd,td,textarea,
  .prose,.copy,.description,.excerpt,.synopsis,.message,
  [class$="-copy"],[class*="-copy "],
  [class$="-description"],[class*="-description "],
  [class$="-excerpt"],[class*="-excerpt "],
  [class$="-synopsis"],[class*="-synopsis "],
  [class$="-bodycopy"],[class*="-bodycopy "]
){
  text-align:left!important;
  text-align-last:auto;
  min-width:0;
  overflow-wrap:anywhere;
}

/* Table headings are labels; table cells are body information. */
body:not(#sm-centering-never) th{
  text-align:center!important;
}

/* A button can contain a paragraph-shaped legacy span. Its interaction label
   follows the button rule rather than the prose exception. */
body:not(#sm-centering-never) :is(button,[role="button"],summary,.btn,a[class$="-btn"],a[class*="-btn "]) :is(p,.p){
  text-align:center!important;
  text-align-last:center;
}

@media (max-width:900px){
  .jump-dd-btn,
  .jump-dd-list,
  .jump-dd-list a{
    text-align:center!important;
  }
}
