:root{
  --green:#187E66; --green-d:#12624f; --green-l:#e6f2ef;
  --ink:#1f2937; --muted:#6b7280; --line:#e5e7eb; --bg:#f6f8f9; --card:#fff;
  --red:#d64545; --amber:#d98a00; --radius:12px; --shadow:0 1px 3px rgba(0,0,0,.06);
  /* 统一设计系统 token（源自晋升通道玻璃卡，全站调性） */
  --r-lg:18px; --r-md:14px; --r-pill:99px;
  --grad-green:linear-gradient(135deg,#0b3b30 0%,#187E66 92%);
  --grad-green-soft:linear-gradient(135deg,#eef6f2,#dcece4);
  --glass-fill:rgba(255,255,255,.08); --glass-brd:rgba(255,255,255,.18);
  --amber1:#ffd25e; --amber2:#f5a623; --grad-amber:linear-gradient(135deg,#ffd25e,#f5a623);
  --lift:0 10px 24px rgba(0,0,0,.22); --glow:0 14px 34px rgba(24,126,102,.30);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);line-height:1.6;font-size:15px}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;width:100%;background:#fff}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green)}
.req{color:#e5484d;margin-left:2px}
.doc-view{margin-top:14px}
.doc-view-head{font-weight:600;margin-bottom:8px;font-size:14px}
.doc-frame{width:100%;height:74vh;border:1px solid var(--line);border-radius:10px;background:#fff}
.doc-img{max-width:100%;border-radius:10px;border:1px solid var(--line);display:block}
.doc-fs{float:right;font-weight:400}
.doc-view-head::after{content:"";display:block;clear:both}
.doc-view:fullscreen{background:#f4f6f5;padding:14px 18px;overflow:auto}
.doc-view:fullscreen .pdf-scroll{height:calc(100vh - 76px)}
.doc-view:fullscreen .doc-frame{height:calc(100vh - 64px)}
.doc-view:fullscreen .doc-img{max-height:calc(100vh - 76px);width:auto;max-width:100%;margin:0 auto}
.doc-note{padding:16px 18px;background:#fff7ed;border:1px solid #fdba74;border-radius:10px;color:#9a3412;font-size:14px}
.up-prog-wrap{margin-top:8px;height:8px;background:var(--line);border-radius:6px;overflow:hidden}
.up-prog{height:100%;width:0%;background:var(--green);transition:width .2s}
.pbar{display:inline-block;vertical-align:middle;width:78px;height:8px;background:#eef1f0;border-radius:6px;overflow:hidden;margin-right:8px}
.pbar > i{display:block;height:100%;background:var(--green);border-radius:6px}
a{color:var(--green);text-decoration:none}
.splash{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--muted)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:10px;background:var(--grad-green);color:#fff;font-size:14px;font-weight:600;box-shadow:0 4px 14px rgba(24,126,102,.22);transition:.16s}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(24,126,102,.34)}
.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--green);color:var(--green)}
.btn.danger{background:#fff;color:var(--red);border:1px solid #f0d0d0}
.btn.danger:hover{background:var(--red);color:#fff}
.btn.sm{padding:5px 10px;font-size:13px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* auth */
.auth-wrap{display:flex;min-height:100vh;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--green) 0%,var(--green-d) 100%);padding:20px}
.auth-card{background:#fff;border-radius:16px;padding:36px;width:100%;max-width:400px;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.auth-brand{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:6px}
.auth-logo{width:38px;height:38px;border-radius:9px;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:22px}
.auth-brand h1{font-size:19px;letter-spacing:.5px}
.auth-sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:24px}
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:5px;font-weight:600}
.auth-switch{text-align:center;margin-top:16px;font-size:13px;color:var(--muted)}
.auth-tabs{display:flex;margin-bottom:20px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.auth-tabs button{flex:1;padding:9px;font-size:14px;color:var(--muted);background:#fafafa}
.auth-tabs button.active{background:var(--green);color:#fff;font-weight:600}

/* layout */
.topbar{position:sticky;top:0;z-index:20;height:60px;background:#fff;color:var(--ink);border-bottom:1px solid var(--line);box-shadow:0 1px 8px rgba(0,0,0,.04);display:flex;align-items:center;padding:0 20px;gap:16px}
.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:800;color:#12433a;font-size:17px;letter-spacing:.3px}
.topbar .brand-home{cursor:pointer;user-select:none}
.topbar .brand-home:hover{text-decoration:none}
.brand-logo{height:26px;width:auto;display:block}
.auth-brand .brand-logo{height:38px}
.topbar .spacer{flex:1}
.user-chip{display:flex;align-items:center;gap:9px;font-size:14px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--green-l);color:var(--green);display:flex;align-items:center;justify-content:center;font-weight:700}
.role-tag{font-size:11px;padding:2px 8px;border-radius:20px;background:var(--green-l);color:var(--green);font-weight:600}

.shell{display:flex;max-width:1200px;margin:0 auto;gap:24px;padding:22px 20px}
.sidenav{width:190px;flex-shrink:0;display:flex;flex-direction:column;position:sticky;top:74px;min-height:calc(100vh - 100px)}
.sidenav-list{flex:1}
.sidefoot{margin-top:auto;padding-top:12px;border-top:1px dashed var(--line)}
.sidefoot-link{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--r-md);color:var(--green-d);font-size:14px;font-weight:800}
.sidefoot-link .ico{width:18px;text-align:center}
.sidefoot-link:hover{background:#fff}
.sidenav a{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:9px;color:var(--muted);font-size:14px;font-weight:600;margin-bottom:3px}
.sidenav a:hover{background:#fff}
.sidenav a.active{background:var(--grad-green);color:#fff;box-shadow:0 8px 20px rgba(24,126,102,.28);border-radius:var(--r-md)}
.sidenav .ico{width:18px;text-align:center}
.main{flex:1;min-width:0}

.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px;flex-wrap:wrap}
.page-head h2{font-size:20px}
.page-head .desc{color:var(--muted);font-size:13px;margin-top:2px}

/* cards / grids */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.card .cover{height:120px;background:var(--green-l);display:flex;align-items:center;justify-content:center;color:var(--green);font-size:34px;font-weight:800;background-size:cover;background-position:center}
.card .body{padding:14px 16px}
.card .title{font-weight:700;font-size:15px;margin-bottom:4px}
.card .meta{color:var(--muted);font-size:12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.card .foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px}
.pill{font-size:11px;padding:2px 8px;border-radius:20px;background:#eef2f6;color:#54647a;font-weight:600}
.pill.done{background:#e2f4ec;color:var(--green)}
.pill.live{background:#fdeaea;color:var(--red)}
.pill.on{background:#e2f4ec;color:var(--green)}
.pill.off{background:#f0f1f3;color:#98a2b3}
.pill.up{background:#fff4e0;color:var(--amber)}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:22px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.stat .n{font-size:28px;font-weight:800;background:var(--grad-green);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat .l{color:var(--muted);font-size:13px;margin-top:2px}

/* table */
table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;font-size:14px}
th,td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line)}
th{background:#fafbfc;color:var(--muted);font-weight:600;font-size:13px}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:#fafcfb}
/* 账号表：超长内容（如异常姓名）截断，避免撑爆行、按钮仍可点击 */
.tbl-scroll{overflow-x:auto}
.tbl-accounts{table-layout:fixed;min-width:880px}
.tbl-accounts th,.tbl-accounts td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tbl-accounts td:last-child{overflow:visible;white-space:nowrap}
/* 功能权限表：表头允许换行完整显示（不再截断成"上传…/查看…"看不出区别），数据格保持不换行 */
.fn-tbl{min-width:1040px}
.fn-tbl th{white-space:normal;text-overflow:clip;overflow:visible;line-height:1.3;vertical-align:bottom;padding:8px 8px}
.fn-tbl th.sm{font-size:12.5px}
.fn-legend{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 16px}
.fn-lg-title{font-weight:600;color:var(--muted);font-size:13px;margin-bottom:8px}
.fn-legend ul{margin:0;padding-left:18px;display:grid;grid-template-columns:1fr 1fr;gap:4px 26px;list-style:disc}
.fn-legend li{font-size:12.5px;color:#42534e;line-height:1.55}
.fn-legend li b{color:var(--ink,#1f2a26)}


/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(15,23,32,.5);display:flex;align-items:flex-start;justify-content:center;z-index:60;padding:40px 16px;overflow:auto}
.modal{background:#fff;border-radius:14px;width:100%;max-width:560px;padding:24px;box-shadow:0 24px 70px rgba(0,0,0,.3)}
.modal h3{font-size:17px;margin-bottom:16px}
.modal .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
.modal textarea{resize:vertical}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* exam taking */
.q-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:14px}
.q-title{font-weight:600;margin-bottom:12px}
.q-title .q-no{color:var(--green);font-weight:800;margin-right:6px}
.opt{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;margin-bottom:8px;cursor:pointer}
.opt:hover{border-color:var(--green)}
.opt.sel{border-color:var(--green);background:var(--green-l)}
.opt input{width:auto}
.exam-bar{position:sticky;top:58px;z-index:15;background:#fff;border-bottom:1px solid var(--line);padding:10px 20px;display:flex;align-items:center;justify-content:space-between}
.timer{font-weight:800;color:var(--green);font-variant-numeric:tabular-nums}
.timer.warn{color:var(--red)}

/* result */
.result-hero{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px;text-align:center;margin-bottom:18px}
.result-hero .score{font-size:52px;font-weight:800}
.result-hero .score.pass{color:var(--green)} .result-hero .score.fail{color:var(--red)}
.result-badge{font-size:14px;font-weight:700;padding:5px 16px;border-radius:20px;display:inline-block;margin-top:8px}
.result-badge.pass{background:#e2f4ec;color:var(--green)} .result-badge.fail{background:#fdeaea;color:var(--red)}
.q-reveal .q-title{margin-bottom:8px}
.opt.right{border-color:#a7d9c6;background:#f0fbf6}
.opt.wrong{border-color:#eabcbc;background:#fdf4f4}
.tag-ok{color:var(--green);font-weight:700}.tag-no{color:var(--red);font-weight:700}

/* misc */
.empty{text-align:center;color:var(--muted);padding:50px 20px;background:#fff;border:1px dashed var(--line);border-radius:var(--radius)}
.muted{color:var(--muted)}.sm{font-size:13px}
.video-frame{width:100%;aspect-ratio:16/9;border:none;border-radius:var(--radius);background:#000;margin:6px 0 14px}
.video-player{width:100%;aspect-ratio:16/9;border:none;border-radius:var(--radius);background:#000;margin:6px 0 14px}
.doc-link{display:inline-flex;align-items:center;gap:8px;padding:12px 16px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:600}
.doc-link:hover{border-color:var(--green);color:var(--green)}
.q-editor .q-block{border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px;background:#fff}
.opt-edit{display:flex;gap:8px;align-items:center;margin-bottom:6px}
.opt-edit input[type=text]{flex:1}
.toolbar-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.section-title{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:800;color:var(--green-d);letter-spacing:.3px;margin:24px 0 12px}
.section-title::before{content:'';width:4px;height:15px;border-radius:var(--r-pill);background:var(--grad-green);box-shadow:0 0 8px rgba(24,126,102,.45)}
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{background:#1f2937;color:#fff;padding:11px 18px;border-radius:10px;font-size:14px;box-shadow:0 6px 20px rgba(0,0,0,.25);animation:tin .25s}
.toast.err{background:var(--red)} .toast.ok{background:var(--green)}
@keyframes tin{from{opacity:0;transform:translateY(10px)}to{opacity:1}}
.back-link{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:14px;margin-bottom:12px;cursor:pointer}
.back-link:hover{color:var(--green)}

/* 填空 */
.fill-row{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.fill-in{display:flex;align-items:center;gap:8px}
.fill-in input{max-width:320px}

/* 段位 / 积分 / 排行榜 */
.tier{display:inline-block;color:#fff;font-size:12px;font-weight:700;padding:3px 10px;border-radius:20px;white-space:nowrap}
.mine-card{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow);flex-wrap:wrap}
.mine-tier{color:#fff;font-weight:800;padding:10px 16px;border-radius:12px;font-size:16px}
.mine-name{font-size:17px;font-weight:700}
.mine-pts{margin-left:auto;text-align:center}.mine-pts b{display:block;font-size:26px;color:var(--green)}.mine-break{width:100%}
.board-podium{display:flex;gap:12px;justify-content:center;align-items:flex-end;margin-bottom:18px;flex-wrap:wrap}
.podium{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 20px;text-align:center;width:180px;box-shadow:var(--shadow);box-sizing:border-box;flex:0 0 auto}
.podium .tier{display:inline-block;margin-top:2px}
.podium-ico{font-size:30px}.podium-name{font-weight:700;margin:4px 0}.podium-pts{color:var(--green);font-weight:800;margin-bottom:6px}
.me-row{background:var(--green-l)!important}

/* 进度条 */
.bar{height:8px;background:#eef1f3;border-radius:20px;overflow:hidden;margin:4px 0 14px}
.bar>i{display:block;height:100%;background:var(--green);border-radius:20px}
.bar.big{height:12px}

/* 关卡地图 */
.levelmap{display:flex;flex-direction:column;gap:12px}
.lv-node{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-left:5px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow);cursor:pointer;transition:.15s}
.lv-node.cur{border-left-color:var(--green)}.lv-node.done{border-left-color:#94d3b8}.lv-node.lock{opacity:.6;cursor:not-allowed}
.lv-node:not(.lock):hover{transform:translateX(3px);border-color:var(--green)}
.lv-no{width:38px;height:38px;flex-shrink:0;border-radius:50%;background:var(--green-l);color:var(--green);font-weight:800;display:flex;align-items:center;justify-content:center}
.lv-node.done .lv-no{background:var(--green);color:#fff}.lv-node.lock .lv-no{background:#eceff1;color:#b0b7bd}
.lv-body{flex:1;min-width:0}.lv-title{font-weight:700;margin-bottom:4px}.lv-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lv-state{font-size:12px;font-weight:700}.lv-state.done{color:var(--green)}.lv-state.cur{color:var(--amber)}.lv-state.lock{color:#b0b7bd}
.lv-content{white-space:normal}
.ord{display:flex;gap:4px;margin-top:4px}

/* 门户 */
.portal-wrap{max-width:1040px;margin:0 auto;padding:34px 20px}
.portal-hero h1{font-size:24px}
.portal-hero p{margin-top:4px}
.portal-hero{margin:0 0 14px}
.ph-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:30px}
.ph-greet{font-size:19px;font-weight:800;color:var(--ink);white-space:nowrap}
.ph-id{margin-left:auto;white-space:nowrap}
.ph-row .ph-welcome{margin-top:0;display:inline-block;background:#f4faf7;border:1px solid #d3e6dc;border-left:4px solid var(--green,#187E66);border-radius:10px;padding:5px 12px;font-size:14.5px;font-weight:600;color:#1d4a3d;line-height:1.55}
/* 门户欢迎语（暖心一句） */
.hero-welcome{display:inline-block;margin-top:10px;background:#f4faf7;border:1px solid #d3e6dc;border-left:4px solid var(--green,#187E66);border-radius:10px;padding:8px 14px;font-size:14px;color:#1d4a3d;line-height:1.6}
.w-chips{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.w-chip{display:flex;align-items:flex-start;gap:8px;text-align:left;border:1px solid #dcebe4;background:#fbfdfc;border-radius:10px;padding:10px 12px;font-size:13.5px;color:#25443b;cursor:pointer;line-height:1.55}
.w-chip:hover{border-color:var(--green,#187E66);background:#f2f8f5}
.w-no{flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:#eaf4ef;color:#187E66;font-weight:800;font-size:11px;display:flex;align-items:center;justify-content:center;margin-top:1px}
.w-pv{max-width:100%}
.w-rows{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.w-row{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #dcebe4;border-radius:10px;padding:10px 12px}
.w-row.off{opacity:.6;background:#f8faf9}
.w-row .w-txt{flex:1;min-width:0;font-size:14px;color:#25443b;line-height:1.5}
.w-row .w-btns{display:flex;gap:6px;flex-shrink:0}
@media(max-width:760px){.w-chips{grid-template-columns:1fr}}
.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin-top:24px}
.portal-card{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:22px 22px 20px;box-shadow:0 1px 2px rgba(16,40,32,.04);color:var(--ink);position:relative;overflow:hidden;transition:.18s}
.portal-card::before{content:'';position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--green),#43b596)}
.portal-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(24,126,102,.12)}
.pc-ico{width:46px;height:46px;border-radius:13px;background:var(--green-l);display:flex;align-items:center;justify-content:center;font-size:24px;margin-bottom:14px}
.pc-title{font-size:17px;font-weight:800;margin-bottom:6px;color:var(--ink)}
.pc-desc{color:var(--muted);font-size:13px;min-height:40px;line-height:1.65}
.pc-go{display:inline-flex;align-items:center;gap:4px;margin-top:14px;color:var(--green);font-weight:700;font-size:13px;background:var(--green-l);padding:6px 13px;border-radius:var(--r-pill)}
.portal-card.soon{background:#fbfdfc;border-style:dashed;color:var(--muted);box-shadow:none}
.portal-card.soon::before{background:#cdd9d4}
.portal-card.soon .pc-ico{background:#eef3f1;filter:grayscale(.5);opacity:.85}
.portal-card.soon .pc-title{color:#6b7a74}
.pc-soon{display:inline-block;margin-top:14px;font-size:12px;color:var(--muted);background:#eef3f1;border-radius:var(--r-pill);padding:5px 12px}

/* 定向选择 */
.chk{display:inline-flex;align-items:center;gap:6px;font-size:14px;margin-right:14px;font-weight:400;color:var(--ink)}
.chk input{width:auto}
.chipbox{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.chipbox .pill{font-size:12px}

/* 绩效 */
input[type=range]{padding:0;border:none;height:26px;accent-color:var(--green);flex:1}

/* 组织树 */
.dtree{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:8px}
.dnode .dkids{margin-left:22px;border-left:2px solid var(--green-l);padding-left:14px}
.drow{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:10px 8px;border-bottom:1px dashed var(--line)}
.dnode>.drow:hover{background:#fafcfb}
.dmain{min-width:0}
.dname{font-weight:700;font-size:15px}
.dacts{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}
.duty{color:var(--muted);font-size:13.5px;margin-top:4px;white-space:normal;min-height:40px}
/* 账号树：部门节点下的成员行 */
.ulist{margin:2px 8px 10px 30px;border-left:2px solid var(--green-l);padding-left:10px}
.urow{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;font-size:13px;flex-wrap:wrap}
.urow:hover{background:#fafcfb}
.urow.u-pending{background:#fffaf0}
.urow.u-none{color:var(--muted);font-style:italic}
.urow.u-none:hover{background:none}
.uav{width:26px;height:26px;flex-shrink:0;border-radius:50%;background:var(--green-l);color:var(--green);font-weight:700;display:flex;align-items:center;justify-content:center;font-size:13px}
.u-pending .uav{background:#fff4e0;color:var(--amber)}
.uname{font-weight:700;min-width:60px}
.uacct{color:var(--muted)}
.upos{color:var(--muted);min-width:56px}
.ustat{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.umeta{color:var(--muted)}
.uacts{margin-left:auto;display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}
.u-orphan>.drow .dname{color:var(--amber)}

/* 待审核 */
.pend-banner{background:#fff7e6;border:1px solid #ffe1b0;color:#a5640a;padding:10px 14px;border-radius:10px;margin-bottom:14px;display:flex;align-items:center;gap:6px}
.row-pending{background:#fffaf0}
.pend-chip{display:inline-block;margin:2px 0 18px;background:#fff7e6;border:1px solid #ffe1b0;color:#a5640a;padding:9px 14px;border-radius:10px;font-weight:600}
.pend-chip:hover{border-color:var(--amber)}

@media(max-width:760px){
  .shell{flex-direction:column;gap:14px}
  .sidenav{width:100%;display:flex;overflow-x:auto;gap:6px}
  .sidenav a{white-space:nowrap;margin-bottom:0}
  .row2{grid-template-columns:1fr}
  .modal{padding:18px}
  .board-podium{flex-direction:column;align-items:center}
  .mine-pts{margin-left:0}
  .portal-grid{grid-template-columns:1fr 1fr}
}

/* perf v20 */
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
@media(max-width:640px){.row3{grid-template-columns:1fr}}
.p3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:6px}
@media(max-width:640px){.p3{grid-template-columns:1fr}}
.pcol{background:#f7faf9;border:1px solid var(--line,#e5e5e5);border-radius:8px;padding:8px 10px}
.plabel{font-weight:700;font-size:13px;margin-bottom:6px;color:var(--green)}
.mrow{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:3px 0;border-top:1px dashed #eee}
.mrow:first-of-type{border-top:0}
.mrow span{color:#555;flex:1}
.mrow b{white-space:nowrap}
/* 关系图谱“多胶囊”行（下级 / 在为我服务 / 我在服务）：标签固定列不竖排、人名可换行不溢出 */
.mrow.reflow{align-items:flex-start;flex:0 0 100%;width:100%}
.mrow.reflow span{flex:0 0 8em;min-width:8em;white-space:nowrap;color:#555}
.mrow.reflow b{white-space:normal;text-align:left;flex:1 1 auto;min-width:0;margin-left:0}
.mrow.reflow b .rel-chip,.mrow.reflow b .pill{margin:0 6px 5px 0}
.rel-chip{display:inline-block;white-space:nowrap}

/* collab v22（v44 起全宽自适应：10~14列免横向滚动） */
.shell-wide{max-width:1680px}
.collab-scroll{overflow-x:auto;border:1px solid var(--line,#e5e5e5);border-radius:10px}
table.collab{border-collapse:collapse;width:100%;font-size:13px;min-width:480px}
table.collab th,table.collab td{border:1px solid #eaeaea;padding:5px 5px;text-align:center;white-space:nowrap}
table.collab th{white-space:normal}
table.collab tr.crow-grp th.cgrp{background:var(--green,#187E66);color:#fff;font-weight:700}
table.collab tr.crow-grp th.cgrp-empty{background:#f0f0f0}
table.collab tr.crow-name th.cname{background:#f7f8f8;font-weight:600;position:relative;vertical-align:top;font-size:12px}
table.collab th.csum{background:#eef7f3}
.csumtag{display:block;font-size:10px;color:var(--green,#187E66);font-weight:400}
table.collab th.cfix,table.collab th.clabel,table.collab td.cfix{text-align:left}
table.collab th.cmetric{background:#f7f8f8}
table.collab th.clabel{position:sticky;left:0;background:#fff;z-index:2;width:118px;min-width:90px;text-align:left;font-weight:500;font-size:12px}
.cunit{color:#999;font-size:11px;margin-left:4px}
.ccalctag{display:inline-block;background:#eef7f3;color:var(--green);border-radius:4px;font-size:10px;padding:0 4px;margin-left:6px}
tr.cblockrow td.cblock{background:#fbfaf6;text-align:left;font-weight:700;color:#8a7a4a;padding:7px 10px}
td.cval input.ccell{width:100%;min-width:0;border:1px solid #d9e6e1;border-radius:5px;padding:4px 5px;font:inherit;text-align:right;background:#f4faf8}
td.cval input.ccell:focus{outline:2px solid var(--green,#187E66);background:#fff}
td.ccomputed{background:#f5f5f5;color:#666}
td.cspacer,th.caddcol{border:none;background:transparent}
.cadmin{display:flex;gap:3px;justify-content:center;margin-top:3px}
.cadmin button{border:1px solid #e0e0e0;background:#fff;border-radius:5px;cursor:pointer;font-size:10px;padding:0 4px;line-height:1.4}
.cadmin button:hover{background:#f2f2f2}
.cklist{max-height:200px;overflow:auto;border:1px solid #eee;border-radius:8px;padding:8px}
.ckrow{display:block;padding:3px 2px;font-size:13px;cursor:pointer}
.ckrow input{margin-right:8px}
.toolbar-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* 月度复盘（周表自动汇总） */
table.collab tr.cm-total th,table.collab tr.cm-total td.cval{background:#eef7f3;font-weight:700}
table.collab tr.cm-total th.clabel{background:#e2f0e9}
table.collab th.cwklabel{font-weight:400;color:#667;padding-left:16px;font-size:11.5px;background:#fff!important}

/* === 课程/考试管理：分组 + PDF 阅读器 === */
.grp-head{font-weight:700;font-size:15px;margin:16px 0 8px;color:var(--green);display:flex;align-items:center;gap:6px}
.acgrp,.exgrp{margin-bottom:6px}
.grp-head{padding-left:14px}
/* 分类课程/考试表：固定六列网格，各分类表列宽一致，消除上下错位 */
table.gtbl{table-layout:fixed}
.gtbl th{white-space:nowrap}
.gtbl td{vertical-align:middle}
.gtbl .t-title b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gtbl .t-aud{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gtbl .t-aud .pill{max-width:100%;display:inline-block;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gtbl .t-ops{white-space:normal}
.gtbl .t-ops .btn{margin:1px 4px 1px 0}
.pdf-scroll{height:72vh;overflow:auto;background:#525659;padding:14px;border-radius:8px}
.pdf-page{background:#fff;margin-bottom:10px;box-shadow:0 1px 4px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center}
.pdf-page canvas{display:block;max-width:100%}

/* 绿地球品牌 LOGO（用户原图裁出的三条线，真图全局替换绿底 G） */
.auth-logo{background:#fff;color:transparent;background-image:url('/logo-mark.png');background-size:80%;background-position:center;background-repeat:no-repeat;border:1px solid #dde8e2}

/* ======================================================================
   手机端适配（≤760px）· 全部规则只存在于本媒体查询内，桌面端零影响
   ====================================================================== */
@media (max-width:760px){
  /* 顶栏压缩 */
  .topbar{padding:0 10px;gap:8px;height:54px}
  .topbar .brand{font-size:13px;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}
  .topbar .brand .auth-logo{width:26px;height:26px;font-size:15px;border-radius:7px;flex-shrink:0}
  .topbar .spacer{flex:0 0 4px}
  .user-chip{font-size:12px;gap:6px}
  .user-chip>span{max-width:12vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .avatar{width:26px;height:26px}
  .role-tag{display:none}
  .btn{padding:8px 12px;font-size:13px}
  .btn.sm{min-height:34px}

  /* 侧边导航 → 顶部横滑标签条（粘在顶栏下） */
  .shell{display:block;gap:0;padding:10px 10px calc(28px + env(safe-area-inset-bottom))}
  .sidenav{width:auto;display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:2px 0 10px;margin:0 -10px 8px;padding-left:10px;padding-right:10px;position:sticky;top:54px;background:var(--bg);z-index:16;scrollbar-width:none}
  .sidenav::-webkit-scrollbar{display:none}
  .sidenav a{flex:0 0 auto;margin:0;padding:8px 13px;font-size:13px;white-space:nowrap;background:#fff;border:1px solid var(--line)}
  .sidenav a.active{background:var(--green);color:#fff;border-color:var(--green)}
  .main{min-width:0}

  /* 考试计时条跟随新顶栏高度 */
  .exam-bar{top:54px;padding:8px 12px}

  /* 页头 / 卡片 / 统计 */
  .page-head{margin-bottom:12px}
  .page-head h2{font-size:17px}
  .grid{grid-template-columns:1fr;gap:12px}
  .stats{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
  .stat{padding:10px 6px;text-align:center}
  .stat .n{font-size:19px}
  .stat .l{font-size:11px}

  /* 表单 / 弹窗：单列 + 全屏化，16px 字号防 iOS 聚焦自动放大 */
  .row2,.row3{grid-template-columns:1fr}
  input,select,textarea{font-size:16px}
  .modal-bg{padding:12px 8px}
  .modal{max-width:100%;padding:18px 14px;border-radius:12px}
  .modal h3{font-size:16px;margin-bottom:12px}

  /* 登录页 */
  .auth-wrap{padding:16px 10px}
  .auth-card{max-width:100%;padding:22px 18px}
  .auth-brand h1{font-size:16px}
  .auth-sub{font-size:12px}

  /* 表格：字号收紧 + 惯性横滑（散落表格由 JS 自动补 .tbl-scroll 包裹） */
  th,td{padding:8px 10px;font-size:12.5px;white-space:nowrap}
  .tbl-scroll,.collab-scroll{-webkit-overflow-scrolling:touch}

  /* 排行榜 / 我的卡片 / 关卡 */
  .board-podium{gap:8px}
  .podium{width:150px;padding:12px 10px}
  .mine-card{padding:12px 12px;gap:10px}
  .lv-node{padding:11px 12px;gap:10px}

  /* 组织树：缩进与成员区随屏宽收缩 */
  .dnode .dkids{margin-left:10px;padding-left:8px}
  .ulist{margin-left:12px;padding-left:8px}
  .drow{flex-wrap:wrap}
  .dacts{width:100%}

  /* PDF 阅读器高度适配小屏 */
  .pdf-scroll{height:62vh;padding:8px}
  .doc-frame{height:62vh}

  /* Toast 收窄贴边 */
  #toast{left:10px;right:10px;transform:none;align-items:stretch}
  .toast{text-align:center;font-size:13px}
}

/* prod line sheets v58 */
.sheet-edit{border-collapse:collapse;width:100%;font-size:13px}
.sheet-edit td{border:1px solid var(--line);padding:2px 4px;vertical-align:top}
.sheet-edit .pcell{width:100%;min-width:110px;border:0;background:transparent;padding:6px;font:inherit}
.sheet-edit .pcell:focus{outline:2px solid var(--green);border-radius:4px;background:#fff}
.sheet-edit .sh-hd{background:#f2f8f6;font-weight:700}
.sheet-edit .sh-first{width:1%}
.sheet-edit .sh-ctl{white-space:nowrap}
.sheet-edit .sh-cop{text-align:center;background:#fafcfb}
.sheet-view .sv-cell{white-space:pre-wrap;text-align:left}

/* product line sheets v60 */
.pl-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:12px;background:#fff}
.pl-table th,.pl-table td{border:1px solid #d9e2df;padding:6px 8px;text-align:left;vertical-align:top;word-break:break-word;overflow:hidden}
.pl-table th:first-child,.pl-table td:first-child{width:16%}
.pl-table .pl-hd{background:#f2f8f6;font-weight:700}
.pl-txt{white-space:pre-wrap;word-break:break-word;max-height:86px;overflow:hidden;line-height:1.4;position:relative}
.pl-more{cursor:pointer}
.pl-more::after{content:"展开";position:absolute;right:2px;bottom:0;color:var(--green);font-weight:700;background:#fff;padding-left:8px}
.pl-img{max-height:88px;max-width:100%;object-fit:contain;display:block;background:#fff;border:1px solid #e5e5e5;border-radius:6px;cursor:zoom-in}
.pl-full{white-space:pre-wrap;line-height:1.6;max-height:64vh;overflow:auto}
.pl-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}

/* relmap v63 */
.rel-chip{display:inline-block;margin:2px 4px 2px 0;white-space:normal;text-align:left}

/* pl fullscreen v68 */
#main:fullscreen{display:block;overflow:auto;background:#f6f8f7;padding:18px 24px;width:100%;height:100%}
#main:-webkit-full-screen{display:block;overflow:auto;background:#f6f8f7;padding:18px 24px;width:100%;height:100%}
#main:fullscreen .doc-frame{height:calc(100vh - 190px)}
#main:fullscreen .pl-full{max-height:80vh}

/* pl colwidth & blank-row v70 */
.pl-table.pl-colw th:first-child,.pl-table.pl-colw td:first-child{width:auto}
.pl-colh{position:absolute;top:0;bottom:0;right:-4px;width:9px;cursor:col-resize;z-index:5;touch-action:none}
.pl-colh:hover{background:rgba(24,126,102,.22)}
.pl-table tr.pl-br td{height:5px;padding:0;font-size:0;line-height:5px;background:#fbfcfb}

/* ===== 报价单 v71 ===== */
.qpanels{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
@media(max-width:1080px){.qpanels{grid-template-columns:1fr}}
.qpanel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}
.qpanel-head{font-weight:800;font-size:15px;margin-bottom:10px}
.qrowmine{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line)}
.qrowmine>div{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qrowamt{font-weight:800;color:var(--green);white-space:nowrap}
.qchip{font-size:11px;padding:2px 8px;border-radius:20px;background:#eef2f1;color:var(--muted)}
.qchip.ok{background:#e7f5ee;color:#1a7a4f}
.qchip.err{background:#fdecec;color:#b3261e}
.qchip.up{background:#fff4e0;color:#8a5a00}
/* ===== 运费计算器 v73 ===== */
.fgrid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:10px 14px}
@media(max-width:900px){.fgrid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.fgrid{grid-template-columns:1fr}}
.fup{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px}
.fup-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.ffac{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 12px}
@media(max-width:900px){.ffac{grid-template-columns:1fr 1fr}}
.ffaci{display:flex;gap:6px;align-items:center;font-size:12.5px;background:#f7faf9;border:1px solid var(--line);border-radius:8px;padding:6px 9px;cursor:pointer}
.fres{margin-top:14px;background:#fff;border:1px solid var(--line);border-left:5px solid var(--green);border-radius:12px;overflow:hidden}
.fres-top{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 18px;background:linear-gradient(180deg,#f4faf7,#fff);flex-wrap:wrap}
.fres-who{font-size:16px;font-weight:800}
.fres-total b{display:block;font-size:26px;color:var(--green);text-align:right;line-height:1.1}
.fres-total span{font-size:11px;color:var(--muted);text-align:right}
.fres-body{padding:10px 18px 4px;border-top:1px solid #eef2f0}
.fres-line{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed #eef2f0;font-size:13px}
.fres-line b{white-space:nowrap}
.fres-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 18px;background:#fbfcfb;flex-wrap:wrap}
.rtbl{width:100%;border-collapse:collapse;font-size:13px}
.rtbl th{background:#f4f7f6;text-align:left;padding:7px 8px;font-size:12px;color:var(--muted);position:sticky;top:0;z-index:2}
.rtbl td{border-top:1px solid #eef2f0;padding:4px 6px}
.rtbl input{border:1px solid var(--line);border-radius:6px;padding:5px 7px;width:100%;font-size:13px}
.rtbl input:focus{outline:none;border-color:var(--green)}
/* ===== 诸城生产 v74 ===== */
.zc-tbl{border-collapse:separate;border-spacing:0;font-size:12.5px;min-width:100%}
.zc-tbl th{position:sticky;top:0;z-index:3;background:#202527;color:#fff;font-weight:700;font-size:11.5px;padding:8px 7px;text-align:left;white-space:nowrap;cursor:pointer}
.zc-tbl th.zcsort{background:var(--green)}
.zc-tbl th.zci,.zc-tbl td.zci{width:44px;text-align:center;cursor:default}
.zc-tbl th.zcs,.zc-tbl td.zcs{width:74px;cursor:default}
.zc-tbl th.zcops,.zc-tbl td.zcops{width:44px;cursor:default;text-align:center}
.zc-tbl td{border-bottom:1px solid #eef2f0;padding:5px 7px;vertical-align:top;max-width:340px}
.zc-tbl tbody tr:nth-child(even){background:#fafcfb}
.zc-tbl tbody tr.zc-over{background:#fdf1ef}
.zc-tbl tbody tr.zc-over td.zcs .pill{background:#fde3de;color:#b3261e}
.zcv{display:block;min-height:18px;padding:3px 5px;border-radius:5px;border:1px dashed transparent;cursor:text;white-space:pre-wrap;word-break:break-word}
.zc-tbl tbody tr:hover .zcv{border-color:#cfe0db;background:#fff}
.zcv.zn{text-align:right;font-variant-numeric:tabular-nums}
.zcv i.muted{color:#c3ccc9;font-style:normal}
.zcv input,.zcv select{width:130%;min-width:110px;font-size:13px;padding:3px 5px;border:1px solid var(--green);border-radius:5px;background:#fff}
.qchart{width:100%;height:auto;display:block}
.qchart .ax{font-size:9px;fill:#9aa5a1;text-anchor:end}
.qchart .lb{font-size:9.5px;fill:#5d6a66;text-anchor:middle}
.stat .n.o{color:#e8892b}.stat .n.g{color:#1a7a4f}.stat .n.c{color:#0f8f9c}.stat .n.p{color:#c2457f}.stat .n.r{color:#c0392b}
/* ===== 客户触达素材库 v77 ===== */
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.rcard{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;transition:.15s}
.rcard:hover{border-color:var(--green);box-shadow:0 6px 18px rgba(24,126,102,.10);transform:translateY(-1px)}
.rlink{display:block;height:170px;background:#f6f8f7;border:0;cursor:zoom-in;overflow:hidden}
.rt{width:100%;height:170px;object-fit:cover;display:block}
.rt.big{display:flex;align-items:center;justify-content:center;font-size:52px;height:100%}
.rmeta{padding:9px 11px 2px;flex:1;min-width:0}
.rtt{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ract{display:flex;gap:6px;flex-wrap:wrap;padding:8px 11px 11px}
.rvwrap{position:fixed;inset:0;background:rgba(12,18,16,.86);z-index:999;display:flex;flex-direction:column;padding:14px}
.rvbar{display:flex;align-items:center;gap:10px;color:#fff;padding:0 4px 10px;flex-wrap:wrap}
.rvbar .muted.sm{color:#cfd8d5}
.rvbar .spacer{flex:1}
.rvbody{flex:1;min-height:0;overflow:auto;background:#fff;border-radius:10px;display:flex;align-items:flex-start;justify-content:center;padding:14px}
.rvimg{max-width:100%;height:auto;display:block;margin:0 auto;cursor:zoom-in}
.rvpdf{width:100%;height:100%;min-height:70vh;border:0}
.qtotal-badge{font-size:13px;background:#e7f5ee;color:#1a7a4f;font-weight:700;padding:6px 12px;border-radius:10px}
.qtotal-badge b{font-size:16px}
.qitem{display:flex;gap:10px;padding:12px 0;border-top:1px dashed var(--line)}
.qitem-no{width:26px;height:26px;flex-shrink:0;border-radius:50%;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.qitem-body{flex:1;min-width:0}
.qamt{font-weight:800;color:var(--green);padding:8px 0;font-size:15px}
.qphrow{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-top:4px}
.qphbox{width:96px;height:80px;border:1px dashed var(--line);border-radius:8px;display:flex;align-items:center;justify-content:center;background:#fafbfa;overflow:hidden;flex-shrink:0}
.qmini{max-width:100%;max-height:100%;object-fit:contain}
.qphact{flex:1;min-width:220px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.qphact input[type=text],.qphact input:not([type]){flex:1;min-width:140px}
.qipacts{margin-top:6px;display:flex;gap:8px}
.qmodal-body{max-height:70vh;overflow:auto;background:#eef1f0;padding:14px;border-radius:10px}
/* 单据本体（复刻 Excel 版式） */
.qdoc{background:#fff;color:#202527;font-size:11px;line-height:1.45;padding:18px;border:1px solid #dfe4e2;max-width:1020px;margin:0 auto;font-family:Arial,"Microsoft YaHei",sans-serif}
.qdoc .qhead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;min-height:66px}
.qdoc .qlogo{max-height:64px;width:auto;object-fit:contain}
.qdoc .qtitles{text-align:right}
.qdoc .qt1{font-size:24px;font-weight:800;letter-spacing:.5px;color:#202527}
.qdoc .qt2{font-size:13px;font-weight:800;color:#16885b;letter-spacing:2px;margin-top:2px}
.qdoc .qletter{background:#202527;color:#fff;font-size:9.5px;text-align:center;padding:6px 8px;margin:8px 0 12px;font-weight:700}
.qdoc .qblocks{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
@media(max-width:760px){.qdoc .qblocks{grid-template-columns:1fr}}
.qdoc .qbar{background:#16885b;color:#fff;font-weight:800;font-size:11px;padding:5px 9px;letter-spacing:.4px}
.qdoc table.qkv{width:100%;border-collapse:collapse;margin-top:-1px}
.qdoc table.qkv td{border:1px solid #dfe4e2;padding:5px 8px;font-size:11px;vertical-align:top}
.qdoc table.qkv td.ql{background:#eaf5ef;font-weight:800;width:112px;color:#202527;white-space:nowrap}
.qdoc table.qkv td.qv{color:#1565c0;word-break:break-word}
.qdoc table.qitems{width:100%;border-collapse:collapse;font-size:10px}
.qdoc table.qitems th{background:#202527;color:#fff;font-weight:800;padding:6px 4px;text-align:center;border:1px solid #202527;white-space:pre-line;font-size:9.5px}
.qdoc table.qitems td{border:1px solid #dfe4e2;padding:6px 5px;vertical-align:top;word-break:break-word}
.qdoc table.qitems td.qi{text-align:center;width:34px;font-weight:700}
.qdoc table.qitems td.qp,.qdoc table.qitems td.qs{white-space:pre-line;text-align:left}
.qdoc table.qitems td.qs{color:#39433f}
.qdoc table.qitems td.qn{text-align:center;white-space:nowrap}
.qdoc table.qitems td.qph{text-align:center;background:#f6f8f7;color:#66736d;font-size:9px}
.qdoc table.qitems td.qph img{max-height:78px;max-width:110px;object-fit:contain;display:block;margin:0 auto}
.qdoc table.qitems tfoot td.qtotal{background:#16885b;color:#fff;font-weight:800;font-size:14px;text-align:right;padding:8px 10px;border:1px solid #16885b;white-space:nowrap}
.qdoc table.qitems tfoot td{background:#16885b;border:1px solid #16885b}
.qdoc .qnote{font-size:10.5px;padding:7px 9px;border:1px dashed #c9d3cf;border-radius:6px;margin:10px 0;white-space:pre-line;color:#39433f}
.qdoc .qtb{margin-top:12px}
.qdoc table.qterms{width:100%;border-collapse:collapse;margin-top:-1px}
.qdoc table.qterms td{border:1px solid #dfe4e2;padding:5px 8px;font-size:10.5px;vertical-align:top}
.qdoc table.qterms td.ql{background:#eaf5ef;font-weight:800;width:140px;white-space:nowrap}
.qdoc table.qterms td.qtv{white-space:pre-line}
.qdoc .qsign{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}
.qdoc .qsb{background:#f6f8f7;border:1px solid #e6ebe8;color:#66736d;font-size:10px;padding:10px;min-height:86px;white-space:pre-line}
.qdoc .qsb.qsr{text-align:right;font-weight:700;color:#39433f}
.qdoc .qsn{margin-top:6px;color:#202527;font-weight:700}
.qdoc .qfoot{background:#202527;color:#fff;font-size:10px;font-weight:800;text-align:center;padding:7px 8px;letter-spacing:.3px;white-space:pre-line}
.qdoc .qthanks{color:#16885b;font-size:10px;text-align:center;padding:8px 4px 2px;font-weight:700}
@media print{body *{visibility:hidden}.qdoc,.qdoc *{visibility:visible}.qdoc{position:absolute;left:0;top:0;width:100%;max-width:none;border:0;padding:0}.modal-bg,.qmodal-body{position:static !important;display:block !important;overflow:visible !important;background:none !important;padding:0 !important;max-height:none !important}.modal{box-shadow:none !important;max-width:none !important}}
/* ================= 案例分享 CASES ================= */
.casegrid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-top:4px;max-width:1420px}
.casecard{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:.15s;position:relative}
.casecard:hover{box-shadow:0 8px 22px rgba(24,126,102,.12)}
.casecard.on{border-color:var(--green,#187E66);box-shadow:0 0 0 2px rgba(24,126,102,.35)}
.cc-imgs{position:relative;aspect-ratio:4/3;background:linear-gradient(135deg,#eef4f1,#dcece5);display:flex}
.cc-imgs img{width:100%;height:100%;object-fit:cover;display:block}
.cc-imgs img+img{margin-left:1px}
.cc-noimg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#9bb0a8;font-size:13px}
.cc-pick{position:absolute;top:8px;left:8px;background:rgba(255,255,255,.94);border:1px solid #cfe0db;border-radius:20px;padding:3px 9px;font-size:12px;font-weight:600;color:#256a58;display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.cc-pick input{width:auto;margin:0}
.cc-body{padding:11px 13px;display:flex;flex-direction:column;gap:4px;flex:1;min-height:0}
.cc-name{font-size:15px;font-weight:800;color:#1f2c28;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-meta{font-size:12.5px;color:#4b5b55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-prods{display:flex;gap:4px;flex-wrap:nowrap;overflow:hidden;height:20px}
.cc-prods .cd-tag{flex-shrink:0}
.cd-tag{background:#eaf4ef;color:#187E66;border-radius:6px;padding:1px 7px;font-size:11.5px;font-weight:600}
.cc-note{font-size:12.5px;color:#5c6f68;background:#f6f8f7;border-radius:8px;padding:6px 8px;white-space:pre-wrap}
.cc-foot{margin-top:auto;display:flex;align-items:center;gap:8px;padding-top:6px;border-top:1px dashed #eef3f1}
.cc-acts{margin-left:auto;display:flex;gap:6px}
.cc-dimgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:12px 0}
.cc-dimg{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#f6f8f7}
.cc-dimg img{width:100%;display:block}
.cd-note-box{background:#f6f8f7;border:1px solid #e6ebe8;border-radius:10px;padding:10px 12px;color:#39433f;font-size:13px;white-space:pre-wrap;margin-top:6px}
/* 上传表单 */
.cd-prodchips{display:flex;flex-wrap:wrap;gap:7px}
.cd-prodchip{border:1px solid #cfe0db;background:#fff;color:#33413d;border-radius:20px;padding:5px 13px;font-size:13px;cursor:pointer}
.cd-prodchip.on{background:var(--green,#187E66);color:#fff;border-color:var(--green,#187E66)}
.cd-imgbox{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0}
.cd-thumb{position:relative;width:120px;height:90px;border-radius:10px;overflow:hidden;border:1px solid var(--line)}
.cd-thumb img{width:100%;height:100%;object-fit:cover}
.cd-thumb button{position:absolute;top:3px;right:3px;border:0;background:rgba(0,0,0,.55);color:#fff;border-radius:6px;width:20px;height:20px;cursor:pointer}
/* 对外预览（绿地球案例模板） */
.casedoc{max-width:1080px;font-size:13px;padding:22px}
.casedoc .cd-head{display:flex;align-items:center;gap:12px;border-bottom:3px solid #16885b;padding-bottom:10px}
.casedoc .cd-logo{height:46px;width:auto;object-fit:contain}
.casedoc .cd-t1{font-size:22px;font-weight:800;color:#202527;letter-spacing:.5px}
.casedoc .cd-t2{font-size:13px;font-weight:700;color:#16885b;letter-spacing:2px}
.casedoc .cd-sub{margin:10px 0;color:#4b5b55;font-size:12px}
.casedoc .cd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.casedoc .cd-card{border:1px solid #dfe4e2;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;background:#fff}
.casedoc .cd-imgs{display:flex;gap:2px;background:#eef4f1}
.casedoc .cd-imgs img{flex:1;min-width:0;aspect-ratio:1/1;object-fit:cover;height:auto}
.casedoc .cd-name{font-weight:800;color:#202527;padding:9px 11px 2px;font-size:14px;line-height:1.3}
.casedoc .cd-addr{color:#16885b;font-weight:700;padding:0 11px 10px;font-size:12px}
.casedoc .cd-inc{margin-top:18px}
.casedoc .cd-inc-title{background:#eaf5ef;color:#16885b;font-weight:800;font-size:13px;padding:7px 12px;border-radius:8px 8px 0 0}
.casedoc .cd-inc-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:0;border:1px solid #dfe4e2;border-top:0;border-radius:0 0 8px 8px;overflow:hidden}
.casedoc .cd-inc-item{display:flex;justify-content:space-between;gap:10px;padding:8px 12px;border-bottom:1px solid #eef3f1;font-size:12.5px}
.casedoc .cd-inc-item b{color:#202527;font-weight:700}
.casedoc .cd-inc-item span{color:#7a8a85;white-space:nowrap}
.casedoc .cd-foot{background:#202527;color:#fff;font-size:11px;font-weight:800;text-align:center;padding:8px;margin-top:16px;letter-spacing:.3px;border-radius:8px}
.cd-ctl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#f6f8f7;border:1px solid #e6ebe8;border-radius:10px;padding:8px 12px;margin:8px 0}
.cd-ctl select{padding:5px 9px;border:1px solid #cfe0db;border-radius:8px;font-size:13px}
@media print{.casedoc,.casedoc *{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
/* ===== 员工关系 ER ===== */
.ct-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
.ct-cols.ct-mine{margin-top:2px}
.ct-status{display:flex;align-items:center;gap:10px}
.ct-badge{font-size:13px;font-weight:800;border-radius:8px;padding:4px 12px;background:#eaf4ef;color:#187E66}
.ct-badge.st-试用期{background:#fff2d6;color:#b26a00}
.ct-badge.st-兼职{background:#e8f0fe;color:#1565c0}
.ct-std{margin-top:10px;border:1px solid #e6ebe8;border-radius:10px;padding:10px 12px;font-size:13.5px;line-height:1.7;color:#2a352f}
.ct-std b{display:block;margin-bottom:4px;color:#20302b}
.ct-std-prob{border-left:4px solid #b26a00;background:#fffdf6}
.ct-std>.muted{color:#8a9a94}
.ct-doc-row{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid #f2f6f4}
.ct-doc-m{flex:1;min-width:0;display:flex;flex-direction:column}
.ct-doc-row .btn{flex-shrink:0}
.ct-confirm{margin-top:10px;padding:12px 14px;border:1px dashed #c9d6d1;border-radius:10px;background:#fbfdfc}
.ct-confirm textarea{resize:vertical;font-family:inherit}
.pf-sec{margin:8px 0 12px}
.pf-tick{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;cursor:pointer}
tr.sv-dim{opacity:.5;background:#fafaf7}
.ct-mgmt .ct-cols{margin-top:2px}
.ct-seal-mini{width:44px;height:44px;object-fit:contain;background:#fff;border:1px solid #eef3f1;border-radius:8px;flex-shrink:0}
.ct-mgmt .section-title{margin-top:12px}
/* 合同纸面（复用 .qdoc 打印） */
.casedoc{max-width:900px}
.casedoc .ct-brand,.qdoc .ct-brand{font-weight:800;color:#16885b;letter-spacing:1px;font-size:13px}
.qdoc .ct-logo{display:inline-flex;width:20px;height:20px;background:#16885b;color:#fff;border-radius:5px;align-items:center;justify-content:center;margin-right:6px;vertical-align:middle;font-size:12px}
.qdoc .ct-title{text-align:center;font-size:22px;margin:16px 0 18px;color:#202527}
.qdoc .ct-body{font-size:13px;line-height:1.95;color:#25312c}
.qdoc .ctv{color:#1565c0;font-weight:700}
.qdoc .ctv-e{color:#98a49f}
.qdoc .ct-signs{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:30px}
.qdoc .ct-sign-k{font-weight:800;border-bottom:1px solid #dfe4e2;padding-bottom:5px;margin-bottom:16px;color:#202527}
.qdoc .ct-seal{width:112px;height:auto;display:block}
.qdoc .ct-underline{display:inline-block;border-bottom:1px solid #202527;padding:0 26px}
.qdoc .ct-foot{margin-top:26px;color:#7a8a85;font-size:11px;text-align:center;border-top:1px solid #dfe4e2;padding-top:10px}
/* 模板 / 推送 表单 */
.tp-frow{display:flex;align-items:center;gap:7px;margin:5px 0;flex-wrap:wrap}
.tp-frow input[type=text],.tp-frow input:not([type]){border:1px solid #cfe0db;border-radius:8px;padding:6px 9px;font-size:13px;flex:1 1 130px;min-width:110px}
.tp-tok{border:1px dashed #9dbcb0;background:#f2f8f5;color:#1565c0;border-radius:6px;padding:3px 8px;font-size:12px;cursor:pointer;font-weight:700}
.tp-tok:hover{background:#e7f3ee}
.tp-frow label{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#5c6f68;font-weight:400}
.pf-row{display:flex;align-items:center;gap:8px;margin:6px 0}
.pf-row label{width:150px;flex-shrink:0;font-size:13px;color:#2a352f}
.pf-row input{flex:1}
/* ===== 任务日历 · 甘特 ===== */
.cal-wrap{position:relative;padding:0 14px;min-width:660px}
.gt-head,.gt-row{display:flex;align-items:stretch;border-bottom:1px solid #f2f6f4}
.gt-head{background:#fff;z-index:2;border-bottom:1.5px solid #e6eeeb}
.gt-name{width:150px;flex:0 0 150px;display:flex;flex-direction:column;justify-content:center;padding:6px 10px 6px 0;min-width:0}
.gt-name b{font-size:12.5px;color:#20302b;font-weight:700}
.gt-days{flex:1;display:flex}
.gt-dh{flex:1;text-align:center;padding:4px 0;border-left:1px solid #f4f8f6;font-size:10px;color:#9aa8a3;min-width:0}
.gt-dh i{display:block;font-style:normal;font-size:11.5px;font-weight:700;color:#5c6f68;width:22px;margin:0 auto;border-radius:6px}
.gt-dh.we{background:#fafcfb}
.gt-dh.we i{color:#b3bdba}
.gt-dh.today i{background:#187E66;color:#fff}
.gt-track{flex:1;position:relative;height:36px;background:#fbfdfc;border-radius:4px}
.gt-nowline{position:absolute;top:0;bottom:0;width:0;border-left:1.5px dashed rgba(229,72,77,.6);z-index:1}
.gt-bar{position:absolute;top:7px;height:22px;border-radius:11px;display:flex;align-items:center;padding:0 9px;cursor:pointer;color:#fff;font-size:11px;overflow:hidden;box-shadow:0 1px 4px rgba(20,40,35,.25);z-index:2;min-width:14px}
.gt-bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gt-bar.ok{background:#187E66}.gt-bar.pend{background:#e69138}.gt-bar.over{background:#e5484d}.gt-bar.rej{background:#9aa8a3}
.gt-bar.gt-cont-l{border-top-left-radius:2px;border-bottom-left-radius:2px}
.gt-bar.gt-cont-r{border-top-right-radius:2px;border-bottom-right-radius:2px}
.gt-legend{display:flex;align-items:center;gap:14px;font-size:12px;color:#5c6f68;padding:8px 0 6px;flex-wrap:wrap}
.gt-legend .d{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:4px}
.d.over{background:#e5484d}.d.pend{background:#e69138}.d.ok{background:#187E66}.d.rej{background:#9aa8a3}
/* 月历网格视图（任务日历主视图） */
.mcal{border:1px solid #e6eeeb;border-radius:12px;overflow:hidden;background:#fff}
.mcal-wd{display:grid;grid-template-columns:repeat(7,1fr);background:#f4f8f6;border-bottom:1px solid #eef3f1}
.mcal-wd>div{text-align:center;font-size:12px;font-weight:700;color:#7a8a85;padding:8px 0}
.mcal-wd>div.we{color:#b26a00}
.mcal-bd{display:grid;grid-template-columns:repeat(7,1fr)}
.mcell{border-right:1px solid #f2f6f4;border-bottom:1px solid #f2f6f4;min-height:92px;padding:5px 6px;display:flex;flex-direction:column;gap:4px;overflow:hidden}
.mcell:nth-child(7n){border-right:none}
.mcell.we{background:#fbfdfc}
.mcell.out{background:#f7faf9;color:#c3cfca}
.mcell i.md{font-style:normal;font-size:12px;font-weight:700;color:#5c6f68;height:22px;min-width:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;align-self:flex-start}
.mcell.out i.md{color:#c3cfca}
.mcell.today i.md{background:#187E66;color:#fff}
.mcal-evs{display:flex;flex-direction:column;gap:3px;min-width:0}
.gt-ev{display:block;font-size:11px;line-height:1.35;font-weight:600;color:#fff;border-radius:5px;padding:2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;box-shadow:0 1px 2px rgba(20,40,35,.18)}
.gt-ev.ok{background:#187E66}.gt-ev.pend{background:#e69138}.gt-ev.over{background:#e5484d}.gt-ev.rej{background:#9aa8a3}
.gt-ev.cont{opacity:.85;padding-left:12px}
.gt-ev.cont::before{content:'→ ';opacity:.7}
.gt-more{font-size:10.5px;color:#7a8a85;padding-left:2px}
@media (max-width:760px){.mcell{min-height:64px;padding:4px}.gt-ev{font-size:10px}.mcal-wd>div{font-size:11px}}
/* 旧横排甘特（已弃用，保留兼容） */
.gt-tip{position:fixed;z-index:9999;max-width:350px;background:#1c2b26;color:#eef6f2;border-radius:12px;padding:12px 14px;font-size:12.5px;line-height:1.6;box-shadow:0 12px 32px rgba(0,0,0,.32);pointer-events:none}
.gtt-t{font-size:14px;display:block;margin-bottom:2px}
.gtt-meta,.gtt-when{color:#bcd4cb;margin:2px 0}
.gtt-d{background:rgba(255,255,255,.08);border-radius:8px;padding:6px 9px;margin:6px 0}
.gtt-ms{margin:4px 0}
.gtt-mr{display:grid;grid-template-columns:18px 1fr auto auto;gap:7px;align-items:center;padding:2px 0}
.gtt-mr i{font-style:normal;width:16px;height:16px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:10px}
.gtt-mr em{font-style:normal;color:#bcd4cb}
.gtt-fb{margin-top:3px;color:#d8e8e0}
.gtt-cnt{color:#8fb3a5;margin-top:6px}
.gtt-go{margin-top:6px;color:#8fb3a5}
@media(max-width:760px){.ct-cols{grid-template-columns:1fr}.pf-row{flex-direction:column;align-items:stretch}.pf-row label{width:auto}.qdoc .ct-signs{grid-template-columns:1fr}}
/* ===== 学员培训门户（学习中心 / 课程 / 考试 / 成绩） ===== */
.lc-hero{background:linear-gradient(135deg,#0f5a48,#187E66 58%,#2fae8c);border-radius:18px;color:#fff;padding:24px 28px;display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;box-shadow:0 12px 28px rgba(24,126,102,.28)}
.lc-hero-l{flex:1;min-width:260px}
.lc-hero h1{font-size:24px;margin:0 0 8px}
.lc-hero p{margin:0 0 12px;opacity:.88;font-size:13.5px;max-width:560px;line-height:1.7}
.lc-hero-chips{display:flex;gap:8px;flex-wrap:wrap}
.lc-chip{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:600}
.lc-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lc-stat{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:12px 18px;text-align:center;min-width:92px}
.lc-stat b{display:block;font-size:26px;line-height:1.2}
.lc-stat span{font-size:11.5px;opacity:.85}
.lc-cont{margin-top:16px;background:#fff;border:1px solid #e6eeeb;border-left:5px solid var(--green,#187E66);border-radius:12px;padding:12px 16px;display:flex;align-items:center;gap:12px;cursor:pointer}
.lc-cont:hover{box-shadow:0 6px 16px rgba(24,126,102,.14)}
.lc-cont-ic{width:34px;height:34px;border-radius:10px;background:#eaf4ef;color:#187E66;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.lc-cont-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.lc-cont-m b{font-size:13px;color:#187E66}
.lc-cont-m span{font-size:13.5px;color:#20302b;font-weight:600}
.lc-cont-go{color:#8a9a94;font-size:12.5px;flex-shrink:0}
.lc-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:16px}
.lc-quick .q{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px 15px;cursor:pointer;font-weight:700;color:#20302b;transition:.15s;font-size:14px}
.lc-quick .q:hover{border-color:var(--green,#187E66);box-shadow:0 6px 16px rgba(24,126,102,.12);transform:translateY(-2px)}
.lc-quick .q i{font-style:normal;font-size:22px}
.lc-quick .q small{display:block;font-weight:400;color:#8a9a94;font-size:11.5px;margin-top:1px}
.lc-banner{display:flex;gap:10px;align-items:center;background:#eef7f2;border:1px solid #d8eade;border-radius:12px;padding:10px 14px;margin:14px 0 4px;font-size:13px;color:#2a4a3f}
.lc-banner>span{font-size:20px}
.lc-banner b{color:#187E66}
/* 课程卡 */
.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:10px}
.course-card{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:.15s}
.course-card:hover{box-shadow:0 10px 24px rgba(24,126,102,.15);transform:translateY(-3px)}
.cc-cover{height:112px;background:linear-gradient(135deg,#e8f3ee,#d7eae2);display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:800;color:#187E66;background-size:cover;background-position:center}
.cc-cover.has{color:transparent}
.cc-body{padding:12px 14px;display:flex;flex-direction:column;gap:8px;flex:1}
.cc-title{font-size:15px;font-weight:800;color:#20302b;line-height:1.35}
.cc-meta{display:flex;flex-wrap:wrap;gap:5px}
.pill.cat{background:#eaf4ef;color:#187E66;font-weight:700}
.cc-prog{display:flex;align-items:center;gap:8px;font-size:11.5px;color:#7a8a85}
.cc-prog .pbar{flex:1;margin:0}
.cc-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;padding-top:8px}
.cat-block{margin-top:20px}
.cat-title{display:flex;align-items:center;gap:8px;font-size:15.5px;font-weight:800;color:#1d2b26;margin-bottom:6px}
.cat-title .cnt{font-size:12px;color:#8a9a94;font-weight:400}
/* 考试卡 */
.exam-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:10px}
.exam-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:9px;transition:.15s}
.exam-card:hover{box-shadow:0 10px 24px rgba(24,126,102,.15);transform:translateY(-3px)}
.ec-top{display:flex;align-items:center;gap:10px}
.ec-ico{width:38px;height:38px;border-radius:12px;background:#eaf4ef;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0}
.ec-t{min-width:0;flex:1;display:flex;flex-direction:column}
.ec-t b{font-size:15px;color:#20302b}
.ec-score{font-size:13px;color:#5c6f68;background:#f8fbf9;border-radius:8px;padding:6px 10px}
.ec-score b{font-size:18px}
/* 成绩卡 */
.rec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-top:10px}
.rec-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;position:relative}
.rec-card>.ec-t{flex:1;min-width:120px}
.rec-score{font-size:26px;font-weight:800;line-height:1}
.rec-score span{font-size:12px;font-weight:400;margin-left:2px}
.rec-score.ok{color:#187E66}.rec-score.no{color:#e5484d}
.rec-pill{position:absolute;right:12px;bottom:10px}
@media(max-width:960px){.lc-quick{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.lc-hero{padding:18px}.lc-stats{grid-template-columns:repeat(4,1fr);width:100%}.lc-quick{grid-template-columns:1fr}}
/* ===== 入职旅程 ===== */
.jn-hero{margin-top:6px;background:linear-gradient(135deg,#0f5a48,#187E66);border-radius:16px;color:#fff;padding:16px 20px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.jn-hero b{display:block;font-size:16px;margin-bottom:2px}
.jn-hero span{font-size:12.5px;opacity:.85}
.jn-hero-bar{flex:1;min-width:180px;background:rgba(255,255,255,.25)!important}
.jn-hero-bar i{background:#fff!important}
.jn-list{margin-top:16px}
.jn-step{display:flex;gap:12px}
.jn-dotwrap{display:flex;flex-direction:column;align-items:center;width:34px;flex-shrink:0}
.jn-dot{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;background:#eef3f1;color:#8a9a94;border:2px solid #dcebe4;flex-shrink:0}
.jn-step.done .jn-dot{background:#187E66;color:#fff;border-color:#187E66}
.jn-step.cur .jn-dot{background:#187E66;color:#fff;border-color:#187E66;box-shadow:0 0 0 4px rgba(24,126,102,.18)}
.jn-line{flex:1;width:2px;background:#e2ece7;margin:5px 0}
.jn-card{flex:1;min-width:0;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin-bottom:14px}
.jn-step.lock .jn-card{opacity:.6;background:#fafcfb}
.jn-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.jn-head b{font-size:15.5px;color:#20302b}
.jn-day{background:#eaf4ef;color:#187E66;font-size:12px;font-weight:800;border-radius:999px;padding:2px 10px;flex-shrink:0}
.jn-hint{margin-top:6px;font-size:12.5px;color:#b26a00;background:#fff8ec;border:1px dashed #f0d9a8;border-radius:8px;padding:5px 10px}
.jn-items{margin-top:8px;border-top:1px dashed #eef3f1;padding-top:6px}
.jn-item{display:flex;align-items:center;gap:9px;padding:5px 2px}
.jn-ic{width:22px;text-align:center;flex-shrink:0}
.jn-nm{flex:1;min-width:0;font-size:13.5px;color:#25312c}
.jn-st{font-size:12px;color:#187E66;font-weight:700;flex-shrink:0}
.jn-item .btn{flex-shrink:0}
.jn-admin{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.jn-admin-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 14px}
.jn-admin-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.jn-admin-m>b{font-size:14.5px;color:#20302b}
.jn-admin-items{display:flex;flex-direction:column;gap:1px}
.jn-admin-items i{font-style:normal;font-size:12px;color:#5c6f68;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jn-admin-b{display:flex;gap:6px;flex-shrink:0}
.jn-picks{max-height:150px;overflow:auto;border:1px solid #cfe0db;border-radius:8px;padding:6px 12px}
.jn-picks label{display:flex;align-items:center;gap:7px;padding:4px 0;border-bottom:1px solid #f0f4f3;cursor:pointer;font-weight:400;font-size:13px}
.jn-picks input[type=checkbox]{width:auto}


/* ================= zc v70：生产任务看板 / 订单排产 / 自定义驾驶舱 ================= */
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start;margin-top:4px}
.dash-blk{position:relative;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.dash-blk.dash-full{grid-column:1/-1}
.dash-acts{position:absolute;top:-11px;right:10px;display:flex;gap:4px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:2px 5px;z-index:3}
.dash-stats{grid-template-columns:repeat(auto-fit,minmax(118px,1fr))!important;gap:10px!important;margin:0!important}
.dash-picks{display:flex;flex-wrap:wrap;gap:6px 14px}
.dash-pick{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);cursor:pointer}
.dash-cur{display:flex;flex-wrap:wrap;gap:6px}
.pill.r{background:#fdecea;color:#c0392b}
.pill.g{background:#eef2f0;color:#6b7a75}
/* 生产任务看板 */
.zcdone{text-align:center;width:52px}
.zcdone input{width:16px;height:16px;cursor:pointer}
.zc-late{color:#c0392b;font-weight:700}
/* 订单排产 */
.sc-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:start}
.sc-tbl{border-collapse:separate;border-spacing:0;width:100%;font-size:12px;background:#fff;min-width:760px}
.sc-tbl th,.sc-tbl td{border:1px solid #e3e9e7;padding:4px 6px;vertical-align:top;text-align:left}
.sc-tbl thead th{position:sticky;top:0;background:#f6faf9;z-index:2;text-align:center;min-width:110px}
.sc-tbl td{height:34px;min-width:110px}
.sc-date{position:sticky;left:0;background:#fbfdfc;white-space:nowrap;font-weight:600;z-index:1;width:92px;min-width:92px}
.sc-tbl thead .sc-date{z-index:4}
.sc-tbl .sc-today td{background:#f1faf6}
.sc-tbl .sc-we td:not(.sc-date){background:#fafbfb}
.sc-chip{display:inline-block;color:#fff;border-radius:6px;padding:2px 6px;margin:1px 0;font-size:11px;cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.5}
.sc-chip i{opacity:.8;font-style:normal}
.sc-side{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;max-height:74vh;overflow:auto}
.sc-prow{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #f0f4f3;font-size:12.5px}
.sc-prow .btn{margin-left:auto;flex-shrink:0}
.sc-in{opacity:.5}
@media (max-width:760px){
.dash-grid{grid-template-columns:1fr}
.sc-layout{grid-template-columns:1fr}
.dash-acts{top:6px}
}

/* ================= v81：胶囊选择器选中态 + 送达层级 ================= */
.pill.btn.active{background:var(--green)!important;border-color:var(--green)!important;color:#fff!important;font-weight:700}
.pill.btn.active .muted{color:rgba(255,255,255,.82)!important}
.f-lv{gap:8px}
.f-lv .pill.btn{padding:7px 12px;font-size:12.5px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.f-lv .pill.btn:hover{border-color:var(--green);color:var(--green)}
.f-lv em{font-style:normal;margin-left:6px;font-weight:800;opacity:.85;font-size:11.5px}
.fres-sum{border-top:1px dashed #d7e2de;margin-top:4px;padding-top:6px;font-weight:700}
.fres-lv{color:var(--green)}
@media (max-width:760px){.f-lv .pill.btn{padding:8px 11px}}


/* 结构化说明书（部门职能/岗位说明书） */
.doc-wrap{margin-top:8px}
.docsec-h{background:var(--green,#187E66);color:#fff;font-weight:700;font-size:13px;padding:7px 13px;border-radius:7px;margin-top:14px}
.docsec-h:first-child{margin-top:0}
.dockv{border:1px solid #e6eeeb;border-radius:0 0 8px 8px;overflow:hidden}
.dk-row{display:grid;grid-template-columns:150px 1fr}
.dk-row+.dk-row{border-top:1px solid #eef3f1}
.dk-k{background:#f4f8f6;color:#256a58;font-weight:600;padding:9px 12px;border-right:1px solid #e6eeeb;line-height:1.5}
.dk-v{padding:9px 12px;color:#2a2f2e;line-height:1.65}
.docblocks{display:flex;flex-direction:column;gap:10px;margin-top:2px}
.docpara{background:#fbfdfc;border:1px solid #eef3f1;border-radius:8px;padding:9px 13px;color:#333;line-height:1.7}
.db-item{display:grid;grid-template-columns:1.25fr 1fr;border:1px solid #e6eeeb;border-radius:9px;overflow:hidden}
.db-k{padding:10px 13px;background:#fff;border-right:1px solid #eef3f1}
.db-v{padding:10px 13px;background:#f8fbfa}
.db-title{font-weight:700;color:#1c3f36;margin-bottom:5px;font-size:13.5px;line-height:1.4}
.dlines{display:flex;flex-direction:column;gap:3px}
.dline{line-height:1.6;color:#2a2f2e}
.dbul{position:relative;padding-left:15px}
.dbul::before{content:"";position:absolute;left:3px;top:8px;width:5px;height:5px;border-radius:50%;background:var(--green,#187E66)}
.dnum{position:relative;padding-left:22px}
.dnumi{position:absolute;left:0;top:0;color:var(--green,#187E66);font-weight:700;font-size:12px;min-width:20px}
@media (max-width:640px){.dk-row{grid-template-columns:104px 1fr}.db-item{grid-template-columns:1fr}.db-k{border-right:0;border-bottom:1px solid #eef3f1}}
.doc-editor{max-height:62vh;overflow:auto;padding-right:4px}
.doc-editor .dse{border:1px solid #dfe7e4;border-radius:10px;padding:10px 12px;margin-bottom:12px;background:#fff}
.doc-editor .dse-head{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.doc-editor .dse-t{flex:1;font-weight:700}
.doc-editor .dse-row{display:flex;gap:8px;align-items:flex-start;margin-bottom:6px}
.doc-editor .dse-k{width:26%;flex-shrink:0}
.doc-editor .dse-v{flex:1;min-height:38px;resize:vertical}
.doc-editor .dse-delrow{flex-shrink:0}
.doc-editor textarea,.doc-editor input{box-sizing:border-box}

/* 组织架构图（自上而下树） */
.org-scroll{overflow-x:auto;padding:6px 4px 18px}
.orgchart{display:inline-block;min-width:100%;text-align:center}
.orgchart,.orgchart ul{margin:0;padding:0;list-style:none}
.orgchart ul{display:flex;justify-content:center;padding-top:18px;position:relative}
.orgchart li{position:relative;padding:18px 10px 0;display:flex;flex-direction:column;align-items:center}
.orgchart li::before,.orgchart li::after{content:"";position:absolute;top:0;right:50%;width:50%;height:18px;border-top:2px solid #cfe0db}
.orgchart li::after{right:auto;left:50%;border-left:2px solid #cfe0db}
.orgchart li:only-child::before,.orgchart li:only-child::after{display:none}
.orgchart li:first-child::before,.orgchart li:last-child::after{border:0 none}
.orgchart li:last-child::before{border-right:2px solid #cfe0db}
.orgchart li:first-child::after{border-radius:0}
.orgchart ul ul::before{content:"";position:absolute;top:0;left:50%;border-left:2px solid #cfe0db;width:0;height:18px}
.ocnode{display:flex;flex-direction:column;align-items:center;background:#fff;border:1.5px solid #b9d6cd;border-radius:10px;padding:8px 8px 7px;width:172px;min-height:66px;box-shadow:0 2px 8px rgba(20,70,60,.06);position:relative}
.ocnode.top{border-color:var(--green,#187E66);background:#eaf6f2}
.oc-name{font-weight:800;color:#1c3f36;font-size:13px;line-height:1.25;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:158px}
.oc-lead{color:var(--muted,#5b6b66);font-size:11.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:158px}
.oc-cnt{display:inline-block;margin-top:4px;font-size:11px;background:#eaf3f0;color:#256a58;border-radius:20px;padding:0 7px}
.oc-cnt.off{background:#f2f2f2;color:#999}
.oc-actions{display:flex;flex-wrap:nowrap;gap:3px;justify-content:center;margin-top:6px;width:100%}
.oc-actions .btn{padding:2px 6px;font-size:11px}
.oc-del{position:absolute;top:-7px;right:-7px;width:19px;height:19px;line-height:17px;padding:0;border-radius:50%;background:#fff;color:#e5484d;border:1.5px solid #f2b8b8;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.oc-del:hover{background:#e5484d;color:#fff}


.share-banner{background:#eaf6f2;border:1px solid #bfe0d4;color:#1c5b49;font-weight:600;font-size:12.5px;padding:8px 13px;border-radius:9px;margin:6px 0 12px}
.otabs{display:flex;gap:8px;border-bottom:2px solid #e6eeeb;margin-bottom:6px}
.otab{border:0;background:none;padding:9px 16px;font-weight:700;font-size:13.5px;color:#5b6b66;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px}
.otab.active{color:var(--green,#187E66);border-bottom-color:var(--green,#187E66)}
/* ===== 站内消息 MESSAGING ===== */
.mlink{color:var(--green,#187E66);cursor:pointer;text-decoration:none;border-bottom:1px dashed #9cc7bb}
.mlink:hover{background:#eaf6f2;border-bottom-color:var(--green)}
.msg-bell{position:relative;margin-right:10px;font-size:20px;cursor:pointer;line-height:1;padding:4px 6px;border-radius:8px}
.msg-bell:hover{background:#eef5f2}
.msg-bell .msg-dot{position:absolute;top:-4px;right:-6px;min-width:16px;height:16px;padding:0 3px;background:#e5484d;color:#fff;font-size:11px;font-weight:700;border-radius:10px;display:flex;align-items:center;justify-content:center}
.msg-bell.blink{animation:msgblink 1.1s ease-in-out infinite}
@keyframes msgblink{0%,100%{transform:none}50%{transform:scale(1.18)}}
.msg-bell.blink .msg-dot{animation:msgdot 1.1s ease-in-out infinite}
@keyframes msgdot{0%,100%{background:#e5484d}50%{background:#ff8080}}
body.msg-lock{overflow:hidden}
.msg-overlay{position:fixed;inset:0;z-index:9000;background:rgba(15,23,32,.34);display:flex;align-items:center;justify-content:center;padding:18px}
#msgApp{width:min(960px,96vw);height:min(680px,92vh);background:#fff;border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.28);display:grid;grid-template-columns:300px 1fr;overflow:hidden}
.msg-col{min-width:0;display:flex;flex-direction:column}
.msg-list{border-right:1px solid #e6eeeb;background:#fafcfb}
.msg-lhead{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid #e6eeeb;font-size:15px}
.msg-lhead .spacer{flex:1}
.msg-lhead .btn{padding:4px 9px;font-size:12px}
.msg-lsearch{padding:8px 12px;border-bottom:1px solid #eef3f1}
.msg-lbody{flex:1;overflow:auto}
.msg-item{display:flex;align-items:center;gap:10px;padding:11px 13px;cursor:pointer;border-bottom:1px solid #f1f5f3}
.msg-item:hover{background:#eef6f2}.msg-item.on{background:#e7f4ef}
.msg-av{width:38px;height:38px;flex-shrink:0;border-radius:50%;background:var(--green,#187E66);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:15px}
.msg-av-sm{width:30px;height:30px;font-size:12px;align-self:flex-end}
.msg-grp-av{width:38px;height:38px;flex-shrink:0;border-radius:9px;background:#dfeee7;display:flex;align-items:center;justify-content:center;font-size:18px}
.msg-item-main{flex:1;min-width:0}
.msg-item-top{display:flex;justify-content:space-between;gap:8px}
.msg-item-top b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-time{color:#8aa39b;font-size:11px;flex-shrink:0}
.msg-item-sub{color:#7a8a85;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.msg-badge{background:#e5484d;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;padding:0 5px;border-radius:10px;display:flex;align-items:center;justify-content:center}
.msg-chat{background:#f4f6f5}
.msg-blank{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9aa8a3;font-size:14px;gap:6px;text-align:center}
.msg-chatbox{display:flex;flex-direction:column;height:100%;min-width:0}
.msg-chead{display:flex;align-items:center;gap:10px;padding:11px 14px;background:#fff;border-bottom:1px solid #e6eeeb}
.msg-chead #msg-back{display:none}
.msg-ch-title{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.msg-ch-title b{font-size:15px}
.msg-ch-title span{font-size:12px}
.msg-msgs{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.msg-row{display:flex;gap:8px;max-width:78%}
.msg-row.me{align-self:flex-end;flex-direction:row-reverse}
.msg-body{display:flex;flex-direction:column}
.msg-from{font-size:11px;color:#7a8a85;margin-bottom:2px}
.msg-bubble{background:#fff;padding:9px 12px;border-radius:12px;font-size:14px;line-height:1.55;box-shadow:0 1px 3px rgba(0,0,0,.06);white-space:normal;word-break:break-word}
.msg-row.me .msg-bubble{background:var(--green,#187E66);color:#fff}
.msg-img{max-width:220px;max-height:220px;border-radius:10px;margin-bottom:4px;cursor:pointer;display:block}
.msg-lightbox{position:fixed;inset:0;z-index:99998;background:rgba(10,18,15,.86);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}
.msg-lightbox img{max-width:92vw;max-height:82vh;border-radius:10px;box-shadow:0 8px 40px rgba(0,0,0,.5);background:#fff;object-fit:contain}
.msg-lightbox-x{position:absolute;top:16px;right:22px;color:#fff;font-size:15px;font-weight:700;background:rgba(255,255,255,.14);padding:6px 12px;border-radius:8px}

/* ===== 全局图片灯箱（站内放大 · Esc/点背景关闭 · 多图切换） ===== */
.lb{position:fixed;inset:0;z-index:99999;background:rgba(10,18,15,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;cursor:zoom-out}
.lb-x{position:absolute;top:16px;right:22px;z-index:2;color:#fff;font-size:15px;font-weight:700;background:rgba(255,255,255,.16);border:none;padding:7px 13px;border-radius:9px;cursor:pointer}
.lb-x:hover{background:rgba(255,255,255,.28)}
.lb-stage{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:100%;cursor:default}
.lb-img{max-width:90vw;max-height:80vh;border-radius:10px;box-shadow:0 10px 46px rgba(0,0,0,.55);background:#fff;object-fit:contain;cursor:pointer}
.lb-prev,.lb-next{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:none;background:rgba(255,255,255,.14);color:#fff;font-size:26px;line-height:1;cursor:pointer;display:none;align-items:center;justify-content:center}
.lb-prev:hover,.lb-next:hover{background:rgba(255,255,255,.3)}
.lb-nav{display:none;margin-top:12px;color:#dfe8e5;font-size:13px;gap:14px;align-items:center}
.lb-count{font-weight:700}
.lb-cap{max-width:80vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-meta{font-size:10.5px;color:#9aa8a3;margin-top:3px}
.msg-row.me .msg-meta{text-align:right}
.msg-input{display:flex;gap:8px;align-items:center;padding:10px 12px;background:#fff;border-top:1px solid #e6eeeb}
.msg-input #msg-text{flex:1;margin:0}
.msg-input .btn{flex-shrink:0}
.dm-row{display:flex;align-items:center;gap:10px;padding:9px 6px;border-bottom:1px solid #f1f5f3;cursor:pointer}
.dm-row:hover{background:#eef6f2}
@media (max-width:760px){
.msg-overlay{padding:0}
#msgApp{width:100vw;height:100vh;border-radius:0;grid-template-columns:1fr}
.msg-list{border-right:0}
.msg-chat{display:none}
#msgApp.show-chat .msg-list{display:none}
#msgApp.show-chat .msg-chat{display:flex}
.msg-chead #msg-back{display:inline-flex}
}
/* ===== 主页沟通面板（微信式） ===== */
.portal2{display:grid;grid-template-columns:312px 1fr;align-items:start;max-width:1320px;margin:0 auto;gap:16px;padding:18px 16px}
.pc-left{position:sticky;top:70px;background:#fff;border:1px solid #e6eeeb;border-radius:14px;overflow:hidden;height:calc(100vh - 92px);display:flex;flex-direction:column}
.pc-comm-h{font-weight:800;font-size:15px;padding:13px 15px;border-bottom:1px solid #eef3f1;display:flex;align-items:center;gap:8px;flex:0 0 auto}
.pc-comm-unread{background:#e5484d;color:#fff;font-size:11px;font-weight:700;border-radius:10px;padding:1px 7px}
.pc-comm-b{font-size:9px;color:#8aa39b;font-weight:400;margin-left:2px;vertical-align:super}
.pc-comm-tools{display:flex;gap:6px;padding:9px 12px;border-bottom:1px solid #f0f4f3;flex:0 0 auto}
.pc-comm-tools input{flex:1;min-width:0;margin:0;padding:6px 9px;font-size:13px}
.pc-comm-tools .btn{flex-shrink:0}
.pc-sec{font-size:12px;color:#7a8a85;font-weight:700;padding:10px 14px 4px;flex:0 0 auto;background:#fbfdfc;border-top:1px solid #eef4f1}
#pc-convs{flex:1 1 0;min-height:60px;overflow:auto}
.pc-conv{display:flex;align-items:center;gap:9px;padding:8px 12px;cursor:pointer;border-bottom:1px solid #f4f8f6}
.pc-conv:hover{background:#eef6f2}
.pc-conv.unread{background:#fff5f4}
.pc-conv-m{flex:1;min-width:0}
.pc-conv-m b{font-size:13.5px;display:block}
.pc-conv-m span{font-size:12px;color:#7a8a85;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-cdot{width:8px;height:8px;border-radius:50%;background:#e5484d;flex-shrink:0}
.pc-cnum{min-width:18px;height:18px;padding:0 5px;border-radius:10px;background:#e5484d;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
#pc-depts{flex:1 1 0;min-height:60px;overflow:auto;border-top:1px solid #eef4f1}
.pc-dept{border-bottom:1px solid #f4f8f6}
.pc-dept-h{padding:8px 14px;font-weight:700;font-size:13px;cursor:pointer;color:#256a58;display:flex;align-items:center;gap:6px;background:#fafcfb}
.pc-dept-h em{font-style:normal;color:#9aa8a3;font-weight:600}
.pc-dept-h .pc-caret{display:inline-block;transition:.15s}
.pc-dept.collapsed .pc-dept-body{display:none}
.pc-dept.collapsed .pc-caret{transform:rotate(-90deg)}
.pc-p{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 26px;cursor:pointer;font-size:13.5px}
.pc-p:hover{background:#eef6f2}
.pc-p-name{flex:1}
.pc-p-dot{width:7px;height:7px;border-radius:50%;background:#e5484d}
.pc-p.blink .pc-p-name,.pc-conv.blink .pc-conv-m b{animation:pcblink 1.05s ease-in-out infinite}
@keyframes pcblink{0%,100%{color:#e5484d}50%{color:#ff9a9a}}
.pc-chat{display:flex;flex-direction:column;height:calc(100vh - 130px);background:#fff;border:1px solid #e6eeeb;border-radius:14px;overflow:hidden}
.pc-chat-h{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid #eef3f1}
.pc-chat-title{display:flex;flex-direction:column;line-height:1.3}
.pc-chat-title b{font-size:15px}
.pc-chat-msgs{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:12px;background:#f4f6f5}
.pc-chat-input{display:flex;gap:8px;padding:10px 12px;border-top:1px solid #eef3f1;background:#fff}
.pc-chat-input #pc-text{flex:1;margin:0}
/* ===== 聊天工作台（沟通独立宽版） ===== */
.msg-work{max-width:1340px;margin:0 auto;padding:14px 16px;height:calc(100vh - 58px);display:flex;flex-direction:column}
.mw-top{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fff;border:1px solid #e6eeeb;border-radius:14px;flex:0 0 auto}
.mw-title{font-weight:800;font-size:16px}
.mw-top input{width:280px;margin:0}
.mw-groups{display:flex;align-items:center;gap:8px;overflow-x:auto;padding:10px 2px 0;flex:0 0 auto}
.mw-glabel{font-size:12px;font-weight:700;color:#7a8a85;flex:0 0 auto}
.mw-gchip{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;background:#fff;border:1px solid #e0ece6;border-radius:999px;font-size:13px;font-weight:600;color:#27423a;cursor:pointer;white-space:nowrap;flex:0 0 auto}
.mw-gchip:hover{border-color:var(--green,#187E66)}
.mw-gchip.on{border-color:var(--green,#187E66);color:var(--green,#187E66);box-shadow:0 0 0 1px var(--green,#187E66) inset}
.mw-gchip i{font-style:normal;background:#e5484d;color:#fff;font-size:10.5px;font-weight:700;border-radius:9px;padding:0 5px}
.mw-gchip.add{color:#7a8a85;border-style:dashed;font-weight:400}
.mw-body{flex:1;display:grid;grid-template-columns:330px 1fr;gap:14px;margin-top:12px;min-height:0}
.mw-list{background:#fff;border:1px solid #e6eeeb;border-radius:14px;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.mw-pane{flex:1;overflow:auto;min-height:0;padding:4px 0}
.mw-chat{min-height:0;display:flex}
.mw-chat .pc-chat{height:100%;flex:1}
.pc-chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#f4f6f5;text-align:center;padding:20px}
.pc-chat-empty b{font-size:15px;color:#33463f}
.mw-comp{flex:0 0 auto;background:#fff}
.mw-grip{height:8px;cursor:ns-resize;display:flex;align-items:center;justify-content:center;border-top:1px solid #eef3f1;touch-action:none}
.mw-grip::after{content:'';width:46px;height:3px;border-radius:2px;background:#d5e2dc}
.mw-grip:hover::after{background:#b9cfc6}
#pc-text{resize:none;min-height:34px;max-height:300px;font-family:inherit;line-height:1.5;overflow-y:auto}
.mw-tabs{display:flex;gap:2px;padding:6px 8px 0;border-bottom:1px solid #eef3f1;flex:0 0 auto}
.mw-tab{border:0;background:none;padding:7px 14px;font-size:13.5px;font-weight:700;color:#7a8a85;cursor:pointer;border-bottom:2px solid transparent;border-radius:6px 6px 0 0}
.mw-tab.on{color:var(--green,#187E66);border-bottom-color:var(--green,#187E66)}
.mw-tab em{font-style:normal;background:#e5484d;color:#fff;border-radius:9px;font-size:10.5px;padding:0 5px;margin-left:5px}
.comm-pane{flex:1;overflow:auto;min-height:0;padding:2px 0}
.pc-conv.on{background:#eaf4ef;box-shadow:inset 3px 0 0 var(--green,#187E66)}
.msg-file{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:600;color:#187E66;background:#fff;border:1px solid #d9e8e1;border-radius:10px;padding:7px 11px;margin:2px 0;text-decoration:none;max-width:min(420px,100%)}
.msg-file:hover{background:#f2f8f5}
@media (max-width:860px){
.portal2{grid-template-columns:1fr;padding:12px}
.pc-left{position:static;height:min(46vh,440px)}
.pc-chat{height:70vh}
.msg-work{height:auto;padding:10px}
.mw-body{grid-template-columns:1fr}
.mw-list{max-height:44vh}
.mw-top input{width:150px}
}
/* ===== 产品发布（日历 + 甘特 + 三段面板） ===== */
.pl-views{display:flex;align-items:center;gap:8px;margin:6px 0 12px;flex-wrap:wrap}
.pl-views .btn.active,.pl-views .btn:not(.ghost){background:var(--green,#187E66);color:#fff}
.pl-legend{margin-left:auto;display:inline-flex;gap:10px;align-items:center;flex-wrap:wrap}
.pl-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:middle}
.pl-sec-h{font-size:13px;font-weight:700;color:#1d2b26;margin:16px 2px 8px}
.pl-title-link{color:inherit;text-decoration:none;cursor:pointer}
.pl-title-link:hover{color:var(--green,#187E66);text-decoration:underline}
.pl-mini{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:12.5px}
.pl-mini-k{color:#7a8a85}.pl-mini-v{font-weight:600;color:#1c3f36}
/* 月历 */
.cal-wrap{background:#fff;border:1px solid #e6eeeb;border-radius:12px;overflow:hidden}
.cal-bar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef3f1}
.cal-bar b{font-size:15px;min-width:96px;text-align:center}
.cal-bar .spacer{flex:1}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.cal-wd{padding:6px;text-align:center;font-size:12px;color:#7a8a85;background:#fafcfb;border-bottom:1px solid #eef3f1;font-weight:600}
.cal-cell{min-height:92px;border-right:1px solid #f1f5f3;border-bottom:1px solid #f1f5f3;padding:4px 5px;position:relative;overflow:hidden}
.cal-cell:nth-child(7n+7){border-right:0}
.cal-cell.empty-cell{background:#fbfdfc}
.cal-cell.today{background:#eaf6f2;box-shadow:inset 0 0 0 2px var(--green,#187E66)}
.cal-cell[data-day]{cursor:pointer}
.cal-dnum{font-size:12px;font-weight:700;color:#3a4a45}
.cal-cell.today .cal-dnum{color:var(--green)}
.cal-item{display:block;font-size:10.5px;color:#fff;border-radius:4px;padding:1px 5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cal-mk{display:block;font-size:10.5px;margin-top:2px;font-weight:700}
  .cal-segrow{display:flex;gap:1px;margin:2px 0 0;height:5px}
  .cal-seg{flex:1;border-radius:2px;min-width:0}
  .pl-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 14px}
  .pl-tab{border:1px solid #cfe0db;background:#fff;color:#1c3f36;border-radius:20px;padding:5px 14px;font-size:13px;font-weight:600;cursor:pointer}
  .pl-tab:hover{background:#f0f7f4}
  .pl-tab-on{background:var(--green,#187E66);border-color:var(--green,#187E66);color:#fff}
  .pl-det{border-top:1px dashed #d7e6e0;padding-top:6px}
.mk-tgt{color:#187E66}.mk-due{color:#e69138}.mk-due[data-over]{color:#e5484d}.mk-ch{color:#5b6b66}
.cal-more{font-size:10.5px;color:#7a8a85}
/* 甘特 */
.gt-wrap{background:#fff;border:1px solid #e6eeeb;border-radius:12px;padding:14px 14px 18px;position:relative;overflow-x:auto}
.gt-scale{position:relative;height:16px;margin-left:150px}
.gt-tick{position:absolute;transform:translateX(-50%);font-size:10.5px;color:#9aa8a3;white-space:nowrap}
.gt-today{position:absolute;top:22px;bottom:8px;border-left:2px dashed #e5484d;z-index:3;margin-left:0}
.gt-today span{position:absolute;top:-2px;left:3px;font-size:10px;color:#e5484d}
.gt-rows{position:relative}
.gt-row{display:flex;align-items:center;height:34px;border-bottom:1px solid #f4f8f6}
.gt-label{width:150px;flex-shrink:0;font-size:12px;color:#256a58;font-weight:600;padding-right:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gt-track{position:relative;flex:1;height:100%}
.gt-bar{position:absolute;top:8px;height:18px;border-radius:5px;color:#fff;font-size:11px;line-height:18px;padding:0 6px;white-space:nowrap;overflow:hidden;max-width:98%}
.gt-bar>i{position:absolute;left:0;top:0;bottom:0;background:rgba(255,255,255,.45);border-radius:5px}
.gt-dot{position:absolute;top:50%;transform:translate(-50%,-50%);color:#e69138;font-weight:700;font-size:12px;line-height:1;background:transparent;z-index:2}
.gt-mdot{position:absolute;top:50%;transform:translate(-50%,-50%);width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 2px #fff;z-index:2}
.gt-tag{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:600}
/* 面板 */
.pl-panels{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.pl-panels .card:nth-child(1){grid-column:1/2}
.pl-panels .card:nth-child(2){grid-column:2/3}
.pl-panels .card:nth-child(3){grid-column:1/3}
.pl-panel .title{font-size:15px}
.pl-inrow{display:flex;align-items:center;gap:8px;margin:8px 0}
.pl-inrow input{margin:0}
.pl-att{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pl-att-name{font-weight:600}
.pl-daygroup{margin-top:8px;border-top:1px dashed #eef3f1;padding-top:6px}
.pl-dayg-h{font-size:12px;font-weight:700;color:#1c3f36;margin-bottom:4px}
.pl-crow{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;flex-wrap:wrap}
.pl-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.pl-c-title{font-weight:600}
.pl-c-acts{margin-left:auto;display:inline-flex;gap:5px}
@media (max-width:860px){.cal-cell{min-height:56px;padding:2px}.cal-item{font-size:9px}.pl-panels{grid-template-columns:1fr}.pl-panels .card,.pl-panels .card:nth-child(3){grid-column:1/2}.gt-label{width:96px}.gt-scale{margin-left:96px}}

/* ===== 沟通折叠栏 + 贴吧（左栏两半） ===== */
.pc-left{display:flex;flex-direction:column;overflow:hidden}
.comm-sec{flex:0 0 auto;display:flex;flex-direction:column;min-height:0;border-bottom:1px solid #eef3f1;background:#fff}
.comm-sec:not(.collapsed){flex:1 1 0}
.comm-sec .pc-comm-h{cursor:pointer;user-select:none;position:relative}
.comm-sec .pc-comm-h::after{content:'▸';margin-left:6px;color:#9aa8a3;font-size:12px;font-weight:700;transition:transform .15s}
.comm-sec:not(.collapsed) .pc-comm-h::after{transform:rotate(90deg)}
#portalComm{min-height:0}
.comm-sec.collapsed #portalComm{flex:0 0 auto}
.comm-sec.collapsed #portalComm > :not(.pc-comm-h){display:none}
.ell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-sec{flex:0 0 auto;min-height:0;display:flex;flex-direction:column;background:#fff}
.tb-sec:not(.collapsed){flex:1 1 0}
.tb-sec-h{cursor:pointer;user-select:none;display:flex;align-items:center;gap:8px;padding:12px 15px;font-weight:800;font-size:15px;border-bottom:1px solid #eef3f1;flex:0 0 auto}
.tb-sec-h .tb-sec-t{display:flex;align-items:center}
.tb-sec-h .tb-sec-t::after{content:'▸';margin-left:6px;color:#9aa8a3;font-size:12px;font-weight:700;display:inline-block;transition:transform .15s}
.tb-sec:not(.collapsed) .tb-sec-h .tb-sec-t::after{transform:rotate(90deg)}
.tb-sec.collapsed .tb-sec-h{border-bottom:none}
.tb-sec.collapsed #tiebaMount{display:none}
.tb-sec-h .btn{margin-left:auto}
.tb-new{background:#e5484d;color:#fff;font-size:11px;font-weight:700;border-radius:10px;padding:1px 7px}
#tiebaMount{flex:1 1 0;min-height:0;overflow:auto}
.tb-boards{padding:2px 0}
.tb-board{display:flex;align-items:center;gap:11px;padding:11px 14px;cursor:pointer;border-bottom:1px solid #f4f8f6}
.tb-board:hover{background:#f2f8f5}
.tb-emoji{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;color:#fff}
.tb-board-m{flex:1;min-width:0}
.tb-board-m b{font-size:14px;display:block}
.tb-board-cnt{color:#7a8a85;font-size:12px;display:flex;align-items:center;gap:5px;flex-shrink:0}
.tb-dot{width:8px;height:8px;border-radius:50%;background:#e5484d;display:inline-block;animation:pcblink 1s ease-in-out infinite}
/* 板块内 / 帖子页 */
.tb-page{display:flex;flex-direction:column;height:calc(100vh - 130px);background:#fff;border:1px solid #e6eeeb;border-radius:14px;overflow:hidden}
.tb-phead{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid #eef3f1;flex:0 0 auto}
.tb-phead-t{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.35}
.tb-phead-t b{font-size:15.5px}
.tb-loading{padding:22px;text-align:center;color:#7a8a85}
.tb-pbody{flex:1 1 0;min-height:0;overflow:auto;padding:2px 0}
.tb-post{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid #f2f6f4;cursor:pointer}
.tb-post:hover{background:#f4faf6}
.tb-post.pinned{background:#fbfbf2}
.tb-post-main{flex:1;min-width:0}
.tb-post-t{font-size:14.5px;font-weight:600;color:#20302b}
.tb-pin{display:inline-block;font-size:10.5px;color:#b26a00;background:#fff2d6;border-radius:6px;padding:0 6px;margin-right:6px;vertical-align:middle}
.tb-post-meta{display:flex;gap:12px;color:#8a9a94;font-size:12px;margin-top:4px;flex-wrap:wrap;align-items:center}
.tb-post-meta span{white-space:nowrap}
.tb-post .muted.sm{margin-top:2px}
.tb-detail .tb-pbody{padding:0}
.tb-topic{padding:16px 18px;border-bottom:1px solid #eef3f1}
.tb-topic h2{font-size:19px;margin:0 0 8px;line-height:1.4}
.tb-topic-body{font-size:14.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word;color:#25312c;margin-top:6px}
.tb-topic .tb-img{max-width:min(560px,100%);max-height:60vh;margin-top:10px}
.tb-rep{display:flex;gap:9px;padding:12px 16px;border-bottom:1px solid #f5f8f6}
.tb-rep-b{flex:1;min-width:0}
.tb-rep-h{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;margin-bottom:3px}
.tb-rep-txt{font-size:13.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word;color:#2a352f}
.tb-rep .tb-img{max-width:220px;max-height:220px;margin-top:5px}
.tb-rep-del{margin-left:6px}
.tb-replybar{flex:0 0 auto;display:flex;gap:9px;padding:10px 14px;border-top:1px solid #eef3f1;background:#fff;align-items:flex-start}
.tb-reply-in{flex:1;min-width:0}
.tb-reply-in textarea{width:100%;margin:0;font-size:13.5px;resize:vertical}
.tb-compose-tools{display:flex;align-items:center;gap:8px;margin-top:6px}
.tb-compose-tools .btn{flex-shrink:0}
/* 板块管理 */
.tb-mrow{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f2f6f4}
.tb-mrow .btn{flex-shrink:0}
/* ===== 左栏四段手风琴（公告/沟通/贴吧/任务）：同时只展开一个，展开占满整栏 ===== */
.psec{flex:0 0 auto;min-height:0;display:flex;flex-direction:column;background:#fff;border-bottom:1px solid #eef3f1}
.psec.open{flex:1 1 0}
.sec-h{display:flex;align-items:center;gap:8px;padding:13px 14px;flex:0 0 auto;cursor:pointer;user-select:none;border-bottom:1px solid #eef3f1}
.psec:not(.open) .sec-h{border-bottom:none}
.sec-ico{width:28px;height:28px;border-radius:9px;background:#f0f6f3;display:flex;align-items:center;justify-content:center;font-size:16px;flex:0 0 auto}
.sec-tt{font-weight:800;font-size:15px;color:#20302b;flex:0 0 auto;letter-spacing:.5px}
.sec-badge{background:#e5484d;color:#fff;font-size:11px;font-weight:700;border-radius:10px;padding:1px 7px;flex:0 0 auto}
.sec-fill{flex:1 1 auto;min-width:6px}
.sec-act{flex:0 0 auto}
.sec-caret{flex:0 0 auto;width:16px;text-align:center;color:#9aa8a3;font-size:13px;font-weight:700}
.sec-caret::before{content:'▸'}
.psec.open .sec-caret::before{content:'▾'}
.sec-body{display:none;flex:1 1 auto;min-height:0;overflow:auto;flex-direction:column}
.psec.open .sec-body{display:flex}
/* 公告列表 + 详情 */
.ann-list{padding:2px 0}
.ann-row{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid #f4f8f6}
.ann-row:hover{background:#f2f8f5}
.ann-row.unseen .ann-t{font-weight:800}
.ann-ic{width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.ann-m{flex:1;min-width:0;display:flex;flex-direction:column}
.ann-t{font-size:14px;color:#20302b}
.ann-dot{width:8px;height:8px;border-radius:50%;background:#e5484d;display:inline-block;flex-shrink:0;animation:pcblink 1s ease-in-out infinite}
.ann-page{display:flex;flex-direction:column;height:calc(100vh - 130px);background:#fff;border:1px solid #e6eeeb;border-radius:14px;overflow:hidden}
.ann-body{font-size:15px;line-height:1.8;color:#25312c;padding:16px 18px 4px}
.ann-img img{max-width:min(560px,100%);border-radius:10px;margin:8px 14px}
.ann-pick{display:flex;align-items:center;gap:8px;margin:4px 0}
/* 通用附件 */
.att-list{display:flex;flex-wrap:wrap;gap:6px;margin:8px 14px}
.att-file{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:#187E66;background:#f2f8f5;border:1px solid #e0ece6;border-radius:8px;padding:3px 8px;text-decoration:none}
.att-file:hover{background:#e7f3ee}
.att-chip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;background:#f2f8f5;border:1px solid #e0ece6;border-radius:8px;padding:3px 8px}
.att-chip button{border:0;background:none;color:#b42318;cursor:pointer;font-size:13px;line-height:1}
/* 任务列表 */
.tk-tabs{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid #eef3f1;flex:0 0 auto;flex-wrap:wrap}
.tk-tab{border:0;background:none;font-size:13px;font-weight:700;color:#7a8a85;padding:5px 10px;border-radius:8px;cursor:pointer;white-space:nowrap}
.tk-tab.on{background:#eaf4ef;color:#187E66}
.tk-tab em{font-style:normal;background:#e5484d;color:#fff;border-radius:10px;padding:0 6px;margin-left:3px;font-size:11px}
.tk-tabs .tk-tail{margin-left:auto;display:flex;gap:6px;align-items:center;flex-shrink:0;white-space:nowrap}
.tk-list{padding:2px 0}
.tk-row{display:flex;align-items:center;gap:10px;padding:11px 14px;cursor:pointer;border-bottom:1px solid #f4f8f6}
.tk-row:hover{background:#f2f8f5}
.tk-row.unseen .tk-m b{font-weight:800}
.tk-m{flex:1;min-width:0;display:flex;flex-direction:column}
.tk-r{display:flex;align-items:center;gap:6px;flex-shrink:0}
.tk-pill{font-size:11px;font-weight:700;border-radius:7px;padding:1px 7px}
.tk-pill.st-pending{background:#fff2d6;color:#b26a00}
.tk-pill.st-accepted{background:#d6f0e0;color:#187E66}
.tk-pill.st-rejected{background:#fdecec;color:#b42318}
.tk-due{font-size:11.5px;color:#7a8a85}
.tk-soon{color:#b26a00;font-weight:700}
.tk-over{color:#b42318;font-weight:700}
/* 任务详情 */
.tk-page{display:flex;flex-direction:column;height:calc(100vh - 130px);background:#fff;border:1px solid #e6eeeb;border-radius:14px;overflow:hidden}
.tk-descr{font-size:14.5px;line-height:1.75;color:#25312c;padding:14px 18px 4px}
.tk-ms{padding:2px 14px}
.tk-msrow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f4f8f6}
.tk-msno{width:22px;height:22px;border-radius:50%;background:#eaf4ef;color:#187E66;font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tk-msm{flex:1;min-width:0}
.tk-rcv{padding:2px 14px}
.tk-rcvrow{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid #f4f8f6}
.tk-rcvm{flex:1;min-width:0}
.tk-fbs{padding:2px 14px}
.tk-fb{display:flex;gap:9px;padding:10px 0;border-bottom:1px solid #f5f8f6}
.tk-fb-b{flex:1;min-width:0}
.tk-fb-h{display:flex;align-items:center;gap:6px;font-size:13px;margin-bottom:2px}
.tk-fb-txt{font-size:13.5px;line-height:1.6;white-space:pre-wrap;color:#2a352f}
.tk-act{padding:14px 18px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-top:1px solid #eef3f1;margin-top:6px}
.tk-fb-form{display:block}
.rcv-box{max-height:200px;overflow:auto;border:1px solid #cfe0db;border-radius:8px;padding:4px 12px}
.rcv-box label{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid #f0f4f3;cursor:pointer;font-weight:400}
.rcv-box input{width:auto}
.ms-item{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.ms-no{width:20px;height:20px;border-radius:50%;background:#eaf4ef;color:#187E66;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ms-title{flex:1;min-width:0}
@media (max-width:860px){
.pc-left{height:auto;overflow:visible}
.comm-sec:not(.collapsed){max-height:60vh}
.tb-sec:not(.collapsed){max-height:70vh;overflow:auto}
.pc-left .psec.open{max-height:78vh}
.tb-page,.tk-page,.ann-page{height:auto;min-height:70vh}
}
/* ===== 首页文化轮播 + 模块分组 ===== */
.bn-box{position:relative;width:100%;aspect-ratio:4/1;border-radius:16px;overflow:hidden;background:#0e2a22;border:1px solid var(--line);margin-bottom:18px}
.bn-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .6s ease}
.bn-slide.on{opacity:1}
.bn-dots{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:flex;gap:7px}
.bn-dot{width:9px;height:9px;border-radius:50%;border:0;background:rgba(255,255,255,.45);cursor:pointer;padding:0;transition:.15s}
.bn-dot.on{background:#fff;transform:scale(1.25)}
.bn-empty{aspect-ratio:4/1;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 18px;border:1px dashed #c4d4cd;border-radius:16px;background:#f6faf8;color:#5c6f68;font-size:13px;margin-bottom:18px}
.mgroup{margin-top:26px}
.mg-title{font-size:14px;font-weight:800;color:#33463f;letter-spacing:.5px;margin:0 0 2px;padding:6px 2px;border-left:4px solid var(--green,#187E66);padding-left:9px}
.mg-sub{font-size:12px;font-weight:400;color:#9aa8a3;margin-left:6px;letter-spacing:0}
.mgroup-soon .mg-title{border-left-color:#c9d6d0;color:#8a9a94}
.mgroup-soon .portal-card.soon{opacity:.82}
.portal-card.soon{cursor:pointer;background:#fbfdfc;border-style:dashed}
.portal-card.soon .pc-ico{filter:grayscale(.55);opacity:.75}
.portal-card.soon .pc-title,.portal-card.soon .pc-desc{opacity:.62}
.pc-soon{position:absolute;top:14px;right:14px;font-size:11px;font-weight:700;color:#8a9a94;background:#eef3f1;border-radius:8px;padding:2px 8px}
.portal-grid.feat{margin-top:16px}
/* 轮播管理页 */
.bn-admin{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.bn-item{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.bn-item img{width:100%;aspect-ratio:4/1;object-fit:cover;display:block}
.bn-tools{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid #eef3f1}
.bn-tools .muted{margin-right:auto}
@media(max-width:760px){
.bn-admin{grid-template-columns:1fr}
}
@media(max-width:600px){
.portal-grid{grid-template-columns:1fr}
.bn-box,.bn-empty{aspect-ratio:16/7}
.mg-title{font-size:13px}
}

/* ================= V139 旅程V2 / 入职信息 / 员工档案 ================= */
.lc-stats.x6{grid-template-columns:repeat(3,1fr)}
.lc-stat.ok b{color:#8ef0c0}.lc-stat.warn b{color:#ffd28a}
.lc-jstrip{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#f2faf6,#e8f5ef);border:1px solid #d7ebe1;border-radius:14px;padding:12px 16px;margin:0 0 12px;cursor:pointer;transition:border-color .15s}
.lc-jstrip:hover{border-color:#187E66}
.lc-jic{font-size:26px}
.lc-jm{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.lc-jm b{font-size:14px;color:#0f5a48}
.lc-jm span{font-size:12px;color:#54706a}
.lc-jbar{margin-top:6px}
.lc-jgo{font-size:13px;font-weight:700;color:#187E66;white-space:nowrap}
.lc-jgo.strong{color:#c2410c}
.lc-quick .q.hot{border-color:#f5c26b;background:linear-gradient(135deg,#fffdf6,#fff6e4)}
.jnx-hero{display:flex;align-items:center;gap:20px;background:linear-gradient(135deg,#0b3a2c,#187E66 88%);border-radius:18px;padding:22px 26px;color:#fff;margin-bottom:18px;position:relative;overflow:hidden}
.jnx-hero::after{content:'';position:absolute;right:-60px;top:-70px;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.06)}
.jnx-ring{width:88px;height:88px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}
.jnx-ring i{width:64px;height:64px;border-radius:50%;background:#0c3a2c;display:grid;place-items:center;font-style:normal;font-weight:800;font-size:17px;color:#8ef0c0}
.jnx-hero-m{min-width:0;flex:1}
.jnx-hero-m h1{margin:0 0 4px;font-size:21px;letter-spacing:.5px}
.jnx-sub{font-size:13px;opacity:.88}
.jnx-sub b{color:#8ef0c0;font-size:15px}
.jnx-dots{display:flex;gap:7px;margin-top:10px}
.jnx-dots i{width:11px;height:11px;border-radius:50%;background:rgba(255,255,255,.22)}
.jnx-dots i.ok{background:#7fe0b8}
.jnx-dots i.cur{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.25)}
.jnx-hero-cta{background:#fff;color:#0f5a48;font-weight:800;border-radius:10px;padding:10px 16px;text-decoration:none;white-space:nowrap;z-index:1}
.jnx-step{display:flex;gap:14px;margin-bottom:14px}
.jnx-rail{display:flex;flex-direction:column;align-items:center;width:40px;flex-shrink:0}
.jnx-dot{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-size:16px;font-weight:800;background:#eef3f1;color:#8a9a94;border:2px solid #dfe8e4}
.jnx-step.done .jnx-dot{background:linear-gradient(135deg,#187E66,#2aa884);color:#fff;border-color:#187E66}
.jnx-step.cur .jnx-dot{background:#fff;color:#187E66;border-color:#187E66;box-shadow:0 0 0 4px #e2f3ec}
.jnx-line{flex:1;width:2px;background:#e2e9e6;margin:6px 0;min-height:18px}
.jnx-step.done .jnx-line{background:#bfe6d6}
.jnx-card{flex:1;min-width:0;background:#fff;border:1px solid #e6eeeb;border-radius:16px;padding:16px 18px}
.jnx-step.cur .jnx-card{border-color:#187E66;box-shadow:0 6px 20px rgba(24,126,102,.10)}
.jnx-step.lock{opacity:.62}
.jnx-step.lock .jnx-card{background:#fafbfa}
.jnx-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.jnx-day{font-size:11px;font-weight:800;letter-spacing:1px;color:#187E66;background:#e6f5ef;border-radius:8px;padding:3px 9px;white-space:nowrap}
.jnx-step.lock .jnx-day{color:#8a9a94;background:#eef3f1}
.jnx-tt{font-size:16px}
.jnx-badge{margin-left:auto;font-size:11px;font-weight:800;border-radius:99px;padding:3px 11px;white-space:nowrap}
.jnx-badge.done{background:#e2f3ec;color:#0f6b52}
.jnx-badge.cur{background:#fff1dd;color:#b25e00}
.jnx-badge.lock{background:#eef3f1;color:#7a8a85}
.jnx-desc{font-size:12.5px;color:#54706a;margin:2px 0 4px}
.jnx-hint{font-size:12px;color:#187E66;background:#f2faf6;border-radius:8px;padding:6px 10px;margin-top:8px}
.jnx-pfrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:4px}
.jnx-pftip{font-size:12.5px;color:#54706a;flex:1;min-width:220px}
.jnx-pfdone{font-size:13px;font-weight:700;color:#0f6b52}
.jnx-pfbtn{white-space:nowrap;text-decoration:none}
.jnx-pf .jnx-dot{background:#eef8f3;color:#187E66;border-color:#bfe6d6}
@media(max-width:720px){.jnx-hero{flex-wrap:wrap;padding:16px}.jnx-hero-m h1{font-size:17px}}
.pf-state{border-radius:12px;padding:11px 14px;font-size:13px;margin-bottom:12px;font-weight:600}
.pf-state.ok{background:#e2f3ec;color:#0f6b52}
.pf-state.warn{background:#fff6e0;color:#9a6700}
.pf-wrap{max-width:920px}
.pf-sec{background:#fff;border:1px solid #e6eeeb;border-radius:16px;padding:16px 18px;margin-bottom:12px}
.pf-title{font-weight:800;font-size:14px;color:#0f5a48;margin-bottom:10px}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:0 16px}
.pf-f label{font-weight:600}
.req{color:#e5484d}
.pf-imgs{display:flex;gap:22px;flex-wrap:wrap}
.pf-img{width:200px}
.pf-img-h{font-weight:700;font-size:13px;margin-bottom:6px}
.pf-img-pv{width:200px;height:128px;border:1.5px dashed #c9d6d1;border-radius:12px;display:grid;place-items:center;background:#f8fbf9;overflow:hidden;margin-bottom:4px}
.pf-img-pv.round{width:128px;height:128px;border-radius:50%}
.pf-img-pv span{font-size:26px;color:#9db4ac}
.pf-img-pv img{width:100%;height:100%;object-fit:cover}
.pf-foot{display:flex;align-items:center;gap:10px;margin:14px 0 10px}
.pf-foot .muted{flex:1}
.pf-lock{font-size:12px;color:#0f6b52;background:#eef8f3;border:1px solid #d7ebe1;border-radius:12px;padding:10px 14px;line-height:1.7}
.apr-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.apr-tools input{min-width:200px;padding:7px 10px}
.apr-mono{font-family:ui-monospace,Consolas,'Courier New',monospace;letter-spacing:.4px}
tr.apr-none td{opacity:.55}
.apr-kvs{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;font-size:13px;background:#f8fbf9;border-radius:10px;padding:10px 14px}
.apr-kvs .k{color:#7a8a85}
.apr-kvs .v{font-weight:600;word-break:break-all}
.apr-imgs{display:flex;gap:16px;flex-wrap:wrap}
.apr-imgs img{max-width:300px;max-height:190px;border-radius:10px;border:1px solid #e0e8e5;cursor:zoom-in}
/* ================= V140 权限三维拆分 ================= */
.pm-note{font-size:12px;color:#54706a;background:#eef6f2;border:1px solid #dcebe4;border-radius:10px;padding:8px 12px;margin:0 0 10px}
.page-head .pm-note{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.18);color:#d7efe4}
.aro-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.aro-card{background:#fff;border:1px solid #e6eeeb;border-radius:16px;padding:16px 18px;border-top:4px solid #187E66}
.aro-card.ld{border-top-color:#b26a00}
.aro-card.st{border-top-color:#3f7fbf}
.aro-h{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.aro-ic{font-size:22px}
.aro-h b{font-size:16px}
.aro-n{margin-left:auto;font-size:12px;font-weight:800;color:#0f5a48;background:#e6f5ef;border-radius:99px;padding:2px 10px}
.aro-d{font-size:12.5px;color:#54706a;line-height:1.7;margin-bottom:8px}
.aro-us{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.aro-u{font-size:12px;background:#f2f6f4;border-radius:8px;padding:3px 9px;cursor:default}
.aro-tbl td:nth-child(n+2){text-align:center}
.fn-tbl th{font-size:11.5px}
.fn-tbl td:nth-child(n+3){text-align:center}
/* ================= V142 晋升通道 ================= */
.cv-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
.cv-lane{background:#fff;border:1px solid var(--line);border-radius:16px;color:var(--ink);overflow:hidden;position:relative;box-shadow:0 4px 16px rgba(16,40,32,.05)}
.cv-lane-hd{display:flex;align-items:center;gap:12px;padding:16px 18px;background:linear-gradient(180deg,#f1f8f4,#f7fbf9);border-bottom:1px solid var(--line)}
.cv-lane.pro .cv-lane-hd{background:linear-gradient(180deg,#eef5fb,#f6fafd)}
.cv-ic{flex:0 0 auto;width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;background:var(--grad-green);color:#fff;box-shadow:0 4px 10px rgba(24,126,102,.25)}
.cv-lane.pro .cv-ic{background:linear-gradient(135deg,#0b3142,#1273a0);box-shadow:0 4px 10px rgba(18,115,160,.25)}
.cv-hd-tx{display:flex;flex-direction:column;line-height:1.35;min-width:0}
.cv-hd-tx b{font-size:16px;font-weight:800;color:#12433a;letter-spacing:.3px}
.cv-lane.pro .cv-hd-tx b{color:#0f4c66}
.cv-hd-tx span{font-size:12px;color:var(--muted)}
.cv-steps{padding:18px 18px 6px}
.cv-step{position:relative;display:flex;gap:14px;padding-bottom:18px}
.cv-step:last-child{padding-bottom:6px}
.cv-step:not(:last-child)::before{content:'';position:absolute;left:15px;top:32px;bottom:2px;width:2px;background:#dbe8e2}
.cv-lane.pro .cv-step:not(:last-child)::before{background:#d6e6f1}
.cv-dot{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:#fff;border:2px solid var(--green);color:var(--green);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;z-index:1}
.cv-lane.pro .cv-dot{border-color:#1673a0;color:#1673a0}
.cv-here .cv-dot{border-color:#bfe0d2;background:#eef6f2}
.cv-here .cv-dot i{width:10px;height:10px;border-radius:50%;background:var(--green);display:block}
.cv-body{flex:1;min-width:0;padding-top:2px}
.cv-cap{font-size:11px;letter-spacing:.6px;color:var(--muted);margin-bottom:3px}
.cv-main{font-size:14.5px;font-weight:700;color:var(--ink);line-height:1.4}
.cv-here .cv-main{color:var(--green-d)}
.cv-sal{margin-top:7px;font-size:13px;color:#1c7a55;font-weight:600}
.cv-sal b{color:#0f5f3e;font-weight:800}
.cv-sal span{color:var(--muted);font-weight:500;font-size:12px}
.cv-sal.cv-todo{color:#b26a00;font-weight:600}
.cv-note{margin-top:6px;font-size:12px;line-height:1.6;color:var(--muted)}
.cv-foot{margin-top:12px;background:var(--grad-green-soft);border:1px solid #cfe3d8;border-radius:var(--r-md);padding:10px 14px;font-size:12.5px;color:#1d4a3d;line-height:1.6}
.pill.cv-m{background:#efe6ff;color:#5b2d8f}
.pill.cv-p{background:#e3f2ff;color:#155a8a}
td.cv-sal{display:table-cell;background:none;color:#b25e00;font-weight:800;padding:0;border-radius:0;font-size:13px;margin:0}
@media(max-width:720px){.cv-lane-hd{padding:14px}.cv-steps{padding:14px 14px 4px}}
/* ================= V143 行政管理台账 ================= */
.adm-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.adm-tab{border:1px solid #dce8e2;background:#fff;border-radius:10px 10px 0 0;padding:8px 14px;font-size:13px;font-weight:700;color:#54706a;cursor:pointer;display:flex;gap:6px;align-items:center}
.adm-tab small{font-weight:400;color:#93a8a0}
.adm-tab.on{background:linear-gradient(135deg,#0f5a48,#187E66);color:#fff;border-color:#0f5a48}
.adm-tab.on small{color:#bfe6d6}
.adm-tab.add{border-style:dashed;color:#187E66}
.adm-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid #e6eeeb;border-radius:0 12px 12px 12px;padding:10px 14px;margin-bottom:10px}
.adm-bar-l{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.adm-name{font-size:16px;color:#0f5a48}
.adm-bar-r{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.adm-bar-r input{padding:6px 10px;width:190px}
.adm-save{font-size:11.5px;min-width:90px;text-align:right}
.adm-save.ok{color:#0f6b52}.adm-save.warn{color:#b25e00}.adm-save.err{color:#c22}
.adm-scroll{overflow:auto;max-height:calc(100vh - 320px);border:1px solid #e2ece7;border-radius:12px;background:#fff}
.adm-tbl{border-collapse:separate;border-spacing:0;min-width:100%}
.adm-tbl th{position:sticky;top:0;z-index:2;background:#f0f7f4;color:#0f5a48;font-size:12px;padding:8px 10px;border-bottom:2px solid #d7e5df;text-align:left;min-width:110px;max-width:300px}
.adm-tbl th .adm-col-del{margin-left:8px;font-style:normal;color:#c88;cursor:pointer;font-size:11px}
.adm-tbl th .adm-col-del:hover{color:#e5484d}
.adm-tbl td{border-bottom:1px solid #f0f4f3;border-right:1px solid #f4f7f5;padding:6px 10px;font-size:12.5px;line-height:1.5;min-width:110px;max-width:300px;white-space:pre-wrap;word-break:break-word;cursor:text;vertical-align:top}
.adm-hrow td{background:#f8fbf9;font-weight:700;color:#285045;cursor:text}
.adm-tbl td:hover{background:#f1faf5}
.adm-idx{position:sticky;left:0;z-index:1;background:#f7faf8!important;color:#93a8a0!important;font-size:11px;min-width:34px;max-width:34px;text-align:center;padding:6px 4px!important}
.adm-tbl th.adm-op,.adm-tbl td.adm-op{min-width:56px;max-width:70px;text-align:center;position:sticky;right:0;background:#fff;z-index:1}
.adm-tbl th.adm-op{background:#f0f7f4}
.adm-edit{width:100%;min-height:26px;font:inherit;padding:3px 6px;border:2px solid #187E66;border-radius:6px;box-shadow:0 0 0 3px rgba(24,126,102,.15)}
@media(max-width:720px){.adm-bar-r{margin-left:0}.adm-bar-r input{width:140px}}
/* ================= V146 我的成绩放大版 ================= */
.rec-hero{display:flex;gap:18px;align-items:stretch;flex-wrap:wrap;margin:4px 0 18px}
.rec-best{flex:0 0 300px;background:linear-gradient(135deg,#0b3a2c,#187E66 92%);border-radius:18px;padding:20px 24px;color:#fff;display:flex;flex-direction:column;justify-content:center;gap:6px;position:relative;overflow:hidden}
.rec-best::after{content:'🏆';position:absolute;right:14px;bottom:6px;font-size:64px;opacity:.14}
.rec-best-k{font-size:12.5px;letter-spacing:2px;opacity:.8}
.rec-best-n{font-size:56px;font-weight:900;line-height:1;letter-spacing:-1px}
.rec-best-n i{font-size:18px;font-weight:700;font-style:normal;opacity:.85;margin-left:4px}
.rec-best-n.g3{color:#ffd25e}.rec-best-n.g2{color:#8ef0c0}.rec-best-n.g1{color:#c9e7ff}.rec-best-n.g0{color:#ffb3ab}
.rec-take{margin-top:8px;font-size:13px;font-weight:700;color:#fff;text-decoration:none;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);border-radius:10px;padding:7px 14px;align-self:flex-start}
.rec-stats{flex:1;min-width:300px;display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:12px}
.rec-stat{background:#fff;border:1px solid #e6eeeb;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:16px 10px}
.rec-stat b{font-size:30px;font-weight:900;color:#20302b;line-height:1}
.rec-stat b.cok{color:#187E66}.rec-stat b.cno{color:#e5484d}
.rec-stat span{font-size:12px;color:#7a8a85}
.rec-list{display:flex;flex-direction:column;gap:12px}
.rec-row{background:#fff;border:1px solid #e6eeeb;border-radius:16px;padding:16px 20px;display:flex;align-items:center;gap:16px;transition:border-color .15s,box-shadow .15s}
.rec-row:hover{border-color:#bcd8cd;box-shadow:0 6px 18px rgba(24,126,102,.08)}
.rec-mark{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:20px;font-weight:900;flex-shrink:0}
.rec-mark.ok{background:#e2f3ec;color:#0f6b52}
.rec-mark.no{background:#fdeaea;color:#c2282d}
.rec-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.rec-t{font-size:16.5px;color:#20302b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rec-bar{max-width:420px;margin-top:6px}
.rec-num{font-size:34px;font-weight:900;line-height:1;white-space:nowrap}
.rec-num span{font-size:13px;font-weight:600;margin-left:2px}
.rec-num.ok{color:#187E66}.rec-num.no{color:#e5484d}
.rec-tag{flex-shrink:0;white-space:nowrap}
@media(max-width:720px){.rec-best{flex-basis:100%}.rec-num{font-size:26px}.rec-tag{display:none}}
/* ================= V147 荣誉喜报 / 朋友圈 / 周报 ================= */
.hp{width:620px;max-width:100%;aspect-ratio:62/88;border-radius:18px;position:relative;overflow:hidden;color:#fff;font-family:'Microsoft YaHei','PingFang SC',sans-serif;padding:26px 26px 18px;display:flex;flex-direction:column;box-shadow:0 12px 34px rgba(160,30,20,.25)}
.hp-cup{background:linear-gradient(160deg,#ff6a2e,#d8160f 58%,#8f0a06)}
.hp-medal{background:linear-gradient(170deg,#e8342b,#b0100a)}
.hp::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(115deg,transparent 0 34px,rgba(255,255,255,.05) 34px 36px);pointer-events:none}
.hp-cup-top{display:flex;align-items:center;gap:14px;position:relative;z-index:1}
.hp-cup-year{font-size:13px;font-weight:800;border:1.5px solid rgba(255,255,255,.7);border-radius:99px;padding:3px 12px;letter-spacing:1px}
.hp-cup-big{font-family:KaiTi,'STKaiti',serif;font-size:56px;color:#ffd25e;text-shadow:0 3px 10px rgba(120,20,10,.5);letter-spacing:8px}
.hp-cup-en{font-size:12px;letter-spacing:3px;opacity:.85;font-weight:700}
.hp-cup-top:after{content:'🏆';margin-left:auto;font-size:46px;filter:drop-shadow(0 4px 8px rgba(120,20,10,.4))}
.hp-m-water{position:absolute;top:26px;left:0;right:0;text-align:center;font-family:KaiTi,serif;font-size:110px;font-weight:900;color:rgba(255,255,255,.12);letter-spacing:20px;pointer-events:none}
.hp-medal{text-align:center;position:relative;z-index:1;margin-bottom:6px}
.hp-medal-ring{font-size:58px;font-style:normal;display:block;filter:drop-shadow(0 6px 10px rgba(120,10,10,.45))}
.hp-medal-t{display:inline-block;background:linear-gradient(135deg,#ffe27a,#e8a020);color:#7a3c00;font-weight:900;font-size:15px;border-radius:99px;padding:4px 16px;letter-spacing:2px;box-shadow:0 4px 12px rgba(120,60,0,.35)}
.hp-card{background:#fffdf8;color:#2b2b2b;border-radius:14px;margin-top:16px;padding:20px 22px 16px;flex:1;display:flex;flex-direction:column;gap:6px;position:relative;z-index:1;min-height:0}
.hp-pill{align-self:flex-start;background:#d8160f;color:#fff;font-size:12px;font-weight:800;border-radius:99px;padding:3px 12px}
.hp-tagline{font-size:12.5px;color:#8a6b52;letter-spacing:2px}
.hp-dept{align-self:flex-start;background:#c2281d;color:#fff;font-size:12.5px;font-weight:800;border-radius:6px;padding:3px 10px;margin-top:2px}
.hp-name{font-size:40px;font-weight:900;color:#1c1c1c;line-height:1.15;margin:4px 0 2px}
.hp-head{font-size:22px;font-weight:900;color:#d8160f;line-height:1.35}
.hp-note{font-size:12.5px;color:#6a5a4a;margin:4px 0 0;line-height:1.6}
.hp-meta{margin-top:auto;font-size:12px;color:#9a8770}
.hp-foot{display:flex;align-items:flex-end;justify-content:space-between;margin-top:12px;position:relative;z-index:1}
.hp-slogan{font-family:KaiTi,serif;font-size:13px;letter-spacing:2px;color:rgba(255,255,255,.92)}
.hp-brand{font-size:11px;font-weight:800;letter-spacing:2px;color:#ffd25e}
.hp-seal{position:absolute;right:34px;bottom:64px;width:86px;height:86px;border:3px solid rgba(226,60,46,.92);border-radius:50%;display:grid;place-items:center;text-align:center;color:#d8160f;background:rgba(255,253,248,.16);transform:rotate(-8deg);z-index:2}
.hp-seal b{display:block;font-size:22px;margin-top:6px}
.hp-seal span{font-size:11px;font-weight:800;letter-spacing:2px;margin-top:-6px}
.hp-s{width:100%;aspect-ratio:62/88;padding:16px 16px 10px;border-radius:12px;box-shadow:none}
.hp-s .hp-cup-big{font-size:30px;letter-spacing:4px}
.hp-s .hp-cup-top:after{font-size:26px}
.hp-s .hp-cup-year{font-size:10px;padding:2px 8px}
.hp-s .hp-cup-en{font-size:9px}
.hp-s .hp-m-water{font-size:58px}
.hp-s .hp-medal-ring{font-size:34px}
.hp-s .hp-card{margin-top:10px;padding:12px 13px 10px;gap:3px;border-radius:10px}
.hp-s .hp-name{font-size:22px}
.hp-s .hp-head{font-size:14px}
.hp-s .hp-tagline,.hp-s .hp-note,.hp-s .hp-meta{display:none}
.hp-s .hp-pill{font-size:10px;padding:2px 9px}
.hp-s .hp-dept{font-size:10px;padding:2px 8px}
.hp-s .hp-foot{margin-top:6px;flex-direction:column;align-items:flex-start;gap:2px}
.hp-s .hp-slogan{font-size:10px}
.hp-s .hp-seal{width:40px;height:40px;border-width:2px;right:14px;bottom:44px}
.hp-s .hp-seal b{font-size:12px;margin-top:2px}
.hp-s .hp-seal span{font-size:7px;margin-top:-2px}
.hp-mount{display:flex;justify-content:center}
.hp-mount .hp{width:min(620px,100%)}
.hp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-top:10px}
.hp-cell{position:relative;cursor:pointer;border-radius:12px;transition:transform .15s,box-shadow .15s}
.hp-cell:hover{transform:translateY(-4px);box-shadow:0 12px 26px rgba(160,30,20,.22)}
.hp-new{position:absolute;top:-6px;right:-6px;background:#e5484d;color:#fff;font-size:11px;font-weight:800;border-radius:99px;padding:2px 9px;box-shadow:0 3px 8px rgba(0,0,0,.2);z-index:3}
.hg-sec{margin-bottom:12px}
.ht-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:8px}
.ht-card{background:#f8fbf9;border:1px solid #e6eeeb;border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;flex-wrap:wrap;align-content:flex-start}
.ht-card>b{font-size:15px;margin-right:6px}
.hg-sec .body .section-title{display:flex;align-items:center;gap:8px}
.hs-row{display:flex;gap:8px;flex-wrap:wrap}
.hs-p{background:#f2f6f4;border-radius:99px;padding:4px 12px;font-size:12.5px;font-weight:600}
.hs-p.t0{background:#fff6df;color:#8a5a00}.hs-p.t1{background:#f0f3f5;color:#5a6b78}.hs-p.t2{background:#f7ece2;color:#8a4a1a}
.cir-mini{display:flex;align-items:center;gap:9px;padding:8px 10px;border-bottom:1px solid #f2f6f4;cursor:pointer}
.cir-mini:hover{background:#f6faf8}
.cir-mini-m{flex:1;min-width:0;display:flex;flex-direction:column}
.cir-mini-m span{font-size:12px;color:#67807a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cir-mini-th{width:46px;height:46px;flex:0 0 auto;border-radius:8px;object-fit:cover;border:1px solid #eef2f0;background:#f2f6f4}
.cir-mini-hon{display:flex;align-items:center;justify-content:center;font-size:22px;background:#fff6e6;border-color:#f6e2b6}
.cir-more{padding:9px 10px;text-align:center;font-size:12.5px;font-weight:700;color:#187E66;cursor:pointer;border-top:1px dashed #dfe8e4}
.cir-compose{background:#fff;border:1px solid #e6eeeb;border-radius:14px;padding:12px 14px;margin-bottom:14px}
.cir-compose textarea{width:100%;resize:vertical;font-family:inherit}
.cir-post{display:flex;gap:10px;background:#fff;border:1px solid #eef3f1;border-radius:14px;padding:13px 15px;margin-bottom:10px}
.cir-body{flex:1;min-width:0}
.cir-h{display:flex;align-items:center;gap:8px}
.cir-h b{color:#285045;font-size:13.5px}
.cir-del{margin-left:auto}
.cir-txt{margin:6px 0;font-size:13.5px;line-height:1.75;white-space:normal;word-break:break-word}
.cir-imgs{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.cir-imgs img{width:120px;height:120px;object-fit:cover;border-radius:10px;cursor:zoom-in;border:1px solid #eee}
.cir-honor{margin:8px 0;max-width:230px}
.cir-acts{display:flex;align-items:center;gap:10px;margin-top:6px}
.cir-like{border:1px solid #eef3f1;background:#fafdfc;border-radius:8px;padding:4px 12px;font-size:12.5px;cursor:pointer;color:#67807a}
.cir-like.on{background:#fdeaea;border-color:#f3b4b6;color:#c2282d;font-weight:700}
.cir-cmts{margin-top:8px;background:#f6faf8;border-radius:8px;padding:8px 10px;font-size:12.5px;line-height:1.8;color:#4a5f58}
.cir-cmts b{color:#285045}
.cir-cmt-in{margin-top:6px}
.cir-cmt-in input{width:100%;padding:6px 10px}
#hpPrintMount{display:none}
@media print{
  body.hp-printing *:visibility:hidden;
  body.hp-printing #hpPrintMount{display:flex;position:fixed;inset:0;align-items:center;justify-content:center;background:#fff}
  body.hp-printing #hpPrintMount .hp{width:148mm;aspect-ratio:62/88;box-shadow:none;border-radius:14px}
}
.rp-2col{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rp-ppl{max-height:230px;overflow:auto;border:1px solid #cfe0db;border-radius:8px;padding:6px 10px;background:#fff}
.rp-ppl input[type=text],.rp-ppl input:not([type]),.rp-ppl input{width:100%;padding:5px 8px;margin-bottom:4px}
.rp-ppl label{display:flex;gap:7px;align-items:center;padding:3px 0;border-bottom:1px solid #f4f7f5;cursor:pointer;font-weight:400;font-size:12.5px}
.rp-grp{font-weight:800;font-size:12px;color:#8a6b52;background:#f4faf8;margin:4px -10px 2px;padding:3px 12px}
.rp-frow{display:flex;gap:8px;margin-bottom:6px}
.rp-frow input{flex:1}
.rp-card{margin-bottom:12px}
.rp-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.rp-head b{font-size:15.5px}
.rp-fld textarea{max-width:760px}
.rp-tabs{display:flex;gap:8px;margin-bottom:12px}
.rp-tab{border:1px solid #dce8e2;background:#fff;border-radius:10px;padding:8px 18px;font-weight:700;font-size:13.5px;color:#54706a;cursor:pointer}
.rp-tab.on{background:linear-gradient(135deg,#0f5a48,#187E66);color:#fff;border-color:#0f5a48}
.rp-hist{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.rp-h{border:1px solid #dce8e2;background:#fff;border-radius:99px;padding:5px 13px;font-size:12.5px;cursor:pointer;color:#54706a}
.rp-h:hover{border-color:#187E66;color:#0f5a48}
.rp-inbox{display:flex;flex-direction:column;gap:10px}
.rp-mail{display:flex;gap:11px;background:#fff;border:1px solid #eef3f1;border-radius:14px;padding:12px 15px;cursor:pointer}
.rp-mail.un{border-color:#f0c9a8;background:#fffdf8}
.rp-mail-m{flex:1;min-width:0}
.rp-unread{background:#e5484d;color:#fff;font-size:10.5px;font-weight:800;border-radius:99px;padding:1px 8px;margin-left:7px}
.rp-body{margin-top:8px;display:flex;flex-direction:column;gap:8px}
.rp-bf{display:flex;flex-direction:column;gap:2px;background:#f8fbf9;border-radius:8px;padding:7px 10px}
.rp-bf .k{font-size:11.5px;color:#8a9a94;font-weight:700}
.rp-bf .v{font-size:13px;color:#28403a;white-space:normal}
.st-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 0;border-bottom:1px solid #f2f6f4}
.st-l{min-width:230px}
.st-r{display:flex;gap:6px;flex-wrap:wrap}
@media(max-width:720px){.rp-2col{grid-template-columns:1fr}}
/* ================= V148 服务关系行排版 ================= */
.sv-p1{display:flex;align-items:center;gap:7px;flex-wrap:nowrap;white-space:nowrap}
.sv-p1 b{font-size:13.5px;white-space:nowrap}
.sv-p1 .pill{white-space:nowrap;flex-shrink:0}
.sv-dept{font-size:12px;color:#7a8a85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;margin-top:1px}
/* ================= V149 案例格固定区域 ================= */
.cc-body{height:126px;overflow:hidden}
@media(max-width:1280px){.casegrid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:1040px){.casegrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.casegrid{grid-template-columns:repeat(2,1fr);max-width:none}}

/* ================= 个人设置 / 存储 / 通讯录 / 审批（套统一设计系统） ================= */
.set-notice{background:var(--grad-green-soft);border:1px solid #cfe3d8;border-radius:var(--r-md);padding:12px 16px;font-size:13.5px;color:#1d4a3d;line-height:1.7;margin:12px 0}
.set-notice.warn{background:#fff6e6;border-color:#f0d9a6;color:#8a5a00}
.set-card{padding:16px 18px;margin-bottom:14px}
.set-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px 16px}
.set-field label{display:block;font-size:12.5px;color:var(--muted);font-weight:600;margin-bottom:5px}
.set-flag{font-size:10.5px;color:#b26a00;background:#fff2df;border-radius:6px;padding:1px 6px;margin-left:4px;font-weight:700}
.set-flag.ok{color:var(--green);background:#e6f4ee}
.set-acts{margin-top:14px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px dashed var(--line);flex-wrap:wrap}
.set-row:first-of-type{border-top:0}
.set-row select{width:auto;min-width:220px}
.set-newfolder{display:flex;gap:8px;margin-bottom:10px}
.set-newfolder input{flex:1}
.st-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px dashed var(--line)}
.st-item:first-of-type{border-top:0}
.st-main{min-width:0;flex:1;display:flex;flex-direction:column}
.st-folder{width:auto;min-width:130px;padding:6px 8px;font-size:13px}
.ct-tree{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.ct-node{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;box-shadow:var(--shadow)}
.ct-dept{font-weight:800;font-size:14px;margin-bottom:10px;color:var(--green-d)}
.ct-people{display:flex;flex-direction:column;gap:6px}
.ct-person{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fbfdfc;cursor:pointer;transition:.15s;text-align:left}
.ct-person:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(24,126,102,.12)}
.ct-pn{font-weight:700;font-size:14px}
.ct-pp{margin-left:auto}
.ct-person .uav{width:30px;height:30px;border-radius:50%;background:var(--grad-green);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:14px}
.prn-card{padding:4px 2px}
.prn-av{width:64px;height:64px;border-radius:50%;background:var(--grad-green);color:#fff;font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 10px}
.prn-h{text-align:center;margin-bottom:12px}
.prn-h b{font-size:18px;display:block}
.prn-kv{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px dashed var(--line);font-size:14px}
.prn-kv span{color:var(--muted)}
.pp-item{padding:10px 0;border-top:1px dashed var(--line)}
.pp-item:first-of-type{border-top:0}
.pp-chips{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px}
@media(max-width:760px){.ct-tree{grid-template-columns:1fr}}
/* 行政管理台账：记录卡片式编辑（替代类 Excel 网格） */
.adm-cards{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.adm-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;box-shadow:var(--shadow)}
.adm-card-h{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px dashed var(--line)}
.adm-card-h b{font-size:14px;color:var(--green-d)}
.adm-card-acts{margin-left:auto;display:flex;gap:6px}
.adm-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 16px}
.adm-f label{display:block;font-size:11.5px;color:var(--muted);font-weight:600;margin-bottom:3px}
.adm-f .adm-in{width:100%}
.adm-title-note{background:var(--grad-green-soft);border-radius:var(--r-md);padding:8px 12px;font-size:12.5px;color:#1d4a3d;margin:8px 0 2px}
/* 行政管理：卡片/表格视图切换 + 表格呈现（复原 Excel 结构）+ 打印 */
.adm-vtog{display:inline-flex;border:1px solid #d7e5df;border-radius:10px;overflow:hidden;margin-right:4px}
.adm-vt{border:none;background:#fff;color:#54706a;font-size:12.5px;font-weight:700;padding:7px 12px;cursor:pointer;white-space:nowrap}
.adm-vt.on{background:linear-gradient(135deg,#0f5a48,#187E66);color:#fff}
.adm-grid-wrap{margin-top:6px}
.adm-grid-title{background:var(--grad-green-soft,#eaf5ef);border:1px solid #d7e5df;border-radius:10px;padding:9px 12px;font-size:13px;font-weight:700;color:#1d4a3d;margin-bottom:8px;text-align:center;line-height:1.6}
.adm-grid{font-size:12px}
.adm-grid td{color:#25443b}
@media print{
  body.adm-printing *{visibility:hidden}
  body.adm-printing .adm-grid-wrap,body.adm-printing .adm-grid-wrap *{visibility:visible}
  body.adm-printing .adm-grid-wrap{position:absolute;left:0;top:0;width:100%}
  body.adm-printing .adm-scroll{overflow:visible !important;max-height:none !important;border:0}
  body.adm-printing .adm-tbl th,body.adm-printing .adm-tbl td{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
/* 喜报图片模板：文字框与编辑器 */
.hp-slot{white-space:pre-wrap}
.hb-box{position:absolute;transform:translate(-50%,-50%);cursor:grab;white-space:pre-wrap;text-align:center;line-height:1.12;padding:2px 6px;user-select:none;color:#1c1c1c;max-width:96%}
.hb-box.sel{outline:2px dashed var(--green);outline-offset:2px;border-radius:6px;cursor:grabbing}
.hb-side .hb-srow{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-bottom:8px}
.hb-side .hb-srow.sel{border-color:var(--green);background:#f3faf7}
.hb-srow-h{display:flex;align-items:center;gap:8px}
.hb-srow-h select{flex:1;padding:5px 8px}
.hb-srow-2{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:8px;align-items:center}
.hb-srow-2 label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.hb-srow-2 input[type=number]{width:56px;padding:4px 6px}
.hb-srow-2 input[type=color]{width:30px;height:26px;padding:0;border:1px solid var(--line)}
/* 我的备忘录：顶栏右侧便签抽屉 */
.memo-drawer{position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(440px,94vw);background:#fff;border-left:1px solid var(--line);box-shadow:-14px 0 44px rgba(16,40,32,.16);transform:translateX(100%);transition:transform .24s ease;z-index:70;display:flex;flex-direction:column;padding:16px 16px 12px;box-sizing:border-box}
.memo-drawer.open{transform:none}
.memo-hd{display:flex;align-items:center;gap:10px}
.memo-hd b{font-size:15px;color:#12433a}
.memo-stamp{font-size:11.5px;color:var(--muted);margin-left:auto}
.memo-hd #memo-close{margin-left:10px}
.memo-sub{font-size:12px;color:var(--muted);margin:4px 0 10px}
.memo-ta{flex:1;resize:none;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.75;font-family:inherit;color:var(--ink);background:#fcfdfc}
.memo-ta:focus{outline:none;border-color:var(--green);background:#fff}

/* ===== AI 助手：顶栏入口 + 多会话抽屉（高级玻璃拟态 · 绿色辉光） ===== */
.ai-drawer{position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(960px,96vw);z-index:1300;display:flex;flex-direction:column;box-sizing:border-box;color:#eaf4f0;overflow:hidden;border-left:1px solid rgba(80,220,180,.22);box-shadow:none;visibility:hidden;background:radial-gradient(120% 90% at 100% 0%,#123a30 0%,#0b1c17 42%,#081310 100%);transform:translateX(100%);transition:transform .34s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,visibility 0s linear .34s}
.ai-drawer.open{transform:none;visibility:visible;box-shadow:-30px 0 90px rgba(4,20,16,.55),-1px 0 0 rgba(80,220,180,.15);transition:transform .34s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,visibility 0s linear 0s}
.ai-scrim{position:fixed;inset:0;z-index:1299;background:rgba(6,16,12,.42);backdrop-filter:blur(2px);animation:aifade .24s ease both}
@keyframes aifade{from{opacity:0}to{opacity:1}}
.ai-amb{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.ai-amb .ai-amb{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;mix-blend-mode:screen}
.ai-amb .a1{width:360px;height:360px;background:#18b487;left:-60px;top:-40px;animation:aifloat 14s ease-in-out infinite}
.ai-amb .a2{width:300px;height:300px;background:#0e6f57;right:-40px;bottom:10%;animation:aifloat 18s ease-in-out infinite reverse}
.ai-amb .a3{width:220px;height:220px;background:#e0a94a;right:22%;top:-60px;opacity:.28;animation:aifloat 22s ease-in-out infinite}
@keyframes aifloat{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(24px,20px) scale(1.12)}}
.ai-dw-hd{position:relative;z-index:2;display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);backdrop-filter:blur(10px)}
.ai-brand{display:flex;align-items:center;gap:12px}
.ai-orb{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#04140f;background:linear-gradient(135deg,#4fe0b6,#12876d);box-shadow:0 0 22px rgba(40,200,150,.55),inset 0 0 0 1px rgba(255,255,255,.25);animation:aipulse 3.2s ease-in-out infinite}
@keyframes aipulse{0%,100%{box-shadow:0 0 18px rgba(40,200,150,.45),inset 0 0 0 1px rgba(255,255,255,.22)}50%{box-shadow:0 0 30px rgba(60,220,170,.75),inset 0 0 0 1px rgba(255,255,255,.35)}}
.ai-brand-t{display:flex;flex-direction:column;gap:2px}
.ai-brand-t b{font-size:16px;font-weight:800;letter-spacing:.3px;background:linear-gradient(90deg,#eafff8,#8ff0cf);-webkit-background-clip:text;background-clip:text;color:transparent}
.ai-status{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#8fb0a6}
.ai-dot{width:7px;height:7px;border-radius:50%;background:#37e39f;box-shadow:0 0 8px #37e39f;animation:aiblink 1.8s ease-in-out infinite}
@keyframes aiblink{0%,100%{opacity:1}50%{opacity:.35}}
.ai-x{margin-left:auto;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:#cfeee3;width:32px;height:32px;border-radius:10px;cursor:pointer;font-size:15px;line-height:1;transition:.2s}
.ai-x:hover{background:rgba(255,120,120,.18);border-color:rgba(255,140,140,.35);color:#fff}
.ai-dw-body{position:relative;z-index:2;flex:1;display:flex;min-height:0}
.ai-dw-list{width:250px;flex:0 0 250px;border-right:1px solid rgba(255,255,255,.07);display:flex;flex-direction:column;background:rgba(255,255,255,.02)}
.ai-new{display:flex;align-items:center;justify-content:center;gap:8px;margin:12px;padding:11px;border:none;border-radius:12px;cursor:pointer;font-weight:700;font-size:13.5px;color:#04140f;background:linear-gradient(135deg,#4fe0b6,#12a07c);box-shadow:0 8px 24px rgba(20,160,120,.4);transition:.2s}
.ai-new:hover{transform:translateY(-1px);box-shadow:0 12px 30px rgba(30,200,150,.55)}
.ai-new svg{width:16px;height:16px}
.ai-threads{flex:1;overflow:auto;padding:0 8px 12px}
.ai-th{position:relative;padding:10px 12px;border-radius:11px;cursor:pointer;margin-bottom:4px;border:1px solid transparent;transition:.18s}
.ai-th:hover{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.08)}
.ai-th.on{background:linear-gradient(135deg,rgba(40,200,150,.16),rgba(20,120,95,.1));border-color:rgba(70,220,175,.3)}
.ai-th.on::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:3px;background:linear-gradient(#4fe0b6,#12876d);box-shadow:0 0 10px rgba(60,220,170,.8)}
.ai-th-t b{font-size:13px;color:#e6f5ef;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-th-p{font-size:11.5px;color:#83a89d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.ai-th-acts{position:absolute;right:8px;top:8px;display:none;gap:3px}
.ai-th:hover .ai-th-acts{display:flex}
.ai-th-acts button{border:none;background:rgba(255,255,255,.08);color:#bfeee0;width:24px;height:24px;border-radius:7px;cursor:pointer;font-size:12px;line-height:1}
.ai-th-acts button:hover{background:rgba(80,220,180,.25)}
.ai-th-empty{padding:18px 10px;text-align:center;font-size:12px;color:#6f948a;line-height:1.7}
.ai-dw-chat{flex:1;display:flex;flex-direction:column;min-width:0}
.ai-msgs{flex:1;overflow:auto;padding:20px 22px;display:flex;flex-direction:column;gap:14px}
.ai-m{display:flex;gap:10px;align-items:flex-end;max-width:88%;animation:aiin .3s ease both}
@keyframes aiin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.ai-user{align-self:flex-end;flex-direction:row-reverse}
.ai-bot{align-self:flex-start}
.ai-av{flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#04140f;background:linear-gradient(135deg,#8ff0cf,#12a07c);box-shadow:0 0 12px rgba(40,200,150,.35)}
.ai-av-bot{background:linear-gradient(135deg,#4fe0b6,#12876d);color:#04140f}
.ai-bub{padding:11px 14px;border-radius:15px;font-size:14px;line-height:1.65;white-space:pre-wrap;word-break:break-word}
.ai-user .ai-bub{background:linear-gradient(135deg,#1aa87f,#0f6d56);color:#eafff8;border-bottom-right-radius:5px;box-shadow:0 6px 18px rgba(15,120,90,.4)}
.ai-bot .ai-bub{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09);color:#eaf4f0;border-bottom-left-radius:5px;backdrop-filter:blur(6px)}
.ai-sys{align-self:center;font-size:12.5px;color:#9fbfb4;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:10px 15px;line-height:1.6;max-width:92%;text-align:center}
.ai-tools{margin-top:8px;font-size:11px;color:#7fe9c4;background:rgba(40,200,150,.12);border:1px solid rgba(60,220,170,.25);border-radius:8px;padding:4px 9px;display:inline-flex;align-items:center;gap:5px}
.ai-tools::before{content:"◆";font-size:9px;opacity:.8}
.ai-dots{display:inline-flex;gap:5px;padding:14px}
.ai-dots i{width:7px;height:7px;border-radius:50%;background:#5fd6b3;animation:aibounce 1.2s infinite}
.ai-dots i:nth-child(2){animation-delay:.18s}.ai-dots i:nth-child(3){animation-delay:.36s}
@keyframes aibounce{0%,80%,100%{transform:translateY(0);opacity:.5}40%{transform:translateY(-6px);opacity:1}}
.ai-hero{margin:auto;text-align:center;max-width:460px;padding:24px;display:flex;flex-direction:column;align-items:center;gap:12px}
.ai-hero-orb{width:74px;height:74px;border-radius:22px;display:flex;align-items:center;justify-content:center;color:#04140f;background:linear-gradient(135deg,#4fe0b6,#12876d);box-shadow:0 0 40px rgba(40,200,150,.6);animation:aipulse 3.2s ease-in-out infinite}
.ai-hero-orb svg{width:34px;height:34px}
.ai-hero h3{margin:4px 0 0;font-size:21px;font-weight:800;background:linear-gradient(90deg,#eafff8,#7ff0cd);-webkit-background-clip:text;background-clip:text;color:transparent}
.ai-hero p{margin:0;font-size:13.5px;line-height:1.7;color:#a9c9bf}
.ai-hero p b{color:#5fe6bb;font-weight:700}
.ai-sug{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;margin-top:6px}
.ai-sug-c{border:1px solid rgba(120,230,190,.22);background:rgba(255,255,255,.04);color:#cdeee1;font-size:12.5px;padding:8px 13px;border-radius:20px;cursor:pointer;transition:.2s}
.ai-sug-c:hover{background:rgba(60,220,170,.14);border-color:rgba(120,230,190,.5);color:#fff;transform:translateY(-1px)}
.ai-hero-tip{font-size:11px;color:#6f948a;margin-top:4px}
.ai-inputrow{display:flex;gap:10px;padding:14px 18px;border-top:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.02);align-items:flex-end;backdrop-filter:blur(8px)}
.ai-input-wrap{flex:1;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:14px;transition:.2s}
.ai-input-wrap:focus-within{border-color:rgba(80,220,180,.5);box-shadow:0 0 0 3px rgba(40,200,150,.15)}
.ai-inputrow textarea{flex:1;width:100%;resize:none;max-height:140px;border:none;background:transparent;color:#eaf4f0;border-radius:14px;padding:11px 13px;font-size:14px;font-family:inherit}
.ai-inputrow textarea::placeholder{color:#6f948a}
.ai-inputrow textarea:focus{outline:none}
.ai-send{flex:0 0 auto;width:46px;height:46px;border:none;border-radius:14px;cursor:pointer;color:#04140f;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#4fe0b6,#12a07c);box-shadow:0 6px 18px rgba(20,160,120,.45);transition:.2s}
.ai-send:hover{transform:translateY(-1px);box-shadow:0 10px 26px rgba(30,200,150,.6)}
.ai-send:disabled{opacity:.45;cursor:default;transform:none;box-shadow:none}
.ai-msgs::-webkit-scrollbar,.ai-threads::-webkit-scrollbar{width:8px}
.ai-msgs::-webkit-scrollbar-thumb,.ai-threads::-webkit-scrollbar-thumb{background:rgba(120,230,190,.25);border-radius:8px}
.ai-msgs::-webkit-scrollbar-thumb:hover,.ai-threads::-webkit-scrollbar-thumb:hover{background:rgba(120,230,190,.4)}
@media(max-width:640px){.ai-dw-list{width:130px;flex-basis:130px}.ai-m{max-width:94%}}

/* ===== 对外官网落地页（未登录首屏） ===== */
.land-back{max-width:1040px;margin:18px auto 0;padding:0 20px}
.land-back a{color:var(--green);font-size:13px;text-decoration:none}
.lp{background:#fff;color:#1f2a26;font-family:inherit}
.lp-wrap{max-width:1120px;margin:0 auto;padding:0 22px}
.lp-nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid #e8efec}
.lp-navin{display:flex;align-items:center;gap:18px;height:64px}
.lp-brand{display:flex;align-items:center;gap:10px;font-size:17px;color:#12433a}
.lp-brand img{width:34px;height:34px;border-radius:8px}
.lp-nav-r{margin-left:auto;display:flex;align-items:center;gap:18px}
.lp-navlink{font-size:13.5px;color:#41584f;cursor:pointer;text-decoration:none}
.lp-navlink:hover{color:#187E66}
.lp-login{background:linear-gradient(135deg,#1d9a76,#0f5a48);color:#fff;border:none;border-radius:10px;padding:9px 18px;font-size:13.5px;font-weight:700;cursor:pointer}
.lp-login:hover{transform:translateY(-1px)}
.lp-hero{background:radial-gradient(120% 90% at 85% 10%,#e8f6f0 0%,#f5faf8 55%,#ffffff 100%);padding:96px 0 88px;position:relative;overflow:hidden}
.lp-hero::before{content:"";position:absolute;left:-10%;right:-10%;bottom:-40px;height:180px;background:radial-gradient(60% 100% at 50% 0%,rgba(24,126,102,.10),transparent 70%)}
.lp-eyebrow{display:inline-block;font-size:13px;letter-spacing:2px;color:#187E66;background:#eaf5f0;border-radius:20px;padding:6px 14px;font-weight:700}
.lp-hero h1{font-size:52px;line-height:1.15;margin:20px 0 14px;color:#12332a;letter-spacing:2px}
.lp-sub{font-size:17px;color:#5c7a70;margin:0 0 30px}
.lp-cta{display:flex;gap:12px}
.lp-btn{background:linear-gradient(135deg,#1d9a76,#0f5a48);color:#fff;border:none;border-radius:12px;padding:13px 26px;font-size:15px;font-weight:700;cursor:pointer}
.lp-btn:hover{transform:translateY(-2px)}
.lp-btn.ghost{background:#fff;color:#187E66;border:1.5px solid #bcd8cc}
.lp-btn.sm{padding:9px 18px;font-size:13px;border-radius:10px}
.lp-stats{background:#0f3d31;color:#eafff6;padding:34px 0}
.lp-statgrid{display:grid;grid-template-columns:repeat(6,1fr);gap:18px}
.lp-stat{text-align:center}
.lp-stat b{display:block;font-size:26px;font-weight:800;color:#7fe9c4}
.lp-stat span{font-size:12px;color:#a9c9bf}
.lp-sec{padding:72px 0}
.lp-alt{background:#f6faf8}
.lp-kicker{font-size:12.5px;font-weight:800;letter-spacing:3px;color:#187E66;margin-bottom:8px}
.lp-sec h2{font-size:30px;margin:0 0 30px;color:#12332a}
.lp-intro{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.lp-intro-b{background:#fff;border:1px solid #e3ede8;border-radius:16px;padding:24px}
.lp-intro-b h3{font-size:16px;color:#0f5a48;margin:0 0 10px}
.lp-intro-b p{font-size:13.5px;line-height:1.85;color:#41584f;margin:0}
.lp-gal{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.lp-fig{margin:0;background:#fff;border:1px solid #e3ede8;border-radius:14px;overflow:hidden}
.lp-fig img{width:100%;height:210px;object-fit:cover;display:block;cursor:zoom-in}
.lp-fig figcaption{padding:10px 14px;font-size:12.5px;color:#5c7a70}
.lp-prods{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.lp-prod{background:#fff;border:1px solid #e3ede8;border-radius:14px;padding:22px 18px;text-align:center}
.lp-pico{font-size:30px;display:block;margin-bottom:10px}
.lp-prod b{display:block;font-size:15px;color:#12332a;margin-bottom:8px}
.lp-prod p{font-size:12.5px;color:#5c7a70;line-height:1.7;margin:0}
.lp-qgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.lp-q{background:#fff;border:1px solid #e3ede8;border-radius:14px;padding:20px;text-align:center}
.lp-q b{display:block;font-size:22px;color:#187E66;margin-bottom:6px}
.lp-q span{font-size:12.5px;color:#5c7a70;line-height:1.6;display:block}
.lp-hon{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.lp-event{background:#fff;border:1px dashed #bcd8cc;border-radius:14px;padding:16px 20px;font-size:13.5px;color:#41584f;display:flex;gap:10px;align-items:center}
.lp-tl{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.lp-tl-i{background:#fff;border:1px solid #e3ede8;border-radius:12px;padding:16px 18px}
.lp-tl-i b{color:#187E66;font-size:18px;display:block;margin-bottom:4px}
.lp-tl-i span{font-size:13px;color:#41584f;line-height:1.6}
.lp-foot{background:#0f3d31;color:#cfe6dc;padding:46px 0 24px}
.lp-fgrid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:24px;padding-bottom:26px;border-bottom:1px solid rgba(255,255,255,.12)}
.lp-foot b{color:#fff;font-size:15px;display:block;margin-bottom:10px}
.lp-foot p{font-size:13px;line-height:2;margin:0}
.lp-foot a{color:#7fe9c4;text-decoration:none}
.lp-copy{text-align:center;font-size:12px;color:#8fb0a6;padding-top:18px}
@media(max-width:900px){.lp-statgrid{grid-template-columns:repeat(3,1fr)}.lp-intro,.lp-gal{grid-template-columns:1fr}.lp-prods{grid-template-columns:repeat(2,1fr)}.lp-qgrid{grid-template-columns:repeat(2,1fr)}.lp-tl{grid-template-columns:1fr 1fr}.lp-fgrid{grid-template-columns:1fr}.lp-hero h1{font-size:36px}.lp-navlink{display:none}}
