:root {
  --bg: #f5f5f7;
  --fg: #1a1a1a;
  --muted: #666;
  --card: #ffffff;
  --accent: #7a002e;
  --accent-fg: #ffffff;
  --border: #e3e3e6;
  --shadow: 0 2px 12px rgba(0,0,0,.05);
  --radius: 10px;
}
* { box-sizing: border-box; }
html, body {
  margin: 0; padding: 0; background: var(--bg); color: var(--fg);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 16px; line-height: 1.55;
}
.container { max-width: 880px; margin: 0 auto; padding: 0 1.5rem; }
.site-header { background: var(--accent); color: var(--accent-fg); padding: 1rem 0; }
.site-header .brand { color: var(--accent-fg); font-weight: 600; text-decoration: none; font-size: 1.1rem; }
.site-footer { padding: 2rem 0; color: var(--muted); text-align: center; }
main { padding: 2rem 0; }
.hero h1 { margin: 0 0 .5rem; font-size: 1.8rem; }
.hero .lead { font-size: 1.1rem; color: var(--muted); margin: 0 0 1.5rem; }
section { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 1.25rem 1.5rem; margin-bottom: 1.25rem; box-shadow: var(--shadow); }
section h2 { margin-top: 0; font-size: 1.2rem; }
.form-list { list-style: none; padding: 0; margin: 0; }
.form-list li { padding: .6rem 0; border-bottom: 1px solid var(--border); display: flex; gap: .75rem; align-items: baseline; }
.form-list li:last-child { border-bottom: 0; }
.form-list a { color: var(--accent); text-decoration: none; font-weight: 500; }
.form-list a:hover { text-decoration: underline; }
.muted { color: var(--muted); font-size: .9rem; }
.empty { color: var(--muted); }
.messages { list-style: none; padding: 0; margin: 0 0 1rem; }
.message { padding: .6rem .8rem; border-radius: 6px; margin-bottom: .5rem; }
.message--error { background: #ffeaea; color: #730000; border: 1px solid #f5b5b5; }
.message--success { background: #eafff0; color: #00532e; border: 1px solid #b8e6c8; }

/* ===== Three-column page layout: side logos + main content =================
   - the centred content column has subtle vertical "tram lines" on both sides
   - the side columns are sticky AND full-viewport-height, so the top logo and
     the bottom logo pin to the top and bottom corners of the viewport
     respectively, all four visible at once on a wide screen
   - each logo sits in a uniform 140x140 frame so they all look the same size */

.page-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) min(880px, calc(100% - 2rem)) minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 1rem;
}

.page-content {
    padding: 2rem 1.5rem;
    border-left:  1px solid var(--border);
    border-right: 1px solid var(--border);
}

.logos {
    position: sticky;
    top: 1rem;
    align-self: start;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    align-items: center;
    padding: 1.5rem 0;
}
.logos--right { visibility: hidden; }

.logos .logo-slot {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 140px;
    height: 140px;
    text-decoration: none;
    color: inherit;
}
.logos .logo-slot img {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    display: block;
}
.logos .logo-placeholder {
    display: none;
    width: 130px;
    height: 130px;
    border: 2px dashed #c0c0c8;
    border-radius: 10px;
    align-items: center;
    justify-content: center;
    color: #888;
    font-size: .85rem;
    background: #fff;
}
.logos .logo-slot.empty .logo-placeholder { display: flex; }

@media (max-width: 1100px) {
    .page-grid { grid-template-columns: 1fr; padding: 0; }
    .logos { display: none; }
    .page-content { border-left: 0; border-right: 0; padding: 2rem 1.5rem; }
}
