/* ==========================================================================
   PAGE FRAME — Level 2. Loaded after otbtv_theme/css/layout/layout.css.

   The ground fills the viewport; <main> is no longer a centred panel.
   .otb-container is the full frame (1280 content + gutters, from tokens);
   .otb-container--page is the reading / paying column.
   ========================================================================== */

.main,
.page-neutral-bg .main {
  max-width: none;
  min-height: 0;
  /* auto: the base theme narrows <main> on a few forms (login, register). */
  margin: 0 auto;
  padding: var(--space-12) 0 var(--space-24);
  background: transparent;
  box-shadow: none;
}

.main--dark {
  color: var(--color-text-primary);
}

.main--front {
  padding: 0;
}

/* The footer follows <main> directly. */
.dialog-off-canvas-main-canvas > main {
  margin-bottom: 0;
}

/* Base-theme content breaks out of its container by the gutter tokens, so
   the narrower column narrows the tokens with it. */
.otb-container--page {
  --container-padding-medium: var(--container-page-padding);
  --container-padding-desktop: var(--container-page-padding);
  max-width: var(--container-page-width);
}

/* Set by js/header.js while the phone menu is open. */
.otb-scroll-lock,
.otb-scroll-lock body {
  overflow: hidden;
}
