/**
 * Astryx-inspired polish layer (neutral theme)
 * Refines tokens & components without React — className-friendly overrides
 */

:root {
  --ax-radius-sm: 8px;
  --ax-radius-md: 10px;
  --ax-radius-lg: 14px;
  --ax-radius-xl: 18px;
  --ax-border: 1px solid var(--color-neutral-200);
  --ax-border-strong: 1px solid var(--color-neutral-300);
  --ax-surface: var(--color-neutral-0);
  --ax-surface-muted: #f7f7f8;
  --ax-surface-raised: #ffffff;
  --ax-focus-ring: 0 0 0 3px rgba(13, 99, 175, 0.18);
  --ax-transition: 0.14s ease;

  --radius-sm: var(--ax-radius-sm);
  --radius-md: var(--ax-radius-md);
  --radius-lg: var(--ax-radius-lg);
  --radius-xl: var(--ax-radius-xl);
  --shadow-sm: 0 1px 2px rgba(26, 26, 46, 0.04), 0 1px 3px rgba(26, 26, 46, 0.06);
  --shadow-md: 0 4px 12px rgba(26, 26, 46, 0.06), 0 2px 4px rgba(26, 26, 46, 0.04);
  --shadow-lg: 0 12px 32px rgba(26, 26, 46, 0.08);
  --transition: var(--ax-transition);
}

@keyframes axPageIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes axFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes axSlideUp {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes axScaleIn {
  from { opacity: 0; transform: scale(0.96); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes axShimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

body {
  background: var(--ax-surface-muted);
  background-image:
    radial-gradient(ellipse 80% 50% at 50% -20%, rgba(13, 99, 175, 0.06), transparent),
    radial-gradient(ellipse 60% 40% at 100% 0%, rgba(13, 99, 175, 0.04), transparent);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "kern" 1, "liga" 1;
}

/* 英文/数字优先 Plus Jakarta Sans，中文自动回退思源黑体 */
.app-header .logo,
.btn,
.badge,
.chip,
.period-tab,
.filter-tab,
.settings-tab,
.reg-no-box span,
.num,
.stat-value,
.stat-card .value,
.table th,
.stepper-step .dot,
input,
.select,
textarea,
.query-row input,
.home-stat .num,
.home-eyebrow,
[id*="Count"],
[id*="Total"],
[id*="Amount"],
[id*="Fee"],
[id*="Price"] {
  font-family: var(--font-latin), var(--font-cjk);
  font-variant-numeric: tabular-nums;
}

h1, h2, h3, .card-title {
  font-family: var(--font-latin), var(--font-cjk);
  letter-spacing: -0.02em;
}

/* 去掉整页入场动画，内容直接呈现 */

/* Header */
.app-header {
  backdrop-filter: saturate(180%) blur(12px);
  background: rgba(255, 255, 255, 0.92);
  border-bottom: var(--ax-border);
  box-shadow: none;
}

.app-header nav a {
  font-weight: 500;
  border-radius: var(--ax-radius-md);
  position: relative;
  transition: background var(--ax-transition), color var(--ax-transition);
}

.app-header nav a.active {
  font-weight: 600;
}

.app-header .logo:hover {
  text-decoration: none;
}

/* Cards */
.card {
  border: var(--ax-border);
  border-radius: var(--ax-radius-lg);
  box-shadow: var(--shadow-sm);
  background: var(--ax-surface-raised);
}

.card-title {
  letter-spacing: -0.02em;
}

/* Buttons — Astryx 质感（高度阶梯在 app.css） */
.btn {
  border-radius: var(--ax-radius-md);
  font-weight: 600;
  letter-spacing: 0.01em;
  transition: background var(--ax-transition), color var(--ax-transition), box-shadow var(--ax-transition), border-color var(--ax-transition);
}

.btn:focus-visible {
  outline: none;
  box-shadow: var(--ax-focus-ring);
}

.btn-primary {
  box-shadow: 0 1px 2px rgba(13, 99, 175, 0.18);
}

.btn-primary:hover:not(:disabled) {
  box-shadow: 0 4px 12px rgba(13, 99, 175, 0.22);
}

.btn-secondary {
  background: var(--ax-surface);
  border-color: var(--color-neutral-300);
  color: var(--color-neutral-800);
}

.btn-secondary:hover:not(:disabled) {
  background: var(--color-neutral-50);
  border-color: var(--color-neutral-300);
}

.btn-ghost {
  border-color: transparent;
  color: var(--color-primary-600);
}

.btn-ghost:hover:not(:disabled) {
  background: var(--color-primary-50);
  color: var(--color-primary-700);
  border-color: transparent;
}

/* 工具栏内按钮与筛选控件垂直对齐 */
.page-toolbar .btn,
.filter-actions .btn,
.bulk-bar .btn,
.fee-sheet-toolbar .btn,
.section-header .btn {
  flex-shrink: 0;
}

/* 表格内操作钮：防止被挤扁裁字 */
.table .btn-sm,
.cell-actions .btn,
.actions .btn {
  min-height: 32px;
  max-height: 32px;
}

/* Inputs */
.input, textarea.input {
  border-radius: var(--ax-radius-md);
  border: var(--ax-border-strong);
  background: var(--ax-surface);
  transition: border-color var(--ax-transition), box-shadow var(--ax-transition);
}

.input:hover, textarea.input:hover {
  border-color: var(--color-neutral-300);
}

.input:focus, textarea.input:focus {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: var(--ax-focus-ring);
}

/* Select — unified closed state & chevron */
:root {
  --ax-select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
}

.select {
  border-radius: var(--ax-radius-md);
  border: var(--ax-border-strong);
  transition: border-color var(--ax-transition), box-shadow var(--ax-transition), background-color var(--ax-transition);
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  min-height: 40px;
  padding-right: 40px;
  cursor: pointer;
  color-scheme: light;
  background-color: var(--ax-surface);
  background-image: var(--ax-select-chevron);
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 16px;
}

.select:hover {
  border-color: var(--color-neutral-300);
  background-color: var(--color-neutral-0);
  background-image: var(--ax-select-chevron);
}

.select:focus {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: var(--ax-focus-ring);
  background-image: var(--ax-select-chevron);
}

.select:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  background-color: var(--color-neutral-100);
  background-image: var(--ax-select-chevron);
}

.select option {
  color: var(--color-neutral-800);
  background: var(--color-neutral-0);
  padding: 8px 12px;
}

/* Admin segmented tabs — unify filter / settings with period tabs */
.admin-panel .filter-tabs,
.admin-panel .settings-tabs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 4px;
  background: var(--color-neutral-100);
  border-radius: var(--radius-full);
}

.admin-panel .filter-tab,
.admin-panel .settings-tab {
  padding: 8px 16px;
  min-height: 40px;
  border: none;
  border-radius: var(--radius-full);
  background: transparent;
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-neutral-600);
  cursor: pointer;
  transition: background var(--ax-transition), color var(--ax-transition), box-shadow var(--ax-transition);
  white-space: nowrap;
}

.admin-panel .filter-tab:hover,
.admin-panel .settings-tab:hover {
  color: var(--color-primary-600);
}

.admin-panel .filter-tab.active,
.admin-panel .settings-tab.active {
  background: var(--color-neutral-0);
  color: var(--color-primary-700);
  font-weight: 600;
  box-shadow: var(--shadow-sm);
}

/* Chips & option cards */
.chip, .option-card, .meeting-card {
  border-radius: var(--ax-radius-md);
  transition: border-color var(--ax-transition), background var(--ax-transition), box-shadow var(--ax-transition);
}

.option-card:hover, .meeting-card:hover {
  border-color: var(--color-primary-300);
  box-shadow: var(--shadow-sm);
}

.option-card.selected, .meeting-card.selected {
  border-color: var(--color-primary-500);
  background: var(--color-primary-50);
  box-shadow: var(--ax-focus-ring);
}

.chip.selected {
  background: var(--color-primary-600);
  border-color: var(--color-primary-600);
}

/* Stepper */
.stepper-bar {
  border-radius: var(--ax-radius-lg);
  background: var(--ax-surface);
  border: var(--ax-border);
  padding: var(--space-md);
}

.stepper-step .dot {
  transition: background var(--ax-transition), border-color var(--ax-transition), box-shadow var(--ax-transition);
}

.stepper-step.active .dot {
  transform: none;
}

/* Tables */
.table th {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-neutral-500);
  background: var(--ax-surface-muted);
}

.table tbody tr {
  transition: background var(--ax-transition);
}

.table tbody tr:hover {
  background: var(--color-primary-50);
}

/* Admin */
.admin-sidebar {
  border-right: var(--ax-border);
  background: var(--ax-surface-raised);
}

.admin-nav button {
  border-radius: var(--ax-radius-md);
  font-weight: 500;
  position: relative;
  transition: background var(--ax-transition), color var(--ax-transition), padding-left var(--ax-transition);
}

.admin-nav button:hover {
  background: var(--color-neutral-100);
}

.admin-nav button.active {
  font-weight: 600;
  background: var(--color-primary-50);
  color: var(--color-primary-700);
}

.admin-nav button.active::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 60%;
  border-radius: 0 3px 3px 0;
  background: var(--color-primary-500);
  transition: opacity 0.2s ease;
}

.admin-shell.sidebar-collapsed .admin-nav button.active::before {
  opacity: 0;
}

.modal-dialog {
  border: var(--ax-border);
}

.modal-overlay {
  backdrop-filter: blur(6px) saturate(120%);
}

.drawer-tab {
  border-radius: var(--ax-radius-md) var(--ax-radius-md) 0 0;
}

.modal-toolbar .drawer-tabs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 0;
  padding: 4px;
  border-bottom: none;
  background: var(--color-neutral-100);
  border-radius: var(--radius-full);
}

.modal-toolbar .drawer-tab {
  padding: 8px 16px;
  min-height: 40px;
  margin-bottom: 0;
  border: none;
  border-radius: var(--radius-full);
  border-bottom: none !important;
  background: transparent;
  font-weight: 500;
  color: var(--color-neutral-600);
}

.modal-toolbar .drawer-tab:hover {
  color: var(--color-primary-600);
}

.modal-toolbar .drawer-tab.active {
  background: var(--color-neutral-0);
  color: var(--color-primary-700);
  font-weight: 600;
  box-shadow: var(--shadow-sm);
}

.modal-footer {
  box-shadow: 0 -4px 12px rgba(26, 26, 46, 0.04);
}

.period-tab, .filter-tab, .settings-tab {
  border-radius: var(--ax-radius-md);
  font-weight: 500;
}

.period-tab.active, .filter-tab.active, .settings-tab.active {
  font-weight: 600;
}

/* Callouts */
.callout {
  border-radius: var(--ax-radius-md);
  padding: var(--space-md) var(--space-lg);
  font-size: 14px;
  line-height: 1.65;
  margin: var(--space-md) 0;
}

.callout-info {
  background: var(--color-primary-50);
  border: 1px solid var(--color-primary-100);
  color: var(--color-primary-900);
}

.pdf-notice {
  text-align: left;
  max-width: 520px;
  margin-left: auto;
  margin-right: auto;
}

/* Success hero */
.success-hero {
  text-align: center;
}

.success-hero .icon {
  width: 64px;
  height: 64px;
  margin: 0 auto var(--space-md);
  border-radius: var(--ax-radius-full);
  background: var(--color-success-100);
  color: var(--color-success-600);
  display: flex;
  align-items: center;
  justify-content: center;
}

.reg-no-box {
  border-radius: var(--ax-radius-md);
  border: var(--ax-border-strong);
  background: var(--ax-surface-muted);
}

/* Toast */
.eform-toast {
  border-radius: var(--ax-radius-md);
  box-shadow: var(--shadow-lg);
  border: var(--ax-border);
}

/* Upload zone */
.upload-zone {
  border-radius: var(--ax-radius-lg);
  border: 2px dashed var(--color-neutral-300);
  transition: border-color var(--ax-transition), background var(--ax-transition);
}

.upload-zone:hover, .upload-zone.dragover {
  border-color: var(--color-primary-400);
  background: var(--color-primary-50);
}

/* Login */
.login-overlay {
  backdrop-filter: blur(8px) saturate(120%);
  background: rgba(26, 26, 46, 0.35);
}

.login-card {
  border-radius: var(--ax-radius-xl);
  box-shadow: 0 20px 50px rgba(26, 26, 46, 0.12), 0 8px 20px rgba(13, 99, 175, 0.08);
  border: var(--ax-border);
  background: var(--ax-surface-raised);
}

.login-card h2 {
  background: linear-gradient(135deg, var(--color-neutral-900), var(--color-primary-700));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.login-card .btn-primary {
  width: 100%;
}

/* 后台顶栏标识 */
.app-header .nav-admin-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-primary-700);
  letter-spacing: -0.01em;
}

/* Home remnants */
.flow-step {
  border-radius: var(--ax-radius-lg);
}

/* Badge */
.badge {
  border-radius: var(--ax-radius-sm);
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Stepper progress：仅宽度过渡，无位移入场 */
.stepper-progress-fill {
  transition: width 0.25s ease;
}

/* Stats & dashboard：无悬停位移 / 无交错入场 */
.stat-card {
  transition: border-color var(--ax-transition), box-shadow var(--ax-transition);
}

.stat-card:hover {
  border-color: var(--color-primary-100);
  box-shadow: var(--shadow-sm);
}

/* Dashboard — Console archetype (Astryx) */
.ax-dashboard .card:hover,
.ax-dashboard .stat-card:hover {
  transform: none;
  box-shadow: var(--shadow-sm);
}

.ax-dash-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-xl);
  gap: var(--space-lg);
  flex-wrap: wrap;
}

.ax-dash-header-main .card-title {
  margin-bottom: 4px;
}

.ax-dash-header-main .card-desc {
  margin: 0;
  font-size: 13px;
  color: var(--color-neutral-500);
}

.ax-dash-header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  flex-shrink: 0;
}

.ax-dash-section {
  margin-bottom: var(--space-xl);
}

.ax-dash-section .card.card-pad {
  padding: var(--space-lg);
}

.ax-dash-section:last-child {
  margin-bottom: 0;
}

/* —— Metric strip：全站统一（仪表盘 / 注册 / 发票）
   层级参考 Astryx Console + Impeccable typeset：
   标签先于数值、字号阶梯清晰、颜色按角色分配 —— */
.ax-metrics-strip {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-md);
  margin-bottom: var(--space-xl);
}

.ax-metrics-strip.ax-metrics-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ax-metrics-strip.ax-metrics-cols-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ax-metrics-strip.ax-metrics-cols-5 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.ax-metrics-hero {
  margin-bottom: 0;
}

.ax-metrics-sub {
  margin-top: var(--space-sm);
  margin-bottom: var(--space-xl);
}

/* 指标卡本体：左对齐、标签→数值竖向层级 */
.ax-metric-num {
  padding: var(--space-md) var(--space-lg);
  text-align: left;
  background: var(--ax-surface-raised);
  min-height: 92px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  border-radius: var(--ax-radius-lg);
}

/* Label：小号大写、弱色，建立上下文（Impeccable hierarchy） */
.ax-metric-num .label {
  margin: 0;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: 0.04em;
  color: var(--color-neutral-500);
  order: -1; /* 即使 DOM 为 value 在前，视觉上标签在上 */
}

/* Value：tabular 数字、紧字距、主色阶 */
.ax-metric-num .value {
  margin: 0;
  font-size: 28px;
  font-weight: 800;
  line-height: 1.12;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
  color: var(--color-neutral-800);
}

.ax-metric-num .value-sm {
  font-size: 20px;
  letter-spacing: -0.02em;
}

/* Hero：核心指标，字号更大 + 主色强调 */
.ax-metric-hero {
  border-color: var(--color-primary-100);
  background: var(--ax-surface-raised);
  min-height: 100px;
  padding: var(--space-lg);
}

.ax-metric-hero .value {
  font-size: 32px;
  font-weight: 800;
  color: var(--color-primary-600);
}

.ax-metric-hero.stat-accent {
  border-color: var(--color-primary-100);
  background: linear-gradient(180deg, rgba(13, 99, 175, 0.045) 0%, var(--ax-surface-raised) 78%);
}

.ax-metric-hero.stat-accent .value {
  color: var(--color-primary-700);
}

.ax-metric-hero .value-sm {
  font-size: 22px;
}

.ax-metric-hero .label {
  font-size: 11px;
  color: var(--color-neutral-600);
}

/* Sub：次级指标，字号收敛 + 中性底 */
.ax-metric-sub {
  padding: var(--space-md) var(--space-lg);
  background: var(--ax-surface-muted);
  border-color: var(--color-neutral-200);
  min-height: 84px;
}

.ax-metric-sub .value {
  font-size: 22px;
  font-weight: 700;
  color: var(--color-neutral-800);
}

.ax-metric-sub .value-sm {
  font-size: 16px;
}

.ax-metric-sub .label {
  font-size: 11px;
  font-weight: 600;
  color: var(--color-neutral-500);
}

/* 告警态：待处理/需关注 */
.ax-metric-num.stat-warn {
  border-color: var(--color-warning-100);
  background: var(--color-warning-100);
}

.ax-metric-num.stat-warn .value {
  color: var(--color-warning-600);
}

.ax-metric-num.stat-warn .label {
  color: var(--color-warning-600);
}

/* 金额：略压字号，保持可读 */
.ax-metric-num.stat-money .value {
  font-size: 22px;
  letter-spacing: -0.02em;
}

.ax-metric-hero.stat-money .value {
  font-size: 24px;
}

/* 成功/完成态（已开票、已录用等） */
.ax-metric-num.stat-success .value {
  color: var(--color-success-600);
}

@media (max-width: 1200px) {
  .ax-metrics-strip.ax-metrics-cols-5 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 1024px) {
  .ax-metrics-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ax-metrics-strip.ax-metrics-cols-3,
  .ax-metrics-strip.ax-metrics-cols-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ax-metric-hero .value {
    font-size: 28px;
  }

  .ax-metric-num .value {
    font-size: 24px;
  }
}

@media (max-width: 900px) {
  .ax-metrics-strip.ax-metrics-cols-5 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ax-metrics-strip.ax-metrics-cols-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .ax-metrics-strip,
  .ax-metrics-strip.ax-metrics-cols-3,
  .ax-metrics-strip.ax-metrics-cols-5 {
    grid-template-columns: 1fr 1fr;
  }

  .ax-metric-num {
    min-height: 80px;
    padding: var(--space-md);
  }

  .ax-metric-hero .value {
    font-size: 26px;
  }
}

.meeting-title-zh {
  color: var(--color-neutral-700);
  line-height: 1.45;
}

.meeting-code {
  font-family: var(--font-latin), var(--font-cjk);
  letter-spacing: 0.03em;
}

.ax-dash-row-2 {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(280px, 1fr);
  gap: var(--space-lg);
  align-items: start;
}

.ax-dashboard .ax-chart-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-md);
}

.ax-dashboard .ax-chart-panel {
  padding: var(--space-lg);
  min-height: 0;
}

.ax-dashboard .ax-chart-panel h4 {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-neutral-500);
  margin: 0 0 var(--space-md);
}

.ax-dashboard .ax-chart-canvas {
  position: relative;
  min-height: 180px;
}

.ax-dash-section-meetings .meeting-overview {
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: var(--space-md);
}

.ax-dashboard .ax-panel-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: var(--space-md);
  margin-bottom: var(--space-md);
  border-bottom: var(--ax-border);
}

.ax-dashboard .ax-panel-header h3 {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-neutral-600);
  margin: 0;
}

.ax-dash-section-activity .table-compact th {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-neutral-500);
  font-weight: 600;
  border-bottom: var(--ax-border);
}

.ax-dashboard .todo-item {
  padding: 10px 0;
  font-size: 13px;
}

.ax-dash-section-meetings .meeting-overview-card {
  padding: var(--space-md);
  border-radius: var(--ax-radius-md);
}

@media (max-width: 1280px) {
  .ax-dashboard .ax-chart-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ax-dashboard .ax-chart-grid .ax-chart-panel:last-child {
    grid-column: 1 / -1;
  }
}

@media (max-width: 1024px) {
  .ax-dash-row-2 {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .ax-dash-header {
    align-items: flex-start;
  }

  .ax-dash-header-actions {
    flex-direction: column;
    align-items: flex-start;
    width: 100%;
  }

  .ax-dashboard .ax-chart-grid {
    grid-template-columns: 1fr;
  }
}

/* Toast：保留轻微出现即可，避免大幅位移 */
.eform-toast {
  animation: axFadeIn 0.18s ease both;
}

.flow-step.active {
  box-shadow: var(--shadow-sm);
  border-color: var(--color-primary-200);
}

/* Focus polish */
.form-group:focus-within .form-label {
  color: var(--color-primary-600);
  transition: color var(--ax-transition);
}

/* ========== Admin shell polish（简约高级） ========== */

/* 主内容区：呼吸感 */
.admin-main {
  padding: var(--space-xl) var(--space-xl) var(--space-2xl);
  min-width: 0;
}

.admin-panel .card.card-pad {
  padding: var(--space-lg);
}

/* 批量操作条 */
.bulk-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-sm) var(--space-md);
  padding: 10px 14px;
  margin-bottom: var(--space-md);
  background: var(--color-primary-50);
  border: 1px solid var(--color-primary-100);
  border-radius: var(--ax-radius-md);
  font-size: 13px;
  color: var(--color-neutral-700);
}

.bulk-bar strong {
  font-variant-numeric: tabular-nums;
  color: var(--color-primary-700);
}

/* 空状态（块级 / 表格单元格） */
.attach-empty {
  text-align: center;
  padding: var(--space-xl) var(--space-md);
  background: var(--ax-surface-muted);
  border: 1px dashed var(--color-neutral-200);
  border-radius: var(--ax-radius-md);
  color: var(--color-neutral-500);
  font-size: 13px;
  line-height: 1.5;
}

td.attach-empty,
.table-empty td,
td.table-empty-cell {
  text-align: center;
  padding: 40px 20px !important;
  background: transparent !important;
  border-bottom: none !important;
  color: var(--color-neutral-500);
  font-size: 13px;
  overflow: visible !important;
}

/* 待办行：按钮不溢出 */
.todo-item {
  gap: var(--space-md);
  min-height: 44px;
}

.todo-item > span {
  flex: 1;
  min-width: 0;
  line-height: 1.45;
  color: var(--color-neutral-700);
}

.todo-item .btn {
  flex-shrink: 0;
}

/* 会议概览卡脚注对齐 */
.meeting-overview-card .top .badge {
  flex-shrink: 0;
}

.meeting-overview-card .meeting-title-zh {
  font-size: 13px;
  font-weight: 600;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* 筛选栏：控件等高 */
.filter-bar .input,
.filter-bar .select,
.filter-bar .btn {
  min-height: 40px;
}

.filter-bar .btn-sm {
  min-height: 32px;
}

.filter-row-secondary .input,
.filter-row-secondary .select {
  font-size: 13px;
}

/* 设置 / 用户子 Tab 间距 */
.admin-panel .settings-tabs {
  margin-bottom: var(--space-lg);
}

/* Modal 底栏按钮统一默认尺寸，避免混用高低 */
.modal-footer .btn {
  min-height: 40px;
}

.modal-footer .btn-sm {
  min-height: 32px;
}

/* 侧栏导航：触控高度一致 */
.admin-nav button,
.admin-nav .sidebar-collapse-btn {
  min-height: 40px;
}

/* 表单 label 层级 */
.admin-panel .form-label,
.modal-body .form-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-neutral-700);
  margin-bottom: 6px;
}

.admin-panel .form-hint,
.modal-body .form-hint {
  font-size: 12px;
  color: var(--color-neutral-500);
  line-height: 1.45;
}

/* 价格表 / 侧边栏卡片头 */
.fee-sheet-card,
.ad-edit-row {
  border-radius: var(--ax-radius-md);
  border-color: var(--color-neutral-200);
  transition: border-color var(--ax-transition), box-shadow var(--ax-transition);
}

.fee-sheet-card:hover,
.ad-edit-row:hover {
  border-color: var(--color-neutral-300);
}

.fee-sheet-card-default {
  border-color: var(--color-primary-100);
  box-shadow: 0 0 0 1px rgba(13, 99, 175, 0.06);
}

/* 日志 / 设置卡片标题 */
.admin-panel .card > h3,
.admin-panel .card-pad > h3:first-child {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-neutral-800);
  letter-spacing: -0.01em;
}

.settings-save-btn {
  margin-top: var(--space-md);
}

/* 输入框与按钮在同一行时对齐 */
.inline-field-row,
.ad-img-actions,
.fee-override-actions,
.confirm-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-sm);
}

/* 仅操作列可见溢出（按钮），勿作用到整表 td，否则长文案会叠字 */
#panel-registrations .table td.cell-actions,
#panel-invoices .table td.cell-actions,
#panel-meetings .table td.actions,
#panel-users .table td.actions,
#panel-promos .table td.cell-actions,
#panel-promos .table td:last-child {
  overflow: visible;
}

/* 小屏分页按钮不塌陷 */
@media (max-width: 640px) {
  .list-pagination-actions .btn {
    min-width: 72px;
  }

  .page-toolbar {
    align-items: stretch;
  }

  .page-toolbar > .btn {
    align-self: stretch;
    width: 100%;
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition-duration: 0.01ms !important;
  }
}