/* Camp theme for listmonk (Campagnes e-mail).
   Injected by infra/listmonk/nginx.conf into the admin and the public pages
   (subscription, unsubscribe, archive), after /branding/theme.css: colours,
   fonts and logo are the organisation's, set on the site (/admin/organisation)
   and read here as var(--camp-…). Each var() carries the design's default, in
   case theme.css cannot be loaded. listmonk is built on
   Bulma/Buefy with its colours compiled in, so this overrides the few classes
   that carry the primary blue; after a listmonk upgrade, check the header,
   the sidebar, a button and the login page. The e-mails themselves are not
   styled here: they use listmonk's templates (Campagnes → Modèles). */

/* ── Fonts ────────────────────────────────────────────────────────────
   The organisation's (theme.css declares the faces, self-hosted, so no
   request goes to Google: nDSG/GDPR). */
body, button, input, select, textarea, .button, .input, .textarea {
  font-family: var(--camp-font-text, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}
h1, h2, h3, .title, .page-header h1 {
  font-family: var(--camp-font-heading, system-ui, sans-serif);
  letter-spacing: -0.01em;
  color: var(--camp-forest, #183324);
}
body { color: var(--camp-ink, #2D3730); }
html, body, .wrap, .container.wrap { background-color: var(--camp-sand, #FAF8F5); }

/* ── Logo: the camp's, in the admin bar and on the public pages ── */
.navbar-brand .logo img.full,
.header .logo img {
  content: var(--camp-logo, url(/branding/logo));
  height: 40px;
  width: auto;
  max-height: 40px;
}
.navbar-brand .logo img.favicon { content: var(--camp-logo, url(/branding/logo)); }

/* ── Action colour: terracotta (var(--camp-accent-strong, #A8431F) carries white text at 6.0:1) ── */
a, .has-text-primary, .menu-list a.is-active, .menu-list a:hover { color: var(--camp-accent-strong, #A8431F); }
.button.is-primary, .button.is-primary[disabled], .tag.is-primary,
.b-checkbox.checkbox input[type="checkbox"]:checked + .check.is-primary,
.switch input[type="checkbox"]:checked + .check.is-primary,
.pagination-link.is-current, .steps .step-item.is-active .step-marker,
.progress.is-primary::-webkit-progress-value {
  background-color: var(--camp-accent-strong, #A8431F) !important;
  border-color: var(--camp-accent-strong, #A8431F) !important;
  color: #fff !important;
}
.button.is-primary:hover, .button.is-primary:focus { background-color: var(--camp-accent-strong-hover, #8F3818) !important; }
.button.is-primary.is-outlined { background: transparent !important; color: var(--camp-accent-strong, #A8431F) !important; }
.menu-list a.is-active { background-color: var(--camp-accent-tint, #F3E6DD); }
.tabs li.is-active a { border-bottom-color: var(--camp-accent-strong, #A8431F); color: var(--camp-accent-strong, #A8431F); }
.input:focus, .textarea:focus, .select select:focus {
  border-color: var(--camp-accent-strong, #A8431F);
  box-shadow: 0 0 0 0.125em color-mix(in srgb, var(--camp-accent-strong, var(--camp-accent-strong, #A8431F)) 20%, transparent);
}

/* ── Header bar: forest green, like the site ── */
.navbar { background-color: var(--camp-forest, #183324); }
.navbar .navbar-item, .navbar .navbar-link { color: var(--camp-sand, #FAF8F5); }
.navbar .navbar-item:hover, .navbar .navbar-link:hover { background-color: var(--camp-forest-mid, #234733); color: #fff; }
.navbar-dropdown .navbar-item { color: var(--camp-ink, #2D3730); }
/* The logo is dark ink: on the forest bar it sits on a sand disc. */
.navbar-brand .logo img {
  background: var(--camp-sand, #FAF8F5);
  border-radius: 999px;
  padding: 3px;
}
.menu-list .router-link-exact-active { border-right-color: var(--camp-accent-strong, #A8431F) !important; }
.notification.is-info, .box.is-info { border-left-color: var(--camp-accent-strong, #A8431F); }
.navbar-link:not(.is-arrowless)::after { border-color: var(--camp-sand, #FAF8F5) !important; }
.tox .tox-button:not(.tox-button--secondary):not(.tox-button--naked) { background: var(--camp-accent-strong, #A8431F); border-color: var(--camp-accent-strong, #A8431F); }

/* ── Public pages (login, subscription, unsubscribe, archive) ── */
.header .logo img { height: 64px; max-height: 64px; }
.button { background: var(--camp-accent-strong, #A8431F); border-radius: 999px; }
.button:hover { background: var(--camp-accent-strong-hover, #8F3818); }
.button.button-outline { background: #fff; border: 1px solid var(--camp-accent-strong, #A8431F); color: var(--camp-accent-strong, #A8431F); }
.button.button-outline:hover { background: var(--camp-accent-strong, #A8431F); border-color: var(--camp-accent-strong, #A8431F); color: #fff; }
a { text-decoration-color: color-mix(in srgb, var(--camp-accent, #D9653B) 35%, white); }
input:focus, select:focus, textarea:focus { border-color: var(--camp-accent-strong, #A8431F); }

/* Login: everyone signs in with the camp account; the password form is the
   superadmin's emergency door. So the camp button is the filled one. */
form[action="/auth/oidc"] .button.button-outline { background: var(--camp-accent-strong, #A8431F); border-color: var(--camp-accent-strong, #A8431F); color: #fff; }
form[action="/auth/oidc"] .button.button-outline:hover { background: var(--camp-accent-strong-hover, #8F3818); }
form[action="/admin/login"] .button { background: #fff; border: 1px solid var(--camp-sand-border-strong, #C9BFB1); color: var(--camp-ink-muted, #55645A); }
form[action="/admin/login"] .button:hover { background: var(--camp-sand-card, #F3EFE8); color: var(--camp-ink, #2D3730); }
