:root {
  --ds-primary: #1B3A5C;
  --ds-primary-dark: #12293F;
  --ds-accent: #2C5F8D;
  --ds-light: #F5F7FA;
  --ds-border: #D8DEE6;
  --ds-ok: #1E7E34;
  --ds-warn: #B8860B;
  --ds-err: #B02A37;
  --ds-muted: #6B7785;
}

body {
  background: var(--ds-light);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  color: #22303C;
}

.navbar-ds {
  background: var(--ds-primary);
  border-bottom: 3px solid var(--ds-accent);
}
.navbar-ds .navbar-brand,
.navbar-ds .nav-link { color: #fff !important; }
.navbar-ds .nav-link:hover { color: #BFD4E8 !important; }

.card-ds {
  border: 1px solid var(--ds-border);
  border-radius: 6px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(27, 58, 92, .06);
}
.card-ds > .card-header {
  background: var(--ds-primary);
  color: #fff;
  font-weight: 600;
  letter-spacing: .02em;
  border-radius: 5px 5px 0 0;
  border-bottom: none;
}
.card-ds > .card-header.subtle {
  background: #EAF0F6;
  color: var(--ds-primary);
  border-bottom: 1px solid var(--ds-border);
}

.btn-ds { background: var(--ds-primary); border-color: var(--ds-primary); color: #fff; }
.btn-ds:hover { background: var(--ds-primary-dark); border-color: var(--ds-primary-dark); color: #fff; }
.btn-ds-outline { border-color: var(--ds-primary); color: var(--ds-primary); }
.btn-ds-outline:hover { background: var(--ds-primary); color: #fff; }

/* ---- Summary lines (G702 preview) ---- */
.g702-preview .line {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: .42rem .25rem;
  border-bottom: 1px dotted var(--ds-border);
  font-size: .93rem;
}
.g702-preview .line:last-child { border-bottom: none; }
.g702-preview .line .lbl { color: #3A4A5C; }
.g702-preview .line .val {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  white-space: nowrap;
  margin-left: 1rem;
}
.g702-preview .line.highlight {
  background: #FFF6D9;
  border: 1px solid #E8D48B;
  border-radius: 4px;
  padding: .6rem .5rem;
  margin: .35rem 0;
  font-size: 1rem;
}
.g702-preview .line.highlight .val { color: var(--ds-primary); font-size: 1.18rem; }
.g702-preview .line.subline { padding-left: 1.5rem; font-size: .85rem; color: var(--ds-muted); }

.provenance {
  font-size: .74rem;
  color: var(--ds-muted);
  background: #EAF0F6;
  border: 1px solid var(--ds-border);
  border-radius: 3px;
  padding: .05rem .4rem;
  margin-left: .4rem;
  white-space: nowrap;
}

/* ---- SOV table ---- */
.sov-table { font-size: .88rem; }
.sov-table th {
  background: var(--ds-primary);
  color: #fff;
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .03em;
  vertical-align: middle;
  text-align: center;
  padding: .5rem .35rem;
}
.sov-table td { vertical-align: middle; padding: .35rem; }
.sov-table td.num, .sov-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
.sov-table tfoot td {
  background: #EAF0F6;
  font-weight: 700;
  border-top: 2px solid var(--ds-primary);
}
.sov-table input.pct-input { max-width: 92px; text-align: right; }
.sov-table input.amt-input { max-width: 118px; text-align: right; }
.derived { color: var(--ds-muted); font-variant-numeric: tabular-nums; }

.pct-bar {
  height: 5px; background: #DDE4EC; border-radius: 3px; overflow: hidden; margin-top: 3px;
}
.pct-bar > span { display: block; height: 100%; background: var(--ds-accent); }

.alert-ds-warn { background: #FFF8E1; border: 1px solid #E8D48B; color: #6B5200; }
.alert-ds-err  { background: #FDECEE; border: 1px solid #F0B4BC; color: #7A1621; }

.stat-tile { background: #fff; border: 1px solid var(--ds-border); border-radius: 6px; padding: .9rem 1rem; }
.stat-tile .label { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ds-muted); }
.stat-tile .value { font-size: 1.4rem; font-weight: 700; color: var(--ds-primary); font-variant-numeric: tabular-nums; }

.badge-status { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; }
.badge-draft     { background: #6B7785; }
.badge-submitted { background: var(--ds-accent); }
.badge-certified { background: #0F6674; }
.badge-paid      { background: var(--ds-ok); }
.badge-void      { background: #94A0AD; }

.input-locked { background: #EEF2F6 !important; color: var(--ds-muted); }
