/* The on-screen keyboard, for every layout. A sheet of its own because game.css may not name a layout, and Mint's sheets
   are frozen. ui/keyboardInset.js sets html.kb-open and --kb-inset only while a keyboard is up on a touch screen, so none of this
   can move anything otherwise. Where the layout itself has shrunk the inset is 0 and 100dvh has already followed. The
   !importants are for the fixed things each layout positions with its own, more specific rule, and last only as long
   as the keyboard does. */
html.kb-open #app.concept-std,
html.kb-open #app.concept-mint { height: calc(100dvh - var(--kb-inset)); min-height: 0; }
/* The bar is off the phone's glass while typing, as it is in any app: the room goes to what is being typed. */
html.kb-open .concept-std > .st-nav:not(.st-nav--side),
html.kb-open .concept-mint > .cm-nav:not(.cm-nav--side) { display: none; }
/* A page with no frame (sign-in, shard select) scrolls the document, which needs the room to scroll into. */
html.kb-open body:not(:has(> #app.concept-std, > #app.concept-mint)) { padding-bottom: var(--kb-inset); }
html.kb-open dialog[open] { bottom: var(--kb-inset) !important; max-height: calc(100dvh - var(--kb-inset) - 16px) !important; }
html.kb-open dialog.modal[open] .modal-body { max-height: calc(100dvh - var(--kb-inset) - 10rem) !important; }
html.kb-open .st-sheet,
html.kb-open .cm-sheet { bottom: var(--kb-inset) !important; max-height: calc(100dvh - var(--kb-inset) - 8px) !important; }
html.kb-open #toasts { bottom: calc(var(--kb-inset) + 8px) !important; }
/* What is above and below a field that has just been scrolled to, so its label and a little air come with it. */
html.kb-open input:focus, html.kb-open textarea:focus { scroll-margin-block: 3rem .75rem; }
