*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#f5f5f7;--bg2:#eaeaee;--surface:#ffffff;--surface2:#f0f0f4;--border:#d8d8de;
  --text:#1a1a2e;--text2:#6b6b80;--text3:#9e9eb0;--accent:#c49030;--accent2:#d4a853;
  --accent-bg:rgba(196,144,48,.07);--accent-b:rgba(196,144,48,.3);
  --green:#2e9e5a;--green-bg:rgba(46,158,90,.06);--green-b:rgba(46,158,90,.2);
  --orange:#d47a20;--orange-bg:rgba(212,122,32,.06);--orange-b:rgba(212,122,32,.2);
  --gold:#c49030;--gold-bg:rgba(196,144,48,.06);--gold-b:rgba(196,144,48,.2);
  --blue:#4a7de0;--blue-bg:rgba(74,125,224,.06);--blue-b:rgba(74,125,224,.2);
  --cyan:#0ea5e9;--cyan-bg:rgba(14,165,233,.06);--cyan-b:rgba(14,165,233,.2);
  --purple:#7e52c0;--purple-bg:rgba(126,82,192,.06);--purple-b:rgba(126,82,192,.2);
  --red:#d64545;--gray:#888;--gray-bg:rgba(136,136,136,.06);--gray-b:rgba(136,136,136,.18);
  --shadow:0 2px 12px rgba(0,0,0,.06);--r:12px;
  --wk-txt:#d64545;--cal-bg:#fff;
}
[data-theme="dark"]{
  --bg:#0f1117;--bg2:#161822;--surface:#1c1f2e;--surface2:#252838;--border:#2d3048;
  --text:#e2e4ed;--text2:#9498ae;--text3:#5c6078;--accent:#d4a853;--accent2:#c49530;
  --accent-bg:rgba(212,168,83,.08);--accent-b:rgba(212,168,83,.25);
  --green:#3daa6d;--green-bg:rgba(61,170,109,.08);--green-b:rgba(61,170,109,.25);
  --orange:#e88a3a;--orange-bg:rgba(232,138,58,.08);--orange-b:rgba(232,138,58,.25);
  --gold:#d4a853;--gold-bg:rgba(212,168,83,.08);--gold-b:rgba(212,168,83,.25);
  --blue:#5b8def;--blue-bg:rgba(91,141,239,.08);--blue-b:rgba(91,141,239,.25);
  --cyan:#38bdf8;--cyan-bg:rgba(56,189,248,.08);--cyan-b:rgba(56,189,248,.25);
  --purple:#9b6dd7;--purple-bg:rgba(155,109,215,.08);--purple-b:rgba(155,109,215,.25);
  --red:#e05252;--gray:#555;--gray-bg:rgba(85,85,85,.12);--gray-b:rgba(85,85,85,.25);
  --shadow:0 2px 16px rgba(0,0,0,.3);--wk-txt:#e05252;--cal-bg:#1c1f2e;
}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;transition:background .3s,color .3s;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}

.hidden{display:none!important}
.theme-btn{position:fixed;bottom:20px;right:20px;z-index:9999;width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 14px rgba(0,0,0,.12);transition:all .3s}
.theme-btn:hover{transform:scale(1.12);border-color:var(--accent)}

/* ===== 加载遮罩 ===== */
.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:99999;backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .3s}
.loading-overlay.show{opacity:1;pointer-events:auto}
.loading-box{background:var(--surface);border-radius:16px;padding:40px 50px;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.2)}
.loading-spinner{width:48px;height:48px;border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto 16px}
.loading-box p{font-size:14px;color:var(--text2);font-weight:500}

.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 20%,var(--accent-bg),transparent 50%),radial-gradient(ellipse at 70% 80%,var(--blue-bg),transparent 50%),var(--bg);transition:background .3s}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:44px 40px;width:420px;max-width:92vw;box-shadow:var(--shadow);transition:all .3s}
.login-card h1{font-size:24px;text-align:center;margin-bottom:6px}
.login-card .sub{text-align:center;color:var(--text2);font-size:13px;margin-bottom:28px}
.fg{margin-bottom:18px}
.fg label{display:block;font-size:12px;color:var(--text2);margin-bottom:5px;font-weight:500}
.fg input{width:100%;padding:11px 14px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;outline:none;transition:border .2s,background .3s}
input,textarea{user-select:text;-webkit-user-select:text}
.fg input:focus{border-color:var(--accent)}
.btn{display:block;width:100%;padding:12px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-weight:600;font-size:15px;border:none;border-radius:8px;cursor:pointer;transition:opacity .2s,transform .1s;letter-spacing:.5px}
.btn:hover{opacity:.9}.btn:active{transform:scale(.98)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.sw{text-align:center;margin-top:18px;font-size:13px;color:var(--text2)}
.sw a{color:var(--accent);cursor:pointer;text-decoration:none;font-weight:500}
.hint{text-align:center;margin-top:12px;padding:10px;background:var(--accent-bg);border:1px solid var(--accent-b);border-radius:8px;font-size:12px;color:var(--accent);animation:fadeIn .5s}
.remember-row{display:flex;align-items:center;gap:8px;margin-bottom:18px;font-size:13px;color:var(--text2)}
.remember-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}
.remember-row label{cursor:pointer}
.cloud-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--green-bg);border:1px solid var(--green-b);border-radius:20px;font-size:10px;color:var(--green);margin-bottom:8px;font-weight:600}

/* 通知提示条 */
.toast-container{
  position:fixed;
  bottom:24px;
  right:24px;
  z-index:99999;
  display:flex;
  flex-direction:column;
  gap:10px;
  pointer-events:none;
}

.toast{
  display:flex;
  align-items:center;
  gap:12px;
  padding:14px 20px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:12px;
  box-shadow:0 8px 32px rgba(0,0,0,.15);
  font-size:13px;
  color:var(--text);
  animation:toastIn .3s ease-out;
  pointer-events:auto;
  max-width:360px;
}

.toast.success{border-left:4px solid var(--green)}
.toast.error{border-left:4px solid var(--red)}
.toast.info{border-left:4px solid var(--blue)}

.toast-icon{font-size:18px;flex-shrink:0}
.toast.success .toast-icon{color:var(--green)}
.toast.error .toast-icon{color:var(--red)}
.toast.info .toast-icon{color:var(--blue)}

.toast-content{flex:1}
.toast-title{font-weight:600;margin-bottom:2px}
.toast-message{font-size:12px;color:var(--text2)}

.toast-close{
  background:none;
  border:none;
  color:var(--text3);
  cursor:pointer;
  font-size:16px;
  padding:4px;
  line-height:1;
}
.toast-close:hover{color:var(--text)}

@keyframes toastIn{
  from{opacity:0;transform:translateX(100%)}
  to{opacity:1;transform:translateX(0)}
}

@keyframes toastOut{
  from{opacity:1;transform:translateX(0)}
  to{opacity:0;transform:translateX(100%)}
}

.toast.hide{animation:toastOut .3s ease-in forwards}

.dash{min-height:100vh}
.dash-hd{background:var(--surface);border-bottom:1px solid var(--border);padding:0 28px;height:56px;display:flex;align-items:center;justify-content:space-between;transition:all .3s}
.dash-hd h2{font-size:16px;font-weight:600}
.dash-hd .right{display:flex;align-items:center;gap:14px}
.dash-hd .uname{font-size:13px;color:var(--text2)}
.btn-s{padding:7px 16px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:12px;cursor:pointer;transition:all .2s}
.btn-s:hover{background:var(--border)}
.btn-s[disabled]{opacity:.5;cursor:not-allowed}
.main{max-width:1400px;margin:0 auto;padding:24px 32px 48px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:28px}
.st{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px 28px 24px;box-shadow:var(--shadow);transition:all .3s;position:relative;overflow:hidden}
.st::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;border-radius:16px 16px 0 0}
.st.t::before{background:var(--accent)}
.st.w::before{background:var(--orange)}
.st.e::before{background:var(--green)}
.st .lb{font-size:11px;color:var(--text3);margin-bottom:14px;text-transform:uppercase;letter-spacing:1px;font-weight:600}
.st .vl{font-size:48px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1;display:flex;align-items:baseline;gap:4px}
.st .un{font-size:18px;color:var(--text2);font-weight:500}
.st .sub-info{font-size:11px;color:var(--text3);margin-top:10px}
.st.t .vl{color:var(--accent)}
.st.w .vl{color:var(--orange)}
.st.e .vl{color:var(--green)}
/*=============================*/
/* 修改卡片背景色，使用主题中已定义的、低透明度的背景色 */
.st.t {
  background: var(--accent-bg); /* 使用总工时的主题色背景 */
}
.st.w {
  background: var(--orange-bg); /* 使用平时加班的主题色背景 */
}
.st.e {
  background: var(--green-bg); /* 使用周末加班的主题色背景 */
}

/* 同时，为了让文字在彩色背景上更清晰，可以微调文字颜色 */
.st.t .vl { color: var(--accent); }
.st.w .vl { color: var(--orange); }
.st.e .vl { color: var(--green); }

/* 为每个卡片添加右下角的装饰图表 */
.st.t::after {
  content: '';
  position: absolute;
  right: 20px;
  bottom: 20px;
  width: 60px;
  height: 40px;
  background: repeating-linear-gradient(
    90deg,
    var(--accent) 0px,
    var(--accent) 8px,
    transparent 8px,
    transparent 12px
  );
  opacity: 0.15; /* 设置低透明度，作为装饰 */
  border-radius: 4px;
}

.st.w::after {
  content: '';
  position: absolute;
  right: 20px;
  bottom: 20px;
  width: 60px;
  height: 40px;
  background: repeating-linear-gradient(
    90deg,
    var(--orange) 0px,
    var(--orange) 8px,
    transparent 8px,
    transparent 12px
  );
  opacity: 0.15;
  border-radius: 4px;
}

.st.e::after {
  content: '';
  position: absolute;
  right: 20px;
  bottom: 20px;
  width: 60px;
  height: 40px;
  background: repeating-linear-gradient(
    90deg,
    var(--green) 0px,
    var(--green) 8px,
    transparent 8px,
    transparent 12px
  );
  opacity: 0.15;
  border-radius: 4px;
}

.st {
  /* 原有样式保持，增加以下内容 */
  position: relative; /* 确保绝对定位的装饰元素基于卡片定位 */
  overflow: hidden;   /* 防止装饰元素溢出卡片圆角 */
  padding-bottom: 50px; /* 为右下角的装饰留出空间 */
}

/* 可选：调整数值的字体大小和位置，使其与装饰图更协调 */
.st .vl {
  font-size: 42px;
  margin-bottom: 8px;
  display: flex;
  align-items: center;      /* 垂直居中 */
  justify-content: center;  /* 水平居中 */
}

/*=============================*/

/* ===== 日历导航栏 - 重新设计 ===== */
.cal-nav{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  margin-bottom:24px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:16px;
  padding:10px 20px;
  box-shadow:var(--shadow);
  max-width:520px;
  margin-left:auto;
  margin-right:auto;
}
.cal-nav .mo{font-size:22px;font-weight:700;min-width:220px;text-align:center}

/* 年月选择器分组容器 */
.select-group{
  display:flex;
  align-items:center;
  gap:4px;
  background:var(--bg);
  border-radius:10px;
  padding:4px;
}

/* 年月之间的分隔符 */
.select-separator{
  color:var(--text3);
  font-size:14px;
  font-weight:400;
  opacity:0.5;
}

.nav-select{
  padding:8px 6px;
  background:transparent;
  border:none;
  border-radius:8px;
  color:var(--text);
  font-size:15px;
  font-weight:700;
  cursor:pointer;
  outline:none;
  transition:all .25s;
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  text-align:center;
  min-width:70px;
  letter-spacing:0.5px;
  background-image:none;
  -webkit-border-radius:8px;
}
/* 移除手机端select的默认下拉箭头 */
.nav-select::-ms-expand{display:none}
/* 移除iOS Safari和安卓浏览器的默认select样式 */
.nav-select::-webkit-select-placeholder{color:transparent}
.nav-select::-webkit-inner-spin-button,
.nav-select::-webkit-calendar-picker-indicator,
.nav-select::-webkit-select-arrow{display:none;opacity:0}
/* 确保在所有浏览器中背景一致 */
.select-group select.nav-select{background-color:transparent}
/* iOS Safari特殊处理 */
@supports (-webkit-touch-callout:none){
  .nav-select{
    -webkit-appearance:none;
    background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 8L1 3h10z'/%3E%3C/svg%3E") no-repeat right 8px center;
    padding-right:24px;
  }
}
.nav-select:hover{background:var(--surface2)}
.nav-select:focus{background:var(--accent-bg);color:var(--accent)}
.nav-select option{font-weight:500;padding:8px}


#btnToday{
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;
  border:none;
  font-size:13px;
  font-weight:700;
  width:auto;
  padding:0 14px;
  letter-spacing:1px;
  box-shadow:0 2px 8px rgba(196,144,48,.25);
}
#btnToday:hover{
  opacity:0.9;
  transform:scale(1.05);
  box-shadow:0 4px 12px rgba(196,144,48,.35);
}


.nb{
  width:38px;
  height:38px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--bg);
  border:1px solid var(--border);
  border-radius:10px;
  color:var(--text);
  font-size:18px;
  cursor:pointer;
  transition:all .25s cubic-bezier(.4,0,.2,1);
  flex-shrink:0;
}
.nb:hover{
  background:var(--accent-bg);
  border-color:var(--accent);
  color:var(--accent);
  transform:scale(1.05);
}
.nb:active{transform:scale(0.95)}

/* 主日历自定义年月选择按钮 */
.main-date-btn {
  padding: 8px 12px !important;
  background: transparent !important;
  border: none !important;
  border-radius: 8px !important;
  color: var(--text) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  cursor: pointer !important;
  min-width: 60px;
  transition: all 0.25s;
  width: auto !important;
  height: auto !important;
}

.main-date-btn:hover {
  background: var(--accent-bg) !important;
  color: var(--accent) !important;
}

/* 主日历年月选择弹窗 */
.main-picker-popup {
  position: absolute;
  top: 60px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,.2);
  z-index: 100;
  padding: 16px;
  max-width: 90%;
}

.main-picker-content {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.main-picker-item {
  padding: 12px 8px;
  text-align: center;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  transition: all 0.2s;
}

.main-picker-item:hover {
  background: var(--accent-bg);
  border-color: var(--accent);
  color: var(--accent);
}

.main-picker-item.active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  font-weight: 700;
}

.cal{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:var(--shadow);transition:all .3s}
/*
.cal-hd{display:grid;grid-template-columns:repeat(7,1fr);background:var(--surface2);border-bottom:1px solid var(--border)}
*/
.cal-hd{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  width:100%;  /* 新增：确保表头占满宽度 */
}
.cal-hd span{padding:14px;text-align:center;font-size:14px;font-weight:700;color:var(--text2);letter-spacing:.5px}
.cal-hd span:first-child,.cal-hd span:last-child{color:var(--wk-txt)}
/* 确保日历网格7列等宽 - PC端和移动端都要加 */
.cal-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  width:100%;  /* 新增：确保网格占满宽度 */
}
/* 上班类型居中显示 - PC端 */
.c{
  min-height:120px;
  padding:10px;
  border-right:1px solid var(--border);
  border-bottom:1px solid var(--border);
  cursor:pointer;
  transition:background .15s;
  position:relative;
  text-align:center;  /* 新增：单元格内容居中 */
}
.c:nth-child(7n){border-right:none}
.c:hover{filter:brightness(1.05)}
.c.empty{cursor:default;background:var(--bg)!important;filter:none}
.c.today{box-shadow:inset 0 0 0 2px var(--accent)}
.c.wk{background:rgba(0,0,0,.015)}
[data-theme="dark"] .c.wk{background:rgba(255,255,255,.015)}
.c.tp-w{background:var(--green-bg);border-left:4px solid var(--green)}
.c.tp-o{background:var(--orange-bg);border-left:4px solid var(--orange)}
.c.tp-h{background:var(--cyan-bg);border-left:4px solid var(--cyan)}
.c.tp-a{background:var(--blue-bg);border-left:4px solid var(--blue)}
.c.tp-p{background:var(--purple-bg);border-left:4px solid var(--purple)}
.c.tp-s{background:var(--purple-bg);border-left:4px solid var(--purple)}
.c.tp-r{background:var(--gray-bg);border-left:4px solid var(--gray)}
.c .dn{font-size:18px;font-weight:700}
.c .ln{font-size:12px;color:var(--text3)}
.c .tp{
  font-size:11px;
  margin-top:6px;
  padding:3px 8px;
  border-radius:5px;
  display:inline-block;
  font-weight:600;
  text-align:center;  /* 新增：标签文字居中 */
}
.c .tp.t-w{background:var(--green-b);color:var(--green)}
.c .tp.t-o{background:var(--orange-b);color:var(--orange)}
.c .tp.t-h{background:var(--cyan-b);color:var(--cyan)}
.c .tp.t-a{background:var(--blue-b);color:var(--blue)}
.c .tp.t-p{background:var(--purple-b);color:var(--purple)}
.c .tp.t-s{background:var(--purple-b);color:var(--purple)}
.c .tp.t-r{background:var(--gray-b);color:var(--gray)}
.c .hr{font-size:13px;color:var(--text2);margin-top:3px;font-weight:600}
.c .row1{
  display:flex;
  justify-content:space-between;  /* 改为居中 */
  justify-content:center;  /* 新增：日期和农历居中 */
  align-items:center;
  gap:4px;
}
.cal-ft{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  width:100%;  /* 新增：确保底部占满宽度 */
}
.cal-ft span{padding:12px;text-align:center;font-size:13px;color:var(--text2);font-weight:600}
.legend{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin-top:16px;font-size:13px;color:var(--text2)}
.legend-item{display:flex;align-items:center;gap:6px}
.legend-dot{width:12px;height:12px;border-radius:4px}
.mo-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px)}
.mo-ct{background:var(--surface);border:1px solid var(--border);border-radius:18px;width:480px;max-width:94vw;overflow:hidden;animation:fadeIn .2s;box-shadow:0 8px 40px rgba(0,0,0,.15)}
@keyframes fadeIn{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
.mo-hd{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}
.mo-hd h3{font-size:17px;white-space:nowrap}
.mo-hd .dt{font-size:13px;color:var(--text2);flex:1}
.mo-x{background:none;border:none;color:var(--text2);font-size:26px;cursor:pointer;padding:0 4px;line-height:1}
.mo-x:hover{color:var(--text)}
.mo-bd{padding:24px}
.mo-ft{padding:16px 24px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end}
.btn-c{padding:9px 22px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;cursor:pointer}
.btn-c:hover{background:var(--border)}
.btn-ok{padding:9px 26px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border:none;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer}
.btn-ok:hover{opacity:.9}
.fl{font-size:13px;color:var(--text2);margin-bottom:10px;font-weight:600}
.rg{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.ro{position:relative}
.ro input{position:absolute;opacity:0;width:0;height:0}
.ro label{display:block;text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:13px;cursor:pointer;transition:all .2s;min-width:62px;padding:8px 4px}
.ro input:checked+label{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.ro label:hover{border-color:var(--accent)}
.hours-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:20px}
.hours-grid .ro label{display:block;text-align:center;width:100%;padding:9px 0;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:13px;cursor:pointer;transition:all .2s;font-weight:500}
.hours-grid .ro input:checked+label{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700}
.hours-grid .ro label:hover{border-color:var(--accent)}

/* 新上班时长选择器 */
.hours-selector{margin-bottom:20px}
.hours-quick{display:flex;gap:8px;margin-bottom:12px}
.hours-quick-btn{flex:1;padding:10px 0;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:500;color:var(--text);cursor:pointer;transition:all .2s}
.hours-quick-btn:hover{border-color:var(--accent)}
.hours-quick-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700}
.hours-quick-btn.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}
.hours-custom{display:flex;align-items:center;gap:12px}
.hours-custom-btn{padding:10px 16px;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:500;color:var(--text);cursor:pointer;transition:all .2s}
.hours-custom-btn:hover{border-color:var(--accent)}
.hours-custom-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700}
.hours-custom-btn.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}
.hours-custom-input{display:flex;align-items:center;gap:4px;opacity:0.4;pointer-events:none;transition:all .2s}
.hours-custom-input.active{opacity:1;pointer-events:auto}
.hours-custom-input input{width:60px;padding:8px;text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:14px;font-weight:600;color:var(--text);outline:none}
.hours-custom-input input:focus{border-color:var(--accent)}
.hours-arrow{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--bg);border:1px solid var(--border);border-radius:6px;font-size:10px;color:var(--text);cursor:pointer;transition:all .2s}
.hours-arrow:hover{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}
.hours-unit{font-size:13px;color:var(--text2);font-weight:500}
.adm{min-height:100vh;background:var(--bg);transition:background .3s}
.adm-hd{background:var(--surface);border-bottom:1px solid var(--border);padding:0 28px;height:56px;display:flex;align-items:center;justify-content:space-between;transition:all .3s}
.adm-hd h2{font-size:16px}
.tabs{display:flex;gap:2px;background:var(--bg);border-radius:8px;padding:3px}
.tab{padding:7px 18px;border:none;background:none;color:var(--text2);font-size:13px;cursor:pointer;border-radius:6px;transition:all .2s}
.tab.on{background:var(--surface2);color:var(--text);font-weight:500}
.adm-main{max-width:2000px;margin:0 auto;padding:20px}
.as{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:22px;margin-bottom:18px;box-shadow:var(--shadow);transition:all .3s}
.as h3{font-size:15px;margin-bottom:4px}
.as .ds{font-size:12px;color:var(--text2);margin-bottom:16px}
table{width:100%;border-collapse:collapse}
th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);font-size:13px}
th{color:var(--text2);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.5px}
td{color:var(--text)}
.ab{padding:4px 10px;background:var(--surface2);border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:11px;cursor:pointer;margin-right:4px}
.ab:hover{border-color:var(--accent);color:var(--accent)}
.ab.dn:hover{border-color:var(--red);color:var(--red)}
.ab.ex{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.ab.ex:hover{opacity:.85}
.emp{text-align:center;padding:30px;color:var(--text3);font-size:13px}
.msel{display:flex;gap:10px;align-items:center;margin-bottom:16px}
.msel select{padding:7px 10px;background:var(--bg);border:1px solid var(--border);border-radius:7px;color:var(--text);font-size:13px;outline:none}

/* 管理员后台自定义年月选择按钮 */
.admin-date-btn {
  padding: 7px 10px !important;
  background: var(--bg) !important;
  border: 1px solid var(--border) !important;
  border-radius: 7px !important;
  color: var(--text) !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  cursor: pointer !important;
  min-width: 50px;
  transition: all 0.2s;
  width: auto !important;
  height: auto !important;
}

.admin-date-btn:hover {
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}

/* 管理员年月选择弹窗 */
.admin-picker-popup {
  position: absolute;
  top: 40px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,.2);
  z-index: 100;
  padding: 16px;
  max-width: 300px;
}

.admin-picker-content {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.admin-picker-item {
  padding: 10px 6px;
  text-align: center;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  transition: all 0.2s;
}

.admin-picker-item:hover {
  background: var(--accent-bg);
  border-color: var(--accent);
  color: var(--accent);
}

.admin-picker-item.active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  font-weight: 700;
}

/* 系统设置样式 */
.setting-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
}

.setting-item:last-child {
  border-bottom: none;
}

.setting-label {
  flex: 1;
}

.setting-title {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 4px;
}

.setting-desc {
  display: block;
  font-size: 12px;
  color: var(--text3);
  line-height: 1.4;
}

.setting-control {
  display: flex;
  align-items: center;
  gap: 12px;
}
.salary-access-setting{
  display:block;
}
.salary-access-setting .setting-label{
  margin-bottom:12px;
}
.salary-access-control{
  flex-direction:column;
  align-items:stretch;
  width:100%;
}
.salary-access-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  width:100%;
}
.salary-access-item{
  display:grid;
  grid-template-columns:16px minmax(0,1fr) minmax(0,120px);
  gap:10px;
  padding:10px 12px;
  border:1px solid var(--border);
  border-radius:10px;
  background:var(--surface2);
  cursor:pointer;
}
.salary-access-checkbox{
  width:16px;
  height:16px;
  accent-color:var(--accent);
  flex:0 0 auto;
  align-self:center;
}
.salary-access-name{
  color:var(--text);
  font-size:13px;
  font-weight:600;
  min-width:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.salary-access-user{
  color:var(--text3);
  font-size:12px;
  min-width:0;
  text-align:right;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.setting-select {
  padding: 8px 12px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-size: 13px;
  outline: none;
  min-width: 100px;
}

.setting-select:focus {
  border-color: var(--accent);
}

::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
.loading{text-align:center;padding:40px;color:var(--text3);font-size:14px}
.loading::after{content:'';display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite;margin-left:8px;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}

/* ===== 密码显示 ===== */
.pw-cell{display:flex;align-items:center;gap:6px}
.pw-text{font-family:'DM Mono',monospace;letter-spacing:1px}
.pw-toggle{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;opacity:.5;transition:opacity .2s}
.pw-toggle:hover{opacity:1}

/* ===== 编辑弹窗 ===== */
.edit-row{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.edit-row label{min-width:50px;font-size:13px;color:var(--text2);font-weight:600}
.edit-row input{flex:1;padding:9px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;outline:none;transition:border .2s}
.edit-row input:focus{border-color:var(--accent)}

/* ===== 薪资设置 ===== */
.salary-settings-modal{width:min(840px,94vw);max-height:90vh;display:flex;flex-direction:column}
.salary-settings-modal .mo-bd{overflow-y:auto}
.salary-settings-body{display:flex;flex-direction:column;gap:16px;padding:20px 24px 24px}
.salary-section{
  border:1px solid var(--border);
  background:var(--surface2);
  border-radius:16px;
  padding:18px;
}
.salary-section-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  margin-bottom:16px;
}
.salary-section-head h4{font-size:15px;margin-bottom:4px}
.salary-section-head p{font-size:12px;color:var(--text2)}
.salary-section-total{
  font-size:14px;
  font-weight:700;
  color:var(--accent);
  white-space:nowrap;
}
.salary-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.floating-field{position:relative}
.floating-field input{
  width:100%;
  padding:22px 12px 10px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:12px;
  color:var(--text);
  font-size:14px;
  outline:none;
  transition:border-color .2s,box-shadow .2s;
}
.floating-field input::placeholder{color:transparent}
.floating-field input:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px var(--accent-bg);
}
.floating-field label{
  position:absolute;
  left:12px;
  top:50%;
  transform:translateY(-50%);
  padding:0 4px;
  background:var(--surface);
  color:var(--text3);
  font-size:13px;
  pointer-events:none;
  transition:all .18s ease;
}
.floating-field input:focus+label,
.floating-field input:not(:placeholder-shown)+label{
  top:0;
  transform:translateY(-50%) scale(.88);
  color:var(--accent);
}
.salary-net-card{
  border-radius:16px;
  padding:18px 20px;
  background:linear-gradient(135deg,var(--accent-bg),rgba(255,255,255,.04));
  border:1px solid var(--accent);
}
.salary-net-label{font-size:12px;color:var(--text2);margin-bottom:8px}
.salary-net-value{font-size:32px;font-weight:800;color:var(--accent);line-height:1}
.salary-net-desc{margin-top:8px;font-size:12px;color:var(--text2)}
.salary-detail-modal{width:min(560px,94vw);max-height:90vh;display:flex;flex-direction:column}
.salary-detail-modal .mo-bd{overflow-y:auto}
.salary-detail-body{display:flex;flex-direction:column;gap:16px;padding:20px 24px 24px}
.salary-detail-total-card{
  border-radius:16px;
  padding:18px 20px;
  background:linear-gradient(135deg,var(--accent-bg),rgba(255,255,255,.04));
  border:1px solid var(--accent);
}
.salary-detail-total-label{font-size:12px;color:var(--text2);margin-bottom:8px}
.salary-detail-total-value{font-size:34px;font-weight:800;color:var(--accent);line-height:1}
.salary-detail-total-desc{margin-top:8px;font-size:12px;color:var(--text2)}
.salary-detail-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.salary-detail-item{
  border:1px solid var(--border);
  border-radius:14px;
  background:var(--surface2);
  padding:14px 16px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.salary-detail-item span{font-size:12px;color:var(--text2)}
.salary-detail-item strong{font-size:22px;color:var(--text)}
.salary-detail-item .salary-currency,
.salary-detail-item strong span{font-size:inherit;color:inherit}
.salary-detail-item.overtime strong{color:var(--accent)}
.salary-detail-item.deduction strong{color:var(--red)}
.salary-detail-breakdown{
  border:1px solid var(--border);
  border-radius:14px;
  background:var(--surface2);
  padding:6px 16px;
}
.salary-detail-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:12px 0;
  font-size:13px;
}
.salary-detail-row + .salary-detail-row{border-top:1px solid var(--border)}
.salary-detail-row span:first-child{color:var(--text2)}
.salary-detail-row span:last-child{word-break:break-word;text-align:right}

/* ===== 批量选择 ===== */
.c.selected{
  box-shadow:inset 0 0 0 2px var(--accent),0 0 0 2px var(--accent);
  background:var(--accent-bg)!important;
}
.batch-bar{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:12px;
  padding:16px 20px;
  margin-top:16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
  box-shadow:var(--shadow);
}
.batch-bar .info{font-size:13px;color:var(--text2)}
.batch-bar .info span{color:var(--accent);font-weight:700}
.batch-bar .actions{display:flex;gap:8px;align-items:center}
.batch-btn{
  padding:8px 16px;
  border:1px solid var(--border);
  border-radius:8px;
  font-size:12px;
  cursor:pointer;
  transition:all .2s;
  background:var(--surface2);
  color:var(--text);
}
.batch-btn:hover{border-color:var(--accent);color:var(--accent)}
.batch-btn.primary{
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;
  border-color:var(--accent);
}
.batch-btn.primary:hover{opacity:.9}
.batch-btn.danger:hover{border-color:var(--red);color:var(--red)}

/* 快速选择按钮 */
.quick-sel{
  display:flex;
  gap:6px;
  margin-top:16px;
  flex-wrap:wrap;
}
.quick-btn{
  padding:6px 12px;
  background:var(--bg);
  border:1px solid var(--border);
  border-radius:6px;
  font-size:11px;
  cursor:pointer;
  color:var(--text2);
  transition:all .2s;
}
.quick-btn:hover{border-color:var(--accent);color:var(--accent)}
.quick-btn.danger{color:var(--red);border-color:var(--red)}
.quick-btn.danger:hover{background:var(--red);color:#fff}

/* ===== 右键菜单样式 ===== */
.context-menu {
  position: fixed;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.15);
  z-index: 10000;
  min-width: 160px;
  padding: 6px 0;
  display: none;
}
.context-menu.show {
  display: block;
}
.menu-item {
  padding: 10px 16px;
  cursor: pointer;
  font-size: 13px;
  color: var(--text);
  transition: background 0.15s;
}
.menu-item:hover {
  background: var(--accent-bg);
  color: var(--accent);
}
.menu-divider {
  height: 1px;
  background: var(--border);
  margin: 4px 0;
}
/* 菜单触发按钮样式 */
.menu-trigger {
  font-size: 18px;
  padding: 6px 12px;
  letter-spacing: 1px;
}


/* 移动端适配 */
@media(max-width:900px){
  .stats{grid-template-columns:repeat(3,1fr);gap:8px}
  .st{padding:16px 12px 20px}
  .st .lb{font-size:9px;margin-bottom:8px}
  .st .vl{font-size:28px}
  .st .un{font-size:14px}
  .st .sub-info{font-size:9px}
  .st::after{display:none}
  .st{padding-bottom:20px}

  /* ★ 日历单元格高度缩短 */
  .c{min-height:60px;padding:4px 2px;text-align:center}
  .c .dn{font-size:14px}
  .c .ln{font-size:9px;white-space:nowrap;color:var(--text3)}
  .c .tp{font-size:9px;padding:1px 4px;margin-top:0px;white-space:nowrap;text-align:center}
  .c .hr{font-size:10px;margin-top:1px}
  .c .row1{justify-content:center;align-items:center;gap:1px;margin-bottom:0}  /* ★ 新增 margin-bottom:0 */

  .main{padding:12px}
  .cal-hd span{font-size:11px;padding:8px 2px}
  .hours-grid{grid-template-columns:repeat(4,1fr)}
  .salary-settings-modal,
  .salary-detail-modal{width:min(100%,calc(100vw - 16px));max-height:94vh}
  .salary-settings-modal .mo-hd,
  .salary-detail-modal .mo-hd{flex-wrap:wrap;align-items:flex-start}
  .salary-settings-modal .mo-hd .dt,
  .salary-detail-modal .mo-hd .dt{order:3;flex:0 0 100%;margin-top:2px}
  .salary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .salary-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .salary-section-head{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
  .salary-section-head p{display:none}
  .salary-settings-body{padding:16px}
  .salary-detail-body{padding:16px}
  .salary-section{padding:14px}
  .salary-detail-total-card{padding:16px}
  .salary-detail-item{padding:12px 14px}
  .salary-section-total{white-space:normal}
  .salary-net-value,
  .salary-detail-total-value{font-size:28px}
  .salary-detail-item strong{font-size:20px}
  .salary-detail-item .salary-currency,
  .salary-detail-item strong span{font-size:20px}
  .salary-detail-breakdown{padding:4px 12px}
  .floating-field input{padding:20px 12px 9px}
  .floating-field label{font-size:12px}
  .salary-detail-row{flex-direction:column;align-items:flex-start}
  .salary-detail-row span:last-child{text-align:left}

  /* 确保网格等宽 */
  .cal-grid{grid-template-columns:repeat(7,1fr)!important;width:100%}
  .cal-hd{grid-template-columns:repeat(7,1fr)!important;width:100%}
  .cal-ft{grid-template-columns:repeat(7,1fr)!important;width:100%}
  .cal-ft span{padding:8px 4px;font-size:11px}

  /* 日历导航栏适配 */
  .cal-nav{
    gap:8px;
    padding:8px 12px;
    border-radius:14px;
    max-width:100%;
    margin-bottom:12px;
  }
  .cal-nav .mo{font-size:16px;min-width:auto;white-space:nowrap}
  .nav-select{font-size:14px;min-width:60px;padding:6px 4px;-webkit-appearance:none;-moz-appearance:none;appearance:none}
  .select-group{padding:3px;border-radius:8px}
  .nb{width:34px;height:34px;font-size:16px;border-radius:8px}
  #btnToday{font-size:12px;padding:0 10px}
  #forceSync{font-size:12px!important}


  /* 图例缩小 */
  .legend{gap:12px;margin-top:10px;font-size:11px}
  .legend-dot{width:10px;height:10px}

  /* 管理员后台移动端适配 */
  #uTbl {overflow-x: auto;-webkit-overflow-scrolling: touch;}
  #uTbl table {min-width: 500px;}
  .msel {flex-wrap: wrap;gap: 8px;}
  .msel select,.msel input[type="text"] {min-width: 0;flex: 0 1 auto;}
  .msel .btn-s,.msel .ab {flex-shrink: 0;}
  .as {overflow-x: auto;}
  .salary-access-list{grid-template-columns:1fr}
  .salary-access-item{grid-template-columns:16px minmax(0,1fr);padding:9px 10px}
  .salary-access-name{white-space:normal;overflow:visible;text-overflow:clip}
  .salary-access-user{grid-column:2;text-align:left;font-size:11px;white-space:normal;overflow:visible;text-overflow:clip}
  
  /* 移动端管理员年月选择按钮 */
  .admin-date-btn {
    padding: 6px 8px !important;
    font-size: 12px !important;
    min-width: 45px;
  }

  /* 移动端管理员年月选择弹窗 */
  .admin-picker-popup {
    width: 250px;
    padding: 12px;
  }

  .admin-picker-content {
    grid-template-columns: repeat(3, 1fr);
    gap: 6px;
  }

  .admin-picker-item {
    padding: 8px 4px;
    font-size: 12px;
  }

  /* 移动端时长选择器 */
  .hours-quick {
    gap: 6px;
  }
  
  .hours-quick-btn {
    padding: 8px 0;
    font-size: 12px;
  }
  
  .hours-custom {
    flex-wrap: wrap;
    gap: 8px;
  }
  
  .hours-custom-btn {
    padding: 8px 12px;
    font-size: 12px;
  }
  
  .hours-custom-input input {
    width: 50px;
    padding: 6px;
    font-size: 13px;
  }
  
  .hours-arrow {
    width: 24px;
    height: 24px;
    font-size: 9px;
  }
}


@media(max-width:400px){
  .stats{gap:4px}
  .st{padding:10px 6px 14px}
  .st .lb{font-size:8px}
  .st .vl{font-size:20px}
  .st .un{font-size:11px}
  .st .sub-info{display:none}

  /* ★ 超小屏日历单元格进一步缩短 */
  .c{min-height:48px;padding:3px 1px;text-align:center}
  .c .dn{font-size:12px}
  .c .ln{font-size:8px;white-space:nowrap}
  .c .tp{font-size:8px;padding:1px 2px;margin-top:0;white-space:nowrap;text-align:center}  /* ★ margin-top 改为 0 */
  .c .hr{font-size:9px;margin-top:0}
  .c .row1{justify-content:center;align-items:center;gap:1px;margin-bottom:0}  /* ★ 新增 margin-bottom:0 */

  /* 确保网格等宽 */
  .cal-grid{grid-template-columns:repeat(7,1fr)!important;width:100%}
  .cal-hd{grid-template-columns:repeat(7,1fr)!important;width:100%}
  .cal-ft{grid-template-columns:repeat(7,1fr)!important;width:100%}
  .cal-hd span{font-size:10px;padding:6px 1px}
  .cal-ft span{padding:6px 2px;font-size:10px}

  .cal-nav{
    gap:6px;
    padding:6px 10px;
    border-radius:12px;
  }
  .cal-nav .mo{font-size:13px}
  .nav-select{font-size:13px;min-width:52px;padding:5px 2px;-webkit-appearance:none;-moz-appearance:none;appearance:none}
  .select-separator{font-size:12px}
  .select-group{padding:2px;border-radius:6px}
  .nb{width:30px;height:30px;font-size:14px;border-radius:6px}
  #btnToday{font-size:11px;padding:0 8px}
  #forceSync{font-size:10px!important}


  /* 图例进一步缩小 */
  .legend{gap:8px;margin-top:8px;font-size:10px}
  .legend-dot{width:8px;height:8px}
  .legend-item{gap:4px}

  /* 管理员后台超小屏适配 */
  #uTbl table {min-width: 360px;}
  #uTbl table th,#uTbl table td {padding: 6px 8px;font-size: 11px;}
  .msel {gap: 6px;}
  .msel select {padding: 5px 6px;font-size: 11px;min-width: 60px;}
  .msel input[type="text"] {padding: 5px 8px;font-size: 11px;}
  .msel .btn-s,.msel .ab {padding: 5px 10px;font-size: 11px;}
}



/* 模拟考勤相关样式 */
.simulate-container {
  max-width: 100%;
}

/* 模拟考勤弹窗高度自适应 */
.simulate-modal-ct {
  height: auto !important;
  max-height: 90vh !important;
  display: flex;
  flex-direction: column;
}

.simulate-modal-ct .mo-bd {
  flex: 1;
  overflow-y: auto;
}

.simulate-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}

.simulate-stat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px;
  text-align: center;
}

.simulate-stat .label {
  font-size: 12px;
  color: var(--text2);
  margin-bottom: 8px;
}

.simulate-stat .value {
  font-size: 24px;
  font-weight: 700;
}

.simulate-stat.total .value { color: var(--accent); }
.simulate-stat.weekday .value { color: var(--orange); }
.simulate-stat.weekend .value { color: var(--green); }

/* 模拟考勤的日历导航栏 */
.simulate-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: 20px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 16px;
}

.simulate-nav .month-display {
  font-size: 18px;
  font-weight: 700;
  min-width: 180px;
  text-align: center;
}

.simulate-nav button {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-size: 16px;
  cursor: pointer;
  transition: all 0.25s;
}

.simulate-nav button:hover {
  background: var(--accent-bg);
  border-color: var(--accent);
  color: var(--accent);
}

.simulate-nav select {
  padding: 8px 6px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  outline: none;
  min-width: 70px;
}

.simulate-nav .today-btn {
  background: linear-gradient(135deg, var(--accent), var(--accent2));
  color: #fff;
  border: none;
  font-size: 12px;
  font-weight: 700;
  width: auto;
  padding: 0 12px;
  box-shadow: 0 2px 8px rgba(196,144,48,.25);
}

.simulate-nav .today-btn:hover {
  opacity: 0.9;
  transform: scale(1.05);
}

/* 自定义年月选择按钮 */
.sim-date-btn {
  padding: 8px 12px !important;
  background: var(--bg) !important;
  border: 1px solid var(--border) !important;
  border-radius: 8px !important;
  color: var(--text) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  cursor: pointer !important;
  min-width: 60px;
  transition: all 0.25s;
  width: auto !important;
  height: auto !important;
}

.sim-date-btn:hover {
  background: var(--accent-bg) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}

/* 年月选择弹窗 */
.sim-picker-popup {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,.2);
  z-index: 100;
  padding: 16px;
  max-width: 90%;
  max-height: 60vh;
  overflow-y: auto;
}

.sim-picker-content {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.sim-picker-item {
  padding: 12px 8px;
  text-align: center;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  transition: all 0.2s;
}

.sim-picker-item:hover {
  background: var(--accent-bg);
  border-color: var(--accent);
  color: var(--accent);
}

.sim-picker-item.active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  font-weight: 700;
}

/* 模拟考勤的日历容器 */
.simulate-calendar {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: var(--shadow);
  margin-bottom: 20px;
}

/* 模拟考勤日历单元格高度缩短 */
.simulate-calendar .c {
  min-height: 80px;
  padding: 6px;
}

/* 模拟考勤的批量选择按钮 */
.simulate-quick-sel {
  display: flex;
  gap: 8px;
  margin-top: 16px;
  flex-wrap: wrap;
}

.simulate-quick-btn {
  padding: 6px 12px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 12px;
  cursor: pointer;
  color: var(--text2);
  transition: all 0.2s;
}

.simulate-quick-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}

/* 模拟考勤的批量操作栏 */
.simulate-batch-bar {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px 20px;
  margin-top: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  box-shadow: var(--shadow);
}

.simulate-batch-bar .info {
  font-size: 13px;
  color: var(--text2);
}

.simulate-batch-bar .info span {
  color: var(--accent);
  font-weight: 700;
}

.simulate-batch-bar .actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.simulate-batch-btn {
  padding: 8px 16px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.2s;
  background: var(--surface2);
  color: var(--text);
}

.simulate-batch-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}

.simulate-batch-btn.primary {
  background: linear-gradient(135deg, var(--accent), var(--accent2));
  color: #fff;
  border-color: var(--accent);
}

.simulate-batch-btn.primary:hover {
  opacity: 0.9;
}

.simulate-batch-btn.danger:hover {
  border-color: var(--red);
  color: var(--red);
}

/* 模拟考勤的图例 */
.simulate-legend {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 16px;
  font-size: 12px;
  color: var(--text2);
}

.simulate-legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
}

.simulate-legend-dot {
  width: 10px;
  height: 10px;
  border-radius: 3px;
}

/* 移动端适配 */
@media (max-width: 768px) {
  .simulate-stats {
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin-bottom: 12px;
  }

  .simulate-stat {
    padding: 12px 8px;
  }

  .simulate-stat .label {
    font-size: 10px;
    margin-bottom: 4px;
  }

  .simulate-stat .value {
    font-size: 18px;
  }

  .simulate-nav {
    gap: 8px;
    padding: 8px 12px;
    margin-bottom: 12px;
  }

  .simulate-nav .month-display {
    font-size: 16px;
    min-width: auto;
  }

  .simulate-nav button {
    width: 32px;
    height: 32px;
    font-size: 14px;
  }

  .simulate-nav select {
    font-size: 13px;
    min-width: 60px;
    padding: 6px 4px;
  }

  /* 移动端自定义年月选择按钮 */
  .sim-date-btn {
    padding: 6px 10px !important;
    font-size: 13px !important;
    min-width: 50px;
  }

  /* 移动端年月选择弹窗 */
  .sim-picker-popup {
    width: 85%;
    padding: 12px;
  }

  .sim-picker-content {
    grid-template-columns: repeat(3, 1fr);
    gap: 6px;
  }

  .sim-picker-item {
    padding: 10px 6px;
    font-size: 13px;
  }

  .simulate-quick-sel {
    gap: 6px;
    flex-wrap: nowrap;
    justify-content: space-between;
  }

  .simulate-quick-btn {
    padding: 6px 8px;
    font-size: 11px;
    flex: 1;
    white-space: nowrap;
  }

  .simulate-batch-bar {
    flex-direction: column;
    align-items: stretch;
  }

  .simulate-batch-bar .actions {
    justify-content: center;
  }

  /* 模拟考勤日历单元格高度进一步缩短 */
  .simulate-calendar .c {
    min-height: 60px;
    padding: 4px 2px;
  }

  .simulate-calendar .c .dn {
    font-size: 14px;
  }

  .simulate-calendar .c .tp {
    font-size: 9px;
    padding: 1px 3px;
  }

  .simulate-calendar .c .hr {
    font-size: 10px;
    margin-top: 1px;
  }

  /* 模拟考勤底部按钮3行1列显示 */
  .simulate-modal-footer {
    flex-direction: column;
    gap: 8px;
    padding: 12px 16px !important;
  }

  .simulate-modal-footer > div {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  .simulate-modal-footer button {
    width: 100%;
    margin: 0 !important;
    padding: 10px 16px !important;
    font-size: 13px;
  }

  /* 移动端模拟考勤弹窗自适应 */
  .simulate-modal-ct {
    max-height: 95vh !important;
  }

  #simulateModal .mo-bd {
    max-height: calc(95vh - 200px) !important;
  }

  #simulateModal .mo-ft {
    padding: 12px 16px !important;
  }
}
