/* ===== WECAR 탁송ERP Design System ===== */
:root {
  --wecar-primary: #03c75a;
  --wecar-primary-dark: #02a84a;
  --wecar-primary-soft: rgba(3, 199, 90, 0.12);
  --wecar-navy: #0f172a;
  --wecar-slate: #64748b;
  --wecar-bg: #eef2f6;
  --wecar-surface: #ffffff;
  --wecar-border: #e2e8f0;
  --wecar-radius: 10px;
  --wecar-radius-lg: 14px;
  --wecar-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
  --wecar-shadow-lg: 0 8px 28px rgba(15, 23, 42, 0.1);
  --header-h: 60px;
  --ctrl-h: 36px;
  --ctrl-h-sm: 30px;
  --font-base: 0.875rem;
  --font-sm: 0.8125rem;
  --font-xs: 0.75rem;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  /* 테이블 셀 — 전 페이지 공통 */
  --table-font-size: var(--font-sm);
  --table-header-bg: #1e293b;
  --table-header-color: #f8fafc;
  --table-header-accent: #03c75a;
  --table-cell-padding-y: 0.55rem;
  --table-cell-padding-x: 0.65rem;
  --table-header-padding-y: 0.6rem;
  --table-header-padding-x: 0.65rem;
  --table-row-min-h: 2.5rem;
  --table-header-min-h: 2.75rem;
  --table-border-color: #f1f5f9;
  --table-stripe-bg: #fafbfc;
  --table-hover-bg: #f0fdf4;
}

* { box-sizing: border-box; }

body {
  font-family: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: var(--font-base);
  line-height: 1.5;
  background: var(--wecar-bg);
  color: var(--wecar-navy);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

/* ===== Layout ===== */
.app-layout {
  display: flex;
  align-items: flex-start;
  min-height: calc(100vh - var(--header-h));
}

.app-main {
  flex: 1;
  min-width: 0;
}

.app-content {
  padding: var(--space-3) var(--space-4) var(--space-4);
  max-width: 100%;
}

/* ===== Navbar ===== */
.app-navbar {
  background: var(--wecar-surface);
  border-bottom: 1px solid var(--wecar-border);
  box-shadow: 0 1px 0 rgba(15, 23, 42, 0.04);
  min-height: var(--header-h);
}

.app-navbar .navbar-brand {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--wecar-navy);
}

.app-navbar .brand img {
  height: 34px;
  width: auto;
}

.app-navbar .user-badge {
  font-size: var(--font-sm);
  color: var(--wecar-slate);
  padding: var(--space-1) var(--space-3);
  background: #f8fafc;
  border-radius: 999px;
  border: 1px solid var(--wecar-border);
}

/* ===== Sidebar ===== */
.app-sidebar-left {
  flex: 0 0 232px;
  position: sticky;
  top: var(--header-h);
  height: calc(100vh - var(--header-h));
  overflow-y: auto;
  background: var(--wecar-surface);
  border-right: 1px solid var(--wecar-border);
}

.sidebar-nav { padding: var(--space-4) var(--space-3) var(--space-6); }

.sidebar-title {
  font-size: var(--font-xs);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wecar-slate);
  padding: var(--space-1) var(--space-3) var(--space-3);
}

.sidebar-section {
  font-size: var(--font-xs);
  font-weight: 700;
  padding: var(--space-4) var(--space-3) var(--space-2);
  margin-top: var(--space-1);
  border-left: 3px solid transparent;
  padding-left: calc(var(--space-3) - 3px);
}

.sidebar-section-main { color: #059669; border-left-color: #10b981; }
.sidebar-section-performance { color: #2563eb; border-left-color: #3b82f6; }
.sidebar-section-separate { color: #d97706; border-left-color: #f59e0b; }
.sidebar-section-admin { color: #7c3aed; border-left-color: #8b5cf6; }

.sidebar-link {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.4rem var(--space-3);
  margin-bottom: 2px;
  border-radius: 8px;
  font-size: var(--font-sm);
  font-weight: 500;
  color: #334155;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
  border-left: 3px solid transparent;
}

.sidebar-link-main:hover { background: rgba(16, 185, 129, 0.1); color: #059669; }
.sidebar-link-performance:hover { background: rgba(59, 130, 246, 0.1); color: #2563eb; }
.sidebar-link-separate:hover { background: rgba(245, 158, 11, 0.12); color: #d97706; }
.sidebar-link-admin:hover { background: rgba(139, 92, 246, 0.1); color: #7c3aed; }

.sidebar-link-main.active { background: rgba(16, 185, 129, 0.14); color: #047857; border-left-color: #10b981; font-weight: 600; }
.sidebar-link-performance.active { background: rgba(59, 130, 246, 0.12); color: #1d4ed8; border-left-color: #3b82f6; font-weight: 600; }
.sidebar-link-separate.active { background: rgba(245, 158, 11, 0.14); color: #b45309; border-left-color: #f59e0b; font-weight: 600; }
.sidebar-link-admin.active { background: rgba(139, 92, 246, 0.12); color: #6d28d9; border-left-color: #8b5cf6; font-weight: 600; }

.sidebar-icon { font-size: 1rem; line-height: 1; }

/* ===== Page header ===== */
.page-hero {
  margin-bottom: var(--space-3);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--wecar-border);
}

.page-hero h1 {
  font-size: 1.375rem;
  font-weight: 700;
  margin: 0;
  letter-spacing: -0.02em;
  color: var(--wecar-navy);
}

.page-hero .page-subtitle,
.page-hero .text-muted {
  font-size: var(--font-sm);
  margin-top: var(--space-2);
  margin-bottom: 0;
}

/* 섹션 제목 (매출분석 1·2, 회계처리 등) */
.app-content h5 {
  font-size: 1rem;
  font-weight: 800;
  color: var(--wecar-navy);
  padding: 0.5rem 0.75rem;
  margin-bottom: 0.65rem;
  background: linear-gradient(90deg, rgba(3, 199, 90, 0.14) 0%, transparent 100%);
  border-left: 4px solid var(--wecar-primary);
  border-radius: 0 6px 6px 0;
}

.btn-back {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--font-sm);
  font-weight: 600;
  padding: 0.35rem 0.75rem;
  margin-bottom: var(--space-3);
  border-radius: 8px;
}

/* ===== Toolbar (통일 패널) ===== */
.toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-3);
  padding: var(--space-2) var(--space-3);
  margin-bottom: var(--space-2);
  background: var(--wecar-surface);
  border: 1px solid var(--wecar-border);
  border-radius: var(--wecar-radius);
  box-shadow: var(--wecar-shadow);
}

.toolbar-group {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}

.toolbar-group--search {
  flex: 1 1 240px;
  min-width: 200px;
}

.toolbar-group--actions {
  flex: 0 1 auto;
}

.toolbar-group--export {
  margin-left: auto;
}

.toolbar-divider {
  width: 1px;
  height: var(--ctrl-h);
  background: var(--wecar-border);
  margin: 0 var(--space-1);
  flex-shrink: 0;
}

/* 툴바 내 폼·입력 통일 */
.toolbar form,
.toolbar .d-inline,
.toolbar .d-inline-flex,
.toolbar .d-flex {
  display: inline-flex !important;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin: 0;
}

.toolbar .form-control,
.toolbar .form-select,
.toolbar .btn,
.toolbar input[type="file"] {
  height: var(--ctrl-h);
  font-size: var(--font-sm);
  border-radius: 8px;
}

.toolbar .form-control,
.toolbar .form-select {
  padding: 0.35rem 0.65rem;
  min-height: var(--ctrl-h);
}

.toolbar input[type="number"].form-control,
.toolbar input[type="date"].form-control {
  width: auto;
  min-width: 5.5rem;
}

.toolbar input[type="file"].form-control,
.toolbar input[type="file"].form-control-sm {
  width: auto;
  max-width: 200px;
  padding: 0.3rem 0.5rem;
  font-size: var(--font-xs);
  line-height: 1.2;
}

.toolbar .form-control-sm,
.toolbar .form-select-sm {
  height: var(--ctrl-h);
  font-size: var(--font-sm);
  padding: 0.35rem 0.65rem;
}

/* ===== Buttons (앱 전역) ===== */
.app-main .btn,
.app-content .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  height: var(--ctrl-h);
  padding: 0 0.9rem;
  font-size: var(--font-sm);
  font-weight: 600;
  line-height: 1;
  border-radius: 8px;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
}

.app-main .btn-sm,
.app-content .btn-sm {
  height: var(--ctrl-h-sm);
  padding: 0 0.6rem;
  font-size: var(--font-xs);
  border-radius: 6px;
}

.app-main .btn-lg {
  height: 44px;
  padding: 0 1.25rem;
  font-size: var(--font-base);
}

.btn-wecar {
  background: var(--wecar-primary);
  border-color: var(--wecar-primary);
  color: #fff;
}
.btn-wecar:hover,
.btn-wecar:focus {
  background: var(--wecar-primary-dark);
  border-color: var(--wecar-primary-dark);
  color: #fff;
}

.app-main .btn-primary {
  background: #2563eb;
  border-color: #2563eb;
}
.app-main .btn-primary:hover {
  background: #1d4ed8;
  border-color: #1d4ed8;
}

.app-main .btn-outline-secondary {
  color: #475569;
  border-color: #cbd5e1;
  background: #fff;
}
.app-main .btn-outline-secondary:hover {
  background: #f8fafc;
  border-color: #94a3b8;
  color: #334155;
}

.app-main .btn-outline-primary { border-color: #93c5fd; color: #2563eb; }
.app-main .btn-outline-success { border-color: #86efac; color: #15803d; }
.app-main .btn-outline-danger { border-color: #fca5a5; color: #dc2626; }
.app-main .btn-outline-warning { border-color: #fcd34d; color: #b45309; }

.app-main .btn-outline-primary:hover { background: #eff6ff; }
.app-main .btn-outline-success:hover { background: #f0fdf4; }
.app-main .btn-outline-danger:hover { background: #fef2f2; }
.app-main .btn-outline-warning:hover { background: #fffbeb; }

.app-main .btn-warning {
  background: #f59e0b;
  border-color: #f59e0b;
  color: #fff;
}
.app-main .btn-warning:hover {
  background: #d97706;
  border-color: #d97706;
  color: #fff;
}

/* 테이블 내 작업 버튼 */
.table-wecar .btn-sm {
  height: 26px;
  padding: 0 0.45rem;
  font-size: 0.7rem;
}

.table-wecar td .btn + .btn,
.table-wecar td form + .btn,
.table-wecar td .btn + form {
  margin-left: 2px;
}

/* ===== Cards & panels ===== */
.card-wecar {
  background: var(--wecar-surface);
  border: 1px solid var(--wecar-border);
  border-radius: var(--wecar-radius-lg);
  box-shadow: var(--wecar-shadow);
}

.card-wecar .card-title,
.card-wecar h5,
.card-wecar h6 {
  font-weight: 700;
  color: var(--wecar-navy);
}

.table-wecar [data-col="insurance_history"],
.table-wecar tbody td.insurance-history-col {
  min-width: 14rem;
  max-width: 22rem;
  font-size: var(--font-xs);
  line-height: 1.45;
  white-space: pre-line !important;
  word-break: break-word;
}

.dashboard-chart-wrap {
  height: 360px;
  position: relative;
}

.dashboard-legend-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-right: 4px;
  vertical-align: middle;
}

/* ===== Tables ===== */
.table-scroll-wrap {
  position: relative;
  width: 100%;
  overflow: auto;
  max-height: calc(100vh - var(--header-h) - 88px);
  min-height: 200px;
  border: 1px solid var(--wecar-border);
  border-radius: var(--wecar-radius-lg);
  background: var(--wecar-surface);
  box-shadow: var(--wecar-shadow);
  -webkit-overflow-scrolling: touch;
  scrollbar-width: auto;
  scrollbar-color: #94a3b8 #f1f5f9;
}

.table-scroll-wrap.is-scrolled thead th {
  box-shadow: 0 3px 0 0 #03c75a, 0 6px 16px rgba(15, 23, 42, 0.28);
}

.table-scroll-wrap::-webkit-scrollbar { height: 12px; width: 12px; }
.table-scroll-wrap::-webkit-scrollbar-track {
  background: #f1f5f9;
  border-radius: 6px;
}
.table-scroll-wrap::-webkit-scrollbar-thumb {
  background: #94a3b8;
  border-radius: 6px;
  border: 2px solid #f1f5f9;
}
.table-scroll-wrap::-webkit-scrollbar-thumb:hover { background: #64748b; }
.table-scroll-wrap::-webkit-scrollbar-corner { background: #f1f5f9; }

/* 모달·카드 내 테이블도 가로 스크롤 */
.modal-body .table-scroll-wrap,
.card-wecar .table-scroll-wrap {
  max-height: calc(100vh - var(--header-h) - 160px);
}

.settlement-account-footer {
  margin-top: var(--space-4);
  padding: var(--space-3);
  text-align: center;
  font-weight: 600;
  background: #f8fafc;
  border: 1px solid var(--wecar-border);
  border-radius: var(--wecar-radius);
}

.table-wecar {
  margin: 0;
  min-width: max-content;
  font-size: var(--table-font-size);
  border-collapse: separate;
  border-spacing: 0;
  --bs-table-bg: transparent;
  --bs-table-color: #334155;
  --bs-table-hover-bg: var(--table-hover-bg);
  --bs-table-striped-bg: var(--table-stripe-bg);
}

/* 스크롤 영역 내 제목행(thead) 고정·강조 — 모든 페이지 공통 */
.table-scroll-wrap .table-wecar thead {
  z-index: 40;
}

.table-scroll-wrap .table thead th,
.table-scroll-wrap .table-wecar thead th,
.table-wecar thead th {
  position: sticky;
  top: 0;
  z-index: 45;
  background-color: var(--table-header-bg) !important;
  background-clip: padding-box;
  color: var(--table-header-color) !important;
  font-weight: 700;
  font-size: var(--table-font-size) !important;
  white-space: nowrap;
  text-align: center;
  padding: var(--table-header-padding-y) var(--table-header-padding-x) !important;
  border-bottom: 3px solid var(--table-header-accent) !important;
  border-top: none;
  letter-spacing: 0.02em;
  box-shadow: 0 2px 0 0 rgba(3, 199, 90, 0.35);
  vertical-align: middle;
  line-height: 1.4;
  min-height: var(--table-header-min-h);
  overflow: visible;
  text-overflow: clip;
}

/* Bootstrap table-sm 이 제목행 패딩을 줄이는 것 방지 */
.table.table-sm.table-wecar > thead > tr > th {
  padding: var(--table-header-padding-y) var(--table-header-padding-x) !important;
  font-size: var(--table-font-size) !important;
  line-height: 1.4 !important;
  background-color: var(--table-header-bg) !important;
  color: var(--table-header-color) !important;
  text-align: center;
}

.table-wecar.table > :not(caption) > thead {
  --bs-table-bg: #1e293b;
  --bs-table-color: #f8fafc;
}

.table-wecar.table > :not(caption) > thead > tr > th {
  background-color: #1e293b !important;
  color: #f8fafc !important;
  border-color: #334155 !important;
}

.table-wecar thead th + th {
  border-left: 1px solid rgba(248, 250, 252, 0.12);
}

.table-wecar tbody td {
  white-space: nowrap;
  vertical-align: middle;
  text-align: center;
  padding: var(--table-cell-padding-y) var(--table-cell-padding-x) !important;
  border-color: var(--table-border-color);
  color: #334155;
  line-height: 1.4;
  min-height: var(--table-row-min-h);
}

/* 셀 내 버튼·체크박스·작업열 가운데 정렬 */
.table-wecar td.status-cell,
.table-wecar td.row-actions,
.table-wecar td .row-actions {
  text-align: center;
}

.table-wecar td.row-actions .row-actions {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 2px;
  flex-wrap: nowrap;
}

.table-wecar td .form-check-input,
.table-wecar td .cell-bool-toggle {
  margin-left: auto;
  margin-right: auto;
  display: block;
}

.table-wecar td .btn,
.table-wecar td form.d-inline {
  vertical-align: middle;
}

/* ===== 전역 테이블 열 너비 (data-field / data-col) ===== */
.table-wecar thead th[data-field],
.table-wecar thead th[data-col],
.table-wecar tbody td[data-field] {
  overflow: visible;
  text-overflow: clip;
}

.table-wecar [data-field="seq"] { min-width: 2.5rem; width: 2.8rem; }
.table-wecar [data-field="status"] { min-width: 4.2rem; width: 4.8rem; }
.table-wecar [data-field="category"] { min-width: 3.2rem; width: 3.5rem; }
.table-wecar [data-field="receipt_no"] { min-width: 5.5rem; width: 6rem; }

.table-wecar [data-field="account_id"],
.table-wecar [data-col="account_id"] { min-width: 6.5rem; width: 7rem; }

.table-wecar [data-field="transport_date"],
.table-wecar [data-field="deposit_date"],
.table-wecar [data-field="inspection_date"],
.table-wecar [data-field="pay_date"],
.table-wecar [data-field="request_date"],
.table-wecar [data-field="operation_date"],
.table-wecar [data-field="violation_date"],
.table-wecar [data-field="payment_date"],
.table-wecar [data-col="created_at"],
.table-wecar [data-col="updated_at"] { min-width: 6.5rem; width: 7rem; }

.table-wecar [data-field="transport_type"] { min-width: 4.5rem; width: 5rem; }
.table-wecar [data-field="vehicle_number"] { min-width: 5.5rem; width: 6.5rem; }
.table-wecar [data-field="vehicle_type"],
.table-wecar [data-field="vehicle_name"] { min-width: 4rem; width: 4.5rem; }

.table-wecar [data-field="driver_name"],
.table-wecar [data-field="driver"],
.table-wecar [data-field="contractor"],
.table-wecar [data-field="customer"],
.table-wecar [data-field="customer_name"],
.table-wecar [data-field="depositor"],
.table-wecar [data-field="depositor_name"] { min-width: 4.5rem; width: 5.5rem; }

.table-wecar [data-field="phone"],
.table-wecar [data-field="driver_phone"] { min-width: 6.5rem; width: 7rem; }

.table-wecar [data-field="destination_fee"],
.table-wecar [data-field="transport_fee"],
.table-wecar [data-field="fuel_cost"],
.table-wecar [data-field="other_cost"],
.table-wecar [data-field="fee_total"],
.table-wecar [data-field="supply_amount"],
.table-wecar [data-field="violation_amount"],
.table-wecar [data-field="amount"],
.table-wecar [data-field="billed_amount"],
.table-wecar [data-field="profit"],
.table-wecar [data-field="actual_payment"],
.table-wecar [data-field="withholding"],
.table-wecar [data-field="deposit_amount"],
.table-wecar [data-field="shipping_fee_customer"],
.table-wecar [data-field="shipping_fee_ship"],
.table-wecar [data-field="shipping_profit"],
.table-wecar [data-field="liability_insurance"],
.table-wecar [data-field="revenue_transport_fee"],
.table-wecar [data-col="money"],
.table-wecar [data-col="fee"],
.table-wecar [data-col="fuel"],
.table-wecar [data-col="other"],
.table-wecar [data-col="liability"],
.table-wecar [data-col="revenue"],
.table-wecar [data-col="total"] {
  min-width: 5.5rem;
  width: 6.2rem;
}

.table-wecar [data-col="count"] { min-width: 3rem; width: 3.5rem; }

.table-wecar [data-field="departure"],
.table-wecar [data-field="destination"],
.table-wecar [data-field="request_location"],
.table-wecar [data-field="center"],
.table-wecar [data-field="center_name"],
.table-wecar [data-field="ship_company"] { min-width: 5rem; width: 6rem; }

.table-wecar [data-field="bank"] { min-width: 3.5rem; width: 4rem; }
.table-wecar [data-field="account_number"] { min-width: 6.5rem; width: 7.5rem; }

.table-wecar [data-field="business_number"] { min-width: 8.5rem; width: 9rem; }
.table-wecar [data-field="representative"] { min-width: 4.5rem; width: 5rem; }
.table-wecar [data-field="address"] { min-width: 10rem; width: 12rem; white-space: normal !important; word-break: keep-all; }
.table-wecar [data-field="email"] { min-width: 8rem; width: 9rem; }
.table-wecar [data-field="contact"],
.table-wecar [data-field="manager_contact"] { min-width: 6.5rem; width: 7rem; }
.table-wecar [data-field="manager_name"] { min-width: 5rem; width: 5.5rem; }
.table-wecar [data-field="company_name"] { min-width: 7rem; width: 8.5rem; }

.table-wecar [data-field="default_invoice"],
.table-wecar [data-field="default_payment_cycle"],
.table-wecar [data-field="fuel_tax_business"],
.table-wecar [data-field="invoice_issued"],
.table-wecar [data-field="invoice_process"],
.table-wecar [data-field="wecar_process"],
.table-wecar [data-field="bid_complete"],
.table-wecar [data-field="customer_deposit_confirmed"] { min-width: 5rem; width: 6rem; }

.table-wecar [data-field="tax_invoice_issued"],
.table-wecar [data-field="shipping_draft"],
.table-wecar [data-field="transport_draft"],
.table-wecar [data-type="bool"] { min-width: 3.2rem; width: 3.8rem; }

.table-wecar [data-field="notes"],
.table-wecar [data-field="hq_memo"],
.table-wecar [data-field="progress_note"],
.table-wecar [data-field="extra_cost_detail"],
.table-wecar [data-field="detail"],
.table-wecar [data-field="calc_settlement"],
.table-wecar [data-field="customer_info"],
.table-wecar [data-col="company_name"],
.table-wecar [data-col="calc_settlement"],
.table-wecar [data-col="note"] {
  min-width: 7rem;
  max-width: 16rem;
  white-space: normal !important;
  word-break: break-word;
}

.table-wecar [data-col="progress_status"] { min-width: 4.5rem; width: 5rem; }
.table-wecar [data-col="insurance_btn"] { min-width: 6.5rem; width: 7rem; }
.table-wecar [data-col="insurance_alarm"] { min-width: 5.5rem; width: 6rem; }
.table-wecar [data-col="vat_amount"] { min-width: 5.5rem; width: 6.2rem; }
.table-wecar [data-col="detail_link"],
.table-wecar [data-col="settlement_btn"],
.table-wecar [data-col="invoice_btn"] { min-width: 4.5rem; width: 5rem; }
.table-wecar [data-col="tax_invoice"] { min-width: 5rem; width: 5.5rem; }

.table-wecar thead th.col-actions,
.table-wecar td.row-actions {
  min-width: 5.5rem;
  width: 6rem;
  white-space: nowrap !important;
}

.table-wecar [data-field="username"] { min-width: 5.5rem; width: 6rem; }
.table-wecar [data-field="name"] { min-width: 4.5rem; width: 5rem; }
.table-wecar [data-field="role"] { min-width: 4rem; width: 4.5rem; }

/* 고객사관리 — 열별 적정 너비 */
.table-customers thead th {
  overflow: visible;
  text-overflow: clip;
  max-width: none;
}
.table-customers tbody td {
  max-width: 280px;
  white-space: normal;
  word-break: break-word;
  overflow: visible;
  text-overflow: clip;
}
.table-customers [data-field="category"] { min-width: 3.5rem; width: 3.5rem; }
.table-customers [data-field="account_id"] { min-width: 6.5rem; width: 7rem; }
.table-customers [data-field="company_name"] { min-width: 7rem; width: 8rem; }
.table-customers [data-field="business_number"] { min-width: 8.5rem; width: 9rem; }
.table-customers [data-field="representative"] { min-width: 4.5rem; width: 5rem; }
.table-customers [data-field="address"] { min-width: 12rem; width: 14rem; white-space: normal; word-break: keep-all; }
.table-customers [data-field="email"] { min-width: 9rem; width: 10rem; }
.table-customers [data-field="contact"],
.table-customers [data-field="manager_contact"] { min-width: 6.5rem; width: 7rem; }
.table-customers [data-field="manager_name"] { min-width: 5rem; width: 5.5rem; }
.table-customers [data-field="default_invoice"] { min-width: 7rem; width: 8rem; }
.table-customers [data-field="fuel_tax_business"] { min-width: 8rem; width: 9rem; }
.table-customers [data-field="default_payment_cycle"] { min-width: 4.5rem; width: 5rem; }
.table-customers [data-field="fuel_other_cost"],
.table-customers [data-field="liability_insurance"] { min-width: 6rem; width: 6.5rem; }
.table-customers td.row-actions { min-width: 5.5rem; width: 5.5rem; }

.table-fuel-vat [data-field="fuel_cost"] { min-width: 6rem; }
.table-acct-customer .acct-notes-input { min-width: 8rem; }

/* 과태료관리 */
.table-fines thead th,
.table-fines tbody td { overflow: visible; text-overflow: clip; max-width: none; }
.table-fines [data-field="progress_note"],
.table-fines td:nth-child(15) { min-width: 18rem; width: 18rem; white-space: normal; word-break: break-word; }
.table-fines [data-field="customer_info"] { min-width: 7rem; }
.table-fines [data-field="driver_phone"] { min-width: 6.5rem; }
.table-fines .fine-status-btn { min-width: 4.5rem; font-size: var(--font-xs); padding: 0.2rem 0.45rem; pointer-events: none; }
/* 회계처리 — 열별 적정 너비 (legacy) */
.table-accounting thead th {
  overflow: visible;
  text-overflow: clip;
  max-width: none;
}
.table-accounting tbody td {
  max-width: 220px;
  white-space: normal;
  word-break: break-word;
  overflow: visible;
  text-overflow: clip;
}
.table-fuel-vat thead th,
.table-acct-customer thead th {
  overflow: visible;
  text-overflow: clip;
  max-width: none;
}
.table-accounting [data-col="seq"] { min-width: 2.5rem; width: 2.8rem; }
.table-accounting [data-col="category"] { min-width: 3.2rem; width: 3.5rem; }
.table-accounting [data-col="account_id"] { min-width: 6.5rem; width: 7.5rem; }
.table-accounting [data-col="transport_date"] { min-width: 6.5rem; width: 7rem; }
.table-accounting [data-col="transport_type"] { min-width: 4.5rem; width: 5rem; }
.table-accounting [data-col="vehicle_number"] { min-width: 5.5rem; width: 6.5rem; }
.table-accounting [data-col="vehicle_type"] { min-width: 4rem; width: 4.5rem; }
.table-accounting [data-col="driver_name"] { min-width: 4.5rem; width: 5rem; }
.table-accounting [data-col="driver_phone"] { min-width: 6.5rem; width: 7rem; }
.table-accounting [data-col="destination_fee"],
.table-accounting [data-col="fuel_cost"],
.table-accounting [data-col="other_cost"],
.table-accounting [data-col="liability_insurance"],
.table-accounting [data-col="revenue_transport_fee"] { min-width: 5.5rem; width: 6rem; }
.table-accounting [data-col="profit_special"] { min-width: 5rem; width: 5.5rem; }

/* 테이블 열 정렬 — sticky 유지 */
.table-wecar thead th.th-sortable {
  cursor: pointer;
  user-select: none;
  padding-right: 1.65rem !important;
  position: sticky;
  top: 0;
  z-index: 46;
}
.table-wecar thead th.th-sortable:hover {
  background: #334155 !important;
}
.table-wecar thead th.th-sortable .th-label {
  display: inline-block;
  color: #f8fafc !important;
  overflow: visible;
  text-overflow: clip;
  max-width: none;
  vertical-align: middle;
  white-space: nowrap;
  font-weight: 700;
  text-align: center;
}
.table-wecar thead th:not(.th-sortable) {
  white-space: nowrap;
}

/* 긴 제목열 — 줄바꿈 허용 (고객사관리 등) */
.table-customers thead th.th-sortable .th-label,
.table-fuel-vat thead th.th-sortable .th-label,
.table-acct-customer thead th.th-sortable .th-label {
  white-space: normal;
  word-break: keep-all;
  line-height: 1.35;
}
.table-wecar thead th.th-sortable .th-sort-icon {
  position: absolute;
  right: 0.35rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.65rem;
  line-height: 1;
  opacity: 0.45;
  color: #cbd5e1;
}
.table-wecar thead th.th-sortable .th-sort-icon::before {
  content: "▲\A▼";
  white-space: pre;
  text-align: center;
  display: block;
  letter-spacing: 0;
}
.table-wecar thead th.th-sortable.sort-asc .th-sort-icon {
  opacity: 1;
  color: #86efac;
}
.table-wecar thead th.th-sortable.sort-asc .th-sort-icon::before {
  content: "▲";
}
.table-wecar thead th.th-sortable.sort-desc .th-sort-icon {
  opacity: 1;
  color: #86efac;
}
.table-wecar thead th.th-sortable.sort-desc .th-sort-icon::before {
  content: "▼";
}

.table-wecar tbody tr:nth-child(even) { background: #fafbfc; }
.table-wecar tbody tr:hover { background: #f0fdf4; }

.table-wecar input.form-control-sm,
.table-wecar select.form-select-sm,
.table-wecar textarea.form-control-sm {
  min-width: 90px;
  max-width: 100%;
  font-size: var(--font-xs);
  height: var(--ctrl-h-sm);
  text-align: center;
  margin-left: auto;
  margin-right: auto;
  display: block;
}

/* 모달·상세 테이블도 동일 규칙 */
.modal-body .table-wecar thead th,
.modal-body .table-wecar tbody td {
  text-align: center;
  vertical-align: middle;
}

/* ===== Nav tabs ===== */
.nav-tabs {
  border-bottom: 2px solid var(--wecar-border);
  gap: var(--space-1);
  margin-bottom: var(--space-4) !important;
}

.nav-tabs .nav-link {
  font-size: var(--font-sm);
  font-weight: 600;
  color: var(--wecar-slate);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  padding: 0.55rem 1rem;
  border-radius: 8px 8px 0 0;
}

.nav-tabs .nav-link:hover {
  color: var(--wecar-navy);
  background: #f8fafc;
}

.nav-tabs .nav-link.active {
  color: var(--wecar-primary-dark);
  background: var(--wecar-primary-soft);
  border-bottom-color: var(--wecar-primary);
}

/* ===== Forms & modals ===== */
.app-main .form-label,
.modal .form-label {
  font-size: var(--font-xs);
  font-weight: 600;
  color: var(--wecar-slate);
  margin-bottom: var(--space-1);
}

.app-main .form-control,
.app-main .form-select,
.modal .form-control,
.modal .form-select {
  font-size: var(--font-sm);
  border-radius: 8px;
  border-color: #cbd5e1;
  min-height: var(--ctrl-h);
}

.app-main .form-control:focus,
.modal .form-control:focus {
  border-color: var(--wecar-primary);
  box-shadow: 0 0 0 3px var(--wecar-primary-soft);
}

.modal-content {
  border: 1px solid var(--wecar-border);
  border-radius: var(--wecar-radius-lg);
  box-shadow: var(--wecar-shadow-lg);
}

.modal-header {
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--wecar-border);
}

.modal-header .modal-title {
  font-size: 1.05rem;
  font-weight: 700;
}

.modal-body { padding: var(--space-4) var(--space-5); }

.modal-footer {
  padding: var(--space-3) var(--space-5) var(--space-4);
  border-top: 1px solid var(--wecar-border);
  gap: var(--space-2);
}

.modal-footer .btn { min-width: 72px; }

/* ===== Alerts ===== */
.app-content .alert {
  font-size: var(--font-sm);
  border-radius: var(--wecar-radius);
  border: none;
  box-shadow: var(--wecar-shadow);
  margin-bottom: var(--space-4);
}

/* ===== Module tiles ===== */
.module-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
  gap: var(--space-3);
}

.module-tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-5) var(--space-4);
  text-decoration: none;
  text-align: center;
  color: var(--wecar-navy);
  background: var(--wecar-surface);
  border: 1px solid var(--wecar-border);
  border-radius: var(--wecar-radius-lg);
  box-shadow: var(--wecar-shadow);
  transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
  min-height: 118px;
  font-size: var(--font-sm);
  font-weight: 600;
}

.module-tile:hover {
  transform: translateY(-3px);
  box-shadow: var(--wecar-shadow-lg);
  color: var(--wecar-primary-dark);
  border-color: var(--wecar-primary);
}

.module-tile .icon {
  font-size: 1.75rem;
  line-height: 1;
}

/* ===== Dashboard ===== */
.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-3);
  margin-bottom: var(--space-5);
}

.stat-card {
  padding: var(--space-4);
  border-radius: var(--wecar-radius-lg);
  background: var(--wecar-surface);
  border: 1px solid var(--wecar-border);
  box-shadow: var(--wecar-shadow);
}

.stat-card .label { color: var(--wecar-slate); font-size: var(--font-xs); font-weight: 600; }
.stat-card .value { font-size: 1.35rem; font-weight: 700; margin-top: var(--space-1); }

/* ===== Misc ===== */
.text-unmapped { color: #2563eb !important; font-weight: 600; }

.alert-expiry {
  background: #fef2f2;
  color: #dc2626;
  border: 1px solid #fecaca;
  font-weight: 600;
  font-size: var(--font-xs);
  padding: 0.15rem 0.45rem;
  border-radius: 4px;
}

.saved-list { font-size: var(--font-sm); color: var(--wecar-slate); }

.saved-panel {
  padding: var(--space-4);
  margin-top: var(--space-4);
  background: var(--wecar-surface);
  border: 1px solid var(--wecar-border);
  border-radius: var(--wecar-radius);
  box-shadow: var(--wecar-shadow);
}

.saved-panel h6 {
  font-size: var(--font-sm);
  font-weight: 700;
  margin-bottom: var(--space-3);
  color: var(--wecar-navy);
}

.list-group-item { font-size: var(--font-sm); }

/* ===== Login ===== */
.login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(165deg, #f8fafc 0%, #e8eef4 50%, #dfe7f0 100%);
  padding: var(--space-6);
}

.login-box {
  width: 100%;
  max-width: 400px;
  padding: 2.5rem 2rem;
  background: #fff;
  border-radius: var(--wecar-radius-lg);
  box-shadow: var(--wecar-shadow-lg);
  text-align: center;
  border: 1px solid var(--wecar-border);
}

.login-box .logo { max-height: 56px; margin-bottom: var(--space-4); }
.login-box h2 {
  font-size: 1.25rem;
  font-weight: 700;
  margin-bottom: var(--space-5);
  color: var(--wecar-navy);
}

.login-box .form-label {
  font-size: var(--font-sm);
  font-weight: 600;
  color: var(--wecar-slate);
}

.login-box .form-control {
  height: 44px;
  border-radius: 8px;
  font-size: var(--font-base);
}

.login-box .form-control:focus {
  border-color: var(--wecar-primary);
  box-shadow: 0 0 0 3px var(--wecar-primary-soft);
}

.login-box .btn-wecar {
  height: 46px;
  font-size: var(--font-base);
  border-radius: 8px;
  margin-top: var(--space-2);
}

/* ===== Responsive ===== */
@media (max-width: 991.98px) {
  .app-content { padding: var(--space-4); }
  .toolbar-group--export { margin-left: 0; }
  .table-scroll-wrap { max-height: 55vh; }
}

@media (max-width: 575.98px) {
  .toolbar { padding: var(--space-3); }
  .toolbar input[type="file"] { max-width: 100%; }
  .module-tiles { grid-template-columns: repeat(2, 1fr); }
}
