/* Light palette is the default; dark overrides come from either the OS
   preference or an explicit toggle (data-theme attribute on <html>, set by
   assets/js/theme-init.js before first paint to avoid a flash). */
:root {
  --dm-bg: #f5f2ec;
  --dm-panel: #ffffff;
  --dm-panel-alt: #f1ece0;
  --dm-surface: #ffffff;
  --dm-border: #ddd3bd;
  --dm-hairline: rgba(0,0,0,.08);
  --dm-text: #241c12;
  --dm-text-dim: #6d6252;
  --dm-accent: #0f6d82;
  --dm-accent-contrast: #ffffff;

  --dm-gold: #8a6407;
  --dm-income: #1a7f37;
  --dm-expense: #c62839;
  --dm-asset: #8a6407;
  --dm-liability: #2454c7;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --dm-bg: #201810;
    --dm-panel: #2b2118;
    --dm-panel-alt: #362a1d;
    --dm-surface: #14100a;
    --dm-border: #4a3b29;
    --dm-hairline: rgba(255,255,255,.07);
    --dm-text: #eee6d8;
    --dm-text-dim: #b8ab97;
    --dm-accent: #1a7a94;
    --dm-accent-contrast: #ffffff;

    --dm-gold: #e0b84a;
    --dm-income: #6fe3a0;
    --dm-expense: #f26d84;
    --dm-asset: #e0b84a;
    --dm-liability: #8fb0f0;
  }
}

:root[data-theme="dark"] {
  --dm-bg: #201810;
  --dm-panel: #2b2118;
  --dm-panel-alt: #362a1d;
  --dm-surface: #14100a;
  --dm-border: #4a3b29;
  --dm-hairline: rgba(255,255,255,.07);
  --dm-text: #eee6d8;
  --dm-text-dim: #b8ab97;
  --dm-accent: #1a7a94;
  --dm-accent-contrast: #ffffff;

  --dm-gold: #e0b84a;
  --dm-income: #6fe3a0;
  --dm-expense: #f26d84;
  --dm-asset: #e0b84a;
  --dm-liability: #8fb0f0;
}

* { -webkit-tap-highlight-color: transparent; }

body {
  background: var(--dm-bg);
  color: var(--dm-text);
  min-height: 100vh;
  padding-bottom: calc(64px + env(safe-area-inset-bottom));
}

a { text-decoration: none; }

.dm-topbar {
  background: var(--dm-surface);
  border-bottom: 1px solid var(--dm-border);
}
.dm-topbar, .dm-topbar .navbar-brand, .dm-topbar .btn-link {
  color: var(--dm-text) !important;
}
.dm-topbar .btn-link:hover { color: var(--dm-gold) !important; }

.dm-theme-toggle {
  background: transparent;
  border: none;
  color: var(--dm-text);
  font-size: 1.2rem;
  line-height: 1;
  padding: .35rem .5rem;
}
.dm-theme-toggle:hover { color: var(--dm-gold); }

.btn-close-dm {
  background: transparent;
  border: none;
  color: var(--dm-text);
  font-size: 1.3rem;
}

.dm-book-btn {
  background: var(--dm-panel-alt);
  color: var(--dm-gold);
  border: 1px solid var(--dm-border);
}
.dm-book-btn:hover { color: var(--dm-gold); }

.dm-dropdown-menu {
  background: var(--dm-panel);
  border: 1px solid var(--dm-border);
  color: var(--dm-text);
}
.dm-dropdown-menu .dropdown-item { color: var(--dm-text); }
.dm-dropdown-menu .dropdown-item:hover,
.dm-dropdown-menu .dropdown-item:focus { background: var(--dm-panel-alt); color: var(--dm-gold); }
.dm-dropdown-menu .dropdown-item.active { background: var(--dm-accent); color: #fff; }
.dm-dropdown-menu .dropdown-divider { border-color: var(--dm-border); }

.dm-sidenav, .dm-sidenav-static {
  background: var(--dm-panel);
}
.dm-sidenav { border-right: 1px solid var(--dm-border); }
.dm-sidenav-static { min-height: calc(100vh - 56px); border-right: 1px solid var(--dm-border); padding-top: .5rem; }
.offcanvas.dm-sidenav { color: var(--dm-text); }

.dm-nav .list-group-item {
  background: transparent;
  color: var(--dm-text);
  border: none;
  border-bottom: 1px solid var(--dm-hairline);
  padding: .8rem 1.1rem;
}
.dm-nav .list-group-item:hover { background: var(--dm-panel-alt); color: var(--dm-gold); }
.dm-nav .list-group-item.active { background: var(--dm-accent); color: #fff; }

.dm-content { padding: 1rem 1rem 2rem; }

.dm-bottomnav {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  display: flex;
  background: var(--dm-surface);
  border-top: 1px solid var(--dm-border);
  padding-bottom: env(safe-area-inset-bottom);
  z-index: 1030;
}
.dm-bottomnav a {
  flex: 1;
  text-align: center;
  color: var(--dm-text-dim);
  padding: .5rem 0 .35rem;
  font-size: .7rem;
}
.dm-bottomnav a i { display: block; font-size: 1.25rem; margin-bottom: 2px; }
.dm-bottomnav a.active { color: var(--dm-gold); }

.dm-card {
  background: var(--dm-panel);
  border: 1px solid var(--dm-border);
  border-radius: .6rem;
}

.dm-tile {
  background: var(--dm-panel);
  border: 1px solid var(--dm-border);
  border-radius: .75rem;
  padding: 1rem .5rem;
  text-align: center;
  color: var(--dm-text);
  display: block;
  transition: background .15s;
}
.dm-tile:hover { background: var(--dm-panel-alt); color: var(--dm-gold); }
.dm-tile i { font-size: 1.7rem; display: block; margin-bottom: .4rem; color: var(--dm-gold); }
.dm-tile span { font-size: .82rem; }

.dm-summary-bar {
  background: var(--dm-panel);
  border: 1px solid var(--dm-border);
  border-radius: .6rem;
  padding: .75rem;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
}
.dm-summary-bar .item { text-align: center; }
.dm-summary-bar .label { color: var(--dm-text-dim); font-size: .8rem; margin-right: .35rem; }
.dm-summary-bar .value { font-weight: 600; }

.dm-period-bar {
  background: var(--dm-accent);
  color: #fff;
  border-radius: .5rem;
  padding: .6rem 1rem;
  text-align: center;
  margin-bottom: .25rem;
}
.dm-period-bar .totals { font-size: .85rem; margin-top: .2rem; }
.dm-period-bar .totals span { margin: 0 .5rem; }

.dm-date-group-header {
  background: var(--dm-surface);
  color: var(--dm-text-dim);
  padding: .4rem .8rem;
  font-size: .85rem;
  border-radius: .4rem .4rem 0 0;
  margin-top: .75rem;
  border: 1px solid var(--dm-border);
  border-bottom: none;
}

.dm-txn-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: .6rem .8rem;
  border-left: 4px solid transparent;
  border-bottom: 1px solid var(--dm-hairline);
  background: var(--dm-panel);
}
.dm-txn-row:hover { background: var(--dm-panel-alt); }
.dm-txn-row:last-child { border-bottom-left-radius: .4rem; border-bottom-right-radius: .4rem; }
.dm-txn-row.kind-income { border-left-color: var(--dm-income); }
.dm-txn-row.kind-expense { border-left-color: var(--dm-expense); }
.dm-txn-row.kind-transfer { border-left-color: var(--dm-liability); }
.dm-txn-row.kind-other { border-left-color: var(--dm-asset); }
.dm-txn-row .to-name { color: var(--dm-gold); }
.dm-txn-row .from-name { display: block; font-size: .78rem; color: var(--dm-text-dim); }
.dm-txn-row .amount { font-weight: 600; }
.dm-txn-row.kind-income .amount { color: var(--dm-income); }
.dm-txn-row.kind-expense .amount { color: var(--dm-expense); }

.text-income { color: var(--dm-income) !important; }
.text-expense { color: var(--dm-expense) !important; }
.text-asset { color: var(--dm-asset) !important; }
.text-liability { color: var(--dm-liability) !important; }

.type-income { color: var(--dm-income); }
.type-expense { color: var(--dm-expense); }
.type-asset { color: var(--dm-asset); }
.type-liability { color: var(--dm-liability); }
.type-other { color: var(--dm-text-dim); }

.form-control, .form-select {
  background: var(--dm-panel-alt);
  border: 1px solid var(--dm-border);
  color: var(--dm-text);
}
.form-control:focus, .form-select:focus {
  background: var(--dm-panel-alt);
  color: var(--dm-text);
  border-color: var(--dm-accent);
  box-shadow: 0 0 0 .2rem rgba(15,109,130,.25);
}
.form-control::placeholder { color: var(--dm-text-dim); }
label { color: var(--dm-text-dim); }

.btn-dm-primary {
  background: var(--dm-accent);
  border-color: var(--dm-accent);
  color: #fff;
}
.btn-dm-primary:hover { background: var(--dm-accent); filter: brightness(0.88); color: #fff; }

.dm-login-wrap {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
.dm-login-card { max-width: 380px; width: 100%; }

.dm-tree { padding-left: 0; }
.dm-tree ul { list-style: none; padding-left: 1.1rem; }
.dm-tree > ul { padding-left: 0; }
.dm-tree li { padding: .3rem 0; border-bottom: 1px dashed var(--dm-hairline); }
.dm-tree .row-line { display: flex; justify-content: space-between; }
a.dm-tree-link { color: inherit; text-decoration: none; }
a.dm-tree-link:hover span:first-child { color: var(--dm-gold); text-decoration: underline; }

.dm-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: .5rem .75rem;
  font-weight: 600;
}
.dm-section-header.asset { background: color-mix(in srgb, var(--dm-asset) 16%, var(--dm-panel)); color: var(--dm-asset); }
.dm-section-header.liability { background: color-mix(in srgb, var(--dm-liability) 16%, var(--dm-panel)); color: var(--dm-liability); }
.dm-section-header.income { background: color-mix(in srgb, var(--dm-income) 16%, var(--dm-panel)); color: var(--dm-income); }
.dm-section-header.expense { background: color-mix(in srgb, var(--dm-expense) 16%, var(--dm-panel)); color: var(--dm-expense); }

.dm-acct-group {
  color: var(--dm-text-dim);
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .03em;
  padding: .2rem 0;
}
.dm-acct-leaf {
  display: flex;
  justify-content: space-between;
  align-items: center;
  text-decoration: none;
  color: var(--dm-text);
  padding: .25rem 0;
}
.dm-acct-leaf:hover { color: var(--dm-gold); }
.dm-acct-leaf .meta { font-size: .72rem; color: var(--dm-text-dim); }

.nav-tabs .nav-link { color: var(--dm-text-dim); }
.nav-tabs .nav-link.active { background: var(--dm-panel-alt); color: var(--dm-gold); border-color: var(--dm-border); }

table.table { color: var(--dm-text); }
.table > :not(caption) > * > * { background: transparent; color: var(--dm-text); border-color: var(--dm-border); }
