/* ---------- page layout: center content zone + left/right menu zones,
   using the site's full height ---------- */
.page {
  display: grid;
  grid-template-columns: 1fr minmax(0, var(--app-width)) 1fr;
  height: 100vh;
  height: 100dvh;
}

.menu-zone {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}

.menu-left {
  align-items: left;
}

.menu-left-main {
  /* flex column (not just block flow) so the vertical margins on
     .theme-toggle/.font-toggle/.fav-highlight-toggle below don't collapse
     into each other -- each group's margin should add to its neighbor's,
     not just take the larger of the two. */
  display: flex;
  flex-direction: column;
  padding-left: 1rem;
}

.menu-right {
  align-items: stretch;
  border-left: 1px solid var(--border);
}

.content-zone {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  border-left: 1px solid var(--border);
  border-right: 1px solid var(--border);
}

/* logo centered above the title, both centered in the left menu zone */
.site-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 20px clamp(10px, 3vw, 20px) 10px;
}

.site-icon {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  border-radius: 12px;
  background: var(--accent);
  color: #ffffff;
  font-weight: 700;
  font-size: 4rem;
}

.site-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
  text-align: center;
}

