/* Plus Jakarta Sans — self-hosted (downloaded from Google Fonts v12) */
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* 联备智仓 · 移动端原型样式（与桌面端 v1 同源设计变量） */
/* Plus Jakarta Sans — self-hosted (downloaded from Google Fonts v12) */
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{
  --primary:#1890FF;--primary-dark:#096DD9;--primary-light:#E6F7FF;
  --success:#52C41A;--warning:#FAAD14;--danger:#FF4D4F;--info:#722ED1;
  --bg:#F0F2F5;--card:#FFFFFF;--border:#E8E8E8;
  --text:#262626;--text-sec:#595959;--text-third:#BFBFBF;
  --radius:12px;--shadow:0 2px 8px rgba(0,0,0,.06);
  --font:'Plus Jakarta Sans',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  --tabbar-h:80px;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{font-family:var(--font);background:radial-gradient(1200px 700px at 50% -10%,#0E3A66 0%,#001529 55%,#000C17 100%);color:var(--text);font-size:14px}

/* ===== 展示舞台 ===== */
.stage{min-height:100vh;display:flex;flex-direction:column;align-items:center}
.stage-bar{width:100%;display:flex;align-items:center;justify-content:center;gap:14px;padding:14px 20px}
.stage-title{font-size:14px;font-weight:600;color:rgba(255,255,255,.88);letter-spacing:.5px}
.stage-sub{font-size:12px;color:rgba(255,255,255,.45)}
.anno-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:#fff;background:rgba(24,144,255,.25);padding:4px 12px;border-radius:16px;border:1px solid rgba(24,144,255,.7);user-select:none}
.anno-toggle.off{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.5)}
.phone-wrap{flex:1;display:flex;justify-content:center;padding-bottom:24px}

/* ===== 手机壳 ===== */
.phone{width:410px;height:864px;border:10px solid #0B0F14;border-radius:52px;background:var(--bg);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 40px 100px rgba(0,0,0,.6),0 0 0 2px rgba(255,255,255,.06);transform-origin:top center;position:relative;flex-shrink:0}

/* 状态栏 */
.statusbar{height:46px;display:flex;align-items:center;padding:0 26px;font-size:14px;font-weight:600;flex-shrink:0;background:#fff;color:var(--text);transition:background .25s,color .25s;z-index:20}
.statusbar .sb-time{flex:1}
.statusbar .sb-icons{display:flex;gap:6px;align-items:center}
.statusbar .sb-icons i{width:16px;height:16px}
.statusbar.sb-primary{background:#1890FF;color:#fff}
.statusbar.sb-dark{background:#000;color:#fff}

/* 屏幕容器 */
.screens{flex:1;position:relative;overflow:hidden}
.screen{position:absolute;inset:0;display:none;flex-direction:column;background:var(--bg)}
.screen.active{display:flex}
.screen-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.screen-body::-webkit-scrollbar{width:0;height:0}

/* 子页导航栏 */
.navbar{height:48px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 6px;flex-shrink:0}
.nav-back{width:42px;height:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text)}
.nav-back i{width:22px;height:22px}
.nav-title{flex:1;text-align:center;font-size:16px;font-weight:600}
.nav-action{width:42px;height:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-sec)}
.nav-action i{width:19px;height:19px}

/* 一级页大标题头 */
.page-head{display:flex;align-items:flex-end;padding:12px 16px 10px;background:#fff;border-bottom:1px solid var(--border);flex-shrink:0}
.ph-title{font-size:20px;font-weight:700;flex:1}
.ph-action{font-size:13px;color:var(--primary);cursor:pointer;padding:4px 2px;font-weight:500}

/* ===== 底部标签栏 ===== */
.tabbar{flex-shrink:0;height:var(--tabbar-h);background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(5,1fr);padding-bottom:16px;position:relative;z-index:30}
.tabbar::after{content:'';position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:120px;height:4px;border-radius:2px;background:#111}
.tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10px;color:var(--text-sec);cursor:pointer;position:relative;user-select:none}
.tab-item i{width:22px;height:22px;stroke-width:1.8}
.tab-item.active{color:var(--primary);font-weight:600}
.tab-badge{position:absolute;top:7px;left:calc(50% + 4px);background:var(--danger);color:#fff;font-size:9px;font-weight:600;border-radius:8px;padding:0 4px;min-width:16px;height:15px;line-height:15px;text-align:center}
.tab-scan-btn{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890FF,#096DD9);display:flex;align-items:center;justify-content:center;color:#fff;margin-top:-24px;box-shadow:0 6px 16px rgba(24,144,255,.45);border:4px solid #fff}
.tab-scan-btn i{width:24px;height:24px}
.phone.sub-active .tabbar{display:none}

/* ===== 首页头部 ===== */
.home-header{background:linear-gradient(180deg,#1890FF 0%,#0E7CE8 70%,#0B74DE 100%);padding:6px 16px 40px;color:#fff}
.hh-top{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.logo-icon{width:34px;height:34px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:17px;flex-shrink:0}
.hh-name{font-size:16px;font-weight:700;line-height:1.2}
.hh-sub{font-size:11px;opacity:.75}
.hh-actions{margin-left:auto;display:flex;align-items:center;gap:14px}
.hh-actions i{width:21px;height:21px}
.hh-bell{position:relative;display:flex}
.hh-bell::after{content:'';position:absolute;top:-1px;right:-1px;width:7px;height:7px;border-radius:50%;background:var(--danger);border:1.5px solid #1890FF}
.avatar{width:30px;height:30px;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.4);border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
.hh-search{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.25);border-radius:18px;height:36px;padding:0 14px;font-size:13px;color:rgba(255,255,255,.85)}
.hh-search i{width:16px;height:16px;flex-shrink:0}
.hh-search input{flex:1;background:none;border:none;outline:none;color:#fff;font-size:13px;font-family:var(--font)}
.hh-search input::placeholder{color:rgba(255,255,255,.65)}

/* 仓库概况横滑（叠在头部之上） */
.wh-scroll{display:flex;gap:10px;overflow-x:auto;padding:0 12px 4px;margin-top:-28px;margin-bottom:12px;position:relative;z-index:2}
.wh-scroll::-webkit-scrollbar{height:0}
.wh-card{min-width:138px;flex-shrink:0;background:#fff;border-radius:12px;padding:12px;box-shadow:var(--shadow);cursor:pointer}
.wh-card .wh-name{font-size:12px;font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:4px}
.wh-card .wh-label{font-size:10px;color:var(--text-sec)}
.wh-card .wh-value{font-size:20px;font-weight:700;line-height:1.3}
.wh-card .wh-delta{font-size:10px;color:var(--text-sec);margin-top:2px}
.wh-card.planned{opacity:.6;background:#F7F8FA}
.wh-card.planned .wh-value{font-size:14px;font-weight:500;color:var(--text-sec)}

/* ===== 卡片 ===== */
.m-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;margin:0 12px 12px}
.m-card-title{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.m-card-title i{width:16px;height:16px;stroke-width:2;color:var(--text)}
.more{margin-left:auto;font-size:12px;color:var(--primary);cursor:pointer;font-weight:400}

/* 分段控件 */
.seg{display:flex;background:#F2F3F5;border-radius:9px;padding:3px}
.seg-item{flex:1;text-align:center;padding:7px 4px;border-radius:7px;font-size:13px;color:var(--text-sec);cursor:pointer;transition:all .15s;user-select:none;white-space:nowrap}
.seg-item.active{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 4px rgba(0,0,0,.1)}
.seg-badge{font-size:11px;font-weight:600;color:var(--danger);margin-left:2px}
.seg-item.active .seg-badge{color:var(--danger)}

/* 标签 */
.tag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:500;white-space:nowrap;flex-shrink:0}
.tag-blue{background:var(--primary-light);color:var(--primary)}
.tag-green{background:#F6FFED;color:var(--success)}
.tag-orange{background:#FFF7E6;color:var(--warning)}
.tag-red{background:#FFF1F0;color:var(--danger)}
.tag-gray{background:#F5F5F5;color:var(--text-sec)}
.tag-purple{background:#F9F0FF;color:var(--info)}

/* 待办行（首页紧凑列表） */
.todo-row{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid #F5F5F5}
.todo-row:last-child{border-bottom:none}
.tr-main{flex:1;min-width:0}
.tr-title{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-meta{font-size:11px;color:var(--text-third);margin-top:2px}
.btn-link{color:var(--primary);font-size:13px;cursor:pointer;white-space:nowrap;background:none;border:none;font-family:var(--font);padding:0}

/* 快捷入口 */
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.quick-item{display:flex;flex-direction:column;align-items:center;gap:7px;padding:10px 2px;border-radius:10px;cursor:pointer;transition:background .15s}
.quick-item:active{background:var(--primary-light)}
.qi-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff}
.qi-icon i{width:18px;height:18px}
.qi-label{font-size:11px;color:var(--text)}

/* 消息列表 */
.alert-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #F5F5F5;font-size:12px}
.alert-item:last-child{border-bottom:none}
.alert-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alert-time{color:var(--text-third);font-size:11px;white-space:nowrap}

/* 图表周期切换 */
.mini-seg{margin-left:auto;display:flex;background:#F2F3F5;border-radius:6px;padding:2px}
.mini-seg span{padding:2px 10px;border-radius:5px;font-size:11px;color:var(--text-sec);cursor:pointer}
.mini-seg span.active{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* ===== 待审/待办卡片 ===== */
.rev-card{background:#fff;border-radius:12px;box-shadow:var(--shadow);margin:0 12px 10px;padding:12px 14px;display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.rev-cb-wrap{display:none;padding-top:3px}
.select-mode .rev-cb-wrap{display:block}
.rev-cb{width:18px;height:18px;accent-color:var(--primary)}
.rev-main{flex:1;min-width:0}
.rev-top{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.rev-no{font-size:13.5px;font-weight:600;color:var(--text)}
.rev-amt{margin-left:auto;font-size:13.5px;font-weight:700}
.rev-desc{font-size:12.5px;color:var(--text-sec);margin-bottom:6px}
.rev-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-third);flex-wrap:wrap}
.rev-meta .sep{color:#E0E0E0}
.wait-warn{color:var(--warning);font-weight:600}
.wait-danger{color:var(--danger);font-weight:600}
.rev-go{align-self:center;color:var(--text-third);flex-shrink:0}
.rev-go i{width:17px;height:17px}

/* 批量操作底栏 */
.screen-bottom{flex-shrink:0;background:#fff;border-top:1px solid var(--border);padding:10px 12px 12px;z-index:10}
.bulk-bar{background:#FFFBE6;border:1px solid #FFE58F;border-radius:10px;padding:10px;margin:0}
.bulk-count{font-size:12px;font-weight:600;color:var(--text-sec);margin-bottom:8px}
.bulk-input{width:100%;height:36px;border:1px solid var(--border);border-radius:8px;padding:0 10px;font-size:13px;font-family:var(--font);outline:none;background:#fff;margin-bottom:8px}
.bulk-btns{display:flex;gap:8px}

/* 按钮 */
.m-btn{flex:1;height:42px;border-radius:9px;font-size:14px;font-weight:600;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--text);display:flex;align-items:center;justify-content:center;gap:5px;font-family:var(--font);transition:all .15s}
.m-btn i{width:16px;height:16px}
.m-btn:active{transform:scale(.98)}
.m-btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.m-btn-success{background:var(--success);border-color:var(--success);color:#fff}
.m-btn-danger-o{background:#fff;border-color:var(--danger);color:var(--danger)}
.m-btn-sm{height:34px;font-size:13px;flex:none;padding:0 16px}

/* ===== 筛选/状态条 ===== */
.chip-scroll{display:flex;gap:8px;overflow-x:auto;padding:10px 12px;flex-shrink:0}
.chip-scroll::-webkit-scrollbar{height:0}
.chip{padding:5px 13px;border-radius:16px;background:#fff;border:1px solid var(--border);font-size:12px;color:var(--text-sec);white-space:nowrap;cursor:pointer;user-select:none}
.chip b{font-weight:600;margin-left:2px}
.chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.search-row{display:flex;gap:8px;padding:10px 12px 0;flex-shrink:0}
.search-input{flex:1;display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--border);border-radius:18px;height:36px;padding:0 13px;color:var(--text-third)}
.search-input i{width:15px;height:15px;flex-shrink:0}
.search-input input{flex:1;border:none;outline:none;font-size:13px;font-family:var(--font);background:none;color:var(--text)}

/* ===== 单据卡片 ===== */
.doc-card{background:#fff;border-radius:12px;box-shadow:var(--shadow);margin:0 12px 10px;padding:13px 14px;cursor:pointer}
.doc-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.doc-no{font-size:14px;font-weight:600;color:var(--primary)}
.doc-top .tag{margin-left:auto}
.doc-desc{font-size:12.5px;color:var(--text-sec);margin-bottom:10px}
.doc-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding-top:10px;border-top:1px solid #F5F5F5}
.doc-stats label{display:block;font-size:10px;color:var(--text-third);margin-bottom:2px}
.doc-stats b{font-size:12.5px;font-weight:600}

/* 悬浮按钮 */
.fab{position:absolute;right:14px;bottom:20px;height:44px;border-radius:22px;background:linear-gradient(135deg,#1890FF,#096DD9);color:#fff;display:flex;align-items:center;gap:6px;padding:0 18px;font-size:13.5px;font-weight:600;box-shadow:0 6px 16px rgba(24,144,255,.4);cursor:pointer;z-index:15;border:none;font-family:var(--font)}
.fab i{width:17px;height:17px}

/* ===== 表单 ===== */
.frow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #F5F5F5;font-size:13.5px}
.frow:last-child{border-bottom:none}
.frow label{color:var(--text-sec);flex-shrink:0}
.frow label .req{color:var(--danger);margin-right:2px}
.frow input,.frow select{border:none;outline:none;text-align:right;font-size:13.5px;color:var(--text);font-family:var(--font);flex:1;min-width:0;background:none}
.frow select{appearance:none;-webkit-appearance:none;direction:rtl}
.frow .fval{flex:1;text-align:right;color:var(--text)}
.frow .fph{color:var(--text-third)}
.frow .chev{color:var(--text-third);flex-shrink:0;display:flex}
.frow .chev i{width:15px;height:15px}

/* 明细卡片 */
.detail-card{border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:10px}
.dc-head{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.dc-idx{width:20px;height:20px;border-radius:6px;background:var(--primary-light);color:var(--primary);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dc-name{font-size:13.5px;font-weight:600}
.dc-code{font-size:11px;color:var(--text-third);margin-top:1px}
.dc-del{margin-left:auto;color:var(--danger);cursor:pointer;display:flex}
.dc-del i{width:16px;height:16px}
.dc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px}
.dc-grid:last-child{margin-bottom:0}
.dc-grid.cols3{grid-template-columns:repeat(3,1fr)}
.dc-grid label{display:block;font-size:10px;color:var(--text-third);margin-bottom:3px}
.dc-grid input,.dc-grid select{width:100%;height:30px;border:1px solid var(--border);border-radius:6px;padding:0 7px;font-size:12px;outline:none;font-family:var(--font);background:#fff}
.dc-grid input:focus{border-color:var(--primary)}
.dc-amt{height:30px;display:flex;align-items:center;font-size:13px;font-weight:700}
.add-detail{width:100%;height:40px;border:1.5px dashed var(--primary);border-radius:10px;background:var(--primary-light);color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-family:var(--font)}
.add-detail i{width:16px;height:16px}
.sum-row{display:flex;justify-content:space-between;align-items:center;padding:12px 2px 2px;font-size:13px;color:var(--text-sec)}
.sum-row b{font-size:17px;font-weight:700;color:var(--text)}

/* ===== 审批详情 ===== */
.appr-banner{background:#fff;margin:12px 12px 0;border-radius:12px 12px 0 0;padding:14px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #F0F0F0;box-shadow:var(--shadow)}
.appr-banner .tag{font-size:13px;padding:3px 10px}
.appr-no{font-size:15px;font-weight:700}
.appr-sub{font-size:11px;color:var(--text-sec);margin-top:2px}
.appr-card{margin-top:0;border-radius:0}
.appr-card.last{border-radius:0 0 12px 12px}
.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px}
.kv-grid .kv label{display:block;font-size:11px;color:var(--text-third);margin-bottom:3px}
.kv-grid .kv div{font-size:13px;font-weight:500}
.kv-amt{font-weight:700 !important;color:var(--primary)}
.mat-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid #F5F5F5;font-size:12.5px}
.mat-row:last-child{border-bottom:none}
.mat-name{flex:1;min-width:0}
.mat-name b{display:block;font-size:13px;font-weight:600}
.mat-name span{font-size:11px;color:var(--text-third)}
.mat-qty{color:var(--text-sec);white-space:nowrap}
.mat-amt{font-weight:600;white-space:nowrap;min-width:64px;text-align:right}

/* 竖向时间线 */
.tl{padding:2px 0 0 4px}
.tl-item{position:relative;padding:0 0 18px 24px}
.tl-item::before{content:'';position:absolute;left:7px;top:18px;bottom:0;width:2px;background:var(--border)}
.tl-item.done::before{background:var(--success)}
.tl-item:last-child::before{display:none}
.tl-dot{position:absolute;left:0;top:2px;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.tl-dot.done{background:var(--success);color:#fff}
.tl-dot.done i{width:10px;height:10px;stroke-width:3}
.tl-dot.current{background:var(--primary);box-shadow:0 0 0 4px rgba(24,144,255,.2)}
.tl-dot.pending{background:#E8E8E8}
.tl-name{font-size:13px;font-weight:600}
.tl-name .tl-tag{font-size:10px;font-weight:600;color:var(--primary);background:var(--primary-light);border-radius:4px;padding:1px 6px;margin-left:6px}
.tl-meta{font-size:11px;color:var(--text-sec);margin-top:2px;line-height:1.7}
.tl-item.pending .tl-name{color:var(--text-third);font-weight:500}
.tl-item.pending .tl-meta{color:var(--text-third)}

/* 流程图（折叠） */
.collapse-head{cursor:pointer;user-select:none}
.collapse-head .arrow-icon{margin-left:auto;transition:transform .2s;color:var(--text-sec);width:16px;height:16px}
.collapse-head.open .arrow-icon{transform:rotate(90deg)}
.flow-chart{background:#FAFAFA;border-radius:10px;padding:16px;display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:10px}
.flow-node{background:#fff;border:2px solid var(--primary);border-radius:8px;padding:6px 18px;font-size:12px;font-weight:500;min-width:130px;text-align:center}
.flow-node.start{background:var(--primary);color:#fff;border-radius:18px}
.flow-node.end{background:var(--success);border-color:var(--success);color:#fff;border-radius:18px}
.flow-node.active{box-shadow:0 0 0 3px rgba(24,144,255,.3)}
.flow-node.dim{opacity:.5}
.flow-arrow{color:var(--text-sec);font-size:14px;line-height:1}

/* 审批底栏 */
.appr-bottom .bulk-input{margin-bottom:8px}

/* ===== 备件档案 ===== */
.part-card{background:#fff;border-radius:12px;box-shadow:var(--shadow);margin:0 12px 10px;padding:13px 14px;cursor:pointer}
.part-top{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.part-name{font-size:14px;font-weight:600;flex:1}
.part-code{font-size:11.5px;color:var(--text-third);margin-bottom:10px}
.part-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding-top:10px;border-top:1px solid #F5F5F5}
.part-stats label{display:block;font-size:10px;color:var(--text-third);margin-bottom:2px}
.part-stats b{font-size:13px;font-weight:600}
.stock-ok{color:var(--success)}
.stock-warn{color:var(--warning)}
.stock-danger{color:var(--danger)}

/* 底部弹层 */
.sheet-overlay{position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:40;opacity:0;pointer-events:none;transition:opacity .25s}
.sheet-overlay.open{opacity:1;pointer-events:auto}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:78%;background:#fff;border-radius:18px 18px 0 0;z-index:41;transform:translateY(105%);transition:transform .3s cubic-bezier(.3,1,.4,1);display:flex;flex-direction:column}
.sheet.open{transform:none}
.sheet-head{padding:14px 18px 10px;display:flex;align-items:center;border-bottom:1px solid var(--border);flex-shrink:0}
.sheet-head::before{content:'';position:absolute;top:7px;left:50%;transform:translateX(-50%);width:40px;height:4px;border-radius:2px;background:#E0E0E0}
.sheet-title{font-size:16px;font-weight:700;flex:1}
.sheet-close{cursor:pointer;color:var(--text-sec);display:flex}
.sheet-close i{width:20px;height:20px}
.sheet-body{flex:1;overflow-y:auto;padding:14px 18px 28px}
.sheet-section{margin-bottom:16px}
.sheet-section-title{font-size:13px;font-weight:600;padding-bottom:7px;border-bottom:1px solid var(--border);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.sheet-section-title i{width:14px;height:14px}
.check-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12.5px}
.check-item .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.check-item .dot.ok{background:var(--success)}
.qr-box{width:96px;height:96px;background:#F5F5F5;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-sec);text-align:center;line-height:1.6}
.io-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #F5F5F5;font-size:12.5px}
.io-row:last-child{border-bottom:none}
.io-row .io-d{color:var(--text-sec);width:42px}
.io-row .io-n{margin-left:auto;font-weight:600}

/* ===== 全部功能 ===== */
.func-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.func-item{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 2px;border-radius:10px;cursor:pointer;transition:background .15s}
.func-item:active{background:var(--primary-light)}
.func-icon{width:40px;height:40px;border-radius:11px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center}
.func-icon i{width:19px;height:19px;stroke-width:1.8}
.func-label{font-size:11px;color:var(--text);text-align:center}
.func-item.disabled{opacity:.45}

/* ===== 我的 ===== */
.mine-header{background:linear-gradient(180deg,#1890FF 0%,#0B74DE 100%);padding:22px 18px 34px;color:#fff;display:flex;align-items:center;gap:14px}
.mine-avatar{width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.22);border:2px solid rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700}
.mine-name{font-size:18px;font-weight:700}
.mine-role{font-size:12px;opacity:.8;margin-top:3px}
.mine-list{background:#fff;border-radius:12px;margin:-20px 12px 12px;box-shadow:var(--shadow);overflow:hidden;position:relative;z-index:2}
.mine-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid #F5F5F5;font-size:14px;cursor:pointer}
.mine-row:last-child{border-bottom:none}
.mine-row:active{background:#F5F7FA}
.mine-row i.mi{width:19px;height:19px;color:var(--primary);stroke-width:1.8}
.mine-row .chev{margin-left:auto;color:var(--text-third);display:flex}
.mine-row .chev i{width:16px;height:16px}
.mine-row.danger{color:var(--danger);justify-content:center}

/* ===== 扫码 ===== */
.scan-screen{background:#0A0E14}
.scan-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;color:#fff}
.scan-close{position:absolute;top:14px;left:14px;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;cursor:pointer}
.scan-close i{width:20px;height:20px}
.scan-frame{width:230px;height:230px;position:relative;margin-bottom:26px}
.scan-frame::before,.scan-frame::after,.scan-frame .c3,.scan-frame .c4{content:'';position:absolute;width:34px;height:34px;border:3px solid var(--primary)}
.scan-frame::before{top:0;left:0;border-right:none;border-bottom:none;border-radius:6px 0 0 0}
.scan-frame::after{top:0;right:0;border-left:none;border-bottom:none;border-radius:0 6px 0 0}
.scan-frame .c3{bottom:0;left:0;border-right:none;border-top:none;border-radius:0 0 0 6px}
.scan-frame .c4{bottom:0;right:0;border-left:none;border-top:none;border-radius:0 0 6px 0}
.scan-line{position:absolute;left:12px;right:12px;top:14px;height:2px;background:linear-gradient(90deg,transparent,#1890FF 30%,#69B9FF 50%,#1890FF 70%,transparent);box-shadow:0 0 12px rgba(24,144,255,.9);animation:scanmove 2.4s ease-in-out infinite}
@keyframes scanmove{0%,100%{top:14px}50%{top:calc(100% - 14px)}}
@media(prefers-reduced-motion:reduce){.scan-line{animation:none}}
.scan-hint{font-size:13px;color:rgba(255,255,255,.75);margin-bottom:6px}
.scan-sub{font-size:11px;color:rgba(255,255,255,.4)}
.scan-actions{position:absolute;bottom:46px;display:flex;gap:46px}
.scan-act{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11px;color:rgba(255,255,255,.75);cursor:pointer}
.scan-act .sa-icon{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center}
.scan-act .sa-icon i{width:20px;height:20px}

/* ===== 标注气泡（与桌面端同款） ===== */
.anno-bubble{padding:7px 10px;border-radius:4px;font-size:10.5px;line-height:1.65;border:1.5px dashed #DC2626;background:rgba(220,38,38,.06);color:#991B1B;margin:0 12px 12px}
body.hide-anno .anno-bubble{display:none !important}

/* Toast */
.toast{position:absolute;left:50%;bottom:130px;transform:translateX(-50%) translateY(8px);background:rgba(0,0,0,.78);color:#fff;font-size:12.5px;padding:9px 16px;border-radius:8px;opacity:0;pointer-events:none;transition:all .25s;z-index:99;white-space:nowrap}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 图表 */
#m-chart-trend{height:185px;width:100%}


/* 联备智仓 · 移动端 v2 增量样式（支付宝式首页 + iOS 式表单交互） */

/* v2：去掉扫码 tab，底栏 4 列 */
.tabbar{grid-template-columns:repeat(4,1fr)}

/* ===== 首页 v2：顶部（配色取自现网 --primary / --primary-dark） ===== */
.home-header2{background:linear-gradient(180deg,#1890FF 0%,#1890FF 40%,#096DD9 100%);padding:8px 14px 36px;color:#fff}
.hh2-top{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.hh2-logo{width:32px;height:32px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;flex-shrink:0}
.hh2-search{flex:1;background:#fff;border-radius:10px;height:38px;display:flex;align-items:center;gap:8px;padding:0 12px;color:var(--text-third)}
.hh2-search i{width:16px;height:16px;flex-shrink:0;color:var(--text-third)}
.hh2-search input{flex:1;border:none;outline:none;background:none;font-size:13px;font-family:var(--font);color:var(--text)}
.hh2-search input::placeholder{color:var(--text-third)}
.hh2-entries{display:grid;grid-template-columns:repeat(4,1fr)}
.hh2-entry{display:flex;flex-direction:column;align-items:center;gap:9px;color:#fff;font-size:13.5px;font-weight:500;cursor:pointer;position:relative;user-select:none}
.hh2-entry:active{opacity:.8}
.hh2-entry i{width:30px;height:30px;stroke-width:1.5}
.hh2-badge{position:absolute;top:-7px;right:calc(50% - 32px);background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:10px;min-width:19px;height:19px;line-height:15px;text-align:center;padding:2px 5px;border:2px solid #fff;box-sizing:border-box;line-height:13px}

/* 宫格卡（无标题，悬浮于头部之上） */
.grid-card{background:#fff;border-radius:16px;margin:-26px 12px 12px;box-shadow:var(--shadow);padding:8px 4px;position:relative;z-index:2}
.quick-grid5{display:grid;grid-template-columns:repeat(5,1fr)}
.quick-item5{display:flex;flex-direction:column;align-items:center;gap:7px;padding:11px 2px;border-radius:10px;cursor:pointer;transition:background .15s;user-select:none}
.quick-item5:active{background:var(--primary-light)}
.qi5-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff}
.qi5-icon i{width:17px;height:17px}
.qi5-icon.qi5-more{margin-left:0;background:#F2F3F5;color:var(--text-sec)}
.qi5-label{font-size:11px;color:var(--text)}

/* ===== 全部功能页：管理模式（添加/移除首页快捷入口） ===== */
.ph-cancel{font-size:13px;color:var(--text-sec);cursor:pointer;padding:4px 12px 4px 0;font-weight:500;user-select:none}
.ph-action.saving{background:var(--primary);color:#fff;border-radius:14px;padding:5px 16px;font-weight:600}
.manage-hint{text-align:center;font-size:11.5px;color:var(--text-third);padding:10px 0 0}
.func-item{position:relative}
.qbadge{position:absolute;top:6px;left:calc(50% + 11px);width:17px;height:17px;border-radius:50%;color:#fff;font-size:13px;line-height:14px;text-align:center;font-weight:700;border:1.5px solid #fff;box-sizing:border-box;z-index:2;pointer-events:none}
.qbadge.minus{background:#FA8C16}
.qbadge.plus{background:var(--primary)}
.func-item.added .func-icon{opacity:.35}
.func-item.added .func-label{color:var(--text-third)}
.func-icon.grad{color:#fff}
.quick-empty{grid-column:1/-1;text-align:center;font-size:12px;color:var(--text-third);padding:18px 0}

/* ===== iOS 式表单 ===== */
.frow.tappable{cursor:pointer;margin:0 -14px;padding-left:14px;padding-right:14px;transition:background .15s}
.frow.tappable:active{background:#F5F7FA}
.frow input[type="date"]{border:none;background:none;outline:none;text-align:right;font-size:13.5px;color:var(--text);font-family:var(--font);-webkit-appearance:none;appearance:none}

/* 明细摘要行 */
.sum-item{display:flex;align-items:center;gap:10px;padding:13px 2px;border-bottom:1px solid #F5F5F5;cursor:pointer}
.sum-item:active{background:#FAFBFC}
.si-main{flex:1;min-width:0}
.si-name{font-size:14px;font-weight:600}
.si-meta{font-size:11px;color:var(--text-third);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.si-right{text-align:right;flex-shrink:0}
.si-amt{font-size:14px;font-weight:700}
.si-qty{font-size:11px;color:var(--text-sec);margin-top:3px}
.sum-item .chev2{color:var(--text-third);display:flex;flex-shrink:0}
.sum-item .chev2 i{width:16px;height:16px}
.add-row2{display:flex;gap:10px;margin-top:14px}
.add-btn2{flex:1;height:42px;border:1.5px dashed var(--primary);border-radius:10px;background:var(--primary-light);color:var(--primary);font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;font-family:var(--font)}
.add-btn2 i{width:16px;height:16px}
.add-btn2.alt{border-color:#C9D2DC;background:#FAFBFC;color:var(--text-sec)}

/* ===== iOS 动作面板（选择器） ===== */
.picker-overlay{position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:45;opacity:0;pointer-events:none;transition:opacity .25s}
.picker-overlay.open{opacity:1;pointer-events:auto}
.psheet{position:absolute;left:8px;right:8px;bottom:10px;z-index:46;transform:translateY(120%);transition:transform .28s cubic-bezier(.3,1,.4,1)}
.psheet.open{transform:none}
.psheet-card{background:rgba(255,255,255,.98);border-radius:14px;overflow:hidden;margin-bottom:8px;backdrop-filter:blur(10px)}
.psheet-title{padding:13px;text-align:center;font-size:12.5px;color:var(--text-sec);border-bottom:1px solid #F0F0F0}
.psheet-opt{height:52px;display:flex;align-items:center;justify-content:center;font-size:16.5px;color:var(--text);border-bottom:1px solid #F0F0F0;cursor:pointer;position:relative;user-select:none}
.psheet-opt:last-child{border-bottom:none}
.psheet-opt:active{background:#F5F7FA}
.psheet-opt.selected{color:var(--primary);font-weight:600}
.psheet-opt.selected i{position:absolute;right:18px;width:18px;height:18px;stroke-width:2.5}
.psheet-cancel{background:#fff;border-radius:14px;height:52px;display:flex;align-items:center;justify-content:center;font-size:16.5px;font-weight:600;color:var(--text);cursor:pointer;user-select:none}
.psheet-cancel:active{background:#F5F7FA}

/* ===== 明细编辑弹层 ===== */
.sheet-btn{font-size:15px;color:var(--text-sec);cursor:pointer;padding:4px 2px;user-select:none}
.sheet-btn.primary{color:var(--primary);font-weight:600}
.editor-mat{display:flex;align-items:center;gap:10px;background:#F7F9FB;border-radius:10px;padding:12px;margin-bottom:6px;cursor:pointer}
.editor-mat .em-icon{width:38px;height:38px;border-radius:9px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.editor-mat .em-icon i{width:18px;height:18px}
.editor-mat .em-name{font-size:14px;font-weight:600}
.editor-mat .em-code{font-size:11px;color:var(--text-third);margin-top:2px}
.editor-mat .chev2{margin-left:auto;color:var(--text-third);display:flex}
.editor-mat .chev2 i{width:16px;height:16px}
.stepper{display:flex;align-items:center;border:1px solid var(--border);border-radius:9px;overflow:hidden}
.stepper button{width:38px;height:34px;border:none;background:#F7F8FA;font-size:19px;color:var(--text-sec);cursor:pointer;font-family:var(--font);display:flex;align-items:center;justify-content:center}
.stepper button:active{background:#EDEFF2;color:var(--primary)}
.stepper input{width:58px;height:34px;border:none;outline:none;text-align:center;font-size:15px;font-weight:600;font-family:var(--font);border-left:1px solid var(--border);border-right:1px solid var(--border)}
.unit-seg{display:flex;background:#F2F3F5;border-radius:8px;padding:2px}
.unit-seg span{padding:5px 14px;border-radius:6px;font-size:13px;color:var(--text-sec);cursor:pointer;user-select:none}
.unit-seg span.active{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.editor-amt-row{display:flex;justify-content:space-between;align-items:center;background:#F7F9FB;border-radius:10px;padding:12px 14px;margin-top:10px;font-size:13px;color:var(--text-sec)}
.editor-amt-row b{font-size:18px;font-weight:700;color:var(--text)}
.editor-del{margin:18px 0 4px;text-align:center;color:var(--danger);font-size:15px;font-weight:600;cursor:pointer;user-select:none}
.editor-input{border:none;outline:none;text-align:right;font-size:13.5px;color:var(--text);font-family:var(--font);flex:1;min-width:0;background:none}


/* 联备智仓设计 — 全局样式入口（仅 @import） */
/* Plus Jakarta Sans — self-hosted (downloaded from Google Fonts v12) */
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* 联备智仓 · 移动端原型样式（与桌面端 v1 同源设计变量） */
/* Plus Jakarta Sans — self-hosted (downloaded from Google Fonts v12) */
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-9eab1ee2.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* vietnamese */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-902fd766.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-3603602b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("font-529b4a5a.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{
  --primary:#1890FF;--primary-dark:#096DD9;--primary-light:#E6F7FF;
  --success:#52C41A;--warning:#FAAD14;--danger:#FF4D4F;--info:#722ED1;
  --bg:#F0F2F5;--card:#FFFFFF;--border:#E8E8E8;
  --text:#262626;--text-sec:#595959;--text-third:#BFBFBF;
  --radius:12px;--shadow:0 2px 8px rgba(0,0,0,.06);
  --font:'Plus Jakarta Sans',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  --tabbar-h:80px;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{font-family:var(--font);background:radial-gradient(1200px 700px at 50% -10%,#0E3A66 0%,#001529 55%,#000C17 100%);color:var(--text);font-size:14px}

/* ===== 展示舞台 ===== */
.stage{min-height:100vh;display:flex;flex-direction:column;align-items:center}
.stage-bar{width:100%;display:flex;align-items:center;justify-content:center;gap:14px;padding:14px 20px}
.stage-title{font-size:14px;font-weight:600;color:rgba(255,255,255,.88);letter-spacing:.5px}
.stage-sub{font-size:12px;color:rgba(255,255,255,.45)}
.anno-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:#fff;background:rgba(24,144,255,.25);padding:4px 12px;border-radius:16px;border:1px solid rgba(24,144,255,.7);user-select:none}
.anno-toggle.off{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.5)}
.phone-wrap{flex:1;display:flex;justify-content:center;padding-bottom:24px}

/* ===== 手机壳 ===== */
.phone{width:410px;height:864px;border:10px solid #0B0F14;border-radius:52px;background:var(--bg);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 40px 100px rgba(0,0,0,.6),0 0 0 2px rgba(255,255,255,.06);transform-origin:top center;position:relative;flex-shrink:0}

/* 状态栏 */
.statusbar{height:46px;display:flex;align-items:center;padding:0 26px;font-size:14px;font-weight:600;flex-shrink:0;background:#fff;color:var(--text);transition:background .25s,color .25s;z-index:20}
.statusbar .sb-time{flex:1}
.statusbar .sb-icons{display:flex;gap:6px;align-items:center}
.statusbar .sb-icons i{width:16px;height:16px}
.statusbar.sb-primary{background:#1890FF;color:#fff}
.statusbar.sb-dark{background:#000;color:#fff}

/* 屏幕容器 */
.screens{flex:1;position:relative;overflow:hidden}
.screen{position:absolute;inset:0;display:none;flex-direction:column;background:var(--bg)}
.screen.active{display:flex}
.screen-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.screen-body::-webkit-scrollbar{width:0;height:0}

/* 子页导航栏 */
.navbar{height:48px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 6px;flex-shrink:0}
.nav-back{width:42px;height:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text)}
.nav-back i{width:22px;height:22px}
.nav-title{flex:1;text-align:center;font-size:16px;font-weight:600}
.nav-action{width:42px;height:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-sec)}
.nav-action i{width:19px;height:19px}

/* 一级页大标题头 */
.page-head{display:flex;align-items:flex-end;padding:12px 16px 10px;background:#fff;border-bottom:1px solid var(--border);flex-shrink:0}
.ph-title{font-size:20px;font-weight:700;flex:1}
.ph-action{font-size:13px;color:var(--primary);cursor:pointer;padding:4px 2px;font-weight:500}

/* ===== 底部标签栏 ===== */
.tabbar{flex-shrink:0;height:var(--tabbar-h);background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(5,1fr);padding-bottom:16px;position:relative;z-index:30}
.tabbar::after{content:'';position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:120px;height:4px;border-radius:2px;background:#111}
.tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10px;color:var(--text-sec);cursor:pointer;position:relative;user-select:none}
.tab-item i{width:22px;height:22px;stroke-width:1.8}
.tab-item.active{color:var(--primary);font-weight:600}
.tab-badge{position:absolute;top:7px;left:calc(50% + 4px);background:var(--danger);color:#fff;font-size:9px;font-weight:600;border-radius:8px;padding:0 4px;min-width:16px;height:15px;line-height:15px;text-align:center}
.tab-scan-btn{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890FF,#096DD9);display:flex;align-items:center;justify-content:center;color:#fff;margin-top:-24px;box-shadow:0 6px 16px rgba(24,144,255,.45);border:4px solid #fff}
.tab-scan-btn i{width:24px;height:24px}
.phone.sub-active .tabbar{display:none}

/* ===== 首页头部 ===== */
.home-header{background:linear-gradient(180deg,#1890FF 0%,#0E7CE8 70%,#0B74DE 100%);padding:6px 16px 40px;color:#fff}
.hh-top{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.logo-icon{width:34px;height:34px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:17px;flex-shrink:0}
.hh-name{font-size:16px;font-weight:700;line-height:1.2}
.hh-sub{font-size:11px;opacity:.75}
.hh-actions{margin-left:auto;display:flex;align-items:center;gap:14px}
.hh-actions i{width:21px;height:21px}
.hh-bell{position:relative;display:flex}
.hh-bell::after{content:'';position:absolute;top:-1px;right:-1px;width:7px;height:7px;border-radius:50%;background:var(--danger);border:1.5px solid #1890FF}
.avatar{width:30px;height:30px;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.4);border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
.hh-search{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.25);border-radius:18px;height:36px;padding:0 14px;font-size:13px;color:rgba(255,255,255,.85)}
.hh-search i{width:16px;height:16px;flex-shrink:0}
.hh-search input{flex:1;background:none;border:none;outline:none;color:#fff;font-size:13px;font-family:var(--font)}
.hh-search input::placeholder{color:rgba(255,255,255,.65)}

/* 仓库概况横滑（叠在头部之上） */
.wh-scroll{display:flex;gap:10px;overflow-x:auto;padding:0 12px 4px;margin-top:-28px;margin-bottom:12px;position:relative;z-index:2}
.wh-scroll::-webkit-scrollbar{height:0}
.wh-card{min-width:138px;flex-shrink:0;background:#fff;border-radius:12px;padding:12px;box-shadow:var(--shadow);cursor:pointer}
.wh-card .wh-name{font-size:12px;font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:4px}
.wh-card .wh-label{font-size:10px;color:var(--text-sec)}
.wh-card .wh-value{font-size:20px;font-weight:700;line-height:1.3}
.wh-card .wh-delta{font-size:10px;color:var(--text-sec);margin-top:2px}
.wh-card.planned{opacity:.6;background:#F7F8FA}
.wh-card.planned .wh-value{font-size:14px;font-weight:500;color:var(--text-sec)}

/* ===== 卡片 ===== */
.m-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;margin:0 12px 12px}
.m-card-title{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.m-card-title i{width:16px;height:16px;stroke-width:2;color:var(--text)}
.more{margin-left:auto;font-size:12px;color:var(--primary);cursor:pointer;font-weight:400}

/* 分段控件 */
.seg{display:flex;background:#F2F3F5;border-radius:9px;padding:3px}
.seg-item{flex:1;text-align:center;padding:7px 4px;border-radius:7px;font-size:13px;color:var(--text-sec);cursor:pointer;transition:all .15s;user-select:none;white-space:nowrap}
.seg-item.active{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 4px rgba(0,0,0,.1)}
.seg-badge{font-size:11px;font-weight:600;color:var(--danger);margin-left:2px}
.seg-item.active .seg-badge{color:var(--danger)}

/* 标签 */
.tag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:500;white-space:nowrap;flex-shrink:0}
.tag-blue{background:var(--primary-light);color:var(--primary)}
.tag-green{background:#F6FFED;color:var(--success)}
.tag-orange{background:#FFF7E6;color:var(--warning)}
.tag-red{background:#FFF1F0;color:var(--danger)}
.tag-gray{background:#F5F5F5;color:var(--text-sec)}
.tag-purple{background:#F9F0FF;color:var(--info)}

/* 待办行（首页紧凑列表） */
.todo-row{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid #F5F5F5}
.todo-row:last-child{border-bottom:none}
.tr-main{flex:1;min-width:0}
.tr-title{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-meta{font-size:11px;color:var(--text-third);margin-top:2px}
.btn-link{color:var(--primary);font-size:13px;cursor:pointer;white-space:nowrap;background:none;border:none;font-family:var(--font);padding:0}

/* 快捷入口 */
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.quick-item{display:flex;flex-direction:column;align-items:center;gap:7px;padding:10px 2px;border-radius:10px;cursor:pointer;transition:background .15s}
.quick-item:active{background:var(--primary-light)}
.qi-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff}
.qi-icon i{width:18px;height:18px}
.qi-label{font-size:11px;color:var(--text)}

/* 消息列表 */
.alert-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #F5F5F5;font-size:12px}
.alert-item:last-child{border-bottom:none}
.alert-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alert-time{color:var(--text-third);font-size:11px;white-space:nowrap}

/* 图表周期切换 */
.mini-seg{margin-left:auto;display:flex;background:#F2F3F5;border-radius:6px;padding:2px}
.mini-seg span{padding:2px 10px;border-radius:5px;font-size:11px;color:var(--text-sec);cursor:pointer}
.mini-seg span.active{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* ===== 待审/待办卡片 ===== */
.rev-card{background:#fff;border-radius:12px;box-shadow:var(--shadow);margin:0 12px 10px;padding:12px 14px;display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.rev-cb-wrap{display:none;padding-top:3px}
.select-mode .rev-cb-wrap{display:block}
.rev-cb{width:18px;height:18px;accent-color:var(--primary)}
.rev-main{flex:1;min-width:0}
.rev-top{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.rev-no{font-size:13.5px;font-weight:600;color:var(--text)}
.rev-amt{margin-left:auto;font-size:13.5px;font-weight:700}
.rev-desc{font-size:12.5px;color:var(--text-sec);margin-bottom:6px}
.rev-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-third);flex-wrap:wrap}
.rev-meta .sep{color:#E0E0E0}
.wait-warn{color:var(--warning);font-weight:600}
.wait-danger{color:var(--danger);font-weight:600}
.rev-go{align-self:center;color:var(--text-third);flex-shrink:0}
.rev-go i{width:17px;height:17px}

/* 批量操作底栏 */
.screen-bottom{flex-shrink:0;background:#fff;border-top:1px solid var(--border);padding:10px 12px 12px;z-index:10}
.bulk-bar{background:#FFFBE6;border:1px solid #FFE58F;border-radius:10px;padding:10px;margin:0}
.bulk-count{font-size:12px;font-weight:600;color:var(--text-sec);margin-bottom:8px}
.bulk-input{width:100%;height:36px;border:1px solid var(--border);border-radius:8px;padding:0 10px;font-size:13px;font-family:var(--font);outline:none;background:#fff;margin-bottom:8px}
.bulk-btns{display:flex;gap:8px}

/* 按钮 */
.m-btn{flex:1;height:42px;border-radius:9px;font-size:14px;font-weight:600;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--text);display:flex;align-items:center;justify-content:center;gap:5px;font-family:var(--font);transition:all .15s}
.m-btn i{width:16px;height:16px}
.m-btn:active{transform:scale(.98)}
.m-btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.m-btn-success{background:var(--success);border-color:var(--success);color:#fff}
.m-btn-danger-o{background:#fff;border-color:var(--danger);color:var(--danger)}
.m-btn-sm{height:34px;font-size:13px;flex:none;padding:0 16px}

/* ===== 筛选/状态条 ===== */
.chip-scroll{display:flex;gap:8px;overflow-x:auto;padding:10px 12px;flex-shrink:0}
.chip-scroll::-webkit-scrollbar{height:0}
.chip{padding:5px 13px;border-radius:16px;background:#fff;border:1px solid var(--border);font-size:12px;color:var(--text-sec);white-space:nowrap;cursor:pointer;user-select:none}
.chip b{font-weight:600;margin-left:2px}
.chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.search-row{display:flex;gap:8px;padding:10px 12px 0;flex-shrink:0}
.search-input{flex:1;display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--border);border-radius:18px;height:36px;padding:0 13px;color:var(--text-third)}
.search-input i{width:15px;height:15px;flex-shrink:0}
.search-input input{flex:1;border:none;outline:none;font-size:13px;font-family:var(--font);background:none;color:var(--text)}

/* ===== 单据卡片 ===== */
.doc-card{background:#fff;border-radius:12px;box-shadow:var(--shadow);margin:0 12px 10px;padding:13px 14px;cursor:pointer}
.doc-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.doc-no{font-size:14px;font-weight:600;color:var(--primary)}
.doc-top .tag{margin-left:auto}
.doc-desc{font-size:12.5px;color:var(--text-sec);margin-bottom:10px}
.doc-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding-top:10px;border-top:1px solid #F5F5F5}
.doc-stats label{display:block;font-size:10px;color:var(--text-third);margin-bottom:2px}
.doc-stats b{font-size:12.5px;font-weight:600}

/* 悬浮按钮 */
.fab{position:absolute;right:14px;bottom:20px;height:44px;border-radius:22px;background:linear-gradient(135deg,#1890FF,#096DD9);color:#fff;display:flex;align-items:center;gap:6px;padding:0 18px;font-size:13.5px;font-weight:600;box-shadow:0 6px 16px rgba(24,144,255,.4);cursor:pointer;z-index:15;border:none;font-family:var(--font)}
.fab i{width:17px;height:17px}

/* ===== 表单 ===== */
.frow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #F5F5F5;font-size:13.5px}
.frow:last-child{border-bottom:none}
.frow label{color:var(--text-sec);flex-shrink:0}
.frow label .req{color:var(--danger);margin-right:2px}
.frow input,.frow select{border:none;outline:none;text-align:right;font-size:13.5px;color:var(--text);font-family:var(--font);flex:1;min-width:0;background:none}
.frow select{appearance:none;-webkit-appearance:none;direction:rtl}
.frow .fval{flex:1;text-align:right;color:var(--text)}
.frow .fph{color:var(--text-third)}
.frow .chev{color:var(--text-third);flex-shrink:0;display:flex}
.frow .chev i{width:15px;height:15px}

/* 明细卡片 */
.detail-card{border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:10px}
.dc-head{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.dc-idx{width:20px;height:20px;border-radius:6px;background:var(--primary-light);color:var(--primary);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dc-name{font-size:13.5px;font-weight:600}
.dc-code{font-size:11px;color:var(--text-third);margin-top:1px}
.dc-del{margin-left:auto;color:var(--danger);cursor:pointer;display:flex}
.dc-del i{width:16px;height:16px}
.dc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px}
.dc-grid:last-child{margin-bottom:0}
.dc-grid.cols3{grid-template-columns:repeat(3,1fr)}
.dc-grid label{display:block;font-size:10px;color:var(--text-third);margin-bottom:3px}
.dc-grid input,.dc-grid select{width:100%;height:30px;border:1px solid var(--border);border-radius:6px;padding:0 7px;font-size:12px;outline:none;font-family:var(--font);background:#fff}
.dc-grid input:focus{border-color:var(--primary)}
.dc-amt{height:30px;display:flex;align-items:center;font-size:13px;font-weight:700}
.add-detail{width:100%;height:40px;border:1.5px dashed var(--primary);border-radius:10px;background:var(--primary-light);color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-family:var(--font)}
.add-detail i{width:16px;height:16px}
.sum-row{display:flex;justify-content:space-between;align-items:center;padding:12px 2px 2px;font-size:13px;color:var(--text-sec)}
.sum-row b{font-size:17px;font-weight:700;color:var(--text)}

/* ===== 审批详情 ===== */
.appr-banner{background:#fff;margin:12px 12px 0;border-radius:12px 12px 0 0;padding:14px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #F0F0F0;box-shadow:var(--shadow)}
.appr-banner .tag{font-size:13px;padding:3px 10px}
.appr-no{font-size:15px;font-weight:700}
.appr-sub{font-size:11px;color:var(--text-sec);margin-top:2px}
.appr-card{margin-top:0;border-radius:0}
.appr-card.last{border-radius:0 0 12px 12px}
.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px}
.kv-grid .kv label{display:block;font-size:11px;color:var(--text-third);margin-bottom:3px}
.kv-grid .kv div{font-size:13px;font-weight:500}
.kv-amt{font-weight:700 !important;color:var(--primary)}
.mat-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid #F5F5F5;font-size:12.5px}
.mat-row:last-child{border-bottom:none}
.mat-name{flex:1;min-width:0}
.mat-name b{display:block;font-size:13px;font-weight:600}
.mat-name span{font-size:11px;color:var(--text-third)}
.mat-qty{color:var(--text-sec);white-space:nowrap}
.mat-amt{font-weight:600;white-space:nowrap;min-width:64px;text-align:right}

/* 竖向时间线 */
.tl{padding:2px 0 0 4px}
.tl-item{position:relative;padding:0 0 18px 24px}
.tl-item::before{content:'';position:absolute;left:7px;top:18px;bottom:0;width:2px;background:var(--border)}
.tl-item.done::before{background:var(--success)}
.tl-item:last-child::before{display:none}
.tl-dot{position:absolute;left:0;top:2px;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.tl-dot.done{background:var(--success);color:#fff}
.tl-dot.done i{width:10px;height:10px;stroke-width:3}
.tl-dot.current{background:var(--primary);box-shadow:0 0 0 4px rgba(24,144,255,.2)}
.tl-dot.pending{background:#E8E8E8}
.tl-name{font-size:13px;font-weight:600}
.tl-name .tl-tag{font-size:10px;font-weight:600;color:var(--primary);background:var(--primary-light);border-radius:4px;padding:1px 6px;margin-left:6px}
.tl-meta{font-size:11px;color:var(--text-sec);margin-top:2px;line-height:1.7}
.tl-item.pending .tl-name{color:var(--text-third);font-weight:500}
.tl-item.pending .tl-meta{color:var(--text-third)}

/* 流程图（折叠） */
.collapse-head{cursor:pointer;user-select:none}
.collapse-head .arrow-icon{margin-left:auto;transition:transform .2s;color:var(--text-sec);width:16px;height:16px}
.collapse-head.open .arrow-icon{transform:rotate(90deg)}
.flow-chart{background:#FAFAFA;border-radius:10px;padding:16px;display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:10px}
.flow-node{background:#fff;border:2px solid var(--primary);border-radius:8px;padding:6px 18px;font-size:12px;font-weight:500;min-width:130px;text-align:center}
.flow-node.start{background:var(--primary);color:#fff;border-radius:18px}
.flow-node.end{background:var(--success);border-color:var(--success);color:#fff;border-radius:18px}
.flow-node.active{box-shadow:0 0 0 3px rgba(24,144,255,.3)}
.flow-node.dim{opacity:.5}
.flow-arrow{color:var(--text-sec);font-size:14px;line-height:1}

/* 审批底栏 */
.appr-bottom .bulk-input{margin-bottom:8px}

/* ===== 备件档案 ===== */
.part-card{background:#fff;border-radius:12px;box-shadow:var(--shadow);margin:0 12px 10px;padding:13px 14px;cursor:pointer}
.part-top{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.part-name{font-size:14px;font-weight:600;flex:1}
.part-code{font-size:11.5px;color:var(--text-third);margin-bottom:10px}
.part-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding-top:10px;border-top:1px solid #F5F5F5}
.part-stats label{display:block;font-size:10px;color:var(--text-third);margin-bottom:2px}
.part-stats b{font-size:13px;font-weight:600}
.stock-ok{color:var(--success)}
.stock-warn{color:var(--warning)}
.stock-danger{color:var(--danger)}

/* 底部弹层 */
.sheet-overlay{position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:40;opacity:0;pointer-events:none;transition:opacity .25s}
.sheet-overlay.open{opacity:1;pointer-events:auto}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:78%;background:#fff;border-radius:18px 18px 0 0;z-index:41;transform:translateY(105%);transition:transform .3s cubic-bezier(.3,1,.4,1);display:flex;flex-direction:column}
.sheet.open{transform:none}
.sheet-head{padding:14px 18px 10px;display:flex;align-items:center;border-bottom:1px solid var(--border);flex-shrink:0}
.sheet-head::before{content:'';position:absolute;top:7px;left:50%;transform:translateX(-50%);width:40px;height:4px;border-radius:2px;background:#E0E0E0}
.sheet-title{font-size:16px;font-weight:700;flex:1}
.sheet-close{cursor:pointer;color:var(--text-sec);display:flex}
.sheet-close i{width:20px;height:20px}
.sheet-body{flex:1;overflow-y:auto;padding:14px 18px 28px}
.sheet-section{margin-bottom:16px}
.sheet-section-title{font-size:13px;font-weight:600;padding-bottom:7px;border-bottom:1px solid var(--border);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.sheet-section-title i{width:14px;height:14px}
.check-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12.5px}
.check-item .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.check-item .dot.ok{background:var(--success)}
.qr-box{width:96px;height:96px;background:#F5F5F5;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-sec);text-align:center;line-height:1.6}
.io-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #F5F5F5;font-size:12.5px}
.io-row:last-child{border-bottom:none}
.io-row .io-d{color:var(--text-sec);width:42px}
.io-row .io-n{margin-left:auto;font-weight:600}

/* ===== 全部功能 ===== */
.func-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.func-item{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 2px;border-radius:10px;cursor:pointer;transition:background .15s}
.func-item:active{background:var(--primary-light)}
.func-icon{width:40px;height:40px;border-radius:11px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center}
.func-icon i{width:19px;height:19px;stroke-width:1.8}
.func-label{font-size:11px;color:var(--text);text-align:center}
.func-item.disabled{opacity:.45}

/* ===== 我的 ===== */
.mine-header{background:linear-gradient(180deg,#1890FF 0%,#0B74DE 100%);padding:22px 18px 34px;color:#fff;display:flex;align-items:center;gap:14px}
.mine-avatar{width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.22);border:2px solid rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700}
.mine-name{font-size:18px;font-weight:700}
.mine-role{font-size:12px;opacity:.8;margin-top:3px}
.mine-list{background:#fff;border-radius:12px;margin:-20px 12px 12px;box-shadow:var(--shadow);overflow:hidden;position:relative;z-index:2}
.mine-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid #F5F5F5;font-size:14px;cursor:pointer}
.mine-row:last-child{border-bottom:none}
.mine-row:active{background:#F5F7FA}
.mine-row i.mi{width:19px;height:19px;color:var(--primary);stroke-width:1.8}
.mine-row .chev{margin-left:auto;color:var(--text-third);display:flex}
.mine-row .chev i{width:16px;height:16px}
.mine-row.danger{color:var(--danger);justify-content:center}

/* ===== 扫码 ===== */
.scan-screen{background:#0A0E14}
.scan-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;color:#fff}
.scan-close{position:absolute;top:14px;left:14px;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;cursor:pointer}
.scan-close i{width:20px;height:20px}
.scan-frame{width:230px;height:230px;position:relative;margin-bottom:26px}
.scan-frame::before,.scan-frame::after,.scan-frame .c3,.scan-frame .c4{content:'';position:absolute;width:34px;height:34px;border:3px solid var(--primary)}
.scan-frame::before{top:0;left:0;border-right:none;border-bottom:none;border-radius:6px 0 0 0}
.scan-frame::after{top:0;right:0;border-left:none;border-bottom:none;border-radius:0 6px 0 0}
.scan-frame .c3{bottom:0;left:0;border-right:none;border-top:none;border-radius:0 0 0 6px}
.scan-frame .c4{bottom:0;right:0;border-left:none;border-top:none;border-radius:0 0 6px 0}
.scan-line{position:absolute;left:12px;right:12px;top:14px;height:2px;background:linear-gradient(90deg,transparent,#1890FF 30%,#69B9FF 50%,#1890FF 70%,transparent);box-shadow:0 0 12px rgba(24,144,255,.9);animation:scanmove 2.4s ease-in-out infinite}
@keyframes scanmove{0%,100%{top:14px}50%{top:calc(100% - 14px)}}
@media(prefers-reduced-motion:reduce){.scan-line{animation:none}}
.scan-hint{font-size:13px;color:rgba(255,255,255,.75);margin-bottom:6px}
.scan-sub{font-size:11px;color:rgba(255,255,255,.4)}
.scan-actions{position:absolute;bottom:46px;display:flex;gap:46px}
.scan-act{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11px;color:rgba(255,255,255,.75);cursor:pointer}
.scan-act .sa-icon{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center}
.scan-act .sa-icon i{width:20px;height:20px}

/* ===== 标注气泡（与桌面端同款） ===== */
.anno-bubble{padding:7px 10px;border-radius:4px;font-size:10.5px;line-height:1.65;border:1.5px dashed #DC2626;background:rgba(220,38,38,.06);color:#991B1B;margin:0 12px 12px}
body.hide-anno .anno-bubble{display:none !important}

/* Toast */
.toast{position:absolute;left:50%;bottom:130px;transform:translateX(-50%) translateY(8px);background:rgba(0,0,0,.78);color:#fff;font-size:12.5px;padding:9px 16px;border-radius:8px;opacity:0;pointer-events:none;transition:all .25s;z-index:99;white-space:nowrap}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 图表 */
#m-chart-trend{height:185px;width:100%}

/* 联备智仓 · 移动端 v2 增量样式（支付宝式首页 + iOS 式表单交互） */

/* v2：去掉扫码 tab，底栏 4 列 */
.tabbar{grid-template-columns:repeat(4,1fr)}

/* ===== 首页 v2：顶部（配色取自现网 --primary / --primary-dark） ===== */
.home-header2{background:linear-gradient(180deg,#1890FF 0%,#1890FF 40%,#096DD9 100%);padding:8px 14px 36px;color:#fff}
.hh2-top{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.hh2-logo{width:32px;height:32px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;flex-shrink:0}
.hh2-search{flex:1;background:#fff;border-radius:10px;height:38px;display:flex;align-items:center;gap:8px;padding:0 12px;color:var(--text-third)}
.hh2-search i{width:16px;height:16px;flex-shrink:0;color:var(--text-third)}
.hh2-search input{flex:1;border:none;outline:none;background:none;font-size:13px;font-family:var(--font);color:var(--text)}
.hh2-search input::placeholder{color:var(--text-third)}
.hh2-entries{display:grid;grid-template-columns:repeat(4,1fr)}
.hh2-entry{display:flex;flex-direction:column;align-items:center;gap:9px;color:#fff;font-size:13.5px;font-weight:500;cursor:pointer;position:relative;user-select:none}
.hh2-entry:active{opacity:.8}
.hh2-entry i{width:30px;height:30px;stroke-width:1.5}
.hh2-badge{position:absolute;top:-7px;right:calc(50% - 32px);background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:10px;min-width:19px;height:19px;line-height:15px;text-align:center;padding:2px 5px;border:2px solid #fff;box-sizing:border-box;line-height:13px}

/* 宫格卡（无标题，悬浮于头部之上） */
.grid-card{background:#fff;border-radius:16px;margin:-26px 12px 12px;box-shadow:var(--shadow);padding:8px 4px;position:relative;z-index:2}
.quick-grid5{display:grid;grid-template-columns:repeat(5,1fr)}
.quick-item5{display:flex;flex-direction:column;align-items:center;gap:7px;padding:11px 2px;border-radius:10px;cursor:pointer;transition:background .15s;user-select:none}
.quick-item5:active{background:var(--primary-light)}
.qi5-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff}
.qi5-icon i{width:17px;height:17px}
.qi5-icon.qi5-more{margin-left:0;background:#F2F3F5;color:var(--text-sec)}
.qi5-label{font-size:11px;color:var(--text)}

/* ===== 全部功能页：管理模式（添加/移除首页快捷入口） ===== */
.ph-cancel{font-size:13px;color:var(--text-sec);cursor:pointer;padding:4px 12px 4px 0;font-weight:500;user-select:none}
.ph-action.saving{background:var(--primary);color:#fff;border-radius:14px;padding:5px 16px;font-weight:600}
.manage-hint{text-align:center;font-size:11.5px;color:var(--text-third);padding:10px 0 0}
.func-item{position:relative}
.qbadge{position:absolute;top:6px;left:calc(50% + 11px);width:17px;height:17px;border-radius:50%;color:#fff;font-size:13px;line-height:14px;text-align:center;font-weight:700;border:1.5px solid #fff;box-sizing:border-box;z-index:2;pointer-events:none}
.qbadge.minus{background:#FA8C16}
.qbadge.plus{background:var(--primary)}
.func-item.added .func-icon{opacity:.35}
.func-item.added .func-label{color:var(--text-third)}
.func-icon.grad{color:#fff}
.quick-empty{grid-column:1/-1;text-align:center;font-size:12px;color:var(--text-third);padding:18px 0}

/* ===== iOS 式表单 ===== */
.frow.tappable{cursor:pointer;margin:0 -14px;padding-left:14px;padding-right:14px;transition:background .15s}
.frow.tappable:active{background:#F5F7FA}
.frow input[type="date"]{border:none;background:none;outline:none;text-align:right;font-size:13.5px;color:var(--text);font-family:var(--font);-webkit-appearance:none;appearance:none}

/* 明细摘要行 */
.sum-item{display:flex;align-items:center;gap:10px;padding:13px 2px;border-bottom:1px solid #F5F5F5;cursor:pointer}
.sum-item:active{background:#FAFBFC}
.si-main{flex:1;min-width:0}
.si-name{font-size:14px;font-weight:600}
.si-meta{font-size:11px;color:var(--text-third);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.si-right{text-align:right;flex-shrink:0}
.si-amt{font-size:14px;font-weight:700}
.si-qty{font-size:11px;color:var(--text-sec);margin-top:3px}
.sum-item .chev2{color:var(--text-third);display:flex;flex-shrink:0}
.sum-item .chev2 i{width:16px;height:16px}
.add-row2{display:flex;gap:10px;margin-top:14px}
.add-btn2{flex:1;height:42px;border:1.5px dashed var(--primary);border-radius:10px;background:var(--primary-light);color:var(--primary);font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;font-family:var(--font)}
.add-btn2 i{width:16px;height:16px}
.add-btn2.alt{border-color:#C9D2DC;background:#FAFBFC;color:var(--text-sec)}

/* ===== iOS 动作面板（选择器） ===== */
.picker-overlay{position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:45;opacity:0;pointer-events:none;transition:opacity .25s}
.picker-overlay.open{opacity:1;pointer-events:auto}
.psheet{position:absolute;left:8px;right:8px;bottom:10px;z-index:46;transform:translateY(120%);transition:transform .28s cubic-bezier(.3,1,.4,1)}
.psheet.open{transform:none}
.psheet-card{background:rgba(255,255,255,.98);border-radius:14px;overflow:hidden;margin-bottom:8px;backdrop-filter:blur(10px)}
.psheet-title{padding:13px;text-align:center;font-size:12.5px;color:var(--text-sec);border-bottom:1px solid #F0F0F0}
.psheet-opt{height:52px;display:flex;align-items:center;justify-content:center;font-size:16.5px;color:var(--text);border-bottom:1px solid #F0F0F0;cursor:pointer;position:relative;user-select:none}
.psheet-opt:last-child{border-bottom:none}
.psheet-opt:active{background:#F5F7FA}
.psheet-opt.selected{color:var(--primary);font-weight:600}
.psheet-opt.selected i{position:absolute;right:18px;width:18px;height:18px;stroke-width:2.5}
.psheet-cancel{background:#fff;border-radius:14px;height:52px;display:flex;align-items:center;justify-content:center;font-size:16.5px;font-weight:600;color:var(--text);cursor:pointer;user-select:none}
.psheet-cancel:active{background:#F5F7FA}

/* ===== 明细编辑弹层 ===== */
.sheet-btn{font-size:15px;color:var(--text-sec);cursor:pointer;padding:4px 2px;user-select:none}
.sheet-btn.primary{color:var(--primary);font-weight:600}
.editor-mat{display:flex;align-items:center;gap:10px;background:#F7F9FB;border-radius:10px;padding:12px;margin-bottom:6px;cursor:pointer}
.editor-mat .em-icon{width:38px;height:38px;border-radius:9px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.editor-mat .em-icon i{width:18px;height:18px}
.editor-mat .em-name{font-size:14px;font-weight:600}
.editor-mat .em-code{font-size:11px;color:var(--text-third);margin-top:2px}
.editor-mat .chev2{margin-left:auto;color:var(--text-third);display:flex}
.editor-mat .chev2 i{width:16px;height:16px}
.stepper{display:flex;align-items:center;border:1px solid var(--border);border-radius:9px;overflow:hidden}
.stepper button{width:38px;height:34px;border:none;background:#F7F8FA;font-size:19px;color:var(--text-sec);cursor:pointer;font-family:var(--font);display:flex;align-items:center;justify-content:center}
.stepper button:active{background:#EDEFF2;color:var(--primary)}
.stepper input{width:58px;height:34px;border:none;outline:none;text-align:center;font-size:15px;font-weight:600;font-family:var(--font);border-left:1px solid var(--border);border-right:1px solid var(--border)}
.unit-seg{display:flex;background:#F2F3F5;border-radius:8px;padding:2px}
.unit-seg span{padding:5px 14px;border-radius:6px;font-size:13px;color:var(--text-sec);cursor:pointer;user-select:none}
.unit-seg span.active{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.editor-amt-row{display:flex;justify-content:space-between;align-items:center;background:#F7F9FB;border-radius:10px;padding:12px 14px;margin-top:10px;font-size:13px;color:var(--text-sec)}
.editor-amt-row b{font-size:18px;font-weight:700;color:var(--text)}
.editor-del{margin:18px 0 4px;text-align:center;color:var(--danger);font-size:15px;font-weight:600;cursor:pointer;user-select:none}
.editor-input{border:none;outline:none;text-align:right;font-size:13.5px;color:var(--text);font-family:var(--font);flex:1;min-width:0;background:none}




/* ===== 售后服务APP 增量样式（基于联备智仓设计变量） ===== */
.role-chips{display:flex;gap:8px}
.role-chip{padding:4px 12px;border-radius:16px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:rgba(255,255,255,.55);font-size:12px;cursor:pointer;user-select:none;white-space:nowrap}
.role-chip.active{background:rgba(24,144,255,.25);border-color:rgba(24,144,255,.7);color:#fff;font-weight:600}

/* 首页头部（草稿样式） */
.svc-header{padding:6px 16px 30px}
.svc-hh-top{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.svc-hh-top .svc-search{flex:1;margin-bottom:0}
.svc-role-btn{display:flex;align-items:center;gap:2px;cursor:pointer;user-select:none;flex-shrink:0;color:#fff}
.svc-role-av{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff}
.svc-role-btn i{width:15px;height:15px;opacity:.9}
.svc-brand{display:flex;align-items:center;gap:7px;font-size:19px;font-weight:700;color:#fff}
.svc-brand i{width:21px;height:21px}
.svc-role-top{display:flex;align-items:center;gap:6px;margin-left:auto;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.32);border-radius:18px;padding:3px 11px 3px 3px;color:#fff;font-size:12.5px;font-weight:500;cursor:pointer;user-select:none;max-width:62%}
.svc-role-top .av{width:27px;height:27px;border-radius:50%;background:rgba(255,255,255,.26);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.svc-role-top span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.svc-role-top i{width:14px;height:14px;flex-shrink:0;opacity:.9}
.svc-bell{position:relative;cursor:pointer;color:#fff;display:flex;flex-shrink:0;margin-left:auto}
.svc-bell i{width:23px;height:23px}
.svc-bell-badge{position:absolute;top:-6px;right:-7px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:9px;min-width:18px;height:18px;line-height:14px;text-align:center;padding:2px 4px;border:1.5px solid #1890FF;box-sizing:border-box}
.svc-loc{display:flex;align-items:center;gap:5px;color:rgba(255,255,255,.92);font-size:12.5px;margin-bottom:16px;cursor:pointer;user-select:none}
.svc-loc i{width:14px;height:14px;flex-shrink:0}
.svc-loc span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.svc-loc-arrow{opacity:.8}
.svc-search{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.95);border-radius:11px;height:40px;padding:0 14px;color:var(--text-third);font-size:13px;margin-bottom:18px;cursor:pointer}
.svc-search i{width:17px;height:17px;flex-shrink:0}
.svc-search span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.svc-entries{display:grid;grid-template-columns:repeat(4,1fr)}
.svc-entry{display:flex;flex-direction:column;align-items:center;gap:8px;color:#fff;font-size:13.5px;font-weight:500;cursor:pointer;user-select:none}
.svc-entry:active{opacity:.8}
.svc-entry-ic{position:relative;width:30px;height:30px;display:flex;align-items:center;justify-content:center}
.svc-entry-ic i{width:27px;height:27px;stroke-width:1.6}
.svc-entry-badge{position:absolute;top:-8px;left:16px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:9px;min-width:18px;height:18px;line-height:14px;text-align:center;padding:2px 4px;border:1.5px solid #1890FF;box-sizing:border-box}

/* 数据概览（6 指标 3×2 紧凑） */
.svc-overview{padding:14px 14px 6px}
.ov-head{display:flex;align-items:center;margin-bottom:12px}
.ov-title{font-size:15px;font-weight:700;position:relative;padding-left:10px}
.ov-title::before{content:'';position:absolute;left:0;top:2px;bottom:2px;width:3px;border-radius:2px;background:var(--primary)}
.ov-period{margin-left:auto;font-size:12px;color:var(--text-third);display:flex;align-items:center;gap:1px;cursor:pointer}
.ov-period i{width:14px;height:14px}
.ov-seg{margin-left:auto;display:flex;background:#EEF0F3;border-radius:9px;padding:2px;gap:2px}
.ov-seg-item{font-size:12.5px;color:var(--text-sec);padding:4px 14px;border-radius:7px;cursor:pointer;user-select:none;line-height:1.35}
.ov-seg-item.active{background:#fff;color:var(--text);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.1)}
.ov-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ov-card{background:var(--primary-light);border-radius:10px;padding:13px 4px 11px;text-align:center}
.ov-val{font-size:23px;font-weight:700;line-height:1.15}
.ov-unit{font-size:12px;font-weight:600;margin-left:1px}
.ov-label{font-size:11px;color:var(--text-sec);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 消息通知卡片 */
.svc-msg-card .ov-head{margin-bottom:4px}
.msg-all{margin-left:auto;font-size:12.5px;color:var(--primary);font-weight:600;cursor:pointer;user-select:none}
.msg-list{display:flex;flex-direction:column}
.msg-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid #F2F4F7;cursor:pointer;user-select:none}
.msg-row:last-child{border-bottom:none;padding-bottom:2px}
.msg-row:active{opacity:.7}
.msg-tag{flex-shrink:0;font-size:11.5px;font-weight:600;border-radius:5px;padding:3px 7px;line-height:1.3}
.msg-tag.cust{background:#E6F4FF;color:#1890FF}
.msg-tag.stock{background:#FFF7E6;color:#FA8C16}
.msg-tag.sys{background:#FFF1F0;color:#F5222D}
.msg-text{flex:1;min-width:0;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-time{flex-shrink:0;font-size:11.5px;color:var(--text-third)}

.role-pill{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:16px;padding:3px 8px 3px 4px;font-size:11.5px;font-weight:500;cursor:pointer;white-space:nowrap;user-select:none}
.role-pill .avatar{width:22px;height:22px;font-size:11px}
.role-pill i{width:13px;height:13px}

.notice-row{display:flex;align-items:center;gap:8px}
.notice-dot{width:7px;height:7px;border-radius:50%;background:var(--warning);flex-shrink:0}
.notice-text{flex:1;min-width:0;font-size:12.5px}
.mini-btn{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;color:var(--primary);border:1px solid rgba(24,144,255,.35);background:var(--primary-light);border-radius:8px;padding:5px 9px;cursor:pointer;user-select:none;flex-shrink:0}
.mini-btn i{width:15px;height:15px}

.todo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.todo-card{border-radius:10px;padding:10px 10px 9px;cursor:pointer;position:relative;user-select:none}
.todo-card:active{opacity:.8}
.todo-card .ti{position:absolute;top:9px;right:9px;opacity:.85}
.todo-card .ti i{width:17px;height:17px}
.todo-num{font-size:20px;font-weight:700;line-height:1.2}
.todo-label{font-size:10.5px;color:var(--text-sec);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.proj-card{border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:10px;cursor:pointer;transition:border-color .15s}
.proj-card:last-child{margin-bottom:0}
.proj-card:active{border-color:var(--primary)}
.pc-top{display:flex;align-items:center;gap:6px}
.pc-name{font-size:14px;font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-meta{font-size:11px;color:var(--text-third);margin:6px 0 9px}
.pc-seg{display:flex;gap:3px;margin-bottom:4px}
.pc-seg span{flex:1;height:4px;border-radius:2px;background:#EFF1F4}
.pc-seg span.on{background:var(--primary)}
.pc-seg span.cur{background:var(--warning)}
.pc-stage-label{display:flex;justify-content:space-between;font-size:9.5px;color:var(--text-third);margin-bottom:9px}
.pc-actions{display:flex;flex-wrap:wrap;gap:6px;padding-top:9px;border-top:1px solid #F5F5F5}
.act-chip{display:flex;align-items:center;gap:5px;border:1px solid rgba(24,144,255,.35);background:var(--primary-light);color:var(--primary-dark);font-size:12px;font-weight:500;border-radius:15px;padding:5px 11px;cursor:pointer;font-family:var(--font);user-select:none}
.act-chip:active{background:#D6EFFF}
.act-chip i{width:13px;height:13px}
.act-chip b{font-size:11px;font-weight:700;color:#fff;background:var(--danger);border-radius:8px;min-width:16px;height:15px;line-height:15px;text-align:center;padding:0 4px}
.act-chip.life{border-style:dashed;background:#fff;color:var(--info);border-color:rgba(114,46,209,.4)}
.act-chip.life:active{background:#F9F0FF}
.no-act{font-size:11.5px;color:var(--text-third);padding-top:9px;border-top:1px solid #F5F5F5}

.start-scroll{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}
.start-scroll::-webkit-scrollbar{height:0}
.start-card{min-width:124px;max-width:124px;background:#F7F9FB;border:1px solid var(--border);border-radius:10px;padding:10px;cursor:pointer;flex-shrink:0}
.start-card:active{border-color:var(--primary)}
.sc-name{font-size:11px;color:var(--text-sec);line-height:1.5;height:50px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.sc-num{font-size:18px;font-weight:700;color:var(--primary);margin-top:6px}

.log-select{margin-left:auto;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:11.5px;color:var(--text-sec);font-family:var(--font);padding:3px 6px;outline:none;max-width:150px}
.log-table{width:100%;border-collapse:collapse;font-size:11.5px}
.log-table th{background:var(--primary);color:#fff;padding:7px 6px;font-weight:600;font-size:11px;text-align:left}
.log-table th:first-child{border-radius:6px 0 0 0}
.log-table th:last-child{border-radius:0 6px 0 0}
.log-table td{padding:8px 6px;border-bottom:1px solid #F5F5F5;color:var(--text-sec);vertical-align:top}
.log-table tr:last-child td{border-bottom:none}

.pstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pstat{background:var(--primary-light);border-radius:8px;padding:9px 4px;text-align:center}
.pstat label{display:block;font-size:9.5px;color:var(--text-sec);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pstat b{font-size:17px;font-weight:700}

.steps{display:flex;overflow-x:auto;padding:4px 0 2px}
.steps::-webkit-scrollbar{height:0}
.step{min-width:62px;text-align:center;position:relative;font-size:10.5px;color:var(--text-third);flex-shrink:0}
.step::before{content:'';position:absolute;top:7px;left:-50%;width:100%;height:2px;background:#E8E8E8}
.step:first-child::before{display:none}
.step.done::before{background:var(--primary)}
.step.cur::before{background:var(--primary)}
.step .dot{width:14px;height:14px;border-radius:50%;background:#E8E8E8;margin:0 auto 5px;position:relative;z-index:1;border:3px solid #fff}
.step.done .dot{background:var(--primary)}
.step.done{color:var(--text-sec)}
.step.cur .dot{background:#fff;border:3px solid var(--primary);box-shadow:0 0 0 3px rgba(24,144,255,.15)}
.step.cur{color:var(--primary);font-weight:600}

.ht-wrap{overflow-x:auto;margin:0 -2px;border-radius:6px}
.ht-wrap::-webkit-scrollbar{height:0}
.ht{border-collapse:collapse;font-size:11px;white-space:nowrap;min-width:100%}
.ht th{background:var(--primary);color:#fff;padding:7px 9px;font-weight:600;font-size:10.5px;text-align:center}
.ht td{padding:7px 9px;border-bottom:1px solid #F0F0F0;text-align:center;color:var(--text-sec)}
.ht tbody tr:nth-child(even) td{background:#FAFBFC}

.empty-tip{font-size:12px;color:var(--text-third);text-align:center;padding:14px 0}

/* 我的项目：搜索 + 筛选 */
.mp-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.mp-title{font-size:16px;font-weight:700;flex-shrink:0}
.mp-search{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:#F4F6F8;border:1px solid var(--border);border-radius:10px;height:40px;padding:0 8px 0 12px}
.mp-search>i{width:16px;height:16px;color:var(--text-third);flex-shrink:0}
.mp-search input{flex:1;min-width:0;border:none;outline:none;background:none;font-size:13px;font-family:var(--font);color:var(--text)}
.mp-search input::placeholder{color:var(--text-third)}
.mp-filter-btn{flex-shrink:0;display:flex;align-items:center;gap:5px;border:none;background:var(--primary-light);color:var(--primary);font-size:13px;font-weight:600;font-family:var(--font);border-radius:8px;height:30px;padding:0 12px;cursor:pointer}
.mp-filter-badge{background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:9px;min-width:17px;height:17px;line-height:17px;text-align:center;padding:0 4px;display:none}
.mp-active{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.mp-active-chip{display:flex;align-items:center;gap:5px;background:#EEF5FF;border:1px solid rgba(24,144,255,.3);color:var(--primary-dark);font-size:12px;border-radius:15px;padding:4px 10px;cursor:pointer;user-select:none}
.mp-active-chip i{width:13px;height:13px;opacity:.7}
.mp-status{padding:0 0 12px!important;margin:0 -2px}
.mp-status .chip{font-size:12.5px}
.mp-foot{display:flex;align-items:center;justify-content:space-between;padding-top:11px;margin-top:2px;border-top:1px solid #F0F0F0}
.mp-count{font-size:12.5px;color:var(--text-sec)}
.mp-count b{color:var(--primary);font-weight:700}
.mp-sort{display:flex;align-items:center;gap:3px;font-size:12.5px;color:var(--text-sec);cursor:pointer;user-select:none}
.mp-sort i{width:14px;height:14px}

/* 筛选弹层 */
.fs-group{margin-bottom:18px}
.fs-label{font-size:13px;font-weight:600;color:var(--text);margin-bottom:10px}
.fs-opts{display:flex;flex-wrap:wrap;gap:8px}
.fs-opt{border:1px solid #E4E7ED;background:#FFFFFF;color:var(--text-sec);font-size:13px;border-radius:8px;padding:8px 16px;cursor:pointer;user-select:none}
.fs-opt.on{border-color:var(--primary);background:var(--primary-light);color:var(--primary);font-weight:600}

/* ===== 全局：透明状态栏 + 5列底栏 ===== */
.tabbar{grid-template-columns:repeat(5,1fr) !important}
.statusbar{position:absolute;top:0;left:0;right:0;background:transparent !important;color:#1f2329;z-index:60;height:46px}
.statusbar.sb-over-dark{color:#fff;background:linear-gradient(180deg,rgba(7,18,31,.72) 0%,rgba(9,24,40,.42) 62%,rgba(9,24,40,0) 100%) !important;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.screen .page-head{padding-top:56px}
.screen .navbar{padding-top:46px;height:auto;min-height:48px;align-items:center}
.mine-header{padding-top:60px !important}

/* ===== 首页 Hero（安全顶部栏 + 完整比例 banner + 无背景面板金刚区） ===== */
.svc-hero{position:relative;background-color:#0d1b2a;background-image:linear-gradient(180deg,rgba(7,18,31,.92) 0%,rgba(10,28,46,.78) 35%,rgba(10,31,50,.26) 62%,rgba(10,31,50,0) 82%),radial-gradient(130% 74% at 74% 42%,rgba(106,136,160,.28) 0%,rgba(106,136,160,.12) 34%,rgba(106,136,160,0) 62%),url("hero-bg.jpg");background-repeat:no-repeat,no-repeat,no-repeat;background-position:center top,center top,center 96px;background-size:100% 136px,100% 136px,100% auto;padding-bottom:0;overflow:hidden}
.svc-hero::before{content:'';position:absolute;inset:84px 0 auto;height:132px;background:linear-gradient(180deg,rgba(8,24,39,.18) 0%,rgba(8,24,39,0) 100%);pointer-events:none}
.svc-top{position:relative;z-index:2;display:flex;align-items:center;gap:10px;padding:54px 14px 0}
.svc-user{display:flex;align-items:center;gap:8px;min-width:0;max-width:238px;cursor:pointer;user-select:none;background:rgba(5,18,33,.58);border:1px solid rgba(255,255,255,.18);border-radius:22px;padding:4px 9px 4px 4px;backdrop-filter:blur(10px) saturate(1.15);-webkit-backdrop-filter:blur(10px) saturate(1.15);box-shadow:0 6px 18px rgba(0,0,0,.18)}
.svc-user .av{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.24);border:1.5px solid rgba(255,255,255,.7);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff;flex-shrink:0}
.svc-user .nm{font-size:15px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.svc-switch{display:flex;align-items:center;gap:2px;background:rgba(255,255,255,.16);border:0;border-radius:13px;padding:2px 8px 2px 7px;font-size:11px;color:#fff;flex-shrink:0}
.svc-switch i{width:12px;height:12px}
.svc-top-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0}
.svc-ic-btn{position:relative;width:36px;height:36px;border-radius:50%;background:rgba(5,18,33,.48);border:1px solid rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 6px 18px rgba(0,0,0,.16)}
.svc-ic-btn i{width:18px;height:18px}
.svc-ic-dot{position:absolute;top:5px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--danger);border:1.5px solid rgba(255,255,255,.85)}

/* ===== 无背景面板金刚区（4 固定入口） ===== */
.svc-kk{position:relative;z-index:2;margin:0 0 0;padding:18px 10px 18px}
.svc-kk-v1{margin-top:102px;border-radius:22px 22px 0 0;background:rgba(17,42,78,.16);backdrop-filter:blur(18px) saturate(1.18);-webkit-backdrop-filter:blur(18px) saturate(1.18);box-shadow:0 -2px 18px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.09)}
.svc-kk-v2{margin-top:112px;padding-top:10px;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}
.svc-kk-title{font-size:11px;font-weight:700;color:rgba(255,255,255,.82);letter-spacing:.2px;text-shadow:0 1px 3px rgba(0,0,0,.35);padding:0 2px 10px}
.svc-kk-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.svc-entry{display:flex;flex-direction:column;align-items:center;gap:9px;color:#fff;cursor:pointer;user-select:none}
.svc-entry:active{opacity:.82}
.svc-entry-ic{position:relative;width:48px;height:48px;border-radius:15px;background:linear-gradient(160deg,rgba(21,42,61,.58),rgba(255,255,255,.16));border:1px solid rgba(255,255,255,.48);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 6px 16px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.46)}
.svc-kk-v2 .svc-entry-ic{background:linear-gradient(160deg,rgba(18,39,58,.64),rgba(255,255,255,.17));border-color:rgba(255,255,255,.42);box-shadow:0 7px 18px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.38)}
.svc-entry:nth-child(4) .svc-entry-ic{background:linear-gradient(160deg,rgba(8,25,42,.82),rgba(34,61,82,.62));border-color:rgba(210,235,255,.58);box-shadow:0 8px 22px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.32)}
.svc-entry-ic i{width:23px;height:23px;stroke-width:1.9;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}
.svc-entry span{font-size:13px;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.45);line-height:1.15;padding:2px 7px;border-radius:9px;background:rgba(5,18,32,.32)}
.svc-entry:nth-child(4) span{background:rgba(5,18,32,.62);box-shadow:0 2px 8px rgba(0,0,0,.18)}
.svc-entry-badge{position:absolute;top:-7px;right:-9px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:9px;min-width:19px;height:18px;line-height:14px;text-align:center;padding:2px 4px;border:1.5px solid rgba(255,255,255,.55);box-sizing:border-box}

/* ===== 任务日历卡片 ===== */
.card-lift{margin-top:-14px !important;position:relative;z-index:2}
.svc-cal{margin:0 12px 12px;background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:14px 14px 12px;position:relative;z-index:2}
.cal-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cal-title{font-size:15px;font-weight:700;position:relative;padding-left:10px}
.cal-title::before{content:'';position:absolute;left:0;top:2px;bottom:2px;width:3px;border-radius:2px;background:var(--primary)}
.cal-month{font-size:12.5px;color:var(--text-third);font-weight:500}
.cal-view{margin-left:auto;display:flex;align-items:center;gap:1px;font-size:12.5px;color:var(--text-sec);cursor:pointer;user-select:none}
.cal-view i{width:14px;height:14px}
.cal-nav{display:flex;align-items:center;gap:2px}
.cal-nav i{width:16px;height:16px;color:var(--text-third);cursor:pointer}
.cal-week{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}
.cal-wd{font-size:11px;color:var(--text-third);padding-bottom:8px}
.cal-wd.we{color:var(--text-sec)}
.cal-day{display:flex;flex-direction:column;align-items:center;gap:4px;padding:2px 0;cursor:pointer;user-select:none}
.cal-dn{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:var(--text)}
.cal-day.other .cal-dn{color:var(--text-third);font-weight:400}
.cal-day.today .cal-dn{background:var(--primary);color:#fff}
.cal-day.sel .cal-dn{box-shadow:0 0 0 1.5px var(--primary)}
.cal-day.today.sel .cal-dn{box-shadow:none}
.cal-dot{width:5px;height:5px;border-radius:50%;background:var(--warning)}
.cal-dot.hide{background:transparent}
.cal-tasks{margin-top:12px;border-top:1px solid #F2F4F7;padding-top:10px}
.cal-tasks-h{font-size:12px;color:var(--text-sec);font-weight:600;margin-bottom:8px}
.cal-task{display:flex;align-items:center;gap:10px;padding:7px 0}
.cal-task+.cal-task{border-top:1px solid #F7F8FA}
.cal-task .tm{font-size:12px;font-weight:700;color:var(--primary);width:42px;flex-shrink:0}
.cal-task .tt{flex:1;min-width:0;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-task .tp{font-size:11px;color:var(--text-third);flex-shrink:0}
.cal-task.done .tt{color:var(--text-third);text-decoration:line-through}
.cal-empty{font-size:12px;color:var(--text-third);text-align:center;padding:10px 0 4px}

/* ===== 数据概览（紧凑） ===== */
.ov-grid2{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.ov-card2{background:var(--primary-light);border-radius:9px;padding:9px 4px 8px;text-align:center}
.ov-card2 .ov-val{font-size:19px;font-weight:700;line-height:1.1}
.ov-card2 .ov-unit{font-size:11px;font-weight:600;margin-left:1px}
.ov-card2 .ov-label{font-size:10.5px;color:var(--text-sec);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== 常用功能（可自定义） ===== */
.fav-head{display:flex;align-items:center;margin-bottom:12px}
.fav-edit{margin-left:auto;display:flex;align-items:center;gap:3px;font-size:12.5px;color:var(--primary);font-weight:500;cursor:pointer;user-select:none}
.fav-edit i{width:13px;height:13px}
.fav-card{background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:14px 8px 10px;margin:0 12px 12px}
.fav-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px 0}
.fav-item{display:flex;flex-direction:column;align-items:center;gap:7px;padding:4px 1px;border-radius:10px;cursor:pointer;user-select:none}
.fav-item:active{opacity:.7}
.fav-ic{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;position:relative}
.fav-ic i{width:21px;height:21px;stroke-width:1.8}
.fav-label{font-size:10.5px;color:var(--text-sec);text-align:center;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.fav-badge{position:absolute;top:-5px;right:-7px;background:var(--danger);color:#fff;font-size:9px;font-weight:700;border-radius:8px;min-width:16px;height:15px;line-height:11px;text-align:center;padding:2px 3px;border:1.5px solid #fff;box-sizing:border-box}
.fc-blue{background:#E6F2FF;color:#1677FF}.fc-orange{background:#FFF1E0;color:#FA8C16}.fc-green{background:#E7F8EC;color:#21A954}.fc-purple{background:#F3ECFE;color:#722ED1}.fc-cyan{background:#E2F7F7;color:#13A8A8}.fc-red{background:#FFECEC;color:#F5444B}

/* 常用功能编辑弹层 */
.fav-sec{font-size:12.5px;font-weight:600;color:var(--text-sec);margin:4px 0 10px;display:flex;align-items:center;gap:6px}
.fav-sec .hint{font-weight:400;color:var(--text-third);font-size:11px}
.fav-mgr-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:18px}
.fav-cell{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 2px;border-radius:10px;background:#F7F8FA;cursor:pointer;user-select:none}
.fav-cell .fav-ic{width:38px;height:38px;border-radius:11px}
.fav-cell .fav-ic i{width:18px;height:18px}
.fav-cell .lbl{font-size:10.5px;color:var(--text);text-align:center;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.fav-cell .corner{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.fav-cell .corner i{width:13px;height:13px;stroke-width:2.6}
.fav-cell .corner.add{background:var(--primary)}.fav-cell .corner.rm{background:var(--danger)}

/* ===== 项目卡片：参考 PC 进度条 + 动作胶囊 ===== */
.pc-stages{display:flex;gap:5px;padding:8px 0 4px;margin:1px 0 0}
.pc-stage{position:relative;flex:1;height:5px;min-width:0;cursor:pointer;user-select:none;background:#EEF1F5;border-radius:3px;transition:background .12s,box-shadow .12s,transform .12s}
.pc-stage.passed,.pc-stage.cur{background:var(--primary)}
.pc-stage.sel{box-shadow:0 0 0 2px rgba(250,173,20,.14)}
.pc-stage.has-todo::after{content:'';position:absolute;top:-4px;right:-1px;width:5px;height:5px;border-radius:50%;background:rgba(255,77,79,.9);box-shadow:0 0 0 1px rgba(255,255,255,.85)}
.pc-stage-label{display:flex;justify-content:space-between;font-size:10px;color:#BFC5CC;margin:4px 0 9px;line-height:1.2}
.pc-stage-label span:last-child{font-weight:600;color:#AEB5BF}
.pc-acts{display:flex;flex-wrap:wrap;gap:7px 6px;padding-top:9px;border-top:1px solid #F3F5F7}
.pa{font-size:11px;padding:4px 8px;border-radius:7px;line-height:1.2;cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:3px;font-family:var(--font);background:#F3F6FA;color:#5F6875;font-weight:600;max-width:100%}
.pa .pa-no{font-size:10.5px;color:#8F98A6;font-weight:700}
.pa .pa-t{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pa .pa-n{font-size:12px;font-weight:800;color:#1F2329;margin-left:1px}
.pa.done{background:#F3F6FA;color:#5F6875}
.pa.done .pa-n{color:#1F2329}
.pa.todo{background:#FFF1F1;color:#FF4D4F}
.pa.todo .pa-no,.pa.todo .pa-n{color:#FF4D4F}
.pa-empty{font-size:11.5px;color:var(--text-third);padding:1px 0 2px}
.detail-progress-stages{margin-top:0;padding-top:4px;padding-bottom:4px}
.detail-stage-caption{font-size:11px;color:var(--text-sec);line-height:1.35;margin-top:2px}
.detail-actions{padding-top:0;border-top:0}

/* ===== 日历页面（月视图） ===== */
.nav-btn{font-size:13.5px;font-weight:600;color:var(--primary);cursor:pointer;padding:0 10px;white-space:nowrap;font-family:var(--font)}
.cp-card{background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:16px 14px;margin:14px 12px 12px}
.cp-head{display:flex;align-items:center;margin-bottom:14px}
.cp-month{font-size:18px;font-weight:700}
.cp-nav{margin-left:auto;display:flex;align-items:center;gap:18px}
.cp-nav i{width:20px;height:20px;color:var(--text-sec);cursor:pointer}
.cp-today{font-size:12.5px;color:var(--primary);font-weight:600;cursor:pointer}
.cp-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;row-gap:2px}
.cp-wd{font-size:11px;color:var(--text-third);padding-bottom:10px}
.cp-wd.we{color:var(--text-sec)}
.cp-day{position:relative;height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;user-select:none}
.cp-dn{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:var(--text)}
.cp-day.other .cp-dn{color:#CDD3DA;font-weight:400}
.cp-day.today .cp-dn{background:var(--primary);color:#fff}
.cp-day.sel:not(.today) .cp-dn{box-shadow:0 0 0 1.5px var(--primary);color:var(--primary)}
.cp-dot{position:absolute;bottom:4px;width:5px;height:5px;border-radius:50%;background:var(--warning)}
.cp-dot.hide{display:none}
.cp-tasks{margin:0 12px 14px}
.cp-tasks-h{font-size:14px;font-weight:700;margin-bottom:10px;padding-left:2px}
.cp-tcard{background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:6px 14px}

/* ===== 全部功能 · 管理模式 ===== */
.af-corner{position:absolute;top:2px;right:10px;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.22);z-index:2}
.af-corner i{width:13px;height:13px;stroke-width:2.6}
.af-corner.add{background:var(--primary)}.af-corner.rm{background:var(--danger)}
.af-tip{margin:0 12px 12px;font-size:12px;color:var(--text-sec);background:#FFF8E6;border:1px solid #FFE9B0;border-radius:10px;padding:9px 12px;line-height:1.5}

/* ===== 业务标签页 ===== */
.biz-sec{margin:0 12px 14px}
.biz-sec-title{font-size:14px;font-weight:700;padding:4px 0 12px;display:flex;align-items:center;gap:7px}
.biz-sec-title::before{content:'';width:3px;height:14px;border-radius:2px;background:var(--primary)}
.biz-card{background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:14px 6px}
.biz-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px 2px}
.biz-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 2px;border-radius:10px;cursor:pointer;user-select:none}
.biz-item:active{background:#F5F7FA}
.biz-ic{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;position:relative}
.biz-ic i{width:21px;height:21px;stroke-width:1.7}
.biz-label{font-size:11px;color:var(--text);text-align:center;line-height:1.25;height:28px;display:flex;align-items:center;justify-content:center}
.biz-badge{position:absolute;top:-5px;right:-6px;background:var(--danger);color:#fff;font-size:9px;font-weight:700;border-radius:8px;min-width:16px;height:15px;line-height:11px;text-align:center;padding:2px 3px;border:1.5px solid #fff;box-sizing:border-box}

/* ===== 消息标签页 ===== */
.msg2-row{display:flex;align-items:flex-start;gap:11px;background:#fff;padding:14px 14px;border-bottom:1px solid #F2F4F7;cursor:pointer}
.msg2-row:active{background:#F7F9FB}
.msg2-ic{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative}
.msg2-ic i{width:19px;height:19px}
.msg2-ic .udot{position:absolute;top:-2px;right:-2px;width:9px;height:9px;border-radius:50%;background:var(--danger);border:2px solid #fff}
.msg2-main{flex:1;min-width:0}
.msg2-top{display:flex;align-items:center;gap:8px}
.msg2-title{font-size:14px;font-weight:600;color:var(--text)}
.msg2-time{margin-left:auto;font-size:11px;color:var(--text-third);flex-shrink:0}
.msg2-text{font-size:12.5px;color:var(--text-sec);margin-top:4px;line-height:1.5}
.mc-todo{background:#E6F2FF;color:#1677FF}.mc-cust{background:#E7F8EC;color:#21A954}.mc-patrol{background:#FFF1E0;color:#FA8C16}.mc-appr{background:#F3ECFE;color:#722ED1}.mc-sys{background:#F0F1F3;color:#8A9099}

/* + 快捷新建弹层（3 项主流程入口，单列列表，加大热区与可读性） */
.qa-grid{display:grid;grid-template-columns:1fr;gap:8px}
.qa-item{display:flex;align-items:center;gap:12px;padding:15px 14px;border-radius:12px;background:#F7F8FA;cursor:pointer;user-select:none;min-height:48px}
.qa-item:active{background:#EEF2F6}
.qa-ic{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.qa-ic i{width:20px;height:20px}
.qa-tx{font-size:14px;font-weight:600;color:var(--text)}
