/* ============================================================
   威威单车 · 每日卫生平台 皮肤样式表（清爽紧凑版 / 移动端优先）
   仅外观，不含任何业务逻辑；类名与 home/patrol/form 模板对应
   ============================================================ */
:root{
  --bg:#F2F2F7;
  --card:#FFFFFF;
  --blue:#007AFF;
  --blue-press:#0062D2;
  --blue-soft:#E8F1FF;
  --green:#34C759;
  --green-soft:#E9F8EE;
  --orange:#FF9500;
  --orange-soft:#FFF5E6;
  --red:#FF3B30;
  --ink:#1C1C1E;
  --ink2:#86868B;
  --ink3:#AEAEB2;
  --line:#E6E6EB;
  --line-soft:#F0F0F4;
  --radius:15px;
  --radius-sm:11px;
  --shadow:0 1px 2px rgba(0,0,0,.04),0 4px 14px rgba(0,0,0,.04);
  --shadow-float:0 -3px 20px rgba(0,0,0,.07);
  --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0;}
html{color-scheme:light;}
body{
  background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Helvetica Neue","Microsoft YaHei",sans-serif;
  font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
input,textarea{font-family:inherit;}
a{color:var(--blue);text-decoration:none;}
.wrap{max-width:480px;margin:0 auto;padding:0 14px;min-height:100vh;}
.wrap.home-wrap{display:flex;flex-direction:column;}

/* ============ 顶部 ============ */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:calc(9px + env(safe-area-inset-top)) 2px 2px;}
.back{display:inline-flex;align-items:center;gap:2px;color:var(--blue);font-size:14px;padding:6px 0;}
.top-date{font-size:13px;color:var(--ink2);display:flex;align-items:center;gap:5px;}
.hero{padding:6px 2px 4px;}
.hero h1{font-size:25px;font-weight:700;letter-spacing:-.5px;color:#0E0E10;line-height:1.12;}
.hero .sub{margin-top:3px;font-size:12.5px;color:var(--ink2);}
/* 今日总进度卡 */
.day-card{background:linear-gradient(135deg,#0A84FF 0%,#0066FF 100%);border-radius:var(--radius);padding:11px 14px;margin:9px 0 4px;color:#fff;box-shadow:0 6px 16px rgba(0,102,255,.2);}
.day-top{display:flex;align-items:center;justify-content:space-between;}
.day-top .lbl{font-size:13px;opacity:.9;letter-spacing:.3px;}
.day-top .big{font-size:19px;font-weight:700;}
.day-bar{height:5px;background:rgba(255,255,255,.25);border-radius:3px;margin-top:8px;overflow:hidden;}
.day-fill{height:100%;background:#fff;border-radius:3px;transition:width .4s ease;}
.day-foot{margin-top:7px;font-size:11px;opacity:.92;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}

/* ============ 区块通用标题 ============ */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;padding:11px 2px 5px;}
.sec-head .t{font-size:14.5px;font-weight:700;color:#161618;letter-spacing:-.2px;}
.sec-head .meta{font-size:12.5px;color:var(--ink2);}

/* ============ 时段时间轴 ============ */
.slots{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:none;}
.slots::-webkit-scrollbar{display:none;}
.slot{flex:0 0 auto;width:74px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:7px 6px;text-align:center;position:relative;transition:.16s;}
.slot .tm{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.3px;}
.slot .lb{font-size:11px;color:var(--ink2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.slot .st{margin-top:6px;height:18px;display:flex;align-items:center;justify-content:center;}
.slot .st .dot{width:7px;height:7px;border-radius:50%;background:var(--ink3);}
.slot.active{background:var(--blue);border-color:var(--blue);box-shadow:0 6px 14px rgba(0,122,255,.28);}
.slot.active .tm,.slot.active .lb{color:#fff;}
.slot.active .st .dot{background:rgba(255,255,255,.9);}
.slot.done{background:var(--green-soft);border-color:#BEE9CB;}
.slot.done .tm{color:#1A7A33;}
.slot.done .lb{color:#2C9A4A;}
.slot.done .st{color:#1F9D46;}
.slot .who{font-size:10px;color:#2C9A4A;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.slot.active .who{color:#fff;}

/* ============ 负责人 / 我是谁 ============ */
.people{display:flex;flex-direction:column;gap:11px;}
.people-group{display:flex;flex-direction:column;gap:6px;}
.pg-label{font-size:11px;color:var(--ink3,#8a8a8e);letter-spacing:.08em;padding-left:2px;}
.pg-row{display:flex;gap:8px;}
.person{display:inline-flex;align-items:center;height:30px;padding:0 13px;background:var(--card);border:1.5px solid var(--line);border-radius:15px;font-size:12.5px;color:var(--ink);transition:.15s;}
.person.active{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600;box-shadow:0 4px 10px rgba(0,122,255,.22);}
/* 「我是谁」人名同一行等分不滑动；巡店人员在各自分组行内等分 */
#hPeopleBar{flex-wrap:nowrap;gap:6px;}
#hPeopleBar .person,.pg-row .person{flex:1 1 0;min-width:0;padding:0;justify-content:center;}

/* ============ 任务卡 ============ */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin:8px 0;overflow:hidden;}
.card-pad{padding:11px 12px;}
.card-title{display:flex;align-items:center;gap:9px;}
.card-title .ic{flex:none;width:27px;height:27px;border-radius:8px;background:var(--blue-soft);color:var(--blue);display:flex;align-items:center;justify-content:center;}
.card-title .tx{flex:1;min-width:0;}
.card-title .tx b{font-size:13.5px;font-weight:600;color:var(--ink);display:block;}
.card-title .tx em{font-style:normal;font-size:11px;color:var(--ink2);}
.tag{font-size:10.5px;padding:2.5px 8px;border-radius:7px;font-weight:600;flex:none;}
.tag.must{background:#FFEBEA;color:#E0473E;}
.tag.opt{background:var(--line-soft);color:var(--ink2);}
.tag.none{background:var(--green-soft);color:#1F9D46;}
/* 任务动态责任人提示 */
.owner-tag{font-size:10.5px;font-weight:600;padding:2.5px 8px;border-radius:7px;background:var(--blue-soft);color:#0056CC;flex:none;}
/* 拍照大按钮 */
.shot-btn{display:flex;align-items:center;gap:10px;width:100%;margin-top:10px;padding:10px 12px;border:1.6px dashed #B9CCE8;border-radius:var(--radius-sm);background:#F7FAFF;color:var(--blue);}
.shot-btn .cam{flex:none;width:31px;height:31px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;}
.shot-btn .s-tx{flex:1;text-align:left;}
.shot-btn .s-tx b{font-size:13px;font-weight:600;display:block;}
.shot-btn .s-tx em{font-style:normal;font-size:11.5px;color:var(--ink2);}
.shot-btn .plus{font-size:22px;font-weight:300;line-height:1;}
.shot-btn:disabled,.shot-btn.off{opacity:.4;pointer-events:none;}
/* 展厅分组：角度一横 */
.hall-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:2px 14px 2px;}
.hall-tab{border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:8px 5px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px;background:#FAFAFC;transition:.15s;}
.hall-tab .ht-name{font-size:12px;font-weight:600;color:var(--ink);line-height:1.25;}
.hall-tab .ht-cam{width:27px;height:27px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;}
.hall-tab.done{background:var(--green-soft);border-color:#BEE9CB;}
.hall-tab.done .ht-name{color:#1A7A33;}
.hall-tab.done .ht-cam{background:var(--green);}
/* 展厅：照片第二横 */
.hall-all{display:flex;gap:7px;overflow-x:auto;padding:9px 12px 11px;scrollbar-width:none;}
.hall-all::-webkit-scrollbar{display:none;}
.hall-all:empty{display:none;padding:0;}
/* 缩略图 */
.thumbs{display:flex;gap:8px;overflow-x:auto;margin-top:11px;padding-bottom:2px;scrollbar-width:none;}
.thumbs::-webkit-scrollbar{display:none;}
.thumbs:empty{display:none;}
.thumb{flex:none;position:relative;}
.thumb img{width:58px;height:58px;border-radius:9px;object-fit:cover;display:block;background:var(--line-soft);}
.thumb.hall img{width:80px;height:53px;}
.thumb a{display:block;}
.thumb .del{position:absolute;top:-6px;right:-6px;width:21px;height:21px;border-radius:50%;background:#1C1C1E;color:#fff;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,.3);}
/* 免拍勾选 */
.skip-row{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12.5px;color:var(--ink);}
.skip-row input{width:19px;height:19px;accent-color:var(--blue);}
/* check 列表 */
.ios-list{padding:4px 0;}
.ios-row{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;text-align:left;border-top:.5px solid var(--line-soft);}
.ios-row:first-child{border-top:none;}
.ck{flex:none;width:23px;height:23px;border-radius:50%;border:2px solid #C7C7CC;position:relative;transition:.15s;}
.ck::after{content:"";position:absolute;left:7px;top:3.5px;width:6px;height:11px;border:solid #fff;border-width:0 2.4px 2.4px 0;transform:rotate(45deg);opacity:0;}
.ios-row.on .ck{background:var(--blue);border-color:var(--blue);}
.ios-row.on .ck::after{opacity:1;}
.ios-row .lb{font-size:13.5px;color:var(--ink);}
/* 缺货 */
.sh-input{width:100%;height:39px;background:#F7F7FA;border:1.5px solid transparent;border-radius:var(--radius-sm);padding:0 12px;font-size:13px;color:var(--ink);margin-top:8px;}
.sh-input:first-of-type{margin-top:13px;}
.sh-input:focus{outline:none;border-color:var(--blue);background:#fff;}

/* ============ 今日已提交（折叠） ============ */
.accordion{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin:8px 0 16px;overflow:hidden;}
.acc-head{display:flex;align-items:center;gap:9px;width:100%;padding:11px 12px;text-align:left;}
.acc-head .t{flex:1;font-size:13.5px;font-weight:600;}
.acc-head .cnt{font-size:12px;color:var(--ink2);}
.acc-head .chev{color:var(--ink3);transition:transform .25s;}
.accordion.open .acc-head .chev{transform:rotate(180deg);}
.acc-body{max-height:0;overflow:hidden;transition:max-height .3s ease;}
.acc-inner{padding:0 14px 14px;}
.empty-tip{font-size:13px;color:var(--ink2);padding:2px 2px 4px;}
.rec{border:.5px solid var(--line);border-radius:var(--radius-sm);padding:11px 12px;margin-top:10px;}
.rec-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.rec-head .rname{font-size:13.5px;font-weight:600;}
.rec-head .rtime{font-size:12px;color:var(--ink2);flex:none;}
.rec-line{font-size:13px;margin-top:7px;color:var(--ink);display:flex;align-items:center;gap:7px;}
.rec-line.ok{color:#1F9D46;}
.rec-line.none{color:var(--ink2);}
.rec-thumbs{display:flex;gap:7px;overflow-x:auto;margin-top:9px;scrollbar-width:none;}
.rec-thumbs::-webkit-scrollbar{display:none;}
.rec-thumbs a{flex:none;}
.rec-thumbs img{width:60px;height:60px;border-radius:9px;object-fit:cover;}
.rec-thumbs.hall img{width:80px;height:53px;}
.sh-tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;background:var(--orange-soft);color:#B26500;padding:4px 10px;border-radius:8px;margin:8px 6px 0 0;}
/* 同排任务（如 玻璃柜补货 + 收快递）已提交结果 */
.merged-strip{display:flex;gap:10px;overflow-x:auto;margin-top:9px;scrollbar-width:none;}
.merged-strip::-webkit-scrollbar{display:none;}
.merged-strip .mg-grp{flex:none;}
.merged-strip .mg-name{display:block;font-size:11px;color:var(--ink2);margin-bottom:5px;}
.merged-strip .mg-imgs{display:flex;gap:7px;}
.merged-strip img{width:60px;height:60px;border-radius:9px;object-fit:cover;}
.merged-strip .mg-none{font-size:12px;color:var(--ink2);}

/* ============ 底部固定提交栏（巡店） ============ */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:40;background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(16px);border-top:.5px solid var(--line);box-shadow:var(--shadow-float);}
.dock-inner{max-width:480px;margin:0 auto;padding:8px 14px calc(8px + var(--safe-b));display:flex;align-items:center;gap:11px;}
.dock-info{flex:1;min-width:0;}
.dock-info .di-t{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:5px;}
.dock-info .di-s{font-size:11.5px;color:var(--ink2);margin-top:2px;}
.dock-bar{height:4px;background:var(--line-soft);border-radius:2px;margin-top:6px;overflow:hidden;}
.dock-fill{height:100%;background:var(--green);border-radius:2px;transition:width .35s;}
.dock-btn{flex:none;min-width:96px;height:42px;border-radius:13px;background:var(--blue);color:#fff;font-size:14.5px;font-weight:600;box-shadow:0 6px 14px rgba(0,122,255,.28);transition:.15s;}
.dock-btn:active{background:var(--blue-press);transform:scale(.98);}
.dock-btn:disabled{opacity:.55;box-shadow:none;}
.space-b{height:calc(84px + var(--safe-b));}

/* ============ 弹窗 / Toast ============ */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.38);display:none;align-items:center;justify-content:center;padding:30px;z-index:60;}
.mask.show{display:flex;}
.modal{background:#fff;border-radius:18px;padding:24px 20px 20px;width:100%;max-width:300px;text-align:center;animation:pop .22s ease;}
@keyframes pop{from{transform:scale(.92);opacity:0;}to{transform:scale(1);opacity:1;}}
.modal .m-ic{width:56px;height:56px;border-radius:50%;background:var(--green-soft);color:var(--green);display:flex;align-items:center;justify-content:center;margin:0 auto 12px;}
.modal h3{font-size:17px;font-weight:700;margin-bottom:6px;}
.modal p{font-size:13.5px;color:var(--ink2);line-height:1.55;}
.modal-btns{margin-top:18px;}
.modal-btns button{width:100%;height:44px;border-radius:12px;background:var(--blue);color:#fff;font-size:15px;font-weight:600;}
.toast{position:fixed;left:50%;bottom:calc(110px + var(--safe-b));transform:translateX(-50%) translateY(20px);background:rgba(28,28,30,.94);color:#fff;font-size:13.5px;padding:11px 18px;border-radius:12px;opacity:0;pointer-events:none;transition:.25s;z-index:70;max-width:86%;text-align:center;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ============ 首页 · 应用中心 ============ */
.ac-topbar{display:flex;justify-content:center;align-items:center;padding:calc(11px + env(safe-area-inset-top)) 2px 0;}
.ac-who{font-size:12.5px;font-weight:600;color:var(--ink2);letter-spacing:-.1px;}
.ac-who-login{color:var(--blue);}

.app-center{margin-top:17px;display:flex;flex-direction:column;gap:11px;}
.ac-group-head{font-size:12px;font-weight:700;color:var(--ink2);letter-spacing:.2px;padding:0 2px 1px;}
.ac-grid{margin-top:6px;display:grid;grid-template-columns:repeat(5,1fr);gap:8px 3px;}
.ac-app{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;padding:3px 1px;}
.ac-ic{flex:none;width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 1px 2px rgba(16,24,40,.05),inset 0 0 0 1px rgba(255,255,255,.6);
  transition:transform .13s ease;}
.ac-app:active .ac-ic{transform:scale(.9);}
.ac-name{margin-top:6px;font-size:10.5px;font-weight:600;letter-spacing:-.1px;color:#16161a;white-space:nowrap;line-height:1.2;}
.ac-badge{position:absolute;top:-1px;right:calc(50% - 25px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;
  background:linear-gradient(180deg,#FF9B3E,#FF7A1A);color:#fff;font-size:9.5px;font-weight:700;line-height:16px;text-align:center;
  box-shadow:0 2px 6px rgba(255,122,26,.42);z-index:2;}

/* 图标配色（克制的 iOS 系统色，渐变柔和） */
.ac-ic.tone-green {background:linear-gradient(160deg,#EAFBEF,#DBF5E4);color:#1CA34A;}
.ac-ic.tone-blue  {background:linear-gradient(160deg,#EAF2FF,#DAE8FF);color:#0A6EF0;}
.ac-ic.tone-teal  {background:linear-gradient(160deg,#E6F8F6,#D2F1ED);color:#0E9488;}
.ac-ic.tone-orange{background:linear-gradient(160deg,#FFF3E5,#FFE4C8);color:#EE7413;}
.ac-ic.tone-gray  {background:linear-gradient(160deg,#F4F4F6,#E8E8EC);color:#3a3a3c;}
.ac-ic.tone-red   {background:linear-gradient(160deg,#FFECEB,#FFDCDA);color:#E5484D;}
.ac-ic.tone-slate {background:linear-gradient(160deg,#ECF0F5,#DDE5EE);color:#4A5B72;}
.ac-ic.tone-indigo{background:linear-gradient(160deg,#ECEEFF,#DDE2FF);color:#515Bc9;}
.ac-ic.tone-purple{background:linear-gradient(160deg,#F3EEFB,#E7DFF8);color:#704FA6;}
.ac-ic.tone-dark  {background:linear-gradient(160deg,#ECEDEF,#DCDCE0);color:#1c1c1e;}

/* 未登录提示 */
.ac-login{margin-top:26px;background:#fff;border-radius:18px;padding:30px 20px;text-align:center;box-shadow:var(--shadow);}
.ac-login-ic{width:62px;height:62px;border-radius:50%;background:var(--blue-soft);color:var(--blue);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}
.ac-login-t{font-size:15px;font-weight:700;color:#161618;}
.ac-login-s{margin-top:5px;font-size:12.5px;color:var(--ink2);}

.home-foot{margin-top:20px;padding:14px 0 8px;text-align:center;font-size:11.5px;color:var(--ink3);}

/* ============ 首页·今日待办 ============ */
.home-todo{margin-top:7px;}
.todo-head{display:flex;align-items:baseline;justify-content:space-between;padding:0 2px 7px;}
.todo-head .t{font-size:14.5px;font-weight:700;color:#161618;letter-spacing:-.2px;}
.todo-count{font-size:12px;color:var(--ink2);}
.todo-list{display:flex;flex-direction:column;gap:7px;}
.todo-item{display:flex;align-items:center;gap:10px;background:#fff;border-radius:13px;padding:9px 12px;box-shadow:var(--shadow);transition:.15s;}
.todo-item:active{transform:scale(.985);}
.ti-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--blue);}
.ti-body{flex:1;min-width:0;}
.ti-body b{font-size:14px;font-weight:600;color:var(--ink);display:block;letter-spacing:-.2px;}
.ti-body em{font-style:normal;font-size:11.5px;color:var(--ink2);margin-top:2px;display:block;line-height:1.4;}
.ti-owner{display:inline-flex;align-items:center;margin-top:6px;font-size:11.5px;font-weight:600;color:#1a7f37;background:var(--green-soft);border-radius:8px;padding:3px 9px;}
.ti-go{flex:none;color:var(--ink3);display:flex;}
.ti-hygiene .ti-dot{background:var(--blue);}
.ti-patrol .ti-dot{background:var(--orange);}
.ti-plant .ti-dot{background:var(--green);box-shadow:0 0 0 4px var(--green-soft);}
.ti-plant .ti-body b{color:#1a7f37;}
.todo-done{display:flex;align-items:center;gap:9px;background:var(--green-soft);border-radius:14px;padding:12px 14px;font-size:13.5px;font-weight:600;color:#1a7f37;}
.todo-done .td-check{flex:none;width:22px;height:22px;border-radius:50%;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;}

/* 待办分组 */
.todo-group{margin-top:13px;}
.todo-group:first-of-type{margin-top:2px;}
.tg-head{display:flex;align-items:center;gap:7px;padding:0 2px 6px;}
.tg-label{font-size:12.5px;font-weight:700;letter-spacing:-.1px;color:var(--ink2);}
.tg-owner{font-size:11px;font-weight:600;color:#1a7f37;background:var(--green-soft);border-radius:7px;padding:2px 8px;}
.tg-cnt{margin-left:auto;font-size:10.5px;font-weight:700;border-radius:7px;padding:1px 7px;background:var(--line-soft);color:var(--ink2);}
.tg-hygiene .tg-label{color:#0056CC;}
.tg-hygiene .tg-cnt{background:var(--blue-soft);color:#0056CC;}
.tg-patrol .tg-label{color:#B26500;}
.tg-patrol .tg-cnt{background:var(--orange-soft);color:#B26500;}
.tg-plant .tg-label{color:#1a7f37;}
.tg-plant .tg-cnt{background:var(--green-soft);color:#1a7f37;}
.todo-group .todo-list{gap:7px;}

/* 存车每周例检 */
.tg-locker .tg-label{color:#B26500;}
.tg-locker .tg-cnt{background:var(--orange-soft);color:#B26500;}
.tg-locker .tg-cnt.tg-cnt-done{background:var(--green-soft);color:#1a7f37;}
.ti-locker .ti-dot{background:var(--orange);}
.locker-done{display:flex;align-items:center;gap:10px;background:var(--green-soft);border-radius:13px;padding:11px 13px;}
.locker-done .ld-check{flex:none;width:22px;height:22px;border-radius:50%;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;}
.locker-done .ld-body{min-width:0;}
.locker-done .ld-body b{font-size:13.5px;font-weight:600;color:#1a7f37;display:block;letter-spacing:-.2px;}
.locker-done .ld-body em{font-style:normal;font-size:11.5px;color:#1a7f37;opacity:.82;margin-top:2px;display:block;line-height:1.4;}

/* 巡店打卡 · 5 个闹铃一行 */
.patrol-row{display:flex;gap:4px;background:#fff;border-radius:13px;padding:16px 6px 9px;box-shadow:var(--shadow);}
.ps-cell{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;position:relative;}
.ps-label{font-size:11px;font-weight:700;color:var(--ink2);letter-spacing:-.1px;}
.ps-time{font-size:10.5px;color:var(--ink2);font-variant-numeric:tabular-nums;letter-spacing:-.2px;}
.ps-mark{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;}
.ps-mark i{width:8px;height:8px;border-radius:50%;background:var(--orange);}
.ps-cell:not(.ps-done) .ps-label{color:#B26500;}
.ps-done{opacity:.55;}
.ps-done .ps-mark{background:var(--green);color:#fff;font-size:11px;}
.ps-done .ps-mark i{display:none;}
.ps-owner{position:absolute;top:-13px;left:50%;transform:translateX(-50%);white-space:nowrap;
  font-size:9.5px;font-weight:600;color:#1a7f37;background:var(--green-soft);border-radius:6px;padding:1px 6px;}

/* ============ 上班卫生：分段控件 ============ */
.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.seg button{height:42px;border-radius:var(--radius-sm);background:var(--line-soft);font-size:14px;color:var(--ink2);font-weight:600;transition:.15s;}
.seg button.active{background:var(--blue);color:#fff;box-shadow:0 4px 10px rgba(0,122,255,.22);}
/* 项目组 */
.gcard{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);margin:8px 0;overflow:hidden;}
.ghead{display:flex;align-items:center;gap:10px;padding:10px 12px;width:100%;text-align:left;}
.gbadge{flex:none;width:30px;height:30px;border-radius:9px;background:var(--blue);color:#fff;font-weight:700;font-size:14.5px;display:flex;align-items:center;justify-content:center;}
.gmid{flex:1;min-width:0;}
.gmid .gn{font-size:13.5px;font-weight:700;}
.gmid .gc{font-size:11.5px;color:var(--ink2);margin-top:1px;}
.gowners{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;max-width:120px;}
.ochip{font-size:11px;padding:3px 9px;border-radius:8px;background:var(--blue-soft);color:#0056CC;font-weight:600;display:inline-flex;align-items:center;}
.ochip.none{background:var(--line-soft);color:var(--ink3);}
.ochip.me{cursor:pointer;}
.ochip.me::after{content:'×';margin-left:5px;font-weight:400;opacity:.65;}
.ochip.me:active{opacity:.55;}
.garrow{flex:none;color:var(--ink3);transition:transform .2s;}
.gcard.open .garrow{transform:rotate(180deg);}
.gbody{border-top:.5px solid var(--line-soft);padding:3px 0;}
.grow{display:flex;align-items:center;gap:10px;padding:9px 12px;width:100%;text-align:left;border-top:.5px solid var(--line-soft);}
.grow:first-child{border-top:none;}
.gck{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid #C7C7CC;color:transparent;display:flex;align-items:center;justify-content:center;transition:.15s;}
.grow.done .gck{background:var(--green);border-color:var(--green);color:#fff;}
.ginfo{flex:1;min-width:0;}
.ginfo .gt{font-size:13px;color:var(--ink);line-height:1.35;}
.ginfo .gby{font-size:11px;color:var(--ink2);margin-top:1px;display:flex;align-items:center;}
.gundo{flex:none;font-size:12px;color:var(--ink2);padding:5px 9px;border-radius:8px;background:var(--line-soft);}
.gclaim{margin:5px 12px 11px;width:calc(100% - 24px);height:36px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;background:var(--blue-soft);color:var(--blue);}
.gclaim.mine{background:var(--line-soft);color:var(--ink2);}
/* 视频上传 */
.vup{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:1.6px dashed #B9CCE8;border-radius:var(--radius-sm);background:#F7FAFF;color:var(--blue);}
.vup .vc{flex:none;width:32px;height:32px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;}
.vup .vt{flex:1;text-align:left;}
.vup .vt b{font-size:13px;font-weight:600;display:block;}
.vup .vt em{font-style:normal;font-size:11.5px;color:var(--ink2);}
.vprog{margin-top:12px;display:none;}
.vprog.show{display:block;}
.vprog .vp-top{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink2);margin-bottom:5px;}
.vprog .vp-track{height:6px;background:var(--line-soft);border-radius:3px;overflow:hidden;}
.vprog .vp-fill{height:100%;background:var(--blue);border-radius:3px;width:0;transition:width .2s;}
.vitem{display:flex;align-items:center;gap:9px;background:#F7F7FA;border-radius:var(--radius-sm);padding:8px 11px;margin-top:8px;}
.vitem .vplay{flex:1;min-width:0;font-size:13px;color:var(--ink);display:flex;align-items:center;gap:8px;}
.vitem .vplay .pic{color:var(--blue);flex:none;display:flex;}
.vitem a.vlink{color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:8px;min-width:0;}
.vtag{font-size:10.5px;padding:3px 8px;border-radius:7px;background:var(--orange-soft);color:#B25F00;font-weight:600;flex:none;}
.vtag.ok{background:var(--green-soft);color:#1F9D46;}
/* 最近记录 */
.rrow{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:.5px solid var(--line-soft);}
.rrow:last-child{border-bottom:none;}
.rd{flex:none;width:54px;text-align:center;}
.rd .rday{font-size:12.5px;font-weight:700;white-space:nowrap;}
.rd .rwd{font-size:10px;color:var(--ink2);margin-top:2px;white-space:nowrap;}
.rmid{flex:1;min-width:0;}
.rtrack{height:5px;background:var(--line-soft);border-radius:3px;overflow:hidden;}
.rfill{height:100%;background:var(--blue);border-radius:3px;}
.rfill.ok{background:var(--green);}
.rmeta{display:flex;align-items:center;gap:4px;margin-top:5px;min-height:8px;}
.rmini{width:6px;height:6px;border-radius:50%;}
.rstat{flex:none;font-size:11px;font-weight:600;padding:3px 8px;border-radius:7px;}
.rstat.ok{background:var(--green-soft);color:#1F9D46;}
.rstat.bad{background:var(--orange-soft);color:#B25F00;}
.rstat.none{background:var(--line-soft);color:var(--ink3);}
.rdel{flex:none;color:var(--ink3);padding:6px;}
.r-vid{font-size:10px;color:var(--ink2);}
.allok{background:var(--green-soft);color:#1A7A33;border-radius:var(--radius);padding:11px;text-align:center;font-size:13.5px;font-weight:700;margin:9px 0;display:none;}
/* 通用弹窗 */
.m-input{width:100%;height:46px;background:#F2F2F7;border:none;border-radius:var(--radius-sm);text-align:center;font-size:16px;letter-spacing:2px;margin:14px 0 6px;}
.m-err{color:var(--red);font-size:12.5px;min-height:16px;}
.m2-btns{display:flex;gap:10px;margin-top:14px;}
.m2-btns button{flex:1;height:44px;border-radius:12px;font-size:15px;font-weight:600;}
.m2-cancel{background:var(--line-soft);color:var(--ink);}
.m2-ok{background:var(--blue);color:#fff;}
.m2-ok.danger{background:var(--red);}
/* 最近记录·点击展开当天细节 */
.dd-modal{max-width:340px;padding:20px 18px 16px;text-align:left;}
.dd-modal h3{text-align:center;}
.dd-body{max-height:60vh;overflow-y:auto;margin:8px 2px;-webkit-overflow-scrolling:touch;}
.dd-loading,.dd-empty{text-align:center;color:var(--ink2);font-size:13px;padding:24px 0;}
.dd-sum{font-size:12.5px;color:var(--ink2);text-align:center;margin-bottom:10px;}
.dd-sum b{color:var(--ink);font-size:14px;}
.dd-grp{border:1px solid var(--line,#E5E5EA);border-radius:13px;padding:10px 12px;margin-bottom:10px;}
.dd-grp-h{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.dd-badge{flex:none;width:22px;height:22px;border-radius:7px;background:var(--blue);color:#fff;font-size:12.5px;font-weight:700;display:flex;align-items:center;justify-content:center;}
.dd-own{flex:1;font-size:11.5px;color:var(--ink);}
.dd-noowner{color:var(--ink2);font-size:11.5px;}
.dd-grp-cnt{flex:none;font-size:11.5px;color:var(--ink2);}
.dd-task{display:flex;align-items:center;gap:7px;padding:4px 0;font-size:12.5px;}
.dd-task.done{color:#2C9A4A;}
.dd-task .dd-tname{flex:1;color:var(--ink);}
.dd-task.miss .dd-x{color:var(--red);width:14px;text-align:center;flex:none;}
.dd-task.miss .dd-who{color:var(--red);}
.dd-who{flex:none;font-size:11px;color:var(--ink2);}
.dd-vhead{font-size:12.5px;font-weight:600;margin:4px 2px 7px;}

/* ===== 首页下班报告板块（苹果/ios 风） ===== */
.rp-box{margin-top:10px;background:#fff;border-radius:15px;padding:11px 12px 10px;box-shadow:var(--shadow);}
.rp-head{display:flex;align-items:center;justify-content:space-between;}
.rp-title{font-size:15.5px;font-weight:700;color:var(--ink);letter-spacing:-.2px;}
.rp-progress{font-size:12px;font-weight:600;color:var(--blue);background:var(--blue-soft);border-radius:20px;padding:3px 11px;}
.rp-plabel{font-size:12px;color:var(--ink2);margin:11px 2px 7px;}
.rp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;}
.rp-name{position:relative;display:flex;align-items:center;justify-content:center;min-height:30px;padding:4px 2px;background:#fff0f0;color:var(--red);border-radius:9px;font-size:12px;font-weight:600;text-align:center;}
.rp-shift{position:absolute;top:-6px;right:-5px;min-width:15px;height:15px;line-height:15px;padding:0 3px;border-radius:8px;font-style:normal;font-size:9px;font-weight:700;text-align:center;letter-spacing:0;border:1.5px solid var(--card);box-sizing:content-box;}
.rp-shift-morning{background:var(--orange-soft);color:var(--orange);}
.rp-shift-evening{background:var(--blue-soft);color:var(--blue);}
.rp-shift-fullday{background:#E8E8ED;color:#636366;}
.rp-good{margin-top:12px;font-size:13px;font-weight:600;color:var(--green);background:var(--green-soft);border-radius:11px;padding:9px 11px;}
.rp-good span{font-weight:400;}
.rp-muted{color:var(--ink2);background:var(--line-soft);}
.rp-month{margin-top:13px;border-top:1px solid var(--line-soft);padding-top:11px;}
.rm-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px;}
.rm-title{font-size:13px;font-weight:600;color:var(--ink);}
.rm-total{font-size:12px;font-weight:600;color:var(--red);}
.rm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;}
.rm-cell{display:flex;align-items:center;justify-content:space-between;background:var(--line-soft);border-radius:9px;padding:7px 10px;}
.rm-name{font-size:11.5px;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rm-num{font-size:12px;font-weight:700;color:var(--red);margin-left:7px;}
