/* 数字食安官 - 网页工具样式 (移动端优先) */
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; background:#f5f5f5; color:#333; font-size:15px; line-height:1.6; -webkit-text-size-adjust:100%; }
.app { max-width:480px; margin:0 auto; min-height:100vh; display:flex; flex-direction:column; }

/* 头部 */
.header { background: linear-gradient(135deg, #1a5276, #2e86c1); color:#fff; padding:24px 16px 16px; text-align:center; }
.header h1 { font-size:20px; font-weight:700; }
.header .subtitle { font-size:13px; opacity:0.85; margin-top:4px; }

/* 主体 */
.main { flex:1; padding:16px; }

/* 底部 */
.footer { padding:12px 16px; text-align:center; font-size:12px; color:#999; border-top:1px solid #e0e0e0; background:#fff; }
.footer a { color:#2e86c1; text-decoration:none; }
.footer .sep { margin:0 8px; color:#ddd; }

/* 工具网格 */
.tool-grid { display:block; }
.tool-card { display:flex; align-items:center; padding:14px 16px; margin-bottom:10px; background:#fff; border-radius:10px; text-decoration:none; color:#333; box-shadow:0 1px 3px rgba(0,0,0,0.08); }
.tool-card:active { background:#f0f7ff; }
.tool-icon { font-size:28px; margin-right:12px; }
.tool-name { font-size:16px; font-weight:600; flex:1; }
.tool-desc { font-size:12px; color:#999; }

/* 表单 */
.tool-form { background:#fff; border-radius:10px; padding:16px; margin-bottom:16px; box-shadow:0 1px 3px rgba(0,0,0,0.08); }
.tool-form h3 { font-size:16px; margin-bottom:12px; color:#1a5276; border-bottom:2px solid #2e86c1; padding-bottom:6px; }
.form-group { margin-bottom:12px; }
.form-group label { display:block; font-size:13px; color:#666; margin-bottom:4px; font-weight:600; }
.form-group input, .form-group select { width:100%; padding:10px 12px; border:1px solid #ddd; border-radius:6px; font-size:15px; background:#fff; -webkit-appearance:none; }
.form-group input:focus, .form-group select:focus { border-color:#2e86c1; outline:none; }
.form-row { display:flex; gap:10px; }
.form-row .form-group { flex:1; }

.hint { font-size:12px; color:#999; margin-bottom:12px; padding:8px; background:#f9f9f9; border-radius:6px; }

.check-item { display:flex; align-items:flex-start; justify-content:space-between; padding:10px 0; border-bottom:1px solid #f0f0f0; }
.check-item > div:first-child { flex:1; padding-right:10px; min-width:0; }
.check-label { font-size:14px; font-weight:600; }
.check-standard { font-size:12px; color:#888; margin-top:3px; line-height:1.5; }
.check-item select { width:110px; padding:6px 8px; border:1px solid #ddd; border-radius:4px; font-size:13px; flex-shrink:0; margin-top:4px; }

/* 按钮 */
.btn { display:block; width:100%; padding:14px; border:none; border-radius:8px; font-size:16px; font-weight:600; cursor:pointer; text-align:center; text-decoration:none; margin-top:12px; }
.btn-primary { background:#2e86c1; color:#fff; }
.btn-primary:active { background:#1a5276; }
.btn-danger { background:#e74c3c; }
.btn-danger:active { background:#c0392b; }

/* 结果卡片 */
.result-card { padding:16px; border-radius:10px; margin-bottom:16px; color:#fff; }
.result-card.grade-a { background:linear-gradient(135deg, #27ae60, #2ecc71); }
.result-card.grade-b { background:linear-gradient(135deg, #2980b9, #3498db); }
.result-card.grade-c { background:linear-gradient(135deg, #f39c12, #f1c40f); }
.result-card.grade-d { background:linear-gradient(135deg, #c0392b, #e74c3c); }

.result-header { margin-bottom:12px; }
.result-label { font-size:18px; font-weight:700; }
.result-inspector, .result-info { font-size:12px; opacity:0.85; margin-left:8px; }

.result-grade { text-align:center; padding:8px 0; }
.grade-badge { font-size:32px; font-weight:800; }
.grade-decision { font-size:16px; margin-top:4px; }
.grade-score { font-size:14px; opacity:0.85; }

.stat-row { display:flex; justify-content:center; gap:16px; padding:8px 0; }
.stat { font-size:16px; }

.red-flags { background:rgba(255,255,255,0.15); padding:10px; border-radius:6px; margin:8px 0; font-size:13px; }
.red-flags ul { margin:4px 0 0 16px; }

.score-detail { margin:8px 0; }
.score-bar { display:flex; align-items:center; margin:6px 0; font-size:13px; }
.score-label { width:90px; flex-shrink:0; }
.score-value { width:50px; text-align:right; margin-right:8px; flex-shrink:0; }
.bar-bg { flex:1; height:8px; background:rgba(255,255,255,0.3); border-radius:4px; overflow:hidden; }
.bar-fill { height:100%; border-radius:4px; }

.recommendations, .reference { margin:8px 0; font-size:13px; }
.recommendations ul, .reference ul { margin:4px 0 0 16px; }
.ref-tag { display:inline-block; background:rgba(255,255,255,0.2); padding:2px 8px; border-radius:4px; margin:2px 4px; font-size:12px; }

.deadline { text-align:center; font-size:14px; padding:8px; }

.info-table { width:100%; border-collapse:collapse; margin:8px 0; font-size:13px; }
.info-table td { padding:6px 8px; border-bottom:1px solid rgba(255,255,255,0.2); }
.info-table td:first-child { font-weight:600; width:80px; }

.tl-step { padding:6px 0; border-bottom:1px solid rgba(255,255,255,0.15); font-size:13px; }
.tl-step small { opacity:0.7; }

.info-box { background:#fff; border-radius:10px; padding:14px 16px; margin-bottom:16px; box-shadow:0 1px 3px rgba(0,0,0,0.08); font-size:14px; }

.risk-high { color:#e74c3c; font-style:normal; margin-left:4px; }
.risk-medium { color:#f39c12; font-style:normal; margin-left:4px; }
.risk-low { color:#27ae60; font-style:normal; margin-left:4px; }

/* ========== 管理后台样式 ========== */
.admin-body { background:#f0f2f5; }
.admin-layout { display:flex; min-height:100vh; }

/* 侧边栏 */
.admin-sidebar { width:220px; background:linear-gradient(180deg, #1a3a53, #1a5276); color:#fff; display:flex; flex-direction:column; flex-shrink:0; position:fixed; top:0; left:0; bottom:0; z-index:100; }
.admin-brand { padding:20px 16px; font-size:16px; font-weight:700; display:flex; align-items:center; gap:8px; border-bottom:1px solid rgba(255,255,255,0.1); }
.admin-logo { font-size:22px; }
.admin-nav { flex:1; padding:8px 0; overflow-y:auto; }
.admin-nav-item { display:flex; align-items:center; gap:8px; padding:12px 20px; color:rgba(255,255,255,0.75); text-decoration:none; font-size:14px; transition:all 0.2s; }
.admin-nav-item:hover { background:rgba(255,255,255,0.08); color:#fff; }
.admin-nav-item.active { background:rgba(255,255,255,0.12); color:#fff; border-right:3px solid #3498db; }
.nav-icon { font-size:16px; width:24px; text-align:center; }
.admin-sidebar-footer { border-top:1px solid rgba(255,255,255,0.1); padding:8px 0; }

/* 主内容区 */
.admin-main { flex:1; margin-left:220px; display:flex; flex-direction:column; min-height:100vh; }
.admin-topbar { background:#fff; padding:16px 24px; display:flex; justify-content:space-between; align-items:center; box-shadow:0 1px 3px rgba(0,0,0,0.06); position:sticky; top:0; z-index:50; }
.admin-topbar h2 { font-size:18px; color:#1a5276; font-weight:600; }
.admin-user-name { font-size:13px; color:#888; background:#f5f5f5; padding:4px 12px; border-radius:16px; }
.admin-content { flex:1; padding:24px; }

/* 区域卡片 */
.admin-section { background:#fff; border-radius:10px; padding:20px 24px; margin-bottom:20px; box-shadow:0 1px 3px rgba(0,0,0,0.06); }
.admin-section-title { font-size:16px; color:#1a5276; margin-bottom:16px; padding-bottom:10px; border-bottom:2px solid #e8f0fe; }
.admin-section-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; padding-bottom:10px; border-bottom:2px solid #e8f0fe; }
.admin-section-header .admin-section-title { border:none; margin:0; padding:0; }
.admin-badge { font-size:12px; background:#e8f0fe; color:#2e86c1; padding:2px 10px; border-radius:12px; }

/* 统计卡片 */
.admin-stat-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:14px; }
.admin-stat-card { display:flex; align-items:center; gap:12px; padding:16px; background:#f8fafc; border-radius:8px; border:1px solid #e8ecf1; transition:all 0.2s; text-decoration:none; color:inherit; }
.admin-stat-card.clickable:hover { border-color:#2e86c1; background:#f0f7ff; transform:translateY(-1px); box-shadow:0 2px 8px rgba(46,134,193,0.1); }
.stat-icon { font-size:28px; width:40px; height:40px; display:flex; align-items:center; justify-content:center; border-radius:8px; }
.stat-icon.green { background:#e8f8f0; }
.stat-icon.blue { background:#e8f0fe; }
.stat-icon.orange { background:#fef5e7; }
.stat-icon.red { background:#fdecea; }
.stat-label { font-size:12px; color:#888; }
.stat-value { font-size:16px; font-weight:700; color:#333; margin-top:2px; }

/* 表格 */
.admin-table { width:100%; border-collapse:collapse; font-size:13px; }
.admin-table thead { background:#f8fafc; }
.admin-table th { text-align:left; padding:10px 12px; color:#666; font-weight:600; border-bottom:2px solid #e8ecf1; font-size:12px; text-transform:uppercase; letter-spacing:0.5px; }
.admin-table td { padding:10px 12px; border-bottom:1px solid #f0f0f0; }
.admin-table tbody tr:hover { background:#f8fafc; }
.admin-table a { color:#2e86c1; text-decoration:none; }
.admin-table a:hover { text-decoration:underline; }

/* 判定标签 */
.decision-accept { color:#27ae60; }
.decision-reject { color:#e74c3c; }
.decision-cond { color:#f39c12; }
.grade-badge-A { display:inline-block; background:#27ae60; color:#fff; padding:2px 8px; border-radius:4px; font-weight:700; font-size:12px; }
.grade-badge-B { display:inline-block; background:#2980b9; color:#fff; padding:2px 8px; border-radius:4px; font-weight:700; font-size:12px; }
.grade-badge-C { display:inline-block; background:#f39c12; color:#fff; padding:2px 8px; border-radius:4px; font-weight:700; font-size:12px; }
.grade-badge-D { display:inline-block; background:#c0392b; color:#fff; padding:2px 8px; border-radius:4px; font-weight:700; font-size:12px; }
.severity-I { display:inline-block; background:#c0392b; color:#fff; padding:2px 6px; border-radius:3px; font-size:11px; }
.severity-II { display:inline-block; background:#e67e22; color:#fff; padding:2px 6px; border-radius:3px; font-size:11px; }
.severity-III { display:inline-block; background:#f39c12; color:#fff; padding:2px 6px; border-radius:3px; font-size:11px; }
.severity-IV { display:inline-block; background:#3498db; color:#fff; padding:2px 6px; border-radius:3px; font-size:11px; }

/* 判定色标 */
.judgment-优 { color:#27ae60; font-weight:700; }
.judgment-良 { color:#2980b9; font-weight:700; }
.judgment-中 { color:#f39c12; font-weight:700; }
.judgment-差 { color:#e74c3c; font-weight:700; }

/* 文档类别标签 */
.doc-category { display:inline-block; padding:2px 8px; border-radius:4px; font-size:11px; background:#e8f0fe; color:#2e86c1; }

/* 删除按钮 */
.btn-delete { color:#e74c3c; font-size:12px; text-decoration:none; }
.btn-delete:hover { text-decoration:underline; }

/* 上传表单 */
.admin-upload-form { max-width:600px; }
.admin-msg { padding:10px 14px; border-radius:6px; margin-bottom:12px; font-size:13px; }
.admin-msg.success { background:#e8f8f0; color:#27ae60; border:1px solid #a3e4bc; }
.admin-msg.error { background:#fdecea; color:#e74c3c; border:1px solid #f5b7b1; }

/* 侧边栏分隔线 */
.admin-nav-divider { border:none; border-top:1px solid #3a5a7a; margin:6px 0; }

/* 通用表单 */
.admin-form .form-group { margin-bottom:14px; }
.admin-form label { display:block; font-size:13px; color:#78909c; margin-bottom:5px; }
.admin-form input[type="text"],
.admin-form input[type="password"],
.admin-form input[type="date"],
.admin-form select { width:100%; padding:9px 12px; border:1px solid #e0e0e0; border-radius:6px; font-size:14px; transition:border-color 0.2s; }
.admin-form input:focus, .admin-form select:focus { outline:none; border-color:#3498db; box-shadow:0 0 0 2px rgba(52,152,219,0.15); }
.admin-form .form-row { display:flex; gap:12px; }
.admin-form .form-row .form-group { flex:1; }

/* 空状态 */
.admin-empty { text-align:center; padding:40px 20px; color:#999; font-size:14px; }

/* 登录页 */
.login-container { display:flex; align-items:center; justify-content:center; min-height:100vh; background:linear-gradient(135deg, #1a3a53, #1a5276); }
.login-card { background:#fff; border-radius:12px; padding:40px; width:380px; max-width:90%; box-shadow:0 8px 32px rgba(0,0,0,0.2); }
.login-header { text-align:center; margin-bottom:28px; }
.login-icon { font-size:48px; display:block; margin-bottom:8px; }
.login-header h1 { font-size:22px; color:#1a5276; }
.login-header p { font-size:13px; color:#888; margin-top:4px; }
.login-error { background:#fdecea; color:#e74c3c; padding:10px 14px; border-radius:6px; margin-bottom:16px; font-size:13px; text-align:center; }
.login-form .form-group { margin-bottom:16px; }
.login-form .btn { margin-top:8px; }

/* ── 汉堡菜单按钮（默认隐藏，手机端显示） ── */
.admin-hamburger {
  display: none;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
  flex-direction: column;
  gap: 5px;
  align-items: center;
  justify-content: center;
}
.admin-hamburger span {
  display: block;
  width: 22px;
  height: 2px;
  background: #1a3a53;
  border-radius: 2px;
  transition: all 0.3s;
}
/* 遮罩层 */
.admin-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.45);
  z-index: 98;
}
.admin-overlay.open { display: block; }

/* ── 移动端适配 ── */
@media (max-width: 768px) {
  /* 侧边栏：默认滑出屏幕左侧，open 时滑入 */
  .admin-sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    width: 240px;
    transform: translateX(-100%);
    transition: transform 0.28s ease;
    z-index: 99;
    flex-direction: column;
    overflow-y: auto;
  }
  .admin-sidebar.open {
    transform: translateX(0);
  }

  /* 主区域不再留左边距 */
  .admin-main { margin-left: 0; }

  /* 顶栏：左侧汉堡 + 标题 + 用户信息 */
  .admin-topbar {
    flex-direction: row;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
  }
  .admin-topbar h2 { font-size: 15px; flex: 1; }
  .admin-hamburger { display: flex; }

  /* 内容区 padding 收窄 */
  .admin-content { padding: 14px 12px; }

  /* section 内边距 */
  .admin-section { padding: 14px 12px; }

  /* 统计卡片 2 列 */
  .admin-stat-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }

  /* 表格横向滚动容器 */
  .admin-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .admin-table { font-size: 12px; min-width: 520px; }
  .admin-table th, .admin-table td { padding: 8px 8px; }

  /* 表单 */
  .admin-upload-form .form-row { flex-direction: column; }
  .admin-form .form-row { flex-direction: column; }

  /* 登录卡片 */
  .login-card { padding: 28px 20px; }

  /* 用户管理角色统计小卡片 */
  .admin-stat-grid { grid-template-columns: repeat(2, 1fr); }

  /* 退出按钮在侧边栏中仍可见 */
  .admin-sidebar-footer { display: block; }

  /* 事件台账/检查记录 badge 换行不裁剪 */
  .admin-badge { white-space: nowrap; }
}

@media (max-width: 480px) {
  .admin-topbar h2 { font-size: 14px; }
  .admin-stat-grid { grid-template-columns: 1fr 1fr; }
  .admin-table { min-width: 460px; }
}
