/* AACPOJ design tokens — shared by navbar v5.2 and future cd2 components */
:root {
  --brand: #00A896;
  --brand-dark: #028090;
  --brand-light: #EAFBF7;
  --aacp-bg-soft: #f8f9fa;
  --aacp-bg-dim: #f5f4f7;
  --aacp-header-bg-from: #0d1117;
  --aacp-header-bg-to: #141b2e;

  --text: #1c1917;
  --text-soft: #57534e;
  --text-muted: #a8a29e;

  --shadow-sm: 0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.06);
  --shadow-lg: 0 10px 25px -5px rgba(15,23,42,.10), 0 8px 10px -6px rgba(15,23,42,.06);
  --radius: 14px;
  --radius-sm: 8px;

  --display: 'Space Grotesk', 'Noto Sans TC', sans-serif;
  --mono: 'JetBrains Mono', monospace;
  --navbar-h: 56px;
}

/* Body fix (v5.2): single light theme + pastel multi-radial background.
   max-width moved off body to allow fixed navbar at 100% width without scrollbar artifacts. */
body {
  max-width: none !important;
  padding-top: var(--navbar-h);
  box-sizing: border-box;
  background:
    radial-gradient(1200px 560px at 12% -180px, rgba(0, 168, 150, 0.08) 0%, rgba(255, 255, 255, 0) 58%),
    radial-gradient(860px 340px at 90% -60px, rgba(66, 133, 244, 0.06) 0%, rgba(255, 255, 255, 0) 66%),
    radial-gradient(760px 300px at 72% 0%, rgba(251, 188, 5, 0.04) 0%, rgba(255, 255, 255, 0) 62%),
    linear-gradient(180deg, var(--aacp-bg-soft) 0%, var(--aacp-bg-dim) 100%);
  background-attachment: fixed;
}
body.has-contest-banner { padding-top: calc(var(--navbar-h) + 48px); background: #fff; }

/* page-container becomes the new positioned ancestor for footer (was body's max-width before).
   Keep DMOJ's existing 107em layout cap by relocating it. */
#page-container {
  max-width: 107em;
  margin: 0 auto;
  min-height: calc(100vh - var(--navbar-h));
  position: relative;
}

/* Hide DMOJ's old purple impersonate strip — replaced by border-bottom on .aaoj-shell */
body.is-impersonating #nav-container { background: transparent !important; }
