/* ============================================================================
   Manavi — "Boutique Modern" theme  (inspired by the Stitch design system)
   Loaded AFTER Bootstrap + style.css so it wins. Remaps Bootstrap tokens to
   Deep Emerald + Rich Maroon on warm Stone/Cream, with Libre Caslon serif
   headings, Inter body, and JetBrains Mono for product IDs / cipher codes.
   ============================================================================ */
@import url('https://fonts.googleapis.com/css2?family=Libre+Caslon+Text:wght@400;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

:root {
  --mv-emerald:#003527;  --mv-emerald-600:#064e3b;  --mv-emerald-300:#95d3ba;
  --mv-maroon:#7C2D12;   --mv-maroon-500:#9b4427;
  --mv-surface:#fff8f6;  --mv-stone:#F5F5F4;        --mv-card:#ffffff;
  --mv-card-tint:#fbf2f0; --mv-cream:#FFFBEB;
  --mv-ink:#1e1b1a;      --mv-ink-variant:#404944;
  --mv-outline:#8a827d;  --mv-outline-variant:#e8ded9;
  --mv-taka:#0F172A;     --mv-rupee:#44403C;
  --st-transit:#0369A1;  --st-available:#15803D;    --st-sold:#78716C;  --st-adjusted:#EA580C;

  /* Bootstrap variable overrides */
  --bs-primary:#003527;  --bs-primary-rgb:0,53,39;
  --bs-success:#15803D;  --bs-success-rgb:21,128,61;
  --bs-danger:#ba1a1a;   --bs-danger-rgb:186,26,26;
  --bs-warning:#B7791F;  --bs-info:#0369A1;
  --bs-body-bg:#fff8f6;  --bs-body-color:#1e1b1a;
  --bs-body-font-family:'Inter', system-ui, -apple-system, sans-serif;
  --bs-border-color:#e8ded9;
  --bs-link-color:#064e3b; --bs-link-hover-color:#003527;
  --bs-emphasis-color:#1e1b1a;
}

/* ---------- Base ---------- */
body { background-color:var(--mv-surface); color:var(--mv-ink); font-family:var(--bs-body-font-family); }
main.bg-light, .bg-light { background-color:var(--mv-surface) !important; }
a { color:var(--mv-emerald-600); }

/* ---------- Typography ---------- */
h1,h2,h3,h4,.page-header h2,.card .display-6,.mv-serif { font-family:'Libre Caslon Text', Georgia, serif; letter-spacing:-.01em; }
.page-header h2 { color:var(--mv-ink); font-weight:700; }
.navbar-brand, .mv-wordmark { font-family:'Libre Caslon Text', Georgia, serif; }
code, .font-monospace, .data-id, .data-cipher { font-family:'JetBrains Mono', ui-monospace, monospace; }
.data-id { font-weight:700; letter-spacing:.02em; color:var(--mv-ink); }
.data-cipher { letter-spacing:.1em; color:var(--mv-maroon); font-weight:600; }
code { color:var(--mv-ink); background:transparent; }
.text-primary { color:var(--mv-emerald) !important; }
.text-muted { color:var(--mv-outline) !important; }

/* ---------- Buttons ---------- */
.btn { border-radius:.6rem; font-weight:600; }
.btn-lg { border-radius:.7rem; }
.btn-primary { --bs-btn-bg:var(--mv-emerald); --bs-btn-border-color:var(--mv-emerald);
  --bs-btn-hover-bg:var(--mv-emerald-600); --bs-btn-hover-border-color:var(--mv-emerald-600);
  --bs-btn-active-bg:#00291e; --bs-btn-active-border-color:#00291e;
  --bs-btn-disabled-bg:var(--mv-emerald); --bs-btn-disabled-border-color:var(--mv-emerald); }
.btn-outline-primary { --bs-btn-color:var(--mv-emerald); --bs-btn-border-color:var(--mv-emerald);
  --bs-btn-hover-bg:var(--mv-emerald); --bs-btn-hover-border-color:var(--mv-emerald);
  --bs-btn-active-bg:var(--mv-emerald-600); }
.btn-success { --bs-btn-bg:var(--st-available); --bs-btn-border-color:var(--st-available);
  --bs-btn-hover-bg:#136a33; --bs-btn-hover-border-color:#136a33; }
.btn-outline-secondary { --bs-btn-color:var(--mv-ink-variant); --bs-btn-border-color:var(--mv-outline-variant);
  --bs-btn-hover-bg:var(--mv-card-tint); --bs-btn-hover-border-color:var(--mv-outline); --bs-btn-hover-color:var(--mv-ink); }

/* ---------- Cards ---------- */
.card { border:1px solid var(--mv-outline-variant); border-radius:1rem; background:var(--mv-card);
  box-shadow:0 4px 20px rgba(0,53,39,.05); }
.card-header { background:var(--mv-card) !important; border-bottom:1px solid var(--mv-outline-variant);
  font-family:'Inter', sans-serif; font-weight:600; color:var(--mv-ink); border-radius:1rem 1rem 0 0 !important; }
.card-header.bg-white, .card-header.bg-body { background:var(--mv-card) !important; }
.card-footer { background:var(--mv-card); border-top:1px solid var(--mv-outline-variant); }

/* ---------- Tables ---------- */
.table { --bs-table-color:var(--mv-ink); --bs-table-bg:transparent; }
.table thead th { text-transform:uppercase; letter-spacing:.045em; font-size:.72rem; font-weight:600;
  color:var(--mv-outline); border-bottom:1px solid var(--mv-outline-variant); }
.table-light, .table > :not(caption) > * > *.table-light { --bs-table-bg:#f7efec; }
thead.table-light th { background:#f7efec; }
.table-hover > tbody > tr:hover > * { background-color:var(--mv-card-tint); }
.table > :not(caption) > * > * { border-bottom-color:var(--mv-outline-variant); }

/* ---------- Badges → soft pills ---------- */
.badge { border-radius:999px; font-weight:600; padding:.42em .72em; font-size:.72rem; letter-spacing:.01em; }
.badge.bg-success, .badge.text-bg-success { background-color:#e7f3ec !important; color:var(--st-available) !important; }
.badge.bg-danger,  .badge.text-bg-danger  { background-color:#fbe9e7 !important; color:#b42318 !important; }
.badge.bg-warning, .badge.text-bg-warning { background-color:#fbeed7 !important; color:#8a5a09 !important; }
.badge.bg-info,    .badge.text-bg-info    { background-color:#e4eef6 !important; color:var(--st-transit) !important; }
.badge.bg-secondary, .badge.text-bg-secondary { background-color:#efe7e3 !important; color:#5c554f !important; }
.badge.bg-dark,    .badge.text-bg-dark    { background-color:#e8e2df !important; color:#3a3531 !important; }
.badge.bg-primary { background-color:var(--mv-emerald) !important; color:#fff !important; }
.badge.bg-light, .badge.text-bg-light, .bg-secondary-subtle { background-color:rgba(0,53,39,.07) !important; color:var(--mv-emerald) !important; }
.text-secondary-emphasis { color:var(--mv-maroon) !important; }

/* ---------- Forms ---------- */
.form-control, .form-select { border-radius:.6rem; border-color:var(--mv-outline-variant); color:var(--mv-ink); }
.form-control:focus, .form-select:focus { border-color:var(--mv-emerald); box-shadow:0 0 0 .18rem rgba(0,53,39,.12); }
.form-label { font-weight:600; color:var(--mv-ink-variant); }
.input-group-text { background:var(--mv-card-tint); border-color:var(--mv-outline-variant); color:var(--mv-ink-variant); }
.form-control.bg-body-secondary, .bg-body-secondary { background-color:var(--mv-card-tint) !important; }
.form-check-input:checked { background-color:var(--mv-emerald); border-color:var(--mv-emerald); }
.form-check-input:focus { border-color:var(--mv-emerald-300); box-shadow:0 0 0 .18rem rgba(0,53,39,.12); }
.form-switch .form-check-input:checked { background-color:var(--mv-emerald); }

/* ---------- Pagination ---------- */
.page-link { color:var(--mv-emerald); border-radius:.5rem; border-color:var(--mv-outline-variant); }
.page-item.active .page-link { background-color:var(--mv-emerald); border-color:var(--mv-emerald); }
.page-link:hover { background-color:var(--mv-card-tint); color:var(--mv-emerald-600); }

/* ---------- Progress ---------- */
.progress { background-color:#eaddd7; border-radius:999px; }
.progress-bar { background-color:var(--mv-emerald); }
.progress-bar.bg-info { background-color:var(--st-transit); }
.progress-bar.bg-success { background-color:var(--st-available); }

/* ---------- Alerts (soft) ---------- */
.alert { border-radius:.85rem; border:1px solid transparent; }
.alert-success { background:#e7f3ec; color:#0f5c2e; border-color:#c9e6d5; }
.alert-danger  { background:#fbe9e7; color:#8a2018; border-color:#f3d2cd; }
.alert-info    { background:#e4eef6; color:#0b4a72; border-color:#cfe1ee; }
.alert-warning { background:#fbeed7; color:#7a4f08; border-color:#f0dcb8; }
.alert-secondary, .alert-light { background:var(--mv-card-tint); color:var(--mv-ink-variant); border-color:var(--mv-outline-variant); }

/* ---------- Sidebar (responsive offcanvas) ---------- */
#sidebar { background:var(--mv-surface) !important; border-right:1px solid var(--mv-outline-variant) !important; }
#sidebar.offcanvas-lg { --bs-offcanvas-width:250px; --bs-offcanvas-bg:var(--mv-surface); }
#sidebar .offcanvas-body { overflow:hidden; }
/* The nav list is the scrolling area. min-height:0 is required: a flex child
   defaults to min-height:auto and so refuses to shrink below its content
   height, which makes it overflow the panel instead of scrolling inside it.
   The wordmark and footer must keep their size so the list absorbs the rest. */
/* Bootstrap's .nav sets flex-wrap:wrap. Combined with .flex-column and a
   constrained height that wraps the menu into a second column instead of
   overflowing downward, so nowrap is what makes it scroll vertically. */
#sidebar .sidebar-nav { min-height:0; flex-wrap:nowrap; }
#sidebar .offcanvas-body > :not(.sidebar-nav) { flex-shrink:0; }
/* .nav.flex-column is itself a flex container, so its items shrink to fit by
   default — they compress instead of overflowing, and the list never scrolls.
   Hold each item at its natural height so the overflow becomes a scroll. */
#sidebar .sidebar-nav > * { flex-shrink:0; }
/* below lg: slide-in panel */
@media (max-width:991.98px) {
  #sidebar.offcanvas-lg { background:var(--mv-surface) !important; }
  #sidebar .offcanvas-body { overflow-y:auto; }
}
/* lg and up: static sticky column, fixed width */
@media (min-width:992px) {
  #sidebar.offcanvas-lg {
    position:sticky !important; top:56px; transform:none !important; visibility:visible !important;
    width:224px; min-width:224px; max-width:224px; height:calc(100vh - 56px);
    background:var(--mv-surface) !important; z-index:auto;
    /* Bootstrap drops display:flex above the offcanvas breakpoint. Without it
       the body has no flex parent to size against, grows to its content height
       and spills past the sticky panel — putting the last nav items out of
       reach on short screens. */
    display:flex; flex-direction:column; overflow:hidden;
  }
  #sidebar.offcanvas-lg .offcanvas-body { flex:1 1 auto; min-height:0; height:auto; }
}
#sidebar .mv-wordmark { font-size:1.55rem; font-weight:700; color:var(--mv-emerald); line-height:1; }
#sidebar .mv-wordmark-sub { font-size:.7rem; color:var(--mv-outline); letter-spacing:.04em; text-transform:uppercase; }
#sidebar .nav-section { list-style:none; font-size:.66rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  color:var(--mv-outline); padding:.85rem .75rem .2rem; }
#sidebar .sidebar-link { display:flex; align-items:center; gap:.7rem; color:var(--mv-ink-variant);
  border-radius:.6rem; font-weight:500; font-size:.9rem; padding:.5rem .7rem; }
#sidebar .sidebar-link i { font-size:1.02rem; width:1.2rem; text-align:center; flex-shrink:0; color:var(--mv-outline); }
#sidebar .sidebar-link:hover { background:#f3ebe8; color:var(--mv-emerald); }
#sidebar .sidebar-link:hover i { color:var(--mv-emerald); }
#sidebar .sidebar-link.active { background:rgba(0,53,39,.09); color:var(--mv-emerald) !important; font-weight:600; position:relative; }
#sidebar .sidebar-link.active i { color:var(--mv-emerald); }
#sidebar .sidebar-link.active::before { content:''; position:absolute; right:5px; top:8px; bottom:8px; width:3px; border-radius:3px; background:var(--mv-emerald); }
#sidebar .custom-scroll::-webkit-scrollbar { width:5px; }
#sidebar .custom-scroll::-webkit-scrollbar-thumb { background:var(--mv-outline-variant); border-radius:10px; }
#sidebar .custom-scroll::-webkit-scrollbar-track { background:transparent; }
#sidebar hr { border-color:var(--mv-outline-variant); }

/* ---------- Top bar → light ---------- */
.navbar.bg-primary { background:var(--mv-surface) !important; border-bottom:1px solid var(--mv-outline-variant); }
.navbar.bg-primary .navbar-brand { color:var(--mv-emerald) !important; }
.navbar.bg-primary .nav-link, .navbar.bg-primary .nav-link.text-white-50 { color:var(--mv-ink-variant) !important; }
.navbar.bg-primary .nav-link:hover { color:var(--mv-emerald) !important; }
.navbar .badge.bg-light { background:rgba(0,53,39,.08) !important; color:var(--mv-emerald) !important; }

/* ---------- KPI / finance cards ---------- */
.finance-card { border:1px solid var(--mv-outline-variant); border-radius:1rem; background:var(--mv-card);
  box-shadow:0 4px 20px rgba(0,53,39,.05); border-left-width:4px; }
.finance-card.revenue { border-left-color:var(--mv-emerald); }
.finance-card.profit  { border-left-color:var(--st-available); }
.finance-card.sales   { border-left-color:var(--mv-maroon-500); }
.finance-card.stock   { border-left-color:var(--st-transit); }
.finance-card .fc-value { font-family:'Libre Caslon Text', serif; color:var(--mv-ink); }
.finance-card .fc-label { color:var(--mv-outline); text-transform:uppercase; letter-spacing:.04em; font-size:.72rem; }

/* dashboard round icon chips */
.rounded-circle.bg-primary.bg-opacity-10 { background:rgba(0,53,39,.09) !important; }
.rounded-circle.bg-success.bg-opacity-10 { background:rgba(21,128,61,.12) !important; }
.rounded-circle.bg-warning.bg-opacity-10 { background:rgba(183,121,31,.14) !important; }
.rounded-circle.bg-info.bg-opacity-10 { background:rgba(3,105,161,.12) !important; }

/* ---------- Quick-action cards ---------- */
.action-card { transition:transform .12s ease, box-shadow .12s ease; }
.action-card:hover { transform:translateY(-3px); box-shadow:0 12px 26px rgba(0,53,39,.13); }
.action-card .bi { color:var(--mv-emerald); }
.action-card .fw-semibold { color:var(--mv-ink); }
.action-card.action-primary { background:var(--mv-emerald); border-color:var(--mv-emerald); }
.action-card.action-primary .bi, .action-card.action-primary .fw-semibold { color:#fff; }

/* ---------- Utilities ---------- */
.taka { color:var(--mv-taka); font-weight:700; }
.rupee { color:var(--mv-rupee); }
.st-transit{color:var(--st-transit)!important;} .st-available{color:var(--st-available)!important;}
.st-sold{color:var(--st-sold)!important;} .st-adjusted{color:var(--st-adjusted)!important;}
.cipher-blur { filter:blur(4px); user-select:none; }
