/* ==========================================================================
   VolunHub Design System
   Based on: Cercetașii României Brand Guidelines (Anexa 2)
   Framework: Bootstrap 5.3.x with CSS custom property overrides
   Audience: Young people (scouts), information-dense UI
   ==========================================================================

   PAGE LAYOUT — HOUSE RULES (deviations need a reason)

   1. Full-width, left-aligned content.
      Page content fills the container from `templates/base.html`
      (`{% block container_class %}container{% endblock %}`). Do NOT wrap
      forms or content in narrow centered columns (e.g. `col-md-6 mx-auto`,
      `col-lg-8 offset-lg-2`). Forms span the container; lay fields out
      side-by-side with the Bootstrap grid (`row` + `col-md-6`) instead of
      stacking them in a narrow center column. If a page genuinely needs
      more width, override with `container-fluid` — never go narrower.

   2. Breadcrumbs before the title on every page.
      Use the `{% block breadcrumbs %}` slot in `base.html` (rendered
      before `{% block content %}`) with `<nav aria-label="breadcrumb">`
      → `<ol class="breadcrumb">`, then the page `<h1>` inside
      `{% block content %}`. Exceptions: top-level dashboards / landing
      pages where there is no meaningful parent.

   These rules also live in CLAUDE.md so AI agents enforce them.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. ONCR Color Palette (from brand identity document)
   -------------------------------------------------------------------------- */
:root {
  /* --- Primary brand colors --- */
  --oncr-bleumarin:      #141B4D;
  --oncr-white:          #FFFFFF;
  --oncr-verde:          #173F35;
  --oncr-oranj:          #E08334;
  --oncr-auriu:          #F6B452;

  /* --- Secondary brand colors --- */
  --oncr-sea-blue:       #0054A0;
  --oncr-lime:           #AABA0A;
  --oncr-portocaliu:     #DD7500;
  --oncr-rosu:           #E23D28;
  --oncr-grass-green:    #3D8E33;
  --oncr-sky-blue:       #3399FF;
  --oncr-galben:         #FCD116;
  --oncr-gri:            #999999;

  /* --- Age-branch colors (eșarfe) --- */
  --oncr-lupisori:       #FFE900;
  --oncr-temerari:       #173F35;
  --oncr-exploratori:    #1D366D;
  --oncr-seniori:        #674DA1;
  --oncr-lideri:         #3E1E20;

  /* --- National team colors --- */
  --oncr-strategie:      #0054A0;
  --oncr-programe:       #AABA0A;
  --oncr-resurse-umane:  #E23D28;
  --oncr-international:  #622599;
  --oncr-comunicare:     #3D8E33;
  --oncr-management:     #3399FF;
  --oncr-financiar:      #E23D28;

  /* --------------------------------------------------------------------------
     2. Bootstrap 5 Semantic Color Overrides
     -------------------------------------------------------------------------- */

  /* -- Primary: Bleumarin (navy) -- */
  --bs-primary:          #141B4D;
  --bs-primary-rgb:      20, 27, 77;

  /* -- Secondary: Warm gray, neutral companion -- */
  --bs-secondary:        #6B7280;
  --bs-secondary-rgb:    107, 114, 128;

  /* -- Success: Grass Green (vibrant, visible) -- */
  --bs-success:          #3D8E33;
  --bs-success-rgb:      61, 142, 51;

  /* -- Danger: Roșu -- */
  --bs-danger:           #E23D28;
  --bs-danger-rgb:       226, 61, 40;

  /* -- Warning: Auriu/Gold -- */
  --bs-warning:          #F6B452;
  --bs-warning-rgb:      246, 180, 80;

  /* -- Info: Sea Blue -- */
  --bs-info:             #0054A0;
  --bs-info-rgb:         0, 84, 160;

  /* -- Light & Dark -- */
  --bs-light:            #F3F4F6;
  --bs-light-rgb:        243, 244, 246;
  --bs-dark:             #141B4D;
  --bs-dark-rgb:         20, 27, 77;

  /* -- Body -- */
  --bs-body-color:       #1F2937;
  --bs-body-color-rgb:   31, 41, 55;
  --bs-body-bg:          #F8F9FA;
  --bs-body-bg-rgb:      248, 249, 250;

  /* -- Links -- */
  --bs-link-color:       #0054A0;
  --bs-link-color-rgb:   0, 84, 160;
  --bs-link-hover-color: #141B4D;

  /* -- Border -- */
  --bs-border-color:     #D1D5DB;

  /* --------------------------------------------------------------------------
     3. Typography
     --------------------------------------------------------------------------
     Body: Inter — compact, excellent readability at small sizes, modern UI font.
     Headings: Verdana Bold — per ONCR guidelines for emphasis.
     Monospace: system default.
     -------------------------------------------------------------------------- */

  --bs-body-font-family:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --bs-body-font-size:    0.875rem;   /* 14px — compact for info-dense screens */
  --bs-body-line-height:  1.5;

  --vh-heading-font:      "Verdana", "Geneva", "Tahoma", sans-serif;
  --vh-font-xs:           0.75rem;    /* 12px */
  --vh-font-sm:           0.8125rem;  /* 13px */
  --vh-font-base:         0.875rem;   /* 14px */
  --vh-font-md:           1rem;       /* 16px */
  --vh-font-lg:           1.125rem;   /* 18px */
  --vh-font-xl:           1.25rem;    /* 20px */

  /* --------------------------------------------------------------------------
     4. Spacing & Layout
     -------------------------------------------------------------------------- */
  --vh-spacer-1:          0.25rem;
  --vh-spacer-2:          0.5rem;
  --vh-spacer-3:          0.75rem;
  --vh-spacer-4:          1rem;
  --vh-spacer-5:          1.5rem;
  --vh-spacer-6:          2rem;

  --vh-border-radius:     0.375rem;
  --vh-border-radius-sm:  0.25rem;
  --vh-border-radius-lg:  0.5rem;

  /* Navbar height for offset calculations */
  --vh-navbar-height:     44px;

  /* --------------------------------------------------------------------------
     5. Accent & Utility Colors
     -------------------------------------------------------------------------- */
  --vh-accent:            #E08334;   /* Oranj — call-to-action accent */
  --vh-accent-hover:      #C96F24;
  --vh-accent-light:      #FEF3E7;

  --vh-surface:           #FFFFFF;
  --vh-surface-muted:     #F3F4F6;
  --vh-surface-hover:     #E5E7EB;

  --vh-text-primary:      #1F2937;
  --vh-text-secondary:    #6B7280;
  --vh-text-muted:        #9CA3AF;
  --vh-text-on-dark:      #FFFFFF;
  --vh-text-on-primary:   #FFFFFF;
}


/* ==========================================================================
   GLOBAL RESETS & BASE
   ========================================================================== */

body {
  font-family: var(--bs-body-font-family);
  font-size: var(--bs-body-font-size);
  line-height: var(--bs-body-line-height);
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}


/* ==========================================================================
   TYPOGRAPHY
   ========================================================================== */

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--vh-heading-font);
  font-weight: 700;
  color: var(--oncr-bleumarin);
  margin-bottom: 0.5em;
}

h1, .h1 { font-size: 1.75rem; }
h2, .h2 { font-size: 1.375rem; }
h3, .h3 { font-size: 1.125rem; }
h4, .h4 { font-size: 1rem; }
h5, .h5 { font-size: 0.875rem; }
h6, .h6 { font-size: 0.8125rem; }

.text-xs   { font-size: var(--vh-font-xs) !important; }
.text-sm   { font-size: var(--vh-font-sm) !important; }
.text-base { font-size: var(--vh-font-base) !important; }
.text-md   { font-size: var(--vh-font-md) !important; }
.text-lg   { font-size: var(--vh-font-lg) !important; }
.text-xl   { font-size: var(--vh-font-xl) !important; }

small, .small { font-size: var(--vh-font-xs); }

a {
  color: var(--bs-link-color);
  text-decoration: none;
  transition: color 0.15s ease;
}
a:hover {
  color: var(--bs-link-hover-color);
  text-decoration: none;
}

/* Lead text for descriptions */
.lead {
  font-size: var(--vh-font-md);
  color: var(--vh-text-secondary);
}


/* ==========================================================================
   NAVBAR
   ========================================================================== */

.navbar {
  background-color: var(--oncr-bleumarin) !important;
  padding: 0.15rem 0;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
  position: sticky;
  top: 0;
  z-index: 1030;
}

.navbar .navbar-brand {
  font-family: var(--vh-heading-font);
  color: var(--vh-text-on-dark) !important;
  font-size: 1.125rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
}

.navbar .navbar-brand:hover {
  text-decoration: none;
}

.navbar-brand-volun {
  font-weight: 400;
}

.navbar-brand-hub {
  font-weight: 700;
  color: var(--oncr-oranj);
}

/* ONCR monochrome white logo in navbar */
.navbar-logo {
  height: 36px;
  width: auto;
}

.navbar .nav-link {
  color: rgba(255, 255, 255, 0.85) !important;
  font-size: var(--vh-font-sm);
  font-weight: 500;
  padding: 0.5rem 0.75rem !important;
  transition: color 0.15s ease;
  text-decoration: none !important;
}

.navbar .nav-link:hover,
.navbar .nav-link:focus {
  color: var(--oncr-auriu) !important;
  text-decoration: none !important;
}

.navbar .nav-link.active {
  color: #FFFFFF !important;
  border-bottom: 2px solid var(--oncr-oranj);
}

.navbar .dropdown-menu {
  border: 1px solid var(--bs-border-color);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  border-radius: var(--vh-border-radius);
  font-size: var(--vh-font-sm);
}

/* Bootstrap's navbar-expand-lg sets .navbar-nav .dropdown-menu to position: static
   below the lg breakpoint, assuming dropdowns live inside a collapsed menu.
   Our notification/admin/user dropdowns sit outside any .navbar-collapse and must
   overlay as true dropdowns on mobile too. */
.navbar .navbar-nav .dropdown-menu {
  position: absolute;
}

/* Constrain the notification panel on narrow viewports so it doesn't overflow
   horizontally (the inline width:360px is preserved on wider screens). */
@media (max-width: 575.98px) {
  #notif-dropdown-menu {
    width: calc(100vw - 1rem) !important;
    max-width: 360px;
  }
}

.navbar .dropdown-item,
.navbar .dropdown-item:hover,
.navbar .dropdown-item:focus {
  text-decoration: none;
}

.navbar .dropdown-item:active {
  background-color: var(--oncr-bleumarin);
}


/* ==========================================================================
   BUTTONS
   ========================================================================== */

.btn {
  font-size: var(--vh-font-sm);
  font-weight: 500;
  padding: 0.375rem 0.875rem;
  border-radius: var(--vh-border-radius);
  transition: all 0.15s ease;
}

.btn-sm {
  font-size: var(--vh-font-xs);
  padding: 0.25rem 0.625rem;
}

.btn-lg {
  font-size: var(--vh-font-md);
  padding: 0.5rem 1.25rem;
}

/* Primary — Bleumarin */
.btn-primary {
  --bs-btn-bg: var(--oncr-bleumarin);
  --bs-btn-border-color: var(--oncr-bleumarin);
  --bs-btn-hover-bg: #0E1338;
  --bs-btn-hover-border-color: #0E1338;
  --bs-btn-active-bg: #090D2B;
  --bs-btn-active-border-color: #090D2B;
  --bs-btn-disabled-bg: var(--oncr-bleumarin);
  --bs-btn-disabled-border-color: var(--oncr-bleumarin);
}

.btn-outline-primary {
  --bs-btn-color: var(--oncr-bleumarin);
  --bs-btn-border-color: var(--oncr-bleumarin);
  --bs-btn-hover-bg: var(--oncr-bleumarin);
  --bs-btn-hover-border-color: var(--oncr-bleumarin);
  --bs-btn-active-bg: #0E1338;
  --bs-btn-active-border-color: #0E1338;
}

/* Accent — Oranj (CTAs, emphasis) */
.btn-accent {
  background-color: var(--vh-accent);
  border-color: var(--vh-accent);
  color: #FFFFFF;
  font-weight: 600;
}
.btn-accent:hover {
  background-color: var(--vh-accent-hover);
  border-color: var(--vh-accent-hover);
  color: #FFFFFF;
}

.btn-outline-accent {
  background-color: transparent;
  border-color: var(--vh-accent);
  color: var(--vh-accent);
}
.btn-outline-accent:hover {
  background-color: var(--vh-accent);
  color: #FFFFFF;
}

/* Success — Grass Green */
.btn-success {
  --bs-btn-bg: var(--oncr-grass-green);
  --bs-btn-border-color: var(--oncr-grass-green);
  --bs-btn-hover-bg: #347A2B;
  --bs-btn-hover-border-color: #347A2B;
  --bs-btn-active-bg: #2C6924;
  --bs-btn-active-border-color: #2C6924;
}

/* Danger — Roșu */
.btn-danger {
  --bs-btn-bg: var(--oncr-rosu);
  --bs-btn-border-color: var(--oncr-rosu);
  --bs-btn-hover-bg: #C93420;
  --bs-btn-hover-border-color: #C93420;
  --bs-btn-active-bg: #B02D1C;
  --bs-btn-active-border-color: #B02D1C;
}

/* Warning — Auriu */
.btn-warning {
  --bs-btn-bg: var(--oncr-auriu);
  --bs-btn-border-color: var(--oncr-auriu);
  --bs-btn-color: var(--oncr-bleumarin);
  --bs-btn-hover-bg: #E5A03E;
  --bs-btn-hover-border-color: #E5A03E;
  --bs-btn-hover-color: var(--oncr-bleumarin);
}

/* Info — Sea Blue */
.btn-info {
  --bs-btn-bg: var(--oncr-sea-blue);
  --bs-btn-border-color: var(--oncr-sea-blue);
  --bs-btn-color: #FFFFFF;
  --bs-btn-hover-bg: #004488;
  --bs-btn-hover-border-color: #004488;
  --bs-btn-hover-color: #FFFFFF;
  --bs-btn-active-color: #FFFFFF;
}


/* ==========================================================================
   CARDS
   ========================================================================== */

.card {
  border: 1px solid var(--bs-border-color);
  border-radius: var(--vh-border-radius);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  background-color: var(--vh-surface);
  transition: box-shadow 0.15s ease;
}

.card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.card-header {
  background-color: var(--vh-surface-muted);
  border-bottom: 1px solid var(--bs-border-color);
  font-weight: 600;
  font-size: var(--vh-font-sm);
  padding: 0.625rem 1rem;
}

.card-body {
  padding: 0.875rem 1rem;
}

.card-footer {
  background-color: var(--vh-surface-muted);
  border-top: 1px solid var(--bs-border-color);
  padding: 0.5rem 1rem;
}

/* Card with ONCR brand header */
.card-oncr .card-header {
  background-color: var(--oncr-bleumarin);
  color: var(--vh-text-on-dark);
  border-bottom: 2px solid var(--oncr-oranj);
}

.card-oncr .card-header a {
  color: var(--oncr-auriu);
}

/* App launcher cards */
a.card-oncr {
  color: var(--vh-text-primary);
  border-top: 3px solid transparent;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

a.card-oncr:hover {
  border-top-color: var(--oncr-oranj);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  color: var(--vh-text-primary);
}


/* ==========================================================================
   ALERTS
   ========================================================================== */

.alert {
  font-size: var(--vh-font-sm);
  padding: 0.625rem 1rem;
  border-radius: var(--vh-border-radius);
}

.alert-dismissible {
  padding-right: 2.5rem;
}

.alert-dismissible .btn-close {
  padding: 0.75rem;
}

.alert-success {
  --bs-alert-bg: #ECFDF5;
  --bs-alert-border-color: #A7F3D0;
  --bs-alert-color: #065F46;
}

.alert-danger {
  --bs-alert-bg: #FEF2F2;
  --bs-alert-border-color: #FECACA;
  --bs-alert-color: #991B1B;
}

.alert-warning {
  --bs-alert-bg: #FFFBEB;
  --bs-alert-border-color: #FDE68A;
  --bs-alert-color: #92400E;
}

.alert-info {
  --bs-alert-bg: #EFF6FF;
  --bs-alert-border-color: #BFDBFE;
  --bs-alert-color: #1E40AF;
}


/* ==========================================================================
   BADGES & PILLS
   --------------------------------------------------------------------------
   Text color is set automatically by the vhFixContrast() JS utility based
   on WCAG relative luminance of the computed background-color.
   To opt out on a specific element, add data-vh-contrast-skip="1".
   ========================================================================== */

.badge {
  font-size: var(--vh-font-xs);
  font-weight: 600;
  padding: 0.25em 0.5em;
  border-radius: var(--vh-border-radius-sm);
}

/* Age-branch badges — text color auto-computed from luminance */
.badge-lupisori   { background-color: var(--oncr-lupisori); }
.badge-temerari   { background-color: var(--oncr-temerari); }
.badge-exploratori{ background-color: var(--oncr-exploratori); }
.badge-seniori    { background-color: var(--oncr-seniori); }
.badge-lideri     { background-color: var(--oncr-lideri); }

/* National team badges — text color auto-computed from luminance */
.badge-strategie     { background-color: var(--oncr-strategie); }
.badge-programe      { background-color: var(--oncr-programe); }
.badge-resurse-umane { background-color: var(--oncr-resurse-umane); }
.badge-international { background-color: var(--oncr-international); }
.badge-comunicare    { background-color: var(--oncr-comunicare); }
.badge-management    { background-color: var(--oncr-management); }
.badge-financiar     { background-color: var(--oncr-financiar); }


/* ==========================================================================
   TABLES
   ========================================================================== */

.table {
  font-size: var(--vh-font-sm);
  --bs-table-bg: var(--vh-surface);
}

.table > thead {
  background-color: var(--oncr-bleumarin);
  color: var(--vh-text-on-dark);
  font-size: var(--vh-font-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.table > thead th {
  font-weight: 600;
  padding: 0.5rem 0.75rem;
  border-bottom: 2px solid var(--oncr-oranj);
}

.table > tbody > tr > td {
  padding: 0.5rem 0.75rem;
  vertical-align: middle;
}

.table-hover > tbody > tr:hover {
  --bs-table-hover-bg: var(--vh-surface-muted);
}

/* Compact table for info-dense views */
.table-compact > tbody > tr > td,
.table-compact > thead > tr > th {
  padding: 0.35rem 0.5rem;
}


/* ==========================================================================
   FORMS
   ========================================================================== */

.form-control,
.form-select {
  font-size: var(--vh-font-sm);
  padding: 0.375rem 0.75rem;
  border-color: var(--bs-border-color);
  border-radius: var(--vh-border-radius);
}

.form-control:focus,
.form-select:focus {
  border-color: var(--oncr-sea-blue);
  box-shadow: 0 0 0 0.2rem rgba(0, 84, 160, 0.2);
}

.form-label {
  font-size: var(--vh-font-xs);
  font-weight: 600;
  color: var(--vh-text-primary);
  margin-bottom: 0.25rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.form-text {
  font-size: var(--vh-font-xs);
  color: var(--vh-text-muted);
}

.form-check-label {
  font-size: var(--vh-font-sm);
}

/* Compact form layout */
.form-group-compact .form-label { margin-bottom: 0.125rem; }
.form-group-compact .form-control,
.form-group-compact .form-select { padding: 0.25rem 0.5rem; }


/* ==========================================================================
   BREADCRUMBS
   ========================================================================== */

.breadcrumb {
  font-size: var(--vh-font-xs);
  padding: 0.375rem 0;
  margin-bottom: 0.75rem;
  background: none;
}

.breadcrumb-item a {
  color: var(--bs-link-color);
}

.breadcrumb-item.active {
  color: var(--vh-text-muted);
}


/* ==========================================================================
   PAGINATION
   ========================================================================== */

.page-link {
  font-size: var(--vh-font-sm);
  color: var(--oncr-bleumarin);
  padding: 0.3rem 0.65rem;
}

.page-item.active .page-link {
  background-color: var(--oncr-bleumarin);
  border-color: var(--oncr-bleumarin);
}

.page-link:hover {
  color: var(--oncr-bleumarin);
  background-color: var(--vh-surface-muted);
}


/* ==========================================================================
   MODALS
   ========================================================================== */

.modal-header {
  background-color: var(--oncr-bleumarin);
  color: var(--vh-text-on-dark);
  padding: 0.75rem 1rem;
  border-bottom: 2px solid var(--oncr-oranj);
}

.modal-header .btn-close {
  filter: invert(1);
}

.modal-title {
  font-family: var(--vh-heading-font);
  font-size: var(--vh-font-md);
}

.modal-body {
  padding: 1rem;
  font-size: var(--vh-font-sm);
}

.modal-footer {
  padding: 0.5rem 1rem;
}


/* ==========================================================================
   LIST GROUPS
   ========================================================================== */

.list-group-item {
  font-size: var(--vh-font-sm);
  padding: 0.5rem 0.875rem;
  border-color: var(--bs-border-color);
}

.list-group-item.active {
  background-color: var(--oncr-bleumarin);
  border-color: var(--oncr-bleumarin);
}


/* ==========================================================================
   NAV TABS & PILLS
   ========================================================================== */

.nav-tabs .nav-link {
  font-size: var(--vh-font-sm);
  font-weight: 500;
  color: var(--vh-text-secondary);
  padding: 0.5rem 1rem;
}

.nav-tabs .nav-link.active {
  color: var(--oncr-bleumarin);
  font-weight: 600;
  border-bottom: 2px solid var(--oncr-oranj);
}

.nav-pills .nav-link.active {
  background-color: var(--oncr-bleumarin);
}


/* ==========================================================================
   PROGRESS BARS
   ========================================================================== */

.progress {
  height: 1.25rem;
  border-radius: var(--vh-border-radius-sm);
  background-color: var(--vh-surface-muted);
  font-size: var(--vh-font-xs);
}

.progress-bar {
  background-color: var(--oncr-sea-blue);
  line-height: 1.25rem;
}

/* Thin variant without text */
.progress-sm {
  height: 0.5rem;
  font-size: 0;
}


/* ==========================================================================
   TOOLTIPS & POPOVERS
   ========================================================================== */

.tooltip {
  font-size: var(--vh-font-xs);
}


/* ==========================================================================
   PAGE LAYOUT: Standardized page header
   --------------------------------------------------------------------------
   Usage:
     <div class="page-header">
       {% include "includes/breadcrumbs.html" with current_label="..." %}
       <h1>Page Title</h1>
       <p class="page-header-description">Optional description</p>
     </div>
   ========================================================================== */

.page-header {
  margin-bottom: var(--vh-spacer-4);
}

.page-header h1 {
  font-size: 1.375rem;
  margin-bottom: 0.25rem;
}

.page-header .page-header-description {
  color: var(--vh-text-secondary);
  font-size: var(--vh-font-sm);
  margin-bottom: 0;
}

/* Page header with action buttons on the right */
.page-header-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: var(--vh-spacer-4);
}

.page-header-row .page-header {
  margin-bottom: 0;
}


/* ==========================================================================
   UTILITY: ONCR-specific
   ========================================================================== */

/* Backgrounds */
.bg-oncr-bleumarin  { background-color: var(--oncr-bleumarin) !important; color: var(--vh-text-on-dark); }
.bg-oncr-verde      { background-color: var(--oncr-verde) !important; color: var(--vh-text-on-dark); }
.bg-oncr-oranj      { background-color: var(--oncr-oranj) !important; color: var(--vh-text-on-dark); }
.bg-oncr-auriu      { background-color: var(--oncr-auriu) !important; color: var(--oncr-bleumarin); }
.bg-oncr-sea-blue   { background-color: var(--oncr-sea-blue) !important; color: var(--vh-text-on-dark); }
.bg-oncr-grass-green{ background-color: var(--oncr-grass-green) !important; color: var(--vh-text-on-dark); }
.bg-oncr-rosu       { background-color: var(--oncr-rosu) !important; color: var(--vh-text-on-dark); }
.bg-oncr-sky-blue   { background-color: var(--oncr-sky-blue) !important; color: var(--vh-text-on-dark); }

/* Text colors */
.text-oncr-bleumarin  { color: var(--oncr-bleumarin) !important; }
.text-oncr-verde      { color: var(--oncr-verde) !important; }
.text-oncr-oranj      { color: var(--oncr-oranj) !important; }
.text-oncr-auriu      { color: var(--oncr-auriu) !important; }
.text-oncr-sea-blue   { color: var(--oncr-sea-blue) !important; }
.text-oncr-grass-green{ color: var(--oncr-grass-green) !important; }
.text-oncr-rosu       { color: var(--oncr-rosu) !important; }

/* Border accent */
.border-oncr-oranj    { border-color: var(--oncr-oranj) !important; }
.border-oncr-bleumarin{ border-color: var(--oncr-bleumarin) !important; }

/* Orange top-accent for cards/sections (from presentation chevron motif) */
.accent-top {
  border-top: 3px solid var(--oncr-oranj) !important;
}

.accent-left {
  border-left: 3px solid var(--oncr-oranj) !important;
}


/* ==========================================================================
   UTILITY: Layout helpers
   ========================================================================== */

/* Tighter container for info-dense pages */
.container-tight {
  max-width: 960px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1rem;
  padding-right: 1rem;
}

/* Section spacing */
.section {
  margin-bottom: var(--vh-spacer-5);
}

/* Divider */
.divider {
  border-top: 1px solid var(--bs-border-color);
  margin: var(--vh-spacer-4) 0;
}

/* Compact spacing helper */
.gap-compact { gap: 0.5rem !important; }

/* Stat / KPI display */
.stat-value {
  font-family: var(--vh-heading-font);
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--oncr-bleumarin);
  line-height: 1.1;
}

.stat-label {
  font-size: var(--vh-font-xs);
  color: var(--vh-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}


/* ==========================================================================
   UTILITY: Status indicators
   ========================================================================== */

.status-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 0.375rem;
}

.status-dot-success { background-color: var(--oncr-grass-green); }
.status-dot-danger  { background-color: var(--oncr-rosu); }
.status-dot-warning { background-color: var(--oncr-auriu); }
.status-dot-info    { background-color: var(--oncr-sea-blue); }
.status-dot-muted   { background-color: var(--oncr-gri); }


/* ==========================================================================
   SCROLLBAR (subtle, modern)
   ========================================================================== */

::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background: var(--bs-border-color);
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--oncr-gri);
}


/* ==========================================================================
   SELECT2 overrides (must come after main styles)
   ========================================================================== */

.select2-container--default .select2-selection--single {
  height: 34px !important;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--vh-border-radius);
  font-size: var(--vh-font-sm);
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
  height: 100% !important;
  padding-left: 0.75rem !important;
  padding-right: 2rem !important;
  display: flex !important;
  align-items: center !important;
  line-height: 1.5 !important;
  font-size: var(--vh-font-sm) !important;
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
  height: 100% !important;
  right: 0.5rem !important;
}

.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {
  background-color: var(--oncr-bleumarin);
}


/* ==========================================================================
   RESPONSIVE: Small screens
   ========================================================================== */

@media (max-width: 767.98px) {
  h1, .h1 { font-size: 1.5rem; }
  h2, .h2 { font-size: 1.25rem; }
  h3, .h3 { font-size: 1.0625rem; }

  .card-body {
    padding: 0.75rem;
  }

  .table > thead th,
  .table > tbody > tr > td {
    padding: 0.375rem 0.5rem;
  }

  .stat-value {
    font-size: 1.375rem;
  }
}


/* ==========================================================================
   PRINT STYLES
   ========================================================================== */

@media print {
  .navbar, .breadcrumb, .btn, .pagination {
    display: none !important;
  }

  body {
    font-size: 10pt;
    color: #000;
    background: #FFF;
  }

  .card {
    border: 1px solid #ccc;
    box-shadow: none;
  }
}


/* ==========================================================================
   ICONS (existing rule, preserved)
   ========================================================================== */

img.icon {
  width: 20px;
}

/* ==========================================================================
   USER PILL — single source of truth for rendering a person.
   The name is shown inline; the popover (hover on desktop, tap on mobile)
   reveals email, current local center, status and profile photo.
   ========================================================================== */

.vh-user-pill {
  cursor: pointer;
  border-bottom: 1px dotted rgba(0, 0, 0, 0.25);
  outline: none;
}

.vh-user-pill:hover,
.vh-user-pill:focus {
  color: var(--oncr-sea-blue, #0054A0);
}

.vh-user-popover {
  max-width: 260px;
}

.vh-user-popover .popover-body > div {
  margin-bottom: 0.15rem;
  word-break: break-word;
}

.vh-user-popover .popover-body > div:last-child {
  margin-bottom: 0;
}
