/*
 * Application Styles
 * Custom styles for Forge Partners
 *
 * Colour palette from forgepartners.co.nz:
 * - Primary: warm amber/gold (logo accent)
 * - Secondary: navy (professional contrast)
 * - Tertiary: warm cream backgrounds
 */

:root,
[data-bs-theme="light"] {
  /* Typography: Montserrat headings, Source Sans 3 body */
  --bs-font-sans-serif: "Source Sans 3", ui-sans-serif, system-ui, sans-serif;
  --bs-body-font-family: var(--bs-font-sans-serif);
  --bs-headings-font-family: "Montserrat", var(--bs-font-sans-serif);

  /* Base palette colors (replace Bootstrap's blue/cyan) */
  --bs-blue: #2a3032;
  --bs-cyan: #3d5a80;

  /* Forge Partners palette */
  --bs-primary: #2a3032;
  --bs-primary-rgb: 42, 48, 50;
  --bs-primary-text-emphasis: #1a1e1f;
  --bs-primary-bg-subtle: #d8dadb;
  --bs-primary-border-subtle: #9fa3a5;

  --bs-secondary: #c9a227;
  --bs-secondary-rgb: 201, 162, 39;
  --bs-secondary-text-emphasis: #50410f;
  --bs-secondary-bg-subtle: #f5efdf;
  --bs-secondary-border-subtle: #ebdfbf;

  --bs-link-color: #2a3032;
  --bs-link-color-rgb: 42, 48, 50;
  --bs-link-hover-color: #1a1e1f;
  --bs-link-hover-color-rgb: 26, 30, 31;

  --bs-body-bg: #faf8f5;
  --bs-body-bg-rgb: 250, 248, 245;

  --bs-tertiary-bg: #f5f3ef;
  --bs-tertiary-bg-rgb: 245, 243, 239;

  --bs-secondary-bg: #ebe8e3;
  --bs-secondary-bg-rgb: 235, 232, 227;

  --bs-focus-ring-color: rgba(42, 48, 50, 0.25);

  /* Form validation (replace Bootstrap green for valid state) */
  --bs-form-valid-color: #485856;
  --bs-form-valid-border-color: #485856;

  /* Success - muted sage green (replaces stock Bootstrap green) */
  --bs-success: #485856;
  --bs-success-rgb: 72, 88, 86;
  --bs-success-text-emphasis: #252c2b;
  --bs-success-bg-subtle: #dce2e1;
  --bs-success-border-subtle: #a8b3b1;

  /* Info - steel blue from navy family (replaces stock Bootstrap cyan blue) */
  --bs-info: #3d5a80;
  --bs-info-rgb: 61, 90, 128;
  --bs-info-text-emphasis: #182430;
  --bs-info-bg-subtle: #dce2ea;
  --bs-info-border-subtle: #b9c5d5;

  /* Warning - Forge gold (replaces stock Bootstrap yellow) */
  --bs-warning: #c9a227;
  --bs-warning-rgb: 201, 162, 39;
  --bs-warning-text-emphasis: #50410f;
  --bs-warning-bg-subtle: #f5efdf;
  --bs-warning-border-subtle: #ebdfbf;

  /* Navbar logo section - dark green (#485856) */
  --bs-navbar-logo-bg: #485856;

  /* Chart accent - dark teal */
  --chart-teal: 15, 78, 105;
}

/*
 * Override Bootstrap's hardcoded blue buttons (component variables)
 */
.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #1a1e1f;
  --bs-btn-hover-border-color: #1a1e1f;
  --bs-btn-focus-shadow-rgb: 42, 48, 50;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #1a1e1f;
  --bs-btn-active-border-color: #1a1e1f;
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
}

.btn-outline-primary {
  --bs-btn-color: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--bs-primary);
  --bs-btn-hover-border-color: var(--bs-primary);
  --bs-btn-focus-shadow-rgb: 42, 48, 50;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--bs-primary);
  --bs-btn-active-border-color: var(--bs-primary);
  --bs-btn-disabled-color: var(--bs-primary);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: var(--bs-primary);
}

/*
 * Override Bootstrap's hardcoded blue nav/pagination active page background to theme dark blue
 */
.nav-pills .nav-link.active {
  background-color: var(--bs-primary);
  color: #fff;
}

.pagination .page-item.active .page-link {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
  color: #fff;
}

/*
 * Override Bootstrap's hardcoded blue form focus (not exposed as CSS variables)
 */
.form-control,
.form-select {
  background-color: #fff;
}

.form-control:focus,
.form-select:focus {
  border-color: #7a8285;
  box-shadow: 0 0 0 0.25rem rgba(42, 48, 50, 0.25);
}

.form-check-input:focus {
  border-color: #7a8285;
  box-shadow: 0 0 0 0.25rem rgba(42, 48, 50, 0.25);
}

.form-control:focus::-webkit-datetime-edit-fields-wrapper {
  box-shadow: none;
}

/*
 * Override Bootstrap table-primary (hardcoded light blue)
 */
.table-primary {
  --bs-table-bg: #d4dce4;
  --bs-table-border-color: #a9b9c9;
  --bs-table-striped-bg: #c9d2dc;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #bec9d5;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #c4ced9;
  --bs-table-hover-color: #000;
}

.table-info {
  --bs-table-bg: #dce2ea;
  --bs-table-border-color: #b9c5d5;
  --bs-table-striped-bg: #d1d8e3;
  --bs-table-striped-color: #000;
  --bs-table-active-bg: #c6cdd9;
  --bs-table-active-color: #000;
  --bs-table-hover-bg: #ccd3df;
  --bs-table-hover-color: #000;
}

/*
 * Bootstrap Sign-In Example Styles
 * Based on: https://getbootstrap.com/docs/5.3/examples/sign-in/
 */

html,
body {
  min-height: 100%;
}

/* Centred auth layout (sign-in, password reset) */
.auth-logo {
  background-color: var(--bs-navbar-logo-bg);
  z-index: 1;
}

/* Sidebar - full viewport height, sticky so it stays visible when scrolling */
/* On lg+ screens the offcanvas behaves as a static element, so we apply
   sticky positioning and fixed height only at the lg breakpoint and above. */
@media (min-width: 992px) {
  .sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
    align-self: flex-start;
    overflow-y: auto;
    width: 280px;
  }
}

/* On mobile (<lg) the offcanvas panel needs a fixed width when it slides in */
@media (max-width: 991.98px) {
  .sidebar.offcanvas-start {
    width: 280px;
  }
}

/* Sidebar logo header */
.sidebar-logo-header {
  background-color: var(--bs-navbar-logo-bg);
  margin: -1rem -1rem 0 -1rem;
  padding: 1rem;
}

/* Sidebar dropdown menu - match sidebar content width (nav items) */
.sidebar .dropdown-menu {
  width: 100%;
  min-width: unset;
}

.auth-center {
  width: 100%;
}

.auth-center-inner {
  width: 100%;
  max-width: 330px;
}

.form-signin {
  width: 100%;
  max-width: 330px;
  padding: 1rem;
  flex-shrink: 0;
}

.form-signin .form-floating:focus-within {
  z-index: 2;
}

/* Stack adjacent inputs with collapsed borders */
.form-signin input[type="email"] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}

.form-signin input[type="password"]:first-of-type {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

/* When there's a second password field (confirmation), adjust borders */
.form-signin input[type="password"]:first-of-type:not(:last-of-type) {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}

.form-signin input[type="password"]:last-of-type {
  margin-bottom: 10px;
}

/*
 * Xero brand button (official Xero blue #00B9E9)
 */
.btn-xero {
  --bs-btn-color: #fff;
  --bs-btn-bg: #00b9e9;
  --bs-btn-border-color: #00b9e9;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #0099c4;
  --bs-btn-hover-border-color: #0099c4;
  --bs-btn-focus-shadow-rgb: 0, 185, 233;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #008ab3;
  --bs-btn-active-border-color: #008ab3;
}

/* Toast dismiss: quick fade-out when closed */
.toast-container .toast {
  transition: transform 0.1s ease-in-out, opacity 0.1s ease-in-out;
}

/* API log show page: wrap long lines in pre blocks */
.api-log-pre {
  white-space: pre-wrap;
  word-wrap: break-word;
  overflow-wrap: break-word;
  max-height: 400px;
  overflow: auto;
}

/* Version badge: inline at bottom of content */
.version-badge {
  font-size: 0.7rem;
  font-family: monospace;
  user-select: none;
}

/* Card with table: grow with content, no scroll container - let the page scroll.
   Avoids clipping dropdowns and matches user preference for "always grew as needed". */
.main-content,
.main-content-inner,
.card:has(.table-responsive),
.card:has(.table-responsive) .card-body {
  overflow: visible;
}
/* Dropdown in table cells: prevent menu from being hidden behind rows. */
.table-responsive td:last-child {
  position: relative;
}
.table-responsive tr:has(.dropdown.show) {
  position: relative;
  z-index: 1050;
}
.table-responsive .dropdown-menu {
  z-index: 1060;
}

/* Report table: thick divider row (e.g. above Remaining = Budget - Spent) */
.report-table-divider {
  border-top: 3px solid #dee2e6;
}

/* Stat card links: subtle button-like lift on hover */
.card .stat-link > * {
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.card .stat-link:hover > * {
  box-shadow: 0 .25rem .5rem rgba(0, 0, 0, .1) !important;
  transform: translateY(-1px);
}
