@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Instrument+Sans:wght@400;500;600&display=swap');

:root {
  --page: #fbfaf9;
  --surface: #ffffff;
  --surface-soft: #f7f4f0;
  --line: #d7d0c8;
  --line-soft: #e8e2dc;
  --ink: #1c1a18;
  --muted: #514c47;
  --muted-2: #68615b;
  --accent: #b84f0a;
  --accent-hover: #963e06;
  --accent-wash: #f9e9dc;
  --positive: #557a4c;
  --caution: #755c08;
  --danger: #983f36;
  --mono: 'IBM Plex Mono', ui-monospace, monospace;
  --ui: 'Instrument Sans', system-ui, sans-serif;
  --sidebar-width: 232px;
  --header-height: 64px;
}

* { box-sizing: border-box; }
html { background: var(--page); }
body {
  background: var(--page) !important;
  color: var(--ink) !important;
  font-family: var(--ui) !important;
  font-size: 13.5px;
  letter-spacing: 0;
}
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6 { color: var(--ink); font-family: var(--ui); font-weight: 600; letter-spacing: -.02em; }
/* The legacy dark Bootstrap theme applies light heading colors through more
   specific selectors. Keep readable text authoritative inside page content. */
.content-wrapper h1,
.content-wrapper h2,
.content-wrapper h3,
.content-wrapper h4,
.content-wrapper h5,
.content-wrapper h6,
.content-wrapper .h1,
.content-wrapper .h2,
.content-wrapper .h3,
.content-wrapper .h4,
.content-wrapper .h5,
.content-wrapper .h6,
.content-wrapper .card-title,
.content-wrapper .form-label {
  color: var(--ink) !important;
}
a { color: var(--accent); font-weight: 500; }
a:hover { color: var(--accent-hover); }
main { padding: 1.5rem 0; }
.content-wrapper { margin-left: var(--sidebar-width); padding-top: 1rem !important; }

.main-header.navbar {
  height: var(--header-height);
  background: var(--surface) !important;
  border-bottom: 1px solid var(--line) !important;
  box-shadow: 0 1px 8px rgba(45, 33, 22, .03);
}
.navbar-brand { color: var(--ink) !important; font-size: 15px; font-weight: 600; }
.navbar-brand i { color: var(--accent); }
.main-header .text-light, .main-header .user-dropdown { color: var(--ink) !important; }
.main-header .text-light:hover, .main-header .user-dropdown:hover { color: var(--ink) !important; }

.sidebar {
  top: var(--header-height); width: var(--sidebar-width);
  background: #f6f3ef; border-right: 1px solid var(--line);
  box-shadow: none; padding: 18px 12px; overflow-y: auto;
}
.sidebar .nav-link {
  color: #3f3a36; border: 0; border-radius: 7px; margin: 2px 0;
  padding: 9px 11px; font-size: 13px; font-weight: 500;
  transition: background-color .18s ease, color .18s ease, transform .18s ease;
}
.sidebar .nav-link:hover { color: var(--ink); background: #eee9e3; transform: translateX(2px); }
.sidebar .nav-link.active { color: var(--ink); background: transparent; font-weight: 600; }
.sidebar .nav-link.active:before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); display: inline-block; vertical-align: 2px; margin-right: 8px; }
.sidebar .nav-link i { width: 19px; margin-right: 5px; color: #514c47; }
.sidebar .nav-link.active i { color: var(--accent); }
.sidebar .badge { background: var(--accent-wash) !important; color: var(--accent) !important; font-family: var(--mono); font-size: 10px; }
.sidebar-heading { color: #514c47; font-size: 10px; letter-spacing: .1em; padding: 21px 11px 6px; font-weight: 700; }

.card, .list-group-item {
  background: var(--surface) !important; border: 1px solid var(--line) !important;
  border-radius: 10px !important; box-shadow: 0 2px 10px rgba(45,33,22,.025) !important;
  color: var(--ink) !important;
}
.card { margin-bottom: 1.15rem; }
.card:hover { border-color: #ded7cf !important; }
.card-header { background: transparent !important; color: var(--ink) !important; border-bottom: 1px solid var(--line-soft) !important; padding: 14px 18px; }
.card-body, .card-footer { color: var(--ink) !important; }
.card-body { padding: 18px; }
.content-wrapper .card-header.text-white,
.content-wrapper .card-body.text-white,
.content-wrapper .card-footer.text-white {
  color: var(--ink) !important;
}
.content-wrapper .card p,
.content-wrapper .card label,
.content-wrapper .card dt,
.content-wrapper .card dd,
.content-wrapper .card li,
.content-wrapper .card strong,
.content-wrapper .card .fw-bold,
.content-wrapper .list-group-item,
.content-wrapper .list-group-item strong,
.content-wrapper .list-group-item .fw-bold {
  color: inherit;
}
.shadow-sm { box-shadow: 0 2px 10px rgba(45,33,22,.025) !important; }
.text-muted, .form-text { color: var(--muted) !important; }
.lead { color: var(--muted); font-size: 14px; }

.btn { border-radius: 7px; font-size: 13px; font-weight: 600; border-width: 1px; transition: transform .16s ease, background-color .16s ease, border-color .16s ease; }
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; }
.btn-primary:hover,.btn-primary:focus { background: var(--accent-hover) !important; border-color: var(--accent-hover) !important; }
.btn-success,.btn-outline-success { background: var(--positive) !important; border-color: var(--positive) !important; color: #fff !important; }
.btn-warning,.btn-outline-warning { background: var(--caution) !important; border-color: var(--caution) !important; color: #fff !important; }
.btn-info,.btn-outline-info { background: #42677f !important; border-color: #42677f !important; color: #fff !important; }
.btn-danger,.btn-outline-danger { background: var(--danger) !important; border-color: var(--danger) !important; color: #fff !important; }
.btn-secondary,.btn-outline-secondary { background: #5e5954 !important; border-color: #5e5954 !important; color: #fff !important; }
.btn-outline-primary { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; }
.btn-success:hover,.btn-outline-success:hover { background: #42643b !important; border-color: #42643b !important; color: #fff !important; }
.btn-warning:hover,.btn-outline-warning:hover { background: #5e4905 !important; border-color: #5e4905 !important; color: #fff !important; }
.btn-info:hover,.btn-outline-info:hover { background: #325369 !important; border-color: #325369 !important; color: #fff !important; }
.btn-danger:hover,.btn-outline-danger:hover { background: #793029 !important; border-color: #793029 !important; color: #fff !important; }
.btn-secondary:hover,.btn-outline-secondary:hover { background: #45413e !important; border-color: #45413e !important; color: #fff !important; }
.btn-outline-primary:hover { background: var(--accent-hover) !important; border-color: var(--accent-hover) !important; color: #fff !important; }
.btn:disabled,.btn.disabled { opacity: .55; transform: none; }

.form-control,.form-select,.input-group-text {
  color: var(--ink) !important; background: var(--surface) !important; border-color: #bfb7ae !important; border-radius: 7px;
}
.input-group-text { color: #3f3a36 !important; }
.form-control::placeholder { color: #6a635d !important; opacity: 1; }
.form-control:focus,.form-select:focus { border-color: #dba47d !important; box-shadow: 0 0 0 3px rgba(210,97,15,.12) !important; }
.form-label { color: #403b37; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }

.table { color: var(--ink); --bs-table-bg: transparent; --bs-table-striped-bg: #fcfaf8; }
.table thead th { background: #eeeae5 !important; color: #3f3a36 !important; border-bottom: 1px solid #c9c1b8 !important; font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.table td { color: #2d2926 !important; border-color: var(--line-soft); vertical-align: middle; }
.table td .text-muted,.table td small { color: #5b554f !important; }
.table-hover tbody tr:hover { background: #fff8f2 !important; }
.table-dark, .table-dark th { background: var(--surface-soft) !important; color: var(--muted) !important; }
.badge { border-radius: 20px; font-weight: 500; padding: .38em .7em; }
.badge.bg-primary { background: var(--accent) !important; color: #fff !important; }
.badge.bg-success { background: var(--positive) !important; color: #fff !important; }
.badge.bg-warning { background: var(--caution) !important; color: #fff !important; }
.badge.bg-danger { background: var(--danger) !important; color: #fff !important; }
.badge.bg-info { background: #42677f !important; color: #fff !important; }
.badge.bg-secondary,.badge.bg-dark { background: #5e5954 !important; color: #fff !important; }
.progress { background: #eee9e3; border-radius: 20px; }
.progress-bar { background: var(--accent); }
.filter-panel, .filter-panel .filter-control, .filter-panel select.filter-control { background: var(--surface-soft) !important; color: var(--ink) !important; border-color: var(--line) !important; }
.filter-panel .filter-label, .filter-panel .filter-count { color: var(--muted) !important; }
.filter-panel .filter-control::placeholder { color: #625b55 !important; opacity: 1; }
#aiCleanupCard { background: var(--surface-soft) !important; border: 1px solid var(--line) !important; }
#aiCleanupCard .text-white, #aiCleanupCard .small.text-white { color: var(--ink) !important; }
.modal-content,
.modal-body,
.modal-footer {
  color: var(--ink) !important;
}
.modal-content.bg-dark, .modal-content.bg-dark .modal-header, .modal-content.bg-dark .modal-footer { background: var(--surface) !important; color: var(--ink) !important; border-color: var(--line) !important; }
.modal-content.bg-dark .btn-close-white { filter: none; }
.matching-indicator.matched { background: var(--positive); }
.matching-indicator.partial { background: var(--caution); }
.matching-indicator.unmatched { background: var(--danger); }
.dropzone, #drop-area, .upload-area-inner { border-color: rgba(210,97,15,.35) !important; background: var(--surface) !important; }
.page-heading h1 { font-size: 24px; }
code { color: var(--accent-hover); background: var(--accent-wash); padding: .1em .3em; border-radius: 4px; }
.alert { border: 1px solid var(--line); border-radius: 8px; }
.dropdown-menu { background: var(--surface); border: 1px solid var(--line); box-shadow: 0 12px 28px rgba(45,33,22,.12); }
.dropdown-item { color: var(--ink); }
.dropdown-item:hover,.dropdown-item:focus { background: var(--accent-wash); color: var(--ink); }
.footer { background: var(--surface) !important; color: var(--muted) !important; border-top: 1px solid var(--line) !important; }
.footer h5 { color: var(--accent) !important; }

.stat-card { background: var(--surface); border: 1px solid var(--line); box-shadow: none; }
.stat-card .stat-value { color: var(--ink); font-family: var(--mono); font-size: 25px; }
.stat-card .stat-title { color: #403b37 !important; }
.stat-card .stat-description { color: var(--muted) !important; }
.login-container { background: transparent; }
.login-card { background: var(--surface); border: 1px solid var(--line); box-shadow: 0 14px 44px rgba(45,33,22,.1); color: var(--ink); }
.login-card .card-title { color: var(--ink); }
.text-primary { color: var(--accent) !important; }
.text-success { color: #3f6638 !important; }
.text-info { color: #315a73 !important; }
.text-warning { color: #665006 !important; }
.text-danger { color: #87372f !important; }

/* Upload and column mapping */
.upload-page-heading h1 { margin-bottom: .35rem; }
.upload-workspace .nav-tabs {
  border-bottom: 1px solid var(--line);
  gap: .25rem;
}
.upload-workspace .nav-tabs .nav-link {
  color: var(--muted);
  background: transparent;
  border: 0;
  border-bottom: 3px solid transparent;
  border-radius: 0;
  padding: .75rem 1rem;
  font-weight: 600;
}
.upload-workspace .nav-tabs .nav-link:hover { color: var(--ink); }
.upload-workspace .nav-tabs .nav-link.active {
  color: var(--ink);
  background: transparent;
  border-bottom-color: var(--accent);
}
.upload-workspace .list-group-item {
  color: var(--ink) !important;
  background: var(--surface) !important;
  border-color: var(--line) !important;
}
.upload-workspace .list-group-item strong,
.upload-workspace .list-group-item .fw-bold {
  color: var(--ink) !important;
}
#drop-area {
  min-height: 250px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 2px dashed #b9ada2 !important;
  background: #fcfaf8 !important;
  color: var(--ink);
}
#drop-area:hover,#drop-area.highlight {
  border-color: var(--accent) !important;
  background: var(--accent-wash) !important;
}
#drop-area .file-formats { color: var(--muted) !important; }
.mapping-card {
  border: 1px solid var(--line) !important;
  border-left: 4px solid #8a837c !important;
  box-shadow: none !important;
  color: var(--ink) !important;
}
.mapping-card .card-title,
.mapping-card .card-title:not(.text-muted) {
  color: var(--ink) !important;
}
.mapping-card.required-field { border-left-color: var(--accent) !important; }
.mapping-card.matched-field {
  background: #f0f6ed !important;
  border-color: #86a27d !important;
}
.mapping-card.matched-field .form-select { border-color: #6f9165 !important; }
.preview-table th,.preview-table td { min-width: 110px; }
.upload-loading-content {
  background: var(--surface) !important;
  color: var(--ink) !important;
  border: 1px solid var(--line);
  border-radius: 10px;
}
@media (max-width: 767.98px) { .content-wrapper { margin-left: 0 !important; } .sidebar { padding-top: 12px; } .main-header.navbar { height: 58px; } }
@media (prefers-reduced-motion: reduce) { *, *:before, *:after { transition-duration: .01ms !important; animation-duration: .01ms !important; } }