/* MicroLedger Cloud - "ledger paper" theme on Bootstrap 5.3
   Ink-blue navigation, binding-green actions, ruled report tables. */

:root {
  --ml-ink: #1c3048;          /* navigation, headings */
  --ml-ink-2: #243c58;
  --ml-green: #1f6b57;        /* primary actions - ledger binding */
  --ml-green-dark: #17523f;
  --ml-paper: #f3f5f4;        /* page */
  --ml-sheet: #ffffff;        /* panels */
  --ml-rule: #d5ddd9;         /* ruled lines */
  --ml-rule-strong: #8a9a93;
  --ml-red: #a8352e;          /* negatives, debit warnings */
  --ml-brass: #9c7a2b;        /* company badge */
  --ml-muted: #5d6b66;
  --ml-heading-bg: #eef3f1;
  --ml-font: "Public Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --ml-font-doc: "Source Serif 4", Georgia, "Times New Roman", serif;

  --bs-body-font-family: var(--ml-font);
  --bs-body-bg: var(--ml-paper);
  --bs-body-color: #22302b;
  --bs-primary: var(--ml-green);
  --bs-primary-rgb: 31, 107, 87;
  --bs-link-color: var(--ml-green);
  --bs-link-color-rgb: 31, 107, 87;
  --bs-link-hover-color: var(--ml-green-dark);
  --bs-border-color: var(--ml-rule);
  --bs-border-radius: .375rem;
  --bs-focus-ring-color: rgba(31, 107, 87, .3);
}

[data-bs-theme="dark"] {
  --ml-paper: #121a18;
  --ml-sheet: #19231f;
  --ml-rule: #2e3c37;
  --ml-rule-strong: #6f817a;
  --ml-heading-bg: #1f2b27;
  --ml-muted: #9aaba4;
  --ml-red: #e07a71;
  --ml-green: #4fb393;
  --ml-green-dark: #6cc7a8;
  --bs-body-bg: var(--ml-paper);
  --bs-body-color: #dbe4e0;
  --bs-primary: var(--ml-green);
  --bs-primary-rgb: 79, 179, 147;
  --bs-link-color: var(--ml-green);
  --bs-link-color-rgb: 79, 179, 147;
  --bs-border-color: var(--ml-rule);
  color-scheme: dark;
}

body { font-size: .9375rem; letter-spacing: -.003em; }
h1, h2, h3, h4, h5 { font-weight: 650; color: var(--ml-ink); letter-spacing: -.012em; }
[data-bs-theme="dark"] h1, [data-bs-theme="dark"] h2, [data-bs-theme="dark"] h3,
[data-bs-theme="dark"] h4, [data-bs-theme="dark"] h5 { color: #eef3f1; }
.text-muted, .form-text { color: var(--ml-muted) !important; }
.num, .money, td.n, th.n { font-variant-numeric: tabular-nums lining-nums; text-align: right; white-space: nowrap; }
.neg { color: var(--ml-red); }
:focus-visible { outline: 2px solid var(--ml-green); outline-offset: 2px; }

/* ---------- buttons */
.btn-primary {
  --bs-btn-bg: var(--ml-green); --bs-btn-border-color: var(--ml-green);
  --bs-btn-hover-bg: var(--ml-green-dark); --bs-btn-hover-border-color: var(--ml-green-dark);
  --bs-btn-active-bg: var(--ml-green-dark); --bs-btn-active-border-color: var(--ml-green-dark);
  --bs-btn-disabled-bg: var(--ml-green); --bs-btn-disabled-border-color: var(--ml-green);
  font-weight: 600;
}
[data-bs-theme="dark"] .btn-primary { --bs-btn-color: #0f1a16; --bs-btn-hover-color: #0f1a16; --bs-btn-active-color: #0f1a16; }
.btn-outline-primary {
  --bs-btn-color: var(--ml-green); --bs-btn-border-color: var(--ml-green);
  --bs-btn-hover-bg: var(--ml-green); --bs-btn-hover-border-color: var(--ml-green);
  --bs-btn-active-bg: var(--ml-green-dark);
}

/* ---------- application shell */
.ml-shell { display: grid; grid-template-columns: 248px 1fr; min-height: 100vh; }
.ml-sidebar {
  background: var(--ml-ink); color: #c9d6e2; position: sticky; top: 0; height: 100vh; overflow-y: auto;
  display: flex; flex-direction: column;
}
.ml-brand { display: flex; align-items: center; gap: .6rem; padding: 1.1rem 1.25rem .9rem; color: #fff; text-decoration: none; }
.ml-brand:hover { color: #fff; }
.ml-mark {
  width: 30px; height: 30px; border-radius: 6px; background: var(--ml-green);
  display: grid; place-items: center; font-weight: 800; font-size: .95rem; color: #fff;
  box-shadow: inset 0 -3px 0 rgba(0,0,0,.18);
}
.ml-brand-name { font-weight: 700; font-size: 1.02rem; letter-spacing: -.01em; }
.ml-nav { padding: .25rem .75rem 1.5rem; flex: 1; }
.ml-nav-group { margin-top: 1.1rem; }
.ml-nav-title { font-size: .76rem; font-weight: 600; color: #8ea3b8; padding: 0 .6rem .35rem; }
.ml-nav a {
  display: flex; align-items: center; gap: .65rem; padding: .44rem .6rem; border-radius: .35rem;
  color: #d5e0ea; text-decoration: none; font-size: .9rem;
}
.ml-nav a .bi { font-size: 1rem; opacity: .8; width: 1.1rem; }
.ml-nav a:hover { background: var(--ml-ink-2); color: #fff; }
.ml-nav a.active { background: rgba(255,255,255,.1); color: #fff; box-shadow: inset 3px 0 0 #5fc4a2; }
.ml-sidebar-foot { padding: .9rem 1.25rem; font-size: .78rem; color: #8ea3b8; border-top: 1px solid rgba(255,255,255,.08); }

.ml-main { min-width: 0; display: flex; flex-direction: column; }
.ml-topbar {
  display: flex; align-items: center; gap: .75rem; padding: .6rem 1.75rem; background: var(--ml-sheet);
  border-bottom: 1px solid var(--ml-rule); position: sticky; top: 0; z-index: 1020;
}
.ml-company-btn {
  display: inline-flex; align-items: center; gap: .55rem; border: 1px solid var(--ml-rule); background: transparent;
  border-radius: .4rem; padding: .32rem .7rem; font-weight: 600; color: inherit; max-width: 360px;
}
.ml-company-btn .dot { width: 9px; height: 9px; border-radius: 50%; background: var(--ml-brass); flex: none; }
.ml-company-btn span.name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ml-content { padding: 1.6rem 1.75rem 3rem; max-width: 1400px; width: 100%; }

.ml-page-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.ml-page-head h1 { font-size: 1.5rem; margin: 0; }
.ml-page-head .sub { color: var(--ml-muted); margin: .2rem 0 0; }

.ml-panel { background: var(--ml-sheet); border: 1px solid var(--ml-rule); border-radius: .5rem; }
.ml-panel-head { padding: .85rem 1.1rem; border-bottom: 1px solid var(--ml-rule); display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.ml-panel-head h2 { font-size: 1rem; margin: 0; }
.ml-panel-body { padding: 1.1rem; }

/* ---------- dashboard figures */
.ml-figures { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); border: 1px solid var(--ml-rule); border-radius: .5rem; background: var(--ml-sheet); overflow: hidden; }
.ml-figure { padding: 1rem 1.15rem; border-right: 1px solid var(--ml-rule); }
.ml-figure:last-child { border-right: 0; }
.ml-figure .label { font-size: .82rem; color: var(--ml-muted); }
.ml-figure .value { font-size: 1.35rem; font-weight: 650; font-variant-numeric: tabular-nums; color: var(--ml-ink); }
[data-bs-theme="dark"] .ml-figure .value { color: #eef3f1; }
.ml-figure a { text-decoration: none; color: inherit; }
.ml-bars { display: flex; align-items: flex-end; gap: 1.1rem; height: 150px; padding-top: .5rem; }
.ml-bars .m { flex: 1; display: flex; flex-direction: column; align-items: center; gap: .35rem; height: 100%; justify-content: flex-end; }
.ml-bars .pair { display: flex; align-items: flex-end; gap: 3px; height: 100%; width: 100%; justify-content: center; }
.ml-bars .b { width: 40%; max-width: 22px; border-radius: 2px 2px 0 0; min-height: 2px; }
.ml-bars .b.s { background: var(--ml-green); }
.ml-bars .b.c { background: var(--ml-rule-strong); }
.ml-bars .lbl { font-size: .75rem; color: var(--ml-muted); }

/* ---------- ledger tables (screen reports & registers) */
.ledger-wrap { overflow-x: auto; }
.ledger { width: 100%; border-collapse: collapse; font-size: .88rem; }
.ledger th {
  font-weight: 600; font-size: .8rem; color: var(--ml-muted); text-align: left; padding: .55rem .6rem;
  border-bottom: 2px solid var(--ml-ink); white-space: nowrap; background: var(--ml-sheet); position: sticky; top: 0;
}
[data-bs-theme="dark"] .ledger th { border-bottom-color: var(--ml-rule-strong); }
.ledger td { padding: .42rem .6rem; border-bottom: 1px solid var(--ml-rule); vertical-align: top; }
.ledger tbody tr:hover td { background: rgba(31, 107, 87, .045); }
.ledger td a.rowlink { color: inherit; text-decoration: none; }
.ledger td a.rowlink:hover { color: var(--ml-green); text-decoration: underline; }
.ledger tr.r-heading td { background: var(--ml-heading-bg); font-weight: 650; color: var(--ml-ink); padding-top: .6rem; }
[data-bs-theme="dark"] .ledger tr.r-heading td { color: #e6eeea; }
.ledger tr.r-heading.l1 td { font-size: .95rem; background: transparent; border-bottom: 2px solid var(--ml-rule-strong); padding-top: 1.1rem; }
.ledger tr.r-heading.l2 td { font-weight: 600; font-size: .82rem; background: transparent; color: var(--ml-muted); }
.ledger tr.r-subtotal td { font-weight: 600; }
.ledger tr.r-subtotal td.n { border-top: 1px solid var(--ml-rule-strong); }
.ledger tr.r-total td { font-weight: 650; }
.ledger tr.r-total td.n { border-top: 1px solid var(--ml-ink); }
.ledger tr.r-grand td { font-weight: 700; border-bottom: 0; }
.ledger tr.r-grand td.n { border-top: 1px solid var(--ml-ink); border-bottom: 3px double var(--ml-ink); }
[data-bs-theme="dark"] .ledger tr.r-grand td.n, [data-bs-theme="dark"] .ledger tr.r-total td.n { border-color: #cfdad5; }
.ledger tr.r-note td { font-style: italic; color: var(--ml-muted); border-bottom: 0; }
.ledger td.code { white-space: nowrap; color: var(--ml-muted); }

/* ---------- report header */
.report-sheet { background: var(--ml-sheet); border: 1px solid var(--ml-rule); border-radius: .5rem; padding: 1.5rem 1.6rem 2rem; }
.report-title { font-family: var(--ml-font-doc); font-weight: 600; font-size: 1.55rem; margin: 0; color: var(--ml-ink); letter-spacing: -.01em; }
[data-bs-theme="dark"] .report-title { color: #eef3f1; }
.report-company { font-weight: 600; color: var(--ml-muted); font-size: .9rem; }
.report-sub { color: var(--ml-muted); margin: .25rem 0 1.2rem; }
.filters { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; }
.filters .form-label { font-size: .8rem; margin-bottom: .2rem; color: var(--ml-muted); }

/* ---------- entry forms */
.entry-lines td, .entry-lines th { padding: .35rem .35rem; vertical-align: middle; }
.entry-lines th { font-size: .8rem; font-weight: 600; color: var(--ml-muted); border-bottom: 2px solid var(--ml-ink); }
.entry-lines .form-control, .entry-lines .form-select { font-size: .875rem; }
.entry-lines input.n { text-align: right; font-variant-numeric: tabular-nums; }
.entry-total { display: grid; grid-template-columns: auto auto; gap: .2rem 1.5rem; justify-content: end; font-variant-numeric: tabular-nums; }
.entry-total .lbl { color: var(--ml-muted); text-align: right; }
.entry-total .v { text-align: right; font-weight: 600; min-width: 8rem; }
.entry-total .grand { border-top: 1px solid var(--ml-ink); border-bottom: 3px double var(--ml-ink); padding: .15rem 0; font-size: 1.05rem; }
.balance-ok { color: var(--ml-green); }
.balance-bad { color: var(--ml-red); }
.badge-src { font-weight: 600; background: var(--ml-heading-bg); color: var(--ml-ink); border: 1px solid var(--ml-rule); }
[data-bs-theme="dark"] .badge-src { color: #dbe4e0; }
.badge-void { background: transparent; color: var(--ml-red); border: 1px solid var(--ml-red); }

/* ---------- auth & plain pages */
.auth-shell { min-height: 100vh; display: grid; grid-template-columns: minmax(320px, 44%) 1fr; }
.auth-aside {
  background-color: var(--ml-ink); color: #dce6ee; padding: 3rem 3.25rem; display: flex; flex-direction: column; justify-content: space-between;
  background-image:
    linear-gradient(90deg, transparent 63px, rgba(196, 92, 82, .55) 63px, rgba(196, 92, 82, .55) 65px, transparent 65px),
    repeating-linear-gradient(180deg, transparent 0 31px, rgba(255,255,255,.07) 31px 32px);
}
.auth-aside .ml-brand { padding: 0; }
.auth-aside blockquote { font-family: var(--ml-font-doc); font-size: 1.65rem; line-height: 1.35; color: #fff; max-width: 26ch; margin: 0; }
.auth-aside .facts { font-size: .9rem; color: #a9bccd; max-width: 40ch; }
.auth-main { display: flex; align-items: center; justify-content: center; padding: 2.5rem 1.5rem; background: var(--ml-sheet); }
.auth-card { width: 100%; max-width: 420px; }
.auth-card h1 { font-size: 1.6rem; margin-bottom: .35rem; }

.plain-top { background: var(--ml-ink); color: #fff; }
.plain-top .ml-brand { padding: .8rem 0; }
.company-tile {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.15rem;
  border: 1px solid var(--ml-rule); border-radius: .5rem; background: var(--ml-sheet);
}
.company-tile + .company-tile { margin-top: .6rem; }
.company-tile h2 { font-size: 1.05rem; margin: 0; }

/* ---------- printable documents on screen (invoice / statement) */
.doc-sheet { background: #fff; color: #1d2722; border: 1px solid var(--ml-rule); border-radius: .25rem; padding: 2.4rem 2.6rem; max-width: 900px; }
[data-bs-theme="dark"] .doc-sheet { border-color: #000; }

@media (max-width: 991.98px) {
  .ml-shell { grid-template-columns: 1fr; }
  .ml-sidebar { position: fixed; z-index: 1040; width: 260px; transform: translateX(-100%); transition: transform .2s ease; }
  .ml-sidebar.open { transform: none; }
  .ml-content, .ml-topbar { padding-left: 1rem; padding-right: 1rem; }
  .auth-shell { grid-template-columns: 1fr; }
  .auth-aside { display: none; }
  .ml-figure { border-right: 0; border-bottom: 1px solid var(--ml-rule); }
}
@media (prefers-reduced-motion: reduce) { .ml-sidebar { transition: none; } }
