/* =========================================================
   广东省材料研究学会 · 科学技术奖评审系统  DEMO 样式
   设计基调：事业单位蓝、严谨、克制、不花哨
   主色取自学会官网：#178bd8（科技蓝）
   ========================================================= */
:root{
  --c-primary:#178bd8;          /* 主蓝，最高频品牌色 */
  --c-primary-dark:#0e6fb3;     /* 深蓝，顶栏/标题 */
  --c-primary-darker:#0a568a;   /* 更深蓝，悬停 */
  --c-primary-light:#60abdd;    /* 浅蓝，强调 */
  --c-primary-tint:#eaf4fc;     /* 极浅蓝，选中底 */
  --c-bg:#f5fbff;               /* 页面浅蓝底 */
  --c-surface:#ffffff;          /* 卡片白 */
  --c-border:#d6e4f0;           /* 浅蓝边框 */
  --c-border-strong:#bcd4e8;    /* 强边框 */
  --c-text:#24211d;             /* 正文深 */
  --c-muted:#5d6b7a;            /* 次要文字 */
  --c-warn:#ff5700;             /* 警示橙 */
  --c-danger:#d81717;           /* 危险红 */
  --c-ok:#1f9d55;               /* 通过绿 */
  --radius:6px;
  --shadow:0 1px 3px rgba(14,111,179,.10);
  --shadow-lg:0 6px 20px rgba(14,111,179,.14);
  --topbar-h:56px;
  --side-w:208px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Source Han Sans SC",sans-serif;
  color:var(--c-text);background:var(--c-bg);font-size:14px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--c-primary-dark);text-decoration:none;}
a:hover{color:var(--c-primary-darker);}
h1,h2,h3,h4{margin:0;font-weight:600;}
::selection{background:var(--c-primary);color:#fff;}

/* 滚动条克制 */
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-thumb{background:#c3d8e8;border-radius:6px;}
::-webkit-scrollbar-thumb:hover{background:#a9c6dd;}

/* ===================== 门户 / 登录 ===================== */
.portal{display:flex;flex-direction:column;min-height:100vh;}
.portal-top{height:var(--topbar-h);background:linear-gradient(90deg,var(--c-primary-dark),var(--c-primary));
  display:flex;align-items:center;padding:0 28px;color:#fff;box-shadow:var(--shadow);}
.portal-top .logo{font-size:18px;font-weight:700;letter-spacing:.5px;}
.portal-top .logo small{font-weight:400;opacity:.85;font-size:13px;margin-left:10px;}
.portal-top .nav{margin-left:auto;display:flex;gap:22px;font-size:14px;}
.portal-top .nav a{color:#eaf4fc;}
.portal-hero{flex:1;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(1200px 400px at 50% -10%,#dceefb,var(--c-bg));padding:40px;}
.portal-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:10px;
  box-shadow:var(--shadow-lg);max-width:94vw;overflow:hidden;}
.portal-card .pc-head{background:var(--c-primary-tint);border-bottom:1px solid var(--c-border);
  padding:18px 26px;font-size:16px;font-weight:700;color:var(--c-primary-dark);}
.portal-card .pc-body{padding:26px;display:flex;gap:26px;flex-wrap:wrap;}
.role-box{flex:1;min-width:260px;border:1px solid var(--c-border);border-radius:8px;padding:20px;background:#fbfdff;}
.role-box h3{font-size:15px;color:var(--c-primary-dark);margin-bottom:8px;display:flex;align-items:center;gap:8px;}
.role-box .ic{width:30px;height:30px;border-radius:7px;background:var(--c-primary);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:15px;flex:0 0 auto;}
.role-box p{color:var(--c-muted);font-size:13px;margin:6px 0 14px;min-height:40px;}

/* ===================== 表单 ===================== */
.field{margin-bottom:16px;}
.field label{display:block;font-size:13px;color:var(--c-muted);margin-bottom:6px;font-weight:600;}
.field .req{color:var(--c-danger);margin-left:3px;}
.input,select.input,textarea.input{width:100%;padding:9px 11px;border:1px solid var(--c-border-strong);
  border-radius:var(--radius);font-size:14px;color:var(--c-text);background:#fff;font-family:inherit;}
.input:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 3px rgba(23,139,216,.15);}
textarea.input{resize:vertical;min-height:84px;}
.row2{display:flex;gap:12px;}
.row2>*{flex:1;}
.code-row{display:flex;gap:10px;}
.code-row .input{flex:1;}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;
  border-radius:var(--radius);border:1px solid transparent;font-size:14px;cursor:pointer;font-family:inherit;
  transition:.15s;font-weight:600;}
.btn-primary{background:var(--c-primary);color:#fff;}
.btn-primary:hover{background:var(--c-primary-dark);}
.btn-ghost{background:#fff;color:var(--c-primary-dark);border-color:var(--c-border-strong);}
.btn-ghost:hover{background:var(--c-primary-tint);}
.btn-sm{padding:5px 12px;font-size:13px;}
.btn-block{width:100%;}
.btn:disabled{opacity:.55;cursor:not-allowed;}

/* ===================== 后台框架 ===================== */
.app{display:flex;flex-direction:column;min-height:100vh;}
.topbar{height:var(--topbar-h);background:linear-gradient(90deg,var(--c-primary-dark),var(--c-primary));
  display:flex;align-items:center;padding:0 18px;color:#fff;position:sticky;top:0;z-index:30;box-shadow:var(--shadow);}
.topbar .brand{font-size:16px;font-weight:700;display:flex;align-items:center;gap:10px;}
.topbar .brand .dot{width:9px;height:9px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.25);}
.topbar .sys{font-size:13px;opacity:.9;margin-left:4px;font-weight:400;border-left:1px solid rgba(255,255,255,.35);padding-left:12px;}
.topbar .right{margin-left:auto;display:flex;align-items:center;gap:16px;font-size:13px;}
.topbar .right .who{display:flex;align-items:center;gap:8px;}
.topbar .right .avatar{width:30px;height:30px;border-radius:50%;background:#fff;color:var(--c-primary-dark);
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;}
.topbar .link{color:#eaf4fc;cursor:pointer;}

.body{display:flex;flex:1;min-height:0;}
.sidebar{width:var(--side-w);flex:0 0 var(--side-w);background:#fff;border-right:1px solid var(--c-border);
  padding:14px 0;position:sticky;top:var(--topbar-h);align-self:flex-start;height:calc(100vh - var(--topbar-h));overflow:auto;}
.side-group{font-size:12px;color:var(--c-muted);padding:12px 20px 6px;font-weight:700;letter-spacing:.5px;}
.side-item{display:flex;align-items:center;gap:10px;padding:10px 20px;color:var(--c-text);cursor:pointer;
  border-left:3px solid transparent;font-size:14px;}
.side-item .si-ic{width:18px;text-align:center;color:var(--c-primary);}
.side-item:hover{background:var(--c-primary-tint);}
.side-item.active{background:var(--c-primary-tint);border-left-color:var(--c-primary);color:var(--c-primary-dark);font-weight:600;}
.main{flex:1;min-width:0;padding:22px 26px 40px;overflow:auto;}
.crumb{font-size:13px;color:var(--c-muted);margin-bottom:6px;}
.crumb b{color:var(--c-text);}
.page-title{font-size:20px;font-weight:700;color:var(--c-primary-dark);margin:0 0 4px;}
.page-sub{color:var(--c-muted);font-size:13px;margin-bottom:18px;}

/* ===================== 卡片 / 面板 ===================== */
.panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:8px;box-shadow:var(--shadow);}
.panel-h{padding:13px 16px;border-bottom:1px solid var(--c-border);font-weight:700;color:var(--c-primary-dark);
  display:flex;align-items:center;gap:8px;font-size:15px;}
.panel-h .sub{margin-left:auto;font-weight:400;font-size:12px;color:var(--c-muted);}
.panel-b{padding:16px;}

.grid{display:grid;gap:16px;}
.grid-4{grid-template-columns:repeat(4,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
.stat{background:#fff;border:1px solid var(--c-border);border-radius:8px;padding:16px 18px;box-shadow:var(--shadow);}
.stat .label{font-size:13px;color:var(--c-muted);}
.stat .num{font-size:26px;font-weight:700;color:var(--c-primary-dark);margin-top:4px;}
.stat .num small{font-size:13px;color:var(--c-muted);font-weight:400;margin-left:4px;}
.stat .bar{height:4px;background:var(--c-primary-tint);border-radius:3px;margin-top:10px;overflow:hidden;}
.stat .bar i{display:block;height:100%;background:var(--c-primary);}

/* ===================== 表格 ===================== */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.toolbar .sp{margin-left:auto;}
.toolbar.right{justify-content:flex-end;}
.table-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}
.ta-info{font-size:13px;color:var(--c-muted);}
.ta-info b{color:var(--c-primary-dark);font-size:15px;}
.toolbar .search{display:flex;align-items:center;gap:8px;}
.toolbar .search .input{max-width:280px;}
select.input.inline{width:auto;display:inline-block;padding:7px 10px;}

table.tbl{width:100%;border-collapse:collapse;background:#fff;font-size:13.5px;}
table.tbl th,table.tbl td{border:1px solid var(--c-border);padding:9px 11px;text-align:left;vertical-align:top;}
table.tbl thead th{background:var(--c-primary-dark);color:#fff;font-weight:600;position:sticky;top:0;white-space:nowrap;text-align:center;}
table.tbl tbody tr:nth-child(even){background:#fafdff;}
table.tbl tbody tr:hover{background:var(--c-primary-tint);}
table.tbl td.center,table.tbl th.center{text-align:center;}
table.tbl .num{font-variant-numeric:tabular-nums;font-weight:600;}

/* 徽章 */
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600;line-height:1.6;}
.badge-blue{background:var(--c-primary-tint);color:var(--c-primary-dark);}
.badge-green{background:#e6f6ec;color:var(--c-ok);}
.badge-gray{background:#eef1f4;color:var(--c-muted);}
.badge-red{background:#fdeaea;color:var(--c-danger);}
.badge-orange{background:#fff1e8;color:var(--c-warn);}

/* 标签 / 评分星 */
.score-pill{display:inline-flex;align-items:baseline;gap:2px;font-weight:700;color:var(--c-primary-dark);}
.score-pill b{font-size:18px;}
.score-pill span{font-size:12px;color:var(--c-muted);}

/* 空态 */
.empty{padding:50px;text-align:center;color:var(--c-muted);}
.empty .ico{font-size:40px;opacity:.4;}

/* 提示条 */
.alert{border-radius:var(--radius);padding:11px 14px;font-size:13px;margin-bottom:14px;display:flex;gap:8px;align-items:flex-start;}
.alert-info{background:var(--c-primary-tint);border:1px solid var(--c-border-strong);color:var(--c-primary-darker);}
.alert-warn{background:#fff5ee;border:1px solid #ffd3b8;color:#c2520a;}

/* 步骤条 */
.steps{display:flex;gap:0;margin-bottom:18px;}
.steps .st{flex:1;text-align:center;position:relative;color:var(--c-muted);font-size:13px;}
.steps .st .n{width:26px;height:26px;border-radius:50%;background:#e3e9ef;color:var(--c-muted);
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;margin-bottom:5px;}
.steps .st.done .n{background:var(--c-primary);color:#fff;}
.steps .st.done{color:var(--c-primary-dark);font-weight:600;}
.steps .st::after{content:"";position:absolute;top:13px;left:50%;width:100%;height:2px;background:#e3e9ef;z-index:-1;}
.steps .st:last-child::after{display:none;}

/* 上传区 */
.drop{border:2px dashed var(--c-border-strong);border-radius:8px;padding:26px;text-align:center;color:var(--c-muted);
  background:#fbfdff;cursor:pointer;transition:.15s;}
.drop:hover{border-color:var(--c-primary);background:var(--c-primary-tint);color:var(--c-primary-dark);}
.file-list{margin-top:12px;}
.file-list .fi{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--c-border);
  border-radius:6px;margin-bottom:8px;background:#fff;font-size:13px;}
.file-list .fi .ic{color:var(--c-primary);}
.file-list .fi .nm{flex:1;}
.file-list .fi .sz{color:var(--c-muted);}

/* 综合报表：字段勾选侧栏 */
.report-layout{display:flex;gap:16px;align-items:flex-start;}
.report-filters{flex:0 0 218px;background:#fff;border:1px solid var(--c-border);border-radius:8px;
  padding:14px;box-shadow:var(--shadow);position:sticky;top:8px;}
.report-filters h4{font-size:13px;color:var(--c-primary-dark);margin:2px 0 10px;}
.fld-chk{display:flex;align-items:flex-start;gap:8px;padding:6px 4px;font-size:13px;border-bottom:1px dashed var(--c-border);}
.fld-chk:last-child{border-bottom:0;}
.fld-chk input{margin-top:3px;}
.report-main{flex:1;min-width:0;}
.view-toggle{display:inline-flex;border:1px solid var(--c-border-strong);border-radius:6px;overflow:hidden;}
.view-toggle button{border:0;background:#fff;padding:7px 14px;cursor:pointer;font-size:13px;color:var(--c-muted);}
.view-toggle button.active{background:var(--c-primary);color:#fff;}

/* 纵向对比卡片 */
.cards{display:flex;gap:14px;overflow-x:auto;padding-bottom:10px;}
.wcard{flex:0 0 320px;background:#fff;border:1px solid var(--c-border);border-radius:8px;box-shadow:var(--shadow);overflow:hidden;}
.wcard .wc-h{background:var(--c-primary-tint);border-bottom:1px solid var(--c-border);padding:10px 14px;font-weight:700;color:var(--c-primary-dark);}
.wcard .wc-h .no{font-size:12px;color:var(--c-muted);font-weight:400;}
.wcard .wc-b{padding:6px 14px 12px;}
.wcard .kv{padding:7px 0;border-bottom:1px dashed var(--c-border);font-size:13px;}
.wcard .kv:last-child{border-bottom:0;}
.wcard .kv .k{color:var(--c-muted);font-size:12px;display:block;margin-bottom:2px;}
.wcard .kv .v{color:var(--c-text);white-space:pre-wrap;}

/* 打分表单 */
.score-grid{display:grid;gap:14px;}
.score-item{border:1px solid var(--c-border);border-radius:8px;padding:14px 16px;background:#fff;}
.score-item .si-top{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.score-item .si-name{font-weight:600;color:var(--c-primary-dark);}
.score-item .si-w{margin-left:auto;color:var(--c-muted);font-size:12px;}
.score-item .si-desc{color:var(--c-muted);font-size:12.5px;margin-bottom:10px;}
.score-item input[type=range]{width:100%;accent-color:var(--c-primary);}
.score-item .val{font-weight:700;color:var(--c-primary-dark);font-size:16px;}

/* 分页 */
.pager{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:14px;font-size:13px;color:var(--c-muted);}
.pager a{padding:5px 10px;border:1px solid var(--c-border);border-radius:5px;color:var(--c-text);cursor:pointer;}
.pager a.cur{background:var(--c-primary);color:#fff;border-color:var(--c-primary);}

/* 浮层提示 */
.toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);background:var(--c-primary-dark);color:#fff;
  padding:11px 22px;border-radius:8px;box-shadow:var(--shadow-lg);font-size:14px;z-index:99;opacity:0;transition:.25s;pointer-events:none;}
.toast.show{opacity:1;top:24px;}

.mt8{margin-top:8px;}.mt12{margin-top:12px;}.mt16{margin-top:16px;}.mt20{margin-top:20px;}
.mb8{margin-bottom:8px;}.mb12{margin-bottom:12px;}.mb16{margin-bottom:16px;}
.tright{text-align:right;}.tcenter{text-align:center;}
.muted{color:var(--c-muted);}.small{font-size:12.5px;}
hr.sep{border:0;border-top:1px solid var(--c-border);margin:16px 0;}
.hide{display:none!important;}

/* 新增：报表奖种标签 / 公共字段总览 */
.rpt-tabs{display:flex;gap:8px;margin-bottom:6px;flex-wrap:wrap;}
.rpt-tab{padding:6px 14px;border:1px solid var(--c-border-strong);border-radius:6px;background:#fff;cursor:pointer;font-size:13px;color:var(--c-muted);}
.rpt-tab:hover{border-color:var(--c-primary);color:var(--c-primary);}
.rpt-tab.active{background:var(--c-primary);color:#fff;border-color:var(--c-primary);}

/* 新增：表格内奖种分组行 */
.award-group-row td{background:#eef6fc;font-weight:600;color:var(--c-primary-dark);padding:8px 11px;}

/* 新增：长文本折叠 */
.longtext{font-size:12px;line-height:1.55;}
.lt-toggle{color:var(--c-primary);cursor:pointer;margin-left:4px;font-size:12px;white-space:nowrap;}
.lt-full{white-space:pre-wrap;color:#333;}

/* 新增：嵌套小表格 */
.mini-tbl{width:100%;border-collapse:collapse;font-size:11px;margin-top:4px;}
.mini-tbl th,.mini-tbl td{border:1px solid #cfe0ee;padding:4px 6px;text-align:left;background:#fafdff;}
.mini-tbl th{background:#e6f2fb;color:#1b7bc5;font-weight:600;text-align:center;}

/* 新增：X 混合型字段 */
.x-text{font-size:12px;margin-bottom:4px;}
.x-list{margin:4px 0 0 16px;padding:0;font-size:11.5px;color:#444;}
.x-list li{margin-bottom:2px;}
.x-cites{margin-top:4px;}
.tag{display:inline-block;padding:2px 7px;border-radius:4px;background:#e6f2fb;color:#1b7bc5;font-size:11px;margin:0 4px 3px 0;}

/* 新增：字段配置（对比报表字段设置） */
.field-group{border:1px solid var(--c-border);border-radius:8px;margin-bottom:14px;background:#fff;}
.field-group-h{background:#f5fbff;padding:10px 14px;border-bottom:1px solid var(--c-border);font-weight:600;color:#1b7bc5;font-size:14px;}
.field-group-h .muted{font-weight:400;color:var(--c-muted);font-size:12px;margin-left:6px;}
.field-group-b{padding:12px 14px;}
.field-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--c-border);border-radius:20px;background:#fbfdff;margin:0 8px 8px 0;cursor:pointer;font-size:13px;user-select:none;}
.field-chip:hover{border-color:var(--c-primary-light);}
.field-chip.checked{background:var(--c-primary-tint);border-color:var(--c-primary);color:var(--c-primary-dark);}
.field-chip .dot{width:7px;height:7px;border-radius:50%;background:#ccc;}
.field-chip.checked .dot{background:var(--c-primary);}

/* 新增：详情抽屉 / 模态 */
.drawer{position:fixed;top:0;right:0;width:760px;max-width:100vw;height:100vh;background:#fff;box-shadow:var(--shadow-lg);z-index:100;transform:translateX(100%);transition:.25s;display:flex;flex-direction:column;}
.drawer.open{transform:translateX(0);}
.drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:99;display:none;}
.drawer-overlay.show{display:block;}
.drawer-h{padding:16px;border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;background:var(--c-primary-tint);}
.drawer-h h3{margin:0;font-size:16px;color:var(--c-primary-dark);}
.drawer-b{flex:1;overflow:auto;padding:16px;}
.drawer-f{padding:12px 16px;border-top:1px solid var(--c-border);display:flex;gap:10px;justify-content:flex-end;background:#fafdff;}
.doc-preview{border:1px solid var(--c-border);border-radius:6px;height:360px;background:#f5f7f9;display:flex;align-items:center;justify-content:center;color:var(--c-muted);margin-bottom:12px;}
.doc-tabs{display:flex;gap:0;border-bottom:1px solid var(--c-border);margin-bottom:12px;}
.doc-tabs button{border:0;background:#fff;padding:8px 16px;cursor:pointer;font-size:13px;color:var(--c-muted);border-bottom:2px solid transparent;margin-bottom:-1px;}
.doc-tabs button.active{color:var(--c-primary);border-bottom-color:var(--c-primary);font-weight:600;}

/* 新增：上传结果面板 */
.upload-result{background:#fff;border:1px solid var(--c-border);border-radius:8px;margin-top:14px;}
.upload-result-h{padding:10px 14px;border-bottom:1px solid var(--c-border);font-weight:600;color:var(--c-primary-dark);font-size:14px;}

/* 新增：通用进度条 */
.progress-bar{height:10px;background:#eef4f9;border-radius:6px;overflow:hidden;}
.progress-bar i{display:block;height:100%;background:var(--c-ok);}

/* 新增：评分结果数字 */
.rank{font-weight:700;color:var(--c-primary-dark);font-size:15px;}

/* 新增：弹窗 */
.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.35);z-index:100;display:none;align-items:center;justify-content:center;}
.modal.show{display:flex;}
.modal-box{background:#fff;border-radius:8px;box-shadow:var(--shadow-lg);width:520px;max-width:94vw;max-height:90vh;display:flex;flex-direction:column;}
.modal-h{padding:14px 16px;border-bottom:1px solid var(--c-border);font-weight:700;color:var(--c-primary-dark);display:flex;justify-content:space-between;align-items:center;}
.modal-b{padding:16px;overflow:auto;}
.modal-f{padding:12px 16px;border-top:1px solid var(--c-border);display:flex;justify-content:flex-end;gap:10px;}

/* 新增：表单只读信息 */
.readonly-line{padding:6px 0;border-bottom:1px dashed var(--c-border);font-size:13px;}
.readonly-line:last-child{border-bottom:0;}
.readonly-line .k{color:var(--c-muted);display:inline-block;width:100px;}

/* 状态图标 */
.status-ok{color:var(--c-ok);font-weight:700;}
.status-miss{color:var(--c-danger);font-weight:700;}
.status-warn{color:var(--c-warn);}




/* ===================== 纯 CSS 交互（无 JS，可逐页接后台） ===================== */
/* —— 标签页：radio + :checked + 兄弟选择器 —— */
.css-tabs{margin-bottom:14px;}
.css-tabs > input[type=radio]{position:absolute;opacity:0;width:0;height:0;pointer-events:none;}
.css-tabs > label.tab-l{padding:8px 16px;border:1px solid var(--c-border-strong);border-radius:6px;
  background:#fff;cursor:pointer;font-size:13.5px;color:var(--c-muted);margin:0 8px 8px 0;display:inline-block;user-select:none;}
.css-tabs > input:checked + label.tab-l{background:var(--c-primary);color:#fff;border-color:var(--c-primary);font-weight:600;}
.tab-page{display:none;}
#g-natural:checked ~ #page-natural,
#g-tech:checked ~ #page-tech,
#g-prog:checked ~ #page-prog,
#g-youth:checked ~ #page-youth,
#wk-natural:checked ~ #page-natural,
#wk-tech:checked ~ #page-tech,
#wk-prog:checked ~ #page-prog,
#wk-youth:checked ~ #page-youth,
#rs-natural:checked ~ #page-natural,
#rs-tech:checked ~ #page-tech,
#rs-prog:checked ~ #page-prog,
#rs-youth:checked ~ #page-youth,
#ba-natural:checked ~ #page-natural,
#ba-tech:checked ~ #page-tech,
#ba-prog:checked ~ #page-prog,
#ba-youth:checked ~ #page-youth,
#bc-natural:checked ~ #page-natural,
#bc-tech:checked ~ #page-tech,
#bc-prog:checked ~ #page-prog,
#bc-youth:checked ~ #page-youth{display:block;}
/* 详情页 wd-（word/pdf/field 三态） */
#wd-word:checked ~ #page-word,
#wd-pdf:checked ~ #page-pdf,
#wd-field:checked ~ #page-field{display:block;}

/* —— 字段 chip 勾选 —— */
.cs-chip-cb{position:absolute;opacity:0;width:0;height:0;pointer-events:none;}
.cs-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border:1px solid var(--c-border);
  border-radius:20px;background:#fbfdff;margin:0 8px 8px 0;cursor:pointer;font-size:13px;user-select:none;}
.cs-chip:hover{border-color:var(--c-primary-light);}
.cs-chip-cb:checked + .cs-chip{background:var(--c-primary-tint);border-color:var(--c-primary);color:var(--c-primary-dark);font-weight:600;}
.ftype{display:inline-block;padding:1px 7px;border-radius:4px;font-size:11px;font-weight:600;}
.ftype-single{background:#e6f2fb;color:#1b7bc5;}
.ftype-long{background:#fff1e8;color:#c2520a;}
.ftype-fold{background:#fdeaea;color:#d81717;}
.ftype-tbl{background:#eaf6ec;color:#1f9d55;}
.ftype-nest{background:#f3e8fb;color:#8e44ad;}

/* —— 长文折叠 —— */
.cs-fold-cb{position:absolute;opacity:0;width:0;height:0;pointer-events:none;}
.cs-fold-l{color:var(--c-primary);cursor:pointer;font-size:12px;user-select:none;}
.cs-fold-l .on{display:none;}
.cs-fold-cb:checked ~ .cs-fold-l .on{display:inline;}
.cs-fold-cb:checked ~ .cs-fold-l .off{display:none;}
.cs-fold-body{display:none;margin-top:6px;padding:10px 12px;background:#fafdff;border:1px dashed var(--c-border);border-radius:6px;font-size:12.5px;line-height:1.6;}
.cs-fold-cb:checked ~ .cs-fold-body{display:block;}

/* —— 汽车之家式对比矩阵 —— */
.mx-wrap{overflow-x:auto;border:1px solid var(--c-border);border-radius:8px;background:#fff;}
.mx{width:max-content;min-width:100%;border-collapse:collapse;}
.mx th,.mx td{border:1px solid var(--c-border);padding:10px 12px;vertical-align:top;font-size:13px;min-width:160px;}
.mx th{text-align:center;}
.mx .mx-field{text-align:left;}
.mx thead th{background:var(--c-primary-dark);color:#fff;position:sticky;top:0;z-index:2;}
.mx .mx-field{position:sticky;left:0;background:var(--c-primary-tint);font-weight:700;color:var(--c-primary-dark);z-index:3;min-width:150px;max-width:200px;}
.mx thead .mx-field{z-index:4;}
.mx tbody tr:nth-child(even) td:not(.mx-field){background:#fafdff;}
.mx .nest{font-size:12px;}

/* —— 手机端卡片横向滑动（scroll-snap） —— */
.cards-snap{display:flex;gap:14px;overflow-x:auto;padding-bottom:12px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;}
.cards-snap > .wcard{flex:0 0 86%;max-width:340px;scroll-snap-align:start;background:#fff;border:1px solid var(--c-border);border-radius:10px;box-shadow:var(--shadow);overflow:hidden;}
.wcard .wc-h{background:var(--c-primary-tint);border-bottom:1px solid var(--c-border);padding:11px 14px;font-weight:700;color:var(--c-primary-dark);}
.wcard .wc-h .no{font-size:12px;color:var(--c-muted);font-weight:400;margin-left:6px;}
.wcard .wc-b{padding:4px 14px 12px;}
.wcard .kv{padding:8px 0;border-bottom:1px dashed var(--c-border);font-size:13px;}
.wcard .kv:last-child{border-bottom:0;}
.wcard .kv .k{display:block;color:var(--c-muted);font-size:12px;margin-bottom:2px;}

/* —— 评审节点时间线 —— */
.tl{position:relative;padding:6px 0 6px 26px;}
.tl::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;background:var(--c-border-strong);}
.tl-item{position:relative;padding:0 0 18px;}
.tl-item::before{content:"";position:absolute;left:-22px;top:3px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--c-border-strong);}
.tl-item.done::before{background:var(--c-ok);border-color:var(--c-ok);}
.tl-item.active::before{background:var(--c-primary);border-color:var(--c-primary);box-shadow:0 0 0 4px rgba(23,139,216,.18);}
.tl-item .t{font-weight:600;color:var(--c-text);}
.tl-item .d{font-size:12px;color:var(--c-muted);}
.tl-item .st{font-size:11px;font-weight:600;margin-left:8px;}

/* —— 届/会话管理 —— */
.session-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;}
.session-pill{padding:6px 14px;border:1px solid var(--c-border-strong);border-radius:20px;background:#fff;font-size:13px;color:var(--c-muted);cursor:pointer;}
.session-pill.cur{background:var(--c-primary);color:#fff;border-color:var(--c-primary);font-weight:600;}

/* —— 文件上传 label 触发 —— */
.file-input{position:absolute;width:0;height:0;opacity:0;overflow:hidden;}
.upload-drop{border:2px dashed var(--c-border-strong);border-radius:8px;padding:30px;text-align:center;color:var(--c-muted);background:#fbfdff;transition:.15s;}
.upload-drop:hover{border-color:var(--c-primary);background:var(--c-primary-tint);color:var(--c-primary-dark);}

/* —— 会费校验高亮 —— */
.fee-bad{background:#fdeaea!important;}


/* —— 顶栏届次选择器 —— */
.topbar{display:flex;align-items:center;height:var(--topbar-h);padding:0 22px;background:linear-gradient(90deg,var(--c-primary-dark),var(--c-primary));color:#fff;box-shadow:var(--shadow);}
.topbar .brand{font-size:16px;font-weight:700;letter-spacing:.5px;}
.topbar .brand .brand-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#fff;margin-right:8px;box-shadow:0 0 0 3px rgba(255,255,255,.25);}
.topbar .brand small{font-weight:400;opacity:.85;font-size:12.5px;margin-left:10px;}
.topbar-session{margin-left:auto;margin-right:18px;font-size:13px;color:#dceefb;display:flex;align-items:center;gap:6px;}
.tb-sel{background:rgba(255,255,255,.18)!important;border:1px solid rgba(255,255,255,.35)!important;color:#fff!important;padding:5px 10px!important;width:auto!important;font-size:13px;}
.tb-sel option{color:#222;background:#fff;}
.topbar-right{font-size:13.5px;}
.topbar-right .role{color:#dceefb;margin-right:4px;}
.topbar-right a{color:#fff;}

/* —— 智能检索器 —— */
.search-bar{background:#fff;border:1px solid var(--c-border);border-radius:8px;padding:14px 16px;margin-bottom:14px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;box-shadow:var(--shadow);}
.search-bar .sb-item{display:flex;flex-direction:column;min-width:150px;}
.search-bar .sb-item label{font-size:12px;color:var(--c-muted);margin-bottom:4px;}
.search-bar .sb-item input,.search-bar .sb-item select{padding:6px 10px;border:1px solid var(--c-border-strong);border-radius:5px;font-size:13px;background:#fff;min-width:140px;}
.search-bar .sb-actions{display:flex;gap:8px;margin-left:auto;}
.search-bar .btn-sm{padding:6px 14px;font-size:13px;}

/* —— 届次选择区 —— */
.session-bar{display:flex;gap:10px;align-items:center;padding:10px 14px;background:#fff;border:1px solid var(--c-border);border-radius:8px;margin-bottom:14px;}
.session-bar .sb-label{font-size:13px;color:var(--c-muted);font-weight:600;}
.session-bar select{padding:6px 10px;border:1px solid var(--c-border-strong);border-radius:5px;font-size:13px;background:#fff;}

/* —— 评分标准发布 —— */
.std-row{display:flex;align-items:center;gap:14px;padding:10px 12px;border-bottom:1px dashed var(--c-border);font-size:13px;}
.std-row:last-child{border-bottom:0;}
.std-row .std-name{font-weight:600;color:var(--c-primary-dark);}
.std-row .std-tag{font-size:11px;padding:2px 7px;border-radius:4px;background:#e6f2fb;color:#1b7bc5;font-weight:600;}
.std-row .std-tag.on{background:#eaf6ec;color:#1f9d55;}
.std-row .std-tag.off{background:#fdeaea;color:#d81717;}

/* —— 批量分配多对多 —— */
.batch-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.batch-col{background:#fff;border:1px solid var(--c-border);border-radius:8px;overflow:hidden;box-shadow:var(--shadow);}
.batch-col-h{padding:10px 14px;background:var(--c-primary-tint);border-bottom:1px solid var(--c-border);font-weight:700;color:var(--c-primary-dark);font-size:14px;display:flex;justify-content:space-between;align-items:center;}
.batch-col-b{padding:6px 14px 10px;max-height:420px;overflow-y:auto;}
.batch-item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed var(--c-border);font-size:13px;}
.batch-item:last-child{border-bottom:0;}
.batch-item input{margin-top:1px;}
.batch-summary{background:#fff;border:1px solid var(--c-border);border-radius:8px;padding:12px 16px;margin:14px 0;display:flex;gap:24px;font-size:13px;}
.batch-summary .bs-item b{color:var(--c-primary-dark);font-size:18px;margin-right:6px;}

/* —— 评分结果 / 分配总览 评审中/已完评 状态 —— */
.tag-mini{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;}
.tag-progress{background:#e6f2fb;color:#1b7bc5;}
.tag-done{background:#eaf6ec;color:#1f9d55;}
.tag-fee{background:#fff1e8;color:#c2520a;}

/* —— 评分列 —— */
.score-cell{display:flex;flex-direction:column;line-height:1.35;}
.score-cell .en{font-size:11px;color:var(--c-muted);}
.score-cell .sv{font-weight:700;color:var(--c-primary-dark);font-size:15px;}
.score-cell .sv.pending{color:var(--c-muted);font-weight:400;font-size:13px;}

/* —— v3 css-tabs 完整多前缀（让所有页面的标签页可切换） —— */
.tab-page { display: none; }
#g-natural:checked ~ #page-natural,
#g-tech:checked ~ #page-tech,
#g-prog:checked ~ #page-prog,
#g-youth:checked ~ #page-youth,
#wk-natural:checked ~ #page-natural,
#wk-tech:checked ~ #page-tech,
#wk-prog:checked ~ #page-prog,
#wk-youth:checked ~ #page-youth,
#rs-natural:checked ~ #page-natural,
#rs-tech:checked ~ #page-tech,
#rs-prog:checked ~ #page-prog,
#rs-youth:checked ~ #page-youth,
#ba-natural:checked ~ #page-natural,
#ba-tech:checked ~ #page-tech,
#ba-prog:checked ~ #page-prog,
#ba-youth:checked ~ #page-youth,
#as-natural:checked ~ #page-natural,
#as-tech:checked ~ #page-tech,
#as-prog:checked ~ #page-prog,
#as-youth:checked ~ #page-youth { display: block !important; }

/* —— v3 智能检索器 —— */
.search-bar { background: #fff; border: 1px solid var(--c-border); border-radius: 8px; padding: 14px 16px; margin-bottom: 14px; display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; box-shadow: var(--shadow); }
.search-bar .sb-item { display: flex; flex-direction: column; min-width: 150px; }
.search-bar .sb-item label { font-size: 12px; color: var(--c-muted); margin-bottom: 4px; }
.search-bar .sb-item input,
.search-bar .sb-item select { padding: 6px 10px; border: 1px solid var(--c-border-strong); border-radius: 5px; font-size: 13px; background: #fff; min-width: 140px; }
.search-bar .sb-actions { display: flex; gap: 8px; margin-left: auto; }
.search-bar .btn-sm { padding: 6px 14px; font-size: 13px; }

/* —— v3 届次选择条 —— */
.session-bar { display: flex; gap: 10px; align-items: center; padding: 10px 14px; background: #fff; border: 1px solid var(--c-border); border-radius: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.session-bar .sb-label { font-size: 13px; color: var(--c-muted); font-weight: 600; }
.session-bar select { padding: 6px 10px; border: 1px solid var(--c-border-strong); border-radius: 5px; font-size: 13px; background: #fff; }
.session-pill { padding: 5px 14px; border-radius: 20px; background: #fafdff; border: 1px solid var(--c-border); font-size: 13px; color: var(--c-muted); cursor: pointer; }
.session-pill.cur { background: var(--c-primary); color: #fff; border-color: var(--c-primary); font-weight: 600; }

/* —— v3 评分标准发布 —— */
.std-row { display: flex; align-items: center; gap: 14px; padding: 10px 12px; border-bottom: 1px dashed var(--c-border); font-size: 13px; }
.std-row:last-child { border-bottom: 0; }
.std-row .std-name { font-weight: 600; color: var(--c-primary-dark); }
.std-row .std-tag { font-size: 11px; padding: 2px 7px; border-radius: 4px; background: #e6f2fb; color: #1b7bc5; font-weight: 600; }
.std-row .std-tag.on { background: #eaf6ec; color: #1f9d55; }
.std-row .std-tag.off { background: #fdeaea; color: #d81717; }

/* —— v3 双栏 + 表单网格 —— */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.form-row .form-item { display: flex; flex-direction: column; }
.form-row .form-item label { font-size: 13px; color: var(--c-muted); margin-bottom: 4px; font-weight: 600; }

/* —— v3 评分标准 .rdo-pill（普通 radio + label 样式） —— */
.rdo-pill { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; border: 1px solid var(--c-border-strong); border-radius: 6px; background: #fff; cursor: pointer; font-size: 13px; color: var(--c-muted); }
.rdo-pill input { margin: 0; }
.rdo-pill:has(input:checked) { background: var(--c-primary-tint); border-color: var(--c-primary); color: var(--c-primary-dark); font-weight: 600; }

/* —— v3 批量分配多对多 —— */
.batch-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.batch-col { background: #fff; border: 1px solid var(--c-border); border-radius: 8px; overflow: hidden; box-shadow: var(--shadow); }
.batch-col-h { padding: 10px 14px; background: var(--c-primary-tint); border-bottom: 1px solid var(--c-border); font-weight: 700; color: var(--c-primary-dark); font-size: 14px; display: flex; justify-content: space-between; align-items: center; }
.batch-col-b { padding: 6px 14px 10px; max-height: 420px; overflow-y: auto; }
.batch-item { display: flex; align-items: center; gap: 8px; padding: 7px 0; border-bottom: 1px dashed var(--c-border); font-size: 13px; }
.batch-item:last-child { border-bottom: 0; }
.batch-summary { background: #fff; border: 1px solid var(--c-border); border-radius: 8px; padding: 12px 16px; margin: 14px 0; display: flex; gap: 24px; font-size: 13px; align-items: center; }
.batch-summary .bs-item b { color: var(--c-primary-dark); font-size: 18px; margin-right: 6px; }

/* —— v3 评分结果 / 分配总览 评审中/已完评 状态 —— */
.tag-mini { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.tag-progress { background: #e6f2fb; color: #1b7bc5; }
.tag-done { background: #eaf6ec; color: #1f9d55; }
.tag-fee { background: #fff1e8; color: #c2520a; }

/* —— v3 评分列 —— */
.score-cell { display: flex; flex-direction: column; line-height: 1.35; }
.score-cell .en { font-size: 11px; color: var(--c-muted); }
.score-cell .sv { font-weight: 700; color: var(--c-primary-dark); font-size: 15px; }
.score-cell .sv.pending { color: var(--c-muted); font-weight: 400; font-size: 13px; }

/* —— v3 统计卡片 —— */
.stat-card { background: #fff; border: 1px solid var(--c-border); border-radius: 8px; padding: 14px 18px; box-shadow: var(--shadow); }
.stat-card .k { font-size: 13px; color: var(--c-muted); margin-bottom: 4px; }
.stat-card .v { font-size: 24px; font-weight: 700; color: var(--c-primary-dark); }

/* —— v3 未缴费行 —— */
.row-fee { background: #fff5ec !important; }
.row-fee td:first-child { border-left: 3px solid var(--c-warn); }

/* —— v3 详情页 wd-（word/pdf/field 三态） —— */
#wd-word:checked ~ #page-word,
#wd-pdf:checked ~ #page-pdf,
#wd-field:checked ~ #page-field { display: block !important; }

/* —— v3 通用 .panel 容器（如果没定义） —— */
.panel { background: #fff; border: 1px solid var(--c-border); border-radius: 8px; box-shadow: var(--shadow); margin-bottom: 14px; overflow: hidden; }
.panel-h { padding: 10px 14px; background: var(--c-primary-tint); border-bottom: 1px solid var(--c-border); font-weight: 700; color: var(--c-primary-dark); font-size: 14px; display: flex; justify-content: space-between; align-items: center; }
.panel-b { padding: 12px 16px; }

/* —— v3 页面标题区 —— */
.page-h h1 { font-size: 22px; color: var(--c-primary-dark); margin-bottom: 6px; }
.page-sub { color: var(--c-muted); font-size: 13px; margin-bottom: 16px; }


/* —— v3 布局修复：.layout + .side 兼容 .body + .sidebar —— */
.layout { display: flex; align-items: flex-start; min-height: calc(100vh - var(--topbar-h)); }
.layout > .side,
.layout > .sidebar { width: var(--side-w); min-width: var(--side-w); max-width: var(--side-w); flex: 0 0 var(--side-w); background: #fff; border-right: 1px solid var(--c-border); position: sticky; top: var(--topbar-h); align-self: flex-start; height: calc(100vh - var(--topbar-h)); overflow-y: auto; }
.layout > .main { flex: 1; min-width: 0; padding: 20px 26px 40px; }
.side .side-item, .sidebar .side-item { width: 100%; box-sizing: border-box; }
.side .side-h, .sidebar .side-h { padding: 14px 20px 10px; font-size: 12.5px; color: var(--c-muted); font-weight: 600; letter-spacing: 1px; }

/* —— 旧结构兼容（.app > .body > .sidebar + .main） —— */
.app { display: flex; flex-direction: column; min-height: 100vh; }
.app > .body { display: flex; flex: 1; min-height: 0; }
.app > .body > .sidebar,
.app > .body > .side { width: var(--side-w); min-width: var(--side-w); max-width: var(--side-w); flex: 0 0 var(--side-w); background: #fff; border-right: 1px solid var(--c-border); position: sticky; top: var(--topbar-h); align-self: flex-start; height: calc(100vh - var(--topbar-h)); overflow-y: auto; }
.app > .body > .main { flex: 1; min-width: 0; padding: 20px 26px 40px; }

/* —— topbar session 容器 —— */
.topbar { display: flex; align-items: center; height: var(--topbar-h); padding: 0 22px; background: linear-gradient(90deg, var(--c-primary-dark), var(--c-primary)); color: #fff; box-shadow: var(--shadow); position: sticky; top: 0; z-index: 10; }