*{box-sizing:border-box}
:root{
  --bg:#f5f7fb;--panel:#fff;--text:#1f2937;--muted:#6b7280;--line:#e5e7eb;
  --blue:#2563eb;--blue-soft:#eff6ff;--green:#059669;--green-soft:#ecfdf5;
  --orange:#f97316;--orange-soft:#fff7ed;--purple:#7c3aed;--purple-soft:#f5f3ff;
  --red:#dc2626;--red-soft:#fef2f2;--slate:#334155;--slate-soft:#f8fafc;
}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}
.topbar{height:58px;background:linear-gradient(90deg,#0f172a,#1e3a8a);color:#fff;display:flex;align-items:center;padding:0 20px;gap:18px;position:sticky;top:0;z-index:20;box-shadow:0 2px 10px rgba(15,23,42,.18)}
.brand{font-weight:800;letter-spacing:.3px;font-size:16px}.topbar a{color:#dbeafe;text-decoration:none;margin-right:12px;font-size:14px}.topbar a:hover{color:#fff}.layout{display:flex}.sidebar{width:248px;background:#fff;border-right:1px solid var(--line);min-height:calc(100vh - 58px);padding:14px 12px;overflow:auto;position:sticky;top:58px;align-self:flex-start;max-height:calc(100vh - 58px)}
.sidebar-section{margin:0 0 12px;border-bottom:1px solid #f1f5f9;padding-bottom:10px}.sidebar-section:last-child{border-bottom:0}.sidebar-title{font-size:13px;font-weight:800;margin:10px 4px 8px;padding:6px 9px;border-radius:9px;letter-spacing:.2px;display:flex;align-items:center}.sidebar-title:before{content:"";width:4px;height:14px;border-radius:99px;margin-right:7px;background:currentColor}.section-home .sidebar-title{color:#1d4ed8;background:#eff6ff}.section-register .sidebar-title{color:#047857;background:#ecfdf5}.section-mine .sidebar-title{color:#7c3aed;background:#f5f3ff}.section-rules-view .sidebar-title{color:#b45309;background:#fffbeb}.section-supervisor .sidebar-title{color:#0369a1;background:#f0f9ff}.section-manage-view .sidebar-title{color:#334155;background:#f8fafc}.section-stat .sidebar-title{color:#be123c;background:#fff1f2}.section-settings .sidebar-title{color:#4338ca;background:#eef2ff}.section-system .sidebar-title{color:#52525b;background:#f4f4f5}
.sidebar a{display:block;padding:8px 11px;border-radius:9px;text-decoration:none;color:#334155;font-size:14px;margin:2px 0;border:1px solid transparent;transition:background .15s,color .15s,border-color .15s,transform .05s}.sidebar a:hover{background:#f8fafc;border-color:#e2e8f0;color:#0f172a}.sidebar a.active{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd;font-weight:700}.sidebar a:active{transform:translateY(1px)}
.main{flex:1;padding:22px;overflow:auto;min-width:0}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:17px;margin-bottom:16px;box-shadow:0 1px 4px rgba(15,23,42,.04)}h1{font-size:23px;margin:0 0 16px;font-weight:800;color:#0f172a}h2{font-size:18px;margin:0 0 12px;font-weight:800;color:#111827}.muted{color:var(--muted);font-size:13px}.grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px}.metric{background:linear-gradient(180deg,#fff,#f8fafc);border:1px solid var(--line);border-radius:12px;padding:14px}.metric .num{font-size:24px;font-weight:800;margin-top:6px;color:#1d4ed8}table{width:100%;border-collapse:collapse;background:#fff}th,td{border-bottom:1px solid var(--line);padding:8px 9px;text-align:left;font-size:13px;vertical-align:top}th{background:#f8fafc;color:#334155;white-space:nowrap;font-weight:800}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:11px;background:#fff}input,select,textarea{width:100%;padding:8px 9px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;font-family:inherit;font-size:13px}input:focus,select:focus,textarea:focus{outline:2px solid #bfdbfe;border-color:#60a5fa}textarea{min-height:70px}.btn{display:inline-block;border:0;background:var(--blue);color:#fff;padding:8px 13px;border-radius:9px;text-decoration:none;cursor:pointer;font-size:14px;font-weight:600}.btn:hover{filter:brightness(.96)}.btn.secondary{background:#64748b}.btn.ghost{background:#fff;color:var(--blue);border:1px solid #93c5fd}.btn.danger{background:var(--red)}.btn.small{padding:5px 8px;font-size:12px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0}.flash{padding:10px 12px;border-radius:9px;margin-bottom:12px}.flash.success{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.flash.danger{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.flash.warning{background:#fffbeb;color:#92400e;border:1px solid #fde68a}.pill{display:inline-block;padding:2px 7px;border-radius:999px;background:#eef2ff;color:#3730a3;font-size:12px;font-weight:700}.pill.gray{background:#f3f4f6;color:#374151}.pill.red{background:#fee2e2;color:#991b1b}.pill.green{background:#d1fae5;color:#065f46}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:12px}.form-grid .wide{grid-column:span 2}.form-grid .full{grid-column:1/-1}.login-box{max-width:420px;margin:80px auto}.notice{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;border-radius:11px;padding:12px;margin-bottom:14px}.nowrap{white-space:nowrap}.right{text-align:right}.page-loading{display:none;position:fixed;right:22px;bottom:22px;background:#0f172a;color:#fff;padding:10px 14px;border-radius:999px;box-shadow:0 8px 24px rgba(15,23,42,.25);z-index:99;font-size:13px}.page-loading.show{display:block}
@media(max-width:900px){.layout{display:block}.sidebar{width:auto;min-height:0;position:static;max-height:none}.grid,.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}}
/* v11 登录页优化 */
.login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr 440px;align-items:center;gap:44px;padding:56px 8vw;background:linear-gradient(135deg,#e0f2fe 0%,#eef2ff 45%,#f8fafc 100%);position:relative;overflow:hidden}
.login-page:before{content:"";position:absolute;right:-120px;top:-120px;width:360px;height:360px;background:rgba(37,99,235,.12);border-radius:50%}.login-page:after{content:"";position:absolute;left:-120px;bottom:-160px;width:420px;height:420px;background:rgba(5,150,105,.10);border-radius:50%}.login-hero,.login-card{position:relative;z-index:1}.login-hero h1{font-size:42px;line-height:1.15;margin:14px 0 14px;color:#0f172a;letter-spacing:.5px}.login-badge{display:inline-block;background:#dbeafe;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:999px;padding:7px 13px;font-weight:800}.login-subtitle{font-size:18px;color:#475569;margin:0 0 22px}.login-tags{display:flex;gap:10px;flex-wrap:wrap}.login-tags span{background:#fff;border:1px solid #e2e8f0;border-radius:999px;padding:8px 13px;color:#334155;font-weight:700;box-shadow:0 1px 8px rgba(15,23,42,.04)}.login-card{max-width:440px;margin:0;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.9);box-shadow:0 20px 50px rgba(15,23,42,.14);padding:28px}.login-card h2{font-size:26px;margin-bottom:6px}.login-form{display:grid;gap:10px;margin-top:18px}.login-form label{font-weight:800;color:#334155}.login-form input{height:44px;font-size:15px}.login-btn{height:45px;margin-top:8px;font-size:15px;width:100%}.login-note{margin-top:16px;background:#f8fafc;border:1px solid #e2e8f0;color:#64748b;border-radius:12px;padding:11px;line-height:1.6;font-size:13px}
@media(max-width:900px){.login-page{grid-template-columns:1fr;padding:34px 18px;gap:20px}.login-hero h1{font-size:30px}.login-card{max-width:none;width:100%}}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}
.card-head h2{margin:0;}
/* V1 看板与移动端优化 */
.two-col{grid-template-columns:repeat(2,minmax(260px,1fr));}
.mini-bars{display:grid;gap:8px;margin:10px 0 16px;}
.bar-row{display:grid;grid-template-columns:180px 1fr 80px;align-items:center;gap:10px;font-size:13px;}
.bar-row b{display:block;height:12px;min-width:0;border-radius:999px;background:linear-gradient(90deg,#60a5fa,#2563eb);}
.bar-row em{font-style:normal;text-align:right;color:#475569;font-weight:700;}
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:80;display:flex;align-items:center;justify-content:center;padding:20px;}
.modal-card{background:#fff;border-radius:16px;box-shadow:0 22px 70px rgba(15,23,42,.25);max-width:980px;width:100%;max-height:86vh;overflow:auto;padding:18px;border:1px solid #e5e7eb;}
.password-wrap{position:relative;display:flex;align-items:center;}
.password-wrap input{padding-right:58px;}
.show-pass{position:absolute;right:6px;border:0;background:#eef2ff;color:#1d4ed8;border-radius:8px;padding:6px 9px;cursor:pointer;font-weight:700;}
.check-line{display:flex!important;align-items:center;gap:8px;font-weight:700!important;color:#334155;}
.check-line input{width:auto;height:auto;}
@media(max-width:760px){
  .main{padding:14px}.topbar{padding:0 12px}.sidebar{padding:10px}.card{padding:13px}.grid,.two-col{grid-template-columns:1fr}.metric .num{font-size:22px}
  .table-wrap{border:0;overflow:visible;background:transparent}
  .table-wrap table,.table-wrap thead,.table-wrap tbody,.table-wrap tr,.table-wrap th,.table-wrap td{display:block;width:100%}
  .table-wrap thead{display:none}.table-wrap tr{background:#fff;border:1px solid var(--line);border-radius:12px;margin:0 0 10px;padding:8px;box-shadow:0 1px 4px rgba(15,23,42,.04)}
  .table-wrap td{border-bottom:1px solid #f1f5f9;padding:7px 8px}.table-wrap td:last-child{border-bottom:0}
  .bar-row{grid-template-columns:1fr}.bar-row em{text-align:left}.bar-row b{width:100%!important}
  .login-page{min-height:100vh;grid-template-columns:1fr;padding:28px 16px}.login-hero h1{font-size:28px;text-align:center}.login-card{padding:20px}
}

/* V2 UI/体验优化 */
:root{
  --navy:#0f172a;--primary:#3158e7;--primary-dark:#1d4ed8;--soft-blue:#edf5ff;
  --soft-cyan:#ecfeff;--soft-violet:#f5f3ff;--soft-amber:#fffbeb;--soft-rose:#fff1f2;
  --shadow-sm:0 2px 8px rgba(15,23,42,.06);--shadow-md:0 14px 38px rgba(15,23,42,.10);
}
body{background:linear-gradient(180deg,#f7f9fd 0%,#f2f6fb 100%);color:#172033;font-size:14px;}
.topbar{height:56px;background:linear-gradient(90deg,#111827,#1e3a8a 70%,#2746a5);box-shadow:0 8px 22px rgba(15,23,42,.18);}
.brand{font-size:17px;letter-spacing:.6px}.topbar-role{color:#dbeafe;font-size:13px}.topbar-spacer{flex:1}.topbar-user{padding:7px 10px;border-radius:9px;background:rgba(255,255,255,.08)}.topbar-user:hover{background:rgba(255,255,255,.14)}
.topbar-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;background:rgba(255,255,255,.08);margin-right:8px;text-decoration:none}.topbar-bell:hover{background:rgba(255,255,255,.16)}.bell-icon{font-size:17px}.bell-badge{position:absolute;right:1px;top:1px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:11px;font-weight:800;line-height:17px;text-align:center;border:2px solid #1e3a8a}
.sidebar{width:250px;background:rgba(255,255,255,.94);box-shadow:inset -1px 0 0 #e5e7eb;padding:12px 11px}.sidebar-section{border-bottom:0;margin-bottom:8px;padding-bottom:4px}.sidebar-title{position:relative;cursor:pointer;user-select:none;justify-content:flex-start;padding:8px 10px}.collapse-arrow{margin-left:auto;font-size:11px;color:currentColor;opacity:.75;transition:transform .18s}.sidebar-section.collapsed .collapse-arrow{transform:rotate(-90deg)}.sidebar-section.collapsed .nav-link{display:none}.sidebar a{padding:9px 12px 9px 20px;border-radius:10px;margin:3px 0;position:relative}.sidebar a.active{background:#eaf2ff;border-color:#93c5fd;color:#1d4ed8;box-shadow:0 2px 8px rgba(37,99,235,.10)}.sidebar a.active:before{content:"";position:absolute;left:7px;top:9px;bottom:9px;width:4px;border-radius:999px;background:#3158e7}.sidebar a:hover{background:#f6f8fc;}
.main{padding:24px 26px}.card{border:1px solid #e3e8f1;border-radius:18px;box-shadow:var(--shadow-sm);padding:18px;background:rgba(255,255,255,.96)}.card:hover{box-shadow:0 6px 18px rgba(15,23,42,.06)}h1{font-size:24px;margin-bottom:14px}.page-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:2px 0 18px}.page-title h1{margin:0}.page-subtitle{color:#64748b;margin-top:6px;font-size:13px}.actions{background:#fff;border:1px solid #e6ebf3;border-radius:14px;padding:10px;box-shadow:0 1px 4px rgba(15,23,42,.03)}.actions .btn{margin:0}.btn{border-radius:10px;padding:8px 14px;background:linear-gradient(180deg,#3b63f2,#2f54dd);box-shadow:0 3px 9px rgba(37,99,235,.18)}.btn.ghost{box-shadow:none;background:#fff;color:#3158e7;border-color:#a8c4ff}.btn.secondary{background:#64748b}.btn.danger{background:#dc2626}.btn.small{border-radius:8px;padding:5px 8px}.grid{gap:14px}.metric{position:relative;overflow:hidden;border-radius:16px;padding:16px;border-color:#e6ebf3;background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 2px 8px rgba(15,23,42,.04)}.metric:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:#3158e7}.metric .num{font-size:26px;color:#3158e7}.metric.blue:before{background:#3158e7}.metric.blue .num{color:#3158e7}.metric.green:before{background:#059669}.metric.green .num{color:#059669}.metric.orange:before{background:#f97316}.metric.orange .num{color:#ea580c}.metric.purple:before{background:#7c3aed}.metric.purple .num{color:#7c3aed}.metric.red:before{background:#dc2626}.metric.red .num{color:#dc2626}.metric.slate:before{background:#475569}.metric.slate .num{color:#475569}.section-card{position:relative}.section-card:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;border-radius:18px 18px 0 0;background:#3158e7}.section-card.blue:before{background:#3158e7}.section-card.green:before{background:#059669}.section-card.orange:before{background:#f97316}.section-card.purple:before{background:#7c3aed}.section-card.red:before{background:#dc2626}.section-card.cyan:before{background:#0891b2}.section-card.slate:before{background:#475569}
.table-wrap{border-radius:14px;border-color:#e6ebf3;box-shadow:0 1px 4px rgba(15,23,42,.03)}th{position:sticky;top:0;z-index:1;background:#f4f7fb;color:#243044}td,th{padding:10px 11px}tbody tr:hover{background:#f8fbff}.pill{padding:3px 9px;border-radius:999px}.pill.blue{background:#dbeafe;color:#1d4ed8}.pill.orange{background:#ffedd5;color:#c2410c}.pill.purple{background:#ede9fe;color:#6d28d9}.pill.red{background:#fee2e2;color:#b91c1c}.pill.green{background:#dcfce7;color:#15803d}.pill.slate{background:#e2e8f0;color:#334155}.empty-state{padding:34px 20px;text-align:center;color:#64748b;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:14px}.empty-state strong{display:block;color:#334155;margin-bottom:4px}.mini-bars{background:#f8fafc;border:1px solid #e6ebf3;border-radius:14px;padding:12px}.bar-row{grid-template-columns:minmax(160px,220px) 1fr 78px}.bar-row b{height:13px;background:linear-gradient(90deg,#93c5fd,#3158e7);box-shadow:0 2px 6px rgba(49,88,231,.14)}
.login-page{grid-template-columns:minmax(360px,1fr) 420px;background:radial-gradient(circle at 92% -10%,rgba(49,88,231,.13) 0,rgba(49,88,231,.13) 16%,transparent 17%),radial-gradient(circle at 3% 100%,rgba(6,182,212,.12) 0,rgba(6,182,212,.12) 14%,transparent 15%),linear-gradient(135deg,#eaf6ff 0%,#eef3ff 52%,#f9fbff 100%);}
.login-hero h1{font-size:44px;letter-spacing:.8px;text-shadow:0 1px 0 rgba(255,255,255,.8)}.login-card{max-width:420px;border-radius:20px;padding:30px;box-shadow:0 26px 70px rgba(15,23,42,.14);border:1px solid rgba(226,232,240,.9)}.login-card h2{font-size:26px}.login-form{gap:9px}.login-form input{height:46px;border-radius:11px}.login-options{display:flex;align-items:center;gap:18px;margin:2px 0 6px}.check-line{display:inline-flex!important;width:auto!important;font-size:13px;font-weight:700!important;gap:6px;white-space:nowrap}.check-line input{width:15px!important;height:15px!important;margin:0;accent-color:#3158e7}.show-pass{right:8px;width:34px;height:30px;padding:0;border-radius:9px;font-size:15px;background:#f1f5f9;color:#1d4ed8}.password-wrap input{padding-right:50px}.login-btn{height:46px;border-radius:11px}.login-note{display:none!important}
@media(max-width:980px){.login-page{grid-template-columns:1fr;gap:20px}.login-hero h1{text-align:center;font-size:34px}.login-card{margin:0 auto;width:min(100%,420px)}}
@media(max-width:760px){.topbar{height:54px}.brand{font-size:16px}.topbar-role{display:none}.topbar-bell{width:34px;height:34px}.layout{display:block}.sidebar{width:100%;position:static;max-height:none;border-bottom:1px solid #e5e7eb}.sidebar-section.collapsed .nav-link{display:none}.main{padding:14px}.page-title{display:block}.actions{display:flex}.login-options{gap:12px;justify-content:space-between}.login-page{padding:26px 16px}.login-hero h1{font-size:29px}.login-card{padding:22px}.card{border-radius:15px}.metric{border-radius:14px}}

/* V2.1 confirmed refinements */
.section-points .sidebar-title{color:#a16207;background:#fef9c3}.section-register .sidebar-title{color:#047857;background:#ecfdf5}.menu-subgroup{font-size:12px;color:#64748b;font-weight:800;padding:8px 12px 3px;margin-top:4px;border-top:1px dashed #e2e8f0}.menu-subgroup:first-of-type{border-top:0}
.entry-form{background:#fff;border:1px solid #e6ebf3;border-radius:14px;padding:14px;box-shadow:0 1px 4px rgba(15,23,42,.03);margin-bottom:16px}.entry-page .table-wrap{box-shadow:none}.danger-light{color:#b91c1c!important;border-color:#fecaca!important;background:#fff!important}.suggest-hint{font-size:12px;line-height:1.4;margin-top:5px;color:#64748b}.suggest-hint.ok{color:#166534}.suggest-hint.warn{color:#b45309}
.exchange-hero{display:flex;justify-content:space-between;gap:18px;align-items:center;background:linear-gradient(135deg,#edf5ff,#fff7ed);border:1px solid #dbeafe;border-radius:20px;padding:22px;margin-bottom:14px;box-shadow:0 8px 24px rgba(15,23,42,.07)}.exchange-score{font-size:46px;font-weight:900;color:#3158e7;letter-spacing:.5px}.exchange-stats{display:grid;grid-template-columns:repeat(3,120px);gap:10px}.exchange-stats div{background:rgba(255,255,255,.75);border:1px solid #e6ebf3;border-radius:14px;padding:12px;text-align:center}.exchange-stats span{display:block;color:#64748b;font-size:12px}.exchange-stats b{display:block;font-size:20px;color:#0f172a;margin-top:4px}.prize-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.prize-card{background:#fff;border:1px solid #e6ebf3;border-radius:18px;padding:18px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.prize-card:before{content:"";position:absolute;left:0;top:0;right:0;height:5px;background:linear-gradient(90deg,#3158e7,#f59e0b)}.prize-card.disabled{opacity:.72}.gift-icon{font-size:26px;margin-bottom:8px}.prize-card h2{margin-bottom:6px}.cost{font-size:28px;font-weight:900;color:#f97316;margin:10px 0}.cost span{font-size:13px;color:#64748b}.prize-card form{display:grid;gap:8px;margin-top:12px}.prize-card button:disabled{cursor:not-allowed;filter:grayscale(.2)}
@media(max-width:760px){.exchange-hero{display:block}.exchange-stats{grid-template-columns:1fr;margin-top:12px}.exchange-score{font-size:38px}.prize-grid{grid-template-columns:1fr}}


/* 批量优化：左侧目录折叠、紧凑化、排名条修正 */
.sidebar-section.collapsed .nav-link{
  display:none !important;
}

.sidebar-section{
  margin-bottom:6px !important;
  padding-bottom:2px !important;
  border-bottom:0 !important;
}

.sidebar-title{
  margin:6px 0 4px !important;
  padding:8px 10px !important;
  min-height:34px;
}

.sidebar a.nav-link{
  padding:7px 10px 7px 22px !important;
  margin:1px 0 !important;
  font-size:13px !important;
  border-bottom:0 !important;
  box-shadow:none;
}

.sidebar a.nav-link.active{
  font-weight:800 !important;
}

.mini-bars{
  padding:12px !important;
}

.bar-row{
  min-height:22px;
}

.bar-row b{
  min-width:0 !important;
}

.bar-row b[style*="width:0"]{
  box-shadow:none !important;
}
/* PHP兼容：旧视图 tag 样式映射 */
.tag{display:inline-block;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:700;background:#eef2ff;color:#3730a3}.tag.green{background:#d1fae5;color:#065f46}.tag.red{background:#fee2e2;color:#991b1b}.tag.orange{background:#ffedd5;color:#c2410c}.tag.blue{background:#dbeafe;color:#1d4ed8}.section-line{position:relative}.section-line:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;border-radius:18px 18px 0 0;background:#3158e7}.section-green,.section-red{position:relative}.section-green:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;border-radius:18px 18px 0 0;background:#059669}.section-red:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;border-radius:18px 18px 0 0;background:#dc2626}.label{color:#64748b;font-size:13px}.rankbar{height:14px;background:#eef2ff;border-radius:999px;overflow:hidden}.rankbar span{display:block;height:100%;background:linear-gradient(90deg,#93c5fd,#3158e7);border-radius:999px}.danger-light{color:#b91c1c!important;border-color:#fecaca!important;background:#fff!important}.entry-form{background:#fff;border:1px solid #e6ebf3;border-radius:14px;padding:14px;box-shadow:0 1px 4px rgba(15,23,42,.03);margin-bottom:16px}.suggest-hint{font-size:12px;line-height:1.4;margin-top:5px;color:#64748b}.suggest-hint.ok{color:#166534}.suggest-hint.warn{color:#b45309}.autosave-status.ok{color:#07823f;font-weight:700}.autosave-status.bad,.autosave-status.err{color:#cf1322;font-weight:700}.autosave-status.warn{color:#ad6800;font-weight:700}.row-saved,.saved-row{opacity:.72;background:#f6ffed}.hint-danger{margin-top:6px;padding:7px 9px;border:1px solid #ff4d4f;background:#fff1f0;color:#cf1322;border-radius:8px;font-size:12px}.hint-ok{margin-top:6px;color:#087d44;font-size:12px}
.sub{color:#64748b;margin-top:0;margin-bottom:16px;font-size:13px}.content{flex:1;padding:28px;min-width:0}.wrap{display:flex}.user-info{display:flex;gap:14px;align-items:center}.user-info a{color:#fff}.table{width:100%;border-collapse:collapse;min-width:780px}.primary{background:var(--blue);color:#fff}.secondary{background:#64748b!important;color:#fff!important}
/* V8 正式修正版 */
.topbar-bell{position:relative}.notify-badge{position:absolute;right:-3px;top:-5px;min-width:18px;height:18px;line-height:18px;border-radius:999px;background:#dc2626;color:#fff;font-size:11px;font-weight:900;text-align:center;padding:0 4px;border:2px solid #2946a7}.unread-row{background:#fff7ed}.notice.danger{border-color:#fecaca;background:#fff1f2;color:#b91c1c}.form-grid textarea{min-height:84px;resize:vertical}.honor-form input[readonly]{background:#f8fafc;color:#334155}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.topbar-bell .bell-icon{display:inline-block;line-height:1}
/* V9 正式修正版：规则结构、员工端隐藏贡献值、顶部布局防遮挡 */
.topbar{width:100%;min-width:0;overflow:visible}.brand{flex:0 0 auto;white-space:nowrap}.topbar-role{flex:0 1 auto;min-width:0;white-space:nowrap}.layout{width:100%;min-width:0}.sidebar{flex:0 0 248px}.main{min-width:0}.deduction-form input[readonly],.honor-form input[readonly]{background:#f8fafc;color:#334155}.danger-light{background:#fff!important;color:#b91c1c!important;border:1px solid #fecaca!important}

.inline-upload{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-upload input[type=file]{max-width:260px}.nowrap{white-space:nowrap}pre{background:#0f172a;color:#e2e8f0;padding:14px;border-radius:12px;overflow:auto}

.permission-table th,.permission-table td{vertical-align:top;min-width:140px}.perm-cell{font-size:12px;line-height:1.8}.check-inline{display:inline-block;margin-right:10px;white-space:nowrap}.action-cell{white-space:nowrap}.btn.danger{color:#dc2626;border-color:#fecaca;background:#fff5f5}.btn.danger:hover{background:#fee2e2}
/* V17 role permission templates */
.role-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:10px}
.role-tab{border:1px solid #dbe5f4;background:#fff;border-radius:12px;padding:12px;text-align:left;cursor:pointer;color:#0f172a;box-shadow:0 1px 3px rgba(15,23,42,.06)}
.role-tab span{display:block;margin-top:6px;color:#64748b;font-size:12px;line-height:1.5}
.role-tab.active{border-color:#4f6bed;background:#eef4ff;box-shadow:0 4px 14px rgba(79,107,237,.15)}
.role-panel.hidden{display:none}
.permission-group{border:1px solid #e5eaf3;border-radius:12px;margin:14px 0;padding:12px;background:#fff}
.permission-group h4{margin:0 0 10px;color:#0f172a}
.compact-table th,.compact-table td{padding:8px 10px;text-align:center;vertical-align:middle}
.compact-table td:first-child,.compact-table th:first-child{text-align:left}
.small{padding:5px 9px;font-size:12px}
@media(max-width:1200px){.role-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V18 权限和长表格体验优化 */
.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;position:sticky;top:56px;z-index:7;background:#fff;}
.filter-bar input,.filter-bar select{max-width:220px;min-width:150px;}
.sticky-card-head{position:relative;}
.freeze-table{max-height:70vh;overflow:auto;}
.freeze-table table{border-collapse:separate;border-spacing:0;min-width:1100px;}
.freeze-table thead th,.permission-table thead th{position:sticky;top:0;z-index:4;background:#f4f7fb;box-shadow:0 1px 0 #e5e7eb;}
.sticky-col{position:sticky!important;left:0;z-index:3;background:#fff;box-shadow:1px 0 0 #e5e7eb;}
thead .sticky-col{z-index:5;background:#f4f7fb!important;}
.sticky-action{position:sticky!important;right:0;z-index:3;background:#fff;box-shadow:-1px 0 0 #e5e7eb;min-width:120px;}
thead .sticky-action{z-index:5;background:#f4f7fb!important;}
.role-permission-sticky{position:sticky;top:56px;z-index:10;background:#fff;}
.permission-titlebar{position:sticky;top:56px;z-index:9;background:#fff;border:1px solid #e6ebf3;border-radius:14px;padding:10px 12px;margin:-4px -4px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 3px 12px rgba(15,23,42,.06);}
.permission-titlebar h2{margin:0;}
.permission-table th:first-child,.permission-table td:first-child{position:sticky;left:0;z-index:3;background:#fff;box-shadow:1px 0 0 #e5e7eb;}
.permission-table thead th:first-child{z-index:5;background:#f4f7fb!important;}
.mini-edit-form{display:grid;gap:8px;min-width:240px;padding:10px;margin-top:8px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 8px 18px rgba(15,23,42,.08);}
.mini-edit-form label{display:grid;gap:4px;font-size:12px;color:#475569;}
.mini-edit-form input{height:32px;}

/* V19 横向滚动、规则筛选和任务修正优化 */
.x-scroll{overflow:auto;max-width:100%;}
.table-scroll-note{font-size:12px;color:#64748b;margin-bottom:8px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:8px 10px;}
.rule-filter-bar,.admin-task-filter{position:sticky;top:56px;z-index:8;background:#fff;border:1px solid #e6ebf3;border-radius:14px;padding:12px;box-shadow:0 3px 12px rgba(15,23,42,.04);}
.rule-filter-bar select,.rule-filter-bar input,.admin-task-filter select,.admin-task-filter input{max-width:240px;min-width:160px;}
.rule-wide-table{min-width:1900px;}
.rule-wide-table input,.rule-wide-table select{min-width:110px;}
.rule-wide-table td:nth-child(5) input{min-width:150px;}
.rule-wide-table td:nth-child(11) input,.rule-wide-table td:nth-child(12) input,.rule-wide-table td:nth-child(13) input{min-width:240px;}
.admin-task-wide-table{min-width:2100px;}
.admin-task-wide-table th,.admin-task-wide-table td{white-space:nowrap;}
.admin-task-wide-table td:nth-child(6){white-space:normal;min-width:260px;max-width:360px;}
.admin-task-wide-table td:nth-child(17){white-space:normal;min-width:180px;max-width:260px;}
.sticky-col-2{left:46px!important;}
.batch-edit-bar{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:10px;margin:10px 0;}
.batch-edit-bar select,.batch-edit-bar input{max-width:260px;min-width:180px;}
.task-correction-form{min-width:360px;max-height:70vh;overflow:auto;}
.task-correction-form label{font-size:12px;}
.hidden{display:none!important;}


/* V20 后台维护页面排版优化：表格首行新增、导入区域紧凑、长表横向滚动 */
.admin-upload-panel{padding:14px 16px;background:#fff;border:1px solid #e6ebf3;border-radius:16px;box-shadow:0 2px 10px rgba(15,23,42,.04)}
.upload-actions{display:grid;grid-template-columns:auto minmax(320px,1fr) auto;align-items:center;gap:12px;max-width:920px}
.upload-actions .inline-upload,.upload-actions .inline-form{display:flex;align-items:center;gap:10px;margin:0;flex-wrap:nowrap}
.upload-actions input[type=file]{height:38px;max-width:360px;background:#fff}
.upload-actions .btn,.upload-actions .primary{white-space:nowrap;height:38px;display:inline-flex;align-items:center;justify-content:center}
.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px;flex-wrap:wrap}
.table-toolbar .hint{font-size:12px;color:#64748b;background:#f8fafc;border:1px solid #e5e7eb;border-radius:999px;padding:6px 10px}
.inline-add-row td{background:#f8fbff!important;border-bottom:1px solid #dbeafe!important;vertical-align:middle}
.inline-add-row input,.inline-add-row select,.inline-add-row textarea{background:#fff;border-color:#bfdbfe}
.inline-add-row .add-label{font-weight:900;color:#1d4ed8;white-space:nowrap}
.inline-add-row .btn{box-shadow:0 5px 12px rgba(49,88,231,.18)}
.rule-wide-table td,.rule-wide-table th{white-space:nowrap}
.rule-wide-table td:nth-child(11),.rule-wide-table td:nth-child(12),.rule-wide-table td:nth-child(13){white-space:normal}
.data-table .inline-add-row td{background:#f8fbff!important}
.sticky-table-title{position:sticky;top:56px;z-index:9;background:#fff;padding:10px 0 8px;margin-top:-4px}
.compact-table-wrap{overflow:auto;border:1px solid #e5eaf3;border-radius:14px;background:#fff;max-width:100%}
.compact-table-wrap table{min-width:1180px}
.action-cell .btn{margin:2px}
@media(max-width:900px){.upload-actions{grid-template-columns:1fr}.upload-actions .inline-upload,.upload-actions .inline-form{flex-wrap:wrap}.upload-actions input[type=file]{max-width:none;width:100%}}

/* V21：角色菜单、登录插画与现代办公视觉 */
.sidebar{background:#101d3a;color:#dbe7ff;border:0;box-shadow:4px 0 22px rgba(15,23,42,.10)}
.sidebar-section{padding:4px 6px 10px;margin:0 0 6px;border-bottom:1px solid rgba(255,255,255,.07)}
.sidebar-title{color:#fff!important;background:transparent!important;font-size:14px;padding:9px 10px;margin:4px 0;font-weight:800}.sidebar-title:before{background:#7895ff}
.sidebar a.nav-link{color:#bfcbe3;border:0;padding:8px 12px 8px 22px}.sidebar a.nav-link:hover{background:rgba(255,255,255,.08);color:#fff}.sidebar a.nav-link.active{background:linear-gradient(90deg,#536fe8,#6d5fe6);color:#fff;border:0;box-shadow:0 7px 18px rgba(46,61,150,.35)}.sidebar a.nav-link.active:before{background:#fff}
.topbar{background:linear-gradient(90deg,#101d3a,#243f88 68%,#584fb6)}.topbar-month{background:rgba(255,255,255,.09);padding:7px 10px;border-radius:9px}.mobile-menu{display:none;background:transparent;color:#fff;border:0;font-size:20px;padding:4px}
.login-page{grid-template-columns:minmax(420px,1fr) 410px;min-height:100vh;align-items:center}.login-card{justify-self:start;width:410px}.login-hero{min-height:470px;display:flex;align-items:center;justify-content:center}.login-illustration{width:min(540px,90%);height:390px;position:relative}.ill-window{position:absolute;inset:45px 35px 55px;background:rgba(255,255,255,.84);border:1px solid rgba(255,255,255,.95);border-radius:24px;box-shadow:0 30px 70px rgba(43,61,133,.16);transform:rotate(-2deg);overflow:hidden}.ill-dots{height:44px;background:#f4f7ff;display:flex;gap:7px;align-items:center;padding:0 18px}.ill-dots i{width:9px;height:9px;border-radius:50%;background:#9eade2}.ill-dots i:first-child{background:#ff9f9f}.ill-dots i:nth-child(2){background:#ffd27b}.ill-body{display:grid;grid-template-columns:1fr 1.15fr;gap:26px;padding:42px 32px;height:240px}.ill-list{display:grid;gap:17px}.ill-list b{height:13px;border-radius:99px;background:linear-gradient(90deg,#cdd9fb 72%,transparent 72%)}.ill-list b:nth-child(2){background:linear-gradient(90deg,#8ba4f5 50%,transparent 50%)}.ill-list b:nth-child(3){background:linear-gradient(90deg,#cdd9fb 86%,transparent 86%)}.ill-chart{display:flex;align-items:flex-end;gap:12px;border-left:2px solid #e0e7f7;border-bottom:2px solid #e0e7f7;padding:12px;height:155px}.ill-chart span{width:25px;border-radius:8px 8px 3px 3px;background:linear-gradient(#8275e9,#4e70e9)}.ill-card{position:absolute;background:#fff;border:1px solid #e7ecfb;border-radius:17px;box-shadow:0 18px 38px rgba(52,70,145,.16);padding:15px 20px;color:#4059ca;font-size:27px;font-weight:900}.ill-card small{display:block;color:#71809e;font-size:12px;margin-top:4px}.ill-score{right:4px;top:22px}.ill-done{left:0;bottom:20px;color:#169b72}
.scoring-form{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr 1fr auto;gap:10px;margin-bottom:18px}.scoring-form input,.scoring-form select{min-width:0}
@media(max-width:900px){.mobile-menu{display:block}.sidebar{display:none;position:fixed;left:0;top:54px;bottom:0;width:270px;z-index:30;overflow:auto}.sidebar.open{display:block}.topbar-month{display:none}.login-page{grid-template-columns:1fr}.login-hero{display:none}.login-card{justify-self:center;width:min(100%,410px)}.scoring-form{grid-template-columns:1fr 1fr}}

/* V22 侧栏分区配色和单目录展开 */
.module-tabs{display:flex;gap:8px;margin:0 0 16px;border-bottom:1px solid #dfe6f2;padding:0 4px}.module-tabs a{padding:10px 16px;color:#64748b;text-decoration:none;border-bottom:3px solid transparent;font-weight:700}.module-tabs a.active{color:#4f5fe7;border-bottom-color:#5b65e9}.empty-state{display:grid;place-items:center;gap:7px;padding:38px;color:#94a3b8}.empty-state b{color:#475569;font-size:16px}.inline-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.inline-form input{min-width:120px}
.quick-card{text-decoration:none;color:#26385f;font-weight:800;min-height:90px;display:flex;align-items:center;justify-content:center;border-left:5px solid #6b7ce8}.alert-list{display:grid;gap:10px}.alert-list a{display:flex;justify-content:space-between;padding:12px 14px;border-radius:11px;background:#f6f8fd;color:#425274;text-decoration:none}.alert-list a:hover{background:#eef2ff}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.page-title{display:flex;justify-content:space-between;align-items:center;gap:16px}.page-subtitle{color:#64748b;font-size:13px}@media(max-width:900px){.two-col{grid-template-columns:1fr}.page-title{display:block}}
.dashboard-toolbar{padding:12px 16px}.dashboard-toolbar .actions{margin:0}.month-field{width:180px!important;max-width:180px!important;min-width:180px!important}.dashboard-metrics{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;margin-bottom:16px;min-width:0}.dashboard-metrics .metric{min-width:0}.dashboard-bottom{align-items:start}.alert-list a.has-alert{background:#fff7ed;color:#9a3412}.alert-list a.is-zero{background:#f8fafc;color:#94a3b8}.alert-list a.is-zero b{color:#94a3b8}@media(max-width:1200px){.dashboard-metrics{grid-template-columns:repeat(2,minmax(150px,1fr))}}@media(max-width:700px){.dashboard-metrics{grid-template-columns:1fr}.month-field{width:100%!important;max-width:none!important}.dashboard-toolbar .actions{align-items:stretch}}
.sidebar-section:nth-child(5n+1){--menu-color:#6d8cff;--menu-bg:rgba(74,108,235,.20)}
.sidebar-section:nth-child(5n+2){--menu-color:#38c6a0;--menu-bg:rgba(25,174,137,.18)}
.sidebar-section:nth-child(5n+3){--menu-color:#a887ff;--menu-bg:rgba(129,91,232,.21)}
.sidebar-section:nth-child(5n+4){--menu-color:#f2a74b;--menu-bg:rgba(224,139,37,.18)}
.sidebar-section:nth-child(5n+5){--menu-color:#8ba4c9;--menu-bg:rgba(112,139,181,.17)}
.sidebar-section .sidebar-title{color:var(--menu-color)!important;background:var(--menu-bg)!important;border-radius:10px}.sidebar-section .sidebar-title:before{background:var(--menu-color)}.sidebar-section .sidebar-title:after{content:'⌄';margin-left:auto;font-size:12px;transition:transform .18s}.sidebar-section.collapsed .sidebar-title:after{transform:rotate(-90deg)}
.sidebar-section a.nav-link.active{background:rgba(255,255,255,.10);color:#fff;box-shadow:inset 3px 0 0 var(--menu-color)}
.sidebar-section.collapsed .nav-link{display:none}
.sidebar-section .nav-link{padding-top:7px!important;padding-bottom:7px!important}

/* V23 登录插画精简与位置调整 */
.simple-scene{transform:scale(1.08);transform-origin:center}.simple-scene .scene-person{left:150px}.simple-scene .scene-desk{left:70px;right:45px}.simple-scene .scene-plant{left:25px}.login-card{transform:translateX(-24px)}
@media(max-width:900px){.login-card{transform:none}}

/* V21.1 登录页办公任务插画 */
.work-scene{width:min(540px,92%);height:410px;position:relative}.scene-glow{position:absolute;inset:65px 35px 20px;border-radius:50%;background:radial-gradient(ellipse,rgba(126,145,235,.28),rgba(126,145,235,0) 68%)}
.scene-card{position:absolute;z-index:5;background:rgba(255,255,255,.94);border:1px solid rgba(222,229,249,.9);box-shadow:0 18px 42px rgba(56,72,142,.13);border-radius:18px;color:#71809d}.scene-card span{font-size:12px}.scene-card b{display:block;color:#334fc5;font-size:22px;margin-top:5px}.scene-task{left:5px;top:72px;width:145px;padding:16px}.scene-task i{display:block;height:7px;background:#edf1ff;border-radius:99px;margin-top:12px;overflow:hidden}.scene-task em{display:block;width:80%;height:100%;background:linear-gradient(90deg,#6a86ed,#8c72e8);border-radius:99px}.scene-point{right:2px;top:30px;width:126px;padding:14px 16px}.scene-point strong{float:left;width:34px;height:34px;line-height:34px;margin-right:10px;text-align:center;border-radius:11px;background:#fff0c8;color:#f0a91a;font-size:19px}.scene-point b{font-size:19px;margin-top:1px}
.scene-desk{position:absolute;left:105px;right:42px;bottom:63px;height:18px;background:#546bc9;border-radius:12px;box-shadow:0 17px 0 -6px #3d4d91;z-index:3}.scene-desk:before,.scene-desk:after{content:"";position:absolute;top:15px;width:13px;height:95px;background:#44579f;border-radius:0 0 8px 8px}.scene-desk:before{left:34px;transform:rotate(3deg)}.scene-desk:after{right:34px;transform:rotate(-3deg)}.scene-laptop{position:absolute;right:66px;bottom:17px;width:145px;height:91px;background:linear-gradient(145deg,#677ee1,#435ab9);border:6px solid #fff;border-radius:12px 12px 5px 5px;box-shadow:0 15px 28px rgba(43,57,120,.17);transform:skew(-3deg)}.scene-laptop span{position:absolute;left:54px;top:29px;width:25px;height:25px;border-radius:50%;background:rgba(255,255,255,.74)}.scene-cup{position:absolute;right:16px;bottom:17px;width:31px;height:43px;border-radius:5px 5px 12px 12px;background:#ffc5a8}.scene-cup:after{content:"";position:absolute;right:-12px;top:9px;width:15px;height:18px;border:5px solid #ffc5a8;border-left:0;border-radius:0 12px 12px 0}
.scene-person{position:absolute;left:155px;bottom:81px;width:145px;height:240px;z-index:4}.person-head{position:absolute;left:48px;top:27px;width:62px;height:70px;background:#f5c5a8;border-radius:45% 48% 44% 48%;z-index:3}.person-hair{position:absolute;left:36px;top:13px;width:82px;height:94px;background:#293459;border-radius:46px 46px 28px 24px;z-index:2}.person-hair:after{content:"";position:absolute;right:-7px;top:43px;width:24px;height:75px;background:#293459;border-radius:18px}.person-body{position:absolute;left:24px;top:92px;width:105px;height:130px;background:linear-gradient(145deg,#8e76e9,#5c75df);border-radius:47px 47px 18px 18px;transform:rotate(-3deg)}.person-arm{position:absolute;left:95px;top:119px;width:93px;height:29px;background:#f5c5a8;border-radius:99px;transform:rotate(22deg);transform-origin:left center;z-index:5}
.scene-plant{position:absolute;left:50px;bottom:81px;width:55px;height:90px;z-index:4}.scene-plant:after{content:"";position:absolute;left:10px;bottom:0;width:44px;height:45px;background:#f2a379;border-radius:6px 6px 17px 17px}.scene-plant i,.scene-plant b,.scene-plant em{position:absolute;bottom:37px;width:25px;height:54px;background:#48a98a;border-radius:80% 10% 80% 10%;transform-origin:bottom}.scene-plant i{left:14px;transform:rotate(-31deg)}.scene-plant b{left:28px;height:62px;transform:rotate(7deg)}.scene-plant em{left:38px;height:48px;transform:rotate(39deg)}.scene-checks{position:absolute;right:30px;bottom:102px;display:grid;gap:8px}.scene-checks span{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:#fff;color:#29a77d;font-weight:900;box-shadow:0 8px 19px rgba(45,73,141,.12)}
