/* ===== 聚耐力OA首页样式（V2.2.0 自 index.html 抽离） ===== */
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:#f5f6fa;color:#333;line-height:1.6;min-height:100vh;padding-bottom:80px}
.header{background:linear-gradient(180deg,#667eea 0%,#764ba2 100%);color:#fff;padding:20px;text-align:center;position:sticky;top:0;z-index:100;box-shadow:0 4px 20px rgba(102,126,234,.4)}
.header h1{font-size:22px;font-weight:600}
.header p{font-size:13px;opacity:.9;margin-top:4px}
.user-bar{display:none !important}/* 企业微信可识别用户，隐藏重复信息栏 */
.user-info{display:flex;align-items:center;gap:10px}
.user-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:bold}
.user-name{font-size:15px;font-weight:600}
.user-role{font-size:12px;color:#666}

.container{padding:0 16px}
.card-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
/* V1.9.40 紧凑横条菜单 */
.menu-list{max-width:520px;margin:14px auto 0;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.menu-row{display:flex;align-items:center;gap:12px;padding:13px 16px;cursor:pointer;border-bottom:1px solid #f0f0f0;transition:background .15s}
.menu-row:last-child{border-bottom:none}
.menu-row:active{background:#f5f6f8}
.menu-ic{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:22px;color:#fff;flex-shrink:0}
.menu-tx{flex:1;min-width:0}
.menu-tx h3{font-size:16px;color:#333;margin-bottom:2px}
.menu-tx p{font-size:12px;color:#999;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-ar{color:#c8c9cc;font-size:20px;flex-shrink:0}
/* V2.2.0 电脑端响应式网格布局（方案B） */
@media (min-width: 960px) {
  .menu-list{max-width:960px;display:grid;grid-template-columns:1fr 1fr;gap:16px;background:transparent;box-shadow:none;overflow:visible}
  .menu-row{border-radius:16px;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.06);border-bottom:none;padding:24px;flex-direction:column;align-items:center;text-align:center;gap:8px;transition:transform .2s,box-shadow .2s}
  .menu-row:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.1)}
  .menu-ic{width:56px;height:56px;font-size:28px;border-radius:14px}
  .menu-tx{flex:none;min-width:auto}
  .menu-tx h3{font-size:18px;margin-bottom:4px}
  .menu-tx p{font-size:13px;white-space:normal;overflow:visible;text-overflow:clip}
  .menu-ar{display:none}
}
.card{background:#fff;border-radius:16px;padding:20px;text-align:center;box-shadow:0 2px 12px rgba(0,0,0,.06);transition:transform .2s,box-shadow .2s;cursor:pointer;border:2px solid transparent}
.card:active{transform:scale(.96)}
.card:hover{box-shadow:0 8px 24px rgba(0,0,0,.1)}
.card-icon{font-size:36px;margin-bottom:10px}
.card-blue{border-color:#e3f2fd;background:linear-gradient(135deg,#fff,#e3f2fd)}
.card-green{border-color:#e8f5e9;background:linear-gradient(135deg,#fff,#e8f5e9)}
.card-orange{border-color:#fff3e0;background:linear-gradient(135deg,#fff,#fff3e0)}
.card-purple{border-color:#f3e5f5;background:linear-gradient(135deg,#fff,#f3e5f5)}
.card h3{font-size:16px;margin-bottom:4px}
.card p{font-size:12px;color:#666}
.badge{background:#ff4757;color:#fff;font-size:11px;padding:2px 8px;border-radius:10px;position:absolute;top:8px;right:8px}
.page{display:none;animation:fadeIn .15s}
.page.active{display:block}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.form-card{background:#fff;border-radius:16px;padding:20px;margin-top:16px;box-shadow:0 2px 12px rgba(0,0,0,.06)}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:14px;font-weight:600;margin-bottom:6px;color:#555}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:12px 14px;border:2px solid #e8e8e8;border-radius:12px;font-size:15px;outline:none;transition:border-color .2s;-webkit-appearance:none}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#667eea}
.form-group textarea{min-height:100px;resize:vertical}
.btn-primary{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border:none;padding:14px 24px;border-radius:12px;font-size:16px;font-weight:600;width:100%;cursor:pointer;box-shadow:0 4px 16px rgba(102,126,234,.4);transition:transform .2s}
.btn-primary:active{transform:scale(.98)}
.btn-success{background:linear-gradient(135deg,#2ed573,#1e90ff);box-shadow:0 4px 16px rgba(46,213,115,.4)}
.btn-danger{background:linear-gradient(135deg,#ff4757,#ff6348);box-shadow:0 4px 16px rgba(255,71,87,.4)}
.btn-row{display:flex;gap:12px;margin-top:16px}
.btn-row .btn-primary{flex:1}
.result-box{background:#f8f9fa;border-radius:12px;padding:16px;margin-top:16px;border-left:4px solid #667eea}
.result-box.success{border-left-color:#2ed573;background:#e8f5e9}
.result-box.error{border-left-color:#ff4757;background:#ffe0e0}
.list-item{background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 2px 8px rgba(0,0,0,.06);display:flex;justify-content:flex-start;align-items:center}
.list-item-info{flex:1}
.list-item-title{font-size:15px;font-weight:600;margin-bottom:4px}
.list-item-meta{font-size:12px;color:#666;word-break:break-all;overflow-wrap:anywhere}
.list-item-actions{display:flex;gap:8px}
.empty-state{text-align:center;padding:40px 20px;color:#999}
.empty-state-icon{font-size:48px;margin-bottom:12px}
.nav-bar{position:fixed;bottom:0;left:0;right:0;background:#f7f7f7;display:flex;justify-content:space-around;padding:5px 0 calc(3px + env(safe-area-inset-bottom));border-top:0.5px solid #dcdcdc;z-index:100}
/* V2.2.0 底部导航栏电脑端居中（修正版：置于基础样式之后，避免left/right被覆盖；margin:auto居中，窗口略大于960px时不溢出） */
@media (min-width: 960px) {
  .nav-bar{max-width:960px;margin:0 auto;left:0;right:0;border-radius:0 0 14px 14px;border-top:none;box-shadow:0 2px 12px rgba(0,0,0,.06)}
}
.nav-item{flex:1;text-align:center;padding:2px;cursor:pointer;color:#191919;font-size:10px}
.nav-item.active{color:#07c160}
.nav-item-icon{font-size:24px;margin-bottom:1px;line-height:1.1}
.back-btn{display:inline-flex;align-items:center;gap:6px;color:#667eea;font-size:14px;font-weight:600;margin-bottom:12px;cursor:pointer}
.loading{display:inline-block;width:20px;height:20px;border:3px solid #f3f3f3;border-top:3px solid #667eea;border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}

/* V1.9.71 报销类型选择器（第一行序号+名称，第二行灰色小字说明） */
.cat-trigger{width:100%;padding:8px;border:1px solid #ddd;border-radius:8px;font-size:14px;background:#fff;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center;cursor:pointer;min-height:35px}
.cat-trigger .cat-tv{color:#222}
.cat-trigger .cat-tv.ph{color:#999}
.cat-trigger .cat-arrow{color:#999;font-size:12px;margin-left:8px}
.cat-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:9998;display:none}
.cat-sheet{position:fixed;left:0;right:0;bottom:0;background:#fff;border-radius:14px 14px 0 0;z-index:9999;display:none;flex-direction:column;max-height:72vh}
.cat-sheet-hd{padding:13px 16px;text-align:center;font-weight:600;font-size:15px;border-bottom:1px solid #f0f0f0;position:relative}
.cat-sheet-hd .cat-close{position:absolute;right:14px;top:11px;color:#999;font-size:16px;cursor:pointer;padding:2px 6px}
.cat-sheet-bd{overflow-y:auto;padding:4px 0 20px;-webkit-overflow-scrolling:touch}
.cat-item{padding:10px 16px;border-bottom:1px solid #f4f4f4;cursor:pointer}
.cat-item:last-child{border-bottom:none}
.cat-item .cn{font-size:15px;color:#222;font-weight:500}
.cat-item .cd{font-size:12px;color:#8a9bb5;margin-top:3px;line-height:1.5}
.cat-item.sel .cn{color:#07c160}
.cat-item:active{background:#f7f8fa}
/* V372-673 杨总: PC端报销类型弹窗全宽留白根治——居中浮卡, 宽度适配文字(半屏内), 收掉右侧空白 */
@media (min-width:900px){
.cat-sheet{left:50%;right:auto;bottom:auto;top:50%;transform:translate(-50%,-50%);width:min(460px,92vw);max-height:76vh;border-radius:14px;box-shadow:0 12px 48px rgba(0,0,0,.22)}
}

/* --- 原第二style块 --- */
.expense-row { transition: all 0.2s; }
.expense-row:hover { border-color: #07c160 !important; }
select { background: #fff; }
input[type="date"] { font-family: inherit; }
/* ==================== V2.4.0 主页改版（方案四·混合式）：桌面深色侧栏+工作台首屏；手机保留卡片+待办横幅 ==================== */
/* 手机端待办横幅（默认隐藏，有待办且非桌面模式时JS置flex） */
.home-todo-banner{display:none;align-items:center;gap:8px;max-width:520px;margin:14px auto 0;padding:12px 16px;background:linear-gradient(135deg,#ff7a00 0%,#ffa940 100%);color:#fff;border-radius:12px;box-shadow:0 2px 8px rgba(255,122,0,.25);cursor:pointer;font-size:14px;box-sizing:border-box}
.home-todo-banner .htb-num{background:#fff;color:#ff7a00;font-weight:700;border-radius:10px;min-width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}
.home-todo-banner .htb-go{margin-left:auto;font-size:12px;opacity:.9}
/* 桌面框架件（手机端隐藏，桌面模式由 body.dmode + media query 启用） */
.dside,.dtop,.prof-mask,.prof-pop{display:none}
/* 工作台（双端可用；窄屏自动单列） */
.wb-greet{display:flex;align-items:flex-end;justify-content:space-between;margin:18px 0 4px;gap:10px}
.wb-greet h2{margin:0;font-size:22px;color:#1f1f1f}
.wb-greet p{margin:4px 0 0;color:#8c8c8c;font-size:13px}
.wb-greet-date{color:#8c8c8c;font-size:13px;flex:none}
.wb-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:14px}
.wb-card{background:#fff;border-radius:12px;padding:16px;box-shadow:0 1px 4px rgba(0,0,0,.05);cursor:pointer;transition:transform .15s,box-shadow .15s}
.wb-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.wbc-ic{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;margin-bottom:10px}
.wbc-num{font-size:24px;font-weight:700;line-height:1.2}
.wbc-label{margin-top:2px;font-size:13px;color:#8c8c8c}
.wb-cols{display:grid;grid-template-columns:1fr 320px;gap:14px;margin-top:14px;align-items:stretch}/* V3.52.90 杨总：待办卡与右侧系统公告卡底部拉齐（start改回stretch，空态靠wb-empty flex垂直居中不留白）；V3.38.68 曾改start */
.wb-panel{background:#fff;border-radius:12px;padding:16px;box-shadow:0 1px 4px rgba(0,0,0,.05)}
/* 2026-08-22 刘杰：工作台PC端中部留白根治——左栏待办卡与右栏（快捷入口+公告）等高拉伸，空态垂直居中，不再留空白带 */
#page-workbench .wb-cols>.wb-panel{display:flex;flex-direction:column}
#page-workbench #wbTodoList{flex:1;display:flex;flex-direction:column}
#page-workbench #wbTodoList>.wb-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 0}

.wb-side-col{display:flex;flex-direction:column;gap:14px}
.wbp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.wbp-head h3{margin:0;font-size:15px;color:#1f1f1f}
.wbp-more{font-size:12px;color:#1890ff;cursor:pointer}
.wb-empty{padding:28px 0;text-align:center;color:#bfbfbf;font-size:13px}
.wbt-row{display:flex;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px solid #f5f5f5;cursor:pointer}
.wbt-row:last-child{border-bottom:none}
.wbt-row:hover{background:#fafafa}
.wbt-type{flex:none;background:#e6f7ff;color:#1890ff;font-size:11px;border-radius:4px;padding:2px 6px}
.wbt-main{flex:1;min-width:0}
.wbt-title{font-size:14px;color:#1f1f1f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbt-sub{font-size:12px;color:#bfbfbf;margin-top:2px}
.wbt-amt{flex:none;font-size:14px;font-weight:600;color:#fa8c16}
.wb-quick{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.wbq-item{display:flex;align-items:center;gap:8px;padding:11px 12px;border:1px solid #f0f0f0;border-radius:10px;font-size:13px;color:#333;cursor:pointer;transition:all .15s}
.wbq-item:hover{border-color:#1890ff;color:#1890ff;background:#f0f7ff}
.wbn-item{font-size:13px;color:#595959;padding:8px 0;border-bottom:1px dashed #f0f0f0;line-height:1.5}
.wbn-item:last-child{border-bottom:none}
@media (max-width: 899px){
  .wb-cards{grid-template-columns:1fr 1fr}
  .wb-cols{grid-template-columns:1fr}
  .wb-greet h2{font-size:19px}
}
/* 桌面模式（≥900px）：深色侧栏 + 顶栏 + 内容区让位（z-index 控制在 150 以下，给全屏弹层≥200 让路） */
@media (min-width: 900px){
  body.dmode{padding-bottom:0;background:#f0f2f5}
  body.dmode .dside{display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;width:220px;background:#001529;z-index:150;overflow-y:auto}
  .dside-logo{padding:8px 16px 6px;border-bottom:1px solid rgba(255,255,255,.08)}
  .dside-logo h1{font-size:15px;font-weight:600;color:#fff;margin:0}
  /* V3.61.65-YANG-MENU723 仅桌面侧栏：搜索吸附顶部，权限隐藏项保持隐藏 */
  /* YANG-MENU725 白底高对比搜索入口，深色侧栏中一眼可识别 */
  body.dmode .dside-search723{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:7px;margin:8px 10px 7px;padding:7px 9px;background:#fff;border:1px solid #69b1ff;border-radius:7px;box-shadow:0 0 0 2px rgba(24,144,255,.16),0 3px 10px rgba(0,21,41,.28);box-sizing:border-box}
  body.dmode .dside-search723:focus-within{border-color:#1677ff;background:#fff;box-shadow:0 0 0 3px rgba(24,144,255,.28),0 3px 10px rgba(0,21,41,.28)}
  .dside-search-ic723{font-size:19px;line-height:16px;color:#1677ff;transform:rotate(-20deg)}
  body.dmode .dside-search723 input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#1f1f1f;font-size:12px;font-weight:500;padding:0}
  body.dmode .dside-search723 input::placeholder{color:#595959;opacity:1}
  body.dmode .dside-search723 kbd{background:#f0f5ff;border:1px solid #91caff;border-radius:3px;padding:1px 3px;color:#0958d9;font:9px/1.3 sans-serif;white-space:nowrap}
  body.dmode .dside-search-empty723{padding:16px 14px;text-align:center;color:rgba(255,255,255,.45);font-size:12px;line-height:1.6}
  body.dmode .dside-item.ms-filter-hide723,body.dmode .dside-sec.ms-filter-hide723{display:none!important}
  body.dmode .dside-item.ms-key723{background:rgba(64,169,255,.22);color:#fff;outline:1px solid rgba(64,169,255,.35)}
  body.dmode .dside-menu-label723{min-width:0}
  body.dmode .dside-menu-label723 mark{background:transparent;color:#69c0ff;padding:0;font-weight:600}
  .dside-sec{padding:8px 18px 2px;font-size:9.5px;letter-spacing:1.5px;color:rgba(255,255,255,.38)}
  .dside-item{display:flex;align-items:center;gap:8px;margin:1px 8px;padding:5px 10px;color:rgba(255,255,255,.75);font-size:13px;cursor:pointer;border-radius:7px;transition:background .15s,color .15s}
  .dside-item:hover{background:rgba(255,255,255,.08);color:#fff}
  .dside-item.active{background:linear-gradient(135deg,#1890ff,#096dd9);color:#fff;font-weight:600;box-shadow:0 2px 8px rgba(24,144,255,.35)}
  .dsi-ic{width:18px;text-align:center;flex:none;font-size:14px}
  .dside::-webkit-scrollbar{width:4px}
  .dside::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
  .dsi-badge{margin-left:auto;background:#f5222d;color:#fff;font-size:10px;border-radius:8px;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
  body.dmode .dtop{display:flex;align-items:center;position:fixed;left:220px;right:0;top:0;height:52px;background:#fff;z-index:140;box-shadow:0 1px 4px rgba(0,21,41,.08);padding:0 24px;box-sizing:border-box}
  .dtop-crumb{font-size:14px;color:#8c8c8c}
  .dtop-crumb b{color:#1f1f1f;font-weight:600}
  .dtop-right{margin-left:auto;display:flex;align-items:center;gap:20px}
  .dtop-bell{position:relative;cursor:pointer;font-size:17px;line-height:1}
  .db-num{position:absolute;top:-7px;right:-9px;background:#f5222d;color:#fff;font-size:10px;border-radius:8px;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}
  .dtop-user{display:flex;align-items:center;gap:8px;cursor:pointer}
  .du-av{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
  .du-name{font-size:13px;color:#333;max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* V3.4.56 顶栏个人信息弹层（谭副总：铃铛位改查看个人信息） */
  .dtop-user{padding:5px 10px;border-radius:8px;transition:background .15s}
  .dtop-user:hover{background:#f5f6fa}
  .prof-mask{display:none;position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.25);z-index:198}
  .prof-pop{display:none;position:fixed;top:60px;right:24px;width:340px;background:#fff;border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,.16);z-index:199;padding-bottom:10px;overflow:hidden}
  .pp-hero{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#667eea,#764ba2);padding:18px;position:relative}
  .pp-ava{width:52px;height:52px;border-radius:50%;background:rgba(255,255,255,.22);border:2px solid rgba(255,255,255,.55);color:#fff;display:flex;align-items:center;justify-content:center;font-size:21px;font-weight:700;flex-shrink:0}
  .pp-hm{flex:1;min-width:0}
  .pp-name{font-size:17px;font-weight:700;color:#fff}
  .pp-sub{font-size:12px;color:rgba(255,255,255,.85);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pp-x{position:absolute;top:10px;right:12px;color:rgba(255,255,255,.85);cursor:pointer;font-size:13px;padding:4px}
  .pp-sec{font-size:13px;font-weight:600;color:#333;margin:12px 16px 4px;padding-bottom:6px;border-bottom:1px solid #f0f0f0}
  .pp-row{display:flex;justify-content:space-between;padding:7px 16px;font-size:12px}
  .pp-row span{color:#888}
  .pp-row b{color:#333;font-weight:600;text-align:right;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pp-go{margin:10px 16px 4px;padding:9px;text-align:center;background:#f6f7fb;border-radius:8px;color:#667eea;font-size:13px;font-weight:600;cursor:pointer}
  .pp-go:hover{background:#eceffb}
  body.dmode .page.active{margin-left:220px;padding:64px 24px 24px;min-height:100vh;box-sizing:border-box}
  body.dmode .header{display:none !important}
  body.dmode .nav-bar{display:none !important}
  body.dmode .container{padding:0;max-width:1200px;margin:0 auto}
  body.dmode .menu-list{max-width:720px}
}

/* ==================== V2.4.1 桌面版式：报销申请(左表单+右汇总卡) / 审批中心(左列表+右详情内嵌) / 单据查询(条件横排+结果行化) —— 仅 body.dmode 桌面模式生效，手机端零影响 ==================== */
/* ---- 报销申请 ---- */
body.dmode #page-expense .container{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;max-width:1200px;align-items:start}
body.dmode #page-expense .form-card{max-width:none;margin:16px 0 0}
/* 基本信息区块：字段双列，整行元素例外 */
body.dmode #page-expense .exp-sec-a{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
body.dmode #page-expense .exp-sec-a > h4,
body.dmode #page-expense .exp-sec-a > div:not(.form-group),
body.dmode #page-expense .exp-sec-a > .exp-span2,
body.dmode #page-expense .exp-sec-a > #supplierGroup,
body.dmode #page-expense .exp-sec-a > #invoiceAttachWrap{grid-column:1/-1}
/* 收款信息区块：字段双列 */
body.dmode #page-expense .exp-sec-b{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
body.dmode #page-expense .exp-sec-b > h4,
body.dmode #page-expense .exp-sec-b > div:not(.form-group){grid-column:1/-1}
/* 费用明细行：桌面三列并排（序号行整行） */
body.dmode #page-expense .expense-row{display:grid;grid-template-columns:2fr 1fr 130px;gap:12px;align-items:end}
body.dmode #page-expense .expense-row > div{margin-bottom:0 !important}
body.dmode #page-expense .expense-row > div:first-child{grid-column:1/-1;margin-bottom:6px !important}
/* 右侧汇总卡（JS创建，手机端不创建） */
.exp-aside{background:#fff;border-radius:12px;box-shadow:0 1px 4px rgba(0,0,0,.05);padding:16px;position:sticky;top:76px}
.exp-aside h3{margin:0 0 12px;font-size:15px;color:#1f1f1f}
.exp-aside .ea-row{display:flex;justify-content:space-between;font-size:13px;color:#595959;padding:6px 0;border-bottom:1px dashed #f0f0f0}
.exp-aside .ea-row b{color:#1f1f1f;font-weight:600;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exp-aside .ea-amt{margin:12px 0;text-align:center;background:#fff7e6;border-radius:10px;padding:14px}
.exp-aside .ea-amt .n{font-size:26px;font-weight:700;color:#fa8c16}
.exp-aside .ea-amt .l{font-size:12px;color:#8c8c8c;margin-top:2px}
.exp-aside .ea-tip{font-size:11px;color:#bfbfbf;text-align:center;margin-top:8px;line-height:1.5}
/* ---- 审批中心：左列表(416px) + 详情内嵌右栏 ---- */
body.dmode #page-approve .container{max-width:none;margin:0}
body.dmode #page-approve .form-card{max-width:460px; /* V3.25.32 刘杰：列表加宽 */margin:16px 0 0;max-height:calc(100vh - 100px);overflow:auto}
body.dmode #page-approve .list-item{cursor:pointer;border:2px solid transparent;box-sizing:border-box}
body.dmode #page-approve .list-item.apv-sel{border-color:#1890ff;box-shadow:0 2px 8px rgba(24,144,255,.15)}
/* 详情弹层 → 桌面右栏内嵌面板（内联样式全量 !important 覆盖） */
body.dmode #detailModal{position:fixed !important;inset:auto !important;left:720px !important; /* V3.25.32 刘杰：随列表加宽对齐 */right:24px !important;top:76px !important;bottom:24px !important;background:transparent !important;z-index:50 !important;padding:0 !important;overflow:hidden !important}
body.dmode #detailModal > div{max-width:none !important;height:100%;display:flex;flex-direction:column;border-radius:12px;box-shadow:0 1px 4px rgba(0,0,0,.08)}
body.dmode #detailModalBody{max-height:none !important;flex:1}
/* 未选中单据时的空态面板（与详情面板同位互斥） */
#approveDeskEmpty{display:none}
body.dmode #approveDeskEmpty.show{display:flex;position:fixed;left:720px; /* V3.25.32 刘杰：归位body层后占满右栏 */right:24px;top:76px;bottom:24px;z-index:49;background:#fff;border-radius:12px;box-shadow:0 1px 4px rgba(0,0,0,.05);align-items:center;justify-content:center;flex-direction:column;color:#bfbfbf;font-size:14px}
body.dmode #approveDeskEmpty.show .ade-ic{font-size:46px;margin-bottom:10px}
/* ---- 单据查询：条件横排 + 结果行化 ---- */
body.dmode #page-query .form-card{max-width:1000px;margin:16px auto 0}
body.dmode #page-query .form-card > .form-group:first-of-type{max-width:280px}
body.dmode #page-query #queryPanelMylist:not([style*="none"]){display:grid !important;grid-template-columns:180px minmax(0,1fr) 150px;gap:10px;align-items:end;max-width:760px}
body.dmode #page-query #queryPanelMylist > div{margin-top:0 !important}
body.dmode #page-query #queryPanelMylist > button{margin-top:0 !important}
body.dmode #page-query #queryPanelDocno{max-width:420px}
/* 桌面表头（HTML注入，手机隐藏） */
#queryDeskHead{display:none}
body.dmode #queryDeskHead{display:grid;grid-template-columns:minmax(280px,1.1fr) minmax(0,1fr) 90px;gap:16px;padding:16px 8px 8px;font-size:12px;color:#8c8c8c;border-bottom:1px solid #f0f0f0}
/* 结果卡片 → 表格行 */
body.dmode #queryResult .list-item{display:grid !important;grid-template-columns:minmax(280px,1.1fr) minmax(0,1fr) auto;gap:16px;align-items:center;border-radius:0 !important;box-shadow:none !important;margin-bottom:0 !important;padding:13px 8px;border-bottom:1px solid #f0f0f0}
body.dmode #queryResult .list-item .list-item-title{margin-bottom:0;font-size:14px}
body.dmode #queryResult .list-item .list-item-meta{display:flex;gap:24px;align-items:center;font-size:13px}
body.dmode #queryResult .list-item .list-item-meta br{display:none}
body.dmode #queryResult .list-item button{margin-top:0 !important}
body.dmode #queryResult .list-item:hover{background:#fafcff}

/* V2.4.1-fix 查询行meta：改单行省略（原flex在长事由下挤压"状态:"竖排） */
body.dmode #queryResult .list-item .list-item-meta{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
body.dmode #queryResult .list-item .list-item-meta span{margin-right:16px}

/* V2.4.2 统计报表桌面版式：限宽 + 功能卡片4列 */
body.dmode #page-stats .container{max-width:1100px}
body.dmode #page-stats .container > div[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:repeat(4,1fr) !important}
body.dmode #page-stats #adminPanel{max-width:1100px;margin-left:auto !important;margin-right:auto !important}

/* V2.4.5 侧栏底部版本号区 */
body.dmode .dside-foot{margin-top:auto;padding:6px 16px;font-size:10px;color:rgba(255,255,255,.32);border-top:1px solid rgba(255,255,255,.08)}

/* ==================== V2.4.6 版本更新日志页（时间线） ==================== */
.cl-card{max-width:1200px;margin-left:auto;margin-right:auto}
.cl-sub{margin:-6px 0 14px;font-size:12px;color:#8c8c8c}
.cl-item{position:relative;padding:0 0 18px 26px;border-left:2px solid #e8e8e8;margin-left:8px}
.cl-item:last-child{border-left-color:transparent;padding-bottom:4px}
.cl-item::before{content:'';position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:#d9d9d9;border:2px solid #fff;box-shadow:0 0 0 2px #e8e8e8}
.cl-item:first-child::before{background:#1890ff;box-shadow:0 0 0 2px #bae0ff}
.cl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cl-ver{background:#1890ff;color:#fff;font-size:12px;font-weight:600;border-radius:10px;padding:2px 9px}
.cl-item:first-child .cl-ver{background:#f5222d}
.cl-new{font-size:10px;color:#f5222d;border:1px solid #ffa39e;border-radius:8px;padding:1px 6px;background:#fff1f0}
.cl-date{font-size:12px;color:#8c8c8c}
.cl-text{margin-top:6px;font-size:13px;color:#404040;line-height:1.7}
.wb-notice-link{cursor:pointer;transition:background .15s;border-radius:8px}
.wb-notice-link:hover{background:#fafcff}


/* V2.4.10 桌面端永不显示手机卡片首页（JS本就将桌面home重定向workbench；消除跳回主站时首绘闪手机首页紫红横幅） */
@media (min-width:900px){
  #page-home.page.active{display:none !important}
  body:not(.dmode) > *:not(script):not(style):not(link){visibility:hidden !important;animation:oaBootShow .2s ease 2.8s forwards}
  body:not(.dmode){background:#f4f6fa}
  @keyframes oaBootShow{to{visibility:visible}}
}

/* ===== V2.6.0 分组宫格菜单（方案A） ===== */
.menu-groups{max-width:520px;margin:14px auto 0}
.menu-group{margin-bottom:14px}
.mg-title{font-size:13px;font-weight:600;color:#666;margin:0 4px 8px;letter-spacing:.5px}
.mg-card{background:#fff;border-radius:14px;box-shadow:0 1px 4px rgba(0,0,0,.06);display:flex;flex-wrap:wrap;padding:8px 4px}
.mg-item{width:25%;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;cursor:pointer;border-radius:10px;transition:background .15s;box-sizing:border-box}
.mg-item:active{background:#f5f6f8}
.mg-ic{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:23px;color:#fff}
.mg-tx{font-size:12px;color:#333;text-align:center;white-space:nowrap;overflow:hidden;max-width:100%}
/* V2.6.0 头部适当压扁，给菜单留空间 */
.header{padding:14px 20px}
.header h1{font-size:20px}
/* V3.11.97 2026-08-11 首页再紧凑+防晃动：图标36px/卡片压距，为待办横幅留40px余量，360×780带横幅实测零溢出；body锁橡皮筋 */
/* V3.4.20 手机首页紧凑化+取消上下滑动：全区块压间距；手机端首页锁一屏高overflow:hidden+文本不随系统字体放大（X5大字体用户推高主因） */
.menu-groups{margin:6px auto 0}
.menu-group{margin-bottom:6px}
.mg-title{font-size:12px;margin:0 4px 3px}
.mg-card{padding:4px 2px;border-radius:12px}
.mg-item{padding:6px 4px;gap:3px}
.mg-ic{width:36px;height:36px;font-size:18px;border-radius:9px}
.home-todo-banner{margin:6px auto 0;padding:6px 12px}
.header{padding:6px 16px 10px} /* V3.60.3 杨总：横幅收窄 */
.header h1{font-size:18px}
.header p{font-size:12px;margin-top:2px}
@media (max-width:959px){
  .page{animation:none}
  html,body{overscroll-behavior:none}
  #page-home{-webkit-text-size-adjust:100%;text-size-adjust:100%}
  /* V3.4.98 首页改可上下滑动(杨总): 撤V3.4.20锁高, body自然滚动, 底栏80px占位恢复全局默认 */
  /* V3.60.5 杨总(10-22 21:54录屏): 大屏手机首页锁定不上下滑动, 锁一屏高overflow:hidden, 压距保一屏尽览 V361-661b */
  #page-home.page.active{height:calc(100vh - 80px);height:calc(100dvh - 80px);overflow:hidden;overscroll-behavior:none;display:flex;flex-direction:column} /* V3.60.7 杨总:组均铺收窄底部空白 V362-662 */
  #page-home.page.active .menu-groups{flex:1;display:flex;flex-direction:column;justify-content:space-evenly;margin-top:0}
  #page-home.page.active .menu-group{margin-bottom:0}
  #page-home .menu-group{margin-bottom:4px}
  #page-home .mg-item{padding:4px 4px;gap:2px}
  #page-home .mg-card{padding:3px 2px}
  #page-home .mg-title{margin:0 4px 2px}
  #page-home .menu-groups{margin-top:4px}
  /* V3.16.88 何副总：企业通讯页顶栏(企业通讯+消息tab)/底栏(首页导航)锁死防晃动（何副总08-14 20:51录屏）——滚动从body级收进列表pane容器：页高固定=视口-底栏80占位，头部块为pane兄弟节点天然不随滚，pane独立overscroll-behavior:contain断滚动链（到底/顶不再橡皮筋拉整页），滚动条只留在列表区右侧不再扎进底栏设置钮区域；仅手机端，桌面dmode布局不动 */
  #page-im.page.active{display:flex;flex-direction:column;height:calc(100vh - 80px);height:calc(100dvh - 80px)}
  #page-im .container{flex:1;display:flex;flex-direction:column;min-height:0}
  #page-im .form-card{flex:1;display:flex;flex-direction:column;min-height:0;margin-top:8px}
  #page-im .form-card > div[style*="position:sticky"]{flex:none}
  #page-im #imPaneConvs,#page-im #imPaneContacts,#page-im #imPaneNotices,#page-im #imPaneTasks{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
}
/* V2.6.0 电脑端：三组三列 */
@media (min-width: 960px){
  .menu-groups{max-width:960px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
  .menu-group{margin-bottom:0}
  .mg-card{padding:12px 8px}
  .mg-item{padding:16px 4px}
  .mg-ic{width:52px;height:52px;font-size:26px;border-radius:14px}
  .mg-tx{font-size:13px}
}

/* V3.4.24 重载/冷启动防闪首页：oa-restore期间隐藏首页与渐变头（首次showPage撤除class，2.8s异常兜底） */
html.oa-restore #page-home{display:none !important}
html.oa-restore .header{display:none !important}

/* ==================== V3.4.52 设置页桌面版式（杨总：手机版式被原样拉伸到电脑）——头卡+双栏信息+下属双列+入口并排；仅 body.dmode ≥900px 生效，手机端零影响 ==================== */
body.dmode #page-settings .container{max-width:1080px}
body.dmode #page-settings .form-card{margin:24px auto 0;padding:0;background:transparent !important;box-shadow:none !important;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 20px}
body.dmode #page-settings .form-card > h2{grid-column:1/-1;margin-bottom:2px !important;font-size:20px}
body.dmode #page-settings .form-card > div{grid-column:1/-1}
body.dmode #page-settings .form-card > #permEntry,
body.dmode #page-settings .form-card > #changelogEntry{grid-column:auto;margin-bottom:0 !important}
body.dmode #settingsInfo[style*="block"]{display:grid !important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 20px;align-items:start}
body.dmode #settingsInfo > div{margin-bottom:0 !important}
body.dmode #page-settings .info-row{padding:12px 0 !important}
body.dmode #subordinateItems{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 20px}
body.dmode #settingsRefreshArea{text-align:center}
body.dmode #settingsRefreshArea button{width:auto !important;padding:12px 48px !important;margin-top:4px !important}


/* V3.6.80 更新日志页横滑根治（杨总视频）：长ASCII token（如approval_center?tab=pending|approved|rejected|all 49字符）不可断行撑破卡片致整页可左右滑——文本强制断行+页面禁横向溢出 */
#page-changelog{overflow-x:hidden}
.cl-text{word-break:break-all;overflow-wrap:anywhere}
.cl-head{min-width:0}
#page-rules{overflow-x:hidden}
#rulesContent{word-break:break-all;overflow-wrap:anywhere}

/* ==================== V3.11.82 杨总：更新日志标题固定不随滚动 + 单条日志卡片弹层（长按保存） ==================== */
#page-changelog .cl-sticky-head{background:#fff;padding-top:2px;margin-bottom:10px;border-bottom:1px solid #f5f5f5}
/* V3.11.86 杨总：sticky被#page-changelog的overflow-x:hidden废掉——改弹性布局，标题固定、仅日志列表内部滚动 */
body:not(.dmode) #page-changelog .container{height:calc(100vh - 100px);display:flex;flex-direction:column}
/* V3.22.77 杨总：更新日志可视区加高——底部留白浪费收紧，归属小字随底边下移，一屏多显示约1条日志 */
body:not(.dmode) #page-changelog .container{height:calc(100vh - 72px);height:calc(100dvh - 72px)}
body.dmode #page-changelog .container{height:calc(100vh - 40px);display:flex;flex-direction:column}
#page-changelog .cl-card{flex:1;display:flex;flex-direction:column;overflow:hidden}
#changelogList{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.logcard-act{text-align:center;margin-top:12px}
.logcard-act a{display:inline-block;background:#1890ff;color:#fff;padding:10px 28px;border-radius:22px;font-size:15px;text-decoration:none}
.cl-click{cursor:pointer;transition:background .15s}
.cl-click:active{background:#f8fbff}
.logcard-mask{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}
.logcard-box{width:100%;max-width:420px;max-height:86vh;overflow-y:auto;border-radius:14px}
.logcard-img{display:block;width:100%;border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,.35)}
.logcard-tip{text-align:center;color:#fff;font-size:12px;margin-top:10px;opacity:.85}

/* ==================== V3.21.00 杨总：手机首页填满一屏（消除底栏上方空白）——页高=视口-底栏80，菜单组均分剩余空间，图标适度调大；仅手机端 ==================== */
@media (max-width:959px){
  #page-home.page.active{display:flex;flex-direction:column;min-height:calc(100vh - 80px);min-height:calc(100dvh - 80px)}
  #page-home .container{flex:1;display:flex;flex-direction:column;min-height:0;width:100%}
  #page-home .menu-groups{flex:1;display:flex;flex-direction:column;justify-content:space-evenly;margin:0 auto;width:100%}
  #page-home .menu-group{margin-bottom:0;flex:none}
  #page-home .mg-title{font-size:12.5px;margin:0 4px 5px}
  #page-home .mg-card{padding:7px 4px;border-radius:13px}
  #page-home .mg-item{padding:9px 4px;gap:5px}
  #page-home .mg-ic{width:46px;height:46px;font-size:22px;border-radius:12px}
  #page-home .mg-tx{font-size:12.5px}
  #page-home .home-todo-banner{margin:8px auto 0;padding:8px 14px;flex:none}
  #page-home .header{flex:none}
}
/* V3.22.65 杨总：审批页删第1层大气泡（form-card白卡包裹），手机端列表直接铺页面背景、内容更宽；桌面端右栏面板不动 */
@media (max-width:959px){
  #page-approve .form-card{background:transparent;box-shadow:none;border-radius:0;padding:4px 2px;margin-top:0}
}

/* V3.22.70 杨总：更新日志页删最外层大气泡（form-card白卡），手机端日志条目直接铺页面背景、内容更宽；桌面端白卡不动 */
@media (max-width:959px){
  #page-changelog .form-card{background:transparent;box-shadow:none;border-radius:0;padding:4px 2px;margin-top:0}
  #page-changelog .cl-sticky-head{background:#f5f6fa;border-bottom:none;margin-bottom:4px}
}
/* V3.22.73 杨总：更新日志固定头三行紧凑重排——标题/副标题/归属行间隙收紧对齐 */
#page-changelog .cl-sticky-head h2{margin-bottom:2px}
#page-changelog .cl-sticky-head .cl-sub{margin:0 0 3px}
#page-changelog .cl-sticky-head .cl-sub.cl-own{margin:0 0 6px;font-size:12px}
/* V3.22.79 杨总：更新日志标题四字改居中 */
#page-changelog .cl-sticky-head h2{text-align:center}

/* V3.23.65 杨总：更新日志归属行定位于"列表底—导航栏"空白正中——fixed定位脱离文档流，
   垂直位置=（页面预留90px+导航实际高度54px+安全区）/2−半行高10px，随机型导航高度自适应居中（仅手机端） */
@media (max-width:959px){
  body:not(.dmode) #page-changelog .cl-foot{position:fixed;left:0;right:0;margin:0 !important;z-index:50;
    bottom:calc((90px + 54px + env(safe-area-inset-bottom)) / 2 - 10px)}
}
/* V3.23.62 杨总：更新日志底部空白根治——V3.22.77的calc(100dvh-72px)视口估算在App/X5内核dvh偏小，底部留白约一条日志高；
   手机端页面本就是固定全屏flex列+底部90px让导航（V3.22.97/.98模型），改容器flex:1自动吃满，日志列表直接顶到导航上沿，归属小字随之下移 */
@media (max-width:959px){
  body:not(.dmode) #page-changelog.page.active{overflow:hidden}
  body:not(.dmode) #page-changelog .container{height:auto;flex:1;min-height:0;overflow:hidden;padding-bottom:0}
}
/* V3.22.82 杨总：更新日志副标题小字也居中 */
#page-changelog .cl-sticky-head .cl-sub{text-align:center}

/* V3.22.90 杨总：审批页「待审批单据」标题吸顶锁死不随滚动移动+居中显示 */
@media (max-width:959px){
  #page-approve .form-card > h2{position:sticky;top:0;z-index:60;background:#f5f6fa;text-align:center;margin-bottom:8px;padding:10px 2px 8px}
}

/* V3.22.92 杨总：报销页手机端三层气泡删前两层——①页面两侧16px留白边 ②大白气泡，只留第三层内容卡片，空间利用率提升 */
@media (max-width:959px){
  #page-expense .container{padding-left:6px;padding-right:6px}
  #page-expense .form-card{background:transparent;box-shadow:none;border-radius:0;padding:4px 2px;margin-top:0}
}

/* V3.22.93 杨总：报销页「费用报销申请」标题吸顶锁死+居中（与审批页标题同款机制） */
@media (max-width:959px){
  #page-expense .form-card > h2{position:sticky;top:0;z-index:60;background:#f5f6fa;text-align:center;margin-bottom:8px;padding:10px 2px 8px}
}

/* V3.22.94 杨总：吸顶标题滚动时晃动震动——sticky在安卓惯性滚动中逐帧重算所致，改fixed固定定位彻底锁死，标题区预留位防内容被遮 */
@media (max-width:959px){
  #page-approve .form-card > h2, #page-expense .form-card > h2{position:fixed;top:0;left:0;right:0;margin:0;padding:10px 6px 8px}
  #page-approve .form-card, #page-expense .form-card{padding-top:48px}
}

/* ============ V3.22.95 杨总：全局吸顶菜单+底部导航防晃锁定 ============ */
/* 总纲：一切sticky改fixed钉死（sticky惯性滚动逐帧重算必晃），fixed栏进合成层，全局禁滚动回弹 */
html,body{overscroll-behavior:none} /* 滚动到顶/到底不回弹——回弹会带着fixed栏视觉晃动 */
@media (max-width:959px){
  /* ①底部导航栏：独立合成层，惯性滚动不再抖动 */
  .nav-bar{transform:translateZ(0);backface-visibility:hidden}
  /* ②首页渐变横幅：sticky→fixed，预留96px */
  .header{position:fixed;top:0;left:0;right:0}
  #page-home .container{padding-top:96px}
  /* ③单据查询/施工纪律主标题：fixed钉顶居中 */
  #page-query .form-card > h2,
  #page-rules .form-card > h2{position:fixed;top:0;left:0;right:0;z-index:60;background:#f5f6fa;text-align:center;padding:10px 6px 8px}
  #page-query .form-card, #page-rules .form-card{padding-top:48px}
  /* ④设置页标题（含56px头像，栏更高）：fixed钉顶 */
  #page-settings .form-card > h2{position:fixed;top:0;left:0;right:0;z-index:60;background:#f5f6fa;padding:8px 6px}
  #page-settings .form-card{padding-top:88px}
  /* ⑤统计报表flex标题行：fixed钉顶 */
  #page-stats .container > div:first-child{position:fixed;top:0;left:0;right:0;z-index:60;background:#f5f6fa;margin-top:0;padding:10px 6px}
  #page-stats .container{padding-top:52px}
}
/* 已锁定不动的页面（无需处理，留档备查）：更新日志页/企业通讯页=整页flex锁高+内部滚动，标题本就不随滚动；审批页/报销页=V3.22.94已fixed */

/* ============ V3.22.97 杨总：滚动模型根治（导航晃动/文字遮挡终极方案） ============ */
/* 旧模型：整个文档滚动，导航栏/标题悬浮其上——文档一晃栏就晃，内容还能滑到导航底下遮住文字。
   新模型：html/body锁死不动，只有当前页面内容区自己内滚——导航栏和吸顶标题物理上不可能动，全局一次根治，后续新页面自动继承。 */
@media (max-width:959px){
  html,body{height:100%;overflow:hidden}
  .page.active{position:fixed;top:0;left:0;right:0;bottom:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;box-sizing:border-box;padding-bottom:64px} /* V3.60.3 杨总：底部留白压缩 */
}

/* ============ V3.22.98 杨总：钉顶结构锁（弃fixed标题，标题移出滚动容器） ============ */
/* fixed标题在WebView惯性滚动末段会重绘跳帧；改为页面=固定flex列，标题流内居顶，只有容器内滚——标题物理不可动。
   页面底部预留90px让出导航栏区，内容永远滚不到导航底下，文字遮挡同步根治。 */
@media (max-width:959px){
  .page.active{display:flex;flex-direction:column}
  .oa-pin-title{flex:none;background:#f5f6fa;text-align:center;margin:0 !important;padding:10px 6px 8px;position:relative;z-index:5}
  #page-settings .oa-pin-title{padding-top:8px;padding-bottom:8px}
  .page.active > .container{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-bottom:24px}
  #page-im.page.active > .container{overflow:visible;padding-bottom:0} /* 企业通讯自有内滚体系，不动 */
  /* 撤销V3.22.94/.95 fixed标题的预留位（标题已回流内，无需再让位） */
  #page-expense .form-card, #page-approve .form-card, #page-query .form-card, #page-rules .form-card, #page-settings .form-card, #page-baseinfo .form-card, #page-orginfo .form-card{padding-top:4px}
  #page-stats .container{padding-top:0}
  /* 导航栏层级再拔高，任何页面内容不可逾越 */
  .nav-bar{z-index:500}
}

/* 2026-10-07 颜总监：侧栏未读角标跳动 */
@keyframes dsiBounce{0%,100%{transform:scale(1)}30%{transform:scale(1.4)}60%{transform:scale(.88)}}
.dsi-bounce{animation:dsiBounce .6s ease}

/* V3.52.91 杨总：工作台宽屏适配——窗口最大化内容自适应铺满（原1200/1120/1000三层限宽，2K屏右侧大片空白），左右留24px呼吸边 */
body.dmode #page-workbench .container{max-width:none !important;margin:0 !important;padding:0 24px}
body.dshell-mode #page-workbench{max-width:none !important;margin-left:0 !important;margin-right:0 !important}
body.dshell-mode #page-workbench .container{max-width:none !important;margin:0 !important;padding:0 24px}
