/* Shared fixed shell: only the central content scrolls or enters loading state. */
html.eas-content-shell body {
  height: 100vh; height: 100dvh; min-height: 0; overflow: hidden;
}
html.eas-content-shell body > .tu-beta-banner,
html.eas-content-shell body > .tu-beta-bar,
html.eas-content-shell body > .tu-site-header,
html.eas-content-shell body > .tu-footer {
  position: relative !important; inset: auto !important; flex: 0 0 auto;
}
html.eas-content-shell body > .tu-main-content {
  position: relative; flex: 1 1 0; min-height: 0 !important;
  width: 100% !important; max-width: none !important; margin: 0 !important;
  padding: 32px max(24px, calc((100% - 1180px) / 2)) 64px !important;
  overflow: auto; overscroll-behavior: contain; scrollbar-gutter: stable;
}
html.eas-content-shell body.tu-auth-pending > .tu-main-content {
  display: grid; align-items: start; justify-items: center; padding: 24px !important;
}
html.eas-content-shell body.tu-auth-pending .login-card { margin-block: auto !important; }
html.eas-content-shell body.tu-auth-pending .tu-site-header { display: none !important; }
html.eas-content-shell.eas-session-confirmed body.tu-auth-pending .tu-site-header { display: block !important; }
html.eas-content-shell.eas-session-confirmed body.tu-auth-pending .tu-logout-button { visibility: visible; }
html.eas-content-shell.eas-session-confirmed body.tu-auth-pending .tu-beta-banner > .tu-eas-connection { visibility: visible; }
html.eas-content-shell body.tu-auth-pending .tu-logout-button { visibility: hidden; }
html.eas-content-shell body.tu-auth-pending .tu-beta-banner > .tu-eas-connection {
  display: inline-flex; visibility: hidden;
}
html.eas-page-loading .tu-main-content { overflow: hidden !important; }
html.eas-page-loading .tu-main-content > :not(#eas-page-loader) { visibility: hidden !important; }
html.eas-page-loading:not(.eas-content-shell) body > :not(#eas-page-loader) { visibility: hidden !important; }
#eas-page-loader {
  position: absolute; inset: 0; z-index: 50; display: flex;
  flex-direction: column; align-items: center; justify-content: center;
  gap: 18px; padding: 24px; background: #f8faf9; color: #193b2d;
  font: 500 16px/1.6 system-ui, sans-serif; text-align: center;
}
body > #eas-page-loader { position: fixed; }
#eas-page-loader[hidden] { display: none; }
html.eas-page-revealing #eas-page-loader { opacity: 0; transition: opacity 180ms ease-out; }
html.eas-page-revealing .tu-main-content > :not(#eas-page-loader) { animation: eas-content-reveal 180ms ease-out; }
@keyframes eas-content-reveal { from { opacity: 0; } to { opacity: 1; } }
.eas-page-spinner { width: 42px; height: 42px; border: 4px solid #dceee5;
  border-top-color: #16845b; border-radius: 50%; animation: eas-page-spin .8s linear infinite; }
#eas-page-loader.is-error .eas-page-spinner { display: none; }
#eas-page-loader button { padding: 10px 22px; border: 1px solid #16845b;
  border-radius: 8px; background: #16845b; color: white; font: inherit; cursor: pointer; }
#eas-page-loader button:disabled { opacity: .6; cursor: wait; }
@keyframes eas-page-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .eas-page-spinner { animation: none; }
  html.eas-page-revealing #eas-page-loader { transition: none; }
  html.eas-page-revealing .tu-main-content > :not(#eas-page-loader) { animation: none; }
}
@media (max-width: 900px) {
  html.eas-content-shell body > .tu-beta-banner {
    grid-template-columns: minmax(0, 1fr) auto; gap: 8px;
  }
  html.eas-content-shell .tu-beta-content { grid-column: 1; min-width: 0; }
  html.eas-content-shell .tu-beta-copy { min-width: 0; text-align: left; line-height: 1.4; }
  html.eas-content-shell body .tu-beta-banner > .tu-eas-connection { grid-column: 2; }
  html.eas-content-shell body > .tu-main-content { padding: 24px 14px 32px !important; }
  html.eas-content-shell body > .tu-footer { padding: 10px 14px !important; }
  html.eas-content-shell .tu-footer-simple { flex-direction: column; align-items: flex-start; gap: 6px; }
  html.eas-content-shell .tu-footer-meta { flex-wrap: nowrap; gap: 4px; font-size: 11px; }
  html.eas-content-shell .tu-footer-meta a { font-size: 11px; }
  html.eas-content-shell .tu-footer-summary { flex-direction: row; flex-wrap: wrap; gap: 4px 8px; }
}
@media (max-width: 640px) {
  /* Reserve the same two summary lines before and after the webfont loads. */
  html.eas-content-shell .tu-footer-summary {
    flex-direction: column; align-items: flex-start; flex-wrap: nowrap;
  }
}
