/*
 * Theme: Bootstrap layout with LIME as primary and PURPLE as secondary (no Bootstrap blue anywhere).
 * Bootstrap 5.3 hard-codes some colours inside components, so those are overridden explicitly below.
 * Muted text (--bs-secondary-color / .text-body-secondary) intentionally stays grey.
 */

/* ---------------------------------------------------------------- palette */
:root, [data-bs-theme="light"] {
  --sh-lime: #84cc16;            /* primary fill */
  --sh-lime-hover: #77b814;
  --sh-lime-active: #65a30d;
  --sh-lime-text: #4d7c0f;       /* lime for text/links on white (readable contrast) */
  --sh-on-lime: #1a2e05;         /* text on lime fills */
  --sh-purple: #7c3aed;          /* secondary fill */
  --sh-purple-hover: #6d28d9;
  --sh-purple-text: #6d28d9;

  --bs-primary: var(--sh-lime);
  --bs-primary-rgb: 132, 204, 22;
  --bs-primary-text-emphasis: #365314;
  --bs-primary-bg-subtle: #ecfccb;
  --bs-primary-border-subtle: #bef264;
  --bs-secondary: var(--sh-purple);
  --bs-secondary-rgb: 124, 58, 237;
  --bs-secondary-text-emphasis: #4c1d95;
  --bs-secondary-bg-subtle: #ede9fe;
  --bs-secondary-border-subtle: #c4b5fd;

  --bs-link-color: var(--sh-lime-text);
  --bs-link-color-rgb: 77, 124, 15;
  --bs-link-hover-color: #365314;
  --bs-link-hover-color-rgb: 54, 83, 20;
  --bs-focus-ring-color: rgba(132, 204, 22, .3);
}
[data-bs-theme="dark"] {
  --sh-lime: #a3e635;
  --sh-lime-hover: #b5ee55;
  --sh-lime-active: #84cc16;
  --sh-lime-text: #a3e635;
  --sh-on-lime: #1a2e05;
  --sh-purple: #8b5cf6;
  --sh-purple-hover: #9d74f7;
  --sh-purple-text: #c4b5fd;

  --bs-primary: var(--sh-lime);
  --bs-primary-rgb: 163, 230, 53;
  --bs-primary-text-emphasis: #d9f99d;
  --bs-primary-bg-subtle: #1f2f0a;
  --bs-primary-border-subtle: #3f6212;
  --bs-secondary: var(--sh-purple);
  --bs-secondary-rgb: 139, 92, 246;
  --bs-secondary-text-emphasis: #ddd6fe;
  --bs-secondary-bg-subtle: #2a1b4d;
  --bs-secondary-border-subtle: #5b21b6;

  --bs-link-color: var(--sh-lime-text);
  --bs-link-color-rgb: 163, 230, 53;
  --bs-link-hover-color: #d9f99d;
  --bs-link-hover-color-rgb: 217, 249, 157;
  --bs-focus-ring-color: rgba(163, 230, 53, .3);
}

/* ---------------------------------------------------------------- buttons */
.btn { background-image: none; }
.btn-primary {
  --bs-btn-color: var(--sh-on-lime);
  --bs-btn-bg: var(--sh-lime);
  --bs-btn-border-color: var(--sh-lime);
  --bs-btn-hover-color: var(--sh-on-lime);
  --bs-btn-hover-bg: var(--sh-lime-hover);
  --bs-btn-hover-border-color: var(--sh-lime-hover);
  --bs-btn-active-color: var(--sh-on-lime);
  --bs-btn-active-bg: var(--sh-lime-active);
  --bs-btn-active-border-color: var(--sh-lime-active);
  --bs-btn-disabled-color: var(--sh-on-lime);
  --bs-btn-disabled-bg: var(--sh-lime);
  --bs-btn-disabled-border-color: var(--sh-lime);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
  font-weight: 500;
}
.btn-outline-primary {
  --bs-btn-color: var(--sh-lime-text);
  --bs-btn-border-color: var(--sh-lime);
  --bs-btn-hover-color: var(--sh-on-lime);
  --bs-btn-hover-bg: var(--sh-lime);
  --bs-btn-hover-border-color: var(--sh-lime);
  --bs-btn-active-color: var(--sh-on-lime);
  --bs-btn-active-bg: var(--sh-lime);
  --bs-btn-active-border-color: var(--sh-lime);
  --bs-btn-disabled-color: var(--sh-lime-text);
  --bs-btn-disabled-border-color: var(--sh-lime);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}
.btn-secondary {
  --bs-btn-color: #fff;
  --bs-btn-bg: var(--sh-purple);
  --bs-btn-border-color: var(--sh-purple);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--sh-purple-hover);
  --bs-btn-hover-border-color: var(--sh-purple-hover);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--sh-purple-hover);
  --bs-btn-active-border-color: var(--sh-purple-hover);
  --bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
}
.btn-outline-secondary {
  --bs-btn-color: var(--sh-purple-text);
  --bs-btn-border-color: var(--sh-purple);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--sh-purple);
  --bs-btn-hover-border-color: var(--sh-purple);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--sh-purple);
  --bs-btn-active-border-color: var(--sh-purple);
  --bs-btn-disabled-color: var(--sh-purple-text);
  --bs-btn-disabled-border-color: var(--sh-purple);
  --bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
}
.btn-link { --bs-btn-color: var(--bs-link-color); --bs-btn-hover-color: var(--bs-link-hover-color); }

/* ---------------------------------------------------------------- utilities */
.text-primary { color: var(--sh-lime-text) !important; }
.text-secondary { color: var(--sh-purple-text) !important; }
.text-bg-primary { color: var(--sh-on-lime) !important; background-color: var(--sh-lime) !important; }
.text-bg-secondary { color: #fff !important; background-color: var(--sh-purple) !important; }
.bg-primary { background-color: var(--sh-lime) !important; }
.bg-secondary { background-color: var(--sh-purple) !important; }
.border-primary { border-color: var(--sh-lime) !important; }
.border-secondary { border-color: var(--sh-purple) !important; }

/* Bootstrap "info" is light blue too -> soft purple */
.text-bg-info { color: #2e1065 !important; background-color: #c4b5fd !important; }
[data-bs-theme="dark"] .text-bg-info { color: #1e1033 !important; background-color: #a78bfa !important; }
.alert-info {
  --bs-alert-color: var(--bs-secondary-text-emphasis);
  --bs-alert-bg: var(--bs-secondary-bg-subtle);
  --bs-alert-border-color: var(--bs-secondary-border-subtle);
}
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { color: var(--bs-emphasis-color); }

/* ---------------------------------------------------------------- forms */
.form-control:focus, .form-select:focus, .form-check-input:focus {
  border-color: var(--sh-lime);
  box-shadow: 0 0 0 .25rem var(--bs-focus-ring-color);
}
.form-check-input:checked { background-color: var(--sh-lime-active); border-color: var(--sh-lime-active); }
.form-control[readonly] { background-color: var(--bs-secondary-bg); }

/* ---------------------------------------------------------------- navigation */
.dropdown-menu { --bs-dropdown-link-active-bg: var(--sh-lime); --bs-dropdown-link-active-color: var(--sh-on-lime); }
.nav-pills { --bs-nav-pills-link-active-bg: var(--sh-lime); --bs-nav-pills-link-active-color: var(--sh-on-lime); }
.list-group { --bs-list-group-active-bg: var(--sh-lime); --bs-list-group-active-border-color: var(--sh-lime); --bs-list-group-active-color: var(--sh-on-lime); }
.navbar .nav-link.active { box-shadow: inset 0 -2px 0 var(--sh-lime); }
.navbar .navbar-brand { letter-spacing: -.01em; }
.nav-tabs .nav-link { color: var(--bs-secondary-color); }
.nav-tabs .nav-link.active { color: var(--bs-body-color); font-weight: 500; box-shadow: inset 0 3px 0 var(--sh-lime); }

/* ---------------------------------------------------------------- general */
body { min-height: 100vh; }
.text-prewrap { white-space: pre-wrap; word-break: break-word; }
.status-badge { font-weight: 500; letter-spacing: .01em; }
.page-title { font-weight: 650; letter-spacing: -.01em; }
.card-header { font-weight: 600; }
.table td, .table th { vertical-align: middle; }
.table-hover tbody tr.clickable { cursor: pointer; }
.kv dt { font-weight: 500; color: var(--bs-secondary-color); font-size: .85rem; }
.kv dd { margin-bottom: .6rem; }

/* auth screens */
.auth-wrap { max-width: 440px; margin: 7vh auto 2rem; }
.auth-brand { font-size: 1.4rem; font-weight: 650; }
.auth-admin { background: var(--bs-dark); }
.auth-admin .auth-brand { color: #fff; }

/* timeline: purple = normal activity, lime = expertise, amber = internal */
.timeline { list-style: none; padding-left: 0; margin: 0; }
.timeline li { position: relative; padding: 0 0 1.1rem 1.6rem; border-left: 2px solid var(--bs-border-color); margin-left: .5rem; }
.timeline li:last-child { border-left-color: transparent; }
.timeline li::before {
  content: ""; position: absolute; left: -7px; top: .25rem; width: 12px; height: 12px;
  border-radius: 50%; background: var(--bs-body-bg); border: 2px solid var(--sh-purple);
}
.timeline li.internal::before { border-color: #c98a00; background: #fff6df; }
.timeline li.expertise::before { border-color: var(--sh-lime-active); background: var(--bs-primary-bg-subtle); }
.timeline .meta { font-size: .8rem; color: var(--bs-secondary-color); }
.timeline .body { background: var(--bs-body-bg); border: 1px solid var(--bs-border-color); border-radius: .5rem; padding: .6rem .8rem; margin-top: .3rem; }
.timeline li.internal .body { background: #fffaf0; border-color: #f0dfb4; }
[data-bs-theme="dark"] .timeline li.internal .body { background: #2b2410; border-color: #6b5313; }
[data-bs-theme="dark"] .timeline li.internal::before { background: #2b2410; }

/* attachments */
.att-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .25rem .6rem; border: 1px solid var(--bs-border-color);
  border-radius: 2rem; background: var(--bs-body-bg); font-size: .85rem; text-decoration: none; color: inherit; max-width: 100%; }
.att-chip:hover { border-color: var(--sh-lime); }
.att-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* dashboard stat cards */
.stat-card .num { font-size: 1.6rem; font-weight: 650; line-height: 1; }
.stat-card { cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.stat-card:hover { border-color: var(--sh-lime); }
.stat-card.active { border-color: var(--sh-lime); box-shadow: inset 0 3px 0 var(--sh-lime); }

.totals-table td:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.num-cell { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.access-code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 1.6rem; letter-spacing: .2em; }
[hidden] { display: none !important; }

/* spam trap field on the public form - invisible to people, still in the DOM for bots */
.hp-field { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

@media print { nav, .no-print { display: none !important; } }

.logo-preview { max-width: 240px; max-height: 80px; display: block; }
