/* ============================================================
   霖川网络卡密验证平台 - 界面精修层（custom.css）
   只做增量增强：微交互 / 状态徽章配色 / 表格 / 表单 / 滚动条
   所有颜色均引用既有 HSL 变量，明暗主题自动适配
   ============================================================ */

:root {
  --lc-success: 152 56% 36%;
  --lc-success-soft: 152 52% 94%;
  --lc-warning: 35 90% 42%;
  --lc-warning-soft: 38 92% 94%;
  --lc-info: 221 73% 55%;
  --lc-info-soft: 221 70% 94%;
  --lc-neutral-soft: 220 18% 93%;
  --lc-neutral-ink: 220 12% 38%;
}
.dark {
  --lc-success: 152 48% 56%;
  --lc-success-soft: 152 40% 20%;
  --lc-warning: 38 88% 62%;
  --lc-warning-soft: 38 42% 22%;
  --lc-info: 217 82% 68%;
  --lc-info-soft: 221 45% 24%;
  --lc-neutral-soft: 221 26% 22%;
  --lc-neutral-ink: 220 16% 68%;
}

/* ---------- 基础排版 ---------- */
html { -webkit-text-size-adjust: 100%; }
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: "tnum" 0;
}
::selection {
  background: hsl(var(--primary) / 0.22);
}

/* ---------- 状态徽章精准配色（data-status 由 t7 组件输出） ---------- */
.status-badge {
  border: 1px solid transparent;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.status-badge[data-status="active"],
.status-badge[data-status="published"],
.status-badge[data-status="open"] {
  background: hsl(var(--lc-success-soft)) !important;
  color: hsl(var(--lc-success)) !important;
  border-color: hsl(var(--lc-success) / 0.25);
}
.status-badge[data-status="in_progress"] {
  background: hsl(var(--lc-info-soft)) !important;
  color: hsl(var(--lc-info)) !important;
  border-color: hsl(var(--lc-info) / 0.28);
}
.status-badge[data-status="pending"] {
  background: hsl(var(--lc-warning-soft)) !important;
  color: hsl(var(--lc-warning)) !important;
  border-color: hsl(var(--lc-warning) / 0.3);
}
.status-badge[data-status="inactive"],
.status-badge[data-status="draft"] {
  background: hsl(var(--lc-neutral-soft)) !important;
  color: hsl(var(--lc-neutral-ink)) !important;
}
.status-badge[data-status="frozen"] {
  background: hsl(var(--lc-warning-soft)) !important;
  color: hsl(var(--lc-warning)) !important;
  border-color: hsl(var(--lc-warning) / 0.3);
}
.status-badge[data-status="expired"],
.status-badge[data-status="withdrawn"],
.status-badge[data-status="resolved"],
.status-badge[data-status="closed"],
.status-badge[data-status="rejected"] {
  background: hsl(var(--lc-neutral-soft)) !important;
  color: hsl(var(--lc-neutral-ink)) !important;
  text-decoration: line-through;
  text-decoration-thickness: 1px;
}
.status-badge[data-status="revoked"],
.status-badge[data-status="critical"],
.status-badge[data-status="blocked"] {
  background: hsl(var(--destructive) / 0.12) !important;
  color: hsl(var(--destructive)) !important;
  border-color: hsl(var(--destructive) / 0.3);
}
.status-badge[data-status="warning"],
.status-badge[data-status="high"] {
  background: hsl(var(--lc-warning-soft)) !important;
  color: hsl(var(--lc-warning)) !important;
  border-color: hsl(var(--lc-warning) / 0.3);
}
.status-badge[data-status="info"],
.status-badge[data-status="medium"] {
  background: hsl(var(--lc-info-soft)) !important;
  color: hsl(var(--lc-info)) !important;
  border-color: hsl(var(--lc-info) / 0.28);
}

/* ---------- 卡片 ---------- */
.bg-card.rounded-xl {
  transition: box-shadow .25s ease, transform .25s ease, border-color .25s ease;
}
.bg-card.rounded-xl:hover {
  box-shadow: var(--shadow-hover, 0 20px 56px -14px hsl(221 60% 40% / .22));
}

/* ---------- 按钮 ---------- */
button,
[role="button"] {
  transition: transform .12s ease, box-shadow .2s ease, background-color .2s ease,
              border-color .2s ease, color .2s ease, opacity .2s ease;
}
button:not(:disabled):active,
[role="button"]:not(:disabled):active {
  transform: scale(.975);
}
button:focus-visible,
[role="button"]:focus-visible,
a:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px hsl(var(--background)), 0 0 0 4px hsl(var(--ring) / .65);
}
/* 主按钮渐变质感 */
.bg-primary.text-primary-foreground {
  background-image: var(--gradient-primary);
  box-shadow: 0 6px 18px -8px hsl(var(--primary) / .55);
}
.bg-primary.text-primary-foreground:hover {
  filter: brightness(1.05);
  box-shadow: 0 10px 24px -8px hsl(var(--primary) / .6);
}

/* ---------- 表单 ---------- */
input, select, textarea {
  transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: none;
  border-color: hsl(var(--ring) / .7) !important;
  box-shadow: 0 0 0 3px hsl(var(--ring) / .18);
}

/* ---------- 表格 ---------- */
table thead th {
  font-size: 12px;
  letter-spacing: .02em;
  text-transform: none;
  background: hsl(var(--muted) / .55);
}
table tbody tr {
  transition: background-color .18s ease;
}
table tbody tr:hover {
  background: hsl(var(--accent) / .45);
}

/* ---------- 侧边栏导航 ---------- */
[class*="sidebar"] a, nav a {
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}

/* ---------- 滚动条 ---------- */
* {
  scrollbar-width: thin;
  scrollbar-color: hsl(var(--muted-foreground) / .35) transparent;
}
*::-webkit-scrollbar { width: 9px; height: 9px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  background: hsl(var(--muted-foreground) / .3);
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: content-box;
}
*::-webkit-scrollbar-thumb:hover {
  background: hsl(var(--muted-foreground) / .5);
  background-clip: content-box;
}

/* ---------- 卡密码等宽数字 ---------- */
.font-mono {
  font-variant-ligatures: none;
  letter-spacing: .02em;
}

/* ---------- 弹窗/抽屉细节 ---------- */
[role="dialog"] {
  box-shadow: 0 32px 90px -24px hsl(221 60% 10% / .45);
}
/* 修复 Radix Dialog 关闭后残留可见的问题 */
[role="dialog"][data-state="closed"],
[data-state="closed"][class*="bg-black/80"] {
  display: none !important;
}

/* ---------- 响应式微调 ---------- */
@media (max-width: 640px) {
  .bg-card.rounded-xl:hover { transform: none; box-shadow: var(--shadow-card); }
  table { font-size: 13px; }
  button:active { transform: scale(.98); }
}

/* ---------- 减少动画偏好 ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
