/* Shared FIB branding. Status, role, risk and saved map colors stay in their modules. */
:root {
  color-scheme: dark;
  --fib-navy: #071b2f;
  --fib-panel: #0b2743;
  --fib-accent: #86b8e6;
  --fib-button: #245d91;
  --fib-button-hover: #2d70ab;
  --fib-silver: #c7d2df;
  --fib-text: #edf2f7;
  --fib-muted: #a7b8ca;
  --fib-line: #52779a70;
  --fib-soft: #86b8e614;
  /* Existing components keep their established variable and class names. */
  --gold: var(--fib-accent);
  --ink: var(--fib-navy);
  --bg: var(--fib-navy);
  --panel: #0b2239;
  --panel2: var(--fib-panel);
  --panel-2: var(--fib-panel);
  --line: var(--fib-line);
  --cream: var(--fib-text);
  --text: var(--fib-text);
  --muted: var(--fib-muted);
}
body.fib-brand {
  background-color: var(--fib-navy);
  color: var(--fib-text);
}
body.fib-internal, body.fib-agency, body.fib-informant,
body.fib-signature, body.fib-legal, body.fib-public {
  background-image: radial-gradient(ellipse at 75% 0, #17476b55, transparent 48rem);
}
.fib-brand > header, .fib-brand .agency-header, .fib-brand .topbar,
.fib-brand .legal-header {
  background-color: #071b2ff2;
  border-color: var(--fib-line);
}
.fib-brand .brand img, .fib-brand .agency-brand-mark img,
.fib-brand .legal-brand img, .fib-brand .hero-seal,
.fib-brand .portal-access-card > img, .fib-brand .access-card > img {
  object-fit: contain;
}
.fib-brand .brand strong, .fib-brand .agency-brand-copy strong,
.fib-brand .legal-brand strong { color: var(--fib-silver); }
.fib-brand .brand small, .fib-brand .brand span,
.fib-brand .agency-brand-copy small { color: var(--fib-muted); }

/* Primary actions and navigation are blue; destructive/status actions retain their colors. */
.fib-brand .gold:not(.danger), .fib-brand .primary:not(.danger),
.fib-brand .primary-button:not(.danger), .fib-brand .login,
.fib-brand .login-button, .fib-brand .read-confirmation button,
.fib-brand .signature-action button, .fib-informant button:not(.secondary-button):not(.danger) {
  background: var(--fib-button);
  color: var(--fib-text);
  border-color: #86b8e670;
}
.fib-brand .gold:not(.danger):hover, .fib-brand .primary:not(.danger):hover,
.fib-brand .primary-button:not(.danger):hover, .fib-brand .login:hover,
.fib-brand .login-button:hover, .fib-brand .read-confirmation button:hover,
.fib-brand .signature-action button:hover,
.fib-informant button:not(.secondary-button):not(.danger):hover {
  background: var(--fib-button-hover);
  color: #fff;
}
.fib-brand .outline:not(.danger):not(.remove-role),
.fib-brand .secondary, .fib-brand .secondary-button,
.fib-brand .agency-logout {
  border-color: #86b8e670;
  color: var(--fib-silver);
  background-color: #0b274355;
}
.fib-brand .outline:not(.danger):not(.remove-role):hover,
.fib-brand .secondary:hover, .fib-brand .secondary-button:hover,
.fib-brand .agency-logout:hover {
  border-color: var(--fib-accent);
  background-color: #123957;
  color: var(--fib-text);
}
.fib-brand input:focus, .fib-brand select:focus, .fib-brand textarea:focus {
  border-color: var(--fib-accent);
  box-shadow: 0 0 0 2px #86b8e626;
}
.fib-brand a:focus-visible, .fib-brand button:focus-visible {
  outline: 2px solid var(--fib-accent);
  outline-offset: 3px;
}
.fib-internal .shell > aside {
  background: #091f35;
  border-color: var(--fib-line);
}
.fib-internal .shell > aside .active,
.fib-internal .shell > aside button:hover,
.fib-internal .academy-list-item.active,
.fib-agency .agency-control-list button.active,
.fib-agency .agency-control-list button:hover {
  background: #153d60;
  border-color: var(--fib-accent);
  color: var(--fib-text);
}
.fib-internal aside .navigation-folder-toggle {
  color: var(--fib-silver);
  border-color: var(--fib-line);
  background: #0b2743;
}
.fib-internal nav a:hover, .fib-internal nav button:hover,
.fib-public nav a:hover, .fib-brand .agency-legal a:hover {
  color: var(--fib-accent);
  border-color: var(--fib-accent);
}
.fib-internal .portal-access-gate {
  background: radial-gradient(circle at 50% 20%, #245d9140, transparent 34rem), var(--fib-navy);
}
.fib-internal .portal-access-card {
  border-color: #86b8e676;
  background-color: #0b2239;
}
.fib-internal .panel-presence-content,
.fib-internal .profile-menu-content {
  border-color: var(--fib-line);
  background-color: #0b2239;
}
.fib-internal .panel-presence-entry img { border-color: var(--fib-line); }

/* Homepage ornaments and public forms; the existing hero image and mobile layout are untouched. */
.fib-public .gold-ring {
  border-color: #86b8e680;
  box-shadow: 0 0 0 18px #86b8e60a, 0 0 90px #86b8e622;
}
.fib-public .corruption-report-dialog {
  background-color: #0b2239;
  border-color: #86b8e688;
}
.fib-public .corruption-report-dialog input,
.fib-public .corruption-report-dialog textarea,
.fib-public .corruption-report-dialog select { border-color: var(--fib-line); }
.fib-public .public-wanted-card {
  border-color: var(--fib-line);
  background: linear-gradient(145deg, #0b2743, #071b2f);
}
.fib-public .public-wanted-empty, .fib-public .public-wanted-copy > strong {
  border-color: var(--fib-line);
  background: var(--fib-soft);
  color: var(--fib-silver);
}
.fib-public .public-wanted-copy dt { color: var(--fib-accent); }
.fib-public .public-wanted-copy dd { color: var(--fib-text); }
.fib-public .public-wanted-copy > p { color: var(--fib-silver); }
.fib-public .public-wanted-placeholder { color: #86b8e680; }

/* Agency and specialist surfaces. */
.fib-agency .agency-brand-mark {
  border-color: #86b8e66b;
  background: radial-gradient(circle, #86b8e61c, transparent 68%);
  box-shadow: inset 0 0 20px #86b8e60b, 0 6px 20px #0007;
}
.fib-agency .agency-brand:hover .agency-brand-mark,
.fib-agency .agency-user-avatar { border-color: var(--fib-accent); }
.fib-agency .agency-recommendation, .fib-agency .agency-review-board,
.fib-agency .agency-rating-summary {
  border-color: var(--fib-line);
  background: linear-gradient(145deg, #0b2743, #091f35);
}
.fib-informant .security-card, .fib-informant .panel,
.fib-informant .steps article, .fib-informant .access-card,
.fib-informant .submission, .fib-informant .privacy-note,
.fib-legal .legal-panel, .fib-legal .legal-card,
.fib-signature .signature-card {
  background: linear-gradient(145deg, #0b2743, #091f35);
  border-color: var(--fib-line);
}
.fib-informant label, .fib-informant .steps span { color: var(--fib-silver); }
.fib-informant .steps span { background: var(--fib-button); }
.fib-informant input, .fib-informant textarea, .fib-informant select,
.fib-signature .document-meta div, .fib-signature .document-fields section {
  background-color: #071b2f;
  border-color: var(--fib-line);
}
.fib-signature .seal {
  border-color: var(--fib-line);
  color: var(--fib-silver);
  box-shadow: 0 0 25px #86b8e622;
}
.fib-signature .seal img { width: 100%; height: 100%; object-fit: contain; }

/* Existing rich-text and upload widgets have their own hard-coded decorative gold. */
.fib-brand .file-drop-zone {
  border-color: #86b8e694;
  background: #0b2743a8;
}
.fib-brand .file-drop-zone:focus-visible, .fib-brand .file-drop-zone.is-dragging {
  border-color: var(--fib-accent);
  background: #153d60;
  box-shadow: 0 0 0 3px #86b8e626;
}
.fib-brand .file-drop-icon, .fib-brand .file-drop-browse {
  border-color: #86b8e670;
  background: #86b8e619;
  color: var(--fib-silver);
}
.fib-brand .file-drop-browse:hover, .fib-brand .file-drop-browse:focus-visible {
  background: #245d91;
  color: var(--fib-text);
}
.fib-brand .discord-text-toolbar button:hover,
.fib-brand .discord-text-toolbar button:focus-visible {
  background: #86b8e62e;
  border-color: var(--fib-accent);
}
.fib-legal a { color: var(--fib-accent); }
.fib-legal .legal-brand, .fib-legal .legal-brand small,
.fib-legal .legal-card h3 { color: var(--fib-silver); }
.fib-legal .legal-card p, .fib-legal .legal-card li { color: var(--fib-silver); }
.fib-legal .legal-nav a[aria-current="page"] {
  border-color: var(--fib-accent);
  background: #153d60;
  color: var(--fib-text);
}
.fib-legal .legal-hero, .fib-legal .legal-note {
  border-color: var(--fib-line);
  background: linear-gradient(135deg, #0b2743, #091f35);
}
.fib-internal .permission-preview-banner strong,
.fib-internal .permission-preview-active-banner span,
.fib-internal .permission-preview-active-banner strong b,
.fib-internal .permission-preview-launch-icon,
.fib-internal .live-map-sidebar-header strong,
.fib-internal .live-map-sidebar-group > summary,
.fib-internal .live-map-editor > strong,
.fib-internal .live-map-point-list label span {
  color: var(--fib-silver);
}
.fib-internal .permission-preview-active-banner,
.fib-internal .permission-preview-active-banner button,
.fib-internal .permission-preview-launch-icon {
  border-color: var(--fib-line);
}
.fib-internal .permission-preview-launch-icon {
  background: var(--fib-soft);
}
.fib-internal .faction-person-result:hover,
.fib-internal .investigation-entry[open] > summary {
  background: var(--fib-soft);
}
.fib-internal .live-map-sidebar {
  background: linear-gradient(160deg, #0b2743, #091f35);
}
.fib-internal .live-map-canvas .leaflet-control-zoom a {
  background: #0b2743ee;
  border-color: var(--fib-line);
  color: var(--fib-silver);
}

/* Backend login templates opt into the same theme, without changing their flow. */
body.fib-auth-page {
  margin: 0;
  min-height: 100vh;
  min-height: 100dvh;
  padding: 20px;
  box-sizing: border-box;
  display: grid;
  place-items: center;
  color: var(--fib-text);
  background: radial-gradient(ellipse at 50% 0, #1e507988, transparent 42rem), var(--fib-navy);
  font: 16px/1.6 Inter, "Segoe UI", Arial, sans-serif;
}
.fib-auth-page .card {
  box-sizing: border-box;
  width: min(100%, 490px);
  max-width: min(100%, 490px);
  padding: clamp(22px, 5vw, 36px);
  border: 1px solid var(--fib-line);
  border-radius: 16px;
  background: #0b2239;
  box-shadow: 0 24px 72px #0006;
  text-align: center;
  overflow-wrap: anywhere;
}
.fib-auth-page .auth-brand-logo {
  display: block;
  width: 112px;
  height: 112px;
  max-width: 100%;
  margin: 0 auto 18px;
  object-fit: contain;
}
.fib-auth-page h1 { color: var(--fib-silver); line-height: 1.25; }
.fib-auth-page p { color: var(--fib-muted); }
.fib-auth-page .button {
  box-sizing: border-box;
  max-width: 100%;
  background: var(--fib-button);
  color: var(--fib-text);
  border: 1px solid #86b8e670;
}
.fib-auth-page .button:hover { background: var(--fib-button-hover); }
